@darthcharles/greda 0.0.0-stage → 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/components/ui/button.tsx","../src/components/ui/input.tsx","../src/components/ui/textarea.tsx","../src/components/ui/label.tsx","../src/components/ui/select.tsx","../src/components/ui/dialog.tsx","../src/components/ui/card.tsx","../src/components/ui/badge.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/tabs.tsx","../src/components/ui/toast.tsx","../src/components/ui/tooltip.tsx"],"sourcesContent":["// Adapted from shadcn/ui (New York). See upstream/shadcn-ui for source and MIT license.\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"comal-ui ds-inline-flex ds-items-center ds-justify-center ds-gap-2 ds-whitespace-nowrap ds-rounded-md ds-text-sm ds-font-medium ds-transition-all active:[&:not([aria-haspopup])]:ds-translate-y-px motion-reduce:active:[&:not([aria-haspopup])]:ds-transform-none focus-visible:ds-outline-none focus-visible:ds-ring-1 focus-visible:ds-ring-ring disabled:ds-pointer-events-none disabled:ds-opacity-disabled [&_svg]:ds-pointer-events-none [&_svg]:ds-size-4 [&_svg]:ds-shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"ds-bg-primary ds-text-primary-foreground ds-shadow hover:ds-bg-primary-hover\",\n destructive:\n \"ds-bg-destructive ds-text-destructive-foreground ds-shadow-sm hover:ds-bg-destructive/90\",\n outline:\n \"ds-border ds-border-input ds-bg-background ds-shadow-sm hover:ds-bg-accent hover:ds-text-accent-foreground\",\n secondary:\n \"ds-bg-secondary ds-text-secondary-foreground ds-shadow-sm hover:ds-bg-secondary/80\",\n ghost: \"hover:ds-bg-accent hover:ds-text-accent-foreground\",\n link: \"ds-text-primary ds-underline-offset-4 hover:ds-underline\",\n },\n size: {\n default: \"ds-h-9 ds-px-4 ds-py-2\",\n sm: \"ds-h-8 ds-rounded-md ds-px-3 ds-text-xs\",\n lg: \"ds-h-10 ds-rounded-md ds-px-8\",\n icon: \"ds-h-9 ds-w-9\",\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 loading?: boolean;\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n asChild = false,\n loading = false,\n disabled,\n type,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n type={asChild ? undefined : type ?? \"button\"}\n disabled={asChild ? undefined : disabled || loading}\n aria-busy={loading || undefined}\n {...props}\n />\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","// Adapted from shadcn/ui (New York). See upstream/shadcn-ui for source and MIT license.\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"comal-ui\",\n \"ds-flex ds-h-9 ds-w-full ds-rounded-md ds-border ds-border-input ds-bg-transparent ds-px-3 ds-py-1 ds-text-base ds-shadow-sm ds-transition-colors file:ds-border-0 file:ds-bg-transparent file:ds-text-sm file:ds-font-medium file:ds-text-foreground placeholder:ds-text-muted-foreground focus-visible:ds-outline-none focus-visible:ds-ring-1 focus-visible:ds-ring-ring disabled:ds-cursor-not-allowed disabled:ds-opacity-disabled aria-[invalid=true]:ds-border-destructive md:ds-text-sm\",\n className\n )}\n ref={ref}\n {...props}\n />\n );\n }\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","// Adapted from shadcn/ui (New York). See upstream/shadcn-ui for source and MIT license.\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Textarea = React.forwardRef<\n HTMLTextAreaElement,\n React.ComponentProps<\"textarea\">\n>(({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"comal-ui\",\n \"ds-flex ds-min-h-[60px] ds-w-full ds-rounded-md ds-border ds-border-input ds-bg-transparent ds-px-3 ds-py-2 ds-text-base ds-shadow-sm placeholder:ds-text-muted-foreground focus-visible:ds-outline-none focus-visible:ds-ring-1 focus-visible:ds-ring-ring disabled:ds-cursor-not-allowed disabled:ds-opacity-disabled aria-[invalid=true]:ds-border-destructive md:ds-text-sm\",\n className\n )}\n ref={ref}\n {...props}\n />\n );\n});\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n","// Adapted from shadcn/ui (New York). See upstream/shadcn-ui for source and MIT license.\n\"use client\";\n\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst labelVariants = cva(\n \"ds-text-sm ds-font-medium ds-leading-none peer-disabled:ds-cursor-not-allowed peer-disabled:ds-opacity-70\"\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(\"comal-ui\", labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","// Adapted from shadcn/ui (New York). See upstream/shadcn-ui for source and MIT license.\n\"use client\";\n\nimport * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\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 \"comal-ui\",\n \"ds-flex ds-h-9 ds-w-full ds-items-center ds-justify-between ds-whitespace-nowrap ds-rounded-md ds-border ds-border-input ds-bg-transparent ds-px-3 ds-py-2 ds-text-sm ds-shadow-sm ds-ring-offset-background data-[placeholder]:ds-text-muted-foreground focus:ds-outline-none focus:ds-ring-1 focus:ds-ring-ring disabled:ds-cursor-not-allowed disabled:ds-opacity-disabled aria-[invalid=true]:ds-border-destructive [&>span]:ds-line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"ds-h-4 ds-w-4 ds-opacity-50\" />\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(\n \"comal-ui\",\n \"ds-flex ds-cursor-default ds-items-center ds-justify-center ds-py-1\",\n className\n )}\n {...props}\n >\n <ChevronUp className=\"ds-h-4 ds-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(\n \"comal-ui\",\n \"ds-flex ds-cursor-default ds-items-center ds-justify-center ds-py-1\",\n className\n )}\n {...props}\n >\n <ChevronDown className=\"ds-h-4 ds-w-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName;\n\nexport type SelectContentProps = React.ComponentPropsWithoutRef<\n typeof SelectPrimitive.Content\n> & {\n container?: React.ComponentPropsWithoutRef<\n typeof SelectPrimitive.Portal\n >[\"container\"];\n};\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n SelectContentProps\n>(({ className, container, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal container={container}>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"comal-ui\",\n \"ds-relative ds-z-popover ds-max-h-[--radix-select-content-available-height] ds-min-w-[8rem] ds-overflow-y-auto ds-overflow-x-hidden ds-rounded-md ds-border ds-bg-popover ds-text-popover-foreground ds-shadow-md data-[state=open]:ds-animate-in data-[state=closed]:ds-animate-out data-[state=closed]:ds-fade-out-0 data-[state=open]:ds-fade-in-0 data-[state=closed]:ds-zoom-out-95 data-[state=open]:ds-zoom-in-95 data-[side=bottom]:ds-slide-in-from-top-2 data-[side=left]:ds-slide-in-from-right-2 data-[side=right]:ds-slide-in-from-left-2 data-[side=top]:ds-slide-in-from-bottom-2 ds-origin-[--radix-select-content-transform-origin]\",\n position === \"popper\" &&\n \"data-[side=bottom]:ds-translate-y-1 data-[side=left]:-ds-translate-x-1 data-[side=right]:ds-translate-x-1 data-[side=top]:-ds-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"comal-ui\",\n \"ds-p-1\",\n position === \"popper\" &&\n \"ds-h-[var(--radix-select-trigger-height)] ds-w-full ds-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(\n \"comal-ui\",\n \"ds-px-2 ds-py-1.5 ds-text-sm ds-font-semibold\",\n className\n )}\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 \"comal-ui\",\n \"ds-relative ds-flex ds-w-full ds-cursor-default ds-select-none ds-items-center ds-rounded-sm ds-py-1.5 ds-pl-2 ds-pr-8 ds-text-sm ds-outline-none focus:ds-bg-accent focus:ds-text-accent-foreground data-[disabled]:ds-pointer-events-none data-[disabled]:ds-opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"ds-absolute ds-right-2 ds-flex ds-h-3.5 ds-w-3.5 ds-items-center ds-justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"ds-h-4 ds-w-4\" />\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(\n \"comal-ui\",\n \"-ds-mx-1 ds-my-1 ds-h-px ds-bg-muted\",\n className\n )}\n {...props}\n />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n};\n","// Adapted from shadcn/ui (New York). See upstream/shadcn-ui for source and MIT license.\n\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\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 \"comal-ui\",\n \"ds-fixed ds-inset-0 ds-z-overlay ds-bg-overlay data-[state=open]:ds-animate-in data-[state=closed]:ds-animate-out data-[state=closed]:ds-fade-out-0 data-[state=open]:ds-fade-in-0\",\n className\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nexport type DialogContentProps = React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Content\n> & {\n container?: React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Portal\n >[\"container\"];\n};\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(({ className, container, children, ...props }, ref) => (\n <DialogPortal container={container}>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"comal-ui\",\n \"ds-fixed ds-left-[50%] ds-top-[50%] ds-z-overlay ds-grid ds-text-foreground ds-w-[calc(100%-2rem)] ds-max-w-lg ds-max-h-[calc(100dvh-2rem)] ds-overflow-y-auto ds-translate-x-[-50%] ds-translate-y-[-50%] ds-gap-4 ds-border ds-bg-background ds-p-6 ds-shadow-lg ds-duration-200 data-[state=open]:ds-animate-in data-[state=closed]:ds-animate-out data-[state=closed]:ds-fade-out-0 data-[state=open]:ds-fade-in-0 data-[state=closed]:ds-zoom-out-95 data-[state=open]:ds-zoom-in-95 data-[state=closed]:ds-slide-out-to-left-1/2 data-[state=closed]:ds-slide-out-to-top-[48%] data-[state=open]:ds-slide-in-from-left-1/2 data-[state=open]:ds-slide-in-from-top-[48%] sm:ds-rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"comal-ui ds-absolute ds-right-4 ds-top-4 ds-rounded-sm ds-opacity-70 ds-ring-offset-background ds-transition-opacity hover:ds-opacity-100 focus:ds-outline-none focus:ds-ring-2 focus:ds-ring-ring focus:ds-ring-offset-2 disabled:ds-pointer-events-none data-[state=open]:ds-bg-accent data-[state=open]:ds-text-muted-foreground\">\n <X className=\"ds-h-4 ds-w-4\" />\n <span className=\"ds-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 \"comal-ui\",\n \"ds-flex ds-flex-col ds-space-y-1.5 ds-text-center sm:ds-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 \"comal-ui\",\n \"ds-flex ds-flex-col-reverse sm:ds-flex-row sm:ds-justify-end sm:ds-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 \"comal-ui\",\n \"comal-heading ds-text-lg ds-font-semibold ds-leading-none ds-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(\"comal-ui\", \"ds-text-sm ds-text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","// Adapted from shadcn/ui (New York). See upstream/shadcn-ui for source and MIT license.\nimport * as React from \"react\";\n\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 \"comal-ui\",\n \"ds-rounded-xl ds-border ds-bg-card ds-text-card-foreground ds-shadow\",\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(\n \"comal-ui\",\n \"ds-flex ds-flex-col ds-space-y-1.5 ds-p-6\",\n className\n )}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"comal-ui\",\n \"comal-heading ds-font-semibold ds-leading-none ds-tracking-tight\",\n className\n )}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"comal-ui\", \"ds-text-sm ds-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\n ref={ref}\n className={cn(\"comal-ui\", \"ds-p-6 ds-pt-0\", className)}\n {...props}\n />\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(\n \"comal-ui\",\n \"ds-flex ds-items-center ds-p-6 ds-pt-0\",\n className\n )}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n};\n","// Adapted from shadcn/ui (New York). See upstream/shadcn-ui for source and MIT license.\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst badgeVariants = cva(\n \"comal-ui ds-inline-flex ds-items-center ds-rounded-md ds-border ds-px-2.5 ds-py-0.5 ds-text-xs ds-font-semibold ds-transition-colors focus:ds-outline-none focus:ds-ring-2 focus:ds-ring-ring focus:ds-ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"ds-border-transparent ds-bg-primary ds-text-primary-foreground ds-shadow hover:ds-bg-primary/80\",\n secondary:\n \"ds-border-transparent ds-bg-secondary ds-text-secondary-foreground hover:ds-bg-secondary/80\",\n destructive:\n \"ds-border-transparent ds-bg-destructive ds-text-destructive-foreground ds-shadow hover:ds-bg-destructive/80\",\n outline: \"ds-text-foreground\",\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","// Adapted from shadcn/ui (New York). See upstream/shadcn-ui for source and MIT license.\n\"use client\";\n\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Check, Minus } from \"lucide-react\";\n\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 \"comal-ui\",\n \"ds-grid ds-place-content-center ds-peer ds-h-4 ds-w-4 ds-shrink-0 ds-rounded-sm ds-border ds-border-primary ds-shadow focus-visible:ds-outline-none focus-visible:ds-ring-1 focus-visible:ds-ring-ring disabled:ds-cursor-not-allowed disabled:ds-opacity-disabled aria-[invalid=true]:ds-border-destructive data-[state=checked]:ds-bg-primary data-[state=checked]:ds-text-primary-foreground data-[state=indeterminate]:ds-bg-primary data-[state=indeterminate]:ds-text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className={cn(\n \"comal-ui\",\n \"ds-grid ds-place-content-center ds-text-current\"\n )}\n >\n <Check className=\"ds-h-4 ds-w-4\" data-check-icon=\"\" />\n <Minus className=\"ds-h-4 ds-w-4\" data-mixed-icon=\"\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n));\nCheckbox.displayName = CheckboxPrimitive.Root.displayName;\n\nexport { Checkbox };\n","// Adapted from shadcn/ui (New York). See upstream/shadcn-ui for source and MIT license.\n\"use client\";\n\nimport * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\n\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 \"comal-ui\",\n \"ds-inline-flex ds-h-9 ds-items-center ds-justify-center ds-rounded-lg ds-bg-muted ds-p-1 ds-text-muted-foreground data-[orientation=vertical]:ds-h-auto data-[orientation=vertical]:ds-flex-col\",\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 \"comal-ui\",\n \"ds-inline-flex ds-items-center ds-justify-center ds-whitespace-nowrap ds-rounded-md ds-px-3 ds-py-1 ds-text-sm ds-font-medium ds-ring-offset-background ds-transition-all focus-visible:ds-outline-none focus-visible:ds-ring-2 focus-visible:ds-ring-ring focus-visible:ds-ring-offset-2 disabled:ds-pointer-events-none disabled:ds-opacity-50 data-[state=active]:ds-bg-background data-[state=active]:ds-text-foreground data-[state=active]:ds-shadow\",\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 \"comal-ui\",\n \"ds-mt-2 ds-ring-offset-background focus-visible:ds-outline-none focus-visible:ds-ring-2 focus-visible:ds-ring-ring focus-visible:ds-ring-offset-2\",\n className\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","// Adapted from shadcn/ui (New York). See upstream/shadcn-ui for source and MIT license.\n\"use client\";\n\nimport * as React from \"react\";\nimport * as ToastPrimitives from \"@radix-ui/react-toast\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst ToastProvider = ToastPrimitives.Provider;\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Viewport>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n \"comal-ui\",\n \"ds-fixed ds-top-0 ds-z-toast ds-flex ds-max-h-screen ds-w-full ds-flex-col-reverse ds-p-4 sm:ds-bottom-0 sm:ds-right-0 sm:ds-top-auto sm:ds-flex-col md:ds-max-w-[var(--toast-width)]\",\n className\n )}\n {...props}\n />\n));\nToastViewport.displayName = ToastPrimitives.Viewport.displayName;\n\nconst toastVariants = cva(\n \"ds-group ds-pointer-events-auto ds-relative ds-flex ds-w-full ds-items-center ds-justify-between ds-space-x-2 ds-overflow-hidden ds-rounded-md ds-border ds-p-4 ds-pr-6 ds-shadow-lg ds-transition-all data-[swipe=cancel]:ds-translate-x-0 data-[swipe=end]:ds-translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:ds-translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:ds-transition-none data-[state=open]:ds-animate-in data-[state=closed]:ds-animate-out data-[swipe=end]:ds-animate-out data-[state=closed]:ds-fade-out-80 data-[state=closed]:ds-slide-out-to-right-full data-[state=open]:ds-slide-in-from-top-full data-[state=open]:sm:ds-slide-in-from-bottom-full\",\n {\n variants: {\n variant: {\n default: \"ds-border ds-bg-background ds-text-foreground\",\n destructive:\n \"ds-destructive ds-group ds-border-destructive ds-bg-destructive ds-text-destructive-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nconst Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &\n VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n return (\n <ToastPrimitives.Root\n ref={ref}\n className={cn(\"comal-ui\", toastVariants({ variant }), className)}\n {...props}\n />\n );\n});\nToast.displayName = ToastPrimitives.Root.displayName;\n\nconst ToastAction = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Action>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n \"comal-ui\",\n \"ds-inline-flex ds-h-8 ds-shrink-0 ds-items-center ds-justify-center ds-rounded-md ds-border ds-bg-transparent ds-px-3 ds-text-sm ds-font-medium ds-transition-colors hover:ds-bg-secondary focus:ds-outline-none focus:ds-ring-1 focus:ds-ring-ring disabled:ds-pointer-events-none disabled:ds-opacity-50 group-[.ds-destructive]:ds-border-muted/40 group-[.ds-destructive]:hover:ds-border-destructive/30 group-[.ds-destructive]:hover:ds-bg-destructive group-[.ds-destructive]:hover:ds-text-destructive-foreground group-[.ds-destructive]:focus:ds-ring-destructive\",\n className\n )}\n {...props}\n />\n));\nToastAction.displayName = ToastPrimitives.Action.displayName;\n\nconst ToastClose = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Close>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n \"comal-ui\",\n \"ds-absolute ds-right-1 ds-top-1 ds-rounded-md ds-p-1 ds-text-foreground/50 ds-opacity-0 ds-transition-opacity hover:ds-text-foreground focus:ds-opacity-100 focus:ds-outline-none focus:ds-ring-1 group-hover:ds-opacity-100 group-[.ds-destructive]:ds-text-red-300 group-[.ds-destructive]:hover:ds-text-red-50 group-[.ds-destructive]:focus:ds-ring-red-400 group-[.ds-destructive]:focus:ds-ring-offset-red-600\",\n className\n )}\n aria-label=\"Dismiss notification\"\n toast-close=\"\"\n {...props}\n >\n <X className=\"ds-h-4 ds-w-4\" />\n </ToastPrimitives.Close>\n));\nToastClose.displayName = ToastPrimitives.Close.displayName;\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Title>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn(\n \"comal-ui\",\n \"ds-text-sm ds-font-semibold [&+div]:ds-text-xs\",\n className\n )}\n {...props}\n />\n));\nToastTitle.displayName = ToastPrimitives.Title.displayName;\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef<typeof ToastPrimitives.Description>,\n React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description\n ref={ref}\n className={cn(\"comal-ui\", \"ds-text-sm ds-opacity-90\", className)}\n {...props}\n />\n));\nToastDescription.displayName = ToastPrimitives.Description.displayName;\n\ntype ToastProps = React.ComponentPropsWithoutRef<typeof Toast>;\n\ntype ToastActionElement = React.ReactElement<typeof ToastAction>;\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n};\n","// Adapted from shadcn/ui (New York). See upstream/shadcn-ui for source and MIT license.\n\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = TooltipPrimitive.Root;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nexport type TooltipContentProps = React.ComponentPropsWithoutRef<\n typeof TooltipPrimitive.Content\n> & {\n container?: React.ComponentPropsWithoutRef<\n typeof TooltipPrimitive.Portal\n >[\"container\"];\n};\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n TooltipContentProps\n>(({ className, container, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Portal container={container}>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"comal-ui\",\n \"ds-z-popover ds-max-w-[var(--tooltip-width)] ds-overflow-hidden ds-rounded-md ds-bg-primary ds-px-3 ds-py-1.5 ds-text-xs ds-text-primary-foreground ds-animate-in ds-fade-in-0 ds-zoom-in-95 data-[state=closed]:ds-animate-out data-[state=closed]:ds-fade-out-0 data-[state=closed]:ds-zoom-out-95 data-[side=bottom]:ds-slide-in-from-top-2 data-[side=left]:ds-slide-in-from-right-2 data-[side=right]:ds-slide-in-from-left-2 data-[side=top]:ds-slide-in-from-bottom-2 ds-origin-[--radix-tooltip-content-transform-origin]\",\n className\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n"],"names":["buttonVariants","cva","Button","React","className","variant","size","asChild","loading","disabled","type","props","ref","jsx","Slot","cn","Input","Textarea","labelVariants","Label","LabelPrimitive","Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","children","jsxs","ChevronDown","SelectScrollUpButton","ChevronUp","SelectScrollDownButton","SelectContent","container","position","SelectLabel","SelectItem","Check","SelectSeparator","Dialog","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","DialogContent","X","DialogHeader","DialogFooter","DialogTitle","DialogDescription","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","badgeVariants","Badge","Checkbox","CheckboxPrimitive","Minus","Tabs","TabsPrimitive","TabsList","TabsTrigger","TabsContent","ToastProvider","ToastPrimitives","ToastViewport","toastVariants","Toast","ToastAction","ToastClose","ToastTitle","ToastDescription","TooltipProvider","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","sideOffset"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type ClassValue } from "clsx";
2
+ /** Combine conditional classes and resolve conflicting prefixed utilities. */
3
+ export declare function cn(...inputs: ClassValue[]): string;
@@ -0,0 +1,104 @@
1
+ /* Colors are space-separated HSL channels. All other tokens use CSS values.
2
+ Low-specificity defaults let consumer :root rules win in either import order. */
3
+ :where(:root) {
4
+ color-scheme: light;
5
+ --background: 0 0% 100%;
6
+ --foreground: 222 47% 11%;
7
+ --card: 0 0% 100%;
8
+ --card-foreground: 222 47% 11%;
9
+ --popover: 0 0% 100%;
10
+ --popover-foreground: 222 47% 11%;
11
+ --accent: 220 20% 94%;
12
+ --accent-foreground: 222 35% 20%;
13
+ --primary: 220 80% 45%;
14
+ --primary-foreground: 0 0% 100%;
15
+ --primary-hover: 220 80% 38%;
16
+ --secondary: 220 20% 94%;
17
+ --secondary-foreground: 222 35% 20%;
18
+ --muted: 220 15% 96%;
19
+ --muted-foreground: 220 10% 42%;
20
+ --border: 220 15% 82%;
21
+ --input: 220 15% 82%;
22
+ --ring: 220 80% 45%;
23
+ --destructive: 0 72% 43%;
24
+ --destructive-foreground: 0 0% 100%;
25
+ --overlay: 222 47% 11% / 0.4;
26
+ --font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
27
+ sans-serif;
28
+ --font-heading: var(--font-sans);
29
+ --font-size-xs: 0.75rem;
30
+ --font-size-sm: 0.8125rem;
31
+ --font-size-md: 0.875rem;
32
+ --font-size-lg: 1.25rem;
33
+ --font-weight-medium: 500;
34
+ --font-weight-bold: 600;
35
+ --line-height: 1.5;
36
+ --spacing-unit: 0.25rem;
37
+ --space-0: calc(var(--spacing-unit) * 0);
38
+ --space-0-5: calc(var(--spacing-unit) * 0.5);
39
+ --space-1: calc(var(--spacing-unit) * 1);
40
+ --space-1-5: calc(var(--spacing-unit) * 1.5);
41
+ --space-2: calc(var(--spacing-unit) * 2);
42
+ --space-2-5: calc(var(--spacing-unit) * 2.5);
43
+ --space-3: calc(var(--spacing-unit) * 3);
44
+ --space-3-5: calc(var(--spacing-unit) * 3.5);
45
+ --space-4: calc(var(--spacing-unit) * 4);
46
+ --space-5: calc(var(--spacing-unit) * 5);
47
+ --space-6: calc(var(--spacing-unit) * 6);
48
+ --space-8: calc(var(--spacing-unit) * 8);
49
+ --space-9: calc(var(--spacing-unit) * 9);
50
+ --space-10: calc(var(--spacing-unit) * 10);
51
+ --space-12: calc(var(--spacing-unit) * 12);
52
+ --space-16: calc(var(--spacing-unit) * 16);
53
+ --space-20: calc(var(--spacing-unit) * 20);
54
+ --space-24: calc(var(--spacing-unit) * 24);
55
+ --space-32: calc(var(--spacing-unit) * 32);
56
+ --radius: 0.5rem;
57
+ --radius-sm: calc(var(--radius) * 0.6);
58
+ --radius-full: 9999px;
59
+ --radius-lg: calc(var(--radius) * 1.5);
60
+ --border-width: 1px;
61
+ --dialog-width: 32.5rem;
62
+ --tooltip-width: 20rem;
63
+ --toast-width: 24rem;
64
+ --shadow-sm: 0 1px 2px hsl(222 47% 11% / 0.08);
65
+ --shadow: 0 8px 24px hsl(222 47% 11% / 0.12);
66
+ --shadow-dialog: 0 24px 70px hsl(222 47% 11% / 0.24);
67
+ --focus-width: 2px;
68
+ --focus-offset: 2px;
69
+ --disabled-opacity: 0.5;
70
+ --duration: 150ms;
71
+ --z-overlay: 50;
72
+ --z-popover: 60;
73
+ --z-toast: 70;
74
+ }
75
+ :where([data-color-scheme="light"]) {
76
+ color-scheme: light;
77
+ }
78
+ /* Opt in independently of the consumer's brand theme. */
79
+ :where([data-color-scheme="dark"]) {
80
+ color-scheme: dark;
81
+ --background: 222 30% 9%;
82
+ --foreground: 220 20% 96%;
83
+ --card: 222 25% 13%;
84
+ --card-foreground: 220 20% 96%;
85
+ --popover: 222 25% 13%;
86
+ --popover-foreground: 220 20% 96%;
87
+ --accent: 222 20% 22%;
88
+ --accent-foreground: 220 20% 96%;
89
+ --primary: 217 90% 70%;
90
+ --primary-foreground: 222 47% 11%;
91
+ --primary-hover: 217 90% 78%;
92
+ --secondary: 222 20% 22%;
93
+ --secondary-foreground: 220 20% 96%;
94
+ --muted: 222 20% 18%;
95
+ --muted-foreground: 220 15% 72%;
96
+ --border: 220 15% 36%;
97
+ --input: 220 15% 36%;
98
+ --ring: 217 90% 70%;
99
+ --destructive: 0 80% 72%;
100
+ --destructive-foreground: 222 47% 11%;
101
+ --overlay: 222 47% 3% / 0.7;
102
+ }
103
+
104
+ :where(.comal-ui),:where(.comal-ui)::after,:where(.comal-ui)::before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }:where(.comal-ui)::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }:where(.comal-ui){box-sizing:border-box;margin:0;border:0 solid hsl(var(--border));font-family:var(--font-sans);font-size:var(--font-size-md);line-height:var(--line-height);color:inherit}:where(button.comal-ui){background-color:transparent;cursor:pointer;padding:0}:where(button.comal-ui:disabled){cursor:not-allowed}:where(input.comal-ui,textarea.comal-ui){color:hsl(var(--foreground))}:where(input.comal-ui,textarea.comal-ui)::-moz-placeholder{opacity:1}:where(input.comal-ui,textarea.comal-ui)::placeholder{opacity:1}.comal-heading{font-family:var(--font-heading)}.ds-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.ds-pointer-events-auto{pointer-events:auto}.ds-fixed{position:fixed}.ds-absolute{position:absolute}.ds-relative{position:relative}.ds-inset-0{inset:var(--space-0,calc(var(--spacing-unit)*0))}.ds-left-\[50\%\]{left:50%}.ds-right-1{right:var(--space-1,calc(var(--spacing-unit)*1))}.ds-right-2{right:var(--space-2,calc(var(--spacing-unit)*2))}.ds-right-4{right:var(--space-4,calc(var(--spacing-unit)*4))}.ds-top-0{top:var(--space-0,calc(var(--spacing-unit)*0))}.ds-top-1{top:var(--space-1,calc(var(--spacing-unit)*1))}.ds-top-4{top:var(--space-4,calc(var(--spacing-unit)*4))}.ds-top-\[50\%\]{top:50%}.ds-z-overlay{z-index:var(--z-overlay)}.ds-z-popover{z-index:var(--z-popover)}.ds-z-toast{z-index:var(--z-toast)}.-ds-mx-1{margin-left:calc(var(--space-1, calc(var(--spacing-unit) * 1)) * -1);margin-right:calc(var(--space-1, calc(var(--spacing-unit) * 1)) * -1)}.ds-my-1{margin-top:var(--space-1,calc(var(--spacing-unit)*1));margin-bottom:var(--space-1,calc(var(--spacing-unit)*1))}.ds-mt-2{margin-top:var(--space-2,calc(var(--spacing-unit)*2))}.ds-flex{display:flex}.ds-inline-flex{display:inline-flex}.ds-grid{display:grid}.ds-h-10{height:var(--space-10,calc(var(--spacing-unit)*10))}.ds-h-3\.5{height:var(--space-3-5,calc(var(--spacing-unit)*3.5))}.ds-h-4{height:var(--space-4,calc(var(--spacing-unit)*4))}.ds-h-8{height:var(--space-8,calc(var(--spacing-unit)*8))}.ds-h-9{height:var(--space-9,calc(var(--spacing-unit)*9))}.ds-h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.ds-h-px{height:1px}.ds-max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.ds-max-h-\[calc\(100dvh-2rem\)\]{max-height:calc(100dvh - 2rem)}.ds-max-h-screen{max-height:100vh}.ds-min-h-\[60px\]{min-height:60px}.ds-w-3\.5{width:var(--space-3-5,calc(var(--spacing-unit)*3.5))}.ds-w-4{width:var(--space-4,calc(var(--spacing-unit)*4))}.ds-w-9{width:var(--space-9,calc(var(--spacing-unit)*9))}.ds-w-\[calc\(100\%-2rem\)\]{width:calc(100% - 2rem)}.ds-w-full{width:100%}.ds-min-w-\[8rem\]{min-width:8rem}.ds-min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.ds-max-w-\[var\(--tooltip-width\)\]{max-width:var(--tooltip-width)}.ds-max-w-lg{max-width:var(--dialog-width)}.ds-shrink-0{flex-shrink:0}.ds-origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.ds-origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.ds-translate-x-\[-50\%\]{--tw-translate-x:-50%}.ds-translate-x-\[-50\%\],.ds-translate-y-\[-50\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.ds-translate-y-\[-50\%\]{--tw-translate-y:-50%}.ds-cursor-default{cursor:default}.ds-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.ds-flex-col{flex-direction:column}.ds-flex-col-reverse{flex-direction:column-reverse}.ds-place-content-center{place-content:center}.ds-items-center{align-items:center}.ds-justify-center{justify-content:center}.ds-justify-between{justify-content:space-between}.ds-gap-2{gap:var(--space-2,calc(var(--spacing-unit)*2))}.ds-gap-4{gap:var(--space-4,calc(var(--spacing-unit)*4))}.ds-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(var(--space-2, calc(var(--spacing-unit) * 2)) * var(--tw-space-x-reverse));margin-left:calc(var(--space-2, calc(var(--spacing-unit) * 2)) * calc(1 - var(--tw-space-x-reverse)))}.ds-space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(var(--space-1-5, calc(var(--spacing-unit) * 1.5)) * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(var(--space-1-5, calc(var(--spacing-unit) * 1.5)) * var(--tw-space-y-reverse))}.ds-overflow-hidden{overflow:hidden}.ds-overflow-y-auto{overflow-y:auto}.ds-overflow-x-hidden{overflow-x:hidden}.ds-whitespace-nowrap{white-space:nowrap}.ds-rounded-lg{border-radius:var(--radius-lg)}.ds-rounded-md{border-radius:var(--radius)}.ds-rounded-sm{border-radius:var(--radius-sm)}.ds-rounded-xl{border-radius:var(--radius-lg)}.ds-border{border-width:var(--border-width)}.ds-border-destructive{--tw-border-opacity:1;border-color:hsl(var(--destructive)/var(--tw-border-opacity,1))}.ds-border-input{--tw-border-opacity:1;border-color:hsl(var(--input)/var(--tw-border-opacity,1))}.ds-border-primary{--tw-border-opacity:1;border-color:hsl(var(--primary)/var(--tw-border-opacity,1))}.ds-border-transparent{border-color:transparent}.ds-bg-background{--tw-bg-opacity:1;background-color:hsl(var(--background)/var(--tw-bg-opacity,1))}.ds-bg-card{--tw-bg-opacity:1;background-color:hsl(var(--card)/var(--tw-bg-opacity,1))}.ds-bg-destructive{--tw-bg-opacity:1;background-color:hsl(var(--destructive)/var(--tw-bg-opacity,1))}.ds-bg-muted{--tw-bg-opacity:1;background-color:hsl(var(--muted)/var(--tw-bg-opacity,1))}.ds-bg-overlay{background-color:hsl(var(--overlay))}.ds-bg-popover{--tw-bg-opacity:1;background-color:hsl(var(--popover)/var(--tw-bg-opacity,1))}.ds-bg-primary{--tw-bg-opacity:1;background-color:hsl(var(--primary)/var(--tw-bg-opacity,1))}.ds-bg-secondary{--tw-bg-opacity:1;background-color:hsl(var(--secondary)/var(--tw-bg-opacity,1))}.ds-bg-transparent{background-color:transparent}.ds-p-1{padding:var(--space-1,calc(var(--spacing-unit)*1))}.ds-p-4{padding:var(--space-4,calc(var(--spacing-unit)*4))}.ds-p-6{padding:var(--space-6,calc(var(--spacing-unit)*6))}.ds-px-2{padding-left:var(--space-2,calc(var(--spacing-unit)*2));padding-right:var(--space-2,calc(var(--spacing-unit)*2))}.ds-px-2\.5{padding-left:var(--space-2-5,calc(var(--spacing-unit)*2.5));padding-right:var(--space-2-5,calc(var(--spacing-unit)*2.5))}.ds-px-3{padding-left:var(--space-3,calc(var(--spacing-unit)*3));padding-right:var(--space-3,calc(var(--spacing-unit)*3))}.ds-px-4{padding-left:var(--space-4,calc(var(--spacing-unit)*4));padding-right:var(--space-4,calc(var(--spacing-unit)*4))}.ds-px-8{padding-left:var(--space-8,calc(var(--spacing-unit)*8));padding-right:var(--space-8,calc(var(--spacing-unit)*8))}.ds-py-0\.5{padding-top:var(--space-0-5,calc(var(--spacing-unit)*.5));padding-bottom:var(--space-0-5,calc(var(--spacing-unit)*.5))}.ds-py-1{padding-top:var(--space-1,calc(var(--spacing-unit)*1));padding-bottom:var(--space-1,calc(var(--spacing-unit)*1))}.ds-py-1\.5{padding-top:var(--space-1-5,calc(var(--spacing-unit)*1.5));padding-bottom:var(--space-1-5,calc(var(--spacing-unit)*1.5))}.ds-py-2{padding-top:var(--space-2,calc(var(--spacing-unit)*2));padding-bottom:var(--space-2,calc(var(--spacing-unit)*2))}.ds-pl-2{padding-left:var(--space-2,calc(var(--spacing-unit)*2))}.ds-pr-6{padding-right:var(--space-6,calc(var(--spacing-unit)*6))}.ds-pr-8{padding-right:var(--space-8,calc(var(--spacing-unit)*8))}.ds-pt-0{padding-top:var(--space-0,calc(var(--spacing-unit)*0))}.ds-text-center{text-align:center}.ds-text-base{font-size:var(--font-size-md)}.ds-text-base,.ds-text-lg{line-height:var(--line-height)}.ds-text-lg{font-size:var(--font-size-lg)}.ds-text-sm{font-size:var(--font-size-sm)}.ds-text-sm,.ds-text-xs{line-height:var(--line-height)}.ds-text-xs{font-size:var(--font-size-xs)}.ds-font-medium{font-weight:var(--font-weight-medium)}.ds-font-semibold{font-weight:var(--font-weight-bold)}.ds-leading-none{line-height:1}.ds-tracking-tight{letter-spacing:-.025em}.ds-text-card-foreground{--tw-text-opacity:1;color:hsl(var(--card-foreground)/var(--tw-text-opacity,1))}.ds-text-current{color:currentColor}.ds-text-destructive-foreground{--tw-text-opacity:1;color:hsl(var(--destructive-foreground)/var(--tw-text-opacity,1))}.ds-text-foreground{--tw-text-opacity:1;color:hsl(var(--foreground)/var(--tw-text-opacity,1))}.ds-text-foreground\/50{color:hsl(var(--foreground)/.5)}.ds-text-muted-foreground{--tw-text-opacity:1;color:hsl(var(--muted-foreground)/var(--tw-text-opacity,1))}.ds-text-popover-foreground{--tw-text-opacity:1;color:hsl(var(--popover-foreground)/var(--tw-text-opacity,1))}.ds-text-primary{--tw-text-opacity:1;color:hsl(var(--primary)/var(--tw-text-opacity,1))}.ds-text-primary-foreground{--tw-text-opacity:1;color:hsl(var(--primary-foreground)/var(--tw-text-opacity,1))}.ds-text-secondary-foreground{--tw-text-opacity:1;color:hsl(var(--secondary-foreground)/var(--tw-text-opacity,1))}.ds-underline-offset-4{text-underline-offset:4px}.ds-opacity-0{opacity:0}.ds-opacity-50{opacity:.5}.ds-opacity-70{opacity:.7}.ds-opacity-90{opacity:.9}.ds-shadow{--tw-shadow:var(--shadow);--tw-shadow-colored:var(--shadow)}.ds-shadow,.ds-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.ds-shadow-lg{--tw-shadow:var(--shadow-dialog);--tw-shadow-colored:var(--shadow-dialog)}.ds-shadow-md{--tw-shadow:var(--shadow);--tw-shadow-colored:var(--shadow)}.ds-shadow-md,.ds-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.ds-shadow-sm{--tw-shadow:var(--shadow-sm);--tw-shadow-colored:var(--shadow-sm)}.ds-outline-none{outline:2px solid transparent;outline-offset:2px}.ds-ring-offset-background{--tw-ring-offset-color:hsl(var(--background)/1)}.ds-transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:var(--duration)}.ds-transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:var(--duration)}.ds-transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:var(--duration)}.ds-duration-200{transition-duration:.2s}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.ds-animate-in{animation-name:enter;animation-duration:var(--duration);--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.ds-fade-in-0{--tw-enter-opacity:0}.ds-zoom-in-95{--tw-enter-scale:.95}.ds-duration-200{animation-duration:.2s}@media (prefers-reduced-motion:reduce){:where(.comal-ui){animation:none!important;transition:none!important}}[data-slot=checkbox-indicator]:not([data-state=indeterminate])>[data-mixed-icon],[data-slot=checkbox-indicator][data-state=indeterminate]>[data-check-icon]{display:none}.file\:ds-border-0::file-selector-button{border-width:0}.file\:ds-bg-transparent::file-selector-button{background-color:transparent}.file\:ds-text-sm::file-selector-button{font-size:var(--font-size-sm);line-height:var(--line-height)}.file\:ds-font-medium::file-selector-button{font-weight:var(--font-weight-medium)}.file\:ds-text-foreground::file-selector-button{--tw-text-opacity:1;color:hsl(var(--foreground)/var(--tw-text-opacity,1))}.placeholder\:ds-text-muted-foreground::-moz-placeholder{--tw-text-opacity:1;color:hsl(var(--muted-foreground)/var(--tw-text-opacity,1))}.placeholder\:ds-text-muted-foreground::placeholder{--tw-text-opacity:1;color:hsl(var(--muted-foreground)/var(--tw-text-opacity,1))}.hover\:ds-bg-accent:hover{--tw-bg-opacity:1;background-color:hsl(var(--accent)/var(--tw-bg-opacity,1))}.hover\:ds-bg-destructive\/80:hover{background-color:hsl(var(--destructive)/.8)}.hover\:ds-bg-destructive\/90:hover{background-color:hsl(var(--destructive)/.9)}.hover\:ds-bg-primary-hover:hover{--tw-bg-opacity:1;background-color:hsl(var(--primary-hover)/var(--tw-bg-opacity,1))}.hover\:ds-bg-primary\/80:hover{background-color:hsl(var(--primary)/.8)}.hover\:ds-bg-secondary:hover{--tw-bg-opacity:1;background-color:hsl(var(--secondary)/var(--tw-bg-opacity,1))}.hover\:ds-bg-secondary\/80:hover{background-color:hsl(var(--secondary)/.8)}.hover\:ds-text-accent-foreground:hover{--tw-text-opacity:1;color:hsl(var(--accent-foreground)/var(--tw-text-opacity,1))}.hover\:ds-text-foreground:hover{--tw-text-opacity:1;color:hsl(var(--foreground)/var(--tw-text-opacity,1))}.hover\:ds-underline:hover{text-decoration-line:underline}.hover\:ds-opacity-100:hover{opacity:1}.focus\:ds-bg-accent:focus{--tw-bg-opacity:1;background-color:hsl(var(--accent)/var(--tw-bg-opacity,1))}.focus\:ds-text-accent-foreground:focus{--tw-text-opacity:1;color:hsl(var(--accent-foreground)/var(--tw-text-opacity,1))}.focus\:ds-opacity-100:focus{opacity:1}.focus\:ds-outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ds-ring-1:focus,.focus\:ds-ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--focus-width) + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ds-ring-ring:focus{--tw-ring-opacity:1;--tw-ring-color:hsl(var(--ring)/var(--tw-ring-opacity,1))}.focus\:ds-ring-offset-2:focus{--tw-ring-offset-width:var(--focus-offset)}.focus-visible\:ds-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ds-ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--focus-width) + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ds-ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--focus-width) + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ds-ring-ring:focus-visible{--tw-ring-opacity:1;--tw-ring-color:hsl(var(--ring)/var(--tw-ring-opacity,1))}.focus-visible\:ds-ring-offset-2:focus-visible{--tw-ring-offset-width:var(--focus-offset)}.disabled\:ds-pointer-events-none:disabled{pointer-events:none}.disabled\:ds-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:ds-opacity-50:disabled{opacity:.5}.disabled\:ds-opacity-disabled:disabled{opacity:var(--disabled-opacity)}.ds-group:hover .group-hover\:ds-opacity-100{opacity:1}.ds-group.ds-destructive .group-\[\.ds-destructive\]\:ds-border-muted\/40{border-color:hsl(var(--muted)/.4)}.ds-group.ds-destructive .group-\[\.ds-destructive\]\:ds-text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.ds-group.ds-destructive .group-\[\.ds-destructive\]\:hover\:ds-border-destructive\/30:hover{border-color:hsl(var(--destructive)/.3)}.ds-group.ds-destructive .group-\[\.ds-destructive\]\:hover\:ds-bg-destructive:hover{--tw-bg-opacity:1;background-color:hsl(var(--destructive)/var(--tw-bg-opacity,1))}.ds-group.ds-destructive .group-\[\.ds-destructive\]\:hover\:ds-text-destructive-foreground:hover{--tw-text-opacity:1;color:hsl(var(--destructive-foreground)/var(--tw-text-opacity,1))}.ds-group.ds-destructive .group-\[\.ds-destructive\]\:hover\:ds-text-red-50:hover{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity,1))}.ds-group.ds-destructive .group-\[\.ds-destructive\]\:focus\:ds-ring-destructive:focus{--tw-ring-opacity:1;--tw-ring-color:hsl(var(--destructive)/var(--tw-ring-opacity,1))}.ds-group.ds-destructive .group-\[\.ds-destructive\]\:focus\:ds-ring-red-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(248 113 113/var(--tw-ring-opacity,1))}.ds-group.ds-destructive .group-\[\.ds-destructive\]\:focus\:ds-ring-offset-red-600:focus{--tw-ring-offset-color:#dc2626}.ds-peer:disabled~.peer-disabled\:ds-cursor-not-allowed{cursor:not-allowed}.ds-peer:disabled~.peer-disabled\:ds-opacity-70{opacity:.7}.aria-\[invalid\=true\]\:ds-border-destructive[aria-invalid=true]{--tw-border-opacity:1;border-color:hsl(var(--destructive)/var(--tw-border-opacity,1))}.data-\[disabled\]\:ds-pointer-events-none[data-disabled]{pointer-events:none}.data-\[orientation\=vertical\]\:ds-h-auto[data-orientation=vertical]{height:auto}.data-\[side\=bottom\]\:ds-translate-y-1[data-side=bottom]{--tw-translate-y:var(--space-1,calc(var(--spacing-unit)*1))}.data-\[side\=bottom\]\:ds-translate-y-1[data-side=bottom],.data-\[side\=left\]\:-ds-translate-x-1[data-side=left]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-ds-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--space-1, calc(var(--spacing-unit) * 1)) * -1)}.data-\[side\=right\]\:ds-translate-x-1[data-side=right]{--tw-translate-x:var(--space-1,calc(var(--spacing-unit)*1))}.data-\[side\=right\]\:ds-translate-x-1[data-side=right],.data-\[side\=top\]\:-ds-translate-y-1[data-side=top]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-ds-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--space-1, calc(var(--spacing-unit) * 1)) * -1)}.data-\[swipe\=cancel\]\:ds-translate-x-0[data-swipe=cancel]{--tw-translate-x:var(--space-0,calc(var(--spacing-unit)*0))}.data-\[swipe\=cancel\]\:ds-translate-x-0[data-swipe=cancel],.data-\[swipe\=end\]\:ds-translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:ds-translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x:var(--radix-toast-swipe-end-x)}.data-\[swipe\=move\]\:ds-translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x:var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[orientation\=vertical\]\:ds-flex-col[data-orientation=vertical]{flex-direction:column}.data-\[state\=active\]\:ds-bg-background[data-state=active]{--tw-bg-opacity:1;background-color:hsl(var(--background)/var(--tw-bg-opacity,1))}.data-\[state\=checked\]\:ds-bg-primary[data-state=checked],.data-\[state\=indeterminate\]\:ds-bg-primary[data-state=indeterminate]{--tw-bg-opacity:1;background-color:hsl(var(--primary)/var(--tw-bg-opacity,1))}.data-\[state\=open\]\:ds-bg-accent[data-state=open]{--tw-bg-opacity:1;background-color:hsl(var(--accent)/var(--tw-bg-opacity,1))}.data-\[placeholder\]\:ds-text-muted-foreground[data-placeholder]{--tw-text-opacity:1;color:hsl(var(--muted-foreground)/var(--tw-text-opacity,1))}.data-\[state\=active\]\:ds-text-foreground[data-state=active]{--tw-text-opacity:1;color:hsl(var(--foreground)/var(--tw-text-opacity,1))}.data-\[state\=checked\]\:ds-text-primary-foreground[data-state=checked],.data-\[state\=indeterminate\]\:ds-text-primary-foreground[data-state=indeterminate]{--tw-text-opacity:1;color:hsl(var(--primary-foreground)/var(--tw-text-opacity,1))}.data-\[state\=open\]\:ds-text-muted-foreground[data-state=open]{--tw-text-opacity:1;color:hsl(var(--muted-foreground)/var(--tw-text-opacity,1))}.data-\[disabled\]\:ds-opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:ds-shadow[data-state=active]{--tw-shadow:var(--shadow);--tw-shadow-colored:var(--shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\[swipe\=move\]\:ds-transition-none[data-swipe=move]{transition-property:none}.data-\[state\=open\]\:ds-animate-in[data-state=open]{animation-name:enter;animation-duration:var(--duration);--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\[state\=closed\]\:ds-animate-out[data-state=closed],.data-\[swipe\=end\]\:ds-animate-out[data-swipe=end]{animation-name:exit;animation-duration:var(--duration);--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\[state\=closed\]\:ds-fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:ds-fade-out-80[data-state=closed]{--tw-exit-opacity:0.8}.data-\[state\=open\]\:ds-fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=closed\]\:ds-zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:ds-zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[side\=bottom\]\:ds-slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-var(--space-2,calc(var(--spacing-unit)*2))}.data-\[side\=left\]\:ds-slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:var(--space-2,calc(var(--spacing-unit)*2))}.data-\[side\=right\]\:ds-slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-var(--space-2,calc(var(--spacing-unit)*2))}.data-\[side\=top\]\:ds-slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:var(--space-2,calc(var(--spacing-unit)*2))}.data-\[state\=closed\]\:ds-slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\[state\=closed\]\:ds-slide-out-to-right-full[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:ds-slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\[state\=open\]\:ds-slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\[state\=open\]\:ds-slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y:-48%}.data-\[state\=open\]\:ds-slide-in-from-top-full[data-state=open]{--tw-enter-translate-y:-100%}@media (min-width:640px){.sm\:ds-bottom-0{bottom:var(--space-0,calc(var(--spacing-unit)*0))}.sm\:ds-right-0{right:var(--space-0,calc(var(--spacing-unit)*0))}.sm\:ds-top-auto{top:auto}.sm\:ds-flex-row{flex-direction:row}.sm\:ds-flex-col{flex-direction:column}.sm\:ds-justify-end{justify-content:flex-end}.sm\:ds-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(var(--space-2, calc(var(--spacing-unit) * 2)) * var(--tw-space-x-reverse));margin-left:calc(var(--space-2, calc(var(--spacing-unit) * 2)) * calc(1 - var(--tw-space-x-reverse)))}.sm\:ds-rounded-lg{border-radius:var(--radius-lg)}.sm\:ds-text-left{text-align:left}.data-\[state\=open\]\:sm\:ds-slide-in-from-bottom-full[data-state=open]{--tw-enter-translate-y:100%}}@media (min-width:768px){.md\:ds-max-w-\[var\(--toast-width\)\]{max-width:var(--toast-width)}.md\:ds-text-sm{font-size:var(--font-size-sm);line-height:var(--line-height)}}.\[\&\+div\]\:ds-text-xs+div{font-size:var(--font-size-xs);line-height:var(--line-height)}.active\:\[\&\:not\(\[aria-haspopup\]\)\]\:ds-translate-y-px:not([aria-haspopup]):active{--tw-translate-y:1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media (prefers-reduced-motion:reduce){.motion-reduce\:active\:\[\&\:not\(\[aria-haspopup\]\)\]\:ds-transform-none:not([aria-haspopup]):active{transform:none}}.\[\&\>span\]\:ds-line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&_svg\]\:ds-pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:ds-size-4 svg{width:var(--space-4,calc(var(--spacing-unit)*4));height:var(--space-4,calc(var(--spacing-unit)*4))}.\[\&_svg\]\:ds-shrink-0 svg{flex-shrink:0}
@@ -0,0 +1,102 @@
1
+ /* Colors are space-separated HSL channels. All other tokens use CSS values.
2
+ Low-specificity defaults let consumer :root rules win in either import order. */
3
+ :where(:root) {
4
+ color-scheme: light;
5
+ --background: 0 0% 100%;
6
+ --foreground: 222 47% 11%;
7
+ --card: 0 0% 100%;
8
+ --card-foreground: 222 47% 11%;
9
+ --popover: 0 0% 100%;
10
+ --popover-foreground: 222 47% 11%;
11
+ --accent: 220 20% 94%;
12
+ --accent-foreground: 222 35% 20%;
13
+ --primary: 220 80% 45%;
14
+ --primary-foreground: 0 0% 100%;
15
+ --primary-hover: 220 80% 38%;
16
+ --secondary: 220 20% 94%;
17
+ --secondary-foreground: 222 35% 20%;
18
+ --muted: 220 15% 96%;
19
+ --muted-foreground: 220 10% 42%;
20
+ --border: 220 15% 82%;
21
+ --input: 220 15% 82%;
22
+ --ring: 220 80% 45%;
23
+ --destructive: 0 72% 43%;
24
+ --destructive-foreground: 0 0% 100%;
25
+ --overlay: 222 47% 11% / 0.4;
26
+ --font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
27
+ sans-serif;
28
+ --font-heading: var(--font-sans);
29
+ --font-size-xs: 0.75rem;
30
+ --font-size-sm: 0.8125rem;
31
+ --font-size-md: 0.875rem;
32
+ --font-size-lg: 1.25rem;
33
+ --font-weight-medium: 500;
34
+ --font-weight-bold: 600;
35
+ --line-height: 1.5;
36
+ --spacing-unit: 0.25rem;
37
+ --space-0: calc(var(--spacing-unit) * 0);
38
+ --space-0-5: calc(var(--spacing-unit) * 0.5);
39
+ --space-1: calc(var(--spacing-unit) * 1);
40
+ --space-1-5: calc(var(--spacing-unit) * 1.5);
41
+ --space-2: calc(var(--spacing-unit) * 2);
42
+ --space-2-5: calc(var(--spacing-unit) * 2.5);
43
+ --space-3: calc(var(--spacing-unit) * 3);
44
+ --space-3-5: calc(var(--spacing-unit) * 3.5);
45
+ --space-4: calc(var(--spacing-unit) * 4);
46
+ --space-5: calc(var(--spacing-unit) * 5);
47
+ --space-6: calc(var(--spacing-unit) * 6);
48
+ --space-8: calc(var(--spacing-unit) * 8);
49
+ --space-9: calc(var(--spacing-unit) * 9);
50
+ --space-10: calc(var(--spacing-unit) * 10);
51
+ --space-12: calc(var(--spacing-unit) * 12);
52
+ --space-16: calc(var(--spacing-unit) * 16);
53
+ --space-20: calc(var(--spacing-unit) * 20);
54
+ --space-24: calc(var(--spacing-unit) * 24);
55
+ --space-32: calc(var(--spacing-unit) * 32);
56
+ --radius: 0.5rem;
57
+ --radius-sm: calc(var(--radius) * 0.6);
58
+ --radius-full: 9999px;
59
+ --radius-lg: calc(var(--radius) * 1.5);
60
+ --border-width: 1px;
61
+ --dialog-width: 32.5rem;
62
+ --tooltip-width: 20rem;
63
+ --toast-width: 24rem;
64
+ --shadow-sm: 0 1px 2px hsl(222 47% 11% / 0.08);
65
+ --shadow: 0 8px 24px hsl(222 47% 11% / 0.12);
66
+ --shadow-dialog: 0 24px 70px hsl(222 47% 11% / 0.24);
67
+ --focus-width: 2px;
68
+ --focus-offset: 2px;
69
+ --disabled-opacity: 0.5;
70
+ --duration: 150ms;
71
+ --z-overlay: 50;
72
+ --z-popover: 60;
73
+ --z-toast: 70;
74
+ }
75
+ :where([data-color-scheme="light"]) {
76
+ color-scheme: light;
77
+ }
78
+ /* Opt in independently of the consumer's brand theme. */
79
+ :where([data-color-scheme="dark"]) {
80
+ color-scheme: dark;
81
+ --background: 222 30% 9%;
82
+ --foreground: 220 20% 96%;
83
+ --card: 222 25% 13%;
84
+ --card-foreground: 220 20% 96%;
85
+ --popover: 222 25% 13%;
86
+ --popover-foreground: 220 20% 96%;
87
+ --accent: 222 20% 22%;
88
+ --accent-foreground: 220 20% 96%;
89
+ --primary: 217 90% 70%;
90
+ --primary-foreground: 222 47% 11%;
91
+ --primary-hover: 217 90% 78%;
92
+ --secondary: 222 20% 22%;
93
+ --secondary-foreground: 220 20% 96%;
94
+ --muted: 222 20% 18%;
95
+ --muted-foreground: 220 15% 72%;
96
+ --border: 220 15% 36%;
97
+ --input: 220 15% 36%;
98
+ --ring: 217 90% 70%;
99
+ --destructive: 0 80% 72%;
100
+ --destructive-foreground: 222 47% 11%;
101
+ --overlay: 222 47% 3% / 0.7;
102
+ }
package/dist/utils.js ADDED
@@ -0,0 +1,10 @@
1
+ import { clsx as e } from "clsx";
2
+ import { extendTailwindMerge as n } from "tailwind-merge";
3
+ const o = n({ prefix: "ds-" });
4
+ function m(...r) {
5
+ return o(e(r));
6
+ }
7
+ export {
8
+ m as cn
9
+ };
10
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../src/lib/utils.ts"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\nconst merge = extendTailwindMerge({ prefix: \"ds-\" });\n/** Combine conditional classes and resolve conflicting prefixed utilities. */\nexport function cn(...inputs: ClassValue[]) {\n return merge(clsx(inputs));\n}\n"],"names":["merge","extendTailwindMerge","cn","inputs","clsx"],"mappings":";;AAGA,MAAMA,IAAQC,EAAoB,EAAE,QAAQ,OAAO;AAE5C,SAASC,KAAMC,GAAsB;AAC1C,SAAOH,EAAMI,EAAKD,CAAM,CAAC;AAC3B;"}
package/package.json CHANGED
@@ -1,6 +1,98 @@
1
1
  {
2
2
  "name": "@darthcharles/greda",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0",
4
+ "description": "Generic React components with a complete, overridable base theme.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "files": [
8
+ "dist",
9
+ "README.md",
10
+ "LICENSE",
11
+ "THIRD_PARTY_NOTICES.md",
12
+ "upstream/shadcn-ui/LICENSE.md"
13
+ ],
14
+ "main": "./dist/index.js",
15
+ "module": "./dist/index.js",
16
+ "types": "./dist/index.d.ts",
17
+ "exports": {
18
+ ".": {
19
+ "types": "./dist/index.d.ts",
20
+ "import": "./dist/index.js"
21
+ },
22
+ "./utils": {
23
+ "types": "./dist/lib/utils.d.ts",
24
+ "import": "./dist/utils.js"
25
+ },
26
+ "./styles.css": "./dist/styles.css",
27
+ "./tokens.css": "./dist/tokens.css"
28
+ },
29
+ "sideEffects": [
30
+ "**/*.css"
31
+ ],
32
+ "engines": {
33
+ "node": ">=22.12.0"
34
+ },
35
+ "peerDependencies": {
36
+ "react": "^18.2.0 || ^19.0.0",
37
+ "react-dom": "^18.2.0 || ^19.0.0"
38
+ },
39
+ "scripts": {
40
+ "dev": "storybook dev -p 6006 --no-open --disable-telemetry",
41
+ "storybook": "npm run dev",
42
+ "build-storybook": "storybook build --disable-telemetry",
43
+ "typecheck": "tsc --noEmit",
44
+ "build": "vite build && tsc -p tsconfig.build.json && tailwindcss -i src/styles/styles.css -o dist/styles.css --minify && node scripts/build-css.mjs",
45
+ "test": "vitest run",
46
+ "validate:package": "node scripts/validate-package.mjs",
47
+ "check": "npm run typecheck && npm test && npm run validate:stories && npm run build && npm run validate:package && npm run build-storybook",
48
+ "changeset": "changeset",
49
+ "version-packages": "changeset version",
50
+ "release": "npm run check && changeset publish",
51
+ "prepack": "npm run build",
52
+ "test:browser": "playwright test",
53
+ "validate:stories": "node scripts/validate-stories.mjs",
54
+ "docs:tokens": "node scripts/generate-token-reference.mjs"
55
+ },
56
+ "dependencies": {
57
+ "@radix-ui/react-checkbox": "^1.0.0",
58
+ "@radix-ui/react-dialog": "^1.0.0",
59
+ "@radix-ui/react-label": "^2.1.17",
60
+ "@radix-ui/react-select": "^2.4.1",
61
+ "@radix-ui/react-slot": "^1.0.0",
62
+ "@radix-ui/react-tabs": "^1.0.0",
63
+ "@radix-ui/react-toast": "^1.0.0",
64
+ "@radix-ui/react-tooltip": "^1.0.0",
65
+ "class-variance-authority": "^0.7.1",
66
+ "clsx": "^2.1.1",
67
+ "lucide-react": "^0.468.0",
68
+ "tailwind-merge": "^2.6.0"
69
+ },
70
+ "devDependencies": {
71
+ "@axe-core/playwright": "^4.10.2",
72
+ "@changesets/cli": "^2.29.0",
73
+ "@fontsource-variable/dm-sans": "^5.3.0",
74
+ "@fontsource-variable/fraunces": "^5.3.0",
75
+ "@playwright/test": "^1.56.0",
76
+ "@storybook/addon-a11y": "^10.6.3",
77
+ "@storybook/addon-docs": "^10.6.3",
78
+ "@storybook/react-vite": "^10.6.3",
79
+ "@testing-library/jest-dom": "^6.9.1",
80
+ "@testing-library/react": "^16.3.0",
81
+ "@testing-library/user-event": "^14.6.1",
82
+ "@types/node": "^22.0.0",
83
+ "@types/react": "^18.3.0",
84
+ "@types/react-dom": "^18.3.0",
85
+ "@vitejs/plugin-react": "^5.0.0",
86
+ "autoprefixer": "^10.4.20",
87
+ "jsdom": "^26.1.0",
88
+ "postcss": "^8.5.0",
89
+ "react": "^18.3.1",
90
+ "react-dom": "^18.3.1",
91
+ "storybook": "^10.6.3",
92
+ "tailwindcss": "^3.4.17",
93
+ "tailwindcss-animate": "^1.0.7",
94
+ "typescript": "^5.9.0",
95
+ "vite": "^7.0.0",
96
+ "vitest": "^3.2.0"
97
+ }
98
+ }
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 shadcn
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.