Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ulixee
GitHub Repository: ulixee/secret-agent
Path: blob/main/website/src/components/Section.vue
1030 views
<template>
  <section class="section" :class="sectionClass">
    <div class="section--inner container" :class="sectionClassInner">
      <slot/>
    </div>
    <div v-if="dots" class="section__dots-bg dots-bg" />
    <slot name="outer" />
  </section>
</template>

<script>
  export default {
    props: ['dark', 'dots', 'container', 'framed', 'secondary'],
    computed: {
      sectionClass() {
        let classes = []
        if(this.secondary) classes.push('section--secondary')
        if(this.dark) classes.push('section--dark')
        return classes
      },
      sectionClassInner() {
        let classes = []
        if(this.framed) {
          classes.push('container--framed')
        }
        if(this.container) {
          classes.push('container-' + this.container)
        }
        return classes
      }
    }
  }
</script>

<style lang="scss">
  .section {
    padding: calc(2% + var(--space)) 0;
    position: relative;
    width: 100%;
    flex: 1;

    &--secondary {
      background-color: var(--bg-secondary);
      border-top: 1px solid var(--border-color);
      border-bottom: 1px solid var(--border-color);

      + .section--secondary {
        border-top-color: transparent;
        margin-top: -1px;
      }
    }


    &__dots-bg {
      height: 700px;
      max-width: 1500px;
      max-height: 100%;
      margin: 0 auto;
      position: absolute;
      left:0;
      right:0;
      bottom: 0;
      z-index: 1;
      opacity: 1;
    }


    &--inner {
      position: relative;
      z-index: 2;
    }

    &--dark {
      color: #FFF;
      background: var(--dark-bg);

      p {
        color: currentColor;
      }

      h1, h2, h3, h4, a {
        color: #FFF;
      }
    }
  }
</style>