tabs

Segmented control tabs

Segmented control tabs

Загрузка превью…

src/tabs/c-tabs-9.vue

<!--
  Расхождение с апстримом: `IconPlaceholder` заменена инлайновым `<svg>`
  (lucide-react v0.545.0 "calendar"/"square-check"/"users"/"calendar-clock")
  — см. docs/PORTING.md §5. Активная вкладка зафиксирована через
  `model-value` (React-эталон держит то же значение в `useState`, без
  взаимодействия).
-->
<script setup lang="ts">
import { Card, CardContent } from "@/components/ui/card"
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
</script>

<template>
  <div class="mx-auto flex w-full max-w-xs flex-col items-center gap-6">
    <Tabs model-value="monthly">
      <TabsList class="w-full">
        <TabsTrigger value="daily" class="gap-1.5">
          <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="size-3.5">
            <path d="M8 2v4" />
            <path d="M16 2v4" />
            <rect width="18" height="18" x="3" y="4" rx="2" />
            <path d="M3 10h18" />
          </svg>
          Daily
        </TabsTrigger>
        <TabsTrigger value="weekly" class="gap-1.5">
          <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="size-4">
            <rect width="18" height="18" x="3" y="3" rx="2" />
            <path d="m9 12 2 2 4-4" />
          </svg>
          Weekly
        </TabsTrigger>
        <TabsTrigger value="monthly" class="gap-1.5">
          <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="size-4">
            <path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" />
            <path d="M16 3.128a4 4 0 0 1 0 7.744" />
            <path d="M22 21v-2a4 4 0 0 0-3-3.87" />
            <circle cx="9" cy="7" r="4" />
          </svg>
          Monthly
        </TabsTrigger>
        <TabsTrigger value="yearly" class="gap-1.5">
          <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="size-3.5">
            <path d="M16 14v2.2l1.6 1" />
            <path d="M16 2v4" />
            <path d="M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5" />
            <path d="M3 10h5" />
            <path d="M8 2v4" />
            <circle cx="16" cy="16" r="6" />
          </svg>
          Yearly
        </TabsTrigger>
      </TabsList>
      <TabsContent value="daily">
        <Card>
          <CardContent class="text-center">
            <p class="text-3xl font-bold">1,284</p>
            <p class="text-muted-foreground mt-1 text-sm">Visitors today</p>
          </CardContent>
        </Card>
      </TabsContent>
      <TabsContent value="weekly">
        <Card>
          <CardContent class="text-center">
            <p class="text-3xl font-bold">8,942</p>
            <p class="text-muted-foreground mt-1 text-sm">Visitors this week</p>
          </CardContent>
        </Card>
      </TabsContent>
      <TabsContent value="monthly">
        <Card>
          <CardContent class="text-center">
            <p class="text-3xl font-bold">32,156</p>
            <p class="text-muted-foreground mt-1 text-sm">Visitors this month</p>
          </CardContent>
        </Card>
      </TabsContent>
      <TabsContent value="yearly">
        <Card>
          <CardContent class="text-center">
            <p class="text-3xl font-bold">384,721</p>
            <p class="text-muted-foreground mt-1 text-sm">Visitors this year</p>
          </CardContent>
        </Card>
      </TabsContent>
    </Tabs>
  </div>
</template>

Установка

npx shadcn-vue@latest add https://revueui.rootapi.dev/r/c-tabs-9.json

Зависимости реестра

Источник: порт из ReUI (Keenthemes, MIT)