@tutti-os/ui-system 0.0.2 → 0.0.3

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/components/badge/badge.tsx","../src/components/bare-icon-button/bare-icon-button.tsx","../src/components/button/button.tsx","../src/components/card/card.tsx","../src/components/checkbox/checkbox.tsx","../src/components/dialog/dialog.tsx","../src/components/confirmation-dialog/confirmation-dialog.tsx","../src/components/date-picker/date-picker.tsx","../src/components/drawer/drawer.tsx","../src/components/dropdown-menu/dropdown-menu.tsx","../src/components/menu-surface/menu-surface.tsx","../src/components/input/input.tsx","../src/components/mention-pill/mention-pill.tsx","../src/components/popover/popover.tsx","../src/components/resizable/resizable.tsx","../src/components/scroll-area/scroll-area.tsx","../src/components/select/select.tsx","../src/components/separator/separator.tsx","../src/components/section-tabs/section-tabs.tsx","../src/components/shortcut-badge/shortcut-badge.tsx","../src/components/sonner/sonner.tsx","../src/components/spinner/spinner.tsx","../src/components/status-dot/status-dot.tsx","../src/components/switch/switch.tsx","../src/components/textarea/textarea.tsx","../src/components/toast/toast.tsx","../src/components/tooltip/tooltip.tsx","../src/components/underline-tabs/underline-tabs.tsx","../src/components/viewport-menu-surface/viewport-menu-surface.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"#lib/utils\";\n\nconst badgeVariants = cva(\n \"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-[4px] border border-transparent px-1 py-0.5 text-[0.72rem] font-normal whitespace-nowrap transition-[background-color,border-color,color,box-shadow] focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/35 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n {\n variants: {\n variant: {\n default:\n \"bg-[var(--transparency-block)] text-[var(--text-secondary)] [a]:hover:bg-[var(--transparency-hover)]\",\n accent:\n \"bg-[var(--accent-bg)] text-[var(--accent)] [a]:hover:bg-[var(--accent-bg)]\",\n success:\n \"bg-[color-mix(in_srgb,var(--state-success)_10%,transparent)] text-[var(--state-success)] [a]:hover:bg-[color-mix(in_srgb,var(--state-success)_14%,transparent)]\",\n warning:\n \"bg-[color-mix(in_srgb,var(--state-warning)_12%,transparent)] text-[var(--state-warning)] [a]:hover:bg-[color-mix(in_srgb,var(--state-warning)_16%,transparent)]\",\n pending:\n \"bg-[color-mix(in_srgb,var(--rich-text-mention-issue)_12%,transparent)] text-[var(--rich-text-mention-issue)] [a]:hover:bg-[color-mix(in_srgb,var(--rich-text-mention-issue)_16%,transparent)]\",\n muted:\n \"bg-[color-mix(in_srgb,var(--transparency-block)_72%,transparent)] text-[var(--text-tertiary)] [a]:hover:bg-[var(--transparency-hover)]\",\n secondary:\n \"bg-[var(--transparency-block)] text-[var(--text-secondary)] [a]:hover:bg-[var(--transparency-hover)]\",\n destructive:\n \"bg-[var(--on-danger)] text-[var(--state-danger)] focus-visible:ring-[color-mix(in_srgb,var(--state-danger)_20%,transparent)] [a]:hover:bg-[var(--on-danger-hover)]\",\n outline:\n \"border-border bg-card/90 text-foreground [a]:hover:bg-muted [a]:hover:text-foreground\",\n ghost:\n \"hover:bg-accent/80 hover:text-accent-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\"\n }\n },\n defaultVariants: {\n variant: \"default\"\n }\n }\n);\n\nfunction Badge({\n className,\n variant = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"span\";\n\n return (\n <Comp\n data-slot=\"badge\"\n data-variant={variant}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"#lib/utils\";\n\nconst bareIconButtonVariants = cva(\n \"inline-flex shrink-0 cursor-pointer items-center justify-center border border-transparent bg-transparent p-0 text-[var(--text-tertiary)] transition-[color,opacity,box-shadow] duration-150 outline-none select-none hover:border-transparent hover:bg-transparent hover:text-[var(--text-primary)] active:bg-transparent active:text-[var(--text-primary)] aria-expanded:bg-transparent aria-expanded:text-[var(--text-primary)] focus-visible:border-transparent focus-visible:bg-transparent focus-visible:text-[var(--text-primary)] focus-visible:ring-2 focus-visible:ring-[var(--border-focus)] disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-transparent disabled:text-[var(--text-disabled)] disabled:opacity-100 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n size: {\n md: \"size-6 rounded-[4px] [&_svg:not([class*='size-'])]:size-4\",\n sm: \"size-5 rounded-[3px] [&_svg:not([class*='size-'])]:size-3.5\"\n }\n },\n defaultVariants: {\n size: \"md\"\n }\n }\n);\n\ntype BareIconButtonSize = NonNullable<\n VariantProps<typeof bareIconButtonVariants>[\"size\"]\n>;\n\ntype BareIconButtonProps = Omit<\n React.ComponentProps<\"button\">,\n \"aria-label\" | \"children\"\n> & {\n \"aria-label\": string;\n asChild?: boolean;\n children: React.ReactNode;\n size?: BareIconButtonSize;\n};\n\nfunction BareIconButton({\n className,\n size = \"md\",\n asChild = false,\n type = \"button\",\n ...props\n}: BareIconButtonProps) {\n const Comp = asChild ? Slot.Root : \"button\";\n\n return (\n <Comp\n data-slot=\"bare-icon-button\"\n data-size={size}\n type={type}\n className={cn(bareIconButtonVariants({ size, className }))}\n {...props}\n />\n );\n}\n\nexport { BareIconButton };\nexport type { BareIconButtonProps };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"#lib/utils\";\n\nconst buttonVariants = cva(\n \"group/button inline-flex shrink-0 cursor-pointer items-center justify-center rounded-md border border-transparent bg-clip-padding text-[13px] font-normal whitespace-nowrap transition-[background-color,border-color,color,box-shadow,transform] outline-none select-none focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/35 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-2 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default:\n \"bg-[var(--text-primary)] text-[var(--text-inverted)] shadow-none hover:bg-[var(--text-primary-hover)]\",\n outline:\n \"border-border bg-card text-foreground hover:bg-muted/80 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-transparency-block text-[var(--text-primary)] hover:bg-transparency-hover aria-expanded:bg-transparency-hover aria-expanded:text-[var(--text-primary)]\",\n ghost:\n \"bg-transparent text-[var(--text-primary)] hover:bg-transparency-hover aria-expanded:bg-transparency-hover aria-expanded:text-[var(--text-primary)]\",\n chrome:\n \"border border-transparent bg-transparent text-[var(--text-tertiary)] shadow-none hover:border-transparent hover:bg-[var(--transparency-hover)] hover:text-[var(--text-primary)] active:bg-[var(--transparency-active)] active:text-[var(--text-primary)] aria-expanded:border-transparent aria-expanded:bg-[var(--transparency-block)] aria-expanded:text-[var(--text-primary)] disabled:pointer-events-auto disabled:cursor-not-allowed disabled:opacity-45\",\n destructive:\n \"bg-[var(--state-danger)] text-[var(--white-stationary)] hover:bg-[var(--state-danger-hover)] focus-visible:border-[var(--state-danger)] focus-visible:ring-[color-mix(in_srgb,var(--state-danger)_25%,transparent)]\",\n link: \"text-primary underline-offset-4 hover:underline\"\n },\n size: {\n default:\n \"h-8 gap-[6px] px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg[data-icon=inline-start]:not([class*='size-'])]:size-3.5 [&_[data-icon=inline-start]_svg:not([class*='size-'])]:size-3.5\",\n dialog:\n \"h-8 gap-[6px] rounded-md px-3 text-[13px] font-normal leading-5 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5 [&_svg[data-icon=inline-start]:not([class*='size-'])]:size-3.5 [&_[data-icon=inline-start]_svg:not([class*='size-'])]:size-3.5\",\n xs: \"h-6 gap-1 rounded-sm px-2 text-[11px] in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3 [&_svg[data-icon=inline-start]:not([class*='size-'])]:size-2.5 [&_[data-icon=inline-start]_svg:not([class*='size-'])]:size-2.5\",\n sm: \"h-7 gap-1 rounded-sm px-2.5 text-[13px] in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5 [&_svg[data-icon=inline-start]:not([class*='size-'])]:size-3 [&_[data-icon=inline-start]_svg:not([class*='size-'])]:size-3\",\n lg: \"h-9 gap-2 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5 [&_svg[data-icon=inline-start]:not([class*='size-'])]:size-3.5 [&_[data-icon=inline-start]_svg:not([class*='size-'])]:size-3.5\",\n icon: \"size-8\",\n \"icon-xs\":\n \"size-6 rounded-sm in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3 [&_svg[data-icon=inline-start]:not([class*='size-'])]:size-2.5 [&_[data-icon=inline-start]_svg:not([class*='size-'])]:size-2.5\",\n \"icon-sm\": \"size-7 rounded-sm in-data-[slot=button-group]:rounded-md\",\n \"icon-lg\": \"size-9\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n },\n compoundVariants: [\n {\n variant: \"chrome\",\n size: \"icon-sm\",\n class: \"rounded-[4px]\"\n }\n ]\n }\n);\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot.Root : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\n\nimport { cn } from \"#lib/utils\";\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n \"group/card flex flex-col gap-4 overflow-hidden rounded-lg border border-border/70 bg-card py-4 text-[13px] text-card-foreground shadow-none has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-lg px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:border-border/70 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\n \"text-[15px] leading-snug font-medium group-data-[size=sm]/card:text-[13px]\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\n \"text-[13px] leading-[1.3] text-muted-foreground\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-4 group-data-[size=sm]/card:px-3\", className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\n \"flex items-center rounded-b-lg border-t border-border/70 bg-muted/50 p-4 group-data-[size=sm]/card:p-3\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent\n};\n","import * as React from \"react\";\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\";\n\nimport { CheckIcon } from \"#icons/system-icons\";\nimport { cn } from \"#lib/utils\";\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer inline-flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-[var(--border-1)] bg-[var(--transparency-block)] text-[var(--text-inverted)] transition-[background-color,border-color,color,box-shadow] outline-none focus-visible:border-[var(--border-focus)] focus-visible:ring-2 focus-visible:ring-[color-mix(in_srgb,var(--border-focus)_30%,transparent)] disabled:cursor-not-allowed disabled:border-[var(--border-1)] disabled:bg-[var(--transparency-block)] disabled:text-[var(--text-inverted)] disabled:opacity-100 data-disabled:border-[var(--border-1)] aria-invalid:border-[var(--state-danger)] aria-invalid:ring-2 aria-invalid:ring-[color-mix(in_srgb,var(--state-danger)_20%,transparent)] data-[state=checked]:border-[var(--text-primary)] data-[state=checked]:bg-[var(--text-primary)] data-[state=unchecked]:hover:border-[color-mix(in_srgb,var(--text-primary)_40%,transparent)] disabled:data-[state=checked]:border-[var(--border-1)] disabled:data-[state=checked]:bg-[var(--text-disabled)] data-disabled:data-[state=checked]:border-[var(--border-1)]\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-current transition-none [&>svg]:size-3\"\n >\n <CheckIcon size={14} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n","import * as React from \"react\";\nimport { Dialog as DialogPrimitive } from \"radix-ui\";\n\nimport { Button } from \"#components/button\";\nimport { CloseIcon } from \"#icons/system-icons\";\nimport { cn } from \"#lib/utils\";\n\nconst dialogCloseDurationMs = 150;\n\nconst DialogMotionContext = React.createContext<{ open: boolean }>({\n open: false\n});\n\nfunction Dialog({\n defaultOpen,\n onOpenChange,\n open,\n ...props\n}: Omit<React.ComponentProps<typeof DialogPrimitive.Root>, \"onOpenChange\"> & {\n onOpenChange?: (open: boolean) => void;\n}) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(\n defaultOpen ?? false\n );\n const currentOpen = open ?? uncontrolledOpen;\n\n const handleOpenChange = React.useCallback(\n (nextOpen: boolean) => {\n if (open === undefined) {\n setUncontrolledOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n },\n [onOpenChange, open]\n );\n\n return (\n <DialogMotionContext.Provider value={{ open: currentOpen }}>\n <DialogPrimitive.Root\n data-slot=\"dialog\"\n open={currentOpen}\n onOpenChange={handleOpenChange}\n {...props}\n />\n </DialogMotionContext.Provider>\n );\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n style,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 isolate bg-[var(--backdrop)] duration-150 supports-backdrop-filter:backdrop-blur-sm data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0\",\n className\n )}\n style={{ zIndex: \"var(--z-dialog-overlay)\", ...style }}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n overlayClassName,\n portaled = true,\n showCloseButton = true,\n style,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n overlayClassName?: string;\n portaled?: boolean;\n showCloseButton?: boolean;\n}) {\n const { open } = React.useContext(DialogMotionContext);\n const [mounted, setMounted] = React.useState(open);\n\n React.useEffect(() => {\n if (open) {\n setMounted(true);\n return undefined;\n }\n\n const timeout = window.setTimeout(() => {\n setMounted(false);\n }, dialogCloseDurationMs);\n\n return () => {\n window.clearTimeout(timeout);\n };\n }, [open]);\n\n if (!mounted) {\n return null;\n }\n\n const content = (\n <>\n <DialogOverlay className={overlayClassName} forceMount />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n forceMount\n className={cn(\n portaled ? \"fixed\" : \"absolute\",\n \"pointer-events-none top-1/2 left-1/2 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 origin-center gap-3 rounded-[16px] border border-border-1 bg-[var(--background-panel)] p-[18px] text-[13px] text-foreground shadow-panel outline-none ease-[cubic-bezier(0.22,1,0.36,1)] will-change-[transform,opacity] sm:max-w-[360px] data-[state=closed]:!pointer-events-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-[0.96] data-[state=closed]:duration-[150ms] data-[state=open]:pointer-events-auto data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-[0.96] data-[state=open]:duration-[250ms] motion-reduce:animate-none\",\n className\n )}\n style={{ zIndex: \"var(--z-dialog)\", ...style }}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close data-slot=\"dialog-close\" asChild>\n <Button\n variant=\"ghost\"\n className=\"absolute top-3 right-3\"\n size=\"icon-sm\"\n >\n <CloseIcon />\n <span className=\"sr-only\">Close</span>\n </Button>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </>\n );\n\n if (!portaled) {\n return content;\n }\n\n return <DialogPortal forceMount>{content}</DialogPortal>;\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 pr-8\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean;\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 pt-1 sm:flex-row sm:justify-end sm:gap-2.5\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close asChild>\n <Button variant=\"ghost\" size=\"dialog\">\n Close\n </Button>\n </DialogPrimitive.Close>\n )}\n </div>\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\n \"text-[15px] leading-[1.35] font-semibold tracking-normal text-foreground\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\n \"text-[13px] font-[400] leading-[1.3] text-text-secondary *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger\n};\n","import * as React from \"react\";\n\nimport { Button } from \"#components/button\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle\n} from \"#components/dialog\";\nimport { cn } from \"#lib/utils\";\n\ntype ConfirmationDialogTone = \"default\" | \"destructive\";\n\nfunction confirmToneClassName(tone: ConfirmationDialogTone) {\n if (tone === \"destructive\") {\n return \"shadow-none\";\n }\n\n return undefined;\n}\n\nfunction ConfirmationDialog({\n cancelLabel,\n children,\n className,\n confirmBusy = false,\n confirmDisabled = false,\n confirmLabel,\n description,\n disableCloseWhileBusy = true,\n footer,\n hideConfirmButton = false,\n onCancel,\n onConfirm,\n onOpenChange,\n open,\n overlayClassName,\n portaled = true,\n tone = \"default\",\n title\n}: {\n cancelLabel: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n confirmBusy?: boolean;\n confirmDisabled?: boolean;\n confirmLabel: React.ReactNode;\n description?: React.ReactNode;\n disableCloseWhileBusy?: boolean;\n footer?: React.ReactNode;\n hideConfirmButton?: boolean;\n onCancel?: () => void;\n onConfirm?: () => void;\n onOpenChange: (open: boolean) => void;\n open: boolean;\n overlayClassName?: string;\n portaled?: boolean;\n tone?: ConfirmationDialogTone;\n title: React.ReactNode;\n}) {\n const isCloseDisabled = disableCloseWhileBusy && confirmBusy;\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent\n className={cn(\n \"max-w-[calc(100%-2rem)] text-left sm:max-w-[360px]\",\n className\n )}\n overlayClassName={cn(overlayClassName)}\n portaled={portaled}\n showCloseButton={false}\n onEscapeKeyDown={(event) => {\n if (isCloseDisabled) {\n event.preventDefault();\n }\n }}\n onInteractOutside={(event) => {\n if (isCloseDisabled) {\n event.preventDefault();\n }\n }}\n >\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n {description ? (\n <DialogDescription>{description}</DialogDescription>\n ) : null}\n </DialogHeader>\n {children ? (\n <div className=\"text-[13px] leading-[1.3] text-text-secondary\">\n {children}\n </div>\n ) : null}\n {footer ?? (\n <DialogFooter>\n <Button\n disabled={confirmBusy}\n size=\"dialog\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => {\n onCancel?.();\n onOpenChange(false);\n }}\n >\n {cancelLabel}\n </Button>\n {hideConfirmButton ? null : (\n <Button\n disabled={confirmBusy || confirmDisabled}\n size=\"dialog\"\n type=\"button\"\n variant={tone === \"default\" ? \"default\" : \"destructive\"}\n className={cn(\"shadow-none\", confirmToneClassName(tone))}\n onClick={() => {\n onConfirm?.();\n }}\n >\n {confirmLabel}\n </Button>\n )}\n </DialogFooter>\n )}\n </DialogContent>\n </Dialog>\n );\n}\n\nexport { ConfirmationDialog };\nexport type { ConfirmationDialogTone };\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { ArrowLeftIcon, ArrowRightIcon } from \"#icons/system-icons\";\nimport { cn } from \"#lib/utils\";\n\nexport interface DatePickerLabels {\n placeholder: string;\n previousMonth: string;\n nextMonth: string;\n clear: string;\n today: string;\n weekdayLabels: readonly [\n string,\n string,\n string,\n string,\n string,\n string,\n string\n ];\n}\n\nexport interface DatePickerProps extends Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"onChange\" | \"value\" | \"type\"\n> {\n value?: string;\n onValueChange?: (value: string) => void;\n labels?: Partial<DatePickerLabels>;\n formatDisplayValue?: (date: Date) => string;\n formatMonthLabel?: (date: Date) => string;\n}\n\nconst defaultLabels: DatePickerLabels = {\n placeholder: \"Year / Month / Day\",\n previousMonth: \"Previous month\",\n nextMonth: \"Next month\",\n clear: \"Clear\",\n today: \"Today\",\n weekdayLabels: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\n};\n\nconst DATE_PICKER_POPOVER_WIDTH_PX = 264;\nconst DATE_PICKER_POPOVER_HEIGHT_PX = 336;\nconst DATE_PICKER_POPOVER_GAP_PX = 6;\nconst DATE_PICKER_VIEWPORT_MARGIN_PX = 8;\n\nfunction parseDateValue(value: string | undefined): Date | null {\n if (!value) {\n return null;\n }\n\n const [year, month, day] = value.split(\"-\").map(Number);\n if (!year || !month || !day) {\n return null;\n }\n\n return new Date(year, month - 1, day);\n}\n\nfunction formatDateValue(date: Date): string {\n const year = date.getFullYear();\n const month = `${date.getMonth() + 1}`.padStart(2, \"0\");\n const day = `${date.getDate()}`.padStart(2, \"0\");\n return `${year}-${month}-${day}`;\n}\n\nfunction defaultDisplayValueFormatter(date: Date): string {\n return new Intl.DateTimeFormat(undefined, {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\"\n }).format(date);\n}\n\nfunction defaultMonthLabelFormatter(date: Date): string {\n return new Intl.DateTimeFormat(undefined, {\n year: \"numeric\",\n month: \"long\"\n }).format(date);\n}\n\nfunction isSameDate(left: Date | null, right: Date | null): boolean {\n return Boolean(\n left &&\n right &&\n left.getFullYear() === right.getFullYear() &&\n left.getMonth() === right.getMonth() &&\n left.getDate() === right.getDate()\n );\n}\n\nfunction buildMonthGrid(monthDate: Date): Date[] {\n const firstOfMonth = new Date(\n monthDate.getFullYear(),\n monthDate.getMonth(),\n 1\n );\n const gridStart = new Date(firstOfMonth);\n gridStart.setDate(firstOfMonth.getDate() - firstOfMonth.getDay());\n\n return Array.from({ length: 42 }, (_, index) => {\n const date = new Date(gridStart);\n date.setDate(gridStart.getDate() + index);\n return date;\n });\n}\n\nfunction resolvePopoverPosition(rect: DOMRect): {\n top: number;\n left: number;\n width: number;\n} {\n const width = Math.max(rect.width, DATE_PICKER_POPOVER_WIDTH_PX);\n const maxLeft = window.innerWidth - width - DATE_PICKER_VIEWPORT_MARGIN_PX;\n const left = Math.max(\n DATE_PICKER_VIEWPORT_MARGIN_PX,\n Math.min(rect.left, Math.max(DATE_PICKER_VIEWPORT_MARGIN_PX, maxLeft))\n );\n const belowTop = rect.bottom + DATE_PICKER_POPOVER_GAP_PX;\n const aboveTop =\n rect.top - DATE_PICKER_POPOVER_GAP_PX - DATE_PICKER_POPOVER_HEIGHT_PX;\n const canOpenBelow =\n belowTop + DATE_PICKER_POPOVER_HEIGHT_PX <=\n window.innerHeight - DATE_PICKER_VIEWPORT_MARGIN_PX;\n const top = canOpenBelow\n ? belowTop\n : Math.max(DATE_PICKER_VIEWPORT_MARGIN_PX, aboveTop);\n\n return { top, left, width };\n}\n\nfunction subscribeScrollableAncestors(\n trigger: HTMLElement,\n onScrollLike: () => void\n): () => void {\n const cleanups: Array<() => void> = [];\n let element: HTMLElement | null = trigger.parentElement;\n\n while (element && element !== document.documentElement) {\n const { overflowX, overflowY } = window.getComputedStyle(element);\n if (\n overflowY === \"auto\" ||\n overflowY === \"scroll\" ||\n overflowY === \"overlay\" ||\n overflowX === \"auto\" ||\n overflowX === \"scroll\" ||\n overflowX === \"overlay\"\n ) {\n element.addEventListener(\"scroll\", onScrollLike, { passive: true });\n const current = element;\n cleanups.push(() => current.removeEventListener(\"scroll\", onScrollLike));\n }\n element = element.parentElement;\n }\n\n return () => cleanups.forEach((dispose) => dispose());\n}\n\nconst DatePicker = React.forwardRef<HTMLButtonElement, DatePickerProps>(\n (\n {\n className,\n value,\n onValueChange,\n onClick,\n disabled,\n labels,\n formatDisplayValue = defaultDisplayValueFormatter,\n formatMonthLabel = defaultMonthLabelFormatter,\n ...props\n },\n ref\n ) => {\n const resolvedLabels: DatePickerLabels = {\n ...defaultLabels,\n ...labels,\n weekdayLabels: labels?.weekdayLabels ?? defaultLabels.weekdayLabels\n };\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const popoverRef = React.useRef<HTMLDivElement | null>(null);\n const selectedDate = React.useMemo(() => parseDateValue(value), [value]);\n const [isOpen, setIsOpen] = React.useState(false);\n const [visibleMonth, setVisibleMonth] = React.useState(\n () => selectedDate ?? new Date()\n );\n const [popoverPosition, setPopoverPosition] = React.useState<{\n top: number;\n left: number;\n width: number;\n } | null>(null);\n\n React.useEffect(() => {\n if (selectedDate) {\n setVisibleMonth(selectedDate);\n }\n }, [selectedDate]);\n\n const openPopover = React.useCallback(() => {\n const trigger = triggerRef.current;\n if (!trigger) {\n return;\n }\n setPopoverPosition(\n resolvePopoverPosition(trigger.getBoundingClientRect())\n );\n setIsOpen(true);\n }, []);\n\n React.useLayoutEffect(() => {\n if (!isOpen) {\n return;\n }\n\n const sync = () => {\n const element = triggerRef.current;\n if (!element) {\n return;\n }\n setPopoverPosition(\n resolvePopoverPosition(element.getBoundingClientRect())\n );\n };\n\n sync();\n const rafId = window.requestAnimationFrame(sync);\n return () => window.cancelAnimationFrame(rafId);\n }, [isOpen]);\n\n React.useEffect(() => {\n if (!isOpen) {\n return undefined;\n }\n\n const ac = new AbortController();\n const { signal } = ac;\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target as Node | null;\n if (\n target &&\n (triggerRef.current?.contains(target) ||\n popoverRef.current?.contains(target))\n ) {\n return;\n }\n setIsOpen(false);\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setIsOpen(false);\n triggerRef.current?.focus();\n }\n };\n\n const updatePosition = () => {\n const element = triggerRef.current;\n if (!element) {\n return;\n }\n setPopoverPosition(\n resolvePopoverPosition(element.getBoundingClientRect())\n );\n };\n\n document.addEventListener(\"pointerdown\", handlePointerDown, { signal });\n document.addEventListener(\"keydown\", handleKeyDown, { signal });\n window.addEventListener(\"resize\", updatePosition, { signal });\n document.addEventListener(\n \"wheel\",\n () => window.requestAnimationFrame(updatePosition),\n {\n capture: true,\n passive: true,\n signal\n }\n );\n\n const unsubAncestors = triggerRef.current\n ? subscribeScrollableAncestors(triggerRef.current, updatePosition)\n : () => {};\n\n return () => {\n ac.abort();\n unsubAncestors();\n };\n }, [isOpen]);\n\n const today = React.useMemo(() => new Date(), []);\n const monthGrid = React.useMemo(\n () => buildMonthGrid(visibleMonth),\n [visibleMonth]\n );\n\n const displayValue = selectedDate\n ? formatDisplayValue(selectedDate)\n : resolvedLabels.placeholder;\n\n const selectDate = (date: Date) => {\n onValueChange?.(formatDateValue(date));\n setIsOpen(false);\n triggerRef.current?.focus();\n };\n\n return (\n <>\n <button\n ref={(node) => {\n triggerRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n data-slot=\"date-picker\"\n disabled={disabled}\n type=\"button\"\n className={cn(\n \"inline-flex h-8 min-h-8 w-full items-center justify-start rounded-md border border-transparent bg-[var(--workbench-field-bg)] px-3 text-left text-[13px] text-foreground transition-[background-color,border-color,box-shadow,color] outline-none hover:bg-muted/60 focus-visible:border-border focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:bg-muted disabled:text-muted-foreground disabled:opacity-100\",\n !selectedDate && \"text-muted-foreground\",\n className\n )}\n onClick={(event) => {\n onClick?.(event);\n if (disabled) {\n return;\n }\n if (isOpen) {\n setIsOpen(false);\n } else {\n openPopover();\n }\n }}\n {...props}\n >\n <span className=\"min-w-0 truncate\">{displayValue}</span>\n </button>\n\n {isOpen && popoverPosition\n ? createPortal(\n <div\n ref={popoverRef}\n data-slot=\"date-picker-content\"\n className=\"fixed z-50 flex min-w-[264px] max-w-[min(100vw-16px,320px)] flex-col overflow-hidden rounded-xl border border-border/70 bg-popover p-3 text-popover-foreground shadow-soft\"\n style={{\n top: popoverPosition.top,\n left: popoverPosition.left,\n width: popoverPosition.width,\n zIndex: \"var(--z-popover)\"\n }}\n >\n <div className=\"mb-3 flex items-center justify-between gap-2\">\n <div className=\"text-[13px] font-semibold text-foreground\">\n {formatMonthLabel(visibleMonth)}\n </div>\n <div className=\"flex items-center gap-1\">\n <button\n aria-label={resolvedLabels.previousMonth}\n className=\"inline-flex h-7 w-7 items-center justify-center rounded-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground\"\n type=\"button\"\n onClick={() =>\n setVisibleMonth(\n (current) =>\n new Date(\n current.getFullYear(),\n current.getMonth() - 1,\n 1\n )\n )\n }\n >\n <ArrowLeftIcon size={16} />\n </button>\n <button\n aria-label={resolvedLabels.nextMonth}\n className=\"inline-flex h-7 w-7 items-center justify-center rounded-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground\"\n type=\"button\"\n onClick={() =>\n setVisibleMonth(\n (current) =>\n new Date(\n current.getFullYear(),\n current.getMonth() + 1,\n 1\n )\n )\n }\n >\n <ArrowRightIcon size={16} />\n </button>\n </div>\n </div>\n <div className=\"grid grid-cols-7 gap-1 text-center text-[11px] font-semibold text-muted-foreground\">\n {resolvedLabels.weekdayLabels.map((day) => (\n <div key={day} className=\"py-1\">\n {day}\n </div>\n ))}\n </div>\n <div\n className=\"mt-1 grid grid-cols-7 justify-items-center gap-1\"\n role=\"grid\"\n >\n {monthGrid.map((date) => {\n const isSelected = isSameDate(date, selectedDate);\n const isToday = isSameDate(date, today);\n const inCurrentMonth =\n date.getMonth() === visibleMonth.getMonth();\n\n return (\n <button\n key={formatDateValue(date)}\n aria-pressed={isSelected}\n className={cn(\n \"inline-flex h-8 w-8 items-center justify-center rounded-sm text-[13px] transition-[background-color,color,box-shadow] hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/30\",\n inCurrentMonth\n ? \"text-foreground\"\n : \"text-muted-foreground\",\n isToday &&\n \"bg-primary/10 text-primary shadow-[inset_0_0_0_1px_color-mix(in_srgb,var(--color-primary)_20%,transparent)]\",\n isSelected &&\n \"bg-primary text-primary-foreground hover:bg-primary\"\n )}\n role=\"gridcell\"\n type=\"button\"\n onClick={() => selectDate(date)}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n <div className=\"mt-3 flex items-center justify-between gap-2 border-t border-border/70 pt-3\">\n <button\n className=\"inline-flex min-h-8 items-center justify-center rounded-sm px-3 text-[13px] font-medium text-muted-foreground transition-colors hover:bg-muted hover:text-foreground\"\n type=\"button\"\n onClick={() => {\n onValueChange?.(\"\");\n setIsOpen(false);\n triggerRef.current?.focus();\n }}\n >\n {resolvedLabels.clear}\n </button>\n <button\n className=\"inline-flex min-h-8 items-center justify-center rounded-sm bg-primary px-3 text-[13px] font-medium text-primary-foreground transition-opacity hover:opacity-90\"\n type=\"button\"\n onClick={() => selectDate(today)}\n >\n {resolvedLabels.today}\n </button>\n </div>\n </div>,\n document.body\n )\n : null}\n </>\n );\n }\n);\n\nDatePicker.displayName = \"DatePicker\";\n\nexport { DatePicker };\n","import * as React from \"react\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\n\nimport { cn } from \"#lib/utils\";\n\nfunction Drawer({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />;\n}\n\nfunction DrawerTrigger({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />;\n}\n\nfunction DrawerPortal({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />;\n}\n\nfunction DrawerClose({\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />;\n}\n\nfunction DrawerOverlay({\n className,\n style,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n return (\n <DrawerPrimitive.Overlay\n data-slot=\"drawer-overlay\"\n className={cn(\n \"fixed inset-0 isolate bg-[var(--backdrop)] duration-150 supports-backdrop-filter:backdrop-blur-sm data-closed:animate-out data-closed:fade-out-0 data-open:animate-in data-open:fade-in-0\",\n className\n )}\n style={{ zIndex: \"var(--z-dialog-overlay)\", ...style }}\n {...props}\n />\n );\n}\n\nfunction DrawerContent({\n className,\n children,\n portalContainer,\n showOverlay = true,\n style,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content> & {\n portalContainer?: React.ComponentProps<\n typeof DrawerPrimitive.Portal\n >[\"container\"];\n showOverlay?: boolean;\n}) {\n return (\n <DrawerPortal data-slot=\"drawer-portal\" container={portalContainer}>\n {showOverlay ? <DrawerOverlay /> : null}\n <DrawerPrimitive.Content\n data-slot=\"drawer-content\"\n className={cn(\n \"group/drawer-content fixed flex h-auto flex-col border-[var(--border-1)] bg-background-fronted text-[13px] text-foreground shadow-panel outline-none\",\n \"data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-xl data-[vaul-drawer-direction=bottom]:border-t\",\n \"data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:rounded-r-xl data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n \"data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:rounded-l-xl data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n \"data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-xl data-[vaul-drawer-direction=top]:border-b\",\n className\n )}\n style={{ zIndex: \"var(--z-dialog)\", ...style }}\n {...props}\n >\n <div className=\"mx-auto mt-4 hidden h-1 w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n );\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"drawer-header\"\n className={cn(\n \"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-0.5 md:text-left\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"drawer-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n );\n}\n\nfunction DrawerTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n return (\n <DrawerPrimitive.Title\n data-slot=\"drawer-title\"\n className={cn(\n \"text-[15px] font-medium leading-[1.35] text-foreground\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DrawerDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n return (\n <DrawerPrimitive.Description\n data-slot=\"drawer-description\"\n className={cn(\"text-[13px] text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger\n};\n","import * as React from \"react\";\nimport { DropdownMenu as DropdownMenuPrimitive } from \"radix-ui\";\n\nimport { ArrowRightIcon, CheckIcon } from \"#icons/system-icons\";\nimport { cn } from \"#lib/utils\";\nimport {\n MenuSurface,\n menuItemClassName,\n menuItemIndicatorClassName,\n menuItemWithIndicatorClassName\n} from \"../menu-surface\";\n\nfunction DropdownMenu({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n );\n}\n\nfunction DropdownMenuTrigger({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n );\n}\n\nfunction DropdownMenuContent({\n className,\n children,\n align = \"start\",\n sideOffset = 4,\n style,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n asChild\n data-slot=\"dropdown-menu-content\"\n align={align}\n sideOffset={sideOffset}\n {...props}\n >\n <MenuSurface\n data-slot=\"dropdown-menu-content\"\n className={cn(\n \"z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) min-w-32 origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto\",\n className\n )}\n style={{ zIndex: \"var(--z-popover)\", ...style }}\n >\n {children}\n </MenuSurface>\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group\n data-slot=\"dropdown-menu-group\"\n className={cn(\"flex flex-col gap-0.5\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-inset={inset}\n data-slot=\"dropdown-menu-item\"\n data-variant={variant}\n className={cn(\n \"group/dropdown-menu-item\",\n menuItemClassName,\n \"data-inset:pl-7 data-[variant=destructive]:text-[var(--state-danger)] data-[variant=destructive]:focus:bg-[color-mix(in_srgb,var(--state-danger)_10%,transparent)] data-[variant=destructive]:focus:text-[var(--state-danger)] data-[variant=destructive]:hover:bg-[color-mix(in_srgb,var(--state-danger)_10%,transparent)] data-[variant=destructive]:hover:text-[var(--state-danger)] data-[variant=destructive]:*:[svg]:text-[var(--state-danger)]\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n checked={checked}\n data-inset={inset}\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n menuItemWithIndicatorClassName,\n \"data-inset:pl-7\",\n className\n )}\n {...props}\n >\n <span\n className={menuItemIndicatorClassName}\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"text-[var(--tutti-purple)]\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n className={cn(\"flex flex-col gap-0.5\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-inset={inset}\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n menuItemWithIndicatorClassName,\n \"data-inset:pl-7\",\n className\n )}\n {...props}\n >\n <span\n className={menuItemIndicatorClassName}\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"text-[var(--tutti-purple)]\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-inset={inset}\n data-slot=\"dropdown-menu-label\"\n className={cn(\n \"px-1.5 py-1 text-[11px] font-medium text-[var(--text-secondary)] data-inset:pl-7\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"mx-2 my-0.5 h-px bg-[var(--border-1)]\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"ml-auto text-[11px] tracking-widest text-[var(--text-secondary)] group-focus/dropdown-menu-item:text-[var(--text-primary)]\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-inset={inset}\n data-slot=\"dropdown-menu-sub-trigger\"\n className={cn(\n menuItemClassName,\n \"data-inset:pl-7 data-open:bg-[var(--transparency-block)] data-open:text-[var(--text-primary)]\",\n className\n )}\n {...props}\n >\n {children}\n <ArrowRightIcon className=\"ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n children,\n style,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n asChild\n data-slot=\"dropdown-menu-sub-content\"\n {...props}\n >\n <MenuSurface\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"z-50 min-w-[96px] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden\",\n className\n )}\n style={{ zIndex: \"var(--z-popover)\", ...style }}\n >\n {children}\n </MenuSurface>\n </DropdownMenuPrimitive.SubContent>\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger\n};\n","import * as React from \"react\";\nimport { Slot } from \"radix-ui\";\n\nimport { cn } from \"#lib/utils\";\n\nconst menuSurfaceClassName =\n \"t-dropdown flex flex-col gap-0.5 rounded-[8px] border border-[var(--border-1)] bg-[var(--background-fronted)] p-1 text-[13px] text-[var(--text-primary)] shadow-panel outline-none\";\nconst menuItemClassName =\n \"relative flex cursor-pointer items-center gap-1.5 rounded-sm px-2 py-1 text-[13px] text-[var(--text-primary)] outline-hidden transition-colors duration-200 select-none hover:bg-[var(--transparency-hover)] hover:text-[var(--text-primary)] focus:bg-[var(--transparency-hover)] focus:text-[var(--text-primary)] data-[highlighted]:bg-[var(--transparency-hover)] data-[highlighted]:text-[var(--text-primary)] data-disabled:pointer-events-none data-disabled:text-[var(--text-disabled)] [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\";\nconst menuItemWithIndicatorClassName = `${menuItemClassName} pr-8`;\nconst menuItemIndicatorClassName =\n \"pointer-events-none absolute right-2 flex size-4 items-center justify-center text-[var(--tutti-purple)]\";\n\ntype MenuSurfaceProps = React.HTMLAttributes<HTMLDivElement> & {\n \"data-state\"?: \"open\" | \"closed\";\n asChild?: boolean;\n state?: \"open\" | \"closed\";\n};\n\nconst MenuSurface = React.forwardRef<HTMLDivElement, MenuSurfaceProps>(\n (\n {\n asChild = false,\n className,\n \"data-state\": dataState,\n state = \"open\",\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot.Root : \"div\";\n\n return (\n <Comp\n {...props}\n ref={ref}\n className={cn(menuSurfaceClassName, className)}\n data-state={dataState ?? state}\n />\n );\n }\n);\nMenuSurface.displayName = \"MenuSurface\";\n\nexport {\n MenuSurface,\n menuItemClassName,\n menuItemIndicatorClassName,\n menuItemWithIndicatorClassName,\n menuSurfaceClassName\n};\n","import * as React from \"react\";\n\nimport { cn } from \"#lib/utils\";\n\ntype InputVariant = \"lg\" | \"md\" | \"sm\" | \"otp\";\n\ntype InputProps = Omit<React.ComponentProps<\"input\">, \"size\"> & {\n variant?: InputVariant;\n size?: \"default\" | \"sm\";\n};\n\nconst inputVariantClassNames: Record<InputVariant | \"default\", string> = {\n default: \"h-8 rounded-[6px] px-3 py-0 text-[13px] leading-[1.3]\",\n lg: \"h-12 rounded-[8px] px-4 py-3 text-[15px] leading-[1.3]\",\n md: \"h-8 rounded-[6px] px-3 py-0 text-[13px] leading-[1.3]\",\n sm: \"h-8 rounded-[6px] px-3 py-0 text-[13px] leading-[1.3]\",\n otp: \"h-12 w-12 rounded-[4px] px-0 text-center text-xl font-medium sm:h-14 sm:w-14 sm:text-2xl\"\n};\n\nfunction Input({\n className,\n size = \"default\",\n type,\n variant,\n ...props\n}: InputProps) {\n const resolvedVariant = variant ?? (size === \"sm\" ? \"sm\" : \"default\");\n\n return (\n <input\n type={type}\n data-slot=\"input\"\n data-size={size}\n data-variant={resolvedVariant}\n className={cn(\n \"w-full min-w-0 border border-transparent bg-[var(--transparency-block)] font-normal text-[var(--text-primary)] shadow-none transition-colors duration-200 outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-[13px] file:font-medium file:text-[var(--text-primary)] placeholder:text-[var(--text-placeholder)] hover:bg-[var(--transparency-hover)] focus:bg-[var(--transparency-hover)] focus-visible:border-transparent focus-visible:bg-[var(--transparency-hover)] focus-visible:ring-0 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-[var(--transparency-block)] disabled:text-[var(--text-disabled)] disabled:opacity-100 aria-invalid:border-[var(--state-danger)] aria-invalid:bg-[var(--transparency-block)] aria-invalid:hover:bg-[var(--transparency-hover)] aria-invalid:focus:bg-[var(--transparency-hover)] aria-invalid:focus-visible:bg-[var(--transparency-hover)] aria-invalid:ring-0 aria-invalid:shadow-none\",\n inputVariantClassNames[resolvedVariant],\n !variant && size === \"sm\" && \"h-7 rounded-[4px] px-2 text-[11px]\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Input };\n","import * as React from \"react\";\n\nimport {\n AgentSessionsIcon,\n AppWindowIcon,\n CloseIcon,\n FileIcon,\n FolderFilledIcon,\n IssueIcon\n} from \"#icons/system-icons\";\nimport { cn } from \"#lib/utils\";\n\ntype MentionPillKind = \"app\" | \"issue\" | \"session\" | \"file\";\ntype MentionPillFileKind = \"file\" | \"folder\";\n\nconst mentionPillTokenByKind: Record<MentionPillKind, string> = {\n app: \"var(--rich-text-folder)\",\n issue: \"var(--rich-text-mention-issue)\",\n session: \"var(--rich-text-mention-session)\",\n file: \"var(--folder)\"\n};\n\nconst mentionPillDataKindByKind: Record<MentionPillKind, string> = {\n app: \"app\",\n issue: \"task\",\n session: \"session\",\n file: \"file\"\n};\n\nexport interface MentionPillProps extends Omit<\n React.ComponentProps<\"span\">,\n \"children\"\n> {\n fileKind?: MentionPillFileKind;\n iconUrl?: string | null;\n kind: MentionPillKind;\n label: React.ReactNode;\n removable?: boolean;\n removeButtonProps?: React.ComponentProps<\"button\">;\n summary?: React.ReactNode;\n}\n\nfunction MentionPill({\n className,\n fileKind = \"file\",\n iconUrl,\n kind,\n label,\n removable = kind === \"file\",\n removeButtonProps,\n style,\n summary,\n ...props\n}: MentionPillProps): React.JSX.Element {\n const isFile = kind === \"file\";\n const Icon = isFile\n ? fileKind === \"folder\"\n ? FolderFilledIcon\n : FileIcon\n : kind === \"app\"\n ? AppWindowIcon\n : kind === \"issue\"\n ? IssueIcon\n : AgentSessionsIcon;\n const color =\n isFile && fileKind === \"folder\"\n ? \"var(--folder)\"\n : mentionPillTokenByKind[kind];\n const dataKind = mentionPillDataKindByKind[kind];\n const normalizedIconUrl = iconUrl?.trim() ?? \"\";\n const iconSizeClassName = \"size-4\";\n const iconShellClassName = isFile ? \"size-4\" : \"size-[18px]\";\n\n return (\n <span\n className={cn(\n \"group relative top-[3px] inline-flex max-w-full cursor-default items-center overflow-hidden rounded-[4px] border border-transparent bg-transparent py-0.5 align-baseline text-[13px] font-medium leading-5 no-underline transition-colors hover:border-transparent hover:bg-[color-mix(in_srgb,currentColor_12%,transparent)]\",\n isFile ? \"gap-1.5 px-1.5\" : \"gap-1 px-1\",\n className\n )}\n data-agent-file-mention=\"true\"\n data-agent-mention-kind={dataKind}\n data-slot=\"mention-pill\"\n style={{\n color,\n ...style\n }}\n {...props}\n >\n <span\n aria-hidden={removable ? undefined : true}\n className={cn(\n \"relative grid shrink-0 place-items-center\",\n iconShellClassName\n )}\n >\n {normalizedIconUrl ? (\n <img\n src={normalizedIconUrl}\n alt=\"\"\n className={cn(\n \"size-full rounded-[3px] object-cover transition-opacity\",\n removable && \"group-hover:opacity-0 group-focus-within:opacity-0\"\n )}\n decoding=\"async\"\n loading=\"lazy\"\n draggable={false}\n />\n ) : (\n <Icon\n className={cn(\n \"text-current transition-opacity\",\n removable && \"group-hover:opacity-0 group-focus-within:opacity-0\",\n iconSizeClassName\n )}\n />\n )}\n {removable ? (\n <button\n aria-label={removeButtonProps?.[\"aria-label\"]}\n type=\"button\"\n {...removeButtonProps}\n className={cn(\n \"absolute top-1/2 left-1/2 inline-flex size-5 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-sm text-[var(--text-secondary)] opacity-0 transition-opacity group-hover:opacity-100 hover:bg-transparency-block hover:text-[var(--text-primary)] focus-visible:opacity-100\",\n removeButtonProps?.className\n )}\n >\n <CloseIcon className=\"size-3.5\" />\n </button>\n ) : null}\n </span>\n <span className=\"min-w-0 overflow-hidden text-ellipsis whitespace-nowrap\">\n <span>{label}</span>\n {summary ? <span className=\"text-current\"> {summary}</span> : null}\n </span>\n </span>\n );\n}\n\nexport { MentionPill };\nexport type { MentionPillFileKind, MentionPillKind };\n","import * as React from \"react\";\nimport { Popover as PopoverPrimitive } from \"radix-ui\";\n\nimport { cn } from \"#lib/utils\";\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverPortal({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Portal>) {\n return <PopoverPrimitive.Portal data-slot=\"popover-portal\" {...props} />;\n}\n\nfunction PopoverClose({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Close>) {\n return <PopoverPrimitive.Close data-slot=\"popover-close\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPortal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"t-dropdown z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-2.5 rounded-lg border border-[var(--border-1)] bg-[var(--background-fronted)] p-3 text-[13px] text-popover-foreground shadow-soft outline-hidden\",\n className\n )}\n style={{ zIndex: \"var(--z-popover)\" }}\n {...props}\n />\n </PopoverPortal>\n );\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nexport {\n Popover,\n PopoverAnchor,\n PopoverClose,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger\n};\n","import * as ResizablePrimitive from \"react-resizable-panels\";\n\nimport { cn } from \"#lib/utils\";\n\nfunction ResizablePanelGroup({\n className,\n orientation = \"horizontal\",\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.Group>) {\n return (\n <ResizablePrimitive.Group\n data-orientation={orientation}\n data-slot=\"resizable-panel-group\"\n className={cn(\n \"flex h-full w-full data-[orientation=vertical]:flex-col\",\n className\n )}\n {...props}\n orientation={orientation}\n />\n );\n}\n\nfunction ResizablePanel(\n props: React.ComponentProps<typeof ResizablePrimitive.Panel>\n) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />;\n}\n\nfunction ResizableHandle({\n className,\n withHandle,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.Separator> & {\n withHandle?: boolean;\n}) {\n return (\n <ResizablePrimitive.Separator\n data-slot=\"resizable-handle\"\n className={cn(\n \"group relative flex items-center justify-center bg-transparent outline-none after:absolute after:bg-border/70 after:transition-colors hover:after:bg-border focus-visible:after:bg-ring aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:cursor-row-resize aria-[orientation=horizontal]:after:inset-x-0 aria-[orientation=horizontal]:after:top-1/2 aria-[orientation=horizontal]:after:h-px aria-[orientation=horizontal]:after:-translate-y-1/2 aria-[orientation=vertical]:h-full aria-[orientation=vertical]:w-px aria-[orientation=vertical]:cursor-col-resize aria-[orientation=vertical]:after:inset-y-0 aria-[orientation=vertical]:after:left-1/2 aria-[orientation=vertical]:after:w-px aria-[orientation=vertical]:after:-translate-x-1/2\",\n className\n )}\n {...props}\n >\n {withHandle ? (\n <div className=\"z-10 flex items-center justify-center rounded-full bg-border/85 opacity-0 transition-[background-color,opacity] group-hover:bg-border group-hover:opacity-100 group-focus-visible:bg-border group-focus-visible:opacity-100 group-aria-[orientation=horizontal]:h-[3px] group-aria-[orientation=horizontal]:w-10 group-aria-[orientation=vertical]:h-10 group-aria-[orientation=vertical]:w-[3px]\" />\n ) : null}\n </ResizablePrimitive.Separator>\n );\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup };\n","import * as React from \"react\";\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\";\n\nimport { cn } from \"#lib/utils\";\n\ntype ScrollAreaProps = React.ComponentProps<typeof ScrollAreaPrimitive.Root> & {\n viewportClassName?: string;\n viewportContentStyle?: React.CSSProperties;\n viewportProps?: Omit<\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Viewport>,\n \"children\" | \"className\" | \"ref\"\n >;\n viewportRef?: React.Ref<HTMLDivElement>;\n viewportTestId?: string;\n};\n\nfunction ScrollArea({\n className,\n children,\n viewportClassName,\n viewportContentStyle,\n viewportProps,\n viewportRef,\n viewportTestId,\n ...props\n}: ScrollAreaProps) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"group/scroll-area relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n {...viewportProps}\n data-slot=\"scroll-area-viewport\"\n data-testid={viewportTestId}\n ref={viewportRef}\n className={cn(\n \"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\",\n viewportClassName\n )}\n >\n {viewportContentStyle ? (\n <ScrollAreaViewportContentStyleBridge style={viewportContentStyle} />\n ) : null}\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n}\n\nfunction ScrollAreaViewportContentStyleBridge({\n style\n}: {\n style: React.CSSProperties;\n}) {\n const markerRef = React.useRef<HTMLSpanElement | null>(null);\n\n React.useLayoutEffect(() => {\n const contentElement = markerRef.current?.parentElement;\n if (!contentElement) {\n return;\n }\n\n const previousValues = new Map<\n string,\n { value: string; priority: string }\n >();\n\n for (const [property, value] of Object.entries(style) as Array<\n [string, React.CSSProperties[keyof React.CSSProperties]]\n >) {\n const cssProperty = toCssPropertyName(property);\n previousValues.set(cssProperty, {\n value: contentElement.style.getPropertyValue(cssProperty),\n priority: contentElement.style.getPropertyPriority(cssProperty)\n });\n\n if (value === undefined || value === null) {\n contentElement.style.removeProperty(cssProperty);\n } else {\n contentElement.style.setProperty(cssProperty, String(value));\n }\n }\n\n return () => {\n for (const [cssProperty, previous] of previousValues) {\n if (previous.value) {\n contentElement.style.setProperty(\n cssProperty,\n previous.value,\n previous.priority\n );\n } else {\n contentElement.style.removeProperty(cssProperty);\n }\n }\n };\n }, [style]);\n\n return (\n <span ref={markerRef} data-slot=\"scroll-area-content-style-bridge\" hidden />\n );\n}\n\nfunction toCssPropertyName(property: string): string {\n return property.startsWith(\"--\")\n ? property\n : property.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n \"group/scrollbar absolute z-10 flex touch-none p-[2px] opacity-0 transition-opacity duration-150 select-none group-hover/scroll-area:opacity-100 group-focus-within/scroll-area:opacity-100 data-[orientation=horizontal]:right-0 data-[orientation=horizontal]:bottom-0 data-[orientation=horizontal]:left-0 data-[orientation=horizontal]:h-2 data-[orientation=horizontal]:flex-col data-[orientation=vertical]:top-0 data-[orientation=vertical]:right-0 data-[orientation=vertical]:bottom-0 data-[orientation=vertical]:w-2\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"relative flex-1 rounded-full bg-[var(--transparency-block)] transition-colors duration-150 group-hover/scrollbar:bg-[var(--transparency-hover)]\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n );\n}\n\nexport { ScrollArea, ScrollBar };\n","import * as React from \"react\";\nimport { Select as SelectPrimitive } from \"radix-ui\";\n\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"#icons/system-icons\";\nimport { cn } from \"#lib/utils\";\nimport { buttonVariants } from \"../button\";\nimport {\n MenuSurface,\n menuItemIndicatorClassName,\n menuItemWithIndicatorClassName\n} from \"../menu-surface\";\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />;\n}\n\nfunction SelectGroup({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\"flex flex-col gap-0.5 scroll-my-1 p-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />;\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n variant = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\" | \"dialog\";\n variant?: \"button\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n data-variant={variant}\n className={cn(\n variant === \"button\"\n ? buttonVariants({ variant: \"default\", size })\n : \"flex w-fit cursor-pointer items-center justify-between gap-1.5 rounded-lg border border-transparent bg-[var(--transparency-block)] py-2 pr-2 pl-2.5 text-[13px] text-[var(--text-primary)] whitespace-nowrap transition-colors outline-none select-none hover:bg-[var(--transparency-hover)] focus:bg-[var(--transparency-hover)] focus-visible:border-transparent focus-visible:bg-[var(--transparency-hover)] focus-visible:ring-0 disabled:cursor-not-allowed disabled:bg-[var(--transparency-block)] disabled:text-[var(--text-disabled)] disabled:opacity-100 aria-invalid:border-[var(--state-danger)] aria-invalid:bg-[var(--transparency-block)] aria-invalid:hover:bg-[var(--transparency-hover)] aria-invalid:focus:bg-[var(--transparency-hover)] aria-invalid:focus-visible:bg-[var(--transparency-hover)] aria-invalid:ring-0 aria-invalid:shadow-none data-placeholder:text-[var(--text-placeholder)] data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n \"[&[data-state=open]>svg]:rotate-180 [&>svg]:transition-transform [&>svg]:duration-200\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon\n className={cn(\"pointer-events-none size-4\", \"text-current\")}\n />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n align = \"center\",\n style,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n asChild\n data-slot=\"select-content\"\n data-align-trigger={position === \"item-aligned\"}\n position={position}\n align={align}\n {...props}\n >\n <MenuSurface\n data-slot=\"select-content\"\n className={cn(\n \"relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n style={{ zIndex: \"var(--z-popover)\", ...style }}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n data-position={position}\n className={cn(\n \"flex flex-col gap-0.5 data-[position=popper]:w-full data-[position=popper]:[min-width:var(--nextop-select-content-min-width,var(--radix-select-trigger-width))]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </MenuSurface>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\n \"px-1.5 py-1 text-[11px] font-normal text-[var(--text-secondary)]\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SelectSplitLayout({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"select-split-layout\"\n className={cn(\n \"grid h-full min-h-0 grid-cols-[minmax(0,1fr)_1px_minmax(104px,132px)] gap-1 overflow-hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SelectSplitColumn({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"select-split-column\"\n className={cn(\"flex h-full min-h-0 min-w-0 flex-col\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectSplitColumnLabel({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"select-split-column-label\"\n className={cn(\n \"shrink-0 px-2 pt-1 pb-2 text-[11px] font-normal leading-[18px] text-[var(--text-secondary)]\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SelectSplitColumnItems({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"select-split-column-items\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto overscroll-contain\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SelectSplitDivider({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n aria-hidden=\"true\"\n data-slot=\"select-split-divider\"\n className={cn(\n \"self-stretch bg-[var(--border-2,var(--border-1))]\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n forceSelectedIndicator = false,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item> & {\n forceSelectedIndicator?: boolean;\n}) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\"w-full\", menuItemWithIndicatorClassName, className)}\n {...props}\n >\n <span className={menuItemIndicatorClassName}>\n {forceSelectedIndicator ? (\n <CheckIcon\n className=\"pointer-events-none text-[var(--tutti-purple)]\"\n data-slot=\"select-item-forced-indicator\"\n />\n ) : (\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"pointer-events-none text-[var(--tutti-purple)]\" />\n </SelectPrimitive.ItemIndicator>\n )}\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\n \"pointer-events-none mx-2 my-0.5 h-px bg-[var(--border-1)]\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"z-10 flex cursor-pointer items-center justify-center bg-[var(--background-fronted)] py-1 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon />\n </SelectPrimitive.ScrollUpButton>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"z-10 flex cursor-pointer items-center justify-center bg-[var(--background-fronted)] py-1 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon />\n </SelectPrimitive.ScrollDownButton>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectSplitColumn,\n SelectSplitColumnItems,\n SelectSplitColumnLabel,\n SelectSplitDivider,\n SelectSplitLayout,\n SelectTrigger,\n SelectValue\n};\n","import * as React from \"react\";\nimport { Separator as SeparatorPrimitive } from \"radix-ui\";\n\nimport { cn } from \"#lib/utils\";\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n decorative = true,\n ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n return (\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Separator };\n","import type { JSX, ReactNode } from \"react\";\n\nimport { cn } from \"#lib/utils\";\n\nexport interface SectionTabItem<TValue extends string> {\n value: TValue;\n label: ReactNode;\n count?: ReactNode;\n testId?: string;\n}\n\ninterface SectionTabsProps<TValue extends string> {\n tabs: ReadonlyArray<SectionTabItem<TValue>>;\n value: TValue;\n onValueChange: (value: TValue) => void;\n ariaLabel?: string;\n className?: string;\n testId?: string;\n}\n\nfunction SectionTabs<TValue extends string>({\n tabs,\n value,\n onValueChange,\n ariaLabel,\n className,\n testId\n}: SectionTabsProps<TValue>): JSX.Element {\n return (\n <div\n aria-label={ariaLabel}\n className={cn(\"flex min-w-0 items-center gap-5\", className)}\n data-slot=\"section-tabs\"\n data-testid={testId}\n role=\"tablist\"\n >\n {tabs.map((tab) => {\n const isActive = value === tab.value;\n return (\n <button\n key={tab.value}\n aria-selected={isActive}\n className={cn(\n \"relative inline-flex h-5 shrink-0 items-center gap-1.5 whitespace-nowrap border-0 bg-transparent p-0 text-[15px] font-semibold leading-5 tracking-[0] text-[var(--text-secondary)] transition-colors duration-150 hover:text-[var(--text-primary)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--border-focus)]\",\n isActive && \"text-[var(--text-primary)]\"\n )}\n data-active={isActive ? \"true\" : \"false\"}\n data-slot=\"section-tabs-tab\"\n data-testid={tab.testId}\n role=\"tab\"\n type=\"button\"\n onClick={() => onValueChange(tab.value)}\n >\n <span className=\"min-w-0 truncate\">{tab.label}</span>\n {tab.count !== undefined ? (\n <span className=\"text-[15px] font-semibold leading-5 text-[inherit]\">\n {tab.count}\n </span>\n ) : null}\n </button>\n );\n })}\n </div>\n );\n}\n\nexport { SectionTabs };\n","import * as React from \"react\";\n\nimport { cn } from \"#lib/utils\";\n\nfunction ShortcutBadge({ className, ...props }: React.ComponentProps<\"kbd\">) {\n return (\n <kbd\n data-slot=\"shortcut-badge\"\n className={cn(\n \"inline-flex h-5 min-w-0 max-w-full shrink-0 items-center justify-center overflow-hidden rounded-[4px] bg-[color-mix(in_srgb,var(--transparency-block)_72%,transparent)] px-1.5 py-1 font-[inherit] text-[11px] leading-none font-semibold whitespace-nowrap text-[var(--text-tertiary)] not-italic [font-variant:normal] [text-overflow:ellipsis]\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport { ShortcutBadge };\n","import type * as React from \"react\";\nimport {\n Toaster as SonnerToaster,\n toast,\n type ExternalToast,\n type ToasterProps\n} from \"sonner\";\n\nimport {\n FailedFilledIcon,\n LoadingIcon,\n SuccessFilledIcon,\n WarningFilledIcon,\n WarningLinedIcon\n} from \"#icons/system-icons\";\n\nfunction Toaster({ toastOptions, style, ...props }: ToasterProps) {\n return (\n <SonnerToaster\n closeButton\n expand={false}\n gap={8}\n position=\"top-right\"\n visibleToasts={4}\n icons={{\n error: <FailedFilledIcon className=\"size-4\" />,\n info: <WarningLinedIcon className=\"size-4\" />,\n loading: <LoadingIcon className=\"size-4 animate-spin\" />,\n success: <SuccessFilledIcon className=\"size-4\" />,\n warning: <WarningFilledIcon className=\"size-4\" />\n }}\n style={\n {\n \"--normal-bg\": \"var(--background-fronted)\",\n \"--normal-border\": \"var(--line-2)\",\n \"--normal-text\": \"var(--text-primary)\",\n \"--border-radius\": \"8px\",\n zIndex: \"var(--z-toast)\",\n ...style\n } as React.CSSProperties\n }\n toastOptions={{\n ...toastOptions,\n classNames: {\n toast:\n \"group pointer-events-auto min-h-14 rounded-[8px] border border-[var(--line-2)] bg-[var(--background-fronted)] px-3.5 py-3 text-[var(--text-primary)] shadow-[0_14px_40px_var(--shadow-elevated)]\",\n title:\n \"text-[13px] font-semibold leading-5 text-[var(--text-primary)]\",\n description:\n \"mt-0.5 text-[11px] leading-5 text-[var(--text-secondary)]\",\n actionButton:\n \"h-7 rounded-[6px] bg-[var(--text-primary)] px-2.5 text-[11px] font-normal text-[var(--text-inverted)] transition-colors hover:bg-[var(--text-primary-hover)]\",\n cancelButton:\n \"h-7 rounded-[6px] bg-[var(--transparency-block)] px-2.5 text-[11px] font-normal text-[var(--text-primary)] transition-colors hover:bg-[var(--transparency-hover)]\",\n closeButton:\n \"border-[var(--line-2)] bg-[var(--background-fronted)] text-[var(--text-secondary)] hover:bg-[var(--transparency-hover)] hover:text-[var(--text-primary)]\",\n icon: \"text-[var(--accent)]\",\n ...toastOptions?.classNames\n }\n }}\n {...props}\n />\n );\n}\n\nexport { Toaster, toast };\nexport type { ExternalToast, ToasterProps };\n","import type { CSSProperties, JSX } from \"react\";\n\nimport { LoadingIcon } from \"#icons/system-icons\";\nimport { cn } from \"#lib/utils\";\n\nexport interface SpinnerProps {\n className?: string;\n size?: number;\n strokeWidth?: number;\n style?: CSSProperties;\n testId?: string;\n trackColor?: string;\n}\n\nfunction Spinner({\n className,\n size = 16,\n strokeWidth = 2,\n style,\n testId,\n trackColor\n}: SpinnerProps): JSX.Element {\n return (\n <LoadingIcon\n data-slot=\"spinner\"\n data-testid={testId}\n aria-hidden=\"true\"\n className={cn(\n \"inline-block shrink-0 animate-spin text-primary\",\n className\n )}\n size={size}\n style={style}\n strokeWidth={strokeWidth}\n trackColor={trackColor}\n />\n );\n}\n\nexport { Spinner };\n","import { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"#lib/utils\";\n\nconst statusDotVariants = cva(\"inline-flex shrink-0 rounded-full\", {\n variants: {\n tone: {\n neutral: \"bg-muted-foreground/70\",\n green: \"bg-emerald-500\",\n blue: \"bg-sky-500\",\n amber: \"bg-amber-500\",\n red: \"bg-destructive\"\n },\n size: {\n xs: \"size-1.5\",\n sm: \"size-2\",\n md: \"size-2.5\"\n },\n pulse: {\n true: \"animate-pulse\",\n false: \"\"\n }\n },\n defaultVariants: {\n tone: \"neutral\",\n size: \"sm\",\n pulse: false\n }\n});\n\ntype StatusDotProps = VariantProps<typeof statusDotVariants> & {\n ariaLabel?: string;\n title?: string;\n className?: string;\n};\n\nfunction StatusDot({\n tone = \"neutral\",\n size = \"sm\",\n pulse = false,\n ariaLabel,\n title,\n className\n}: StatusDotProps): React.JSX.Element {\n return (\n <span\n aria-hidden={ariaLabel ? undefined : true}\n aria-label={ariaLabel}\n className={cn(statusDotVariants({ tone, size, pulse }), className)}\n data-pulse={pulse ? \"true\" : undefined}\n data-size={size}\n data-slot=\"status-dot\"\n data-tone={tone}\n role={ariaLabel ? \"img\" : undefined}\n title={title}\n />\n );\n}\n\nexport { StatusDot, statusDotVariants };\n","import * as React from \"react\";\nimport { Switch as SwitchPrimitive } from \"radix-ui\";\n\nimport { cn } from \"#lib/utils\";\n\nfunction Switch({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n \"peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-[background-color,border-color,box-shadow] outline-none focus-visible:border-[var(--border-focus)] focus-visible:ring-2 focus-visible:ring-[color-mix(in_srgb,var(--border-focus)_30%,transparent)] aria-invalid:border-[var(--state-danger)] aria-invalid:ring-2 aria-invalid:ring-[color-mix(in_srgb,var(--state-danger)_20%,transparent)] data-[size=default]:h-[18px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] data-[state=checked]:bg-[var(--tutti-purple)] data-[state=unchecked]:bg-[var(--text-disabled)] data-disabled:cursor-not-allowed data-disabled:opacity-100\",\n className\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"pointer-events-none block rounded-full bg-[var(--white-stationary)] ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-[state=checked]:translate-x-[14px] group-data-[size=sm]/switch:data-[state=checked]:translate-x-[10px] group-data-[size=default]/switch:data-[state=unchecked]:translate-x-0 group-data-[size=sm]/switch:data-[state=unchecked]:translate-x-0\"\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n","import * as React from \"react\";\n\nimport { cn } from \"#lib/utils\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"flex field-sizing-content min-h-20 w-full rounded-[6px] border border-transparent bg-[var(--transparency-block)] px-3 py-3 text-[13px] font-normal leading-[1.3] text-[var(--text-primary)] transition-[background-color,border-color,color] outline-none shadow-none placeholder:text-[var(--text-placeholder)] hover:bg-[var(--transparency-hover)] focus:bg-[var(--transparency-hover)] focus-visible:border-transparent focus-visible:bg-[var(--transparency-hover)] focus-visible:ring-0 disabled:cursor-not-allowed disabled:bg-[var(--transparency-block)] disabled:text-[var(--text-disabled)] disabled:opacity-100 aria-invalid:border-[var(--state-danger)] aria-invalid:bg-[var(--transparency-block)] aria-invalid:hover:bg-[var(--transparency-hover)] aria-invalid:focus:bg-[var(--transparency-hover)] aria-invalid:focus-visible:bg-[var(--transparency-hover)] aria-invalid:ring-0 aria-invalid:shadow-none\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","import * as React from \"react\";\nimport { Toast as ToastPrimitive } from \"radix-ui\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport {\n CloseIcon,\n FailedFilledIcon,\n SuccessFilledIcon\n} from \"#icons/system-icons\";\nimport { Spinner } from \"../spinner\";\nimport { cn } from \"#lib/utils\";\n\nconst toastDefaultDurationMs = 3000;\n\nfunction ToastProvider({\n duration = toastDefaultDurationMs,\n ...props\n}: React.ComponentProps<typeof ToastPrimitive.Provider>) {\n return <ToastPrimitive.Provider duration={duration} {...props} />;\n}\n\nconst ToastVisualContext = React.createContext<{\n busy: boolean;\n variant: VariantProps<typeof toastVariants>[\"variant\"];\n} | null>(null);\n\ntype ToastStatusIconVariant = \"destructive\" | \"success\";\n\nconst toastStatusIconByVariant = {\n destructive: FailedFilledIcon,\n success: SuccessFilledIcon\n} satisfies Record<\n ToastStatusIconVariant,\n React.ComponentType<{ className?: string }>\n>;\n\nfunction hasToastStatusIcon(\n variant: VariantProps<typeof toastVariants>[\"variant\"]\n): variant is ToastStatusIconVariant {\n return variant === \"destructive\" || variant === \"success\";\n}\n\nfunction stripToastTrailingSentencePunctuation(value: string): string {\n let nextValue = value.replace(/\\s+$/u, \"\");\n while (nextValue.length > 0) {\n const last = nextValue.at(-1);\n if (last === \".\" || last === \"。\" || last === \".\") {\n nextValue = nextValue.slice(0, -1).replace(/\\s+$/u, \"\");\n } else {\n break;\n }\n }\n return nextValue;\n}\n\nfunction formatToastText(children: React.ReactNode): React.ReactNode {\n if (typeof children === \"string\") {\n return stripToastTrailingSentencePunctuation(children);\n }\n const flatChildren = React.Children.toArray(children);\n if (flatChildren.length === 1 && typeof flatChildren[0] === \"string\") {\n return stripToastTrailingSentencePunctuation(flatChildren[0]);\n }\n return children;\n}\n\nconst toastVariants = cva(\n \"group pointer-events-auto relative flex min-h-8 min-w-0 max-w-[min(92vw,420px)] items-center justify-center rounded-[8px] px-3 py-1.5 text-center text-[13px] font-normal leading-normal shadow-none transition-all data-closed:fade-out-80 data-closed:slide-out-to-top-full data-open:slide-in-from-top-full data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none\",\n {\n variants: {\n variant: {\n default:\n \"border border-[var(--toast-neutral-border)] bg-[var(--toast-neutral-bg)] text-[var(--toast-neutral-fg)]\",\n destructive:\n \"border-0 bg-[var(--state-danger)] text-[var(--white-stationary)]\",\n success:\n \"border-0 bg-[var(--state-success)] text-[var(--text-inverted)]\"\n }\n },\n defaultVariants: {\n variant: \"default\"\n }\n }\n);\n\nfunction ToastRoot({\n className,\n variant,\n busy = false,\n anchor = \"viewport\",\n nodeInsetTopPx = 16,\n children,\n style,\n ...props\n}: React.ComponentProps<typeof ToastPrimitive.Root> &\n VariantProps<typeof toastVariants> & {\n busy?: boolean;\n anchor?: \"viewport\" | \"node\";\n nodeInsetTopPx?: number;\n }) {\n const isDestructive = variant === \"destructive\";\n return (\n <ToastPrimitive.Root\n aria-busy={busy}\n aria-live={isDestructive ? \"assertive\" : \"polite\"}\n data-slot=\"toast\"\n className={cn(\n toastVariants({ variant }),\n anchor === \"node\" && \"absolute left-1/2 -translate-x-1/2\",\n className\n )}\n role={isDestructive ? \"alert\" : \"status\"}\n style={{\n ...(anchor === \"node\" ? { top: `${nodeInsetTopPx}px` } : {}),\n ...style\n }}\n {...props}\n >\n <ToastVisualContext.Provider value={{ busy, variant }}>\n <span className=\"flex min-w-0 max-w-full flex-col items-center justify-center whitespace-normal break-words text-center\">\n {children}\n </span>\n </ToastVisualContext.Provider>\n </ToastPrimitive.Root>\n );\n}\n\nfunction ToastTitle({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ToastPrimitive.Title>) {\n const toastVisual = React.useContext(ToastVisualContext);\n const StatusIcon =\n toastVisual?.variant && hasToastStatusIcon(toastVisual.variant)\n ? toastStatusIconByVariant[toastVisual.variant]\n : null;\n\n return (\n <ToastPrimitive.Title\n data-slot=\"toast-title\"\n className={cn(\n \"inline-flex max-w-full items-center justify-center gap-[6px] text-center text-[13px] font-normal leading-normal\",\n className\n )}\n {...props}\n >\n {toastVisual?.busy ? (\n <Spinner\n className=\"shrink-0 text-current\"\n size={16}\n strokeWidth={2}\n trackColor=\"color-mix(in srgb, currentColor 28%, transparent)\"\n />\n ) : StatusIcon ? (\n <StatusIcon className=\"size-4 shrink-0 text-current\" />\n ) : null}\n <span className=\"min-w-0 break-words\">{formatToastText(children)}</span>\n </ToastPrimitive.Title>\n );\n}\n\nfunction ToastDescription({\n className,\n ...props\n}: React.ComponentProps<typeof ToastPrimitive.Description>) {\n return (\n <ToastPrimitive.Description\n data-slot=\"toast-description\"\n className={cn(\n \"box-border w-full px-2 text-[11px] font-normal leading-[1.3] text-current opacity-75 [overflow-wrap:anywhere]\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction ToastClose({\n className,\n ...props\n}: React.ComponentProps<typeof ToastPrimitive.Close>) {\n return (\n <ToastPrimitive.Close\n data-slot=\"toast-close\"\n className={cn(\n \"absolute right-1.5 top-1.5 inline-flex size-5 items-center justify-center rounded-[4px] text-current opacity-65 transition-[background-color,opacity] hover:bg-[color-mix(in_srgb,currentColor_10%,transparent)] hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color-mix(in_srgb,currentColor_28%,transparent)]\",\n className\n )}\n {...props}\n >\n <CloseIcon className=\"size-4\" />\n </ToastPrimitive.Close>\n );\n}\n\nfunction ToastViewport({\n className,\n style,\n ...props\n}: React.ComponentProps<typeof ToastPrimitive.Viewport>) {\n return (\n <ToastPrimitive.Viewport\n data-slot=\"toast-viewport\"\n className={cn(\n \"fixed left-1/2 top-3 flex max-h-screen w-auto -translate-x-1/2 flex-col items-center gap-2 p-0\",\n className\n )}\n style={{ zIndex: \"var(--z-toast)\", ...style }}\n {...props}\n />\n );\n}\n\nexport {\n ToastProvider,\n ToastRoot,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastViewport,\n toastVariants\n};\n","import * as React from \"react\";\nimport { Tooltip as TooltipPrimitive } from \"radix-ui\";\n\nimport { cn } from \"#lib/utils\";\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n );\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />;\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipPortal({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Portal>) {\n return <TooltipPrimitive.Portal data-slot=\"tooltip-portal\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 8,\n children,\n style,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPortal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"inline-flex w-fit max-w-xs origin-(--radix-tooltip-content-transform-origin) items-center gap-2 rounded-md border border-[var(--border-1)] bg-[var(--background-fronted)] px-2 py-1 text-[13px] leading-[1.3] text-popover-foreground shadow-soft outline-none 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 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n style={{ zIndex: \"var(--z-tooltip, 100700)\", ...style }}\n {...props}\n >\n {children}\n </TooltipPrimitive.Content>\n </TooltipPortal>\n );\n}\n\nexport {\n Tooltip,\n TooltipContent,\n TooltipPortal,\n TooltipProvider,\n TooltipTrigger\n};\n","import type { JSX, ReactNode } from \"react\";\nimport { useEffect, useLayoutEffect, useRef, useState } from \"react\";\n\nimport { ArrowLeftIcon, ArrowRightIcon } from \"#icons/system-icons\";\nimport { cn } from \"#lib/utils\";\n\nexport interface UnderlineTabItem<TValue extends string> {\n value: TValue;\n label: ReactNode;\n count?: ReactNode;\n testId?: string;\n}\n\ninterface UnderlineTabsProps<TValue extends string> {\n tabs: ReadonlyArray<UnderlineTabItem<TValue>>;\n value: TValue;\n onValueChange: (value: TValue) => void;\n ariaLabel?: string;\n className?: string;\n testId?: string;\n viewportTestId?: string;\n scrollLeftLabel?: string;\n scrollRightLabel?: string;\n scrollLeftTestId?: string;\n scrollRightTestId?: string;\n preventMouseDownDefault?: boolean;\n}\n\nfunction UnderlineTabs<TValue extends string>({\n tabs,\n value,\n onValueChange,\n ariaLabel,\n className,\n testId,\n viewportTestId,\n scrollLeftLabel = \"Scroll left\",\n scrollRightLabel = \"Scroll right\",\n scrollLeftTestId,\n scrollRightTestId,\n preventMouseDownDefault = false\n}: UnderlineTabsProps<TValue>): JSX.Element {\n const viewportRef = useRef<HTMLDivElement>(null);\n const rowRef = useRef<HTMLDivElement>(null);\n const buttonRefs = useRef<Partial<Record<TValue, HTMLButtonElement>>>({});\n const [indicatorStyle, setIndicatorStyle] = useState({ left: 0, width: 0 });\n const [overflow, setOverflow] = useState({\n canScrollLeft: false,\n canScrollRight: false\n });\n\n useLayoutEffect(() => {\n const row = rowRef.current;\n const button = buttonRefs.current[value];\n if (!row || !button) {\n setIndicatorStyle((current) =>\n current.left === 0 && current.width === 0\n ? current\n : { left: 0, width: 0 }\n );\n return;\n }\n\n const nextStyle = {\n left: button.offsetLeft,\n width: button.offsetWidth\n };\n\n setIndicatorStyle((current) =>\n current.left === nextStyle.left && current.width === nextStyle.width\n ? current\n : nextStyle\n );\n }, [tabs, value]);\n\n useEffect(() => {\n const viewport = viewportRef.current;\n if (!viewport) {\n return;\n }\n\n const syncOverflow = () => {\n const maxScrollLeft = viewport.scrollWidth - viewport.clientWidth;\n setOverflow((current) => {\n const next = {\n canScrollLeft: viewport.scrollLeft > 1,\n canScrollRight: viewport.scrollLeft < maxScrollLeft - 1\n };\n\n return current.canScrollLeft === next.canScrollLeft &&\n current.canScrollRight === next.canScrollRight\n ? current\n : next;\n });\n };\n\n syncOverflow();\n viewport.addEventListener(\"scroll\", syncOverflow, { passive: true });\n\n let resizeObserver: ResizeObserver | null = null;\n if (typeof ResizeObserver !== \"undefined\") {\n resizeObserver = new ResizeObserver(syncOverflow);\n resizeObserver.observe(viewport);\n if (rowRef.current) {\n resizeObserver.observe(rowRef.current);\n }\n }\n\n window.addEventListener(\"resize\", syncOverflow);\n\n return () => {\n viewport.removeEventListener(\"scroll\", syncOverflow);\n window.removeEventListener(\"resize\", syncOverflow);\n resizeObserver?.disconnect();\n };\n }, [tabs]);\n\n const scrollTabs = (direction: \"left\" | \"right\") => {\n const viewport = viewportRef.current;\n if (!viewport) {\n return;\n }\n\n const delta = Math.max(120, viewport.clientWidth * 0.72);\n viewport.scrollBy({\n left: direction === \"left\" ? -delta : delta,\n behavior: \"smooth\"\n });\n };\n\n return (\n <div\n aria-label={ariaLabel}\n className={cn(\n \"group relative box-border h-[33px] min-w-0 border-b border-[var(--border-1)] px-4\",\n className\n )}\n data-slot=\"underline-tabs\"\n data-testid={testId}\n role=\"tablist\"\n >\n <div\n ref={viewportRef}\n className={cn(\n \"h-8 overflow-x-auto overflow-y-hidden [scrollbar-gutter:stable] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\",\n overflow.canScrollLeft &&\n !overflow.canScrollRight &&\n \"[mask-image:linear-gradient(90deg,transparent_0,black_28px,black_100%)] [-webkit-mask-image:linear-gradient(90deg,transparent_0,black_28px,black_100%)]\",\n !overflow.canScrollLeft &&\n overflow.canScrollRight &&\n \"[mask-image:linear-gradient(90deg,black_0,black_calc(100%_-_28px),transparent_100%)] [-webkit-mask-image:linear-gradient(90deg,black_0,black_calc(100%_-_28px),transparent_100%)]\",\n overflow.canScrollLeft &&\n overflow.canScrollRight &&\n \"[mask-image:linear-gradient(90deg,transparent_0,black_28px,black_calc(100%_-_28px),transparent_100%)] [-webkit-mask-image:linear-gradient(90deg,transparent_0,black_28px,black_calc(100%_-_28px),transparent_100%)]\"\n )}\n data-can-scroll-left={overflow.canScrollLeft ? \"true\" : \"false\"}\n data-can-scroll-right={overflow.canScrollRight ? \"true\" : \"false\"}\n data-slot=\"underline-tabs-viewport\"\n data-testid={viewportTestId}\n >\n <div\n ref={rowRef}\n className=\"relative flex h-8 w-max min-w-full items-center gap-[14px] pb-2\"\n >\n {tabs.map((tab) => {\n const isActive = value === tab.value;\n return (\n <button\n key={tab.value}\n ref={(element) => {\n if (element) {\n buttonRefs.current[tab.value] = element;\n } else {\n delete buttonRefs.current[tab.value];\n }\n }}\n aria-selected={isActive}\n className={cn(\n \"relative inline-flex h-6 shrink-0 items-center gap-1.5 whitespace-nowrap border-0 bg-transparent p-0 text-[13px] font-semibold leading-6 text-[var(--text-secondary)] transition-colors hover:text-[var(--text-primary)] focus-visible:outline-none\",\n isActive && \"text-[var(--tutti-purple)]\"\n )}\n data-active={isActive ? \"true\" : \"false\"}\n data-slot=\"underline-tabs-tab\"\n data-testid={tab.testId}\n role=\"tab\"\n type=\"button\"\n onClick={() => onValueChange(tab.value)}\n onMouseDown={\n preventMouseDownDefault\n ? (event) => event.preventDefault()\n : undefined\n }\n >\n <span>{tab.label}</span>\n {tab.count !== undefined ? (\n <span className=\"text-[11px] font-semibold leading-6 text-[inherit]\">\n {tab.count}\n </span>\n ) : null}\n </button>\n );\n })}\n <div\n aria-hidden\n className=\"absolute bottom-0 left-0 z-[1] h-0.5 rounded-[1px] bg-[var(--tutti-purple)] transition-[transform,width] duration-[220ms] ease-[cubic-bezier(0.4,0,0.2,1)] motion-reduce:transition-none\"\n data-slot=\"underline-tabs-indicator\"\n style={{\n transform: `translateX(${indicatorStyle.left}px)`,\n width: indicatorStyle.width\n }}\n />\n </div>\n </div>\n <button\n aria-label={scrollLeftLabel}\n className=\"pointer-events-none absolute left-4 top-3 z-[3] inline-flex size-6 translate-y-[-50%] scale-[0.94] items-center justify-center rounded-full border-0 bg-[var(--background-fronted)] p-0 text-[var(--text-secondary)] opacity-0 shadow-[0_4px_16px_rgba(15,23,42,0.12)] transition-[opacity,transform,background-color,color] duration-[160ms] ease-in-out hover:bg-[var(--background-fronted)] hover:text-[var(--text-primary)] focus-visible:bg-[var(--background-fronted)] focus-visible:text-[var(--text-primary)] group-hover:data-[visible=true]:pointer-events-auto group-hover:data-[visible=true]:scale-100 group-hover:data-[visible=true]:opacity-100 group-focus-within:data-[visible=true]:pointer-events-auto group-focus-within:data-[visible=true]:scale-100 group-focus-within:data-[visible=true]:opacity-100 disabled:pointer-events-none\"\n data-slot=\"underline-tabs-scroll-left\"\n data-testid={scrollLeftTestId}\n data-visible={overflow.canScrollLeft ? \"true\" : \"false\"}\n disabled={!overflow.canScrollLeft}\n type=\"button\"\n onClick={() => scrollTabs(\"left\")}\n >\n <ArrowLeftIcon size={16} />\n </button>\n <button\n aria-label={scrollRightLabel}\n className=\"pointer-events-none absolute right-4 top-3 z-[3] inline-flex size-6 translate-y-[-50%] scale-[0.94] items-center justify-center rounded-full border-0 bg-[var(--background-fronted)] p-0 text-[var(--text-secondary)] opacity-0 shadow-[0_4px_16px_rgba(15,23,42,0.12)] transition-[opacity,transform,background-color,color] duration-[160ms] ease-in-out hover:bg-[var(--background-fronted)] hover:text-[var(--text-primary)] focus-visible:bg-[var(--background-fronted)] focus-visible:text-[var(--text-primary)] group-hover:data-[visible=true]:pointer-events-auto group-hover:data-[visible=true]:scale-100 group-hover:data-[visible=true]:opacity-100 group-focus-within:data-[visible=true]:pointer-events-auto group-focus-within:data-[visible=true]:scale-100 group-focus-within:data-[visible=true]:opacity-100 disabled:pointer-events-none\"\n data-slot=\"underline-tabs-scroll-right\"\n data-testid={scrollRightTestId}\n data-visible={overflow.canScrollRight ? \"true\" : \"false\"}\n disabled={!overflow.canScrollRight}\n type=\"button\"\n onClick={() => scrollTabs(\"right\")}\n >\n <ArrowRightIcon size={16} />\n </button>\n </div>\n );\n}\n\nexport { UnderlineTabs };\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { MenuSurface } from \"../menu-surface\";\n\nexport interface MenuSize {\n width: number;\n height: number;\n}\n\nexport interface MenuPoint {\n x: number;\n y: number;\n}\n\nexport type MenuPointAlignment = \"start\" | \"end\" | \"auto\";\n\ninterface AbsoluteViewportMenuPlacement {\n type: \"absolute\";\n left: number;\n top: number;\n}\n\ninterface PointViewportMenuPlacement {\n type: \"point\";\n point: MenuPoint;\n alignX?: MenuPointAlignment;\n alignY?: MenuPointAlignment;\n padding?: number;\n estimatedSize?: MenuSize;\n}\n\nexport type ViewportMenuPlacement =\n | AbsoluteViewportMenuPlacement\n | PointViewportMenuPlacement;\n\nexport interface ViewportMenuSurfaceProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"children\"\n> {\n open: boolean;\n placement: ViewportMenuPlacement;\n children: React.ReactNode;\n onDismiss?: () => void;\n dismissOnPointerDownOutside?: boolean;\n dismissOnEscape?: boolean;\n dismissOnScroll?: boolean;\n dismissIgnoreRefs?: Array<React.RefObject<HTMLElement | null>>;\n stopEventPropagation?: boolean;\n}\n\nconst VIEWPORT_MENU_PADDING = 12;\nconst MENU_BOUNDARY_PADDING = 8;\n\ninterface MenuBoundaryRect {\n left: number;\n top: number;\n width: number;\n height: number;\n}\n\ninterface MenuBoundary {\n element: Element | null;\n rect: MenuBoundaryRect;\n}\n\nfunction clampMenuCoordinate(\n origin: number,\n size: number,\n viewportExtent: number,\n padding: number\n): number {\n return Math.max(\n padding,\n Math.min(origin, Math.max(padding, viewportExtent - padding - size))\n );\n}\n\nfunction resolveAlignedCoordinate(options: {\n origin: number;\n size: number;\n viewportExtent: number;\n padding: number;\n alignment: MenuPointAlignment;\n}): number {\n const { origin, size, viewportExtent, padding, alignment } = options;\n const startCoordinate = origin;\n const endCoordinate = origin - size;\n\n if (alignment === \"start\") {\n return clampMenuCoordinate(startCoordinate, size, viewportExtent, padding);\n }\n\n if (alignment === \"end\") {\n return clampMenuCoordinate(endCoordinate, size, viewportExtent, padding);\n }\n\n const startFits = startCoordinate + size <= viewportExtent - padding;\n const endFits = endCoordinate >= padding;\n\n if (startFits || !endFits) {\n return clampMenuCoordinate(startCoordinate, size, viewportExtent, padding);\n }\n\n return clampMenuCoordinate(endCoordinate, size, viewportExtent, padding);\n}\n\nfunction placeViewportMenuAtPoint(options: {\n point: MenuPoint;\n menuSize: MenuSize;\n viewport: { width: number; height: number };\n padding?: number;\n alignX?: MenuPointAlignment;\n alignY?: MenuPointAlignment;\n}): { left: number; top: number } {\n const padding = options.padding ?? VIEWPORT_MENU_PADDING;\n\n return {\n left: resolveAlignedCoordinate({\n origin: options.point.x,\n size: options.menuSize.width,\n viewportExtent: options.viewport.width,\n padding,\n alignment: options.alignX ?? \"start\"\n }),\n top: resolveAlignedCoordinate({\n origin: options.point.y,\n size: options.menuSize.height,\n viewportExtent: options.viewport.height,\n padding,\n alignment: options.alignY ?? \"start\"\n })\n };\n}\n\nfunction viewportBoundary(): MenuBoundaryRect {\n return {\n left: 0,\n top: 0,\n width: typeof window === \"undefined\" ? 1280 : window.innerWidth,\n height: typeof window === \"undefined\" ? 720 : window.innerHeight\n };\n}\n\nfunction rectToBoundary(rect: DOMRect): MenuBoundaryRect {\n return {\n left: rect.left,\n top: rect.top,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction resolveMenuBoundaryFromPoint(point: {\n x: number;\n y: number;\n}): MenuBoundary {\n if (typeof document === \"undefined\" || !document.elementsFromPoint) {\n return {\n element: null,\n rect: viewportBoundary()\n };\n }\n\n const selector = '[data-slot=\"viewport-menu-boundary\"]';\n for (const element of document.elementsFromPoint(point.x, point.y)) {\n const boundaryElement = element.closest(selector);\n if (boundaryElement) {\n return {\n element: boundaryElement,\n rect: rectToBoundary(boundaryElement.getBoundingClientRect())\n };\n }\n }\n\n return {\n element: null,\n rect: viewportBoundary()\n };\n}\n\nfunction clampMenuPositionToBoundary(options: {\n left: number;\n top: number;\n width: number;\n height: number;\n boundary: MenuBoundaryRect;\n padding?: number;\n}): { left: number; top: number } {\n const padding = options.padding ?? MENU_BOUNDARY_PADDING;\n const minLeft = options.boundary.left + padding;\n const minTop = options.boundary.top + padding;\n const maxLeft = Math.max(\n minLeft,\n options.boundary.left + options.boundary.width - padding - options.width\n );\n const maxTop = Math.max(\n minTop,\n options.boundary.top + options.boundary.height - padding - options.height\n );\n\n return {\n left: Math.max(minLeft, Math.min(options.left, maxLeft)),\n top: Math.max(minTop, Math.min(options.top, maxTop))\n };\n}\n\nfunction assignRef<T>(ref: React.ForwardedRef<T>, value: T): void {\n if (typeof ref === \"function\") {\n ref(value);\n return;\n }\n\n if (ref) {\n ref.current = value;\n }\n}\n\nfunction callHandler<E extends React.SyntheticEvent>(\n handler: ((event: E) => void) | undefined,\n event: E\n): void {\n handler?.(event);\n}\n\nconst ViewportMenuSurface = React.forwardRef<\n HTMLDivElement,\n ViewportMenuSurfaceProps\n>(function ViewportMenuSurface(\n {\n open,\n placement,\n children,\n onDismiss,\n dismissOnPointerDownOutside = false,\n dismissOnEscape = false,\n dismissOnScroll = false,\n dismissIgnoreRefs = [],\n stopEventPropagation = true,\n style,\n onMouseDown,\n onClick,\n className,\n ...rest\n },\n forwardedRef\n): React.JSX.Element | null {\n const surfaceRef = React.useRef<HTMLDivElement | null>(null);\n const [measuredSize, setMeasuredSize] = React.useState<MenuSize | null>(null);\n\n const setRefs = React.useCallback(\n (node: HTMLDivElement | null) => {\n surfaceRef.current = node;\n assignRef(forwardedRef, node);\n },\n [forwardedRef]\n );\n\n React.useLayoutEffect(() => {\n if (!open) {\n setMeasuredSize(null);\n return;\n }\n\n const element = surfaceRef.current;\n if (!element) {\n setMeasuredSize(null);\n return;\n }\n\n const updateMeasuredSize = () => {\n const rect = element.getBoundingClientRect();\n setMeasuredSize((previous) =>\n previous &&\n Math.abs(previous.width - rect.width) < 0.5 &&\n Math.abs(previous.height - rect.height) < 0.5\n ? previous\n : { width: rect.width, height: rect.height }\n );\n };\n\n updateMeasuredSize();\n\n if (typeof ResizeObserver === \"undefined\") {\n return;\n }\n\n const observer = new ResizeObserver(updateMeasuredSize);\n observer.observe(element);\n return () => observer.disconnect();\n }, [open, placement]);\n\n React.useEffect(() => {\n if (!open) {\n return;\n }\n\n if (\n !onDismiss ||\n (!dismissOnPointerDownOutside && !dismissOnEscape && !dismissOnScroll)\n ) {\n return;\n }\n\n const shouldIgnoreTarget = (target: EventTarget | null): boolean => {\n if (!(target instanceof Node)) {\n return false;\n }\n\n if (surfaceRef.current?.contains(target)) {\n return true;\n }\n\n return dismissIgnoreRefs.some(\n (ref) => ref.current?.contains(target) ?? false\n );\n };\n\n const handlePointerDown = (event: PointerEvent) => {\n if (!dismissOnPointerDownOutside) {\n return;\n }\n if (shouldIgnoreTarget(event.target)) {\n return;\n }\n onDismiss();\n };\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (!dismissOnEscape || event.key !== \"Escape\") {\n return;\n }\n onDismiss();\n };\n\n const handleScroll = () => {\n if (dismissOnScroll) {\n onDismiss();\n }\n };\n\n document.addEventListener(\"pointerdown\", handlePointerDown, true);\n window.addEventListener(\"keydown\", handleKeyDown, true);\n window.addEventListener(\"scroll\", handleScroll, {\n capture: true,\n passive: true\n });\n\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown, true);\n window.removeEventListener(\"keydown\", handleKeyDown, true);\n window.removeEventListener(\"scroll\", handleScroll, true);\n };\n }, [\n dismissIgnoreRefs,\n dismissOnEscape,\n dismissOnPointerDownOutside,\n dismissOnScroll,\n onDismiss,\n open\n ]);\n\n const resolvedPlacement = React.useMemo(() => {\n if (placement.type === \"absolute\") {\n const boundary = resolveMenuBoundaryFromPoint({\n x: placement.left,\n y: placement.top\n });\n const menuSize = measuredSize ?? { width: 0, height: 0 };\n return {\n portalTarget: boundary.element,\n position: clampMenuPositionToBoundary({\n left: placement.left,\n top: placement.top,\n width: menuSize.width,\n height: menuSize.height,\n boundary: boundary.rect\n })\n };\n }\n\n const boundary = resolveMenuBoundaryFromPoint(placement.point);\n const menuSize = measuredSize ??\n placement.estimatedSize ?? { width: 0, height: 0 };\n const relativePoint = {\n x: placement.point.x - boundary.rect.left,\n y: placement.point.y - boundary.rect.top\n };\n const relativePosition = placeViewportMenuAtPoint({\n point: relativePoint,\n menuSize,\n viewport: { width: boundary.rect.width, height: boundary.rect.height },\n padding: placement.padding,\n alignX: placement.alignX,\n alignY: placement.alignY\n });\n\n return {\n portalTarget: boundary.element,\n position: {\n left: boundary.rect.left + relativePosition.left,\n top: boundary.rect.top + relativePosition.top\n }\n };\n }, [measuredSize, placement]);\n\n if (!open || typeof document === \"undefined\" || !document.body) {\n return null;\n }\n\n const portalTarget = resolvedPlacement.portalTarget ?? document.body;\n\n return createPortal(\n <MenuSurface\n {...rest}\n ref={setRefs}\n className={className}\n data-slot=\"viewport-menu-surface\"\n style={{\n ...style,\n position: \"fixed\",\n top: resolvedPlacement.position.top,\n left: resolvedPlacement.position.left,\n zIndex: \"var(--z-popover)\"\n }}\n onClick={(event) => {\n if (stopEventPropagation) {\n event.stopPropagation();\n }\n callHandler(onClick, event);\n }}\n onMouseDown={(event) => {\n if (stopEventPropagation) {\n event.stopPropagation();\n }\n callHandler(onMouseDown, event);\n }}\n >\n {children}\n </MenuSurface>,\n portalTarget\n );\n});\n\nexport { ViewportMenuSurface };\n"],"mappings":"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","names":["cva","Slot","jsx","cva","Slot","cva","Slot","jsx","cva","Slot","jsx","jsx","jsx","jsx","jsxs","React","Fragment","jsx","jsxs","jsx","jsxs","React","Slot","jsx","Slot","jsx","jsxs","jsx","jsx","jsxs","jsx","jsx","React","jsx","jsxs","jsx","jsxs","jsx","Separator","jsx","jsxs","jsx","jsx","jsx","cva","jsx","cva","jsx","jsx","React","cva","jsx","jsxs","cva","jsx","useEffect","useLayoutEffect","useRef","useState","jsx","jsxs","useRef","useState","useLayoutEffect","useEffect","React","createPortal","jsx","ViewportMenuSurface","boundary","menuSize","createPortal"]}
@@ -175,10 +175,10 @@ interface MentionPillProps extends Omit<React$1.ComponentProps<"span">, "childre
175
175
  }
