Merge branch 'dev' into new-calendar

This commit is contained in:
Sadegh Barati 2024-04-04 14:38:50 +03:30
commit 4d43a8fa1b
16 changed files with 4157 additions and 13 deletions

View File

@ -1,5 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { announcementConfig } from '../config/site' import { announcementConfig } from '../config/site'
import { Separator } from '@/lib/registry/default/ui/separator'
import ArrowRightIcon from '~icons/radix-icons/arrow-right' import ArrowRightIcon from '~icons/radix-icons/arrow-right'
</script> </script>

View File

@ -156,7 +156,7 @@ watch([style, codeConfig], async () => {
<Tablet class="h-3.5 w-3.5" /> <Tablet class="h-3.5 w-3.5" />
</ToggleGroupItem> </ToggleGroupItem>
<ToggleGroupItem <ToggleGroupItem
value="25" value="30"
class="h-[22px] w-[22px] rounded-sm p-0" class="h-[22px] w-[22px] rounded-sm p-0"
> >
<Smartphone class="h-3.5 w-3.5" /> <Smartphone class="h-3.5 w-3.5" />
@ -219,7 +219,7 @@ watch([style, codeConfig], async () => {
ref="resizableRef" ref="resizableRef"
class="relative rounded-lg border bg-background transition-all " class="relative rounded-lg border bg-background transition-all "
:default-size="100" :default-size="100"
:min-size="25" :min-size="30"
> >
<div v-if="isLoading" class="flex items-center justify-center h-full"> <div v-if="isLoading" class="flex items-center justify-center h-full">
<Spinner /> <Spinner />

View File

@ -1214,6 +1214,27 @@ export const Index = {
component: () => import("../src/lib/registry/default/block/Dashboard04.vue").then((m) => m.default), component: () => import("../src/lib/registry/default/block/Dashboard04.vue").then((m) => m.default),
files: ["../src/lib/registry/default/block/Dashboard04.vue"], files: ["../src/lib/registry/default/block/Dashboard04.vue"],
}, },
"Dashboard05": {
name: "Dashboard05",
type: "components:block",
registryDependencies: ["badge","button","card","dropdown-menu","input","breadcrumb","sheet","pagination","progress","separator","table","tabs","tooltip","checkbox"],
component: () => import("../src/lib/registry/default/block/Dashboard05.vue").then((m) => m.default),
files: ["../src/lib/registry/default/block/Dashboard05.vue"],
},
"Dashboard06": {
name: "Dashboard06",
type: "components:block",
registryDependencies: ["badge","button","card","dropdown-menu","input","breadcrumb","sheet","table","tabs","tooltip"],
component: () => import("../src/lib/registry/default/block/Dashboard06.vue").then((m) => m.default),
files: ["../src/lib/registry/default/block/Dashboard06.vue"],
},
"Dashboard07": {
name: "Dashboard07",
type: "components:block",
registryDependencies: ["badge","button","card","dropdown-menu","input","textarea","label","toggle-group","breadcrumb","sheet","table","select","tooltip"],
component: () => import("../src/lib/registry/default/block/Dashboard07.vue").then((m) => m.default),
files: ["../src/lib/registry/default/block/Dashboard07.vue"],
},
}, "new-york": { }, "new-york": {
"AccordionDemo": { "AccordionDemo": {
name: "AccordionDemo", name: "AccordionDemo",
@ -2426,5 +2447,26 @@ export const Index = {
component: () => import("../src/lib/registry/new-york/block/Dashboard04.vue").then((m) => m.default), component: () => import("../src/lib/registry/new-york/block/Dashboard04.vue").then((m) => m.default),
files: ["../src/lib/registry/new-york/block/Dashboard04.vue"], files: ["../src/lib/registry/new-york/block/Dashboard04.vue"],
}, },
"Dashboard05": {
name: "Dashboard05",
type: "components:block",
registryDependencies: ["badge","button","card","dropdown-menu","input","breadcrumb","sheet","pagination","progress","separator","table","tabs","tooltip","checkbox"],
component: () => import("../src/lib/registry/new-york/block/Dashboard05.vue").then((m) => m.default),
files: ["../src/lib/registry/new-york/block/Dashboard05.vue"],
},
"Dashboard06": {
name: "Dashboard06",
type: "components:block",
registryDependencies: ["badge","button","card","dropdown-menu","input","breadcrumb","sheet","table","tabs","tooltip"],
component: () => import("../src/lib/registry/new-york/block/Dashboard06.vue").then((m) => m.default),
files: ["../src/lib/registry/new-york/block/Dashboard06.vue"],
},
"Dashboard07": {
name: "Dashboard07",
type: "components:block",
registryDependencies: ["badge","button","card","dropdown-menu","input","textarea","label","toggle-group","breadcrumb","sheet","table","select","tooltip"],
component: () => import("../src/lib/registry/new-york/block/Dashboard07.vue").then((m) => m.default),
files: ["../src/lib/registry/new-york/block/Dashboard07.vue"],
},
}, },
} }

View File

@ -33,7 +33,7 @@
"embla-carousel-vue": "^8.0.0", "embla-carousel-vue": "^8.0.0",
"lucide-vue-next": "^0.359.0", "lucide-vue-next": "^0.359.0",
"magic-string": "^0.30.8", "magic-string": "^0.30.8",
"radix-vue": "^1.6.1", "radix-vue": "^1.6.2",
"tailwindcss-animate": "^1.0.7", "tailwindcss-animate": "^1.0.7",
"v-calendar": "^3.1.2", "v-calendar": "^3.1.2",
"vaul-vue": "^0.1.0", "vaul-vue": "^0.1.0",

View File

@ -25,7 +25,7 @@ import { Label } from '@/lib/registry/default/ui/label'
<CardContent> <CardContent>
<div class="grid gap-4"> <div class="grid gap-4">
<div class="grid grid-cols-2 gap-4"> <div class="grid grid-cols-2 gap-4">
<div class="space-y-2"> <div class="grid gap-2">
<Label for="first-name">First name</Label> <Label for="first-name">First name</Label>
<Input id="first-name" placeholder="Max" required /> <Input id="first-name" placeholder="Max" required />
</div> </div>

View File

@ -136,7 +136,7 @@ import { Tooltip, TooltipContent, TooltipTrigger } from '@/lib/registry/default/
</nav> </nav>
</aside> </aside>
<div class="flex flex-col"> <div class="flex flex-col">
<header class="sticky top-0 z-10 flex h-[53px] items-center gap-1 border-b bg-background px-4"> <header class="sticky top-0 z-10 flex h-[57px] items-center gap-1 border-b bg-background px-4">
<h1 class="text-xl font-semibold"> <h1 class="text-xl font-semibold">
Playground Playground
</h1> </h1>

View File

