@snowluma/ui 1.8.2

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/cn.ts","../src/components/button.tsx","../src/components/alert-dialog.tsx","../src/components/avatar.tsx","../src/components/badge.tsx","../src/components/card.tsx","../src/components/checkbox.tsx","../src/components/dialog.tsx","../src/components/input.tsx","../src/components/label.tsx","../src/components/progress.tsx","../src/components/scroll-area.tsx","../src/components/select.tsx","../src/components/separator.tsx","../src/components/sheet.tsx","../src/components/skeleton.tsx","../src/components/switch.tsx","../src/components/tabs.tsx","../src/components/toaster.tsx","../src/components/tooltip.tsx","../src/components/popover.tsx","../src/components/kbd.tsx","../src/components/status-dot.tsx","../src/components/empty-state.tsx"],"names":["React","React2","jsx","React3","cva","React4","React5","React6","jsxs","React7","React8","React9","React10","Check","Separator","React12","DialogPrimitive2","React13","X","React14","React15","Sonner","React16","React17","React18"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../lib/cn';\n\nexport const buttonVariants = cva(\n [\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lg text-sm font-medium\",\n \"transition-[color,background-color,border-color,box-shadow,transform] duration-150 ease-out\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0\",\n \"outline-none focus-visible:ring-[3px] focus-visible:ring-ring/40 focus-visible:border-ring\",\n \"active:translate-y-px cursor-pointer\",\n ].join(' '),\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground shadow-sm hover:bg-primary/90 active:bg-primary/95',\n destructive:\n 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90 active:bg-destructive/95',\n outline:\n 'border border-border bg-card text-foreground shadow-xs hover:bg-accent hover:text-accent-foreground hover:border-border/80',\n secondary: 'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80',\n ghost: 'text-foreground hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline shadow-none',\n success: 'bg-success text-success-foreground shadow-sm hover:bg-success/90',\n warning: 'bg-warning text-warning-foreground shadow-sm hover:bg-warning/90',\n },\n size: {\n default: 'h-9 px-4 py-2',\n sm: 'h-8 rounded-md px-3 text-xs',\n lg: 'h-10 rounded-lg px-6',\n icon: 'size-9 rounded-lg',\n 'icon-sm': 'size-8 rounded-md',\n 'icon-xs': 'size-7 rounded-md',\n },\n },\n defaultVariants: { variant: 'default', size: 'default' },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n return <Comp className={cn(buttonVariants({ variant, size }), className)} ref={ref} {...props} />;\n },\n);\nButton.displayName = 'Button';\n","import * as React from 'react';\nimport * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';\nimport { cn } from '../lib/cn';\nimport { buttonVariants } from './button';\n\nconst AlertDialog = AlertDialogPrimitive.Root;\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n ref={ref}\n className={cn(\n 'fixed inset-0 z-50 bg-background/60 backdrop-blur-sm',\n '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));\nAlertDialogOverlay.displayName = 'AlertDialogOverlay';\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed left-1/2 top-1/2 z-50 grid w-[calc(100%-2rem)] max-w-lg grid-cols-[minmax(0,1fr)] -translate-x-1/2 -translate-y-1/2 gap-5 rounded-2xl border border-border bg-popover p-6 text-popover-foreground shadow-xl ring-1 ring-foreground/5',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out 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 className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n));\nAlertDialogContent.displayName = 'AlertDialogContent';\n\nconst AlertDialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col gap-1.5 text-left', className)} {...props} />\n);\n\nconst AlertDialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className)} {...props} />\n);\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title ref={ref} className={cn('text-base font-semibold leading-tight tracking-tight', className)} {...props} />\n));\nAlertDialogTitle.displayName = 'AlertDialogTitle';\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description ref={ref} className={cn('text-sm leading-relaxed text-muted-foreground', className)} {...props} />\n));\nAlertDialogDescription.displayName = 'AlertDialogDescription';\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action ref={ref} className={cn(buttonVariants(), className)} {...props} />\n));\nAlertDialogAction.displayName = 'AlertDialogAction';\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel ref={ref} className={cn(buttonVariants({ variant: 'outline' }), 'mt-0', className)} {...props} />\n));\nAlertDialogCancel.displayName = 'AlertDialogCancel';\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};\n","import * as React from 'react';\nimport { cn } from '../lib/cn';\n\ninterface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: number;\n}\n\nconst Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(\n ({ className, size = 36, style, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('relative inline-flex shrink-0 overflow-hidden rounded-full bg-muted', className)}\n style={{ width: size, height: size, ...style }}\n {...props}\n />\n )\n);\nAvatar.displayName = 'Avatar';\n\nconst AvatarImage = React.forwardRef<HTMLImageElement, React.ImgHTMLAttributes<HTMLImageElement>>(\n ({ className, alt = '', ...props }, ref) => (\n <img\n ref={ref}\n alt={alt}\n className={cn('aspect-square size-full object-cover', className)}\n referrerPolicy=\"no-referrer\"\n {...props}\n />\n )\n);\nAvatarImage.displayName = 'AvatarImage';\n\nconst AvatarFallback = React.forwardRef<HTMLSpanElement, React.HTMLAttributes<HTMLSpanElement>>(\n ({ className, ...props }, ref) => (\n <span\n ref={ref}\n className={cn('flex size-full items-center justify-center bg-muted text-xs font-medium text-muted-foreground', className)}\n {...props}\n />\n )\n);\nAvatarFallback.displayName = 'AvatarFallback';\n\nexport { Avatar, AvatarImage, AvatarFallback };\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../lib/cn';\n\nexport const badgeVariants = cva(\n 'inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-[11px] font-medium leading-none transition-colors',\n {\n variants: {\n variant: {\n default: 'border-transparent bg-primary/15 text-primary',\n secondary: 'border-transparent bg-secondary text-secondary-foreground',\n destructive: 'border-transparent bg-destructive/15 text-destructive',\n success: 'border-transparent bg-success/15 text-success',\n warning: 'border-transparent bg-warning/15 text-warning',\n info: 'border-transparent bg-info/15 text-info',\n outline: 'border-border bg-card text-foreground',\n soft: 'border-transparent bg-muted text-muted-foreground',\n },\n size: {\n default: 'px-2 py-0.5 text-[11px]',\n sm: 'px-1.5 py-px text-[10px]',\n lg: 'px-2.5 py-1 text-xs',\n },\n },\n defaultVariants: { variant: 'default', size: 'default' },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {}\n\nexport function Badge({ className, variant, size, ...props }: BadgeProps) {\n return <span className={cn(badgeVariants({ variant, size }), className)} {...props} />;\n}\n","import * as React from 'react';\nimport { cn } from '../lib/cn';\n\nconst Card = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('rounded-xl border border-border bg-card text-card-foreground shadow-sm', className)}\n {...props}\n />\n ),\n);\nCard.displayName = 'Card';\n\nconst CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col gap-1.5 p-5', className)} {...props} />\n ),\n);\nCardHeader.displayName = 'CardHeader';\n\nconst CardTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-base font-semibold leading-tight tracking-tight', className)} {...props} />\n ),\n);\nCardTitle.displayName = 'CardTitle';\n\nconst CardDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-sm leading-relaxed text-muted-foreground', className)} {...props} />\n ),\n);\nCardDescription.displayName = 'CardDescription';\n\nconst CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-5 pt-0', className)} {...props} />\n ),\n);\nCardContent.displayName = 'CardContent';\n\nconst CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center gap-2 p-5 pt-0', className)} {...props} />\n ),\n);\nCardFooter.displayName = 'CardFooter';\n\nexport { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter };\n","import * as React from 'react';\nimport * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { Check, Minus } from 'lucide-react';\nimport { cn } from '../lib/cn';\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 size-4 shrink-0 rounded-[5px] border border-border bg-card shadow-xs transition-colors',\n 'hover:border-border/80',\n 'focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/40',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary',\n 'data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary',\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n {props.checked === 'indeterminate' ? <Minus className=\"size-3\" /> : <Check className=\"size-3\" />}\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = 'Checkbox';\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/cn';\n\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogPortal = DialogPrimitive.Portal;\nconst DialogClose = DialogPrimitive.Close;\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-background/60 backdrop-blur-sm',\n '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 = 'DialogOverlay';\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & { showClose?: boolean }\n>(({ className, children, showClose = true, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n // grid-cols-[minmax(0,1fr)] keeps wide children (long select text,\n // file paths, etc.) from blowing past the dialog's max-w-lg by\n // forcing the implicit grid track's `min-width: auto` to 0.\n 'fixed left-1/2 top-1/2 z-50 grid w-[calc(100%-2rem)] max-w-lg grid-cols-[minmax(0,1fr)] -translate-x-1/2 -translate-y-1/2 gap-5 rounded-2xl border border-border bg-popover p-6 text-popover-foreground shadow-xl ring-1 ring-foreground/5',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out 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-[state=open]:slide-in-from-top-2',\n className,\n )}\n {...props}\n >\n {children}\n {showClose && (\n <DialogPrimitive.Close className=\"absolute right-4 top-4 inline-flex size-7 items-center justify-center rounded-md text-muted-foreground opacity-80 transition hover:bg-muted hover:opacity-100 focus:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/40\">\n <X className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = 'DialogContent';\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col gap-1.5 text-left', className)} {...props} />\n);\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className)} {...props} />\n);\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('text-base font-semibold leading-tight tracking-tight', className)}\n {...props}\n />\n));\nDialogTitle.displayName = 'DialogTitle';\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 leading-relaxed text-muted-foreground', className)}\n {...props}\n />\n));\nDialogDescription.displayName = 'DialogDescription';\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","import * as React from 'react';\nimport { cn } from '../lib/cn';\n\nconst Input = React.forwardRef<HTMLInputElement, React.InputHTMLAttributes<HTMLInputElement>>(\n ({ className, type, ...props }, ref) => (\n <input\n type={type}\n ref={ref}\n className={cn(\n 'flex h-9 w-full min-w-0 rounded-lg border border-border bg-card px-3 py-1 text-sm text-foreground shadow-xs transition-[color,box-shadow,border-color,background-color] outline-none',\n 'file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium',\n 'placeholder:text-muted-foreground',\n 'hover:border-border/80',\n 'focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/40',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'aria-invalid:border-destructive aria-invalid:ring-destructive/20',\n className,\n )}\n {...props}\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/cn';\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('text-xs font-medium leading-none text-muted-foreground select-none', className)}\n {...props}\n />\n));\nLabel.displayName = 'Label';\n\nexport { Label };\n","import * as React from 'react';\nimport { cn } from '../lib/cn';\n\ninterface ProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n value?: number;\n indicatorClassName?: string;\n /**\n * When true, the bar shows an animated marquee instead of a fixed\n * width — useful when we know a job is running but don't yet know\n * the total size (e.g. a download whose Content-Length is unknown).\n */\n indeterminate?: boolean;\n}\n\nconst Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n ({ className, value = 0, indicatorClassName, indeterminate = false, ...props }, ref) => {\n const clamped = Math.max(0, Math.min(100, value));\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : clamped}\n aria-valuemin={0}\n aria-valuemax={100}\n className={cn(\n 'relative h-2 w-full overflow-hidden rounded-full bg-muted',\n className,\n )}\n {...props}\n >\n {indeterminate ? (\n <div\n className={cn(\n 'absolute inset-y-0 left-0 w-1/3 rounded-full bg-primary',\n 'animate-[progress-marquee_1.4s_ease-in-out_infinite]',\n indicatorClassName,\n )}\n />\n ) : (\n <div\n className={cn(\n 'h-full rounded-full bg-primary transition-[width] duration-200 ease-out',\n indicatorClassName,\n )}\n style={{ width: `${clamped}%` }}\n />\n )}\n </div>\n );\n },\n);\nProgress.displayName = 'Progress';\n\nexport { Progress };\n","import * as React from 'react';\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport { cn } from '../lib/cn';\n\ninterface ScrollAreaProps extends React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> {\n viewportClassName?: string;\n}\n\nconst ScrollArea = React.forwardRef<React.ElementRef<typeof ScrollAreaPrimitive.Root>, ScrollAreaProps>(\n ({ className, children, viewportClassName, type = 'hover', ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n type={type}\n className={cn('relative overflow-hidden', className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n className={cn('size-full rounded-[inherit] [&>div]:!block', viewportClassName)}\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollBar orientation=\"horizontal\" />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n ),\n);\nScrollArea.displayName = 'ScrollArea';\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = 'vertical', ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n 'flex touch-none select-none p-0.5 transition-colors',\n orientation === 'vertical' && 'h-full w-2.5 border-l border-l-transparent',\n orientation === 'horizontal' && 'h-2.5 w-full flex-col border-t border-t-transparent',\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border transition-colors hover:bg-muted-foreground/50\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = 'ScrollBar';\n\nexport { ScrollArea, ScrollBar };\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/cn';\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 'group flex h-9 w-full min-w-0 items-center justify-between gap-2 rounded-lg border border-border bg-card px-3 py-1 text-sm shadow-xs outline-none transition-[color,box-shadow,background-color,border-color]',\n 'hover:border-border/80 hover:bg-card/70',\n 'placeholder:text-muted-foreground',\n 'focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/40',\n 'data-[state=open]:border-ring data-[state=open]:ring-[3px] data-[state=open]:ring-ring/40',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[placeholder]:text-muted-foreground',\n // Selected text mustn't push the chevron out of the trigger.\n '[&>span:not([data-radix-select-icon])]:flex-1 [&>span:not([data-radix-select-icon])]:min-w-0 [&>span:not([data-radix-select-icon])]:truncate [&>span:not([data-radix-select-icon])]:text-left',\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild data-radix-select-icon>\n <ChevronDown className=\"size-4 shrink-0 opacity-60 transition-transform group-data-[state=open]:rotate-180\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = 'SelectTrigger';\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 text-muted-foreground', className)}\n {...props}\n >\n <ChevronUp className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = 'SelectScrollUpButton';\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 text-muted-foreground', className)}\n {...props}\n >\n <ChevronDown className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName = 'SelectScrollDownButton';\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 position={position}\n sideOffset={4}\n className={cn(\n // Solid popover surface — explicit bg + ring for visibility against any background.\n 'relative z-50 max-h-(--radix-select-content-available-height) min-w-(--radix-select-trigger-width) overflow-hidden rounded-xl border border-border bg-popover text-popover-foreground shadow-xl ring-1 ring-foreground/5',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out 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 position === 'popper' &&\n 'data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1',\n className,\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n 'p-1',\n position === 'popper' &&\n 'h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width)',\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = 'SelectContent';\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('px-2 py-1.5 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground', className)}\n {...props}\n />\n));\nSelectLabel.displayName = 'SelectLabel';\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 gap-2 rounded-md py-1.5 pl-2 pr-8 text-sm outline-none transition-colors',\n 'focus:bg-accent focus:text-accent-foreground',\n 'data-[state=checked]:font-medium',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center text-primary\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = 'SelectItem';\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator ref={ref} className={cn('-mx-1 my-1 h-px bg-border', className)} {...props} />\n));\nSelectSeparator.displayName = 'SelectSeparator';\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n","import * as React from 'react';\nimport * as SeparatorPrimitive from '@radix-ui/react-separator';\nimport { cn } from '../lib/cn';\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'shrink-0 bg-border',\n orientation === 'horizontal' ? 'h-px w-full' : 'h-full w-px',\n className\n )}\n {...props}\n />\n));\nSeparator.displayName = 'Separator';\n\nexport { Separator };\n","import * as React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../lib/cn';\n\nconst Sheet = DialogPrimitive.Root;\nconst SheetTrigger = DialogPrimitive.Trigger;\nconst SheetClose = DialogPrimitive.Close;\nconst SheetPortal = DialogPrimitive.Portal;\n\nconst SheetOverlay = 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/50 backdrop-blur-sm 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));\nSheetOverlay.displayName = 'SheetOverlay';\n\nconst sheetVariants = cva(\n 'fixed z-50 gap-4 bg-card p-0 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500 outline-none',\n {\n variants: {\n side: {\n top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',\n bottom: 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n left: 'inset-y-0 left-0 h-full w-3/4 max-w-xs border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',\n right: 'inset-y-0 right-0 h-full w-3/4 max-w-xs border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',\n },\n },\n defaultVariants: { side: 'right' },\n }\n);\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>,\n VariantProps<typeof sheetVariants> {\n showClose?: boolean;\n}\n\nconst SheetContent = React.forwardRef<React.ElementRef<typeof DialogPrimitive.Content>, SheetContentProps>(\n ({ side = 'right', className, children, showClose = true, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <DialogPrimitive.Content ref={ref} className={cn(sheetVariants({ side }), className)} {...props}>\n {children}\n {showClose && (\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none cursor-pointer\">\n <X className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </SheetPortal>\n )\n);\nSheetContent.displayName = 'SheetContent';\n\nexport { Sheet, SheetTrigger, SheetClose, SheetContent, SheetPortal, SheetOverlay };\n","import * as React from 'react';\nimport { cn } from '../lib/cn';\n\nexport function Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('animate-pulse rounded-md bg-muted', className)} {...props} />;\n}\n","import * as React from 'react';\nimport * as SwitchPrimitive from '@radix-ui/react-switch';\nimport { cn } from '../lib/cn';\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitive.Root\n ref={ref}\n className={cn(\n 'peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border border-border shadow-inner transition-colors',\n 'focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/40',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n // Checked: filled with primary\n 'data-[state=checked]:bg-primary data-[state=checked]:border-primary',\n // Unchecked: visible track that contrasts with both surface modes\n 'data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-muted-foreground/25',\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n className={cn(\n 'pointer-events-none block size-4 rounded-full shadow-md ring-0 transition-transform',\n // Thumb always uses card surface so it pops against the track in both states.\n 'bg-card dark:bg-foreground/95',\n 'data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0',\n )}\n />\n </SwitchPrimitive.Root>\n));\nSwitch.displayName = 'Switch';\n\nexport { Switch };\n","import * as React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport { cn } from '../lib/cn';\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-9 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground',\n className\n )}\n {...props}\n />\n));\nTabsList.displayName = 'TabsList';\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 text-sm font-medium transition-all',\n 'focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/40',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm',\n className\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = 'TabsTrigger';\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('mt-2 outline-none', className)}\n {...props}\n />\n));\nTabsContent.displayName = 'TabsContent';\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import { Toaster as Sonner, toast, type ToasterProps } from 'sonner';\n\n/**\n * SnowLuma-themed toaster. Uses the Tailwind `--*-foreground / --background`\n * tokens defined in `@snowluma/ui/styles/theme.css` so toasts match the\n * surrounding chrome in both light and dark mode.\n */\nexport function Toaster(props: ToasterProps) {\n return (\n <Sonner\n position=\"bottom-right\"\n richColors\n closeButton\n theme=\"system\"\n toastOptions={{\n classNames: {\n toast: 'group toast group-[.toaster]:bg-card group-[.toaster]:text-card-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg',\n description: 'group-[.toast]:text-muted-foreground',\n actionButton: 'group-[.toast]:bg-primary group-[.toast]:text-primary-foreground',\n cancelButton: 'group-[.toast]:bg-muted group-[.toast]:text-muted-foreground',\n },\n }}\n {...props}\n />\n );\n}\n\nexport { toast };\nexport type { ToasterProps };\n","import * as React from 'react';\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport { cn } from '../lib/cn';\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 = 6, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 max-w-xs overflow-hidden rounded-md border border-border bg-popover px-2.5 py-1.5 text-xs text-popover-foreground shadow-lg ring-1 ring-foreground/5',\n 'data-[state=delayed-open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=delayed-open]:fade-in-0',\n 'data-[state=delayed-open]:zoom-in-95 data-[state=closed]:zoom-out-95',\n className,\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = 'TooltipContent';\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import * as React from 'react';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { cn } from '../lib/cn';\n\nconst Popover = PopoverPrimitive.Root;\nconst PopoverTrigger = PopoverPrimitive.Trigger;\nconst PopoverAnchor = PopoverPrimitive.Anchor;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 6, ...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-xl border border-border bg-popover p-4 text-popover-foreground shadow-xl ring-1 ring-foreground/5 outline-none',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out 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 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 = 'PopoverContent';\n\nexport { Popover, PopoverTrigger, PopoverAnchor, PopoverContent };\n","import * as React from 'react';\nimport { cn } from '../lib/cn';\n\n/** Small inline keyboard-key label, e.g. `<Kbd>⌘K</Kbd>`. */\nexport const Kbd = React.forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(\n ({ className, ...props }, ref) => (\n <kbd\n ref={ref}\n className={cn(\n 'inline-flex h-5 min-w-[1.25rem] items-center justify-center rounded border border-border bg-muted px-1 font-mono text-[10px] font-medium text-muted-foreground',\n className,\n )}\n {...props}\n />\n ),\n);\nKbd.displayName = 'Kbd';\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../lib/cn';\n\n/**\n * A semantic colored status dot — drop-in replacement for ad-hoc emoji\n * (🟢 / 🟡 / 🔴) so we keep visual rhythm with the rest of the Lucide\n * iconography. `pulse` adds a soft halo for the \"active\" state.\n */\nconst dotVariants = cva('inline-block shrink-0 rounded-full', {\n variants: {\n tone: {\n success: 'bg-success',\n warning: 'bg-warning',\n destructive: 'bg-destructive',\n info: 'bg-info',\n muted: 'bg-muted-foreground/50',\n primary: 'bg-primary',\n },\n size: {\n xs: 'size-1.5',\n sm: 'size-2',\n md: 'size-2.5',\n lg: 'size-3',\n },\n },\n defaultVariants: { tone: 'muted', size: 'sm' },\n});\n\nexport interface StatusDotProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof dotVariants> {\n pulse?: boolean;\n}\n\nexport function StatusDot({ className, tone, size, pulse, ...props }: StatusDotProps) {\n return (\n <span\n className={cn(\n 'relative inline-flex items-center justify-center',\n pulse && 'before:absolute before:inset-0 before:rounded-full before:bg-current before:opacity-30 before:animate-ping',\n className,\n )}\n {...props}\n >\n <span className={cn(dotVariants({ tone, size }), 'relative')} aria-hidden />\n </span>\n );\n}\n","import * as React from 'react';\nimport { cn } from '../lib/cn';\n\ninterface EmptyStateProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n icon?: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n action?: React.ReactNode;\n}\n\n/**\n * Generic \"nothing here yet\" placeholder. Used by Bot list, search-with-no-\n * results, log filters that filtered everything out, etc.\n */\nexport function EmptyState({ icon, title, description, action, className, ...props }: EmptyStateProps) {\n return (\n <div\n className={cn(\n 'flex flex-col items-center justify-center gap-3 rounded-xl border border-dashed border-border bg-card/40 px-6 py-12 text-center',\n className,\n )}\n {...props}\n >\n {icon && (\n <div className=\"flex size-12 items-center justify-center rounded-full bg-muted text-muted-foreground\">\n {icon}\n </div>\n )}\n <div className=\"space-y-1\">\n <h3 className=\"text-sm font-medium text-foreground\">{title}</h3>\n {description && <p className=\"text-xs leading-relaxed text-muted-foreground\">{description}</p>}\n </div>\n {action && <div className=\"pt-1\">{action}</div>}\n </div>\n );\n}\n"]}
package/package.json ADDED
@@ -0,0 +1,89 @@
1
+ {
2
+ "name": "@snowluma/ui",
3
+ "author": {
4
+ "name": "MotricSeven",
5
+ "email": "motricseven@gmail.com"
6
+ },
7
+ "version": "1.8.2",
8
+ "description": "Shared SnowLuma UI primitives — Tailwind 4 theme tokens + shadcn-style atomic components",
9
+ "keywords": [
10
+ "snowluma",
11
+ "ui",
12
+ "shadcn",
13
+ "tailwind",
14
+ "react"
15
+ ],
16
+ "homepage": "https://github.com/SnowLuma/SnowLuma#readme",
17
+ "bugs": {
18
+ "url": "https://github.com/SnowLuma/SnowLuma/issues"
19
+ },
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "git+https://github.com/SnowLuma/SnowLuma.git",
23
+ "directory": "packages/ui"
24
+ },
25
+ "license": "UNLICENSED",
26
+ "type": "module",
27
+ "sideEffects": [
28
+ "**/*.css"
29
+ ],
30
+ "main": "./dist/index.js",
31
+ "types": "./dist/index.d.ts",
32
+ "exports": {
33
+ ".": {
34
+ "types": "./dist/index.d.ts",
35
+ "import": "./dist/index.js"
36
+ },
37
+ "./styles/theme.css": "./src/styles/theme.css",
38
+ "./package.json": "./package.json"
39
+ },
40
+ "files": [
41
+ "dist",
42
+ "src/styles"
43
+ ],
44
+ "scripts": {
45
+ "clean": "node -e \"const fs = require('node:fs'); fs.rmSync('dist', { recursive: true, force: true })\"",
46
+ "prebuild": "pnpm run clean",
47
+ "build": "tsup",
48
+ "dev": "tsup --watch",
49
+ "prepack": "pnpm run build",
50
+ "typecheck": "tsc --noEmit"
51
+ },
52
+ "publishConfig": {
53
+ "access": "public"
54
+ },
55
+ "engines": {
56
+ "node": ">=22"
57
+ },
58
+ "peerDependencies": {
59
+ "react": "^19.0.0",
60
+ "react-dom": "^19.0.0"
61
+ },
62
+ "dependencies": {
63
+ "@radix-ui/react-alert-dialog": "^1.1.7",
64
+ "@radix-ui/react-checkbox": "^1.1.5",
65
+ "@radix-ui/react-dialog": "^1.1.7",
66
+ "@radix-ui/react-label": "^2.1.3",
67
+ "@radix-ui/react-popover": "^1.1.7",
68
+ "@radix-ui/react-scroll-area": "^1.2.4",
69
+ "@radix-ui/react-select": "^2.2.6",
70
+ "@radix-ui/react-separator": "^1.1.3",
71
+ "@radix-ui/react-slot": "^1.1.3",
72
+ "@radix-ui/react-switch": "^1.2.6",
73
+ "@radix-ui/react-tabs": "^1.1.13",
74
+ "@radix-ui/react-tooltip": "^1.1.9",
75
+ "class-variance-authority": "^0.7.1",
76
+ "clsx": "^2.1.1",
77
+ "lucide-react": "^0.469.0",
78
+ "sonner": "^2.0.6",
79
+ "tailwind-merge": "^3.5.0"
80
+ },
81
+ "devDependencies": {
82
+ "@types/react": "^19.2.14",
83
+ "@types/react-dom": "^19.2.3",
84
+ "react": "^19.2.5",
85
+ "react-dom": "^19.2.5",
86
+ "tsup": "^8.5.0",
87
+ "typescript": "catalog:"
88
+ }
89
+ }
@@ -0,0 +1,259 @@
1
+ /**
2
+ * @snowluma/ui — Tailwind 4 theme tokens.
3
+ *
4
+ * Consumer setup:
5
+ * @import "tailwindcss";
6
+ * @import "tw-animate-css";
7
+ * @import "@snowluma/ui/styles/theme.css";
8
+ * @source "../node_modules/@snowluma/ui/dist/**\/*.js";
9
+ */
10
+
11
+ @custom-variant dark (&:where(.dark, .dark *));
12
+
13
+ :root {
14
+ /* Surface ramp — light mode: near-white surfaces over a faint blue base. */
15
+ --radius: 0.625rem;
16
+
17
+ --background: oklch(99% 0.004 240);
18
+ --foreground: oklch(20% 0.03 250);
19
+
20
+ --card: oklch(100% 0 0);
21
+ --card-foreground: oklch(20% 0.03 250);
22
+
23
+ --popover: oklch(100% 0 0);
24
+ --popover-foreground: oklch(20% 0.03 250);
25
+
26
+ /* sky accent ramp */
27
+ --primary: oklch(64% 0.16 230);
28
+ --primary-foreground: oklch(99% 0.005 240);
29
+
30
+ --secondary: oklch(96.5% 0.012 240);
31
+ --secondary-foreground: oklch(22% 0.03 250);
32
+
33
+ --muted: oklch(96.5% 0.012 240);
34
+ --muted-foreground: oklch(48% 0.02 250);
35
+
36
+ --accent: oklch(94% 0.04 230);
37
+ --accent-foreground: oklch(28% 0.08 230);
38
+
39
+ --destructive: oklch(58% 0.22 27);
40
+ --destructive-foreground: oklch(99% 0.005 240);
41
+
42
+ --success: oklch(64% 0.16 155);
43
+ --success-foreground: oklch(99% 0.005 240);
44
+
45
+ --warning: oklch(76% 0.16 75);
46
+ --warning-foreground: oklch(20% 0.05 75);
47
+
48
+ --info: oklch(64% 0.16 230);
49
+ --info-foreground: oklch(99% 0.005 240);
50
+
51
+ --border: oklch(91% 0.012 240);
52
+ --input: oklch(94% 0.012 240);
53
+ --ring: oklch(64% 0.16 230);
54
+
55
+ --sidebar: oklch(98% 0.006 240);
56
+ --sidebar-foreground: oklch(25% 0.03 250);
57
+ --sidebar-primary: oklch(64% 0.16 230);
58
+ --sidebar-primary-foreground: oklch(99% 0.005 240);
59
+ --sidebar-accent: oklch(94% 0.03 230);
60
+ --sidebar-accent-foreground: oklch(28% 0.08 230);
61
+ --sidebar-border: oklch(91% 0.012 240);
62
+ --sidebar-ring: oklch(64% 0.16 230);
63
+
64
+ --chrome-height: 3.25rem; /* 52px — uniform top-bar height */
65
+ --titlebar-height: 2rem; /* 32px — Windows native titlebar height */
66
+
67
+ --shadow-color: 240 6% 10%;
68
+ --shadow-xs: 0 1px 2px 0 hsl(var(--shadow-color) / 0.05);
69
+ --shadow-sm: 0 1px 3px 0 hsl(var(--shadow-color) / 0.08), 0 1px 2px -1px hsl(var(--shadow-color) / 0.06);
70
+ --shadow-md: 0 4px 6px -1px hsl(var(--shadow-color) / 0.08), 0 2px 4px -2px hsl(var(--shadow-color) / 0.04);
71
+ --shadow-lg: 0 10px 16px -3px hsl(var(--shadow-color) / 0.10), 0 4px 6px -4px hsl(var(--shadow-color) / 0.05);
72
+ --shadow-xl: 0 20px 28px -8px hsl(var(--shadow-color) / 0.14);
73
+ }
74
+
75
+ .dark {
76
+ --background: oklch(13% 0.02 250);
77
+ --foreground: oklch(96% 0.012 240);
78
+
79
+ --card: oklch(17% 0.022 250);
80
+ --card-foreground: oklch(96% 0.012 240);
81
+
82
+ --popover: oklch(20% 0.025 250);
83
+ --popover-foreground: oklch(96% 0.012 240);
84
+
85
+ --primary: oklch(72% 0.16 230);
86
+ --primary-foreground: oklch(12% 0.025 250);
87
+
88
+ --secondary: oklch(22% 0.025 250);
89
+ --secondary-foreground: oklch(94% 0.012 240);
90
+
91
+ --muted: oklch(20% 0.022 250);
92
+ --muted-foreground: oklch(72% 0.02 240);
93
+
94
+ --accent: oklch(30% 0.06 230);
95
+ --accent-foreground: oklch(88% 0.12 230);
96
+
97
+ --destructive: oklch(66% 0.22 27);
98
+ --destructive-foreground: oklch(98% 0.005 240);
99
+
100
+ --success: oklch(70% 0.16 155);
101
+ --success-foreground: oklch(12% 0.025 250);
102
+
103
+ --warning: oklch(80% 0.16 75);
104
+ --warning-foreground: oklch(20% 0.05 75);
105
+
106
+ --info: oklch(72% 0.16 230);
107
+ --info-foreground: oklch(12% 0.025 250);
108
+
109
+ --border: oklch(28% 0.025 250);
110
+ --input: oklch(26% 0.025 250);
111
+ --ring: oklch(72% 0.16 230);
112
+
113
+ --sidebar: oklch(15% 0.022 250);
114
+ --sidebar-foreground: oklch(92% 0.012 240);
115
+ --sidebar-primary: oklch(72% 0.16 230);
116
+ --sidebar-primary-foreground: oklch(12% 0.025 250);
117
+ --sidebar-accent: oklch(28% 0.06 230);
118
+ --sidebar-accent-foreground: oklch(88% 0.12 230);
119
+ --sidebar-border: oklch(24% 0.025 250);
120
+ --sidebar-ring: oklch(72% 0.16 230);
121
+
122
+ --shadow-color: 240 14% 4%;
123
+ --shadow-xs: 0 1px 2px 0 hsl(var(--shadow-color) / 0.30);
124
+ --shadow-sm: 0 1px 3px 0 hsl(var(--shadow-color) / 0.36), 0 1px 2px -1px hsl(var(--shadow-color) / 0.28);
125
+ --shadow-md: 0 4px 6px -1px hsl(var(--shadow-color) / 0.40), 0 2px 4px -2px hsl(var(--shadow-color) / 0.28);
126
+ --shadow-lg: 0 10px 16px -3px hsl(var(--shadow-color) / 0.50), 0 4px 6px -4px hsl(var(--shadow-color) / 0.32);
127
+ --shadow-xl: 0 20px 28px -8px hsl(var(--shadow-color) / 0.55);
128
+ }
129
+
130
+ @theme inline {
131
+ --color-background: var(--background);
132
+ --color-foreground: var(--foreground);
133
+ --color-card: var(--card);
134
+ --color-card-foreground: var(--card-foreground);
135
+ --color-popover: var(--popover);
136
+ --color-popover-foreground: var(--popover-foreground);
137
+ --color-primary: var(--primary);
138
+ --color-primary-foreground: var(--primary-foreground);
139
+ --color-secondary: var(--secondary);
140
+ --color-secondary-foreground: var(--secondary-foreground);
141
+ --color-muted: var(--muted);
142
+ --color-muted-foreground: var(--muted-foreground);
143
+ --color-accent: var(--accent);
144
+ --color-accent-foreground: var(--accent-foreground);
145
+ --color-destructive: var(--destructive);
146
+ --color-destructive-foreground: var(--destructive-foreground);
147
+ --color-success: var(--success);
148
+ --color-success-foreground: var(--success-foreground);
149
+ --color-warning: var(--warning);
150
+ --color-warning-foreground: var(--warning-foreground);
151
+ --color-info: var(--info);
152
+ --color-info-foreground: var(--info-foreground);
153
+ --color-border: var(--border);
154
+ --color-input: var(--input);
155
+ --color-ring: var(--ring);
156
+ --color-sidebar: var(--sidebar);
157
+ --color-sidebar-foreground: var(--sidebar-foreground);
158
+ --color-sidebar-primary: var(--sidebar-primary);
159
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
160
+ --color-sidebar-accent: var(--sidebar-accent);
161
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
162
+ --color-sidebar-border: var(--sidebar-border);
163
+ --color-sidebar-ring: var(--sidebar-ring);
164
+
165
+ --radius-xs: calc(var(--radius) - 6px);
166
+ --radius-sm: calc(var(--radius) - 4px);
167
+ --radius-md: calc(var(--radius) - 2px);
168
+ --radius-lg: var(--radius);
169
+ --radius-xl: calc(var(--radius) + 4px);
170
+ --radius-2xl: calc(var(--radius) + 8px);
171
+ --radius-3xl: calc(var(--radius) + 16px);
172
+
173
+ --shadow-xs: var(--shadow-xs);
174
+ --shadow-sm: var(--shadow-sm);
175
+ --shadow-md: var(--shadow-md);
176
+ --shadow-lg: var(--shadow-lg);
177
+ --shadow-xl: var(--shadow-xl);
178
+
179
+ --font-sans: 'Inter', 'Noto Sans SC', system-ui, -apple-system, sans-serif;
180
+ --font-mono: 'JetBrains Mono', 'Fira Code', ui-monospace, monospace;
181
+ }
182
+
183
+ @layer base {
184
+ * {
185
+ border-color: var(--border);
186
+ }
187
+ html, body, #root {
188
+ height: 100%;
189
+ }
190
+ body {
191
+ margin: 0;
192
+ background-color: var(--background);
193
+ color: var(--foreground);
194
+ font-family: var(--font-sans);
195
+ -webkit-font-smoothing: antialiased;
196
+ -moz-osx-font-smoothing: grayscale;
197
+ line-height: 1.5;
198
+ overflow: hidden; /* desktop chrome: no body scroll, panels manage their own */
199
+ }
200
+ ::selection {
201
+ background-color: color-mix(in oklab, var(--primary) 28%, transparent);
202
+ color: var(--foreground);
203
+ }
204
+
205
+ *::-webkit-scrollbar {
206
+ width: 10px;
207
+ height: 10px;
208
+ }
209
+ *::-webkit-scrollbar-track {
210
+ background: transparent;
211
+ }
212
+ *::-webkit-scrollbar-thumb {
213
+ background-color: color-mix(in oklab, var(--muted-foreground) 35%, transparent);
214
+ border-radius: 9999px;
215
+ border: 2px solid transparent;
216
+ background-clip: content-box;
217
+ }
218
+ *::-webkit-scrollbar-thumb:hover {
219
+ background-color: color-mix(in oklab, var(--muted-foreground) 55%, transparent);
220
+ background-clip: content-box;
221
+ }
222
+
223
+ html[data-density="compact"] body {
224
+ font-size: 13.5px;
225
+ line-height: 1.45;
226
+ }
227
+ }
228
+
229
+ @layer utilities {
230
+ .hover-lift {
231
+ transition: transform 180ms cubic-bezier(0.22, 1, 0.36, 1),
232
+ box-shadow 220ms cubic-bezier(0.22, 1, 0.36, 1);
233
+ }
234
+ .hover-lift:hover {
235
+ transform: translateY(-1px);
236
+ box-shadow: var(--shadow-md);
237
+ }
238
+ .surface-gloss {
239
+ background-image: linear-gradient(
240
+ 180deg,
241
+ color-mix(in oklab, var(--foreground) 3%, transparent) 0%,
242
+ transparent 80%
243
+ );
244
+ }
245
+ .surface-glass {
246
+ background-color: color-mix(in oklab, var(--popover) 92%, transparent);
247
+ backdrop-filter: saturate(180%) blur(12px);
248
+ -webkit-backdrop-filter: saturate(180%) blur(12px);
249
+ }
250
+ }
251
+
252
+ @keyframes progress-marquee {
253
+ 0% {
254
+ transform: translateX(-100%);
255
+ }
256
+ 100% {
257
+ transform: translateX(400%);
258
+ }
259
+ }