176
176
  declare function MentionPill({ className, fileKind, iconUrl, kind, label, removable, removeButtonProps, style, summary, ...props }: MentionPillProps): React$1.JSX.Element;
177
177
 
178
- declare const menuSurfaceClassName = "t-dropdown flex flex-col gap-0.5 rounded-[8px] border border-[var(--border-1)] bg-[var(--background-fronted)] p-1 text-sm text-[var(--text-primary)] shadow-panel outline-none";
179
- declare const menuItemClassName = "relative flex cursor-pointer items-center gap-1.5 rounded-sm px-2 py-1 text-sm text-[var(--text-primary)] outline-hidden transition-colors duration-200 select-none hover:bg-[var(--transparency-hover)] hover:text-[var(--text-primary)] focus:bg-[var(--transparency-hover)] focus:text-[var(--text-primary)] data-[highlighted]:bg-[var(--transparency-hover)] data-[highlighted]:text-[var(--text-primary)] data-disabled:pointer-events-none data-disabled:text-[var(--text-disabled)] [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2";
180
- declare const menuItemWithIndicatorClassName = "relative flex cursor-pointer items-center gap-1.5 rounded-sm px-2 py-1 text-sm text-[var(--text-primary)] outline-hidden transition-colors duration-200 select-none hover:bg-[var(--transparency-hover)] hover:text-[var(--text-primary)] focus:bg-[var(--transparency-hover)] focus:text-[var(--text-primary)] data-[highlighted]:bg-[var(--transparency-hover)] data-[highlighted]:text-[var(--text-primary)] data-disabled:pointer-events-none data-disabled:text-[var(--text-disabled)] [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 pr-8";
181
- declare const menuItemIndicatorClassName = "pointer-events-none absolute right-2 flex size-4 items-center justify-center text-[var(--accent)]";
178
+ declare const menuSurfaceClassName = "t-dropdown flex flex-col gap-0.5 rounded-[8px] border border-[var(--border-1)] bg-[var(--background-fronted)] p-1 text-[13px] text-[var(--text-primary)] shadow-panel outline-none";
179
+ declare const menuItemClassName = "relative flex cursor-pointer items-center gap-1.5 rounded-sm px-2 py-1 text-[13px] text-[var(--text-primary)] outline-hidden transition-colors duration-200 select-none hover:bg-[var(--transparency-hover)] hover:text-[var(--text-primary)] focus:bg-[var(--transparency-hover)] focus:text-[var(--text-primary)] data-[highlighted]:bg-[var(--transparency-hover)] data-[highlighted]:text-[var(--text-primary)] data-disabled:pointer-events-none data-disabled:text-[var(--text-disabled)] [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2";
180
+ declare const menuItemWithIndicatorClassName = "relative flex cursor-pointer items-center gap-1.5 rounded-sm px-2 py-1 text-[13px] text-[var(--text-primary)] outline-hidden transition-colors duration-200 select-none hover:bg-[var(--transparency-hover)] hover:text-[var(--text-primary)] focus:bg-[var(--transparency-hover)] focus:text-[var(--text-primary)] data-[highlighted]:bg-[var(--transparency-hover)] data-[highlighted]:text-[var(--text-primary)] data-disabled:pointer-events-none data-disabled:text-[var(--text-disabled)] [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 pr-8";
181
+ declare const menuItemIndicatorClassName = "pointer-events-none absolute right-2 flex size-4 items-center justify-center text-[var(--tutti-purple)]";
182
182
  declare const MenuSurface: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & {
183
183
  "data-state"?: "open" | "closed";
184
184
  asChild?: boolean;
@@ -106,8 +106,8 @@ import {
106
106
  statusDotVariants,
107
107
  toast,
108
108
  toastVariants
109
- } from "../chunk-2AUYRRDG.js";
110
- import "../chunk-UTUVPSKL.js";
109
+ } from "../chunk-XXE3UZ55.js";
110
+ import "../chunk-7Z4754GM.js";
111
111
  import "../chunk-DGPY4WP3.js";