@ -0,0 +1,778 @@
<script lang="ts">
export const description = 'An orders dashboard with a sidebar navigation. The sidebar has icon navigation. The content area has a breadcrumb and search in the header. The main area has a list of recent orders with a filter and export button. The main area also has a detailed view of a single order with order details, shipping information, billing information, customer information, and payment information.'
export const iframeHeight = '1112px'
export const containerClass = 'w-full h-full'
</script>
<script setup lang="ts">
import {
ChevronLeft,
ChevronRight,
CircleUser,
Copy,
CreditCard,
File,
Home,
LineChart,
ListFilter,
MoreVertical,
Package,
Package2,
PanelLeft,
Search,
Settings,
ShoppingCart,
Truck,
Users2,
} from 'lucide-vue-next'
import { Badge } from '@/lib/registry/default/ui/badge'
import { Button } from '@/lib/registry/default/ui/button'
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/lib/registry/default/ui/card'
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from '@/lib/registry/default/ui/dropdown-menu'
import { Input } from '@/lib/registry/default/ui/input'
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from '@/lib/registry/default/ui/breadcrumb'
import { Sheet, SheetContent, SheetTrigger } from '@/lib/registry/default/ui/sheet'
import {
Pagination,
PaginationEllipsis,
PaginationFirst,
PaginationLast,
PaginationList,
PaginationListItem,
PaginationNext,
PaginationPrev,
} from '@/lib/registry/default/ui/pagination'
import { Progress } from '@/lib/registry/default/ui/progress'
import { Separator } from '@/lib/registry/default/ui/separator'
import {
Table,
TableBody,
TableCell,
TableHead,
TableHeader,
TableRow,
} from '@/lib/registry/default/ui/table'
import {
Tabs,
TabsContent,
TabsList,
TabsTrigger,
} from '@/lib/registry/default/ui/tabs'
import {
Tooltip,
TooltipContent,
TooltipTrigger,
} from '@/lib/registry/default/ui/tooltip'
import { Checkbox } from '@/lib/registry/default/ui/checkbox'
</script>
<template>
<div class="flex min-h-screen w-full flex-col bg-muted/40">
<aside class="fixed inset-y-0 left-0 z-10 hidden w-14 flex-col border-r bg-background sm:flex">
<nav class="flex flex-col items-center gap-4 px-2 sm:py-5">
<a
href="#"
class="group flex h-9 w-9 shrink-0 items-center justify-center gap-2 rounded-full bg-primary text-lg font-semibold text-primary-foreground md:h-8 md:w-8 md:text-base"
>
<Package2 class="h-4 w-4 transition-all group-hover:scale-110" />
<span class="sr-only">Acme Inc</span>
</a>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Home class="h-5 w-5" />
<span class="sr-only">Dashboard</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Dashboard
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg bg-accent text-accent-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<ShoppingCart class="h-5 w-5" />
<span class="sr-only">Orders</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Orders
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Package class="h-5 w-5" />
<span class="sr-only">Products</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Products
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Users2 class="h-5 w-5" />
<span class="sr-only">Customers</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Customers
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<LineChart class="h-5 w-5" />
<span class="sr-only">Analytics</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Analytics
</TooltipContent>
</Tooltip>
</nav>
<nav class="mt-auto flex flex-col items-center gap-4 px-2 sm:py-5">
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Settings class="h-5 w-5" />
<span class="sr-only">Settings</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Settings
</TooltipContent>
</Tooltip>
</nav>
</aside>
<div class="flex flex-col sm:gap-4 sm:py-4 sm:pl-14">
<header class="sticky top-0 z-30 flex h-14 items-center gap-4 border-b bg-background px-4 sm:static sm:h-auto sm:border-0 sm:bg-transparent sm:px-6">
<Sheet>
<SheetTrigger as-child>
<Button size="icon" variant="outline" class="sm:hidden">
<PanelLeft class="h-5 w-5" />
<span class="sr-only">Toggle Menu</span>
</Button>
</SheetTrigger>
<SheetContent side="left" class="sm:max-w-xs">
<nav class="grid gap-6 text-lg font-medium">
<a
href="#"
class="group flex h-10 w-10 shrink-0 items-center justify-center gap-2 rounded-full bg-primary text-lg font-semibold text-primary-foreground md:text-base"
>
<Package2 class="h-5 w-5 transition-all group-hover:scale-110" />
<span class="sr-only">Acme Inc</span>
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<Home class="h-5 w-5" />
Dashboard
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-foreground"
>
<ShoppingCart class="h-5 w-5" />
Orders
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<Package class="h-5 w-5" />
Products
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<Users2 class="h-5 w-5" />
Customers
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<LineChart class="h-5 w-5" />
Settings
</a>
</nav>
</SheetContent>
</Sheet>
<Breadcrumb class="hidden md:flex">
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink as-child>
<a href="#">Dashboard</a>
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink as-child>
<a href="#">Orders</a>
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Recent Orders</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
<div class="relative ml-auto flex-1 md:grow-0">
<Search class="absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground" />
<Input
type="search"
placeholder="Search..."
class="w-full rounded-lg bg-background pl-8 md:w-[200px] lg:w-[336px]"
/>
</div>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button variant="secondary" size="icon" class="rounded-full">
<CircleUser class="h-5 w-5" />
<span class="sr-only">Toggle user menu</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>My Account</DropdownMenuLabel>
<DropdownMenuSeparator />
<DropdownMenuItem>Settings</DropdownMenuItem>
<DropdownMenuItem>Support</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem>Logout</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</header>
<main class="grid flex-1 items-start gap-4 p-4 sm:px-6 sm:py-0 md:gap-8 lg:grid-cols-3 xl:grid-cols-3">
<div class="grid auto-rows-max items-start gap-4 md:gap-8 lg:col-span-2">
<div class="grid gap-4 sm:grid-cols-2 md:grid-cols-4 lg:grid-cols-2 xl:grid-cols-4">
<Card class="sm:col-span-2">
<CardHeader class="pb-3">
<CardTitle>Your Orders</CardTitle>
<CardDescription class="max-w-lg text-balance leading-relaxed">
Introducing Our Dynamic Orders Dashboard for Seamless
Management and Insightful Analysis.
</CardDescription>
</CardHeader>
<CardFooter>
<Button>Create New Order</Button>
</CardFooter>
</Card>
<Card>
<CardHeader class="pb-2">
<CardDescription>This Week</CardDescription>
<CardTitle class="text-4xl">
$1329
</CardTitle>
</CardHeader>
<CardContent>
<div class="text-xs text-muted-foreground">
+25% from last week
</div>
</CardContent>
<CardFooter>
<Progress :model-value="25" aria-label="25% increase" />
</CardFooter>
</Card>
<Card>
<CardHeader class="pb-2">
<CardDescription>This Month</CardDescription>
<CardTitle class="text-3xl">
$5,329
</CardTitle>
</CardHeader>
<CardContent>
<div class="text-xs text-muted-foreground">
+10% from last month
</div>
</CardContent>
<CardFooter>
<Progress :model-value="12" aria-label="12% increase" />
</CardFooter>
</Card>
</div>
<Tabs default-value="week">
<div class="flex items-center">
<TabsList>
<TabsTrigger value="week">
Week
</TabsTrigger>
<TabsTrigger value="month">
Month
</TabsTrigger>
<TabsTrigger value="year">
Year
</TabsTrigger>
</TabsList>
<div class="ml-auto flex items-center gap-2">
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button variant="outline" size="sm" class="h-7 gap-1 rounded-md px-3">
<ListFilter class="h-3.5 w-3.5" />
<span class="sr-only sm:not-sr-only">Filter</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>Filter by</DropdownMenuLabel>
<DropdownMenuSeparator />
<DropdownMenuItem>
<div class="items-top flex space-x-2">
<Checkbox id="terms1" />
<label
for="terms2"
class="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
>
Fulfilled
</label>
</div>
</DropdownMenuItem>
<DropdownMenuItem>
<div class="items-top flex space-x-2">
<Checkbox id="terms1" />
<label
for="terms2"
class="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
>
Declined
</label>
</div>
</DropdownMenuItem>
<DropdownMenuItem>
<div class="items-top flex space-x-2">
<Checkbox id="terms1" />
<label
for="terms2"
class="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
>
Refunded
</label>
</div>
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
<Button variant="outline" size="sm" class="h-7 gap-1 rounded-md px-3">
<File class="h-3.5 w-3.5" />
<span class="sr-only sm:not-sr-only">Export</span>
</Button>
</div>
</div>
<TabsContent value="week">
<Card>
<CardHeader class="px-7">
<CardTitle>Orders</CardTitle>
<CardDescription>
Recent orders from your store.
</CardDescription>
</CardHeader>
<CardContent>
<Table>
<TableHeader>
<TableRow>
<TableHead>Customer</TableHead>
<TableHead class="hidden sm:table-cell">
Type
</TableHead>
<TableHead class="hidden sm:table-cell">
Status
</TableHead>
<TableHead class="hidden md:table-cell">
Date
</TableHead>
<TableHead class="text-right">
Amount
</TableHead>
</TableRow>
</TableHeader>
<TableBody>
<TableRow class="bg-accent">
<TableCell>
<div class="font-medium">
Liam Johnson
</div>
<div class="hidden text-sm text-muted-foreground md:inline">
liam@example.com
</div>
</TableCell>
<TableCell class="hidden sm:table-cell">
Sale
</TableCell>
<TableCell class="hidden sm:table-cell">
<Badge class="text-xs" variant="secondary">
Fulfilled
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
2023-06-23
</TableCell>
<TableCell class="text-right">
$250.00
</TableCell>
</TableRow>
<TableRow>
<TableCell>
<div class="font-medium">
Olivia Smith
</div>
<div class="hidden text-sm text-muted-foreground md:inline">
olivia@example.com
</div>
</TableCell>
<TableCell class="hidden sm:table-cell">
Refund
</TableCell>
<TableCell class="hidden sm:table-cell">
<Badge class="text-xs" variant="outline">
Declined
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
2023-06-24
</TableCell>
<TableCell class="text-right">
$150.00
</TableCell>
</TableRow>
<TableRow>
<TableCell>
<div class="font-medium">
Noah Williams
</div>
<div class="hidden text-sm text-muted-foreground md:inline">
noah@example.com
</div>
</TableCell>
<TableCell class="hidden sm:table-cell">
Subscription
</TableCell>
<TableCell class="hidden sm:table-cell">
<Badge class="text-xs" variant="secondary">
Fulfilled
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
2023-06-25
</TableCell>
<TableCell class="text-right">
$350.00
</TableCell>
</TableRow>
<TableRow>
<TableCell>
<div class="font-medium">
Emma Brown
</div>
<div class="hidden text-sm text-muted-foreground md:inline">
emma@example.com
</div>
</TableCell>
<TableCell class="hidden sm:table-cell">
Sale
</TableCell>
<TableCell class="hidden sm:table-cell">
<Badge class="text-xs" variant="secondary">
Fulfilled
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
2023-06-26
</TableCell>
<TableCell class="text-right">
$450.00
</TableCell>
</TableRow>
<TableRow>
<TableCell>
<div class="font-medium">
Liam Johnson
</div>
<div class="hidden text-sm text-muted-foreground md:inline">
liam@example.com
</div>
</TableCell>
<TableCell class="hidden sm:table-cell">
Sale
</TableCell>
<TableCell class="hidden sm:table-cell">
<Badge class="text-xs" variant="secondary">
Fulfilled
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
2023-06-23
</TableCell>
<TableCell class="text-right">
$250.00
</TableCell>
</TableRow>
<TableRow>
<TableCell>
<div class="font-medium">
Liam Johnson
</div>
<div class="hidden text-sm text-muted-foreground md:inline">
liam@example.com
</div>
</TableCell>
<TableCell class="hidden sm:table-cell">
Sale
</TableCell>
<TableCell class="hidden sm:table-cell">
<Badge class="text-xs" variant="secondary">
Fulfilled
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
2023-06-23
</TableCell>
<TableCell class="text-right">
$250.00
</TableCell>
</TableRow>
<TableRow>
<TableCell>
<div class="font-medium">
Olivia Smith
</div>
<div class="hidden text-sm text-muted-foreground md:inline">
olivia@example.com
</div>
</TableCell>
<TableCell class="hidden sm:table-cell">
Refund
</TableCell>
<TableCell class="hidden sm:table-cell">
<Badge class="text-xs" variant="outline">
Declined
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
2023-06-24
</TableCell>
<TableCell class="text-right">
$150.00
</TableCell>
</TableRow>
<TableRow>
<TableCell>
<div class="font-medium">
Emma Brown
</div>
<div class="hidden text-sm text-muted-foreground md:inline">
emma@example.com
</div>
</TableCell>
<TableCell class="hidden sm:table-cell">
Sale
</TableCell>
<TableCell class="hidden sm:table-cell">
<Badge class="text-xs" variant="secondary">
Fulfilled
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
2023-06-26
</TableCell>
<TableCell class="text-right">
$450.00
</TableCell>
</TableRow>
</TableBody>
</Table>
</CardContent>
</Card>
</TabsContent>
</Tabs>
</div>
<div>
<Card class="overflow-hidden">
<CardHeader class="flex flex-row items-start bg-muted/50">
<div class="grid gap-0.5">
<CardTitle class="group flex items-center gap-2 text-lg">
Order ID: Oe31b70H
<Button
size="icon"
variant="outline"
class="h-6 w-6 opacity-0 transition-opacity group-hover:opacity-100"
>
<Copy class="h-3 w-3" />
<span class="sr-only">Copy Order ID</span>
</Button>
</CardTitle>
<CardDescription>Date: November 23, 2023</CardDescription>
</div>
<div class="ml-auto flex items-center gap-1">
<Button size="sm" variant="outline" class="h-8 gap-1">
<Truck class="h-3.5 w-3.5" />
<span class="lg:sr-only xl:not-sr-only xl:whitespace-nowrap">
Track Order
</span>
</Button>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button size="icon" variant="outline" class="h-8 w-8">
<MoreVertical class="h-3.5 w-3.5" />
<span class="sr-only">More</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuItem>Edit</DropdownMenuItem>
<DropdownMenuItem>Export</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem>Trash</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</div>
</CardHeader>
<CardContent class="p-6 text-sm">
<div class="grid gap-3">
<div class="font-semibold">
Order Details
</div>
<ul class="grid gap-3">
<li class="flex items-center justify-between">
<span class="text-muted-foreground">
Glimmer Lamps x <span>2</span>
</span>
<span>$250.00</span>
</li>
<li class="flex items-center justify-between">
<span class="text-muted-foreground">
Aqua Filters x <span>1</span>
</span>
<span>$49.00</span>
</li>
</ul>
<Separator class="my-2" />
<ul class="grid gap-3">
<li class="flex items-center justify-between">
<span class="text-muted-foreground">Subtotal</span>
<span>$299.00</span>
</li>
<li class="flex items-center justify-between">
<span class="text-muted-foreground">Shipping</span>
<span>$5.00</span>
</li>
<li class="flex items-center justify-between">
<span class="text-muted-foreground">Tax</span>
<span>$25.00</span>
</li>
<li class="flex items-center justify-between font-semibold">
<span class="text-muted-foreground">Total</span>
<span>$329.00</span>
</li>
</ul>
</div>
<Separator class="my-4" />
<div class="grid grid-cols-2 gap-4">
<div class="grid gap-3">
<div class="font-semibold">
Shipping Information
</div>
<address class="grid gap-0.5 not-italic text-muted-foreground">
<span>Liam Johnson</span>
<span>1234 Main St.</span>
<span>Anytown, CA 12345</span>
</address>
</div>
<div class="grid auto-rows-max gap-3">
<div class="font-semibold">
Billing Information
</div>
<div class="text-muted-foreground">
Same as shipping address
</div>
</div>
</div>
<Separator class="my-4" />
<div class="grid gap-3">
<div class="font-semibold">
Customer Information
</div>
<dl class="grid gap-3">
<div class="flex items-center justify-between">
<dt class="text-muted-foreground">
Customer
</dt>
<dd>Liam Johnson</dd>
</div>
<div class="flex items-center justify-between">
<dt class="text-muted-foreground">
Email
</dt>
<dd>
<a href="mailto:">liam@acme.com</a>
</dd>
</div>
<div class="flex items-center justify-between">
<dt class="text-muted-foreground">
Phone
</dt>
<dd>
<a href="tel:">+1 234 567 890</a>
</dd>
</div>
</dl>
</div>
<Separator class="my-4" />
<div class="grid gap-3">
<div class="font-semibold">
Payment Information
</div>
<dl class="grid gap-3">
<div class="flex items-center justify-between">
<dt class="flex items-center gap-1 text-muted-foreground">
<CreditCard class="h-4 w-4" />
Visa
</dt>
<dd>**** **** **** 4532</dd>
</div>
</dl>
</div>
</CardContent>
<CardFooter class="flex flex-row items-center border-t bg-muted/50 px-6 py-3">
<div class="text-xs text-muted-foreground">
Updated <time dateTime="2023-11-23">November 23, 2023</time>
</div>
<Pagination class="ml-auto mr-0 w-auto">
<PaginationList class="gap-1">
<PaginationPrev variant="outline" class="h-6 w-6" />
<PaginationNext variant="outline" class="h-6 w-6" />
</PaginationList>
</Pagination>
</CardFooter>
</Card>
</div>
</main>
</div>
</div>
</template>

View File

