@webdevarif/dashui 0.1.8 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +144 -1
- package/dist/index.d.ts +144 -1
- package/dist/index.js +1086 -131
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1078 -133
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -2
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/primitives/button.tsx","../src/lib/utils.ts","../src/components/primitives/badge.tsx","../src/components/primitives/card.tsx","../src/components/primitives/checkbox.tsx","../src/components/primitives/dialog.tsx","../src/components/primitives/dropdown-menu.tsx","../src/components/primitives/input.tsx","../src/components/primitives/label.tsx","../src/components/primitives/popover.tsx","../src/components/primitives/select.tsx","../src/components/primitives/separator.tsx","../src/components/primitives/skeleton.tsx","../src/components/primitives/switch.tsx","../src/components/primitives/tabs.tsx","../src/components/primitives/textarea.tsx","../src/components/primitives/tooltip.tsx","../src/components/layout/app-shell.tsx","../src/components/layout/sidebar.tsx","../src/components/layout/top-bar.tsx","../src/components/layout/page.tsx","../src/components/layout/page-section.tsx","../src/components/data/data-table.tsx","../src/components/data/empty-state.tsx","../src/components/data/pagination.tsx","../src/components/data/stats.tsx","../src/components/form/form-field.tsx","../src/components/form/form-layout.tsx","../src/components/form/form-section.tsx","../src/components/feedback/alert.tsx","../src/components/feedback/loading-spinner.tsx","../src/components/feedback/confirm-dialog.tsx","../src/hooks/index.ts","../src/components/auth/AuthShell.tsx","../src/components/auth/AuthCard.tsx","../src/components/auth/AuthLogo.tsx","../src/components/auth/AuthHeader.tsx","../src/components/auth/AuthField.tsx","../src/components/auth/AuthButton.tsx","../src/components/auth/AuthDivider.tsx","../src/components/auth/AuthFootnote.tsx","../src/components/Skeleton.tsx","../src/index.ts"],"sourcesContent":["import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-lg text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline: \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-lg px-3\",\n lg: \"h-11 rounded-lg px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n success:\n \"border-transparent bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-100\",\n warning:\n \"border-transparent bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-100\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n className\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","import * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n","import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogClose = DialogPrimitive.Close;\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","import * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName =\n DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName =\n DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n );\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n};\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n error?: boolean;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, error, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-lg border border-input bg-background px-3 py-2 text-sm ring-offset-background\",\n \"file:border-0 file:bg-transparent file:text-sm file:font-medium\",\n \"placeholder:text-muted-foreground\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n error && \"border-destructive focus-visible:ring-destructive\",\n className\n )}\n ref={ref}\n {...props}\n />\n );\n }\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","import * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cn } from \"../../lib/utils\";\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(\n \"block text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n className\n )}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","import * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cn } from \"../../lib/utils\";\n\nconst Popover = PopoverPrimitive.Root;\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","import * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Select = SelectPrimitive.Root;\nconst SelectGroup = SelectPrimitive.Group;\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-lg border border-input bg-background px-3 py-2 text-sm\",\n \"ring-offset-background placeholder:text-muted-foreground\",\n \"focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"[&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50 shrink-0\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n // explicit bg + border + shadow so it never relies on missing CSS vars\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden\",\n \"rounded-lg border border-border bg-white text-foreground shadow-lg\",\n \"dark:bg-zinc-900 dark:border-zinc-700\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-xs font-semibold text-muted-foreground\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center\",\n \"rounded-md py-2 pl-9 pr-3 text-sm outline-none\",\n \"focus:bg-accent focus:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n {/* Checkmark — left aligned */}\n <span className=\"absolute left-2.5 flex h-4 w-4 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-3.5 w-3.5 text-primary\" strokeWidth={2.5} />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select, SelectGroup, SelectValue, SelectTrigger,\n SelectContent, SelectLabel, SelectItem,\n SelectSeparator, SelectScrollUpButton, SelectScrollDownButton,\n};\n","import * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport { cn } from \"../../lib/utils\";\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n);\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n","import { cn } from \"../../lib/utils\";\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n","import * as React from \"react\";\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport { cn } from \"../../lib/utils\";\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n","import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cn } from \"../../lib/utils\";\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground\",\n className\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\n className\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n error?: boolean;\n}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, error, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n error && \"border-destructive focus-visible:ring-destructive\",\n className\n )}\n ref={ref}\n {...props}\n />\n );\n }\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"../../lib/utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\nconst Tooltip = TooltipPrimitive.Root;\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface AppShellProps {\n sidebar: React.ReactNode;\n children: React.ReactNode;\n collapsed?: boolean;\n}\n\nexport function AppShell({ sidebar, children, collapsed }: AppShellProps) {\n return (\n <div className=\"flex h-screen overflow-hidden bg-background\">\n <aside\n className={cn(\n \"hidden border-r bg-card transition-all duration-300 md:block\",\n collapsed\n ? \"w-[var(--sidebar-collapsed-width)]\"\n : \"w-[var(--sidebar-width)]\"\n )}\n >\n {sidebar}\n </aside>\n <main className=\"flex flex-1 flex-col overflow-hidden\">{children}</main>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { ChevronDown, ChevronsLeft, ChevronsRight } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface SidebarItem {\n label: string;\n href: string;\n icon?: React.ComponentType<{ className?: string }>;\n badge?: string | number;\n children?: SidebarItem[];\n active?: boolean;\n}\n\nexport interface SidebarProps {\n logo?: React.ReactNode;\n items: SidebarItem[];\n footer?: React.ReactNode;\n collapsed?: boolean;\n onCollapse?: (collapsed: boolean) => void;\n}\n\nfunction SidebarItemComponent({\n item,\n collapsed,\n depth = 0,\n}: {\n item: SidebarItem;\n collapsed?: boolean;\n depth?: number;\n}) {\n const [open, setOpen] = React.useState(\n item.active || item.children?.some((c) => c.active) || false\n );\n const Icon = item.icon;\n const hasChildren = item.children && item.children.length > 0;\n\n if (hasChildren) {\n return (\n <div>\n <button\n onClick={() => setOpen(!open)}\n className={cn(\n \"flex w-full items-center gap-3 rounded-md px-3 py-2 text-sm font-medium text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\",\n item.active && \"bg-accent text-accent-foreground\",\n depth > 0 && \"pl-9\"\n )}\n >\n {Icon && <Icon className=\"h-4 w-4 shrink-0\" />}\n {!collapsed && (\n <>\n <span className=\"flex-1 text-left\">{item.label}</span>\n <ChevronDown\n className={cn(\n \"h-4 w-4 shrink-0 transition-transform\",\n open && \"rotate-180\"\n )}\n />\n </>\n )}\n </button>\n {open && !collapsed && (\n <div className=\"mt-1 space-y-1\">\n {item.children!.map((child) => (\n <SidebarItemComponent\n key={child.href}\n item={child}\n collapsed={collapsed}\n depth={depth + 1}\n />\n ))}\n </div>\n )}\n </div>\n );\n }\n\n return (\n <a\n href={item.href}\n className={cn(\n \"flex items-center gap-3 rounded-md px-3 py-2 text-sm font-medium text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\",\n item.active && \"bg-accent text-accent-foreground\",\n depth > 0 && \"pl-9\"\n )}\n >\n {Icon && <Icon className=\"h-4 w-4 shrink-0\" />}\n {!collapsed && (\n <>\n <span className=\"flex-1\">{item.label}</span>\n {item.badge !== undefined && (\n <span className=\"ml-auto rounded-full bg-primary/10 px-2 py-0.5 text-xs font-medium text-primary\">\n {item.badge}\n </span>\n )}\n </>\n )}\n </a>\n );\n}\n\nexport function Sidebar({\n logo,\n items,\n footer,\n collapsed,\n onCollapse,\n}: SidebarProps) {\n return (\n <div className=\"flex h-full flex-col\">\n {logo && (\n <div className=\"flex h-14 items-center border-b px-4\">{logo}</div>\n )}\n <nav className=\"flex-1 space-y-1 overflow-y-auto p-3\">\n {items.map((item) => (\n <SidebarItemComponent\n key={item.href}\n item={item}\n collapsed={collapsed}\n />\n ))}\n </nav>\n <div className=\"border-t p-3\">\n {footer}\n {onCollapse && (\n <button\n onClick={() => onCollapse(!collapsed)}\n className=\"flex w-full items-center justify-center rounded-md p-2 text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\"\n >\n {collapsed ? (\n <ChevronsRight className=\"h-4 w-4\" />\n ) : (\n <ChevronsLeft className=\"h-4 w-4\" />\n )}\n </button>\n )}\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { Menu } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface TopBarProps {\n storeName?: string;\n user?: { name: string; email: string; avatar?: string };\n onMenuToggle?: () => void;\n actions?: React.ReactNode;\n className?: string;\n}\n\nexport function TopBar({\n storeName,\n user,\n onMenuToggle,\n actions,\n className,\n}: TopBarProps) {\n return (\n <header\n className={cn(\n \"flex h-14 items-center gap-4 border-b bg-card px-4 lg:px-6\",\n className\n )}\n >\n {onMenuToggle && (\n <button\n onClick={onMenuToggle}\n className=\"rounded-md p-2 text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground md:hidden\"\n >\n <Menu className=\"h-5 w-5\" />\n <span className=\"sr-only\">Toggle menu</span>\n </button>\n )}\n\n {storeName && (\n <div className=\"font-semibold text-foreground\">{storeName}</div>\n )}\n\n <div className=\"flex flex-1 items-center justify-end gap-4\">\n {actions}\n\n {user && (\n <div className=\"flex items-center gap-3\">\n <div className=\"hidden text-right text-sm md:block\">\n <div className=\"font-medium\">{user.name}</div>\n <div className=\"text-muted-foreground text-xs\">{user.email}</div>\n </div>\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-primary text-xs font-medium text-primary-foreground\">\n {user.avatar ? (\n <img\n src={user.avatar}\n alt={user.name}\n className=\"h-full w-full rounded-full object-cover\"\n />\n ) : (\n user.name\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n )}\n </div>\n </div>\n )}\n </div>\n </header>\n );\n}\n","import * as React from \"react\";\nimport { ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface Breadcrumb {\n label: string;\n href?: string;\n}\n\nexport interface PageProps {\n title: string;\n subtitle?: string;\n actions?: React.ReactNode;\n breadcrumbs?: Breadcrumb[];\n children: React.ReactNode;\n fullWidth?: boolean;\n}\n\nexport function Page({\n title,\n subtitle,\n actions,\n breadcrumbs,\n children,\n fullWidth,\n}: PageProps) {\n return (\n <div className=\"flex-1 overflow-y-auto\">\n <div\n className={cn(\n \"mx-auto space-y-6 p-6\",\n !fullWidth && \"max-w-6xl\"\n )}\n >\n {breadcrumbs && breadcrumbs.length > 0 && (\n <nav className=\"flex items-center space-x-1 text-sm text-muted-foreground\">\n {breadcrumbs.map((crumb, index) => (\n <React.Fragment key={index}>\n {index > 0 && <ChevronRight className=\"h-4 w-4\" />}\n {crumb.href ? (\n <a\n href={crumb.href}\n className=\"hover:text-foreground transition-colors\"\n >\n {crumb.label}\n </a>\n ) : (\n <span className=\"text-foreground\">{crumb.label}</span>\n )}\n </React.Fragment>\n ))}\n </nav>\n )}\n\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-bold tracking-tight\">{title}</h1>\n {subtitle && (\n <p className=\"text-muted-foreground mt-1\">{subtitle}</p>\n )}\n </div>\n {actions && <div className=\"flex items-center gap-2\">{actions}</div>}\n </div>\n\n {children}\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface PageSectionProps {\n title?: string;\n description?: string;\n children: React.ReactNode;\n actions?: React.ReactNode;\n className?: string;\n}\n\nexport function PageSection({\n title,\n description,\n children,\n actions,\n className,\n}: PageSectionProps) {\n return (\n <div\n className={cn(\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n className\n )}\n >\n {(title || description || actions) && (\n <div className=\"flex items-start justify-between border-b p-6\">\n <div>\n {title && <h2 className=\"text-lg font-semibold\">{title}</h2>}\n {description && (\n <p className=\"mt-1 text-sm text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n {actions && <div className=\"flex items-center gap-2\">{actions}</div>}\n </div>\n )}\n <div className=\"p-6\">{children}</div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Checkbox } from \"../primitives/checkbox\";\nimport { Skeleton } from \"../primitives/skeleton\";\n\nexport interface Column<T> {\n key: keyof T | string;\n header: string;\n cell?: (row: T) => React.ReactNode;\n sortable?: boolean;\n width?: string;\n}\n\nexport interface DataTableProps<T> {\n columns: Column<T>[];\n data: T[];\n loading?: boolean;\n pagination?: {\n page: number;\n pageSize: number;\n total: number;\n onPageChange: (page: number) => void;\n onPageSizeChange?: (size: number) => void;\n };\n selection?: {\n selected: string[];\n onSelect: (ids: string[]) => void;\n idKey?: keyof T;\n };\n onRowClick?: (row: T) => void;\n emptyState?: React.ReactNode;\n actions?: React.ReactNode;\n}\n\nexport function DataTable<T extends Record<string, unknown>>({\n columns,\n data,\n loading,\n pagination,\n selection,\n onRowClick,\n emptyState,\n actions,\n}: DataTableProps<T>) {\n const idKey = (selection?.idKey ?? \"id\") as string;\n\n const allSelected =\n selection && data.length > 0 && data.every((row) => selection.selected.includes(String(row[idKey])));\n\n const someSelected =\n selection && data.some((row) => selection.selected.includes(String(row[idKey]))) && !allSelected;\n\n function toggleAll() {\n if (!selection) return;\n if (allSelected) {\n selection.onSelect([]);\n } else {\n selection.onSelect(data.map((row) => String(row[idKey])));\n }\n }\n\n function toggleRow(row: T) {\n if (!selection) return;\n const id = String(row[idKey]);\n if (selection.selected.includes(id)) {\n selection.onSelect(selection.selected.filter((s) => s !== id));\n } else {\n selection.onSelect([...selection.selected, id]);\n }\n }\n\n const totalPages = pagination\n ? Math.ceil(pagination.total / pagination.pageSize)\n : 1;\n\n return (\n <div className=\"space-y-4\">\n {selection && selection.selected.length > 0 && actions && (\n <div className=\"flex items-center gap-2 rounded-md border bg-muted/50 p-2\">\n <span className=\"text-sm text-muted-foreground\">\n {selection.selected.length} selected\n </span>\n {actions}\n </div>\n )}\n\n <div className=\"rounded-md border\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b bg-muted/50\">\n {selection && (\n <th className=\"w-12 px-4 py-3\">\n <Checkbox\n checked={allSelected}\n ref={(el) => {\n if (el) {\n (el as unknown as HTMLInputElement).indeterminate =\n someSelected ?? false;\n }\n }}\n onCheckedChange={toggleAll}\n />\n </th>\n )}\n {columns.map((col) => (\n <th\n key={String(col.key)}\n className=\"px-4 py-3 text-left font-medium text-muted-foreground\"\n style={col.width ? { width: col.width } : undefined}\n >\n {col.header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {loading\n ? Array.from({ length: 5 }).map((_, i) => (\n <tr key={i} className=\"border-b\">\n {selection && (\n <td className=\"px-4 py-3\">\n <Skeleton className=\"h-4 w-4\" />\n </td>\n )}\n {columns.map((col) => (\n <td key={String(col.key)} className=\"px-4 py-3\">\n <Skeleton className=\"h-4 w-24\" />\n </td>\n ))}\n </tr>\n ))\n : data.length === 0\n ? (\n <tr>\n <td\n colSpan={columns.length + (selection ? 1 : 0)}\n className=\"py-12 text-center\"\n >\n {emptyState || (\n <p className=\"text-muted-foreground\">No data found</p>\n )}\n </td>\n </tr>\n )\n : data.map((row, idx) => {\n const rowId = String(row[idKey] ?? idx);\n const isSelected = selection?.selected.includes(rowId);\n return (\n <tr\n key={rowId}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50\",\n isSelected && \"bg-muted/50\",\n onRowClick && \"cursor-pointer\"\n )}\n onClick={() => onRowClick?.(row)}\n >\n {selection && (\n <td\n className=\"px-4 py-3\"\n onClick={(e) => e.stopPropagation()}\n >\n <Checkbox\n checked={isSelected}\n onCheckedChange={() => toggleRow(row)}\n />\n </td>\n )}\n {columns.map((col) => (\n <td key={String(col.key)} className=\"px-4 py-3\">\n {col.cell\n ? col.cell(row)\n : String(row[col.key as keyof T] ?? \"\")}\n </td>\n ))}\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n </div>\n\n {pagination && totalPages > 1 && (\n <div className=\"flex items-center justify-between px-2\">\n <div className=\"text-sm text-muted-foreground\">\n Page {pagination.page} of {totalPages} ({pagination.total} total)\n </div>\n <div className=\"flex items-center gap-2\">\n <button\n className=\"rounded-md border px-3 py-1.5 text-sm disabled:opacity-50\"\n disabled={pagination.page <= 1}\n onClick={() => pagination.onPageChange(pagination.page - 1)}\n >\n Previous\n </button>\n <button\n className=\"rounded-md border px-3 py-1.5 text-sm disabled:opacity-50\"\n disabled={pagination.page >= totalPages}\n onClick={() => pagination.onPageChange(pagination.page + 1)}\n >\n Next\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface EmptyStateProps {\n icon?: React.ComponentType<{ className?: string }>;\n title: string;\n description?: string;\n action?: React.ReactNode;\n className?: string;\n}\n\nexport function EmptyState({\n icon: Icon,\n title,\n description,\n action,\n className,\n}: EmptyStateProps) {\n return (\n <div\n className={cn(\n \"flex flex-col items-center justify-center py-12 text-center\",\n className\n )}\n >\n {Icon && (\n <div className=\"mb-4 rounded-full bg-muted p-3\">\n <Icon className=\"h-6 w-6 text-muted-foreground\" />\n </div>\n )}\n <h3 className=\"text-lg font-semibold\">{title}</h3>\n {description && (\n <p className=\"mt-1 max-w-sm text-sm text-muted-foreground\">\n {description}\n </p>\n )}\n {action && <div className=\"mt-4\">{action}</div>}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface PaginationProps {\n page: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n className?: string;\n}\n\nexport function Pagination({\n page,\n totalPages,\n onPageChange,\n className,\n}: PaginationProps) {\n const pages = React.useMemo(() => {\n const items: (number | \"ellipsis\")[] = [];\n if (totalPages <= 7) {\n for (let i = 1; i <= totalPages; i++) items.push(i);\n } else {\n items.push(1);\n if (page > 3) items.push(\"ellipsis\");\n const start = Math.max(2, page - 1);\n const end = Math.min(totalPages - 1, page + 1);\n for (let i = start; i <= end; i++) items.push(i);\n if (page < totalPages - 2) items.push(\"ellipsis\");\n items.push(totalPages);\n }\n return items;\n }, [page, totalPages]);\n\n if (totalPages <= 1) return null;\n\n return (\n <nav className={cn(\"flex items-center gap-1\", className)}>\n <button\n className=\"inline-flex h-9 w-9 items-center justify-center rounded-md border text-sm disabled:opacity-50\"\n disabled={page <= 1}\n onClick={() => onPageChange(page - 1)}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </button>\n {pages.map((p, i) =>\n p === \"ellipsis\" ? (\n <span key={`e-${i}`} className=\"px-2 text-muted-foreground\">\n ...\n </span>\n ) : (\n <button\n key={p}\n className={cn(\n \"inline-flex h-9 w-9 items-center justify-center rounded-md border text-sm\",\n p === page && \"bg-primary text-primary-foreground\"\n )}\n onClick={() => onPageChange(p)}\n >\n {p}\n </button>\n )\n )}\n <button\n className=\"inline-flex h-9 w-9 items-center justify-center rounded-md border text-sm disabled:opacity-50\"\n disabled={page >= totalPages}\n onClick={() => onPageChange(page + 1)}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </button>\n </nav>\n );\n}\n","import * as React from \"react\";\nimport { ArrowDown, ArrowUp } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface Stat {\n label: string;\n value: string | number;\n change?: { value: number; type: \"increase\" | \"decrease\" };\n icon?: React.ComponentType<{ className?: string }>;\n}\n\nexport interface StatsProps {\n stats: Stat[];\n columns?: 2 | 3 | 4;\n className?: string;\n}\n\nexport function Stats({ stats, columns = 4, className }: StatsProps) {\n return (\n <div\n className={cn(\n \"grid gap-4\",\n columns === 2 && \"grid-cols-1 sm:grid-cols-2\",\n columns === 3 && \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3\",\n columns === 4 && \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4\",\n className\n )}\n >\n {stats.map((stat, index) => {\n const Icon = stat.icon;\n return (\n <div\n key={index}\n className=\"rounded-lg border bg-card p-6 text-card-foreground shadow-sm\"\n >\n <div className=\"flex items-center justify-between\">\n <p className=\"text-sm font-medium text-muted-foreground\">\n {stat.label}\n </p>\n {Icon && <Icon className=\"h-4 w-4 text-muted-foreground\" />}\n </div>\n <div className=\"mt-2 flex items-baseline gap-2\">\n <p className=\"text-2xl font-bold\">{stat.value}</p>\n {stat.change && (\n <span\n className={cn(\n \"inline-flex items-center text-xs font-medium\",\n stat.change.type === \"increase\"\n ? \"text-green-600 dark:text-green-400\"\n : \"text-red-600 dark:text-red-400\"\n )}\n >\n {stat.change.type === \"increase\" ? (\n <ArrowUp className=\"mr-0.5 h-3 w-3\" />\n ) : (\n <ArrowDown className=\"mr-0.5 h-3 w-3\" />\n )}\n {stat.change.value}%\n </span>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Label } from \"../primitives/label\";\n\nexport interface FormFieldProps {\n label: string;\n error?: string;\n hint?: string;\n required?: boolean;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function FormField({\n label,\n error,\n hint,\n required,\n children,\n className,\n}: FormFieldProps) {\n return (\n <div className={cn(\"space-y-2\", className)}>\n <Label>\n {label}\n {required && <span className=\"ml-1 text-destructive\">*</span>}\n </Label>\n {children}\n {hint && !error && (\n <p className=\"text-sm text-muted-foreground\">{hint}</p>\n )}\n {error && <p className=\"text-sm text-destructive\">{error}</p>}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface FormLayoutProps {\n title?: string;\n description?: string;\n children: React.ReactNode;\n actions?: React.ReactNode;\n className?: string;\n}\n\nexport function FormLayout({\n title,\n description,\n children,\n actions,\n className,\n}: FormLayoutProps) {\n return (\n <div\n className={cn(\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n className\n )}\n >\n {(title || description) && (\n <div className=\"border-b p-6\">\n {title && <h3 className=\"text-lg font-semibold\">{title}</h3>}\n {description && (\n <p className=\"mt-1 text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n )}\n <div className=\"space-y-6 p-6\">{children}</div>\n {actions && (\n <div className=\"flex items-center justify-end gap-2 border-t px-6 py-4\">\n {actions}\n </div>\n )}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface FormSectionProps {\n title: string;\n description?: string;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function FormSection({\n title,\n description,\n children,\n className,\n}: FormSectionProps) {\n return (\n <div className={cn(\"space-y-4\", className)}>\n <div>\n <h4 className=\"text-sm font-medium\">{title}</h4>\n {description && (\n <p className=\"mt-1 text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n <div className=\"space-y-4\">{children}</div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { AlertCircle, CheckCircle2, Info, AlertTriangle, X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface AlertProps {\n variant?: \"info\" | \"success\" | \"warning\" | \"error\";\n title?: string;\n children: React.ReactNode;\n dismissible?: boolean;\n onDismiss?: () => void;\n className?: string;\n}\n\nconst variantConfig = {\n info: {\n icon: Info,\n classes: \"border-blue-200 bg-blue-50 text-blue-900 dark:border-blue-800 dark:bg-blue-950 dark:text-blue-100\",\n },\n success: {\n icon: CheckCircle2,\n classes: \"border-green-200 bg-green-50 text-green-900 dark:border-green-800 dark:bg-green-950 dark:text-green-100\",\n },\n warning: {\n icon: AlertTriangle,\n classes: \"border-yellow-200 bg-yellow-50 text-yellow-900 dark:border-yellow-800 dark:bg-yellow-950 dark:text-yellow-100\",\n },\n error: {\n icon: AlertCircle,\n classes: \"border-red-200 bg-red-50 text-red-900 dark:border-red-800 dark:bg-red-950 dark:text-red-100\",\n },\n};\n\nexport function Alert({\n variant = \"info\",\n title,\n children,\n dismissible,\n onDismiss,\n className,\n}: AlertProps) {\n const config = variantConfig[variant];\n const Icon = config.icon;\n\n return (\n <div\n className={cn(\n \"relative flex gap-3 rounded-lg border p-4\",\n config.classes,\n className\n )}\n role=\"alert\"\n >\n <Icon className=\"mt-0.5 h-5 w-5 shrink-0\" />\n <div className=\"flex-1\">\n {title && <p className=\"font-medium\">{title}</p>}\n <div className={cn(\"text-sm\", title && \"mt-1\")}>{children}</div>\n </div>\n {dismissible && (\n <button\n onClick={onDismiss}\n className=\"absolute right-3 top-3 rounded-md p-1 opacity-70 hover:opacity-100\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { Loader2 } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface LoadingSpinnerProps {\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n}\n\nconst sizeMap = {\n sm: \"h-4 w-4\",\n md: \"h-6 w-6\",\n lg: \"h-8 w-8\",\n};\n\nexport function LoadingSpinner({ size = \"md\", className }: LoadingSpinnerProps) {\n return (\n <Loader2\n className={cn(\"animate-spin text-muted-foreground\", sizeMap[size], className)}\n />\n );\n}\n","import * as React from \"react\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"../primitives/dialog\";\nimport { Button } from \"../primitives/button\";\nimport { LoadingSpinner } from \"./loading-spinner\";\n\nexport interface ConfirmDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title: string;\n description?: string;\n confirmLabel?: string;\n cancelLabel?: string;\n onConfirm: () => void;\n loading?: boolean;\n variant?: \"default\" | \"destructive\";\n}\n\nexport function ConfirmDialog({\n open,\n onOpenChange,\n title,\n description,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n onConfirm,\n loading,\n variant = \"default\",\n}: ConfirmDialogProps) {\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n {description && (\n <DialogDescription>{description}</DialogDescription>\n )}\n </DialogHeader>\n <DialogFooter>\n <Button\n variant=\"outline\"\n onClick={() => onOpenChange(false)}\n disabled={loading}\n >\n {cancelLabel}\n </Button>\n <Button\n variant={variant === \"destructive\" ? \"destructive\" : \"default\"}\n onClick={onConfirm}\n disabled={loading}\n >\n {loading && <LoadingSpinner size=\"sm\" className=\"mr-2\" />}\n {confirmLabel}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n","import { useState } from \"react\";\n\nexport function useDisclosure(initial = false) {\n const [isOpen, setIsOpen] = useState(initial);\n return {\n isOpen,\n open: () => setIsOpen(true),\n close: () => setIsOpen(false),\n toggle: () => setIsOpen((prev) => !prev),\n onOpenChange: setIsOpen,\n };\n}\n\nexport function usePagination(total: number, pageSize = 20) {\n const [page, setPage] = useState(1);\n const totalPages = Math.ceil(total / pageSize);\n return { page, setPage, pageSize, total, totalPages };\n}\n","'use client'\n\nimport * as React from 'react'\n\ninterface AuthShellProps {\n children: React.ReactNode\n /** Optional background pattern — 'dots' | 'grid' | 'none' */\n pattern?: 'dots' | 'grid' | 'none'\n maxWidth?: string\n}\n\nexport function AuthShell({ children, pattern = 'dots', maxWidth = '520px' }: AuthShellProps) {\n return (\n <div\n style={{\n minHeight: '100vh',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '24px',\n background: 'var(--background)',\n position: 'relative',\n overflow: 'hidden',\n }}\n >\n {pattern === 'dots' && (\n <div\n aria-hidden\n style={{\n position: 'absolute',\n inset: 0,\n backgroundImage:\n 'radial-gradient(circle, var(--border) 1px, transparent 1px)',\n backgroundSize: '28px 28px',\n opacity: 0.5,\n pointerEvents: 'none',\n }}\n />\n )}\n {pattern === 'grid' && (\n <div\n aria-hidden\n style={{\n position: 'absolute',\n inset: 0,\n backgroundImage:\n 'linear-gradient(var(--border) 1px, transparent 1px), linear-gradient(90deg, var(--border) 1px, transparent 1px)',\n backgroundSize: '32px 32px',\n opacity: 0.4,\n pointerEvents: 'none',\n }}\n />\n )}\n <div style={{ position: 'relative', zIndex: 1, width: '100%', maxWidth }}>\n {children}\n </div>\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\ninterface AuthCardProps {\n children: React.ReactNode\n padding?: string\n}\n\nexport function AuthCard({ children, padding = '24px 28px' }: AuthCardProps) {\n return (\n <div\n style={{\n background: 'var(--card)',\n border: '1px solid var(--border)',\n borderRadius: 'calc(var(--radius, 0.5rem) * 1.5)',\n boxShadow: '0 4px 32px rgba(0,0,0,0.06), 0 1px 4px rgba(0,0,0,0.04)',\n padding,\n width: '100%',\n }}\n >\n {children}\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\ninterface AuthLogoProps {\n /** App name shown next to the logo mark */\n appName?: string\n /** Single letter shown inside the logo box (fallback when no imageUrl) */\n letter?: string\n /** Image URL — when provided, shows image instead of letter box */\n imageUrl?: string\n /** Image/logo size in px */\n size?: number\n}\n\nexport function AuthLogo({ appName = 'Builify CMS', letter = 'B', imageUrl, size = 36 }: AuthLogoProps) {\n return (\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', gap: '10px', marginBottom: '28px' }}>\n {imageUrl ? (\n <img\n src={imageUrl}\n alt={appName}\n width={size}\n height={size}\n style={{ borderRadius: 'calc(var(--radius, 0.5rem) * 1.2)', flexShrink: 0, display: 'block' }}\n />\n ) : (\n <div\n style={{\n width: size,\n height: size,\n background: 'var(--primary)',\n borderRadius: 'calc(var(--radius, 0.5rem) * 1.2)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: 'var(--primary-foreground)',\n fontWeight: 800,\n fontSize: `${size * 0.44}px`,\n flexShrink: 0,\n }}\n >\n {letter}\n </div>\n )}\n <span\n style={{\n fontWeight: 700,\n fontSize: '1.125rem',\n color: 'var(--foreground)',\n letterSpacing: '-0.02em',\n }}\n >\n {appName}\n </span>\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\ninterface AuthHeaderProps {\n title: string\n description?: string\n}\n\nexport function AuthHeader({ title, description }: AuthHeaderProps) {\n return (\n <div style={{ marginBottom: '24px', textAlign: 'center' }}>\n <h1\n style={{\n fontSize: '1.375rem',\n fontWeight: 700,\n color: 'var(--foreground)',\n margin: 0,\n letterSpacing: '-0.02em',\n }}\n >\n {title}\n </h1>\n {description && (\n <p\n style={{\n marginTop: '6px',\n fontSize: '0.875rem',\n color: 'var(--muted-foreground)',\n lineHeight: 1.5,\n }}\n >\n {description}\n </p>\n )}\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\ninterface AuthFieldProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label: string\n error?: string\n hint?: string\n rightLabel?: React.ReactNode\n}\n\nexport function AuthField({ label, error, hint, rightLabel, id, ...props }: AuthFieldProps) {\n const fieldId = id ?? label.toLowerCase().replace(/\\s+/g, '-')\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: '6px' }}>\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>\n <label\n htmlFor={fieldId}\n style={{\n fontSize: '0.8125rem',\n fontWeight: 500,\n color: 'var(--foreground)',\n }}\n >\n {label}\n </label>\n {rightLabel && (\n <span style={{ fontSize: '0.8125rem' }}>{rightLabel}</span>\n )}\n </div>\n <input\n id={fieldId}\n style={{\n height: '40px',\n padding: '0 12px',\n background: 'var(--background)',\n border: `1px solid ${error ? 'var(--destructive)' : 'var(--border)'}`,\n borderRadius: 'var(--radius, 0.5rem)',\n color: 'var(--foreground)',\n fontSize: '0.875rem',\n outline: 'none',\n width: '100%',\n boxSizing: 'border-box',\n transition: 'border-color 0.15s, box-shadow 0.15s',\n }}\n onFocus={(e) => {\n e.currentTarget.style.borderColor = 'var(--ring)'\n e.currentTarget.style.boxShadow = '0 0 0 3px color-mix(in oklab, var(--ring) 20%, transparent)'\n props.onFocus?.(e)\n }}\n onBlur={(e) => {\n e.currentTarget.style.borderColor = error ? 'var(--destructive)' : 'var(--border)'\n e.currentTarget.style.boxShadow = 'none'\n props.onBlur?.(e)\n }}\n {...props}\n />\n {error && (\n <p style={{ fontSize: '0.8rem', color: 'var(--destructive)', margin: 0 }}>{error}</p>\n )}\n {hint && !error && (\n <p style={{ fontSize: '0.8rem', color: 'var(--muted-foreground)', margin: 0 }}>{hint}</p>\n )}\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\ninterface AuthButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n loading?: boolean\n variant?: 'primary' | 'outline' | 'ghost'\n fullWidth?: boolean\n}\n\nexport function AuthButton({\n loading,\n variant = 'primary',\n fullWidth = true,\n children,\n disabled,\n style,\n ...props\n}: AuthButtonProps) {\n const base: React.CSSProperties = {\n height: '42px',\n padding: '0 20px',\n borderRadius: 'var(--radius, 0.5rem)',\n fontSize: '0.875rem',\n fontWeight: 600,\n cursor: loading || disabled ? 'not-allowed' : 'pointer',\n opacity: loading || disabled ? 0.65 : 1,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '8px',\n border: 'none',\n outline: 'none',\n transition: 'opacity 0.15s, filter 0.15s',\n width: fullWidth ? '100%' : 'auto',\n ...style,\n }\n\n const variantStyles: Record<string, React.CSSProperties> = {\n primary: {\n background: 'var(--primary)',\n color: 'var(--primary-foreground)',\n },\n outline: {\n background: 'transparent',\n color: 'var(--foreground)',\n border: '1px solid var(--border)',\n },\n ghost: {\n background: 'transparent',\n color: 'var(--foreground)',\n },\n }\n\n return (\n <button\n disabled={loading || disabled}\n style={{ ...base, ...variantStyles[variant] }}\n onMouseEnter={(e) => {\n if (!loading && !disabled) e.currentTarget.style.filter = 'brightness(0.9)'\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.filter = 'none'\n }}\n {...props}\n >\n {loading ? (\n <>\n <span\n style={{\n width: 14,\n height: 14,\n border: '2px solid currentColor',\n borderTopColor: 'transparent',\n borderRadius: '50%',\n display: 'inline-block',\n animation: 'dashui-spin 0.7s linear infinite',\n }}\n />\n {children}\n </>\n ) : children}\n </button>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\nexport function AuthDivider({ label = 'or' }: { label?: string }) {\n return (\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px', margin: '20px 0' }}>\n <div style={{ flex: 1, height: 1, background: 'var(--border)' }} />\n <span style={{ fontSize: '0.75rem', color: 'var(--muted-foreground)', userSelect: 'none' }}>\n {label}\n </span>\n <div style={{ flex: 1, height: 1, background: 'var(--border)' }} />\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\ninterface AuthFootnoteProps {\n text: string\n linkText: string\n linkHref: string\n}\n\nexport function AuthFootnote({ text, linkText, linkHref }: AuthFootnoteProps) {\n return (\n <p style={{\n textAlign: 'center',\n marginTop: '20px',\n fontSize: '0.8125rem',\n color: 'var(--muted-foreground)',\n }}>\n {text}{' '}\n <a\n href={linkHref}\n style={{\n color: 'var(--primary)',\n fontWeight: 600,\n textDecoration: 'none',\n }}\n onMouseEnter={(e) => e.currentTarget.style.textDecoration = 'underline'}\n onMouseLeave={(e) => e.currentTarget.style.textDecoration = 'none'}\n >\n {linkText}\n </a>\n </p>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\ninterface SkeletonProps {\n width?: string | number\n height?: string | number\n rounded?: string\n className?: string\n style?: React.CSSProperties\n}\n\nexport function Skeleton({ width = '100%', height = 16, rounded, style }: SkeletonProps) {\n return (\n <div\n style={{\n width,\n height,\n background: 'var(--muted, #e5e7eb)',\n borderRadius: rounded ?? 'var(--radius, 0.5rem)',\n overflow: 'hidden',\n position: 'relative',\n flexShrink: 0,\n ...style,\n }}\n >\n <div\n style={{\n position: 'absolute',\n inset: 0,\n background:\n 'linear-gradient(90deg, transparent 0%, color-mix(in oklab, var(--background, #fff) 40%, transparent) 50%, transparent 100%)',\n animation: 'dashui-shimmer 1.6s ease-in-out infinite',\n }}\n />\n </div>\n )\n}\n","// ─── Primitives ──────────────────────────────────────────────\nexport * from './components/primitives/button'\nexport * from './components/primitives/badge'\nexport * from './components/primitives/card'\nexport * from './components/primitives/checkbox'\nexport * from './components/primitives/dialog'\nexport * from './components/primitives/dropdown-menu'\nexport * from './components/primitives/input'\nexport * from './components/primitives/label'\nexport * from './components/primitives/popover'\nexport * from './components/primitives/select'\nexport * from './components/primitives/separator'\nexport * from './components/primitives/skeleton'\nexport * from './components/primitives/switch'\nexport * from './components/primitives/tabs'\nexport * from './components/primitives/textarea'\nexport * from './components/primitives/tooltip'\n\n// ─── Layout ──────────────────────────────────────────────────\nexport * from './components/layout/app-shell'\nexport * from './components/layout/sidebar'\nexport * from './components/layout/top-bar'\nexport * from './components/layout/page'\nexport * from './components/layout/page-section'\n\n// ─── Data Display ─────────────────────────────────────────────\nexport * from './components/data/data-table'\nexport * from './components/data/empty-state'\nexport * from './components/data/pagination'\nexport * from './components/data/stats'\n\n// ─── Form ─────────────────────────────────────────────────────\nexport * from './components/form/form-field'\nexport * from './components/form/form-layout'\nexport * from './components/form/form-section'\n\n// ─── Feedback ─────────────────────────────────────────────────\nexport * from './components/feedback/alert'\nexport * from './components/feedback/confirm-dialog'\nexport * from './components/feedback/loading-spinner'\n\n// ─── CMS-specific (coming soon) ───────────────────────────────\n// export * from './components/cms/resource-list'\n// export * from './components/cms/index-table'\n// export * from './components/cms/contextual-save-bar'\n// export * from './components/cms/color-scheme-picker'\n// export * from './components/cms/page-actions'\n\n// ─── Hooks ────────────────────────────────────────────────────\nexport * from './hooks'\n\n// ─── Utils ────────────────────────────────────────────────────\nexport * from './lib/utils'\n\n// ─── Auth Components ──────────────────────────────────────────\nexport * from './components/auth'\n\n// ─── Skeleton ─────────────────────────────────────────────────\nexport { Skeleton } from './components/Skeleton'\n\n// ─── Theme (next-themes re-export) ────────────────────────────\nexport { ThemeProvider, useTheme } from 'next-themes'\n"],"mappings":"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","names":["cva","jsx","cva","React","jsx","React","jsx","React","jsx","React","Check","jsx","jsxs","Check","React","jsx","React","jsx","Label","React","jsx","React","Check","jsx","jsxs","Check","React","jsx","Separator","jsx","React","jsx","React","jsx","React","jsx","React","jsx","jsx","jsxs","React","ChevronDown","jsx","jsxs","Icon","ChevronDown","jsx","jsxs","React","ChevronRight","jsx","jsxs","ChevronRight","jsx","jsxs","jsx","jsxs","jsx","jsxs","Icon","React","ChevronRight","jsx","jsxs","ChevronRight","jsx","jsxs","Icon","jsx","jsxs","Label","jsx","jsxs","jsx","jsxs","X","jsx","jsxs","Icon","X","jsx","jsx","jsxs","useState","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","Fragment","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","Skeleton"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/primitives/button.tsx","../src/lib/utils.ts","../src/components/primitives/badge.tsx","../src/components/primitives/card.tsx","../src/components/primitives/checkbox.tsx","../src/components/primitives/dialog.tsx","../src/components/primitives/dropdown-menu.tsx","../src/components/primitives/input.tsx","../src/components/primitives/label.tsx","../src/components/primitives/popover.tsx","../src/components/primitives/select.tsx","../src/components/primitives/separator.tsx","../src/components/primitives/skeleton.tsx","../src/components/primitives/switch.tsx","../src/components/primitives/tabs.tsx","../src/components/primitives/textarea.tsx","../src/components/primitives/tooltip.tsx","../src/components/layout/app-shell.tsx","../src/components/layout/sidebar.tsx","../src/components/layout/top-bar.tsx","../src/components/layout/page.tsx","../src/components/layout/page-section.tsx","../src/components/layout/search-bar.tsx","../src/components/layout/notification-bell.tsx","../src/components/layout/theme-toggle.tsx","../src/components/layout/dashboard-layout.tsx","../src/components/data/data-table.tsx","../src/components/data/empty-state.tsx","../src/components/data/pagination.tsx","../src/components/data/stats.tsx","../src/components/data/plan-badge.tsx","../src/components/data/storage-bar.tsx","../src/components/media/media-card.tsx","../src/components/media/media-grid.tsx","../src/components/media/media-picker-dialog.tsx","../src/components/media/image-picker-field.tsx","../src/components/form/form-field.tsx","../src/components/form/form-layout.tsx","../src/components/form/form-section.tsx","../src/components/feedback/alert.tsx","../src/components/feedback/loading-spinner.tsx","../src/components/feedback/confirm-dialog.tsx","../src/hooks/index.ts","../src/components/auth/AuthShell.tsx","../src/components/auth/AuthCard.tsx","../src/components/auth/AuthLogo.tsx","../src/components/auth/AuthHeader.tsx","../src/components/auth/AuthField.tsx","../src/components/auth/AuthButton.tsx","../src/components/auth/AuthDivider.tsx","../src/components/auth/AuthFootnote.tsx","../src/components/Skeleton.tsx","../src/index.ts"],"sourcesContent":["import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-lg text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline: \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-lg px-3\",\n lg: \"h-11 rounded-lg px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n success:\n \"border-transparent bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-100\",\n warning:\n \"border-transparent bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-100\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n className\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };\n","import * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n","import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogClose = DialogPrimitive.Close;\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","import * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { Check, ChevronRight, Circle } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n));\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n));\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName =\n DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName =\n DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n );\n};\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\";\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n};\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {\n error?: boolean;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, error, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-lg border border-input bg-background px-3 py-2 text-sm ring-offset-background\",\n \"file:border-0 file:bg-transparent file:text-sm file:font-medium\",\n \"placeholder:text-muted-foreground\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n error && \"border-destructive focus-visible:ring-destructive\",\n className\n )}\n ref={ref}\n {...props}\n />\n );\n }\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","import * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cn } from \"../../lib/utils\";\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(\n \"block text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n className\n )}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","import * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { cn } from \"../../lib/utils\";\n\nconst Popover = PopoverPrimitive.Root;\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","import * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Select = SelectPrimitive.Root;\nconst SelectGroup = SelectPrimitive.Group;\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-lg border border-input bg-background px-3 py-2 text-sm\",\n \"ring-offset-background placeholder:text-muted-foreground\",\n \"focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"[&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50 shrink-0\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\"flex cursor-default items-center justify-center py-1\", className)}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n style={{ background: '#ffffff', border: '1px solid #e5e7eb', borderRadius: 10, boxShadow: '0 8px 32px rgba(0,0,0,0.12)', zIndex: 9999, overflow: 'hidden' }}\n className={cn(\n \"relative max-h-96 min-w-[8rem] overflow-hidden\",\n \"rounded-lg border border-border bg-white text-foreground shadow-lg\",\n \"dark:bg-zinc-900 dark:border-zinc-700\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-xs font-semibold text-muted-foreground\", className)}\n {...props}\n />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center\",\n \"rounded-md py-2 pl-9 pr-3 text-sm outline-none\",\n \"focus:bg-accent focus:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n {/* Checkmark — left aligned */}\n <span className=\"absolute left-2.5 flex h-4 w-4 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-3.5 w-3.5 text-primary\" strokeWidth={2.5} />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select, SelectGroup, SelectValue, SelectTrigger,\n SelectContent, SelectLabel, SelectItem,\n SelectSeparator, SelectScrollUpButton, SelectScrollDownButton,\n};\n","import * as React from \"react\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport { cn } from \"../../lib/utils\";\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n);\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n","import { cn } from \"../../lib/utils\";\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n","import * as React from \"react\";\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport { cn } from \"../../lib/utils\";\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\"\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n","import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cn } from \"../../lib/utils\";\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(\n \"inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground\",\n className\n )}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm\",\n className\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n \"mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n className\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n error?: boolean;\n}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, error, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n error && \"border-destructive focus-visible:ring-destructive\",\n className\n )}\n ref={ref}\n {...props}\n />\n );\n }\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"../../lib/utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\nconst Tooltip = TooltipPrimitive.Root;\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface AppShellProps {\n sidebar: React.ReactNode;\n children: React.ReactNode;\n collapsed?: boolean;\n}\n\nexport function AppShell({ sidebar, children, collapsed }: AppShellProps) {\n return (\n <div className=\"flex h-screen overflow-hidden bg-background\">\n <aside\n className={cn(\n \"hidden border-r bg-card transition-all duration-300 md:block\",\n collapsed\n ? \"w-[var(--sidebar-collapsed-width)]\"\n : \"w-[var(--sidebar-width)]\"\n )}\n >\n {sidebar}\n </aside>\n <main className=\"flex flex-1 flex-col overflow-hidden\">{children}</main>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { ChevronDown, ChevronsLeft, ChevronsRight } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface SidebarItem {\n label: string;\n href: string;\n icon?: React.ComponentType<{ className?: string }>;\n badge?: string | number;\n children?: SidebarItem[];\n active?: boolean;\n}\n\nexport interface SidebarProps {\n logo?: React.ReactNode;\n items: SidebarItem[];\n footer?: React.ReactNode;\n collapsed?: boolean;\n onCollapse?: (collapsed: boolean) => void;\n}\n\nfunction SidebarItemComponent({\n item,\n collapsed,\n depth = 0,\n}: {\n item: SidebarItem;\n collapsed?: boolean;\n depth?: number;\n}) {\n const [open, setOpen] = React.useState(\n item.active || item.children?.some((c) => c.active) || false\n );\n const Icon = item.icon;\n const hasChildren = item.children && item.children.length > 0;\n\n if (hasChildren) {\n return (\n <div>\n <button\n onClick={() => setOpen(!open)}\n className={cn(\n \"flex w-full items-center gap-3 rounded-md px-3 py-2 text-sm font-medium text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\",\n item.active && \"bg-accent text-accent-foreground\",\n depth > 0 && \"pl-9\"\n )}\n >\n {Icon && <Icon className=\"h-4 w-4 shrink-0\" />}\n {!collapsed && (\n <>\n <span className=\"flex-1 text-left\">{item.label}</span>\n <ChevronDown\n className={cn(\n \"h-4 w-4 shrink-0 transition-transform\",\n open && \"rotate-180\"\n )}\n />\n </>\n )}\n </button>\n {open && !collapsed && (\n <div className=\"mt-1 space-y-1\">\n {item.children!.map((child) => (\n <SidebarItemComponent\n key={child.href}\n item={child}\n collapsed={collapsed}\n depth={depth + 1}\n />\n ))}\n </div>\n )}\n </div>\n );\n }\n\n return (\n <a\n href={item.href}\n className={cn(\n \"flex items-center gap-3 rounded-md px-3 py-2 text-sm font-medium text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\",\n item.active && \"bg-accent text-accent-foreground\",\n depth > 0 && \"pl-9\"\n )}\n >\n {Icon && <Icon className=\"h-4 w-4 shrink-0\" />}\n {!collapsed && (\n <>\n <span className=\"flex-1\">{item.label}</span>\n {item.badge !== undefined && (\n <span className=\"ml-auto rounded-full bg-primary/10 px-2 py-0.5 text-xs font-medium text-primary\">\n {item.badge}\n </span>\n )}\n </>\n )}\n </a>\n );\n}\n\nexport function Sidebar({\n logo,\n items,\n footer,\n collapsed,\n onCollapse,\n}: SidebarProps) {\n return (\n <div className=\"flex h-full flex-col\">\n {logo && (\n <div className=\"flex h-14 items-center border-b px-4\">{logo}</div>\n )}\n <nav className=\"flex-1 space-y-1 overflow-y-auto p-3\">\n {items.map((item) => (\n <SidebarItemComponent\n key={item.href}\n item={item}\n collapsed={collapsed}\n />\n ))}\n </nav>\n <div className=\"border-t p-3\">\n {footer}\n {onCollapse && (\n <button\n onClick={() => onCollapse(!collapsed)}\n className=\"flex w-full items-center justify-center rounded-md p-2 text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\"\n >\n {collapsed ? (\n <ChevronsRight className=\"h-4 w-4\" />\n ) : (\n <ChevronsLeft className=\"h-4 w-4\" />\n )}\n </button>\n )}\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { Menu } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface TopBarProps {\n storeName?: string;\n user?: { name: string; email: string; avatar?: string };\n onMenuToggle?: () => void;\n actions?: React.ReactNode;\n className?: string;\n}\n\nexport function TopBar({\n storeName,\n user,\n onMenuToggle,\n actions,\n className,\n}: TopBarProps) {\n return (\n <header\n className={cn(\n \"flex h-14 items-center gap-4 border-b bg-card px-4 lg:px-6\",\n className\n )}\n >\n {onMenuToggle && (\n <button\n onClick={onMenuToggle}\n className=\"rounded-md p-2 text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground md:hidden\"\n >\n <Menu className=\"h-5 w-5\" />\n <span className=\"sr-only\">Toggle menu</span>\n </button>\n )}\n\n {storeName && (\n <div className=\"font-semibold text-foreground\">{storeName}</div>\n )}\n\n <div className=\"flex flex-1 items-center justify-end gap-4\">\n {actions}\n\n {user && (\n <div className=\"flex items-center gap-3\">\n <div className=\"hidden text-right text-sm md:block\">\n <div className=\"font-medium\">{user.name}</div>\n <div className=\"text-muted-foreground text-xs\">{user.email}</div>\n </div>\n <div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-primary text-xs font-medium text-primary-foreground\">\n {user.avatar ? (\n <img\n src={user.avatar}\n alt={user.name}\n className=\"h-full w-full rounded-full object-cover\"\n />\n ) : (\n user.name\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2)\n )}\n </div>\n </div>\n )}\n </div>\n </header>\n );\n}\n","import * as React from \"react\";\nimport { ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface Breadcrumb {\n label: string;\n href?: string;\n}\n\nexport interface PageProps {\n title: string;\n subtitle?: string;\n actions?: React.ReactNode;\n breadcrumbs?: Breadcrumb[];\n children: React.ReactNode;\n fullWidth?: boolean;\n}\n\nexport function Page({\n title,\n subtitle,\n actions,\n breadcrumbs,\n children,\n fullWidth,\n}: PageProps) {\n return (\n <div className=\"flex-1 overflow-y-auto\">\n <div\n className={cn(\n \"mx-auto space-y-6 p-6\",\n !fullWidth && \"max-w-6xl\"\n )}\n >\n {breadcrumbs && breadcrumbs.length > 0 && (\n <nav className=\"flex items-center space-x-1 text-sm text-muted-foreground\">\n {breadcrumbs.map((crumb, index) => (\n <React.Fragment key={index}>\n {index > 0 && <ChevronRight className=\"h-4 w-4\" />}\n {crumb.href ? (\n <a\n href={crumb.href}\n className=\"hover:text-foreground transition-colors\"\n >\n {crumb.label}\n </a>\n ) : (\n <span className=\"text-foreground\">{crumb.label}</span>\n )}\n </React.Fragment>\n ))}\n </nav>\n )}\n\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-bold tracking-tight\">{title}</h1>\n {subtitle && (\n <p className=\"text-muted-foreground mt-1\">{subtitle}</p>\n )}\n </div>\n {actions && <div className=\"flex items-center gap-2\">{actions}</div>}\n </div>\n\n {children}\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface PageSectionProps {\n title?: string;\n description?: string;\n children: React.ReactNode;\n actions?: React.ReactNode;\n className?: string;\n}\n\nexport function PageSection({\n title,\n description,\n children,\n actions,\n className,\n}: PageSectionProps) {\n return (\n <div\n className={cn(\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n className\n )}\n >\n {(title || description || actions) && (\n <div className=\"flex items-start justify-between border-b p-6\">\n <div>\n {title && <h2 className=\"text-lg font-semibold\">{title}</h2>}\n {description && (\n <p className=\"mt-1 text-sm text-muted-foreground\">\n {description}\n </p>\n )}\n </div>\n {actions && <div className=\"flex items-center gap-2\">{actions}</div>}\n </div>\n )}\n <div className=\"p-6\">{children}</div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface SearchBarProps {\n value?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n shortcut?: string;\n className?: string;\n width?: string;\n}\n\nexport function SearchBar({\n value,\n onChange,\n placeholder = \"Search…\",\n shortcut,\n className,\n width = \"max-w-xs\",\n}: SearchBarProps) {\n const shortcuts = shortcut ? shortcut.split(\" \") : [];\n\n return (\n <div className={cn(\"relative flex items-center\", width, className)}>\n {/* Search icon */}\n <svg\n className=\"pointer-events-none absolute left-2.5 h-3.5 w-3.5 text-muted-foreground\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.35-4.35\" />\n </svg>\n\n <input\n type=\"search\"\n value={value}\n onChange={(e) => onChange?.(e.target.value)}\n placeholder={placeholder}\n className={cn(\n \"h-8 w-full rounded-lg border border-input bg-muted/50 pl-8 text-sm outline-none transition-colors\",\n \"placeholder:text-muted-foreground\",\n \"focus:border-primary focus:ring-1 focus:ring-primary\",\n shortcut ? \"pr-16\" : \"pr-3\"\n )}\n />\n\n {shortcuts.length > 0 && (\n <div className=\"pointer-events-none absolute right-2 flex items-center gap-0.5\">\n {shortcuts.map((key, i) => (\n <kbd\n key={i}\n className=\"inline-flex h-5 items-center rounded border border-border bg-background px-1 font-mono text-[10px] text-muted-foreground\"\n >\n {key}\n </kbd>\n ))}\n </div>\n )}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface NotificationBellProps {\n count?: number;\n onClick?: () => void;\n className?: string;\n}\n\nexport function NotificationBell({\n count = 0,\n onClick,\n className,\n}: NotificationBellProps) {\n return (\n <button\n onClick={onClick}\n className={cn(\n \"relative flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\",\n className\n )}\n aria-label={count > 0 ? `${count} unread notifications` : \"Notifications\"}\n >\n {/* Bell icon */}\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9\" />\n <path d=\"M10.3 21a1.94 1.94 0 0 0 3.4 0\" />\n </svg>\n\n {count > 0 && (\n <span className=\"absolute right-1.5 top-1.5 h-2 w-2 rounded-full bg-green-500\" />\n )}\n </button>\n );\n}\n","'use client';\n\nimport * as React from \"react\";\nimport { useTheme } from \"next-themes\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface ThemeToggleProps {\n className?: string;\n}\n\nexport function ThemeToggle({ className }: ThemeToggleProps) {\n const { resolvedTheme, setTheme } = useTheme();\n const [mounted, setMounted] = React.useState(false);\n\n React.useEffect(() => {\n setMounted(true);\n }, []);\n\n if (!mounted) {\n return (\n <button\n className={cn(\n \"flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground\",\n className\n )}\n aria-label=\"Toggle theme\"\n >\n <span className=\"h-4 w-4\" />\n </button>\n );\n }\n\n const isDark = resolvedTheme === \"dark\";\n\n return (\n <button\n onClick={() => setTheme(isDark ? \"light\" : \"dark\")}\n className={cn(\n \"flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\",\n className\n )}\n aria-label={isDark ? \"Switch to light mode\" : \"Switch to dark mode\"}\n >\n {isDark ? (\n /* Sun icon */\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n <path d=\"M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41\" />\n </svg>\n ) : (\n /* Moon icon */\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z\" />\n </svg>\n )}\n </button>\n );\n}\n","'use client';\n\nimport * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { SearchBar } from \"./search-bar\";\nimport { NotificationBell } from \"./notification-bell\";\nimport { ThemeToggle } from \"./theme-toggle\";\n\nexport interface NavItem {\n href: string;\n label: string;\n icon?: React.ReactNode;\n badge?: string | number;\n children?: NavItem[];\n}\n\nexport interface DashboardLayoutProps {\n // Branding\n logo?: React.ReactNode;\n appName?: string;\n // Navigation\n navItems: NavItem[];\n bottomNavItems?: NavItem[];\n activeHref?: string;\n onNavigate?: (href: string) => void;\n // Topbar\n searchPlaceholder?: string;\n searchShortcut?: string;\n notificationCount?: number;\n onNotificationClick?: () => void;\n // User\n user?: { name: string; email: string; avatar?: string };\n onSignOut?: () => void;\n // Layout\n children: React.ReactNode;\n defaultCollapsed?: boolean;\n footerContent?: React.ReactNode;\n}\n\nfunction isActive(itemHref: string, activeHref?: string): boolean {\n if (!activeHref) return false;\n return activeHref === itemHref || activeHref.startsWith(itemHref + \"/\");\n}\n\nfunction NavItemRow({\n item,\n collapsed,\n activeHref,\n onNavigate,\n depth = 0,\n}: {\n item: NavItem;\n collapsed: boolean;\n activeHref?: string;\n onNavigate?: (href: string) => void;\n depth?: number;\n}) {\n const active = isActive(item.href, activeHref);\n const hasChildren = item.children && item.children.length > 0;\n const childActive = hasChildren && item.children!.some((c) => isActive(c.href, activeHref));\n const [open, setOpen] = React.useState(active || childActive);\n\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n if (onNavigate) {\n e.preventDefault();\n onNavigate(item.href);\n }\n if (hasChildren) {\n e.preventDefault();\n setOpen((v) => !v);\n }\n };\n\n const rowClasses = cn(\n \"flex w-full items-center gap-2.5 rounded-md px-3 py-2 text-sm font-medium transition-colors\",\n active\n ? \"bg-sidebar-accent text-sidebar-accent-foreground\"\n : \"text-sidebar-foreground hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground\",\n depth > 0 && \"py-1.5\"\n );\n\n return (\n <div>\n <a\n href={item.href}\n onClick={hasChildren ? (e) => { e.preventDefault(); setOpen((v) => !v); } : onNavigate ? handleClick : undefined}\n className={rowClasses}\n title={collapsed ? item.label : undefined}\n >\n {item.icon && (\n <span className=\"flex h-4 w-4 shrink-0 items-center justify-center\">\n {item.icon}\n </span>\n )}\n {!collapsed && (\n <>\n <span className=\"flex-1 truncate\">{item.label}</span>\n {item.badge !== undefined && !hasChildren && (\n <span className=\"rounded-full bg-primary/15 px-2 py-0.5 text-[11px] font-semibold text-primary\">\n {item.badge}\n </span>\n )}\n {hasChildren && (\n <svg\n className={cn(\"h-3.5 w-3.5 shrink-0 transition-transform text-sidebar-foreground/50\", open && \"rotate-180\")}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n )}\n </>\n )}\n </a>\n\n {hasChildren && open && !collapsed && (\n <div className=\"mt-0.5 ml-[22px] space-y-0.5 border-l border-sidebar-border/60 pl-3\">\n {item.children!.map((child) => (\n <NavItemRow\n key={child.href}\n item={child}\n collapsed={collapsed}\n activeHref={activeHref}\n onNavigate={onNavigate}\n depth={depth + 1}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n\nfunction UserAvatar({ user, size = \"sm\" }: { user: { name: string; email: string; avatar?: string }; size?: \"sm\" | \"md\" }) {\n const initials = user.name\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n\n const sizeClass = size === \"md\" ? \"h-8 w-8 text-xs\" : \"h-7 w-7 text-[10px]\";\n\n return (\n <div className={cn(\"flex shrink-0 items-center justify-center rounded-full bg-primary font-semibold text-primary-foreground overflow-hidden\", sizeClass)}>\n {user.avatar ? (\n <img src={user.avatar} alt={user.name} className=\"h-full w-full object-cover\" />\n ) : (\n initials\n )}\n </div>\n );\n}\n\nexport function DashboardLayout({\n logo,\n appName = \"Dashboard\",\n navItems,\n bottomNavItems,\n activeHref,\n onNavigate,\n searchPlaceholder,\n searchShortcut,\n notificationCount,\n onNotificationClick,\n user,\n onSignOut,\n children,\n defaultCollapsed = false,\n footerContent,\n}: DashboardLayoutProps) {\n const [collapsed, setCollapsed] = React.useState(defaultCollapsed);\n const [userMenuOpen, setUserMenuOpen] = React.useState(false);\n const [searchValue, setSearchValue] = React.useState(\"\");\n const userMenuRef = React.useRef<HTMLDivElement>(null);\n\n // Close user menu on outside click\n React.useEffect(() => {\n function handler(e: MouseEvent) {\n if (userMenuRef.current && !userMenuRef.current.contains(e.target as Node)) {\n setUserMenuOpen(false);\n }\n }\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, []);\n\n const ToggleIcon = () => (\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" />\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" />\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" />\n </svg>\n );\n\n return (\n <div className=\"flex h-screen overflow-hidden bg-background\">\n {/* ── Sidebar ── */}\n <aside\n className={cn(\n \"flex shrink-0 flex-col border-r bg-sidebar transition-all duration-200 ease-in-out\",\n collapsed ? \"w-16\" : \"w-80\"\n )}\n >\n {/* Logo area */}\n <div className=\"flex h-14 shrink-0 items-center border-b border-sidebar-border px-4\">\n {collapsed ? (\n <div className=\"flex h-8 w-8 items-center justify-center rounded-md bg-primary/10\">\n <span className=\"text-sm font-bold text-primary\">\n {appName?.[0] ?? \"D\"}\n </span>\n </div>\n ) : (\n logo ?? (\n <span className=\"text-base font-semibold text-sidebar-foreground\">\n {appName}\n </span>\n )\n )}\n </div>\n\n {/* Nav */}\n <nav className=\"flex-1 space-y-0.5 overflow-y-auto p-2\">\n {navItems.map((item) => (\n <NavItemRow\n key={item.href}\n item={item}\n collapsed={collapsed}\n activeHref={activeHref}\n onNavigate={onNavigate}\n />\n ))}\n </nav>\n\n {/* Bottom nav + footer + user */}\n <div className=\"border-t border-sidebar-border p-2\">\n {bottomNavItems && bottomNavItems.length > 0 && (\n <div className=\"mb-2 space-y-0.5\">\n {bottomNavItems.map((item) => (\n <NavItemRow\n key={item.href}\n item={item}\n collapsed={collapsed}\n activeHref={activeHref}\n onNavigate={onNavigate}\n />\n ))}\n </div>\n )}\n\n {footerContent && !collapsed && (\n <div className=\"mb-2\">{footerContent}</div>\n )}\n\n {/* User row */}\n {user && (\n <div className=\"relative\" ref={userMenuRef}>\n <button\n onClick={() => setUserMenuOpen((v) => !v)}\n className=\"flex w-full items-center gap-2.5 rounded-md px-2 py-1.5 text-sm transition-colors hover:bg-sidebar-accent/60\"\n >\n <UserAvatar user={user} />\n {!collapsed && (\n <div className=\"flex-1 overflow-hidden text-left\">\n <div className=\"truncate text-xs font-medium text-sidebar-foreground\">{user.name}</div>\n <div className=\"truncate text-[11px] text-sidebar-foreground/60\">{user.email}</div>\n </div>\n )}\n </button>\n\n {userMenuOpen && (\n <div className={cn(\n \"absolute bottom-full mb-1 z-50 min-w-[180px] rounded-md border bg-popover shadow-md\",\n collapsed ? \"left-full ml-2 bottom-0\" : \"left-0\"\n )}>\n <div className=\"px-3 py-2 border-b\">\n <p className=\"text-xs font-medium\">{user.name}</p>\n <p className=\"text-[11px] text-muted-foreground truncate\">{user.email}</p>\n </div>\n {onSignOut && (\n <button\n onClick={() => { setUserMenuOpen(false); onSignOut(); }}\n className=\"flex w-full items-center gap-2 px-3 py-2 text-sm text-destructive hover:bg-accent transition-colors\"\n >\n <svg className=\"h-3.5 w-3.5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\n <polyline points=\"16 17 21 12 16 7\" />\n <line x1=\"21\" y1=\"12\" x2=\"9\" y2=\"12\" />\n </svg>\n Sign out\n </button>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </aside>\n\n {/* ── Main column ── */}\n <div className=\"flex flex-1 flex-col overflow-hidden\">\n {/* Topbar */}\n <header className=\"flex h-14 shrink-0 items-center gap-3 border-b bg-background px-4\">\n <button\n onClick={() => setCollapsed((v) => !v)}\n className=\"flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\"\n aria-label=\"Toggle sidebar\"\n >\n <ToggleIcon />\n </button>\n\n <div className=\"flex flex-1 items-center gap-2\">\n <SearchBar\n value={searchValue}\n onChange={setSearchValue}\n placeholder={searchPlaceholder}\n shortcut={searchShortcut}\n width=\"max-w-sm\"\n />\n </div>\n\n <div className=\"flex items-center gap-1\">\n <ThemeToggle />\n <NotificationBell count={notificationCount} onClick={onNotificationClick} />\n {user && (\n <div className=\"ml-1\">\n <UserAvatar user={user} size=\"md\" />\n </div>\n )}\n </div>\n </header>\n\n {/* Content */}\n <main className=\"flex-1 overflow-y-auto bg-muted/30 p-6\">\n {children}\n </main>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Checkbox } from \"../primitives/checkbox\";\nimport { Skeleton } from \"../primitives/skeleton\";\n\nexport interface Column<T> {\n key: keyof T | string;\n header: string;\n cell?: (row: T) => React.ReactNode;\n sortable?: boolean;\n width?: string;\n}\n\nexport interface DataTableProps<T> {\n columns: Column<T>[];\n data: T[];\n loading?: boolean;\n pagination?: {\n page: number;\n pageSize: number;\n total: number;\n onPageChange: (page: number) => void;\n onPageSizeChange?: (size: number) => void;\n };\n selection?: {\n selected: string[];\n onSelect: (ids: string[]) => void;\n idKey?: keyof T;\n };\n onRowClick?: (row: T) => void;\n emptyState?: React.ReactNode;\n actions?: React.ReactNode;\n}\n\nexport function DataTable<T extends Record<string, unknown>>({\n columns,\n data,\n loading,\n pagination,\n selection,\n onRowClick,\n emptyState,\n actions,\n}: DataTableProps<T>) {\n const idKey = (selection?.idKey ?? \"id\") as string;\n\n const allSelected =\n selection && data.length > 0 && data.every((row) => selection.selected.includes(String(row[idKey])));\n\n const someSelected =\n selection && data.some((row) => selection.selected.includes(String(row[idKey]))) && !allSelected;\n\n function toggleAll() {\n if (!selection) return;\n if (allSelected) {\n selection.onSelect([]);\n } else {\n selection.onSelect(data.map((row) => String(row[idKey])));\n }\n }\n\n function toggleRow(row: T) {\n if (!selection) return;\n const id = String(row[idKey]);\n if (selection.selected.includes(id)) {\n selection.onSelect(selection.selected.filter((s) => s !== id));\n } else {\n selection.onSelect([...selection.selected, id]);\n }\n }\n\n const totalPages = pagination\n ? Math.ceil(pagination.total / pagination.pageSize)\n : 1;\n\n return (\n <div className=\"space-y-4\">\n {selection && selection.selected.length > 0 && actions && (\n <div className=\"flex items-center gap-2 rounded-md border bg-muted/50 p-2\">\n <span className=\"text-sm text-muted-foreground\">\n {selection.selected.length} selected\n </span>\n {actions}\n </div>\n )}\n\n <div className=\"rounded-md border\">\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b bg-muted/50\">\n {selection && (\n <th className=\"w-12 px-4 py-3\">\n <Checkbox\n checked={allSelected}\n ref={(el) => {\n if (el) {\n (el as unknown as HTMLInputElement).indeterminate =\n someSelected ?? false;\n }\n }}\n onCheckedChange={toggleAll}\n />\n </th>\n )}\n {columns.map((col) => (\n <th\n key={String(col.key)}\n className=\"px-4 py-3 text-left font-medium text-muted-foreground\"\n style={col.width ? { width: col.width } : undefined}\n >\n {col.header}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {loading\n ? Array.from({ length: 5 }).map((_, i) => (\n <tr key={i} className=\"border-b\">\n {selection && (\n <td className=\"px-4 py-3\">\n <Skeleton className=\"h-4 w-4\" />\n </td>\n )}\n {columns.map((col) => (\n <td key={String(col.key)} className=\"px-4 py-3\">\n <Skeleton className=\"h-4 w-24\" />\n </td>\n ))}\n </tr>\n ))\n : data.length === 0\n ? (\n <tr>\n <td\n colSpan={columns.length + (selection ? 1 : 0)}\n className=\"py-12 text-center\"\n >\n {emptyState || (\n <p className=\"text-muted-foreground\">No data found</p>\n )}\n </td>\n </tr>\n )\n : data.map((row, idx) => {\n const rowId = String(row[idKey] ?? idx);\n const isSelected = selection?.selected.includes(rowId);\n return (\n <tr\n key={rowId}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50\",\n isSelected && \"bg-muted/50\",\n onRowClick && \"cursor-pointer\"\n )}\n onClick={() => onRowClick?.(row)}\n >\n {selection && (\n <td\n className=\"px-4 py-3\"\n onClick={(e) => e.stopPropagation()}\n >\n <Checkbox\n checked={isSelected}\n onCheckedChange={() => toggleRow(row)}\n />\n </td>\n )}\n {columns.map((col) => (\n <td key={String(col.key)} className=\"px-4 py-3\">\n {col.cell\n ? col.cell(row)\n : String(row[col.key as keyof T] ?? \"\")}\n </td>\n ))}\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n </div>\n\n {pagination && totalPages > 1 && (\n <div className=\"flex items-center justify-between px-2\">\n <div className=\"text-sm text-muted-foreground\">\n Page {pagination.page} of {totalPages} ({pagination.total} total)\n </div>\n <div className=\"flex items-center gap-2\">\n <button\n className=\"rounded-md border px-3 py-1.5 text-sm disabled:opacity-50\"\n disabled={pagination.page <= 1}\n onClick={() => pagination.onPageChange(pagination.page - 1)}\n >\n Previous\n </button>\n <button\n className=\"rounded-md border px-3 py-1.5 text-sm disabled:opacity-50\"\n disabled={pagination.page >= totalPages}\n onClick={() => pagination.onPageChange(pagination.page + 1)}\n >\n Next\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface EmptyStateProps {\n icon?: React.ComponentType<{ className?: string }>;\n title: string;\n description?: string;\n action?: React.ReactNode;\n className?: string;\n}\n\nexport function EmptyState({\n icon: Icon,\n title,\n description,\n action,\n className,\n}: EmptyStateProps) {\n return (\n <div\n className={cn(\n \"flex flex-col items-center justify-center py-12 text-center\",\n className\n )}\n >\n {Icon && (\n <div className=\"mb-4 rounded-full bg-muted p-3\">\n <Icon className=\"h-6 w-6 text-muted-foreground\" />\n </div>\n )}\n <h3 className=\"text-lg font-semibold\">{title}</h3>\n {description && (\n <p className=\"mt-1 max-w-sm text-sm text-muted-foreground\">\n {description}\n </p>\n )}\n {action && <div className=\"mt-4\">{action}</div>}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface PaginationProps {\n page: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n className?: string;\n}\n\nexport function Pagination({\n page,\n totalPages,\n onPageChange,\n className,\n}: PaginationProps) {\n const pages = React.useMemo(() => {\n const items: (number | \"ellipsis\")[] = [];\n if (totalPages <= 7) {\n for (let i = 1; i <= totalPages; i++) items.push(i);\n } else {\n items.push(1);\n if (page > 3) items.push(\"ellipsis\");\n const start = Math.max(2, page - 1);\n const end = Math.min(totalPages - 1, page + 1);\n for (let i = start; i <= end; i++) items.push(i);\n if (page < totalPages - 2) items.push(\"ellipsis\");\n items.push(totalPages);\n }\n return items;\n }, [page, totalPages]);\n\n if (totalPages <= 1) return null;\n\n return (\n <nav className={cn(\"flex items-center gap-1\", className)}>\n <button\n className=\"inline-flex h-9 w-9 items-center justify-center rounded-md border text-sm disabled:opacity-50\"\n disabled={page <= 1}\n onClick={() => onPageChange(page - 1)}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </button>\n {pages.map((p, i) =>\n p === \"ellipsis\" ? (\n <span key={`e-${i}`} className=\"px-2 text-muted-foreground\">\n ...\n </span>\n ) : (\n <button\n key={p}\n className={cn(\n \"inline-flex h-9 w-9 items-center justify-center rounded-md border text-sm\",\n p === page && \"bg-primary text-primary-foreground\"\n )}\n onClick={() => onPageChange(p)}\n >\n {p}\n </button>\n )\n )}\n <button\n className=\"inline-flex h-9 w-9 items-center justify-center rounded-md border text-sm disabled:opacity-50\"\n disabled={page >= totalPages}\n onClick={() => onPageChange(page + 1)}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </button>\n </nav>\n );\n}\n","import * as React from \"react\";\nimport { ArrowDown, ArrowUp } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface Stat {\n label: string;\n value: string | number;\n change?: { value: number; type: \"increase\" | \"decrease\" };\n icon?: React.ComponentType<{ className?: string }>;\n}\n\nexport interface StatsProps {\n stats: Stat[];\n columns?: 2 | 3 | 4;\n className?: string;\n}\n\nexport function Stats({ stats, columns = 4, className }: StatsProps) {\n return (\n <div\n className={cn(\n \"grid gap-4\",\n columns === 2 && \"grid-cols-1 sm:grid-cols-2\",\n columns === 3 && \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3\",\n columns === 4 && \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4\",\n className\n )}\n >\n {stats.map((stat, index) => {\n const Icon = stat.icon;\n return (\n <div\n key={index}\n className=\"rounded-lg border bg-card p-6 text-card-foreground shadow-sm\"\n >\n <div className=\"flex items-center justify-between\">\n <p className=\"text-sm font-medium text-muted-foreground\">\n {stat.label}\n </p>\n {Icon && <Icon className=\"h-4 w-4 text-muted-foreground\" />}\n </div>\n <div className=\"mt-2 flex items-baseline gap-2\">\n <p className=\"text-2xl font-bold\">{stat.value}</p>\n {stat.change && (\n <span\n className={cn(\n \"inline-flex items-center text-xs font-medium\",\n stat.change.type === \"increase\"\n ? \"text-green-600 dark:text-green-400\"\n : \"text-red-600 dark:text-red-400\"\n )}\n >\n {stat.change.type === \"increase\" ? (\n <ArrowUp className=\"mr-0.5 h-3 w-3\" />\n ) : (\n <ArrowDown className=\"mr-0.5 h-3 w-3\" />\n )}\n {stat.change.value}%\n </span>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport type PlanId = \"BASIC\" | \"GROW\" | \"ADVANCED\" | string;\n\nexport interface PlanBadgeProps {\n plan: PlanId;\n size?: \"sm\" | \"md\";\n className?: string;\n}\n\nconst PLAN_STYLES: Record<string, string> = {\n BASIC: \"bg-muted text-muted-foreground\",\n GROW: \"bg-primary text-primary-foreground\",\n ADVANCED: \"bg-zinc-900 text-amber-400 dark:bg-zinc-800\",\n};\n\nexport function PlanBadge({ plan, size = \"md\", className }: PlanBadgeProps) {\n const colorClass = PLAN_STYLES[plan.toUpperCase()] ?? \"bg-muted text-muted-foreground\";\n\n return (\n <span\n className={cn(\n \"inline-flex items-center rounded font-semibold uppercase tracking-wide\",\n colorClass,\n size === \"sm\" ? \"px-1.5 py-0.5 text-[10px]\" : \"px-2 py-1 text-xs\",\n className\n )}\n >\n {plan}\n </span>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface StorageBarProps {\n used: number;\n limit: number | null;\n plan?: string;\n collapsed?: boolean;\n className?: string;\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n if (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GB`;\n}\n\nfunction getBarColor(pct: number): string {\n if (pct >= 90) return \"bg-destructive\";\n if (pct >= 70) return \"bg-amber-500\";\n return \"bg-primary\";\n}\n\n// Storage icon\nfunction StorageIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" />\n <path d=\"M3 5v14c0 1.66 4.03 3 9 3s9-1.34 9-3V5\" />\n <path d=\"M3 12c0 1.66 4.03 3 9 3s9-1.34 9-3\" />\n </svg>\n );\n}\n\nexport function StorageBar({\n used,\n limit,\n plan,\n collapsed = false,\n className,\n}: StorageBarProps) {\n const pct = limit ? Math.min(100, (used / limit) * 100) : 0;\n const barColor = getBarColor(pct);\n\n if (collapsed) {\n return (\n <div className={cn(\"flex justify-center\", className)}>\n <StorageIcon className=\"h-4 w-4 text-muted-foreground\" />\n </div>\n );\n }\n\n return (\n <div className={cn(\"space-y-1.5 px-1\", className)}>\n <div className=\"flex items-center gap-1.5\">\n <StorageIcon className=\"h-3.5 w-3.5 shrink-0 text-muted-foreground\" />\n {limit === null ? (\n <p className=\"text-[11px] text-muted-foreground\">\n <span className=\"font-medium text-foreground\">{formatBytes(used)}</span>\n {\" · Unlimited\"}\n </p>\n ) : (\n <p className=\"text-[11px] text-muted-foreground\">\n <span className=\"font-medium text-foreground\">{formatBytes(used)}</span>\n {\" / \"}\n {formatBytes(limit)}\n </p>\n )}\n </div>\n\n {limit !== null && (\n <div className=\"h-1 w-full overflow-hidden rounded-full bg-muted\">\n <div\n className={cn(\"h-full rounded-full transition-all duration-300\", barColor)}\n style={{ width: `${pct}%` }}\n />\n </div>\n )}\n\n {plan && (\n <p className=\"text-[10px] uppercase tracking-wide text-muted-foreground\">{plan}</p>\n )}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface MediaCardFile {\n id: string;\n name: string;\n url: string;\n mimeType: string;\n size: number;\n width?: number | null;\n height?: number | null;\n}\n\nexport interface MediaCardProps {\n file: MediaCardFile;\n selected?: boolean;\n onClick?: () => void;\n className?: string;\n}\n\nfunction stripExtension(name: string): string {\n return name.replace(/\\.[^/.]+$/, \"\");\n}\n\nfunction getFileEmoji(mimeType: string): string {\n if (mimeType.startsWith(\"video/\")) return \"🎬\";\n if (mimeType.startsWith(\"audio/\")) return \"🎵\";\n if (mimeType === \"application/pdf\") return \"📄\";\n return \"📎\";\n}\n\nexport function MediaCard({ file, selected = false, onClick, className }: MediaCardProps) {\n const isImage = file.mimeType.startsWith(\"image/\");\n const displayName = stripExtension(file.name);\n\n return (\n <div\n role=\"button\"\n tabIndex={0}\n onClick={onClick}\n onKeyDown={(e) => { if (e.key === \"Enter\" || e.key === \" \") onClick?.(); }}\n className={cn(\n \"group relative aspect-square cursor-pointer rounded-xl overflow-hidden border-2 transition-all duration-150\",\n selected\n ? \"border-[color:var(--primary)] shadow-[0_0_0_2px_rgba(40,127,113,0.2)]\"\n : \"border-transparent hover:border-[color:var(--primary)]/40\",\n className\n )}\n >\n {isImage ? (\n <img\n src={file.url}\n alt={file.name}\n className=\"h-full w-full object-cover transition-transform duration-150 group-hover:scale-[1.03]\"\n loading=\"lazy\"\n />\n ) : (\n <div className=\"flex h-full w-full items-center justify-center bg-muted text-4xl\">\n {getFileEmoji(file.mimeType)}\n </div>\n )}\n\n {/* Hover gradient overlay with filename */}\n <div className=\"absolute inset-0 flex items-end bg-gradient-to-t from-black/60 via-transparent to-transparent opacity-0 transition-opacity duration-150 group-hover:opacity-100\">\n <p className=\"truncate px-2 pb-2 text-[11px] font-medium text-white\">\n {displayName}\n </p>\n </div>\n\n {/* Selected checkmark */}\n {selected && (\n <div className=\"absolute right-1.5 top-1.5 flex h-5 w-5 items-center justify-center rounded-full bg-primary shadow\">\n <svg\n className=\"h-3 w-3 text-white\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </div>\n )}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { MediaCard, MediaCardFile } from \"./media-card\";\n\nexport interface MediaGridProps {\n files: MediaCardFile[];\n selected?: Set<string>;\n onSelect?: (file: MediaCardFile) => void;\n loading?: boolean;\n columns?: 4 | 5 | 6;\n emptyMessage?: string;\n onUploadClick?: () => void;\n className?: string;\n}\n\nconst columnsClass: Record<number, string> = {\n 4: \"grid-cols-2 sm:grid-cols-3 md:grid-cols-4\",\n 5: \"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5\",\n 6: \"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6\",\n};\n\nexport function MediaGrid({\n files,\n selected,\n onSelect,\n loading = false,\n columns = 5,\n emptyMessage = \"No files yet.\",\n onUploadClick,\n className,\n}: MediaGridProps) {\n if (loading) {\n return (\n <div className={cn(\"grid gap-2\", columnsClass[columns] ?? columnsClass[5], className)}>\n {Array.from({ length: columns * 2 }).map((_, i) => (\n <div\n key={i}\n className=\"aspect-square animate-pulse rounded-xl bg-muted\"\n />\n ))}\n </div>\n );\n }\n\n if (files.length === 0) {\n return (\n <div className={cn(\"flex flex-col items-center justify-center gap-3 py-16 text-center\", className)}>\n {/* Image placeholder icon */}\n <div className=\"flex h-14 w-14 items-center justify-center rounded-full bg-muted\">\n <svg\n className=\"h-7 w-7 text-muted-foreground\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\" />\n <circle cx=\"9\" cy=\"9\" r=\"2\" />\n <path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\" />\n </svg>\n </div>\n <p className=\"text-sm text-muted-foreground\">{emptyMessage}</p>\n {onUploadClick && (\n <button\n onClick={onUploadClick}\n className=\"rounded-md bg-primary px-4 py-1.5 text-sm font-medium text-primary-foreground transition-opacity hover:opacity-90\"\n >\n Upload files\n </button>\n )}\n </div>\n );\n }\n\n return (\n <div className={cn(\"grid gap-2\", columnsClass[columns] ?? columnsClass[5], className)}>\n {files.map((file) => (\n <MediaCard\n key={file.id}\n file={file}\n selected={selected?.has(file.id)}\n onClick={() => onSelect?.(file)}\n />\n ))}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n} from \"../primitives/dialog\";\nimport { MediaCardFile } from \"./media-card\";\nimport { MediaGrid } from \"./media-grid\";\n\nexport interface MediaPickerDialogFolder {\n id: string;\n name: string;\n icon?: string | null;\n}\n\nexport interface UploadItem {\n name: string;\n progress: number;\n status: \"uploading\" | \"done\" | \"failed\";\n}\n\nexport interface MediaPickerDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title?: string;\n // Data\n files: MediaCardFile[];\n folders?: MediaPickerDialogFolder[];\n loading?: boolean;\n total: number;\n uploads?: UploadItem[];\n // Filters\n typeFilter?: string;\n onTypeChange?: (type: string) => void;\n search?: string;\n onSearch?: (q: string) => void;\n activeFolderId?: string;\n onFolderChange?: (id: string) => void;\n // Actions\n onUpload?: (files: FileList) => void;\n onLoadMore?: () => void;\n hasMore?: boolean;\n // Selection\n multiple?: boolean;\n accept?: \"images\" | \"all\";\n onSelect: (files: MediaCardFile[]) => void;\n}\n\nconst TYPE_OPTIONS = [\n { value: \"\", label: \"All\" },\n { value: \"image\", label: \"Images\" },\n { value: \"video\", label: \"Videos\" },\n { value: \"audio\", label: \"Audio\" },\n { value: \"document\", label: \"Docs\" },\n];\n\nexport function MediaPickerDialog({\n open,\n onOpenChange,\n title = \"Media Library\",\n files,\n folders = [],\n loading = false,\n total,\n uploads = [],\n typeFilter = \"\",\n onTypeChange,\n search = \"\",\n onSearch,\n activeFolderId,\n onFolderChange,\n onUpload,\n onLoadMore,\n hasMore = false,\n multiple = false,\n accept = \"all\",\n onSelect,\n}: MediaPickerDialogProps) {\n const [localSelected, setLocalSelected] = React.useState<Set<string>>(new Set());\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n\n const handleFileSelect = (file: MediaCardFile) => {\n if (multiple) {\n setLocalSelected((prev) => {\n const next = new Set(prev);\n if (next.has(file.id)) {\n next.delete(file.id);\n } else {\n next.add(file.id);\n }\n return next;\n });\n } else {\n const selected = files.filter((f) => f.id === file.id);\n onSelect(selected);\n onOpenChange(false);\n }\n };\n\n const handleConfirm = () => {\n const selected = files.filter((f) => localSelected.has(f.id));\n onSelect(selected);\n onOpenChange(false);\n };\n\n const handleUploadChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files && onUpload) {\n onUpload(e.target.files);\n }\n };\n\n const activeUploads = uploads.filter((u) => u.status === \"uploading\");\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"flex h-[85vh] max-h-[700px] max-w-4xl flex-col gap-0 p-0\">\n <DialogHeader className=\"flex-row items-center justify-between border-b px-5 py-3\">\n <DialogTitle className=\"text-base\">{title}</DialogTitle>\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs text-muted-foreground\">{total} files</span>\n {onUpload && (\n <>\n <input\n ref={fileInputRef}\n type=\"file\"\n className=\"hidden\"\n multiple\n accept={accept === \"images\" ? \"image/*\" : undefined}\n onChange={handleUploadChange}\n />\n <button\n onClick={() => fileInputRef.current?.click()}\n className=\"flex items-center gap-1.5 rounded-md bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground transition-opacity hover:opacity-90\"\n >\n <svg className=\"h-3.5 w-3.5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"17 8 12 3 7 8\" />\n <line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\" />\n </svg>\n Upload\n </button>\n </>\n )}\n </div>\n </DialogHeader>\n\n {/* Body */}\n <div className=\"flex flex-1 overflow-hidden\">\n {/* Sidebar: folders */}\n {folders.length > 0 && (\n <aside className=\"flex w-44 shrink-0 flex-col gap-0.5 overflow-y-auto border-r p-2\">\n <button\n onClick={() => onFolderChange?.(\"\")}\n className={cn(\n \"flex w-full items-center gap-2 rounded-md px-2.5 py-1.5 text-sm transition-colors\",\n !activeFolderId\n ? \"bg-primary/10 font-medium text-primary\"\n : \"text-muted-foreground hover:bg-accent\"\n )}\n >\n <svg className=\"h-3.5 w-3.5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\n </svg>\n All files\n </button>\n {folders.map((folder) => (\n <button\n key={folder.id}\n onClick={() => onFolderChange?.(folder.id)}\n className={cn(\n \"flex w-full items-center gap-2 rounded-md px-2.5 py-1.5 text-sm transition-colors\",\n activeFolderId === folder.id\n ? \"bg-primary/10 font-medium text-primary\"\n : \"text-muted-foreground hover:bg-accent\"\n )}\n >\n <span className=\"text-base leading-none\">{folder.icon ?? \"📁\"}</span>\n <span className=\"truncate\">{folder.name}</span>\n </button>\n ))}\n </aside>\n )}\n\n {/* Main area */}\n <div className=\"flex flex-1 flex-col overflow-hidden\">\n {/* Filters bar */}\n <div className=\"flex items-center gap-2 border-b px-4 py-2\">\n {/* Search */}\n <div className=\"relative flex-1\">\n <svg className=\"pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.35-4.35\" />\n </svg>\n <input\n type=\"search\"\n value={search}\n onChange={(e) => onSearch?.(e.target.value)}\n placeholder=\"Search files…\"\n className=\"h-7 w-full rounded-md border border-input bg-muted/50 pl-8 pr-3 text-xs outline-none focus:border-primary focus:ring-1 focus:ring-primary\"\n />\n </div>\n\n {/* Type filter */}\n <div className=\"flex gap-1\">\n {TYPE_OPTIONS.filter((o) => accept === \"images\" ? (o.value === \"\" || o.value === \"image\") : true).map((opt) => (\n <button\n key={opt.value}\n onClick={() => onTypeChange?.(opt.value)}\n className={cn(\n \"rounded px-2 py-1 text-xs transition-colors\",\n typeFilter === opt.value\n ? \"bg-primary text-primary-foreground\"\n : \"text-muted-foreground hover:bg-accent\"\n )}\n >\n {opt.label}\n </button>\n ))}\n </div>\n </div>\n\n {/* Active uploads */}\n {activeUploads.length > 0 && (\n <div className=\"border-b px-4 py-2 space-y-1.5\">\n {activeUploads.map((u, i) => (\n <div key={i} className=\"flex items-center gap-2\">\n <span className=\"flex-1 truncate text-xs text-muted-foreground\">{u.name}</span>\n <div className=\"h-1.5 w-24 overflow-hidden rounded-full bg-muted\">\n <div\n className=\"h-full rounded-full bg-primary transition-all\"\n style={{ width: `${u.progress}%` }}\n />\n </div>\n <span className=\"text-[10px] text-muted-foreground\">{u.progress}%</span>\n </div>\n ))}\n </div>\n )}\n\n {/* Grid */}\n <div className=\"flex-1 overflow-y-auto p-4\">\n <MediaGrid\n files={files}\n selected={localSelected}\n onSelect={handleFileSelect}\n loading={loading}\n columns={5}\n onUploadClick={onUpload ? () => fileInputRef.current?.click() : undefined}\n />\n\n {hasMore && (\n <div className=\"mt-4 flex justify-center\">\n <button\n onClick={onLoadMore}\n className=\"rounded-md border px-4 py-2 text-sm text-muted-foreground transition-colors hover:bg-accent\"\n >\n Load more\n </button>\n </div>\n )}\n </div>\n\n {/* Footer for multiple selection */}\n {multiple && localSelected.size > 0 && (\n <div className=\"flex items-center justify-between border-t px-4 py-3\">\n <span className=\"text-sm text-muted-foreground\">\n {localSelected.size} selected\n </span>\n <div className=\"flex gap-2\">\n <button\n onClick={() => setLocalSelected(new Set())}\n className=\"rounded-md px-3 py-1.5 text-sm text-muted-foreground transition-colors hover:bg-accent\"\n >\n Clear\n </button>\n <button\n onClick={handleConfirm}\n className=\"rounded-md bg-primary px-4 py-1.5 text-sm font-medium text-primary-foreground transition-opacity hover:opacity-90\"\n >\n Insert {localSelected.size} file{localSelected.size !== 1 ? \"s\" : \"\"}\n </button>\n </div>\n </div>\n )}\n </div>\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface ImagePickerFieldProps {\n value?: string;\n filename?: string;\n onPickerOpen?: () => void;\n onRemove?: () => void;\n size?: \"sm\" | \"md\" | \"lg\";\n emptyLabel?: string;\n className?: string;\n}\n\nconst sizeMap = {\n sm: { box: \"h-12 w-12\", icon: \"h-4 w-4\", text: \"text-[9px]\" },\n md: { box: \"h-20 w-20\", icon: \"h-5 w-5\", text: \"text-[10px]\" },\n lg: { box: \"h-24 w-24\", icon: \"h-6 w-6\", text: \"text-xs\" },\n};\n\nexport function ImagePickerField({\n value,\n filename,\n onPickerOpen,\n onRemove,\n size = \"md\",\n emptyLabel = \"Click to select\",\n className,\n}: ImagePickerFieldProps) {\n const sz = sizeMap[size];\n\n return (\n <div className={cn(\"relative inline-flex shrink-0\", className)}>\n <button\n type=\"button\"\n onClick={onPickerOpen}\n className={cn(\n \"group flex items-center justify-center rounded-lg border-2 border-dashed transition-all duration-150\",\n sz.box,\n value\n ? \"border-border overflow-hidden\"\n : \"border-border hover:border-[color:var(--primary)] hover:bg-primary/5\"\n )}\n >\n {value ? (\n <img\n src={value}\n alt={filename ?? \"Selected image\"}\n className=\"h-full w-full rounded-md object-cover\"\n />\n ) : (\n <div className=\"flex flex-col items-center gap-1\">\n {/* Image icon */}\n <svg\n className={cn(sz.icon, \"text-muted-foreground transition-colors group-hover:text-primary\")}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\" />\n <circle cx=\"9\" cy=\"9\" r=\"2\" />\n <path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\" />\n </svg>\n {size !== \"sm\" && (\n <span className={cn(sz.text, \"text-muted-foreground text-center leading-tight transition-colors group-hover:text-primary\")}>\n {emptyLabel}\n </span>\n )}\n </div>\n )}\n </button>\n\n {/* Remove button */}\n {value && onRemove && (\n <button\n type=\"button\"\n onClick={(e) => { e.stopPropagation(); onRemove(); }}\n className=\"absolute -right-1.5 -top-1.5 flex h-5 w-5 items-center justify-center rounded-full bg-destructive text-destructive-foreground shadow-sm transition-opacity hover:opacity-90\"\n aria-label=\"Remove image\"\n >\n <svg className=\"h-2.5 w-2.5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Label } from \"../primitives/label\";\n\nexport interface FormFieldProps {\n label: string;\n error?: string;\n hint?: string;\n required?: boolean;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function FormField({\n label,\n error,\n hint,\n required,\n children,\n className,\n}: FormFieldProps) {\n return (\n <div className={cn(\"space-y-2\", className)}>\n <Label>\n {label}\n {required && <span className=\"ml-1 text-destructive\">*</span>}\n </Label>\n {children}\n {hint && !error && (\n <p className=\"text-sm text-muted-foreground\">{hint}</p>\n )}\n {error && <p className=\"text-sm text-destructive\">{error}</p>}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface FormLayoutProps {\n title?: string;\n description?: string;\n children: React.ReactNode;\n actions?: React.ReactNode;\n className?: string;\n}\n\nexport function FormLayout({\n title,\n description,\n children,\n actions,\n className,\n}: FormLayoutProps) {\n return (\n <div\n className={cn(\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n className\n )}\n >\n {(title || description) && (\n <div className=\"border-b p-6\">\n {title && <h3 className=\"text-lg font-semibold\">{title}</h3>}\n {description && (\n <p className=\"mt-1 text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n )}\n <div className=\"space-y-6 p-6\">{children}</div>\n {actions && (\n <div className=\"flex items-center justify-end gap-2 border-t px-6 py-4\">\n {actions}\n </div>\n )}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface FormSectionProps {\n title: string;\n description?: string;\n children: React.ReactNode;\n className?: string;\n}\n\nexport function FormSection({\n title,\n description,\n children,\n className,\n}: FormSectionProps) {\n return (\n <div className={cn(\"space-y-4\", className)}>\n <div>\n <h4 className=\"text-sm font-medium\">{title}</h4>\n {description && (\n <p className=\"mt-1 text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n <div className=\"space-y-4\">{children}</div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { AlertCircle, CheckCircle2, Info, AlertTriangle, X } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface AlertProps {\n variant?: \"info\" | \"success\" | \"warning\" | \"error\";\n title?: string;\n children: React.ReactNode;\n dismissible?: boolean;\n onDismiss?: () => void;\n className?: string;\n}\n\nconst variantConfig = {\n info: {\n icon: Info,\n classes: \"border-blue-200 bg-blue-50 text-blue-900 dark:border-blue-800 dark:bg-blue-950 dark:text-blue-100\",\n },\n success: {\n icon: CheckCircle2,\n classes: \"border-green-200 bg-green-50 text-green-900 dark:border-green-800 dark:bg-green-950 dark:text-green-100\",\n },\n warning: {\n icon: AlertTriangle,\n classes: \"border-yellow-200 bg-yellow-50 text-yellow-900 dark:border-yellow-800 dark:bg-yellow-950 dark:text-yellow-100\",\n },\n error: {\n icon: AlertCircle,\n classes: \"border-red-200 bg-red-50 text-red-900 dark:border-red-800 dark:bg-red-950 dark:text-red-100\",\n },\n};\n\nexport function Alert({\n variant = \"info\",\n title,\n children,\n dismissible,\n onDismiss,\n className,\n}: AlertProps) {\n const config = variantConfig[variant];\n const Icon = config.icon;\n\n return (\n <div\n className={cn(\n \"relative flex gap-3 rounded-lg border p-4\",\n config.classes,\n className\n )}\n role=\"alert\"\n >\n <Icon className=\"mt-0.5 h-5 w-5 shrink-0\" />\n <div className=\"flex-1\">\n {title && <p className=\"font-medium\">{title}</p>}\n <div className={cn(\"text-sm\", title && \"mt-1\")}>{children}</div>\n </div>\n {dismissible && (\n <button\n onClick={onDismiss}\n className=\"absolute right-3 top-3 rounded-md p-1 opacity-70 hover:opacity-100\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { Loader2 } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface LoadingSpinnerProps {\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n}\n\nconst sizeMap = {\n sm: \"h-4 w-4\",\n md: \"h-6 w-6\",\n lg: \"h-8 w-8\",\n};\n\nexport function LoadingSpinner({ size = \"md\", className }: LoadingSpinnerProps) {\n return (\n <Loader2\n className={cn(\"animate-spin text-muted-foreground\", sizeMap[size], className)}\n />\n );\n}\n","import * as React from \"react\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"../primitives/dialog\";\nimport { Button } from \"../primitives/button\";\nimport { LoadingSpinner } from \"./loading-spinner\";\n\nexport interface ConfirmDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n title: string;\n description?: string;\n confirmLabel?: string;\n cancelLabel?: string;\n onConfirm: () => void;\n loading?: boolean;\n variant?: \"default\" | \"destructive\";\n}\n\nexport function ConfirmDialog({\n open,\n onOpenChange,\n title,\n description,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n onConfirm,\n loading,\n variant = \"default\",\n}: ConfirmDialogProps) {\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n {description && (\n <DialogDescription>{description}</DialogDescription>\n )}\n </DialogHeader>\n <DialogFooter>\n <Button\n variant=\"outline\"\n onClick={() => onOpenChange(false)}\n disabled={loading}\n >\n {cancelLabel}\n </Button>\n <Button\n variant={variant === \"destructive\" ? \"destructive\" : \"default\"}\n onClick={onConfirm}\n disabled={loading}\n >\n {loading && <LoadingSpinner size=\"sm\" className=\"mr-2\" />}\n {confirmLabel}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n","import { useState } from \"react\";\n\nexport function useDisclosure(initial = false) {\n const [isOpen, setIsOpen] = useState(initial);\n return {\n isOpen,\n open: () => setIsOpen(true),\n close: () => setIsOpen(false),\n toggle: () => setIsOpen((prev) => !prev),\n onOpenChange: setIsOpen,\n };\n}\n\nexport function usePagination(total: number, pageSize = 20) {\n const [page, setPage] = useState(1);\n const totalPages = Math.ceil(total / pageSize);\n return { page, setPage, pageSize, total, totalPages };\n}\n","'use client'\n\nimport * as React from 'react'\n\ninterface AuthShellProps {\n children: React.ReactNode\n /** Optional background pattern — 'dots' | 'grid' | 'none' */\n pattern?: 'dots' | 'grid' | 'none'\n maxWidth?: string\n}\n\nexport function AuthShell({ children, pattern = 'dots', maxWidth = '520px' }: AuthShellProps) {\n return (\n <div\n style={{\n minHeight: '100vh',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '24px',\n background: 'var(--background)',\n position: 'relative',\n overflow: 'hidden',\n }}\n >\n {pattern === 'dots' && (\n <div\n aria-hidden\n style={{\n position: 'absolute',\n inset: 0,\n backgroundImage:\n 'radial-gradient(circle, var(--border) 1px, transparent 1px)',\n backgroundSize: '28px 28px',\n opacity: 0.5,\n pointerEvents: 'none',\n }}\n />\n )}\n {pattern === 'grid' && (\n <div\n aria-hidden\n style={{\n position: 'absolute',\n inset: 0,\n backgroundImage:\n 'linear-gradient(var(--border) 1px, transparent 1px), linear-gradient(90deg, var(--border) 1px, transparent 1px)',\n backgroundSize: '32px 32px',\n opacity: 0.4,\n pointerEvents: 'none',\n }}\n />\n )}\n <div style={{ position: 'relative', zIndex: 1, width: '100%', maxWidth }}>\n {children}\n </div>\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\ninterface AuthCardProps {\n children: React.ReactNode\n padding?: string\n}\n\nexport function AuthCard({ children, padding = '24px 28px' }: AuthCardProps) {\n return (\n <div\n style={{\n background: 'var(--card)',\n border: '1px solid var(--border)',\n borderRadius: 'calc(var(--radius, 0.5rem) * 1.5)',\n boxShadow: '0 4px 32px rgba(0,0,0,0.06), 0 1px 4px rgba(0,0,0,0.04)',\n padding,\n width: '100%',\n }}\n >\n {children}\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\ninterface AuthLogoProps {\n /** App name shown next to the logo mark */\n appName?: string\n /** Single letter shown inside the logo box (fallback when no imageUrl) */\n letter?: string\n /** Image URL — when provided, shows image instead of letter box */\n imageUrl?: string\n /** Image/logo size in px */\n size?: number\n}\n\nexport function AuthLogo({ appName = 'Builify CMS', letter = 'B', imageUrl, size = 36 }: AuthLogoProps) {\n return (\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', gap: '10px', marginBottom: '28px' }}>\n {imageUrl ? (\n <img\n src={imageUrl}\n alt={appName}\n width={size}\n height={size}\n style={{ borderRadius: 'calc(var(--radius, 0.5rem) * 1.2)', flexShrink: 0, display: 'block' }}\n />\n ) : (\n <div\n style={{\n width: size,\n height: size,\n background: 'var(--primary)',\n borderRadius: 'calc(var(--radius, 0.5rem) * 1.2)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: 'var(--primary-foreground)',\n fontWeight: 800,\n fontSize: `${size * 0.44}px`,\n flexShrink: 0,\n }}\n >\n {letter}\n </div>\n )}\n <span\n style={{\n fontWeight: 700,\n fontSize: '1.125rem',\n color: 'var(--foreground)',\n letterSpacing: '-0.02em',\n }}\n >\n {appName}\n </span>\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\ninterface AuthHeaderProps {\n title: string\n description?: string\n}\n\nexport function AuthHeader({ title, description }: AuthHeaderProps) {\n return (\n <div style={{ marginBottom: '24px', textAlign: 'center' }}>\n <h1\n style={{\n fontSize: '1.375rem',\n fontWeight: 700,\n color: 'var(--foreground)',\n margin: 0,\n letterSpacing: '-0.02em',\n }}\n >\n {title}\n </h1>\n {description && (\n <p\n style={{\n marginTop: '6px',\n fontSize: '0.875rem',\n color: 'var(--muted-foreground)',\n lineHeight: 1.5,\n }}\n >\n {description}\n </p>\n )}\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\ninterface AuthFieldProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label: string\n error?: string\n hint?: string\n rightLabel?: React.ReactNode\n}\n\nexport function AuthField({ label, error, hint, rightLabel, id, ...props }: AuthFieldProps) {\n const fieldId = id ?? label.toLowerCase().replace(/\\s+/g, '-')\n return (\n <div style={{ display: 'flex', flexDirection: 'column', gap: '6px' }}>\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>\n <label\n htmlFor={fieldId}\n style={{\n fontSize: '0.8125rem',\n fontWeight: 500,\n color: 'var(--foreground)',\n }}\n >\n {label}\n </label>\n {rightLabel && (\n <span style={{ fontSize: '0.8125rem' }}>{rightLabel}</span>\n )}\n </div>\n <input\n id={fieldId}\n style={{\n height: '40px',\n padding: '0 12px',\n background: 'var(--background)',\n border: `1px solid ${error ? 'var(--destructive)' : 'var(--border)'}`,\n borderRadius: 'var(--radius, 0.5rem)',\n color: 'var(--foreground)',\n fontSize: '0.875rem',\n outline: 'none',\n width: '100%',\n boxSizing: 'border-box',\n transition: 'border-color 0.15s, box-shadow 0.15s',\n }}\n onFocus={(e) => {\n e.currentTarget.style.borderColor = 'var(--ring)'\n e.currentTarget.style.boxShadow = '0 0 0 3px color-mix(in oklab, var(--ring) 20%, transparent)'\n props.onFocus?.(e)\n }}\n onBlur={(e) => {\n e.currentTarget.style.borderColor = error ? 'var(--destructive)' : 'var(--border)'\n e.currentTarget.style.boxShadow = 'none'\n props.onBlur?.(e)\n }}\n {...props}\n />\n {error && (\n <p style={{ fontSize: '0.8rem', color: 'var(--destructive)', margin: 0 }}>{error}</p>\n )}\n {hint && !error && (\n <p style={{ fontSize: '0.8rem', color: 'var(--muted-foreground)', margin: 0 }}>{hint}</p>\n )}\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\ninterface AuthButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n loading?: boolean\n variant?: 'primary' | 'outline' | 'ghost'\n fullWidth?: boolean\n}\n\nexport function AuthButton({\n loading,\n variant = 'primary',\n fullWidth = true,\n children,\n disabled,\n style,\n ...props\n}: AuthButtonProps) {\n const base: React.CSSProperties = {\n height: '42px',\n padding: '0 20px',\n borderRadius: 'var(--radius, 0.5rem)',\n fontSize: '0.875rem',\n fontWeight: 600,\n cursor: loading || disabled ? 'not-allowed' : 'pointer',\n opacity: loading || disabled ? 0.65 : 1,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '8px',\n border: 'none',\n outline: 'none',\n transition: 'opacity 0.15s, filter 0.15s',\n width: fullWidth ? '100%' : 'auto',\n ...style,\n }\n\n const variantStyles: Record<string, React.CSSProperties> = {\n primary: {\n background: 'var(--primary)',\n color: 'var(--primary-foreground)',\n },\n outline: {\n background: 'transparent',\n color: 'var(--foreground)',\n border: '1px solid var(--border)',\n },\n ghost: {\n background: 'transparent',\n color: 'var(--foreground)',\n },\n }\n\n return (\n <button\n disabled={loading || disabled}\n style={{ ...base, ...variantStyles[variant] }}\n onMouseEnter={(e) => {\n if (!loading && !disabled) e.currentTarget.style.filter = 'brightness(0.9)'\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.filter = 'none'\n }}\n {...props}\n >\n {loading ? (\n <>\n <span\n style={{\n width: 14,\n height: 14,\n border: '2px solid currentColor',\n borderTopColor: 'transparent',\n borderRadius: '50%',\n display: 'inline-block',\n animation: 'dashui-spin 0.7s linear infinite',\n }}\n />\n {children}\n </>\n ) : children}\n </button>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\nexport function AuthDivider({ label = 'or' }: { label?: string }) {\n return (\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px', margin: '20px 0' }}>\n <div style={{ flex: 1, height: 1, background: 'var(--border)' }} />\n <span style={{ fontSize: '0.75rem', color: 'var(--muted-foreground)', userSelect: 'none' }}>\n {label}\n </span>\n <div style={{ flex: 1, height: 1, background: 'var(--border)' }} />\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\ninterface AuthFootnoteProps {\n text: string\n linkText: string\n linkHref: string\n}\n\nexport function AuthFootnote({ text, linkText, linkHref }: AuthFootnoteProps) {\n return (\n <p style={{\n textAlign: 'center',\n marginTop: '20px',\n fontSize: '0.8125rem',\n color: 'var(--muted-foreground)',\n }}>\n {text}{' '}\n <a\n href={linkHref}\n style={{\n color: 'var(--primary)',\n fontWeight: 600,\n textDecoration: 'none',\n }}\n onMouseEnter={(e) => e.currentTarget.style.textDecoration = 'underline'}\n onMouseLeave={(e) => e.currentTarget.style.textDecoration = 'none'}\n >\n {linkText}\n </a>\n </p>\n )\n}\n","'use client'\n\nimport * as React from 'react'\n\ninterface SkeletonProps {\n width?: string | number\n height?: string | number\n rounded?: string\n className?: string\n style?: React.CSSProperties\n}\n\nexport function Skeleton({ width = '100%', height = 16, rounded, style }: SkeletonProps) {\n return (\n <div\n style={{\n width,\n height,\n background: 'var(--muted, #e5e7eb)',\n borderRadius: rounded ?? 'var(--radius, 0.5rem)',\n overflow: 'hidden',\n position: 'relative',\n flexShrink: 0,\n ...style,\n }}\n >\n <div\n style={{\n position: 'absolute',\n inset: 0,\n background:\n 'linear-gradient(90deg, transparent 0%, color-mix(in oklab, var(--background, #fff) 40%, transparent) 50%, transparent 100%)',\n animation: 'dashui-shimmer 1.6s ease-in-out infinite',\n }}\n />\n </div>\n )\n}\n","// ─── Primitives ──────────────────────────────────────────────\nexport * from './components/primitives/button'\nexport * from './components/primitives/badge'\nexport * from './components/primitives/card'\nexport * from './components/primitives/checkbox'\nexport * from './components/primitives/dialog'\nexport * from './components/primitives/dropdown-menu'\nexport * from './components/primitives/input'\nexport * from './components/primitives/label'\nexport * from './components/primitives/popover'\nexport * from './components/primitives/select'\nexport * from './components/primitives/separator'\nexport * from './components/primitives/skeleton'\nexport * from './components/primitives/switch'\nexport * from './components/primitives/tabs'\nexport * from './components/primitives/textarea'\nexport * from './components/primitives/tooltip'\n\n// ─── Layout ──────────────────────────────────────────────────\nexport * from './components/layout/app-shell'\nexport * from './components/layout/sidebar'\nexport * from './components/layout/top-bar'\nexport * from './components/layout/page'\nexport * from './components/layout/page-section'\nexport * from './components/layout/search-bar'\nexport * from './components/layout/notification-bell'\nexport * from './components/layout/theme-toggle'\nexport * from './components/layout/dashboard-layout'\n\n// ─── Data Display ─────────────────────────────────────────────\nexport * from './components/data/data-table'\nexport * from './components/data/empty-state'\nexport * from './components/data/pagination'\nexport * from './components/data/stats'\nexport * from './components/data/plan-badge'\nexport * from './components/data/storage-bar'\n\n// ─── Media ────────────────────────────────────────────────────\nexport * from './components/media/media-card'\nexport * from './components/media/media-grid'\nexport * from './components/media/media-picker-dialog'\nexport * from './components/media/image-picker-field'\n\n// ─── Form ─────────────────────────────────────────────────────\nexport * from './components/form/form-field'\nexport * from './components/form/form-layout'\nexport * from './components/form/form-section'\n\n// ─── Feedback ─────────────────────────────────────────────────\nexport * from './components/feedback/alert'\nexport * from './components/feedback/confirm-dialog'\nexport * from './components/feedback/loading-spinner'\n\n// ─── CMS-specific (coming soon) ───────────────────────────────\n// export * from './components/cms/resource-list'\n// export * from './components/cms/index-table'\n// export * from './components/cms/contextual-save-bar'\n// export * from './components/cms/color-scheme-picker'\n// export * from './components/cms/page-actions'\n\n// ─── Hooks ────────────────────────────────────────────────────\nexport * from './hooks'\n\n// ─── Utils ────────────────────────────────────────────────────\nexport * from './lib/utils'\n\n// ─── Auth Components ──────────────────────────────────────────\nexport * from './components/auth'\n\n// ─── Skeleton ─────────────────────────────────────────────────\nexport { Skeleton } from './components/Skeleton'\n\n// ─── Theme (next-themes re-export) ────────────────────────────\nexport { ThemeProvider, useTheme } from 'next-themes'\n"],"mappings":"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","names":["cva","jsx","cva","React","jsx","React","jsx","React","jsx","React","Check","jsx","jsxs","Check","React","jsx","React","jsx","Label","React","jsx","React","Check","jsx","jsxs","Check","React","jsx","Separator","jsx","React","jsx","React","jsx","React","jsx","React","jsx","jsx","jsxs","React","ChevronDown","jsx","jsxs","Icon","ChevronDown","jsx","jsxs","React","ChevronRight","jsx","jsxs","ChevronRight","jsx","jsxs","jsx","jsxs","jsx","jsxs","React","jsx","jsxs","React","Fragment","jsx","jsxs","jsx","jsxs","jsx","jsxs","Icon","React","ChevronRight","jsx","jsxs","ChevronRight","jsx","jsxs","Icon","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","React","Fragment","jsx","jsxs","jsx","jsxs","jsx","jsxs","Label","jsx","jsxs","jsx","jsxs","X","jsx","jsxs","Icon","X","jsx","sizeMap","jsx","jsxs","useState","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","Fragment","jsx","jsxs","jsx","jsxs","jsx","jsxs","jsx","Skeleton","useTheme"]}
|