112
112
  export {
113
113
  Badge,
@@ -93,7 +93,7 @@ import {
93
93
  WarningLinedIcon,
94
94
  WebIcon,
95
95
  WebScrapeIcon
96
- } from "../chunk-UTUVPSKL.js";
96
+ } from "../chunk-7Z4754GM.js";
97
97
  export {
98
98
  AddIcon,
99
99
  AgentSessionsIcon,
package/dist/index.js CHANGED
@@ -106,7 +106,7 @@ import {
106
106
  statusDotVariants,
107
107
  toast,
108
108
  toastVariants
109
- } from "./chunk-2AUYRRDG.js";
109
+ } from "./chunk-XXE3UZ55.js";
110
110
  import {
111
111
  formatNextopDateTime,
112
112
  formatNextopShortDateTime,
@@ -207,7 +207,7 @@ import {
207
207
  WarningLinedIcon,
208
208
  WebIcon,
209
209
  WebScrapeIcon
210
- } from "./chunk-UTUVPSKL.js";
210
+ } from "./chunk-7Z4754GM.js";
211
211
  import {
212
212
  cn
213
213
  } from "./chunk-DGPY4WP3.js";
@@ -48,12 +48,30 @@
48
48
  --text-secondary: rgb(60 60 60 / 70%);