@ -0,0 +1,641 @@
<script lang="ts">
export const description = 'An products dashboard with a sidebar navigation. The sidebar has icon navigation. The content area has a breadcrumb and search in the header. It displays a list of products in a table with actions.'
export const iframeHeight = '938px'
export const containerClass = 'w-full h-full'
</script>
<script setup lang="ts">
import {
CircleUser,
File,
Home,
LineChart,
ListFilter,
MoreHorizontal,
Package,
Package2,
PanelLeft,
PlusCircle,
Search,
Settings,
ShoppingCart,
Users2,
} from 'lucide-vue-next'
import { Badge } from '@/lib/registry/default/ui/badge'
import { Button } from '@/lib/registry/default/ui/button'
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/lib/registry/default/ui/card'
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from '@/lib/registry/default/ui/dropdown-menu'
import { Input } from '@/lib/registry/default/ui/input'
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from '@/lib/registry/default/ui/breadcrumb'
import { Sheet, SheetContent, SheetTrigger } from '@/lib/registry/default/ui/sheet'
import {
Table,
TableBody,
TableCell,
TableHead,
TableHeader,
TableRow,
} from '@/lib/registry/default/ui/table'
import {
Tabs,
TabsContent,
TabsList,
TabsTrigger,
} from '@/lib/registry/default/ui/tabs'
import {
Tooltip,
TooltipContent,
TooltipTrigger,
} from '@/lib/registry/default/ui/tooltip'
</script>
<template>
<div class="flex min-h-screen w-full flex-col bg-muted/40">
<aside class="fixed inset-y-0 left-0 z-10 hidden w-14 flex-col border-r bg-background sm:flex">
<nav class="flex flex-col items-center gap-4 px-2 py-4">
<a
href="#"
class="group flex h-9 w-9 shrink-0 items-center justify-center gap-2 rounded-full bg-primary text-lg font-semibold text-primary-foreground md:h-8 md:w-8 md:text-base"
>
<Package2 class="h-4 w-4 transition-all group-hover:scale-110" />
<span class="sr-only">Acme Inc</span>
</a>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Home class="h-5 w-5" />
<span class="sr-only">Dashboard</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Dashboard
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg transition-colors hover:text-foreground md:h-8 md:w-8"
>
<ShoppingCart class="h-5 w-5" />
<span class="sr-only">Orders</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Orders
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg bg-accent text-accent-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Package class="h-5 w-5" />
<span class="sr-only">Products</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Products
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Users2 class="h-5 w-5" />
<span class="sr-only">Customers</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Customers
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<LineChart class="h-5 w-5" />
<span class="sr-only">Analytics</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Analytics
</TooltipContent>
</Tooltip>
</nav>
<nav class="mt-auto flex flex-col items-center gap-4 px-2 py-4">
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Settings class="h-5 w-5" />
<span class="sr-only">Settings</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Settings
</TooltipContent>
</Tooltip>
</nav>
</aside>
<div class="flex flex-col sm:gap-4 sm:py-4 sm:pl-14">
<header class="sticky top-0 z-30 flex h-14 items-center gap-4 border-b bg-background px-4 sm:static sm:h-auto sm:border-0 sm:bg-transparent sm:px-6">
<Sheet>
<SheetTrigger as-child>
<Button size="icon" variant="outline" class="sm:hidden">
<PanelLeft class="h-5 w-5" />
<span class="sr-only">Toggle Menu</span>
</Button>
</SheetTrigger>
<SheetContent side="left" class="sm:max-w-xs">
<nav class="grid gap-6 text-lg font-medium">
<a
href="#"
class="group flex h-10 w-10 shrink-0 items-center justify-center gap-2 rounded-full bg-primary text-lg font-semibold text-primary-foreground md:text-base"
>
<Package2 class="h-5 w-5 transition-all group-hover:scale-110" />
<span class="sr-only">Acme Inc</span>
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<Home class="h-5 w-5" />
Dashboard
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<ShoppingCart class="h-5 w-5" />
Orders
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-foreground"
>
<Package class="h-5 w-5" />
Products
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<Users2 class="h-5 w-5" />
Customers
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<LineChart class="h-5 w-5" />
Settings
</a>
</nav>
</SheetContent>
</Sheet>
<Breadcrumb class="hidden md:flex">
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink as-child>
<a href="#">Dashboard</a>
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink as-child>
<a href="#">Products</a>
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>All Products</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
<div class="relative ml-auto flex-1 md:grow-0">
<Search class="absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground" />
<Input
type="search"
placeholder="Search..."
class="w-full rounded-lg bg-background pl-8 md:w-[200px] lg:w-[320px]"
/>
</div>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button variant="secondary" size="icon" class="rounded-full">
<CircleUser class="h-5 w-5" />
<span class="sr-only">Toggle user menu</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>My Account</DropdownMenuLabel>
<DropdownMenuSeparator />
<DropdownMenuItem>Settings</DropdownMenuItem>
<DropdownMenuItem>Support</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem>Logout</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</header>
<main class="grid flex-1 items-start gap-4 p-4 sm:px-6 sm:py-0 md:gap-8">
<Tabs default-value="all">
<div class="flex items-center">
<TabsList>
<TabsTrigger value="all">
All
</TabsTrigger>
<TabsTrigger value="active">
Active
</TabsTrigger>
<TabsTrigger value="draft">
Draft
</TabsTrigger>
<TabsTrigger value="archived" class="hidden sm:flex">
Archived
</TabsTrigger>
</TabsList>
<div class="ml-auto flex items-center gap-2">
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button variant="outline" size="sm" class="h-7 gap-1">
<ListFilter class="h-3.5 w-3.5" />
<span class="sr-only sm:not-sr-only sm:whitespace-nowrap">
Filter
</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>Filter by</DropdownMenuLabel>
<DropdownMenuSeparator />
<DropdownMenuItem checked>
Active
</DropdownMenuItem>
<DropdownMenuItem>Draft</DropdownMenuItem>
<DropdownMenuItem>
Archived
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
<Button size="sm" variant="outline" class="h-7 gap-1">
<File class="h-3.5 w-3.5" />
<span class="sr-only sm:not-sr-only sm:whitespace-nowrap">
Export
</span>
</Button>
<Button size="sm" class="h-7 gap-1">
<PlusCircle class="h-3.5 w-3.5" />
<span class="sr-only sm:not-sr-only sm:whitespace-nowrap">
Add Product
</span>
</Button>
</div>
</div>
<TabsContent value="all">
<Card>
<CardHeader>
<CardTitle>Products</CardTitle>
<CardDescription>
Manage your products and view their sales performance.
</CardDescription>
</CardHeader>
<CardContent>
<Table>
<TableHeader>
<TableRow>
<TableHead class="hidden w-[100px] sm:table-cell">
<span class="sr-only">img</span>
</TableHead>
<TableHead>Name</TableHead>
<TableHead>Status</TableHead>
<TableHead class="hidden md:table-cell">
Price
</TableHead>
<TableHead class="hidden md:table-cell">
Total Sales
</TableHead>
<TableHead class="hidden md:table-cell">
Created at
</TableHead>
<TableHead>
<span class="sr-only">Actions</span>
</TableHead>
</TableRow>
</TableHeader>
<TableBody>
<TableRow>
<TableCell class="hidden sm:table-cell">
<img
alt="Product image"
class="aspect-square rounded-md object-cover"
height="64"
src="/placeholder.svg"
width="64"
>
</TableCell>
<TableCell class="font-medium">
Laser Lemonade Machine
</TableCell>
<TableCell>
<Badge variant="outline">
Draft
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
$499.99
</TableCell>
<TableCell class="hidden md:table-cell">
25
</TableCell>
<TableCell class="hidden md:table-cell">
2023-07-12 10:42 AM
</TableCell>
<TableCell>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button
aria-haspopup="true"
size="icon"
variant="ghost"
>
<MoreHorizontal class="h-4 w-4" />
<span class="sr-only">Toggle menu</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>Actions</DropdownMenuLabel>
<DropdownMenuItem>Edit</DropdownMenuItem>
<DropdownMenuItem>Delete</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</TableCell>
</TableRow>
<TableRow>
<TableCell class="hidden sm:table-cell">
<img
alt="Product image"
class="aspect-square rounded-md object-cover"
height="64"
src="/placeholder.svg"
width="64"
>
</TableCell>
<TableCell class="font-medium">
Hypernova Headphones
</TableCell>
<TableCell>
<Badge variant="outline">
Active
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
$129.99
</TableCell>
<TableCell class="hidden md:table-cell">
100
</TableCell>
<TableCell class="hidden md:table-cell">
2023-10-18 03:21 PM
</TableCell>
<TableCell>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button
aria-haspopup="true"
size="icon"
variant="ghost"
>
<MoreHorizontal class="h-4 w-4" />
<span class="sr-only">Toggle menu</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>Actions</DropdownMenuLabel>
<DropdownMenuItem>Edit</DropdownMenuItem>
<DropdownMenuItem>Delete</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</TableCell>
</TableRow>
<TableRow>
<TableCell class="hidden sm:table-cell">
<img
alt="Product image"
class="aspect-square rounded-md object-cover"
height="64"
src="/placeholder.svg"
width="64"
>
</TableCell>
<TableCell class="font-medium">
AeroGlow Desk Lamp
</TableCell>
<TableCell>
<Badge variant="outline">
Active
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
$39.99
</TableCell>
<TableCell class="hidden md:table-cell">
50
</TableCell>
<TableCell class="hidden md:table-cell">
2023-11-29 08:15 AM
</TableCell>
<TableCell>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button
aria-haspopup="true"
size="icon"
variant="ghost"
>
<MoreHorizontal class="h-4 w-4" />
<span class="sr-only">Toggle menu</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>Actions</DropdownMenuLabel>
<DropdownMenuItem>Edit</DropdownMenuItem>
<DropdownMenuItem>Delete</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</TableCell>
</TableRow>
<TableRow>
<TableCell class="hidden sm:table-cell">
<img
alt="Product image"
class="aspect-square rounded-md object-cover"
height="64"
src="/placeholder.svg"
width="64"
>
</TableCell>
<TableCell class="font-medium">
TechTonic Energy Drink
</TableCell>
<TableCell>
<Badge variant="secondary">
Draft
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
$2.99
</TableCell>
<TableCell class="hidden md:table-cell">
0
</TableCell>
<TableCell class="hidden md:table-cell">
2023-12-25 11:59 PM
</TableCell>
<TableCell>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button
aria-haspopup="true"
size="icon"
variant="ghost"
>
<MoreHorizontal class="h-4 w-4" />
<span class="sr-only">Toggle menu</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>Actions</DropdownMenuLabel>
<DropdownMenuItem>Edit</DropdownMenuItem>
<DropdownMenuItem>Delete</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</TableCell>
</TableRow>
<TableRow>
<TableCell class="hidden sm:table-cell">
<img
alt="Product image"
class="aspect-square rounded-md object-cover"
height="64"
src="/placeholder.svg"
width="64"
>
</TableCell>
<TableCell class="font-medium">
Gamer Gear Pro Controller
</TableCell>
<TableCell>
<Badge variant="outline">
Active
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
$59.99
</TableCell>
<TableCell class="hidden md:table-cell">
75
</TableCell>
<TableCell class="hidden md:table-cell">
2024-01-01 12:00 AM
</TableCell>
<TableCell>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button
aria-haspopup="true"
size="icon"
variant="ghost"
>
<MoreHorizontal class="h-4 w-4" />
<span class="sr-only">Toggle menu</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>Actions</DropdownMenuLabel>
<DropdownMenuItem>Edit</DropdownMenuItem>
<DropdownMenuItem>Delete</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</TableCell>
</TableRow>
<TableRow>
<TableCell class="hidden sm:table-cell">
<img
alt="Product image"
class="aspect-square rounded-md object-cover"
height="64"
src="/placeholder.svg"
width="64"
>
</TableCell>
<TableCell class="font-medium">
Luminous VR Headset
</TableCell>
<TableCell>
<Badge variant="outline">
Active
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
$199.99
</TableCell>
<TableCell class="hidden md:table-cell">
30
</TableCell>
<TableCell class="hidden md:table-cell">
2024-02-14 02:14 PM
</TableCell>
<TableCell>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button
aria-haspopup="true"
size="icon"
variant="ghost"
>
<MoreHorizontal class="h-4 w-4" />
<span class="sr-only">Toggle menu</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>Actions</DropdownMenuLabel>
<DropdownMenuItem>Edit</DropdownMenuItem>
<DropdownMenuItem>Delete</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</TableCell>
</TableRow>
</TableBody>
</Table>
</CardContent>
<CardFooter>
<div class="text-xs text-muted-foreground">
Showing <strong>1-10</strong> of <strong>32</strong>
products
</div>
</CardFooter>
</Card>
</TabsContent>
</Tabs>
</main>
</div>
</div>
</template>

View File

