@tutti-os/ui-system 0.0.14 → 0.0.16

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/truncating-pill-label.tsx","../src/components/tooltip/tooltip.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/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\nconst BareIconButton = React.forwardRef<HTMLButtonElement, BareIconButtonProps>(\n (\n { className, size = \"md\", asChild = false, type = \"button\", ...props },\n ref\n ) => {\n const Comp = asChild ? Slot.Root : \"button\";\n\n return (\n <Comp\n ref={ref}\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);\nBareIconButton.displayName = \"BareIconButton\";\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\ntype ButtonProps = React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n };\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot.Root : \"button\";\n\n return (\n <Comp\n ref={ref}\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);\nButton.displayName = \"Button\";\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 text-[var(--text-tertiary)]\" />\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.Portal>\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 </DropdownMenuPrimitive.Portal>\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:min-w-0 *:[span]:last:flex-1 *:[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 { cn } from \"#lib/utils\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger\n} from \"../tooltip/tooltip\";\n\n/**\n * 监测元素是否因 overflow 被省略号截断(scrollWidth > clientWidth)。\n * 返回要挂到「截断元素」上的 ref,以及是否正在溢出。随容器尺寸变化实时更新。\n */\nexport function useTextOverflow<T extends HTMLElement = HTMLElement>(\n watch: unknown\n): { ref: React.RefObject<T | null>; overflowing: boolean } {\n const ref = React.useRef<T>(null);\n const [overflowing, setOverflowing] = React.useState(false);\n\n React.useEffect(() => {\n const element = ref.current;\n if (!element || typeof ResizeObserver === \"undefined\") {\n return;\n }\n const measure = (): void => {\n setOverflowing(element.scrollWidth - element.clientWidth > 1);\n };\n measure();\n const observer = new ResizeObserver(measure);\n observer.observe(element);\n return () => observer.disconnect();\n }, [watch]);\n\n return { ref, overflowing };\n}\n\nexport interface TruncatingPillLabelProps {\n /** 完整文本;仅在标签被省略号截断时,通过 Tooltip 展示。 */\n tooltip: string;\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * mention chip 的标签:省略号截断 + 「超出才显示」的设计系统 Tooltip。\n * 仅当实际溢出(scrollWidth > clientWidth)时,hover 才弹出完整文本,避免短标签也弹无意义 tooltip。\n * 依赖上层已挂载的 TooltipProvider(app 根已提供)。Trigger 始终包裹标签以保持 DOM 稳定,\n * 仅切换 TooltipContent 的渲染,从而 ResizeObserver 不会因重挂载而丢失。\n */\nexport function TruncatingPillLabel({\n tooltip,\n className,\n children\n}: TruncatingPillLabelProps): React.JSX.Element {\n const { ref: labelRef, overflowing } =\n useTextOverflow<HTMLSpanElement>(tooltip);\n\n const label = (\n <span\n ref={labelRef}\n className={cn(\n \"min-w-0 overflow-hidden text-ellipsis whitespace-nowrap\",\n className\n )}\n >\n {children}\n </span>\n );\n\n if (!tooltip) {\n return label;\n }\n\n // 自带 TooltipProvider:使本组件不依赖上层 Provider,可在任意 MentionPill 使用处工作\n // (嵌套 Provider 在 Radix 中安全,就近配置生效)。\n return (\n <TooltipProvider delayDuration={200}>\n <Tooltip>\n <TooltipTrigger asChild>{label}</TooltipTrigger>\n {overflowing ? (\n <TooltipContent className=\"max-w-[min(420px,calc(100vw-32px))] whitespace-normal text-left [overflow-wrap:anywhere]\">\n {tooltip}\n </TooltipContent>\n ) : null}\n </Tooltip>\n </TooltipProvider>\n );\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 * 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\";\nimport { TruncatingPillLabel } from \"./truncating-pill-label\";\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 // 超出最大展示宽度时,标签截断为省略号;溢出时 hover 弹设计系统 Tooltip 看完整文本。\n const tooltipText = [label, summary]\n .filter(\n (part): part is string => typeof part === \"string\" && part.trim() !== \"\"\n )\n .join(\" \");\n\n return (\n <span\n className={cn(\n \"group relative top-[3px] inline-flex max-w-[min(100%,var(--agent-mention-max-width,16rem))] 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 <TruncatingPillLabel tooltip={tooltipText}>\n <span>{label}</span>\n {summary ? <span className=\"text-current\"> {summary}</span> : null}\n </TruncatingPillLabel>\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\";\n\nimport { cn } from \"#lib/utils\";\n\nconst MIN_THUMB_SIZE_PX = 24;\n\ntype ScrollAreaType = \"auto\" | \"always\" | \"scroll\" | \"hover\";\ntype ScrollAreaOrientation = \"vertical\" | \"horizontal\";\n\ntype ScrollAreaProps = React.HTMLAttributes<HTMLDivElement> & {\n scrollbarMode?: \"custom\" | \"native\";\n scrollHideDelay?: number;\n type?: ScrollAreaType;\n viewportClassName?: string;\n viewportContentStyle?: React.CSSProperties;\n viewportProps?: Omit<\n React.ComponentPropsWithoutRef<\"div\">,\n \"children\" | \"className\" | \"ref\"\n >;\n viewportRef?: React.Ref<HTMLDivElement>;\n viewportTestId?: string;\n};\n\ntype ScrollBarProps = React.HTMLAttributes<HTMLDivElement> & {\n forceMount?: true;\n orientation?: ScrollAreaOrientation;\n};\n\ntype ScrollAreaImplementationProps = Omit<\n ScrollAreaProps,\n \"scrollbarMode\" | \"scrollHideDelay\"\n> & {\n scrollbarMode: NonNullable<ScrollAreaProps[\"scrollbarMode\"]>;\n};\n\ntype ScrollbarDragState = {\n maxScrollOffset: number;\n maxThumbOffset: number;\n startClientOffset: number;\n startScrollOffset: number;\n};\n\nfunction ScrollArea({\n className,\n children,\n onBlur,\n onFocus,\n onMouseEnter,\n onMouseLeave,\n scrollbarMode = \"custom\",\n scrollHideDelay: _scrollHideDelay,\n type,\n viewportClassName,\n viewportContentStyle,\n viewportProps,\n viewportRef,\n viewportTestId,\n ...props\n}: ScrollAreaProps) {\n const implementationProps = {\n className,\n onBlur,\n onFocus,\n onMouseEnter,\n onMouseLeave,\n scrollbarMode,\n type,\n viewportClassName,\n viewportContentStyle,\n viewportProps,\n viewportRef,\n viewportTestId,\n ...props\n } satisfies ScrollAreaImplementationProps;\n\n if (scrollbarMode === \"native\") {\n return (\n <NativeScrollArea {...implementationProps}>{children}</NativeScrollArea>\n );\n }\n\n return (\n <CustomScrollArea {...implementationProps}>{children}</CustomScrollArea>\n );\n}\n\nfunction NativeScrollArea({\n className,\n children,\n onBlur,\n onFocus,\n onMouseEnter,\n onMouseLeave,\n scrollbarMode,\n type,\n viewportClassName,\n viewportContentStyle,\n viewportProps,\n viewportRef,\n viewportTestId,\n ...props\n}: ScrollAreaImplementationProps) {\n const alwaysVisible =\n type === \"always\" ||\n type === \"scroll\" ||\n hasAlwaysVisibleScrollbarSelector(className);\n\n return (\n <ScrollAreaFrame\n {...props}\n className={className}\n data-scrollbar-mode={scrollbarMode}\n onBlur={onBlur}\n onFocus={onFocus}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n alwaysVisible={false}\n viewportClassName={cn(\n nativeScrollbarClassName(alwaysVisible),\n viewportClassName\n )}\n viewportContentStyle={viewportContentStyle}\n viewportProps={viewportProps}\n viewportRef={viewportRef}\n viewportTestId={viewportTestId}\n >\n {children}\n </ScrollAreaFrame>\n );\n}\n\nfunction CustomScrollArea({\n className,\n children,\n onBlur,\n onFocus,\n onMouseEnter,\n onMouseLeave,\n scrollbarMode,\n type,\n viewportClassName,\n viewportContentStyle,\n viewportProps,\n viewportRef,\n viewportTestId,\n ...props\n}: ScrollAreaImplementationProps) {\n const localViewportRef = React.useRef<HTMLDivElement | null>(null);\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n const [active, setActive] = React.useState(false);\n\n const alwaysVisible =\n type === \"always\" ||\n type === \"scroll\" ||\n hasAlwaysVisibleScrollbarSelector(className);\n\n return (\n <ScrollAreaFrame\n {...props}\n className={className}\n contentRef={contentRef}\n data-scrollbar-mode={scrollbarMode}\n onBlur={(event) => {\n onBlur?.(event);\n if (!event.currentTarget.contains(event.relatedTarget)) {\n setActive(false);\n }\n }}\n onFocus={(event) => {\n onFocus?.(event);\n setActive(true);\n }}\n onMouseEnter={(event) => {\n onMouseEnter?.(event);\n setActive(true);\n }}\n onMouseLeave={(event) => {\n onMouseLeave?.(event);\n setActive(false);\n }}\n alwaysVisible={alwaysVisible}\n viewportClassName={cn(\n \"[scrollbar-width:none] [&::-webkit-scrollbar]:hidden\",\n viewportClassName\n )}\n viewportContentStyle={viewportContentStyle}\n viewportProps={viewportProps}\n viewportRef={setRefs(localViewportRef, viewportRef)}\n viewportTestId={viewportTestId}\n >\n {children}\n <ScrollAreaScrollbar\n active={active || alwaysVisible}\n contentRef={contentRef}\n orientation=\"vertical\"\n viewportRef={localViewportRef}\n />\n </ScrollAreaFrame>\n );\n}\n\nfunction ScrollAreaFrame({\n alwaysVisible,\n children,\n className,\n contentRef,\n viewportClassName,\n viewportContentStyle,\n viewportProps,\n viewportRef,\n viewportTestId,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> & {\n alwaysVisible: boolean;\n contentRef?: React.Ref<HTMLDivElement>;\n viewportClassName?: string;\n viewportContentStyle?: React.CSSProperties;\n viewportProps?: ScrollAreaProps[\"viewportProps\"];\n viewportRef?: React.Ref<HTMLDivElement>;\n viewportTestId?: string;\n}) {\n return (\n <div\n data-slot=\"scroll-area\"\n className={cn(\n \"group/scroll-area relative\",\n alwaysVisible\n ? \"[&_[data-slot=scroll-area-scrollbar]]:opacity-100\"\n : null,\n className\n )}\n {...props}\n >\n <div\n {...viewportProps}\n data-slot=\"scroll-area-viewport\"\n data-testid={viewportTestId}\n ref={viewportRef}\n className={cn(\n \"size-full overflow-auto 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 <div\n ref={contentRef}\n data-slot=\"scroll-area-content\"\n style={{\n minWidth: \"100%\",\n display: \"block\",\n ...viewportContentStyle\n }}\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction ScrollAreaScrollbar({\n active,\n contentRef,\n orientation,\n viewportRef\n}: {\n active: boolean;\n contentRef: React.RefObject<HTMLElement | null>;\n orientation: ScrollAreaOrientation;\n viewportRef: React.RefObject<HTMLElement | null>;\n}) {\n const trackRef = React.useRef<HTMLDivElement | null>(null);\n const thumbRef = React.useRef<HTMLDivElement | null>(null);\n const dragStateRef = React.useRef<ScrollbarDragState | null>(null);\n const frameRef = React.useRef<number | null>(null);\n const scrollableRef = React.useRef(false);\n const [dragging, setDragging] = React.useState(false);\n const [scrollable, setScrollable] = React.useState(false);\n const [trackActive, setTrackActive] = React.useState(false);\n\n const syncScrollbarState = React.useCallback(() => {\n const viewport = viewportRef.current;\n const track = trackRef.current;\n const thumb = thumbRef.current;\n if (!viewport || !track || !thumb) {\n updateScrollable(false, scrollableRef, setScrollable);\n return;\n }\n\n const viewportSize =\n orientation === \"vertical\" ? viewport.clientHeight : viewport.clientWidth;\n const scrollSize =\n orientation === \"vertical\" ? viewport.scrollHeight : viewport.scrollWidth;\n const scrollOffset =\n orientation === \"vertical\" ? viewport.scrollTop : viewport.scrollLeft;\n const trackSize =\n orientation === \"vertical\" ? track.clientHeight : track.clientWidth;\n const maxScrollOffset = Math.max(0, scrollSize - viewportSize);\n if (viewportSize <= 0 || trackSize <= 0 || maxScrollOffset <= 0) {\n updateScrollable(false, scrollableRef, setScrollable);\n return;\n }\n\n const thumbSize = Math.min(\n trackSize,\n Math.max(\n MIN_THUMB_SIZE_PX,\n Math.round((viewportSize / scrollSize) * trackSize)\n )\n );\n const maxThumbOffset = Math.max(0, trackSize - thumbSize);\n const thumbOffset = Math.round(\n (scrollOffset / maxScrollOffset) * maxThumbOffset\n );\n\n if (orientation === \"vertical\") {\n thumb.style.height = `${thumbSize}px`;\n thumb.style.width = \"\";\n thumb.style.transform = `translateY(${thumbOffset}px)`;\n } else {\n thumb.style.width = `${thumbSize}px`;\n thumb.style.height = \"\";\n thumb.style.transform = `translateX(${thumbOffset}px)`;\n }\n\n updateScrollable(true, scrollableRef, setScrollable);\n }, [orientation, viewportRef]);\n\n const scheduleSync = React.useCallback(() => {\n if (frameRef.current !== null) {\n return;\n }\n\n frameRef.current = requestAnimationFrameSafely(() => {\n frameRef.current = null;\n syncScrollbarState();\n });\n }, [syncScrollbarState]);\n\n const scrollViewportToThumbOffset = React.useCallback(\n (thumbOffset: number) => {\n const viewport = viewportRef.current;\n const track = trackRef.current;\n const thumb = thumbRef.current;\n if (!viewport || !track || !thumb) {\n return;\n }\n\n const viewportSize =\n orientation === \"vertical\"\n ? viewport.clientHeight\n : viewport.clientWidth;\n const scrollSize =\n orientation === \"vertical\"\n ? viewport.scrollHeight\n : viewport.scrollWidth;\n const trackSize =\n orientation === \"vertical\" ? track.clientHeight : track.clientWidth;\n const thumbSize =\n orientation === \"vertical\" ? thumb.offsetHeight : thumb.offsetWidth;\n const maxScrollOffset = Math.max(0, scrollSize - viewportSize);\n const maxThumbOffset = Math.max(0, trackSize - thumbSize);\n if (maxScrollOffset <= 0 || maxThumbOffset <= 0) {\n return;\n }\n\n const nextScrollOffset =\n (clamp(thumbOffset, 0, maxThumbOffset) / maxThumbOffset) *\n maxScrollOffset;\n if (orientation === \"vertical\") {\n viewport.scrollTop = nextScrollOffset;\n } else {\n viewport.scrollLeft = nextScrollOffset;\n }\n syncScrollbarState();\n },\n [orientation, syncScrollbarState, viewportRef]\n );\n\n const handleTrackPointerDown = React.useCallback(\n (event: React.PointerEvent<HTMLDivElement>) => {\n if (event.button !== 0 || !scrollableRef.current) {\n return;\n }\n\n const track = trackRef.current;\n const thumb = thumbRef.current;\n if (!track || !thumb || event.target === thumb) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const trackRect = track.getBoundingClientRect();\n const clientOffset =\n orientation === \"vertical\" ? event.clientY : event.clientX;\n const trackStart =\n orientation === \"vertical\" ? trackRect.top : trackRect.left;\n const thumbSize =\n orientation === \"vertical\" ? thumb.offsetHeight : thumb.offsetWidth;\n scrollViewportToThumbOffset(clientOffset - trackStart - thumbSize / 2);\n },\n [orientation, scrollViewportToThumbOffset]\n );\n\n const handleThumbPointerDown = React.useCallback(\n (event: React.PointerEvent<HTMLDivElement>) => {\n if (event.button !== 0 || !scrollableRef.current) {\n return;\n }\n\n const viewport = viewportRef.current;\n const track = trackRef.current;\n const thumb = thumbRef.current;\n if (!viewport || !track || !thumb) {\n return;\n }\n\n const viewportSize =\n orientation === \"vertical\"\n ? viewport.clientHeight\n : viewport.clientWidth;\n const scrollSize =\n orientation === \"vertical\"\n ? viewport.scrollHeight\n : viewport.scrollWidth;\n const trackSize =\n orientation === \"vertical\" ? track.clientHeight : track.clientWidth;\n const thumbSize =\n orientation === \"vertical\" ? thumb.offsetHeight : thumb.offsetWidth;\n const maxScrollOffset = Math.max(0, scrollSize - viewportSize);\n const maxThumbOffset = Math.max(0, trackSize - thumbSize);\n if (maxScrollOffset <= 0 || maxThumbOffset <= 0) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n dragStateRef.current = {\n maxScrollOffset,\n maxThumbOffset,\n startClientOffset:\n orientation === \"vertical\" ? event.clientY : event.clientX,\n startScrollOffset:\n orientation === \"vertical\" ? viewport.scrollTop : viewport.scrollLeft\n };\n setDragging(true);\n },\n [orientation, viewportRef]\n );\n\n React.useEffect(() => {\n if (!dragging) {\n return;\n }\n\n const handlePointerMove = (event: PointerEvent): void => {\n const dragState = dragStateRef.current;\n const viewport = viewportRef.current;\n if (!dragState || !viewport) {\n return;\n }\n\n const clientOffset =\n orientation === \"vertical\" ? event.clientY : event.clientX;\n const nextThumbOffset =\n (dragState.startScrollOffset / dragState.maxScrollOffset) *\n dragState.maxThumbOffset +\n (clientOffset - dragState.startClientOffset);\n const nextScrollOffset =\n (clamp(nextThumbOffset, 0, dragState.maxThumbOffset) /\n dragState.maxThumbOffset) *\n dragState.maxScrollOffset;\n\n if (orientation === \"vertical\") {\n viewport.scrollTop = nextScrollOffset;\n } else {\n viewport.scrollLeft = nextScrollOffset;\n }\n syncScrollbarState();\n };\n\n const handlePointerUp = (): void => {\n dragStateRef.current = null;\n setDragging(false);\n };\n\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", handlePointerUp);\n return () => {\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", handlePointerUp);\n };\n }, [dragging, orientation, syncScrollbarState, viewportRef]);\n\n React.useEffect(() => {\n const viewport = viewportRef.current;\n if (!viewport) {\n updateScrollable(false, scrollableRef, setScrollable);\n return;\n }\n\n syncScrollbarState();\n viewport.addEventListener(\"scroll\", scheduleSync, { passive: true });\n\n const resizeObserver =\n typeof ResizeObserver !== \"undefined\"\n ? new ResizeObserver(scheduleSync)\n : null;\n resizeObserver?.observe(viewport);\n if (contentRef.current) {\n resizeObserver?.observe(contentRef.current);\n }\n\n return () => {\n if (frameRef.current !== null) {\n cancelAnimationFrameSafely(frameRef.current);\n frameRef.current = null;\n }\n viewport.removeEventListener(\"scroll\", scheduleSync);\n resizeObserver?.disconnect();\n };\n }, [contentRef, scheduleSync, syncScrollbarState, viewportRef]);\n\n React.useEffect(() => {\n scheduleSync();\n });\n\n return (\n <div\n ref={trackRef}\n data-dragging={dragging ? \"true\" : \"false\"}\n data-orientation={orientation}\n data-scrollable={scrollable ? \"true\" : \"false\"}\n data-slot=\"scroll-area-scrollbar\"\n aria-hidden=\"true\"\n className={scrollbarClassName(orientation)}\n style={scrollbarStyle({\n active: active || dragging,\n orientation,\n scrollable\n })}\n onPointerEnter={() => setTrackActive(true)}\n onPointerLeave={() => setTrackActive(false)}\n onPointerDown={handleTrackPointerDown}\n >\n <div\n ref={thumbRef}\n data-slot=\"scroll-area-thumb\"\n className={thumbClassName(orientation)}\n style={thumbStyle({ active: trackActive || dragging, orientation })}\n onPointerDown={handleThumbPointerDown}\n />\n </div>\n );\n}\n\nfunction ScrollBar({\n className,\n forceMount: _forceMount,\n orientation = \"vertical\",\n ...props\n}: ScrollBarProps) {\n return (\n <div\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n className={cn(scrollbarClassName(orientation), className)}\n style={scrollbarStyle({ active: false, orientation, scrollable: true })}\n {...props}\n >\n <div\n data-slot=\"scroll-area-thumb\"\n className={thumbClassName(orientation)}\n style={thumbStyle({ active: false, orientation })}\n />\n </div>\n );\n}\n\nfunction scrollbarClassName(orientation: ScrollAreaOrientation): string {\n return cn(\n orientation === \"horizontal\"\n ? \"data-[orientation=horizontal]:h-2\"\n : \"data-[orientation=vertical]:w-2\"\n );\n}\n\nfunction thumbClassName(orientation: ScrollAreaOrientation): string {\n return cn(\n \"rounded-full\",\n orientation === \"horizontal\"\n ? \"top-[2px] bottom-[2px]\"\n : \"right-[2px] left-[2px]\"\n );\n}\n\nfunction nativeScrollbarClassName(alwaysVisible: boolean): string {\n return cn(\n \"[scrollbar-width:thin] [scrollbar-color:transparent_transparent]\",\n \"[&::-webkit-scrollbar]:block [&::-webkit-scrollbar]:h-2 [&::-webkit-scrollbar]:w-2\",\n \"[&::-webkit-scrollbar-corner]:bg-transparent [&::-webkit-scrollbar-track]:bg-transparent\",\n \"[&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:border-2 [&::-webkit-scrollbar-thumb]:border-solid [&::-webkit-scrollbar-thumb]:border-transparent [&::-webkit-scrollbar-thumb]:bg-clip-content\",\n alwaysVisible\n ? \"[scrollbar-color:var(--transparency-block)_transparent] [&::-webkit-scrollbar-thumb]:bg-[var(--transparency-block)] hover:[&::-webkit-scrollbar-thumb]:bg-[var(--transparency-hover)]\"\n : \"hover:[scrollbar-color:var(--transparency-block)_transparent] focus-within:[scrollbar-color:var(--transparency-block)_transparent] hover:[&::-webkit-scrollbar-thumb]:bg-[var(--transparency-block)] focus-within:[&::-webkit-scrollbar-thumb]:bg-[var(--transparency-block)]\"\n );\n}\n\nfunction scrollbarStyle({\n active,\n orientation,\n scrollable\n}: {\n active: boolean;\n orientation: ScrollAreaOrientation;\n scrollable: boolean;\n}): React.CSSProperties {\n return {\n position: \"absolute\",\n zIndex: 10,\n display: \"flex\",\n touchAction: \"none\",\n padding: 2,\n opacity: active && scrollable ? 1 : 0,\n pointerEvents: scrollable ? \"auto\" : \"none\",\n userSelect: \"none\",\n transition: \"opacity 150ms ease-in-out\",\n cursor: \"pointer\",\n ...(orientation === \"horizontal\"\n ? {\n right: 0,\n bottom: 0,\n left: 0,\n height: 8,\n flexDirection: \"column\"\n }\n : {\n top: 0,\n right: 0,\n bottom: 0,\n width: 8\n })\n };\n}\n\nfunction thumbStyle({\n active,\n orientation\n}: {\n active: boolean;\n orientation: ScrollAreaOrientation;\n}): React.CSSProperties {\n return {\n position: \"absolute\",\n minHeight: orientation === \"vertical\" ? MIN_THUMB_SIZE_PX : undefined,\n minWidth: orientation === \"horizontal\" ? MIN_THUMB_SIZE_PX : undefined,\n borderRadius: 999,\n background: active\n ? \"var(--transparency-hover)\"\n : \"var(--transparency-block)\",\n cursor: active ? \"grabbing\" : \"grab\",\n transition: \"background-color 150ms ease-in-out\",\n ...(orientation === \"horizontal\"\n ? {\n top: 2,\n bottom: 2\n }\n : {\n right: 2,\n left: 2\n })\n };\n}\n\nfunction hasAlwaysVisibleScrollbarSelector(\n className: ScrollAreaProps[\"className\"]\n): boolean {\n return (\n typeof className === \"string\" &&\n className.includes(\"scroll-area-scrollbar\") &&\n className.includes(\"opacity-100\")\n );\n}\n\nfunction setRefs<T>(\n localRef: React.MutableRefObject<T | null>,\n forwardedRef: React.Ref<T> | undefined\n): (node: T | null) => void {\n return (node) => {\n localRef.current = node;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n };\n}\n\nfunction updateScrollable(\n nextScrollable: boolean,\n scrollableRef: React.MutableRefObject<boolean>,\n setScrollable: React.Dispatch<React.SetStateAction<boolean>>\n): void {\n if (scrollableRef.current === nextScrollable) {\n return;\n }\n\n scrollableRef.current = nextScrollable;\n setScrollable(nextScrollable);\n}\n\nfunction requestAnimationFrameSafely(callback: FrameRequestCallback): number {\n if (typeof window.requestAnimationFrame === \"function\") {\n return window.requestAnimationFrame(callback);\n }\n\n return window.setTimeout(() => callback(performance.now()), 16);\n}\n\nfunction cancelAnimationFrameSafely(frameId: number): void {\n if (typeof window.cancelAnimationFrame === \"function\") {\n window.cancelAnimationFrame(frameId);\n return;\n }\n\n window.clearTimeout(frameId);\n}\n\nfunction clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value));\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(--tutti-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 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 position: \"fixed\",\n top: resolvedPlacement.position.top,\n left: resolvedPlacement.position.left,\n zIndex: \"var(--z-popover)\",\n ...style\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","React","cva","Slot","jsx","cva","Slot","jsx","jsx","React","jsx","jsx","jsxs","React","Fragment","jsx","jsxs","jsx","jsxs","React","Slot","jsx","Slot","jsx","jsxs","jsx","React","jsx","jsx","jsxs","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","useEffect","useLayoutEffect","useRef","useState","jsx","jsxs","useRef","useState","useLayoutEffect","useEffect","React","createPortal","jsx","ViewportMenuSurface","setRefs","boundary","menuSize","createPortal"]}
@@ -272,6 +272,24 @@ function AddIcon(props) {
272
272
  }
273
273
  ) });