49
49
  --text-disabled: rgb(60 60 60 / 30%);
50
50
  --rich-text-mention-app: rgb(191, 90, 242);
51
- --rich-text-mention-issue: rgb(191, 90, 242);
51
+ --rich-text-mention-issue: rgb(109, 127, 245);
52
52
  --rich-text-mention-session: rgb(34, 197, 94);
53
53
  --folder: rgb(80, 175, 238);
54
54
  --rich-text-folder: rgb(80, 175, 238);
55
55
  --rich-text-mention-file: rgb(80, 175, 238);
56
- --accent: rgb(65 130 245);
56
+ --accent-codex: rgb(65 130 245);
57
+ --accent: var(--accent-codex);
58
+ --accent-codex-border: color-mix(
59
+ in srgb,
60
+ var(--accent-codex) 20%,
61
+ transparent
62
+ );
63
+ --status-running: rgb(65 130 245);
64
+ --tutti-purple: rgb(109 127 245);
65
+ --tutti-purple-bg: color-mix(
66
+ in srgb,
67
+ var(--background-fronted) 88%,
68
+ var(--tutti-purple) 12%
69
+ );
70
+ --tutti-purple-border: color-mix(
71
+ in srgb,
72
+ var(--tutti-purple) 20%,
73
+ transparent
74
+ );
57
75
  --accent-claude: rgb(251 111 62);