@ -0,0 +1,629 @@
<script lang="ts">
export const description = 'A product edit page. The product edit page has a form to edit the product details, stock, product category, product status, and product images. The product edit page has a sidebar navigation and a main content area. The main content area has a form to edit the product details, stock, product category, product status, and product images. The sidebar navigation has links to product details, stock, product category, product status, and product images.'
export const iframeHeight = '1200px'
export const containerClass = 'w-full h-full'
</script>
<script setup lang="ts">
import {
ChevronLeft,
CircleUser,
Home,
LineChart,
Package,
Package2,
PanelLeft,
PlusCircle,
Search,
Settings,
ShoppingCart,
Upload,
Users2,
} from 'lucide-vue-next'
import { Badge } from '@/lib/registry/default/ui/badge'
import { Button } from '@/lib/registry/default/ui/button'
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/lib/registry/default/ui/card'
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from '@/lib/registry/default/ui/dropdown-menu'
import { Input } from '@/lib/registry/default/ui/input'
import { Textarea } from '@/lib/registry/default/ui/textarea'
import { Label } from '@/lib/registry/default/ui/label'
import { ToggleGroup, ToggleGroupItem } from '@/lib/registry/default/ui/toggle-group'
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from '@/lib/registry/default/ui/breadcrumb'
import { Sheet, SheetContent, SheetTrigger } from '@/lib/registry/default/ui/sheet'
import {
Table,
TableBody,
TableCell,
TableHead,
TableHeader,
TableRow,
} from '@/lib/registry/default/ui/table'
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from '@/lib/registry/default/ui/select'
import {
Tooltip,
TooltipContent,
TooltipTrigger,
} from '@/lib/registry/default/ui/tooltip'
</script>
<template>
<div class="flex min-h-screen w-full flex-col bg-muted/40">
<aside class="fixed inset-y-0 left-0 z-10 hidden w-14 flex-col border-r bg-background sm:flex">
<nav class="flex flex-col items-center gap-4 px-2 sm:py-5">
<a
href="#"
class="group flex h-9 w-9 shrink-0 items-center justify-center gap-2 rounded-full bg-primary text-lg font-semibold text-primary-foreground md:h-8 md:w-8 md:text-base"
>
<Package2 class="h-4 w-4 transition-all group-hover:scale-110" />
<span class="sr-only">Acme Inc</span>
</a>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Home class="h-5 w-5" />
<span class="sr-only">Dashboard</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Dashboard
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg bg-accent text-accent-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<ShoppingCart class="h-5 w-5" />
<span class="sr-only">Orders</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Orders
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Package class="h-5 w-5" />
<span class="sr-only">Products</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Products
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Users2 class="h-5 w-5" />
<span class="sr-only">Customers</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Customers
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<LineChart class="h-5 w-5" />
<span class="sr-only">Analytics</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Analytics
</TooltipContent>
</Tooltip>
</nav>
<nav class="mt-auto flex flex-col items-center gap-4 px-2 sm:py-5">
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Settings class="h-5 w-5" />
<span class="sr-only">Settings</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Settings
</TooltipContent>
</Tooltip>
</nav>
</aside>
<div class="flex flex-col sm:gap-4 sm:py-4 sm:pl-14">
<header class="sticky top-0 z-30 flex h-14 items-center gap-4 border-b bg-background px-4 sm:static sm:h-auto sm:border-0 sm:bg-transparent sm:px-6">
<Sheet>
<SheetTrigger as-child>
<Button size="icon" variant="outline" class="sm:hidden">
<PanelLeft class="h-5 w-5" />
<span class="sr-only">Toggle Menu</span>
</Button>
</SheetTrigger>
<SheetContent side="left" class="sm:max-w-xs">
<nav class="grid gap-6 text-lg font-medium">
<a
href="#"
class="group flex h-10 w-10 shrink-0 items-center justify-center gap-2 rounded-full bg-primary text-lg font-semibold text-primary-foreground md:text-base"
>
<Package2 class="h-5 w-5 transition-all group-hover:scale-110" />
<span class="sr-only">Acme Inc</span>
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<Home class="h-5 w-5" />
Dashboard
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<ShoppingCart class="h-5 w-5" />
Orders
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-foreground"
>
<Package class="h-5 w-5" />
Products
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<Users2 class="h-5 w-5" />
Customers
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<LineChart class="h-5 w-5" />
Settings
</a>
</nav>
</SheetContent>
</Sheet>
<Breadcrumb class="hidden md:flex">
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink as-child>
<a href="#">Dashboard</a>
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink as-child>
<a href="#">Products</a>
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Edit Product</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
<div class="relative ml-auto flex-1 md:grow-0">
<Search class="absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground" />
<Input
type="search"
placeholder="Search..."
class="w-full rounded-lg bg-background pl-8 md:w-[200px] lg:w-[336px]"
/>
</div>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button variant="secondary" size="icon" class="rounded-full">
<CircleUser class="h-5 w-5" />
<span class="sr-only">Toggle user menu</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>My Account</DropdownMenuLabel>
<DropdownMenuSeparator />
<DropdownMenuItem>Settings</DropdownMenuItem>
<DropdownMenuItem>Support</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem>Logout</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</header>
<main class="grid flex-1 items-start gap-4 p-4 sm:px-6 sm:py-0 md:gap-8">
<div class="mx-auto grid max-w-[59rem] flex-1 auto-rows-max gap-4">
<div class="flex items-center gap-4">
<Button variant="outline" size="icon" class="h-7 w-7">
<ChevronLeft class="h-4 w-4" />
<span class="sr-only">Back</span>
</Button>
<h1 class="flex-1 shrink-0 whitespace-nowrap text-xl font-semibold tracking-tight sm:grow-0">
Pro Controller
</h1>
<Badge variant="outline" class="ml-auto sm:ml-0">
In stock
</Badge>
<div class="hidden items-center gap-2 md:ml-auto md:flex">
<Button variant="outline" size="sm">
Discard
</Button>
<Button size="sm">
Save Product
</Button>
</div>
</div>
<div class="grid gap-4 md:grid-cols-[1fr_250px] lg:grid-cols-3 lg:gap-8">
<div class="grid auto-rows-max items-start gap-4 lg:col-span-2 lg:gap-8">
<Card>
<CardHeader>
<CardTitle>Product Details</CardTitle>
<CardDescription>
Lipsum dolor sit amet, consectetur adipiscing elit
</CardDescription>
</CardHeader>
<CardContent>
<div class="grid gap-6">
<div class="grid gap-3">
<Label for="name">Name</Label>
<Input
id="name"
type="text"
class="w-full"
default-value="Gamer Gear Pro Controller"
/>
</div>
<div class="grid gap-3">
<Label for="description">Description</Label>
<Textarea
id="description"
default-value="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam auctor, nisl nec ultricies ultricies, nunc nisl ultricies nunc, nec ultricies nunc nisl nec nunc."
class="min-h-32"
/>
</div>
</div>
</CardContent>
</Card>
<Card>
<CardHeader>
<CardTitle>Stock</CardTitle>
<CardDescription>
Lipsum dolor sit amet, consectetur adipiscing elit
</CardDescription>
</CardHeader>
<CardContent>
<Table>
<TableHeader>
<TableRow>
<TableHead class="w-[100px]">
SKU
</TableHead>
<TableHead>Stock</TableHead>
<TableHead>Price</TableHead>
<TableHead class="w-[100px]">
Size
</TableHead>
</TableRow>
</TableHeader>
<TableBody>
<TableRow>
<TableCell class="font-semibold">
GGPC-001
</TableCell>
<TableCell>
<Label for="stock-1" class="sr-only">
Stock
</Label>
<Input
id="stock-1"
type="number"
default-value="100"
/>
</TableCell>
<TableCell>
<Label for="price-1" class="sr-only">
Price
</Label>
<Input
id="price-1"
type="number"
default-value="99.99"
/>
</TableCell>
<TableCell>
<ToggleGroup
type="single"
default-value="s"
variant="outline"
>
<ToggleGroupItem value="s">
S
</ToggleGroupItem>
<ToggleGroupItem value="m">
M
</ToggleGroupItem>
<ToggleGroupItem value="l">
L
</ToggleGroupItem>
</ToggleGroup>
</TableCell>
</TableRow>
<TableRow>
<TableCell class="font-semibold">
GGPC-002
</TableCell>
<TableCell>
<Label for="stock-2" class="sr-only">
Stock
</Label>
<Input
id="stock-2"
type="number"
default-value="143"
/>
</TableCell>
<TableCell>
<Label for="price-2" class="sr-only">
Price
</Label>
<Input
id="price-2"
type="number"
default-value="99.99"
/>
</TableCell>
<TableCell>
<ToggleGroup
type="single"
default-value="m"
variant="outline"
>
<ToggleGroupItem value="s">
S
</ToggleGroupItem>
<ToggleGroupItem value="m">
M
</ToggleGroupItem>
<ToggleGroupItem value="l">
L
</ToggleGroupItem>
</ToggleGroup>
</TableCell>
</TableRow>
<TableRow>
<TableCell class="font-semibold">
GGPC-003
</TableCell>
<TableCell>
<Label for="stock-3" class="sr-only">
Stock
</Label>
<Input
id="stock-3"
type="number"
default-value="32"
/>
</TableCell>
<TableCell>
<Label for="price-3" class="sr-only">
Stock
</Label>
<Input
id="price-3"
type="number"
default-value="99.99"
/>
</TableCell>
<TableCell>
<ToggleGroup
type="single"
default-value="s"
variant="outline"
>
<ToggleGroupItem value="s">
S
</ToggleGroupItem>
<ToggleGroupItem value="m">
M
</ToggleGroupItem>
<ToggleGroupItem value="l">
L
</ToggleGroupItem>
</ToggleGroup>
</TableCell>
</TableRow>
</TableBody>
</Table>
</CardContent>
<CardFooter class="justify-center border-t p-4">
<Button size="sm" variant="ghost" class="gap-1">
<PlusCircle class="h-3.5 w-3.5" />
Add Variant
</Button>
</CardFooter>
</Card>
<Card>
<CardHeader>
<CardTitle>Product Category</CardTitle>
</CardHeader>
<CardContent>
<div class="grid gap-6 sm:grid-cols-3">
<div class="grid gap-3">
<Label for="category">Category</Label>
<Select>
<SelectTrigger
id="category"
aria-label="Select category"
>
<SelectValue placeholder="Select category" />
</SelectTrigger>
<SelectContent>
<SelectItem value="clothing">
Clothing
</SelectItem>
<SelectItem value="electronics">
Electronics
</SelectItem>
<SelectItem value="accessories">
Accessories
</SelectItem>
</SelectContent>
</Select>
</div>
<div class="grid gap-3">
<Label for="subcategory">
Subcategory (optional)
</Label>
<Select>
<SelectTrigger
id="subcategory"
aria-label="Select subcategory"
>
<SelectValue placeholder="Select subcategory" />
</SelectTrigger>
<SelectContent>
<SelectItem value="t-shirts">
T-Shirts
</SelectItem>
<SelectItem value="hoodies">
Hoodies
</SelectItem>
<SelectItem value="sweatshirts">
Sweatshirts
</SelectItem>
</SelectContent>
</Select>
</div>
</div>
</CardContent>
</Card>
</div>
<div class="grid auto-rows-max items-start gap-4 lg:gap-8">
<Card>
<CardHeader>
<CardTitle>Product Status</CardTitle>
</CardHeader>
<CardContent>
<div class="grid gap-6">
<div class="grid gap-3">
<Label for="status">Status</Label>
<Select>
<SelectTrigger id="status" aria-label="Select status">
<SelectValue placeholder="Select status" />
</SelectTrigger>
<SelectContent>
<SelectItem value="draft">
Draft
</SelectItem>
<SelectItem value="published">
Active
</SelectItem>
<SelectItem value="archived">
Archived
</SelectItem>
</SelectContent>
</Select>
</div>
</div>
</CardContent>
</Card>
<Card class="overflow-hidden">
<CardHeader>
<CardTitle>Product imgs</CardTitle>
<CardDescription>
Lipsum dolor sit amet, consectetur adipiscing elit
</CardDescription>
</CardHeader>
<CardContent>
<div class="grid gap-2">
<img
alt="Product image"
class="aspect-square w-full rounded-md object-cover"
height="300"
src="/placeholder.svg"
width="300"
>
<div class="grid grid-cols-3 gap-2">
<button>
<img
alt="Product image"
class="aspect-square w-full rounded-md object-cover"
height="84"
src="/placeholder.svg"
width="84"
>
</button>
<button>
<img
alt="Product image"
class="aspect-square w-full rounded-md object-cover"
height="84"
src="/placeholder.svg"
width="84"
>
</button>
<button class="flex aspect-square w-full items-center justify-center rounded-md border border-dashed">
<Upload class="h-4 w-4 text-muted-foreground" />
<span class="sr-only">Upload</span>
</button>
</div>
</div>
</CardContent>
</Card>
<Card>
<CardHeader>
<CardTitle>Archive Product</CardTitle>
<CardDescription>
Lipsum dolor sit amet, consectetur adipiscing elit.
</CardDescription>
</CardHeader>
<CardContent>
<div />
<Button size="sm" variant="secondary">
Archive Product
</Button>
</CardContent>
</Card>
</div>
</div>
<div class="flex items-center justify-center gap-2 md:hidden">
<Button variant="outline" size="sm">
Discard
</Button>
<Button size="sm">
Save Product
</Button>
</div>
</div>
</main>
</div>
</div>
</template>

