Newer
Older
vmk-ui-kit / demo / partials / tabs.html
<section class="demo-section" aria-labelledby="tabs-heading">
  <h2 id="tabs-heading">Tabs</h2>

  <h3>Pill tabs</h3>
  <div class="tabs" data-tabs>
    <div class="tabs-list">
      <button class="tab tab-active" aria-controls="tab-panel-overview" type="button">Overview</button>
      <button class="tab" aria-controls="tab-panel-details" type="button">Details</button>
      <button class="tab" aria-controls="tab-panel-settings" type="button">Settings</button>
    </div>
    <div class="tab-panels">
      <div class="tab-panel tab-panel-active" id="tab-panel-overview">
        <p>Overview content for pill tabs.</p>
      </div>
      <div class="tab-panel" id="tab-panel-details" hidden>
        <p>Details content for pill tabs.</p>
      </div>
      <div class="tab-panel" id="tab-panel-settings" hidden>
        <p>Settings content for pill tabs.</p>
      </div>
    </div>
  </div>

  <h3>Compact tabs</h3>
  <div class="tabs tabs-compact" data-tabs>
    <div class="tabs-list">
      <button class="tab tab-active" aria-controls="tab-panel-c-one" type="button">One</button>
      <button class="tab" aria-controls="tab-panel-c-two" type="button">Two</button>
      <button class="tab" aria-controls="tab-panel-c-three" type="button">Three</button>
    </div>
    <div class="tab-panels">
      <div class="tab-panel tab-panel-active" id="tab-panel-c-one">
        <p>First compact panel.</p>
      </div>
      <div class="tab-panel" id="tab-panel-c-two" hidden>
        <p>Second compact panel.</p>
      </div>
      <div class="tab-panel" id="tab-panel-c-three" hidden>
        <p>Third compact panel.</p>
      </div>
    </div>
  </div>

  <h3>Vertical tabs</h3>
  <div class="tabs tabs-vertical" data-tabs>
    <div class="tabs-list">
      <button class="tab tab-active" aria-controls="tab-panel-v-a" type="button">Account</button>
      <button class="tab" aria-controls="tab-panel-v-b" type="button">Security</button>
      <button class="tab" aria-controls="tab-panel-v-c" type="button">Billing</button>
    </div>
    <div class="tab-panels">
      <div class="tab-panel tab-panel-active" id="tab-panel-v-a">
        <p>Account settings.</p>
      </div>
      <div class="tab-panel" id="tab-panel-v-b" hidden>
        <p>Security settings.</p>
      </div>
      <div class="tab-panel" id="tab-panel-v-c" hidden>
        <p>Billing settings.</p>
      </div>
    </div>
  </div>

  <h3>Vue tabs</h3>
  <div id="vue-tabs-app" class="vue-mount"></div>
  <script type="module">
    import { createApp } from "vue";
    import { GnTabs, GnTab, GnTabPanel } from "/vue/index.js";

    createApp({
      components: { GnTabs, GnTab, GnTabPanel },
      data() {
        return { active: "overview" };
      },
      template: `
        <gn-tabs v-model="active" style="max-width: 480px;">
          <gn-tab name="overview" label="Overview" />
          <gn-tab name="details" label="Details" />
          <gn-tab name="settings" label="Settings" />
          <template #panels>
            <gn-tab-panel name="overview">
              <p>Vue overview content.</p>
            </gn-tab-panel>
            <gn-tab-panel name="details">
              <p>Vue details content.</p>
            </gn-tab-panel>
            <gn-tab-panel name="settings">
              <p>Vue settings content.</p>
            </gn-tab-panel>
          </template>
        </gn-tabs>
      `
    }).mount("#vue-tabs-app");
  </script>

  <h3>Vue router tabs (fallback without router)</h3>
  <div id="vue-router-tabs-app" class="vue-mount"></div>
  <script type="module">
    import { createApp } from "vue";
    import { GnRouterTabs } from "/vue/index.js";

    createApp({
      components: { GnRouterTabs },
      setup() {
        const items = [
          { id: "overview", label: "Overview", to: "/overview" },
          { id: "details", label: "Details", to: "/details" },
          { id: "settings", label: "Settings", to: "/settings", disabled: false }
        ];
        return { items };
      },
      template: `
        <gn-router-tabs :items="items" style="max-width: 480px;">
          <template #overview="{ item, active }">
            <p v-if="active">Router overview panel.</p>
          </template>
          <template #details="{ item, active }">
            <p v-if="active">Router details panel.</p>
          </template>
          <template #settings="{ item, active }">
            <p v-if="active">Router settings panel.</p>
          </template>
        </gn-router-tabs>
      `
    }).mount("#vue-router-tabs-app");
  </script>
</section>