58
76
  --accent-foreground: oklch(0.302 0.02 258);
59
77
  --destructive: oklch(0.62 0.21 25);
@@ -84,7 +102,7 @@
84
102
  --accent-bg: color-mix(
85
103
  in srgb,
86
104
  var(--background-fronted) 88%,
87
- var(--accent) 12%
105
+ var(--accent-codex) 12%
88
106
  );
89
107
 
90
108
  --panel: oklch(0.975 0.004 84 / 92%);
@@ -216,12 +234,30 @@
216
234
  --text-secondary: rgb(255 255 255 / 70%);
217
235
  --text-disabled: rgb(255 255 255 / 30%);
218
236
  --rich-text-mention-app: rgb(191, 90, 242);
219
- --rich-text-mention-issue: rgb(191, 90, 242);
237
+ --rich-text-mention-issue: rgb(109, 127, 245);
220
238
  --rich-text-mention-session: rgb(74, 222, 128);
221
239
  --folder: rgb(80, 175, 238);
222
240
  --rich-text-folder: rgb(80, 175, 238);
223
241
  --rich-text-mention-file: rgb(80, 175, 238);
224
- --accent: rgb(79 143 255);
242
+ --accent-codex: rgb(79 143 255);
243
+ --accent: var(--accent-codex);
244
+ --accent-codex-border: color-mix(
245
+ in srgb,
246
+ var(--accent-codex) 20%,
247
+ transparent
248
+ );
249
+ --status-running: rgb(79 143 255);
250
+ --tutti-purple: rgb(136 152 255);
251
+ --tutti-purple-bg: color-mix(
252
+ in srgb,
253
+ var(--background-fronted) 88%,
254
+ var(--tutti-purple) 12%
255
+ );
256
+ --tutti-purple-border: color-mix(
257
+ in srgb,
258
+ var(--tutti-purple) 20%,
259
+ transparent
260
+ );
225
261
  --accent-claude: rgb(251 111 62);
226
262
  --accent-foreground: var(--foreground);
227
263
  --destructive: oklch(0.672 0.172 25);
@@ -252,7 +288,7 @@
252
288
  --accent-bg: color-mix(
253
289
  in srgb,
254
290
  var(--background-fronted) 88%,
255
- var(--accent) 12%
291
+ var(--accent-codex) 12%
256
292
  );
257
293
 
258
294
  --panel: oklch(0.236 0.009 255 / 92%);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tutti-os/ui-system",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",