View File

@ -25,7 +25,7 @@ import { Label } from '@/lib/registry/new-york/ui/label'
<CardContent> <CardContent>
<div class="grid gap-4"> <div class="grid gap-4">
<div class="grid grid-cols-2 gap-4"> <div class="grid grid-cols-2 gap-4">
<div class="space-y-2"> <div class="grid gap-2">
<Label for="first-name">First name</Label> <Label for="first-name">First name</Label>
<Input id="first-name" placeholder="Max" required /> <Input id="first-name" placeholder="Max" required />
</div> </div>

View File

@ -0,0 +1,772 @@
<script lang="ts">
export const description = 'An orders dashboard with a sidebar navigation. The sidebar has icon navigation. The content area has a breadcrumb and search in the header. The main area has a list of recent orders with a filter and export button. The main area also has a detailed view of a single order with order details, shipping information, billing information, customer information, and payment information.'
export const iframeHeight = '1112px'
export const containerClass = 'w-full h-full'
</script>
<script setup lang="ts">
import {
CircleUser,
Copy,
CreditCard,
File,
Home,
LineChart,
ListFilter,
MoreVertical,
Package,
Package2,
PanelLeft,
Search,
Settings,
ShoppingCart,
Truck,
Users2,
} from 'lucide-vue-next'
import { Badge } from '@/lib/registry/new-york/ui/badge'
import { Button } from '@/lib/registry/new-york/ui/button'
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/lib/registry/new-york/ui/card'
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from '@/lib/registry/new-york/ui/dropdown-menu'
import { Input } from '@/lib/registry/new-york/ui/input'
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from '@/lib/registry/new-york/ui/breadcrumb'
import { Sheet, SheetContent, SheetTrigger } from '@/lib/registry/new-york/ui/sheet'
import {
Pagination,
PaginationList,
PaginationNext,
PaginationPrev,
} from '@/lib/registry/new-york/ui/pagination'
import { Progress } from '@/lib/registry/new-york/ui/progress'
import { Separator } from '@/lib/registry/new-york/ui/separator'
import {
Table,
TableBody,
TableCell,
TableHead,
TableHeader,
TableRow,
} from '@/lib/registry/new-york/ui/table'
import {
Tabs,
TabsContent,
TabsList,
TabsTrigger,
} from '@/lib/registry/new-york/ui/tabs'
import {
Tooltip,
TooltipContent,
TooltipTrigger,
} from '@/lib/registry/new-york/ui/tooltip'
import { Checkbox } from '@/lib/registry/new-york/ui/checkbox'
</script>
<template>
<div class="flex min-h-screen w-full flex-col bg-muted/40">
<aside class="fixed inset-y-0 left-0 z-10 hidden w-14 flex-col border-r bg-background sm:flex">
<nav class="flex flex-col items-center gap-4 px-2 sm:py-5">
<a
href="#"
class="group flex h-9 w-9 shrink-0 items-center justify-center gap-2 rounded-full bg-primary text-lg font-semibold text-primary-foreground md:h-8 md:w-8 md:text-base"
>
<Package2 class="h-4 w-4 transition-all group-hover:scale-110" />
<span class="sr-only">Acme Inc</span>
</a>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Home class="h-5 w-5" />
<span class="sr-only">Dashboard</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Dashboard
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg bg-accent text-accent-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<ShoppingCart class="h-5 w-5" />
<span class="sr-only">Orders</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Orders
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Package class="h-5 w-5" />
<span class="sr-only">Products</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Products
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Users2 class="h-5 w-5" />
<span class="sr-only">Customers</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Customers
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<LineChart class="h-5 w-5" />
<span class="sr-only">Analytics</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Analytics
</TooltipContent>
</Tooltip>
</nav>
<nav class="mt-auto flex flex-col items-center gap-4 px-2 sm:py-5">
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Settings class="h-5 w-5" />
<span class="sr-only">Settings</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Settings
</TooltipContent>
</Tooltip>
</nav>
</aside>
<div class="flex flex-col sm:gap-4 sm:py-4 sm:pl-14">
<header class="sticky top-0 z-30 flex h-14 items-center gap-4 border-b bg-background px-4 sm:static sm:h-auto sm:border-0 sm:bg-transparent sm:px-6">
<Sheet>
<SheetTrigger as-child>
<Button size="icon" variant="outline" class="sm:hidden">
<PanelLeft class="h-5 w-5" />
<span class="sr-only">Toggle Menu</span>
</Button>
</SheetTrigger>
<SheetContent side="left" class="sm:max-w-xs">
<nav class="grid gap-6 text-lg font-medium">
<a
href="#"
class="group flex h-10 w-10 shrink-0 items-center justify-center gap-2 rounded-full bg-primary text-lg font-semibold text-primary-foreground md:text-base"
>
<Package2 class="h-5 w-5 transition-all group-hover:scale-110" />
<span class="sr-only">Acme Inc</span>
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<Home class="h-5 w-5" />
Dashboard
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-foreground"
>
<ShoppingCart class="h-5 w-5" />
Orders
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<Package class="h-5 w-5" />
Products
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<Users2 class="h-5 w-5" />
Customers
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<LineChart class="h-5 w-5" />
Settings
</a>
</nav>
</SheetContent>
</Sheet>
<Breadcrumb class="hidden md:flex">
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink as-child>
<a href="#">Dashboard</a>
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink as-child>
<a href="#">Orders</a>
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Recent Orders</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
<div class="relative ml-auto flex-1 md:grow-0">
<Search class="absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground" />
<Input
type="search"
placeholder="Search..."
class="w-full rounded-lg bg-background pl-8 md:w-[200px] lg:w-[336px]"
/>
</div>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button variant="secondary" size="icon" class="rounded-full">
<CircleUser class="h-5 w-5" />
<span class="sr-only">Toggle user menu</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>My Account</DropdownMenuLabel>
<DropdownMenuSeparator />
<DropdownMenuItem>Settings</DropdownMenuItem>
<DropdownMenuItem>Support</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem>Logout</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</header>
<main class="grid flex-1 items-start gap-4 p-4 sm:px-6 sm:py-0 md:gap-8 lg:grid-cols-3 xl:grid-cols-3">
<div class="grid auto-rows-max items-start gap-4 md:gap-8 lg:col-span-2">
<div class="grid gap-4 sm:grid-cols-2 md:grid-cols-4 lg:grid-cols-2 xl:grid-cols-4">
<Card class="sm:col-span-2">
<CardHeader class="pb-3">
<CardTitle>Your Orders</CardTitle>
<CardDescription class="max-w-lg text-balance leading-relaxed">
Introducing Our Dynamic Orders Dashboard for Seamless
Management and Insightful Analysis.
</CardDescription>
</CardHeader>
<CardFooter>
<Button>Create New Order</Button>
</CardFooter>
</Card>
<Card>
<CardHeader class="pb-2">
<CardDescription>This Week</CardDescription>
<CardTitle class="text-4xl">
$1329
</CardTitle>
</CardHeader>
<CardContent>
<div class="text-xs text-muted-foreground">
+25% from last week
</div>
</CardContent>
<CardFooter>
<Progress :model-value="25" aria-label="25% increase" />
</CardFooter>
</Card>
<Card>
<CardHeader class="pb-2">
<CardDescription>This Month</CardDescription>
<CardTitle class="text-3xl">
$5,329
</CardTitle>
</CardHeader>
<CardContent>
<div class="text-xs text-muted-foreground">
+10% from last month
</div>
</CardContent>
<CardFooter>
<Progress :model-value="12" aria-label="12% increase" />
</CardFooter>
</Card>
</div>
<Tabs default-value="week">
<div class="flex items-center">
<TabsList>
<TabsTrigger value="week">
Week
</TabsTrigger>
<TabsTrigger value="month">
Month
</TabsTrigger>
<TabsTrigger value="year">
Year
</TabsTrigger>
</TabsList>
<div class="ml-auto flex items-center gap-2">
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button variant="outline" size="sm" class="h-7 gap-1 rounded-md px-3">
<ListFilter class="h-3.5 w-3.5" />
<span class="sr-only sm:not-sr-only">Filter</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>Filter by</DropdownMenuLabel>
<DropdownMenuSeparator />
<DropdownMenuItem>
<div class="items-top flex space-x-2">
<Checkbox id="terms1" />
<label
for="terms2"
class="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
>
Fulfilled
</label>
</div>
</DropdownMenuItem>
<DropdownMenuItem>
<div class="items-top flex space-x-2">
<Checkbox id="terms1" />
<label
for="terms2"
class="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
>
Declined
</label>
</div>
</DropdownMenuItem>
<DropdownMenuItem>
<div class="items-top flex space-x-2">
<Checkbox id="terms1" />
<label
for="terms2"
class="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
>
Refunded
</label>
</div>
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
<Button variant="outline" size="sm" class="h-7 gap-1 rounded-md px-3">
<File class="h-3.5 w-3.5" />
<span class="sr-only sm:not-sr-only">Export</span>
</Button>
</div>
</div>
<TabsContent value="week">
<Card>
<CardHeader class="px-7">
<CardTitle>Orders</CardTitle>
<CardDescription>
Recent orders from your store.
</CardDescription>
</CardHeader>
<CardContent>
<Table>
<TableHeader>
<TableRow>
<TableHead>Customer</TableHead>
<TableHead class="hidden sm:table-cell">
Type
</TableHead>
<TableHead class="hidden sm:table-cell">
Status
</TableHead>
<TableHead class="hidden md:table-cell">
Date
</TableHead>
<TableHead class="text-right">
Amount
</TableHead>
</TableRow>
</TableHeader>
<TableBody>
<TableRow class="bg-accent">
<TableCell>
<div class="font-medium">
Liam Johnson
</div>
<div class="hidden text-sm text-muted-foreground md:inline">
liam@example.com
</div>
</TableCell>
<TableCell class="hidden sm:table-cell">
Sale
</TableCell>
<TableCell class="hidden sm:table-cell">
<Badge class="text-xs" variant="secondary">
Fulfilled
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
2023-06-23
</TableCell>
<TableCell class="text-right">
$250.00
</TableCell>
</TableRow>
<TableRow>
<TableCell>
<div class="font-medium">
Olivia Smith
</div>
<div class="hidden text-sm text-muted-foreground md:inline">
olivia@example.com
</div>
</TableCell>
<TableCell class="hidden sm:table-cell">
Refund
</TableCell>
<TableCell class="hidden sm:table-cell">
<Badge class="text-xs" variant="outline">
Declined
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
2023-06-24
</TableCell>
<TableCell class="text-right">
$150.00
</TableCell>
</TableRow>
<TableRow>
<TableCell>
<div class="font-medium">
Noah Williams
</div>
<div class="hidden text-sm text-muted-foreground md:inline">
noah@example.com
</div>
</TableCell>
<TableCell class="hidden sm:table-cell">
Subscription
</TableCell>
<TableCell class="hidden sm:table-cell">
<Badge class="text-xs" variant="secondary">
Fulfilled
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
2023-06-25
</TableCell>
<TableCell class="text-right">
$350.00
</TableCell>
</TableRow>
<TableRow>
<TableCell>
<div class="font-medium">
Emma Brown
</div>
<div class="hidden text-sm text-muted-foreground md:inline">
emma@example.com
</div>
</TableCell>
<TableCell class="hidden sm:table-cell">
Sale
</TableCell>
<TableCell class="hidden sm:table-cell">
<Badge class="text-xs" variant="secondary">
Fulfilled
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
2023-06-26
</TableCell>
<TableCell class="text-right">
$450.00
</TableCell>
</TableRow>
<TableRow>
<TableCell>
<div class="font-medium">
Liam Johnson
</div>
<div class="hidden text-sm text-muted-foreground md:inline">
liam@example.com
</div>
</TableCell>
<TableCell class="hidden sm:table-cell">
Sale
</TableCell>
<TableCell class="hidden sm:table-cell">
<Badge class="text-xs" variant="secondary">
Fulfilled
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
2023-06-23
</TableCell>
<TableCell class="text-right">
$250.00
</TableCell>
</TableRow>
<TableRow>
<TableCell>
<div class="font-medium">
Liam Johnson
</div>
<div class="hidden text-sm text-muted-foreground md:inline">
liam@example.com
</div>
</TableCell>
<TableCell class="hidden sm:table-cell">
Sale
</TableCell>
<TableCell class="hidden sm:table-cell">
<Badge class="text-xs" variant="secondary">
Fulfilled
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
2023-06-23
</TableCell>
<TableCell class="text-right">
$250.00
</TableCell>
</TableRow>
<TableRow>
<TableCell>
<div class="font-medium">
Olivia Smith
</div>
<div class="hidden text-sm text-muted-foreground md:inline">
olivia@example.com
</div>
</TableCell>
<TableCell class="hidden sm:table-cell">
Refund
</TableCell>
<TableCell class="hidden sm:table-cell">
<Badge class="text-xs" variant="outline">
Declined
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
2023-06-24
</TableCell>
<TableCell class="text-right">
$150.00
</TableCell>
</TableRow>
<TableRow>
<TableCell>
<div class="font-medium">
Emma Brown
</div>
<div class="hidden text-sm text-muted-foreground md:inline">
emma@example.com
</div>
</TableCell>
<TableCell class="hidden sm:table-cell">
Sale
</TableCell>
<TableCell class="hidden sm:table-cell">
<Badge class="text-xs" variant="secondary">
Fulfilled
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
2023-06-26
</TableCell>
<TableCell class="text-right">
$450.00
</TableCell>
</TableRow>
</TableBody>
</Table>
</CardContent>
</Card>
</TabsContent>
</Tabs>
</div>
<div>
<Card class="overflow-hidden">
<CardHeader class="flex flex-row items-start bg-muted/50">
<div class="grid gap-0.5">
<CardTitle class="group flex items-center gap-2 text-lg">
Order ID: Oe31b70H
<Button
size="icon"
variant="outline"
class="h-6 w-6 opacity-0 transition-opacity group-hover:opacity-100"
>
<Copy class="h-3 w-3" />
<span class="sr-only">Copy Order ID</span>
</Button>
</CardTitle>
<CardDescription>Date: November 23, 2023</CardDescription>
</div>
<div class="ml-auto flex items-center gap-1">
<Button size="sm" variant="outline" class="h-8 gap-1">
<Truck class="h-3.5 w-3.5" />
<span class="lg:sr-only xl:not-sr-only xl:whitespace-nowrap">
Track Order
</span>
</Button>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button size="icon" variant="outline" class="h-8 w-8">
<MoreVertical class="h-3.5 w-3.5" />
<span class="sr-only">More</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuItem>Edit</DropdownMenuItem>
<DropdownMenuItem>Export</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem>Trash</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</div>
</CardHeader>
<CardContent class="p-6 text-sm">
<div class="grid gap-3">
<div class="font-semibold">
Order Details
</div>
<ul class="grid gap-3">
<li class="flex items-center justify-between">
<span class="text-muted-foreground">
Glimmer Lamps x <span>2</span>
</span>
<span>$250.00</span>
</li>
<li class="flex items-center justify-between">
<span class="text-muted-foreground">
Aqua Filters x <span>1</span>
</span>
<span>$49.00</span>
</li>
</ul>
<Separator class="my-2" />
<ul class="grid gap-3">
<li class="flex items-center justify-between">
<span class="text-muted-foreground">Subtotal</span>
<span>$299.00</span>
</li>
<li class="flex items-center justify-between">
<span class="text-muted-foreground">Shipping</span>
<span>$5.00</span>
</li>
<li class="flex items-center justify-between">
<span class="text-muted-foreground">Tax</span>
<span>$25.00</span>
</li>
<li class="flex items-center justify-between font-semibold">
<span class="text-muted-foreground">Total</span>
<span>$329.00</span>
</li>
</ul>
</div>
<Separator class="my-4" />
<div class="grid grid-cols-2 gap-4">
<div class="grid gap-3">
<div class="font-semibold">
Shipping Information
</div>
<address class="grid gap-0.5 not-italic text-muted-foreground">
<span>Liam Johnson</span>
<span>1234 Main St.</span>
<span>Anytown, CA 12345</span>
</address>
</div>
<div class="grid auto-rows-max gap-3">
<div class="font-semibold">
Billing Information
</div>
<div class="text-muted-foreground">
Same as shipping address
</div>
</div>
</div>
<Separator class="my-4" />
<div class="grid gap-3">
<div class="font-semibold">
Customer Information
</div>
<dl class="grid gap-3">
<div class="flex items-center justify-between">
<dt class="text-muted-foreground">
Customer
</dt>
<dd>Liam Johnson</dd>
</div>
<div class="flex items-center justify-between">
<dt class="text-muted-foreground">
Email
</dt>
<dd>
<a href="mailto:">liam@acme.com</a>
</dd>
</div>
<div class="flex items-center justify-between">
<dt class="text-muted-foreground">
Phone
</dt>
<dd>
<a href="tel:">+1 234 567 890</a>
</dd>
</div>
</dl>
</div>
<Separator class="my-4" />
<div class="grid gap-3">
<div class="font-semibold">
Payment Information
</div>
<dl class="grid gap-3">
<div class="flex items-center justify-between">
<dt class="flex items-center gap-1 text-muted-foreground">
<CreditCard class="h-4 w-4" />
Visa
</dt>
<dd>**** **** **** 4532</dd>
</div>
</dl>
</div>
</CardContent>
<CardFooter class="flex flex-row items-center border-t bg-muted/50 px-6 py-3">
<div class="text-xs text-muted-foreground">
Updated <time dateTime="2023-11-23">November 23, 2023</time>
</div>
<Pagination class="ml-auto mr-0 w-auto">
<PaginationList class="gap-1">
<PaginationPrev variant="outline" class="h-6 w-6" />
<PaginationNext variant="outline" class="h-6 w-6" />
</PaginationList>
</Pagination>
</CardFooter>
</Card>
</div>
</main>
</div>
</div>
</template>