274
274
  }
275
+ function AddLinedIcon(props) {
276
+ return /* @__PURE__ */ jsx(FilledPathIcon, { ...props, children: /* @__PURE__ */ jsx(
277
+ "path",
278
+ {
279
+ d: "M12 2C12.5523 2 13 2.44772 13 3V11H21C21.5523 11 22 11.4477 22 12C22 12.5523 21.5523 13 21 13H13V21C13 21.5523 12.5523 22 12 22C11.4477 22 11 21.5523 11 21V13H3C2.44772 13 2 12.5523 2 12C2 11.4477 2.44772 11 3 11H11V3C11 2.44772 11.4477 2 12 2Z",
280
+ fill: "currentColor"
281
+ }
282
+ ) });
283
+ }
284
+ function ImportLinedIcon(props) {
285
+ return /* @__PURE__ */ jsx(FilledPathIcon, { ...props, children: /* @__PURE__ */ jsx(
286
+ "path",
287
+ {
288
+ d: "M8 5C8.55228 5 9 5.44772 9 6C9 6.55228 8.55228 7 8 7H4C3.73478 7 3.4805 7.10543 3.29297 7.29297C3.10543 7.4805 3 7.73478 3 8V18C3 18.2652 3.10543 18.5195 3.29297 18.707C3.48051 18.8946 3.73478 19 4 19H20C20.2652 19 20.5195 18.8946 20.707 18.707C20.8946 18.5195 21 18.2652 21 18V8C21 7.73478 20.8946 7.48051 20.707 7.29297C20.5195 7.10543 20.2652 7 20 7H16C15.4477 7 15 6.55228 15 6C15 5.44772 15.4477 5 16 5H20C20.7957 5 21.5585 5.3163 22.1211 5.87891C22.6837 6.44152 23 7.20435 23 8V18C23 18.7957 22.6837 19.5585 22.1211 20.1211C21.5585 20.6837 20.7957 21 20 21H4C3.20435 21 2.44152 20.6837 1.87891 20.1211C1.3163 19.5585 1 18.7956 1 18V8C1 7.20435 1.3163 6.44152 1.87891 5.87891C2.44152 5.3163 3.20435 5 4 5H8ZM12 2C12.5523 2 13 2.44772 13 3V13.5859L15.293 11.293C15.6835 10.9024 16.3165 10.9024 16.707 11.293C17.0976 11.6835 17.0976 12.3165 16.707 12.707L12.707 16.707C12.6592 16.7548 12.6065 16.7976 12.5498 16.835C12.5121 16.8599 12.4727 16.8811 12.4326 16.9004C12.3874 16.9222 12.3407 16.9412 12.292 16.9561C12.2717 16.9622 12.251 16.9668 12.2305 16.9717C12.2191 16.9744 12.2078 16.9772 12.1963 16.9795C12.1859 16.9816 12.1754 16.9826 12.165 16.9844C12.1112 16.9933 12.0563 17 12 17C11.9433 17 11.8881 16.9934 11.834 16.9844C11.8236 16.9826 11.8131 16.9816 11.8027 16.9795C11.7912 16.9772 11.7799 16.9744 11.7686 16.9717C11.748 16.9668 11.7273 16.9623 11.707 16.9561C11.6584 16.9412 11.6116 16.9222 11.5664 16.9004C11.5266 16.8812 11.4877 16.8597 11.4502 16.835C11.3935 16.7976 11.3408 16.7548 11.293 16.707L7.29297 12.707C6.90244 12.3165 6.90244 11.6835 7.29297 11.293C7.68349 10.9024 8.31651 10.9024 8.70703 11.293L11 13.5859V3C11 2.44772 11.4477 2 12 2Z",
289
+ fill: "currentColor"
290
+ }
291
+ ) });
292
+ }
275
293
  function CopyIcon(props) {
276
294
  return /* @__PURE__ */ jsxs(SvgIcon, { ...props, children: [
277
295
  /* @__PURE__ */ jsx(
@@ -852,6 +870,8 @@ export {
852
870
  ChevronDownIcon,
853
871
  ChevronUpIcon,
854
872
  AddIcon,
873
+ AddLinedIcon,
874
+ ImportLinedIcon,
855
875
  CopyIcon,
856
876
  DirectoryIcon,
857
877
  EyeIcon,
@@ -915,4 +935,4 @@ export {
915
935
  KeyboardFilledIcon,
916
936
  FolderFailedFilledIcon
917
937
  };
918
- //# sourceMappingURL=chunk-HSIAUUW7.js.map
938
+ //# sourceMappingURL=chunk-UUXDRVOD.js.map