View File

@ -0,0 +1,641 @@
<script lang="ts">
export const description = 'An products dashboard with a sidebar navigation. The sidebar has icon navigation. The content area has a breadcrumb and search in the header. It displays a list of products in a table with actions.'
export const iframeHeight = '938px'
export const containerClass = 'w-full h-full'
</script>
<script setup lang="ts">
import {
CircleUser,
File,
Home,
LineChart,
ListFilter,
MoreHorizontal,
Package,
Package2,
PanelLeft,
PlusCircle,
Search,
Settings,
ShoppingCart,
Users2,
} from 'lucide-vue-next'
import { Badge } from '@/lib/registry/new-york/ui/badge'
import { Button } from '@/lib/registry/new-york/ui/button'
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/lib/registry/new-york/ui/card'
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from '@/lib/registry/new-york/ui/dropdown-menu'
import { Input } from '@/lib/registry/new-york/ui/input'
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from '@/lib/registry/new-york/ui/breadcrumb'
import { Sheet, SheetContent, SheetTrigger } from '@/lib/registry/new-york/ui/sheet'
import {
Table,
TableBody,
TableCell,
TableHead,
TableHeader,
TableRow,
} from '@/lib/registry/new-york/ui/table'
import {
Tabs,
TabsContent,
TabsList,
TabsTrigger,
} from '@/lib/registry/new-york/ui/tabs'
import {
Tooltip,
TooltipContent,
TooltipTrigger,
} from '@/lib/registry/new-york/ui/tooltip'
</script>
<template>
<div class="flex min-h-screen w-full flex-col bg-muted/40">
<aside class="fixed inset-y-0 left-0 z-10 hidden w-14 flex-col border-r bg-background sm:flex">
<nav class="flex flex-col items-center gap-4 px-2 py-4">
<a
href="#"
class="group flex h-9 w-9 shrink-0 items-center justify-center gap-2 rounded-full bg-primary text-lg font-semibold text-primary-foreground md:h-8 md:w-8 md:text-base"
>
<Package2 class="h-4 w-4 transition-all group-hover:scale-110" />
<span class="sr-only">Acme Inc</span>
</a>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Home class="h-5 w-5" />
<span class="sr-only">Dashboard</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Dashboard
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg transition-colors hover:text-foreground md:h-8 md:w-8"
>
<ShoppingCart class="h-5 w-5" />
<span class="sr-only">Orders</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Orders
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg bg-accent text-accent-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Package class="h-5 w-5" />
<span class="sr-only">Products</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Products
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Users2 class="h-5 w-5" />
<span class="sr-only">Customers</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Customers
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<LineChart class="h-5 w-5" />
<span class="sr-only">Analytics</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Analytics
</TooltipContent>
</Tooltip>
</nav>
<nav class="mt-auto flex flex-col items-center gap-4 px-2 py-4">
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Settings class="h-5 w-5" />
<span class="sr-only">Settings</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Settings
</TooltipContent>
</Tooltip>
</nav>
</aside>
<div class="flex flex-col sm:gap-4 sm:py-4 sm:pl-14">
<header class="sticky top-0 z-30 flex h-14 items-center gap-4 border-b bg-background px-4 sm:static sm:h-auto sm:border-0 sm:bg-transparent sm:px-6">
<Sheet>
<SheetTrigger as-child>
<Button size="icon" variant="outline" class="sm:hidden">
<PanelLeft class="h-5 w-5" />
<span class="sr-only">Toggle Menu</span>
</Button>
</SheetTrigger>
<SheetContent side="left" class="sm:max-w-xs">
<nav class="grid gap-6 text-lg font-medium">
<a
href="#"
class="group flex h-10 w-10 shrink-0 items-center justify-center gap-2 rounded-full bg-primary text-lg font-semibold text-primary-foreground md:text-base"
>
<Package2 class="h-5 w-5 transition-all group-hover:scale-110" />
<span class="sr-only">Acme Inc</span>
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<Home class="h-5 w-5" />
Dashboard
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<ShoppingCart class="h-5 w-5" />
Orders
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-foreground"
>
<Package class="h-5 w-5" />
Products
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<Users2 class="h-5 w-5" />
Customers
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<LineChart class="h-5 w-5" />
Settings
</a>
</nav>
</SheetContent>
</Sheet>
<Breadcrumb class="hidden md:flex">
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink as-child>
<a href="#">Dashboard</a>
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink as-child>
<a href="#">Products</a>
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>All Products</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
<div class="relative ml-auto flex-1 md:grow-0">
<Search class="absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground" />
<Input
type="search"
placeholder="Search..."
class="w-full rounded-lg bg-background pl-8 md:w-[200px] lg:w-[320px]"
/>
</div>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button variant="secondary" size="icon" class="rounded-full">
<CircleUser class="h-5 w-5" />
<span class="sr-only">Toggle user menu</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>My Account</DropdownMenuLabel>
<DropdownMenuSeparator />
<DropdownMenuItem>Settings</DropdownMenuItem>
<DropdownMenuItem>Support</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem>Logout</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</header>
<main class="grid flex-1 items-start gap-4 p-4 sm:px-6 sm:py-0 md:gap-8">
<Tabs default-value="all">
<div class="flex items-center">
<TabsList>
<TabsTrigger value="all">
All
</TabsTrigger>
<TabsTrigger value="active">
Active
</TabsTrigger>
<TabsTrigger value="draft">
Draft
</TabsTrigger>
<TabsTrigger value="archived" class="hidden sm:flex">
Archived
</TabsTrigger>
</TabsList>
<div class="ml-auto flex items-center gap-2">
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button variant="outline" size="sm" class="h-7 gap-1">
<ListFilter class="h-3.5 w-3.5" />
<span class="sr-only sm:not-sr-only sm:whitespace-nowrap">
Filter
</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>Filter by</DropdownMenuLabel>
<DropdownMenuSeparator />
<DropdownMenuItem checked>
Active
</DropdownMenuItem>
<DropdownMenuItem>Draft</DropdownMenuItem>
<DropdownMenuItem>
Archived
</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
<Button size="sm" variant="outline" class="h-7 gap-1">
<File class="h-3.5 w-3.5" />
<span class="sr-only sm:not-sr-only sm:whitespace-nowrap">
Export
</span>
</Button>
<Button size="sm" class="h-7 gap-1">
<PlusCircle class="h-3.5 w-3.5" />
<span class="sr-only sm:not-sr-only sm:whitespace-nowrap">
Add Product
</span>
</Button>
</div>
</div>
<TabsContent value="all">
<Card>
<CardHeader>
<CardTitle>Products</CardTitle>
<CardDescription>
Manage your products and view their sales performance.
</CardDescription>
</CardHeader>
<CardContent>
<Table>
<TableHeader>
<TableRow>
<TableHead class="hidden w-[100px] sm:table-cell">
<span class="sr-only">img</span>
</TableHead>
<TableHead>Name</TableHead>
<TableHead>Status</TableHead>
<TableHead class="hidden md:table-cell">
Price
</TableHead>
<TableHead class="hidden md:table-cell">
Total Sales
</TableHead>
<TableHead class="hidden md:table-cell">
Created at
</TableHead>
<TableHead>
<span class="sr-only">Actions</span>
</TableHead>
</TableRow>
</TableHeader>
<TableBody>
<TableRow>
<TableCell class="hidden sm:table-cell">
<img
alt="Product image"
class="aspect-square rounded-md object-cover"
height="64"
src="/placeholder.svg"
width="64"
>
</TableCell>
<TableCell class="font-medium">
Laser Lemonade Machine
</TableCell>
<TableCell>
<Badge variant="outline">
Draft
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
$499.99
</TableCell>
<TableCell class="hidden md:table-cell">
25
</TableCell>
<TableCell class="hidden md:table-cell">
2023-07-12 10:42 AM
</TableCell>
<TableCell>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button
aria-haspopup="true"
size="icon"
variant="ghost"
>
<MoreHorizontal class="h-4 w-4" />
<span class="sr-only">Toggle menu</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>Actions</DropdownMenuLabel>
<DropdownMenuItem>Edit</DropdownMenuItem>
<DropdownMenuItem>Delete</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</TableCell>
</TableRow>
<TableRow>
<TableCell class="hidden sm:table-cell">
<img
alt="Product image"
class="aspect-square rounded-md object-cover"
height="64"
src="/placeholder.svg"
width="64"
>
</TableCell>
<TableCell class="font-medium">
Hypernova Headphones
</TableCell>
<TableCell>
<Badge variant="outline">
Active
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
$129.99
</TableCell>
<TableCell class="hidden md:table-cell">
100
</TableCell>
<TableCell class="hidden md:table-cell">
2023-10-18 03:21 PM
</TableCell>
<TableCell>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button
aria-haspopup="true"
size="icon"
variant="ghost"
>
<MoreHorizontal class="h-4 w-4" />
<span class="sr-only">Toggle menu</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>Actions</DropdownMenuLabel>
<DropdownMenuItem>Edit</DropdownMenuItem>
<DropdownMenuItem>Delete</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</TableCell>
</TableRow>
<TableRow>
<TableCell class="hidden sm:table-cell">
<img
alt="Product image"
class="aspect-square rounded-md object-cover"
height="64"
src="/placeholder.svg"
width="64"
>
</TableCell>
<TableCell class="font-medium">
AeroGlow Desk Lamp
</TableCell>
<TableCell>
<Badge variant="outline">
Active
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
$39.99
</TableCell>
<TableCell class="hidden md:table-cell">
50
</TableCell>
<TableCell class="hidden md:table-cell">
2023-11-29 08:15 AM
</TableCell>
<TableCell>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button
aria-haspopup="true"
size="icon"
variant="ghost"
>
<MoreHorizontal class="h-4 w-4" />
<span class="sr-only">Toggle menu</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>Actions</DropdownMenuLabel>
<DropdownMenuItem>Edit</DropdownMenuItem>
<DropdownMenuItem>Delete</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</TableCell>
</TableRow>
<TableRow>
<TableCell class="hidden sm:table-cell">
<img
alt="Product image"
class="aspect-square rounded-md object-cover"
height="64"
src="/placeholder.svg"
width="64"
>
</TableCell>
<TableCell class="font-medium">
TechTonic Energy Drink
</TableCell>
<TableCell>
<Badge variant="secondary">
Draft
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
$2.99
</TableCell>
<TableCell class="hidden md:table-cell">
0
</TableCell>
<TableCell class="hidden md:table-cell">
2023-12-25 11:59 PM
</TableCell>
<TableCell>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button
aria-haspopup="true"
size="icon"
variant="ghost"
>
<MoreHorizontal class="h-4 w-4" />
<span class="sr-only">Toggle menu</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>Actions</DropdownMenuLabel>
<DropdownMenuItem>Edit</DropdownMenuItem>
<DropdownMenuItem>Delete</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</TableCell>
</TableRow>
<TableRow>
<TableCell class="hidden sm:table-cell">
<img
alt="Product image"
class="aspect-square rounded-md object-cover"
height="64"
src="/placeholder.svg"
width="64"
>
</TableCell>
<TableCell class="font-medium">
Gamer Gear Pro Controller
</TableCell>
<TableCell>
<Badge variant="outline">
Active
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
$59.99
</TableCell>
<TableCell class="hidden md:table-cell">
75
</TableCell>
<TableCell class="hidden md:table-cell">
2024-01-01 12:00 AM
</TableCell>
<TableCell>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button
aria-haspopup="true"
size="icon"
variant="ghost"
>
<MoreHorizontal class="h-4 w-4" />
<span class="sr-only">Toggle menu</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>Actions</DropdownMenuLabel>
<DropdownMenuItem>Edit</DropdownMenuItem>
<DropdownMenuItem>Delete</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</TableCell>
</TableRow>
<TableRow>
<TableCell class="hidden sm:table-cell">
<img
alt="Product image"
class="aspect-square rounded-md object-cover"
height="64"
src="/placeholder.svg"
width="64"
>
</TableCell>
<TableCell class="font-medium">
Luminous VR Headset
</TableCell>
<TableCell>
<Badge variant="outline">
Active
</Badge>
</TableCell>
<TableCell class="hidden md:table-cell">
$199.99
</TableCell>
<TableCell class="hidden md:table-cell">
30
</TableCell>
<TableCell class="hidden md:table-cell">
2024-02-14 02:14 PM
</TableCell>
<TableCell>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button
aria-haspopup="true"
size="icon"
variant="ghost"
>
<MoreHorizontal class="h-4 w-4" />
<span class="sr-only">Toggle menu</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>Actions</DropdownMenuLabel>
<DropdownMenuItem>Edit</DropdownMenuItem>
<DropdownMenuItem>Delete</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</TableCell>
</TableRow>
</TableBody>
</Table>
</CardContent>
<CardFooter>
<div class="text-xs text-muted-foreground">
Showing <strong>1-10</strong> of <strong>32</strong>
products
</div>
</CardFooter>
</Card>
</TabsContent>
</Tabs>
</main>
</div>
</div>
</template>

View File

@ -0,0 +1,629 @@
<script lang="ts">
export const description = 'A product edit page. The product edit page has a form to edit the product details, stock, product category, product status, and product images. The product edit page has a sidebar navigation and a main content area. The main content area has a form to edit the product details, stock, product category, product status, and product images. The sidebar navigation has links to product details, stock, product category, product status, and product images.'
export const iframeHeight = '1200px'
export const containerClass = 'w-full h-full'
</script>
<script setup lang="ts">
import {
ChevronLeft,
CircleUser,
Home,
LineChart,
Package,
Package2,
PanelLeft,
PlusCircle,
Search,
Settings,
ShoppingCart,
Upload,
Users2,
} from 'lucide-vue-next'
import { Badge } from '@/lib/registry/new-york/ui/badge'
import { Button } from '@/lib/registry/new-york/ui/button'
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/lib/registry/new-york/ui/card'
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from '@/lib/registry/new-york/ui/dropdown-menu'
import { Input } from '@/lib/registry/new-york/ui/input'
import { Textarea } from '@/lib/registry/new-york/ui/textarea'
import { Label } from '@/lib/registry/new-york/ui/label'
import { ToggleGroup, ToggleGroupItem } from '@/lib/registry/new-york/ui/toggle-group'
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from '@/lib/registry/new-york/ui/breadcrumb'
import { Sheet, SheetContent, SheetTrigger } from '@/lib/registry/new-york/ui/sheet'
import {
Table,
TableBody,
TableCell,
TableHead,
TableHeader,
TableRow,
} from '@/lib/registry/new-york/ui/table'
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from '@/lib/registry/new-york/ui/select'
import {
Tooltip,
TooltipContent,
TooltipTrigger,
} from '@/lib/registry/new-york/ui/tooltip'
</script>
<template>
<div class="flex min-h-screen w-full flex-col bg-muted/40">
<aside class="fixed inset-y-0 left-0 z-10 hidden w-14 flex-col border-r bg-background sm:flex">
<nav class="flex flex-col items-center gap-4 px-2 sm:py-5">
<a
href="#"
class="group flex h-9 w-9 shrink-0 items-center justify-center gap-2 rounded-full bg-primary text-lg font-semibold text-primary-foreground md:h-8 md:w-8 md:text-base"
>
<Package2 class="h-4 w-4 transition-all group-hover:scale-110" />
<span class="sr-only">Acme Inc</span>
</a>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Home class="h-5 w-5" />
<span class="sr-only">Dashboard</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Dashboard
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg bg-accent text-accent-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<ShoppingCart class="h-5 w-5" />
<span class="sr-only">Orders</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Orders
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Package class="h-5 w-5" />
<span class="sr-only">Products</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Products
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Users2 class="h-5 w-5" />
<span class="sr-only">Customers</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Customers
</TooltipContent>
</Tooltip>
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<LineChart class="h-5 w-5" />
<span class="sr-only">Analytics</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Analytics
</TooltipContent>
</Tooltip>
</nav>
<nav class="mt-auto flex flex-col items-center gap-4 px-2 sm:py-5">
<Tooltip>
<TooltipTrigger as-child>
<a
href="#"
class="flex h-9 w-9 items-center justify-center rounded-lg text-muted-foreground transition-colors hover:text-foreground md:h-8 md:w-8"
>
<Settings class="h-5 w-5" />
<span class="sr-only">Settings</span>
</a>
</TooltipTrigger>
<TooltipContent side="right">
Settings
</TooltipContent>
</Tooltip>
</nav>
</aside>
<div class="flex flex-col sm:gap-4 sm:py-4 sm:pl-14">
<header class="sticky top-0 z-30 flex h-14 items-center gap-4 border-b bg-background px-4 sm:static sm:h-auto sm:border-0 sm:bg-transparent sm:px-6">
<Sheet>
<SheetTrigger as-child>
<Button size="icon" variant="outline" class="sm:hidden">
<PanelLeft class="h-5 w-5" />
<span class="sr-only">Toggle Menu</span>
</Button>
</SheetTrigger>
<SheetContent side="left" class="sm:max-w-xs">
<nav class="grid gap-6 text-lg font-medium">
<a
href="#"
class="group flex h-10 w-10 shrink-0 items-center justify-center gap-2 rounded-full bg-primary text-lg font-semibold text-primary-foreground md:text-base"
>
<Package2 class="h-5 w-5 transition-all group-hover:scale-110" />
<span class="sr-only">Acme Inc</span>
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<Home class="h-5 w-5" />
Dashboard
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<ShoppingCart class="h-5 w-5" />
Orders
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-foreground"
>
<Package class="h-5 w-5" />
Products
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<Users2 class="h-5 w-5" />
Customers
</a>
<a
href="#"
class="flex items-center gap-4 px-2.5 text-muted-foreground hover:text-foreground"
>
<LineChart class="h-5 w-5" />
Settings
</a>
</nav>
</SheetContent>
</Sheet>
<Breadcrumb class="hidden md:flex">
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink as-child>
<a href="#">Dashboard</a>
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink as-child>
<a href="#">Products</a>
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Edit Product</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
<div class="relative ml-auto flex-1 md:grow-0">
<Search class="absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground" />
<Input
type="search"
placeholder="Search..."
class="w-full rounded-lg bg-background pl-8 md:w-[200px] lg:w-[336px]"
/>
</div>
<DropdownMenu>
<DropdownMenuTrigger as-child>
<Button variant="secondary" size="icon" class="rounded-full">
<CircleUser class="h-5 w-5" />
<span class="sr-only">Toggle user menu</span>
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuLabel>My Account</DropdownMenuLabel>
<DropdownMenuSeparator />
<DropdownMenuItem>Settings</DropdownMenuItem>
<DropdownMenuItem>Support</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem>Logout</DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
</header>
<main class="grid flex-1 items-start gap-4 p-4 sm:px-6 sm:py-0 md:gap-8">
<div class="mx-auto grid max-w-[59rem] flex-1 auto-rows-max gap-4">
<div class="flex items-center gap-4">
<Button variant="outline" size="icon" class="h-7 w-7">
<ChevronLeft class="h-4 w-4" />
<span class="sr-only">Back</span>
</Button>
<h1 class="flex-1 shrink-0 whitespace-nowrap text-xl font-semibold tracking-tight sm:grow-0">
Pro Controller
</h1>
<Badge variant="outline" class="ml-auto sm:ml-0">
In stock
</Badge>
<div class="hidden items-center gap-2 md:ml-auto md:flex">
<Button variant="outline" size="sm">
Discard
</Button>
<Button size="sm">
Save Product
</Button>
</div>
</div>
<div class="grid gap-4 md:grid-cols-[1fr_250px] lg:grid-cols-3 lg:gap-8">
<div class="grid auto-rows-max items-start gap-4 lg:col-span-2 lg:gap-8">
<Card>
<CardHeader>
<CardTitle>Product Details</CardTitle>
<CardDescription>
Lipsum dolor sit amet, consectetur adipiscing elit
</CardDescription>
</CardHeader>
<CardContent>
<div class="grid gap-6">
<div class="grid gap-3">
<Label for="name">Name</Label>
<Input
id="name"
type="text"
class="w-full"
default-value="Gamer Gear Pro Controller"
/>
</div>
<div class="grid gap-3">
<Label for="description">Description</Label>
<Textarea
id="description"
default-value="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam auctor, nisl nec ultricies ultricies, nunc nisl ultricies nunc, nec ultricies nunc nisl nec nunc."
class="min-h-32"
/>
</div>
</div>
</CardContent>
</Card>
<Card>
<CardHeader>
<CardTitle>Stock</CardTitle>
<CardDescription>
Lipsum dolor sit amet, consectetur adipiscing elit
</CardDescription>
</CardHeader>
<CardContent>
<Table>
<TableHeader>
<TableRow>
<TableHead class="w-[100px]">
SKU
</TableHead>
<TableHead>Stock</TableHead>
<TableHead>Price</TableHead>
<TableHead class="w-[100px]">
Size
</TableHead>
</TableRow>
</TableHeader>
<TableBody>
<TableRow>
<TableCell class="font-semibold">
GGPC-001
</TableCell>
<TableCell>
<Label for="stock-1" class="sr-only">
Stock
</Label>
<Input
id="stock-1"
type="number"
default-value="100"
/>
</TableCell>
<TableCell>
<Label for="price-1" class="sr-only">
Price
</Label>
<Input
id="price-1"
type="number"
default-value="99.99"
/>
</TableCell>
<TableCell>
<ToggleGroup
type="single"
default-value="s"
variant="outline"
>
<ToggleGroupItem value="s">
S
</ToggleGroupItem>
<ToggleGroupItem value="m">
M
</ToggleGroupItem>
<ToggleGroupItem value="l">
L
</ToggleGroupItem>
</ToggleGroup>
</TableCell>
</TableRow>
<TableRow>
<TableCell class="font-semibold">
GGPC-002
</TableCell>
<TableCell>
<Label for="stock-2" class="sr-only">
Stock
</Label>
<Input
id="stock-2"
type="number"
default-value="143"
/>
</TableCell>
<TableCell>
<Label for="price-2" class="sr-only">
Price
</Label>
<Input
id="price-2"
type="number"
default-value="99.99"
/>
</TableCell>
<TableCell>
<ToggleGroup
type="single"
default-value="m"
variant="outline"
>
<ToggleGroupItem value="s">
S
</ToggleGroupItem>
<ToggleGroupItem value="m">
M
</ToggleGroupItem>
<ToggleGroupItem value="l">
L
</ToggleGroupItem>
</ToggleGroup>
</TableCell>
</TableRow>
<TableRow>
<TableCell class="font-semibold">
GGPC-003
</TableCell>
<TableCell>
<Label for="stock-3" class="sr-only">
Stock
</Label>
<Input
id="stock-3"
type="number"
default-value="32"
/>
</TableCell>
<TableCell>
<Label for="price-3" class="sr-only">
Stock
</Label>
<Input
id="price-3"
type="number"
default-value="99.99"
/>
</TableCell>
<TableCell>
<ToggleGroup
type="single"
default-value="s"
variant="outline"
>
<ToggleGroupItem value="s">
S
</ToggleGroupItem>
<ToggleGroupItem value="m">
M
</ToggleGroupItem>
<ToggleGroupItem value="l">
L
</ToggleGroupItem>
</ToggleGroup>
</TableCell>
</TableRow>
</TableBody>
</Table>
</CardContent>
<CardFooter class="justify-center border-t p-4">
<Button size="sm" variant="ghost" class="gap-1">
<PlusCircle class="h-3.5 w-3.5" />
Add Variant
</Button>
</CardFooter>
</Card>
<Card>
<CardHeader>
<CardTitle>Product Category</CardTitle>
</CardHeader>
<CardContent>
<div class="grid gap-6 sm:grid-cols-3">
<div class="grid gap-3">
<Label for="category">Category</Label>
<Select>
<SelectTrigger
id="category"
aria-label="Select category"
>
<SelectValue placeholder="Select category" />
</SelectTrigger>
<SelectContent>
<SelectItem value="clothing">
Clothing
</SelectItem>
<SelectItem value="electronics">
Electronics
</SelectItem>
<SelectItem value="accessories">
Accessories
</SelectItem>
</SelectContent>
</Select>
</div>
<div class="grid gap-3">
<Label for="subcategory">
Subcategory (optional)
</Label>
<Select>
<SelectTrigger
id="subcategory"
aria-label="Select subcategory"
>
<SelectValue placeholder="Select subcategory" />
</SelectTrigger>
<SelectContent>
<SelectItem value="t-shirts">
T-Shirts
</SelectItem>
<SelectItem value="hoodies">
Hoodies
</SelectItem>
<SelectItem value="sweatshirts">
Sweatshirts
</SelectItem>
</SelectContent>
</Select>
</div>
</div>
</CardContent>
</Card>
</div>
<div class="grid auto-rows-max items-start gap-4 lg:gap-8">
<Card>
<CardHeader>
<CardTitle>Product Status</CardTitle>
</CardHeader>
<CardContent>
<div class="grid gap-6">
<div class="grid gap-3">
<Label for="status">Status</Label>
<Select>
<SelectTrigger id="status" aria-label="Select status">
<SelectValue placeholder="Select status" />
</SelectTrigger>
<SelectContent>
<SelectItem value="draft">
Draft
</SelectItem>
<SelectItem value="published">
Active
</SelectItem>
<SelectItem value="archived">
Archived
</SelectItem>
</SelectContent>
</Select>
</div>
</div>
</CardContent>
</Card>
<Card class="overflow-hidden">
<CardHeader>
<CardTitle>Product imgs</CardTitle>
<CardDescription>
Lipsum dolor sit amet, consectetur adipiscing elit
</CardDescription>
</CardHeader>
<CardContent>
<div class="grid gap-2">
<img
alt="Product image"
class="aspect-square w-full rounded-md object-cover"
height="300"
src="/placeholder.svg"
width="300"
>
<div class="grid grid-cols-3 gap-2">
<button>
<img
alt="Product image"
class="aspect-square w-full rounded-md object-cover"
height="84"
src="/placeholder.svg"
width="84"
>
</button>
<button>
<img
alt="Product image"
class="aspect-square w-full rounded-md object-cover"
height="84"
src="/placeholder.svg"
width="84"
>
</button>
<button class="flex aspect-square w-full items-center justify-center rounded-md border border-dashed">
<Upload class="h-4 w-4 text-muted-foreground" />
<span class="sr-only">Upload</span>
</button>
</div>
</div>
</CardContent>
</Card>
<Card>
<CardHeader>
<CardTitle>Archive Product</CardTitle>
<CardDescription>
Lipsum dolor sit amet, consectetur adipiscing elit.
</CardDescription>
</CardHeader>
<CardContent>
<div />
<Button size="sm" variant="secondary">
Archive Product
</Button>
</CardContent>
</Card>
</div>
</div>
<div class="flex items-center justify-center gap-2 md:hidden">
<Button variant="outline" size="sm">
Discard
</Button>
<Button size="sm">
Save Product
</Button>
</div>
</div>
</main>
</div>
</div>
</template>

View File

@ -60,4 +60,4 @@
} }
], ],
"type": "components:ui" "type": "components:ui"
} }

View File

@ -62,7 +62,7 @@
"ora": "^8.0.1", "ora": "^8.0.1",
"pathe": "^1.1.2", "pathe": "^1.1.2",
"prompts": "^2.4.2", "prompts": "^2.4.2",
"radix-vue": "^1.5.3", "radix-vue": "^1.6.2",
"ts-morph": "^22.0.0", "ts-morph": "^22.0.0",
"tsconfig-paths": "^4.2.0", "tsconfig-paths": "^4.2.0",
"zod": "^3.22.4" "zod": "^3.22.4"

View File

@ -259,8 +259,8 @@ importers:
specifier: ^2.4.2 specifier: ^2.4.2
version: 2.4.2 version: 2.4.2
radix-vue: radix-vue:
specifier: ^1.5.3 specifier: ^1.6.2
version: 1.5.3(vue@3.4.21) version: 1.6.2(vue@3.4.21)
ts-morph: ts-morph:
specifier: ^22.0.0 specifier: ^22.0.0
version: 22.0.0 version: 22.0.0
@ -3123,6 +3123,7 @@ packages:
dependencies: dependencies:
is-glob: 4.0.3 is-glob: 4.0.3
micromatch: 4.0.5 micromatch: 4.0.5
napi-wasm: 1.1.0
dev: true dev: true
bundledDependencies: bundledDependencies:
- napi-wasm - napi-wasm
@ -10432,6 +10433,10 @@ packages:
hasBin: true hasBin: true
dev: false dev: false
/napi-wasm@1.1.0:
resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==}
dev: true
/natural-compare-lite@1.4.0: /natural-compare-lite@1.4.0:
resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
dev: true dev: true
@ -12207,17 +12212,23 @@ packages:
resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==}
dev: false dev: false
/radix-vue@1.5.3(vue@3.4.21): /radix-vue@1.6.2(vue@3.4.21):
resolution: {integrity: sha512-K1JF8P238jGKRwwlWe0LNCd80bamfWFnDhLNBAgoWvSRORRIsoo7DODnC4TLE62JE55tf/6ABSs5JIvp2BvYPA==} resolution: {integrity: sha512-uHyj8YaA+O2ZF1Ouxl2EJUzXXEFLzN/CtOE1HVFG3h60aFD7E9HNZ5RxODnXSD7j0vZLFS/dHU9Z2+Yjljj2Lg==}
peerDependencies:
vue: '>= 3.2.0'
dependencies: dependencies:
'@floating-ui/dom': 1.6.1 '@floating-ui/dom': 1.6.1
'@floating-ui/vue': 1.0.6(vue@3.4.21) '@floating-ui/vue': 1.0.6(vue@3.4.21)
'@internationalized/date': 3.5.2 '@internationalized/date': 3.5.2
'@vueuse/core': 10.9.0(vue@3.4.21)
'@vueuse/shared': 10.9.0(vue@3.4.21)
aria-hidden: 1.2.4
defu: 6.1.4
fast-deep-equal: 3.1.3 fast-deep-equal: 3.1.3
nanoid: 5.0.6 nanoid: 5.0.6
vue: 3.4.21(typescript@5.4.2)
transitivePeerDependencies: transitivePeerDependencies:
- '@vue/composition-api' - '@vue/composition-api'
- vue
dev: false dev: false
/radix-vue@1.6.1(vue@3.4.21): /radix-vue@1.6.1(vue@3.4.21):