@bubo-squared/ui-framework 0.2.28 → 0.2.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +371 -362
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +21 -11
- package/dist/index.d.ts +21 -11
- package/dist/index.js +344 -335
- package/dist/index.js.map +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Buttons/Button.tsx","../src/lib/utils.tsx","../src/lib/ripple.ts","../src/components/Buttons/ButtonGroup.tsx","../src/components/Buttons/IconButton.tsx","../src/components/Buttons/IconButtonGroup.tsx","../src/components/Buttons/LinkButton.tsx","../src/components/Buttons/MessageButton.tsx","../src/components/Content/Accordion.tsx","../src/components/Content/Avatar.tsx","../src/components/Content/Typography.tsx","../src/components/Content/Badge.tsx","../src/components/Content/BadgeDigit.tsx","../src/components/Content/BadgeDot.tsx","../src/components/Content/BadgeStatus.tsx","../src/components/Content/Divider.tsx","../src/components/Content/Progress.tsx","../src/components/Inputs/Field.tsx","../src/components/Content/StatusAvatar.tsx","../src/components/Content/Tag.tsx","../src/components/Content/Menu.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/dropdown-styles.ts","../src/components/Inputs/Checkbox.tsx","../src/components/Inputs/Autocomplete.tsx","../src/components/Inputs/InputShell.tsx","../src/components/ui/input.tsx","../src/components/Inputs/Select.tsx","../src/components/Inputs/PasswordInput.tsx","../src/components/Inputs/PhoneInput.tsx","../src/components/ui/button.tsx","../src/components/ui/command.tsx","../src/components/ui/dialog.tsx","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/shared/src/utils.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/defaultAttributes.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/Icon.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/createLucideIcon.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/icons/chevron-right.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/icons/ellipsis.ts","../src/components/ui/popover.tsx","../src/components/ui/scroll-area.tsx","../src/components/Inputs/RadioGroup.tsx","../src/components/Inputs/SearchInput.tsx","../src/components/Inputs/Slider.tsx","../src/components/Feedback/Tooltip.tsx","../src/components/Inputs/TextArea.tsx","../src/components/Inputs/TextInput.tsx","../src/components/Inputs/Toggle.tsx","../src/components/Inputs/WebsiteInput.tsx","../src/components/Feedback/Popover.tsx","../src/components/Feedback/TooltipProvider.tsx","../src/components/Navigation/Breadcrumbs.tsx","../src/components/ui/breadcrumb.tsx","../src/components/Logo/LogoIcon.tsx","../src/components/Logo/Logo.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { spawnRipple } from '@/lib/ripple';\n\nconst buttonVariants = cva(\n 'relative inline-flex items-center justify-center whitespace-nowrap rounded-4 transition-colors ' +\n 'disabled:pointer-events-none overflow-hidden cursor-pointer',\n {\n variants: {\n variant: {\n primary:\n [\n 'btn-primary',\n 'focus-ring-primary',\n ],\n secondary:\n [\n 'btn-secondary',\n 'focus-ring-secondary',\n ],\n ghost:\n [\n 'btn-ghost',\n ],\n outline:\n [\n 'btn-outline',\n 'focus-ring-outline',\n ],\n destructive:\n [\n 'btn-destructive',\n 'focus-ring-error',\n ],\n 'destructive-outline':\n [\n 'btn-destructive-outline',\n 'focus-ring-error-outline',\n ],\n },\n size: {\n sm: ['px-3', 'py-1', 'gap-2', 'h-9'],\n md: ['px-4', 'py-2', 'gap-2', 'h-10'],\n lg: ['px-4', 'py-2', 'gap-2.5', 'h-11'],\n xl: ['px-4', 'py-2', 'gap-3', 'h-12'],\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n }\n)\n\nconst buttonIconVariants = cva('relative', {\n variants: {\n size: {\n sm: ['size-5', '*:size-5'],\n md: ['size-5', '*:size-5'],\n lg: ['size-6', '*:size-6'],\n xl: ['size-7', '*:size-7'],\n },\n }\n})\n\nconst buttonTextVariants = cva('flex text-center justify-center font-normal', {\n variants: {\n size: {\n sm: ['paragraph-sm'],\n md: ['paragraph-md'],\n lg: ['paragraph-lg'],\n xl: ['subtitle'],\n }\n }\n})\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean,\n trailingIcon?: React.ReactNode,\n leadingIcon?: React.ReactNode,\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (props, ref) => {\n\n const {\n className, variant, size = \"md\",\n asChild = false, children,\n trailingIcon, leadingIcon,\n onPointerDown,\n ...rest\n } = props;\n\n const Comp = asChild ? Slot : 'button'\n\n const handlePointerDown: React.PointerEventHandler<HTMLButtonElement> = (e) => {\n onPointerDown?.(e);\n if (e.defaultPrevented) return;\n if ((rest as React.ButtonHTMLAttributes<HTMLButtonElement>).disabled) return;\n if (e.button !== 0 || !e.isPrimary) return;\n\n spawnRipple(e.currentTarget as unknown as HTMLElement, e.clientX, e.clientY);\n }\n\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n onPointerDown={handlePointerDown}\n {...rest}\n >\n {leadingIcon && <div className={cn(buttonIconVariants({ size }))}>{leadingIcon}</div>}\n <div className={cn(buttonTextVariants({ size }))}>{children}</div>\n {trailingIcon && <div className={cn(buttonIconVariants({ size }))}>{trailingIcon}</div>}\n </Comp>\n )\n }\n)\n\nButton.displayName = 'Button'\n\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n\nexport const InputContainerTemplate = ({ children }: { children: React.ReactNode }) => {\n\n return (\n <div style={{ width: \"350px\" }}>\n {children}\n </div>\n )\n}\n\n","export type RippleOptions = {\n durationMs?: number;\n};\n\nfunction removeExistingRipples(target: HTMLElement) {\n const ripples = target.querySelectorAll(\".bubo-ripple\");\n ripples.forEach((node) => node.remove());\n}\n\nexport function spawnRipple(\n target: HTMLElement,\n clientX: number,\n clientY: number,\n options: RippleOptions = {}\n) {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") return;\n\n const rect = target.getBoundingClientRect();\n const x = clientX - rect.left;\n const y = clientY - rect.top;\n\n const radius = Math.sqrt(rect.width * rect.width + rect.height * rect.height);\n const size = radius * 2;\n\n removeExistingRipples(target);\n\n const ripple = document.createElement(\"span\");\n ripple.className = \"bubo-ripple\";\n ripple.style.width = `${size}px`;\n ripple.style.height = `${size}px`;\n ripple.style.left = `${x - radius}px`;\n ripple.style.top = `${y - radius}px`;\n\n const durationMs = options.durationMs ?? 500;\n ripple.style.animationDuration = `${durationMs}ms`;\n\n const cleanup = () => {\n ripple.removeEventListener(\"animationend\", cleanup);\n ripple.remove();\n };\n\n ripple.addEventListener(\"animationend\", cleanup);\n target.appendChild(ripple);\n\n // Fallback cleanup in case animationend doesn't fire.\n window.setTimeout(cleanup, durationMs + 50);\n}\n","import { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nconst buttonGroupVariants = cva(\n 'flex items-center justify-center gap-4 pt-4 w-fit',\n {\n variants: {\n orientation: {\n vertical: ['flex-col'],\n horizontal: ['flex-row'],\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n }\n)\n\nexport interface ButtonGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: 'horizontal' | 'vertical';\n}\n\nexport const ButtonGroup: React.FC<ButtonGroupProps> = (props) => {\n const {\n orientation = 'horizontal',\n className,\n children,\n ...rest\n } = props;\n\n return (\n <div\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...rest}\n >\n {children}\n </div>\n )\n}\n","import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { spawnRipple } from '@/lib/ripple';\n\nconst iconButtonVariants = cva(\n 'relative inline-flex items-center justify-center whitespace-nowrap transition-colors ' +\n 'disabled:pointer-events-none overflow-hidden p-2 cursor-pointer',\n {\n variants: {\n variant: {\n primary:\n [\n 'btn-primary',\n 'focus-ring-primary',\n ],\n secondary:\n [\n 'btn-secondary',\n 'focus-ring-secondary',\n ],\n ghost:\n [\n 'btn-ghost',\n ],\n outline:\n [\n 'btn-outline',\n 'focus-ring-outline',\n ],\n destructive:\n [\n 'btn-destructive-outline',\n 'focus-ring-error-outline',\n ],\n },\n size: {\n sm: ['[&>.buttonIcon>svg]:size-5'],\n md: ['[&>.buttonIcon>svg]:size-6'],\n lg: ['[&>.buttonIcon>svg]:size-8'],\n xl: ['[&>.buttonIcon>svg]:size-9'],\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof iconButtonVariants> {\n asChild?: boolean,\n icon: React.ReactNode,\n /** If true, renders a circular IconButton. */\n round?: boolean,\n}\n\nexport const IconButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (props, ref) => {\n\n const {\n className, variant, size,\n asChild = false, icon,\n round = false,\n onPointerDown,\n ...rest } = props;\n\n const Comp = asChild ? Slot : 'button'\n\n const handlePointerDown: React.PointerEventHandler<HTMLButtonElement> = (e) => {\n onPointerDown?.(e);\n if (e.defaultPrevented) return;\n if ((rest as React.ButtonHTMLAttributes<HTMLButtonElement>).disabled) return;\n if (e.button !== 0 || !e.isPrimary) return;\n\n spawnRipple(e.currentTarget as unknown as HTMLElement, e.clientX, e.clientY);\n }\n\n return (\n <Comp\n className={cn(iconButtonVariants({ variant, size }), round ? 'rounded-full' : 'rounded-4', className)}\n ref={ref}\n onPointerDown={handlePointerDown}\n {...rest}\n >\n <div className={\"buttonIcon flex items-center justify-center\"}>{icon}</div>\n </Comp>\n )\n }\n)\n\nIconButton.displayName = 'IconButton'\n\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { IconButton } from \"@/components/Buttons/IconButton\";\nimport type { ButtonProps as IconButtonProps } from \"@/components/Buttons/IconButton\";\nimport { cva } from \"class-variance-authority\";\n\ntype IconButtonSize = IconButtonProps[\"size\"];\n\nexport interface IconButtonGroupItem {\n\ticon: React.ReactNode;\n\tariaLabel: string;\n\tonClick?: React.MouseEventHandler<HTMLButtonElement>;\n\tdisabled?: boolean;\n}\n\nexport interface IconButtonGroupProps\n\textends React.HTMLAttributes<HTMLDivElement> {\n\t/** Icons to render as a segmented group. */\n\titems: IconButtonGroupItem[];\n\t/** Shared size for all icon buttons. */\n\tsize?: IconButtonSize;\n}\n\nconst IconGroupLinesClass = \"inline-flex items-center justify-center gap-0 \" +\n\t\"[&>button]:outline-none! [&>button]:rounded-none \" +\n\t\"[&>button:focus]:shadow-none [&>button:focus]:bg-(--border-secondary) \" +\n\t\"[&>button:first-child]:rounded-l-4 [&>button:last-child]:rounded-r-4\";\n\n\nconst IconGroupSizeVariants = cva(\"\", {\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"[&>button]:px-1.5\",\n\t\t\tmd: \"[&>button]:px-2\",\n\t\t\tlg: \"[&>button]:px-2\",\n\t\t\txl: \"[&>button]:px-3\",\n\t\t}\n\t},\n\tdefaultVariants: {\n\t\tsize: \"sm\"\n\t}\n})\n\nexport const IconButtonGroup: React.FC<IconButtonGroupProps> = (props) => {\n\tconst { items, size = \"sm\", className, ...rest } = props;\n\n\tif (!items || items.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\tIconGroupLinesClass,\n\t\t\t\tIconGroupSizeVariants({ size }),\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...rest}\n\t\t>\n\t\t\t{items.map((item, index) => (\n\t\t\t\t<IconButton\n\t\t\t\t\tkey={index}\n\t\t\t\t\tvariant={\"secondary\"}\n\t\t\t\t\tsize={size}\n\t\t\t\t\ticon={item.icon}\n\t\t\t\t\taria-label={item.ariaLabel}\n\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"rounded-none border-1 border-secondary text-primary \",\n\t\t\t\t\t\tindex === 0 && \"rounded-l-6\",\n\t\t\t\t\t\tindex === items.length - 1 && \"rounded-r-6\",\n\t\t\t\t\t\tindex > 0 && \"-ml-px\"\n\t\t\t\t\t)}\n\t\t\t\t\tonClick={item.onClick}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n};\n\nIconButtonGroup.displayName = \"IconButtonGroup\";\n\n","import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\n\nconst linkButtonVariants = cva(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-4 transition-colors ' +\n 'disabled:pointer-events-none overflow-hidden gap-2 cursor-pointer',\n {\n variants: {\n variant: {\n primary:\n ['btn-link-primary'],\n secondary:\n ['btn-link-secondary'],\n destructive:\n ['btn-link-destructive'],\n },\n size: {\n sm: ['py-2', 'px-1'],\n md: ['py-2.5', 'px-2'],\n lg: ['py-2.5', 'px-2'],\n xl: ['py-3', 'px-3'],\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n }\n)\n\nconst linkButtonIconVariants = cva('relative', {\n variants: {\n size: {\n sm: ['size-5', '*:size-5'],\n md: ['size-5', '*:size-5'],\n lg: ['size-6', '*:size-6'],\n xl: ['size-6', '*:size-6'],\n },\n }\n})\n\nconst linkButtonTextVariants = cva('inline-flex items-center text-center font-medium', {\n variants: {\n size: {\n sm: ['text-sm', 'leading-5'],\n md: ['text-sm', 'leading-5',],\n lg: ['text-base', 'leading-6'],\n xl: ['text-base', 'leading-6'],\n }\n }\n})\n\nexport interface LinkButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof linkButtonVariants> {\n asChild?: boolean,\n trailingIcon?: React.ReactNode,\n leadingIcon?: React.ReactNode,\n}\n\nexport const LinkButton = React.forwardRef<HTMLButtonElement, LinkButtonProps>(\n (props, ref) => {\n\n const {\n className, variant, size = \"sm\",\n asChild = false, children,\n trailingIcon, leadingIcon,\n ...rest } = props;\n\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n className={cn(linkButtonVariants({ variant, size, className }))}\n ref={ref}\n {...rest}\n >\n {leadingIcon && <div className={cn(linkButtonIconVariants({ size }))}>{leadingIcon}</div>}\n <div className={cn(linkButtonTextVariants({ size }))}>{children}</div>\n {trailingIcon && <div className={cn(linkButtonIconVariants({ size }))}>{trailingIcon}</div>}\n </Comp>\n )\n }\n)\n\nLinkButton.displayName = 'LinkButton'\n\n","import * as React from \"react\";\n\ntype Status = \"idle\" | \"loading\" | \"success\" | \"error\";\n\ntype MessageButtonProps = Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"onClick\"\n> & {\n onClick?: () => void | Promise<void>;\n idleLabel?: string;\n loadingLabel?: string;\n successLabel?: string;\n errorLabel?: string;\n feedbackDuration?: number;\n icon?: React.ReactNode;\n};\n\nexport const MessageButton: React.FC<MessageButtonProps> = (props) => {\n\n const {\n onClick,\n idleLabel = \"Save\",\n loadingLabel = \"Saving…\",\n successLabel = \"Saved!\",\n errorLabel = \"Error\",\n feedbackDuration = 1500,\n className = \"\",\n ...buttonProps\n } = props;\n\n const [status, setStatus] = React.useState<Status>(\"idle\");\n\n const handleClick = async (_event: React.MouseEvent<HTMLButtonElement>) => {\n if (status === \"loading\") return;\n\n setStatus(\"loading\");\n\n try {\n await Promise.resolve(onClick?.()); // handles sync or async onClick\n setStatus(\"success\");\n } catch (err) {\n console.error(err);\n setStatus(\"error\");\n } finally {\n if (feedbackDuration > 0) {\n window.setTimeout(() => setStatus(\"idle\"), feedbackDuration);\n }\n }\n };\n\n const label =\n status === \"loading\"\n ? loadingLabel\n : status === \"success\"\n ? successLabel\n : status === \"error\"\n ? errorLabel\n : idleLabel;\n\n // tweak these classes to match your design system / tokens\n const statusClasses =\n status === \"success\"\n ? \"btn-msg-success\"\n : status === \"error\"\n ? \"btn-destructive\"\n : \"btn-outline focus-ring-outline\";\n\n return (\n <button\n type=\"button\"\n {...buttonProps}\n onClick={handleClick}\n className={`inline-flex items-center justify-center rounded-4 px-1.5 py-1 gap-1 text-sm transition-colors cursor-pointer ${statusClasses} ${className}`}\n >\n {props.icon && <div className={\"size-5 *:size-5 relative\"}>{props.icon}</div>}\n <div className={\"text-center text-xl font-normal leading-7\"}>{label}</div>\n </button>\n );\n}\n\nMessageButton.displayName = \"MessageButton\";","import * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDownIcon } from \"@bubo-squared/icons\";\nimport { cn } from \"@/lib/utils\";\n\ntype RootProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Root>;\ntype RootSingleProps = Extract<RootProps, { type: \"single\" }>;\n\nexport type AccordionProps = Omit<\n RootSingleProps,\n \"type\" | \"collapsible\" | \"children\" | \"title\"\n> & {\n title: React.ReactNode;\n expandIcon?: React.ReactNode;\n defaultOpen?: boolean;\n children: React.ReactNode;\n bordered?: boolean;\n};\n\nexport type AccordionRef = React.ComponentRef<typeof AccordionPrimitive.Root>;\n\nexport const Accordion = React.forwardRef<AccordionRef, AccordionProps>(\n (props, ref) => {\n const {\n title, expandIcon, children,\n className, defaultOpen = false,\n bordered = false,\n ...rootProps\n } = props;\n\n const {\n value,\n defaultValue,\n onValueChange,\n ...restRootProps\n } = rootProps;\n\n const resolvedDefaultValue =\n value === undefined && defaultValue === undefined && defaultOpen\n ? \"item\"\n : defaultValue;\n\n return (\n <AccordionPrimitive.Root\n ref={ref}\n type=\"single\"\n collapsible\n className={cn(\"w-full\", className)}\n value={value}\n defaultValue={resolvedDefaultValue}\n onValueChange={onValueChange}\n {...restRootProps}\n >\n <AccordionPrimitive.Item\n value=\"item\"\n className={cn(bordered ? \"border rounded-4\" : \"border-b\", \"border-secondary px-4\")}\n >\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n className={cn(\n \"flex w-full items-center justify-between gap-2 py-3 text-left\",\n \"paragraph-md text-primary\",\n \"[&[data-state=open]_.accordion-icon]:rotate-180\",\n \"disabled:cursor-not-allowed disabled:text-primary-disabled cursor-pointer\"\n )}\n >\n <span className=\"flex-1\">{title}</span>\n <span className=\"accordion-icon inline-flex shrink-0 transition-transform duration-200 [&>svg]:size-5\">\n {expandIcon ?? <ChevronDownIcon />}\n </span>\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n\n <AccordionPrimitive.Content className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden\">\n <div className=\"pb-3\">{children}</div>\n </AccordionPrimitive.Content>\n </AccordionPrimitive.Item>\n </AccordionPrimitive.Root>\n );\n }\n);\n\nAccordion.displayName = \"Accordion\";\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { UserIcon } from \"@bubo-squared/icons\";\n\ntype AvatarVariant = \"initials\" | \"icon\" | \"image\";\n\nconst avatarVariants = cva(\n \"relative inline-flex items-center justify-center rounded-full border-secondary border-1 bg-(--background-primary) text-primary overflow-hidden \" +\n \"hover:border-(--focus-secondary) focus-visible:border-(--focus-primary) focus-visible:outline-none\",\n {\n variants: {\n size: {\n \"20\": \"min-w-5 min-h-5 hover:border-2 focus-visible:border-2\",\n \"24\": \"min-w-6 min-h-6 hover:border-2 focus-visible:border-2\",\n \"32\": \"min-w-8 min-h-8 hover:border-2 focus-visible:border-2\",\n \"40\": \"min-w-10 min-h-10 hover:border-2 focus-visible:border-2\",\n \"48\": \"min-w-12 min-h-12 hover:border-2 focus-visible:border-2\",\n \"56\": \"min-w-14 min-h-14 hover:border-4 focus-visible:border-4\",\n \"64\": \"min-w-16 min-h-16 hover:border-4 focus-visible:border-4\",\n },\n },\n defaultVariants: {\n size: \"32\",\n },\n }\n);\n\nconst avatarInitialsVariants = cva(\n \"flex items-center justify-center text-primary leading-none \",\n {\n variants: {\n size: {\n \"20\": \"footnote-xs-medium\",\n \"24\": \"footnote-medium\",\n \"32\": \"paragraph-sm font-medium\",\n \"40\": \"paragraph-md font-medium\",\n \"48\": \"paragraph-lg font-medium\",\n \"56\": \"subtitle font-medium\",\n \"64\": \"h6-title font-medium\",\n },\n },\n defaultVariants: {\n size: \"32\",\n },\n }\n);\n\nconst avatarIconVariants = cva(\n \"flex items-center justify-center text-(--icon-primary)\",\n {\n variants: {\n size: {\n \"20\": \"min-h-3 min-w-3 [&>svg]:size-3\",\n \"24\": \"min-h-3.5 min-w-3.5 [&>svg]:size-3.5\",\n \"32\": \"min-h-4 min-w-4 [&>svg]:size-4\",\n \"40\": \"min-h-5 min-w-5 [&>svg]:size-5\",\n \"48\": \"min-h-6 min-w-6 [&>svg]:size-6\",\n \"56\": \"min-h-7 min-w-7 [&>svg]:size-7\",\n \"64\": \"min-h-8 min-w-8 [&>svg]:size-8\",\n },\n },\n defaultVariants: {\n size: \"32\",\n },\n }\n);\n\nexport interface AvatarProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof avatarVariants> {\n /**\n * Visual variant: initials, icon or image.\n */\n variant?: AvatarVariant;\n /**\n * Text rendered when variant=\"initial\".\n */\n initials?: string;\n /**\n * Image source when variant=\"image\".\n */\n src?: string;\n /**\n * Accessible alt text for the image.\n */\n alt?: string;\n /**\n * Render as child via Radix Slot. When true, Avatar will not render a native\n * button element, but instead pass props to the child component.\n */\n asChild?: boolean;\n}\n\nexport const Avatar = React.forwardRef<HTMLButtonElement, AvatarProps>(\n (props, ref) => {\n const {\n asChild = false,\n variant = \"initials\",\n size = \"32\",\n initials = \"RA\",\n src,\n alt,\n className,\n ...rest\n } = props;\n\n const Comp = asChild ? Slot : \"button\";\n\n const hasImage = variant === \"image\" && typeof src === \"string\" && src.length > 0;\n\n return (\n <Comp\n ref={ref}\n className={cn(avatarVariants({ size }), className)}\n {...rest}\n >\n {hasImage ? (\n <img\n src={src}\n alt={alt}\n className=\"w-full h-full object-cover\"\n />\n ) : null}\n\n {!hasImage && variant === \"initials\" && (\n <span className={cn(avatarInitialsVariants({ size }), \"relative bottom-px\")}>{initials}</span>\n )}\n\n {!hasImage && variant === \"icon\" && (\n <span className={cn(avatarIconVariants({ size }))}>\n <UserIcon />\n </span>\n )}\n </Comp>\n );\n }\n);\n\nAvatar.displayName = \"Avatar\";\n\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport const typographyVariants: readonly string[] = [\n \"h1-intro\",\n \"h2-intro\",\n \"h3-intro\",\n \"h1-title\",\n \"h2-title\",\n \"h3-title\",\n \"h4-title\",\n \"h5-title\",\n \"h6-title\",\n \"subtitle\",\n \"paragraph-lg\",\n \"paragraph-md\",\n \"paragraph-sm\",\n \"caption\",\n \"footnote\",\n \"footnote-xs\",\n] as const;\n\nexport type TypographyVariant = (typeof typographyVariants)[number];\n\nexport type TypographyWeight = \"regular\" | \"medium\" | \"bold\";\n\ntype ElementType = React.ElementType;\n\ntype PropsOf<T extends ElementType> = React.ComponentPropsWithoutRef<T>;\n\ntype TypographyOwnProps = {\n variant?: TypographyVariant;\n weight?: TypographyWeight;\n useMargin?: boolean;\n className?: string;\n children?: React.ReactNode;\n};\n\nexport type TypographyProps<T extends ElementType = \"span\"> = TypographyOwnProps & {\n as?: T;\n} & Omit<PropsOf<T>, keyof TypographyOwnProps | \"as\">;\n\nconst mbCapableBaseClasses = new Set([\n \"h1-intro\",\n \"h2-intro\",\n \"h3-intro\",\n \"h1-title\",\n \"h2-title\",\n \"h3-title\",\n \"h4-title\",\n \"h5-title\",\n \"h6-title\",\n \"subtitle\",\n \"paragraph-lg\",\n \"paragraph-md\",\n \"paragraph-sm\",\n \"caption\",\n \"footnote\",\n \"footnote-xs\",\n]);\n\nconst getMbClassName = (variant: TypographyVariant) => {\n if (!mbCapableBaseClasses.has(variant)) return null;\n return `${variant}-mb`;\n};\n\nexport const Typography = <T extends ElementType = \"span\">(\n props: TypographyProps<T>\n) => {\n const {\n as = \"span\",\n variant = \"paragraph-md\",\n weight = \"regular\",\n useMargin = false,\n className,\n children,\n ...rest\n } = props;\n\n const Comp = (as ?? \"span\") as ElementType;\n const mbClassName = useMargin ? getMbClassName(variant) : null;\n const weightClassName =\n weight === \"regular\" ? null : `${variant}-${weight}`;\n\n return (\n <Comp\n className={cn(\"text-primary\", variant, weightClassName, mbClassName, className)}\n {...(rest as PropsOf<T>)}\n >\n {children}\n </Comp>\n );\n};\n\n(Typography as unknown as { displayName?: string }).displayName = \"Typography\";\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-4 leading-none whitespace-nowrap gap-1 py-0\",\n {\n variants: {\n size: {\n sm: \"px-1.5 paragraph-sm\",\n md: \"px-2 paragraph-md\",\n lg: \"px-2 subtitle\",\n xl: \"px-2.5 h6-title\",\n },\n variant: {\n primary:\n \"bg-(--background-secondary) text-primary\",\n secondary:\n \"bg-(--background-primary) border-1 border-primary text-primary\",\n active:\n \"bg-ac-lilac text-badge-black\",\n informal:\n \"bg-ac-neon-blue text-badge-black\",\n success:\n \"bg-ac-neon-green text-badge-black\",\n warning:\n \"bg-ac-light-orange text-badge-black\",\n error:\n \"bg-s-error-300 text-badge-black\",\n disabled:\n \"bg-(--background-primary-disabled) border-1 border-primary-disabled text-primary-disabled\",\n \"double-default\":\n \"bg-(--background-secondary) text-primary\",\n \"double-current\":\n \"bg-color-ac-lilac text-badge-black\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n variant: \"primary\",\n },\n }\n);\n\ntype BadgeVariant =\n | \"primary\"\n | \"secondary\"\n | \"informal\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"disabled\"\n | \"active\"\n\ntype BadgeSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {\n asChild?: boolean;\n label: React.ReactNode;\n value?: React.ReactNode;\n className?: string;\n size?: BadgeSize;\n variant?: BadgeVariant;\n}\n\nexport const Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\n (props, ref) => {\n const {\n asChild = false,\n label,\n value,\n size = \"sm\",\n variant = \"primary\",\n className,\n ...rest\n } = props;\n\n const Comp = asChild ? Slot : \"div\";\n\n const hasValue =\n typeof value === \"string\" ? value.trim() !== \"\" : value != null;\n\n return (\n <Comp\n ref={ref}\n className={cn(badgeVariants({ size, variant }), className)}\n {...rest}\n >\n {hasValue ? (\n <>\n <span className=\"font-normal\">{label}</span>\n <span className=\"font-normal\">:</span>\n <span className=\"font-medium\">{value}</span>\n </>\n ) : (\n <span className=\"font-normal\">{label}</span>\n )}\n </Comp>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nconst badgeDigitVariants = cva(\n \"inline-flex items-center justify-center leading-none whitespace-nowrap text-(--color-b-white)\",\n {\n variants: {\n size: {\n sm: \"px-[6px] rounded-2 caption-medium\",\n md: \"px-2 py-[2px] rounded-4 paragraph-sm-medium\",\n },\n variant: {\n primary:\n \"bg-(--background-brand)\",\n secondary:\n \"bg-(--background-primary) border-1 border-secondary text-primary\",\n informal:\n \"bg-(--background-informal)\",\n success:\n \"bg-(--background-success)\",\n warning:\n \"bg-(--background-warning)\",\n error:\n \"bg-(--background-error)\",\n disabled:\n \"bg-(--background-primary) border-1 border-primary-disabled text-primary-disabled\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n variant: \"primary\",\n },\n }\n);\n\nexport type BadgeDigitSize = \"sm\" | \"md\";\n\nexport type BadgeDigitVariant =\n | \"primary\"\n | \"secondary\"\n | \"informal\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"disabled\";\n\nexport interface BadgeDigitProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeDigitVariants> {\n /** The numeric value to display inside the badge. */\n value: string | number;\n size?: BadgeDigitSize;\n variant?: BadgeDigitVariant;\n}\n\nexport const BadgeDigit = React.forwardRef<HTMLDivElement, BadgeDigitProps>(\n (props, ref) => {\n const {\n value,\n size = \"sm\",\n variant = \"primary\",\n className,\n ...rest\n } = props;\n\n return (\n <div\n ref={ref}\n className={cn(badgeDigitVariants({ size, variant }), className)}\n {...rest}\n >\n {String(value)}\n </div>\n );\n }\n);\n\nBadgeDigit.displayName = \"BadgeDigit\";\n\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nconst badgeDotVariants = cva(\"rounded-12 size-3\", {\n variants: {\n status: {\n disabled: \"bg-(--color-primary)\",\n informal: \"bg-(--background-informal)\",\n \"success/online\": \"bg-(--background-success)\",\n warning: \"bg-(--background-warning)\",\n error: \"bg-(--background-error)\",\n },\n },\n defaultVariants: {\n status: \"disabled\",\n },\n});\n\nexport interface BadgeDotProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeDotVariants> {\n className?: string;\n}\n\nexport const BadgeDot: React.FC<BadgeDotProps> = ({ status, className }) => {\n return <div className={cn(badgeDotVariants({ status }), className)} />;\n};\n\nBadgeDot.displayName = \"BadgeDot\";\n\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface BadgeStatusProps\n extends React.HTMLAttributes<HTMLDivElement> {\n label: React.ReactNode;\n active?: boolean;\n dotClassName?: string;\n}\n\nexport const BadgeStatus = React.forwardRef<HTMLDivElement, BadgeStatusProps>(\n (props, ref) => {\n const {\n label,\n active = true,\n className,\n dotClassName,\n ...rest\n } = props;\n\n const textClasses = active\n ? \"caption-medium text-primary\"\n : \"caption-medium text-primary-disabled\";\n\n const dotClasses = active\n ? \"bg-(--background-informal)\"\n : \"bg-(--background-primary)\";\n\n return (\n <div\n ref={ref}\n className={cn(\"inline-flex items-center gap-2\", className)}\n {...rest}\n >\n <span\n className={cn(\n \"shrink-0 size-3 rounded-full\",\n dotClasses,\n dotClassName\n )}\n />\n <span className={textClasses}>{label}</span>\n </div>\n );\n }\n);\n\nBadgeStatus.displayName = \"BadgeStatus\";\n\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/components/Buttons/Button\";\nimport type { ButtonProps as PrimaryButtonProps } from \"@/components/Buttons/Button\";\nimport { IconButton } from \"@/components/Buttons/IconButton\";\nimport type { ButtonProps as IconButtonProps } from \"@/components/Buttons/IconButton\";\nimport { IconButtonGroup } from \"@/components/Buttons/IconButtonGroup\";\nimport type {\n IconButtonGroupItem,\n IconButtonGroupProps,\n} from \"@/components/Buttons/IconButtonGroup\";\nimport { TargetIcon } from \"@bubo-squared/icons\";\n\nexport type DividerType =\n | \"default\"\n | \"text\"\n | \"iconButton\"\n | \"iconButtonGroup\"\n | \"button\";\n\nexport type DividerOrientation = \"horizontal\" | \"vertical\";\n\ntype SimpleDividerType = Exclude<\n DividerType,\n \"button\" | \"iconButton\" | \"iconButtonGroup\"\n>;\n\ninterface BaseDividerProps extends React.HTMLAttributes<HTMLDivElement> {\n type?: SimpleDividerType;\n /** Orientation of the divider lines. Defaults to \"horizontal\". */\n orientation?: DividerOrientation;\n /** Size variant for the divider (affects line thickness + center element sizing). */\n size?: DividerSize;\n /** Label shown for text variant (e.g. \"OR\"). */\n label?: React.ReactNode;\n}\n\ntype ButtonVariant = PrimaryButtonProps[\"variant\"];\ntype IconButtonVariant = IconButtonProps[\"variant\"];\ntype DividerSize = IconButtonGroupProps[\"size\"];\n\ninterface IconLinesDividerProps extends React.HTMLAttributes<HTMLDivElement> {\n type: \"iconButton\";\n /** Orientation of the divider lines. Defaults to \"horizontal\". */\n orientation?: DividerOrientation;\n /** Size variant for the divider (affects line thickness + icon button size). */\n size?: DividerSize;\n /** Icon rendered between the lines. */\n icon: React.ReactNode;\n /** Variant for the icon button between the lines. */\n iconButtonVariant?: IconButtonVariant;\n /** Click handler for the icon button between the lines. */\n onIconClick: React.MouseEventHandler<HTMLButtonElement>;\n /** Accessible label for the icon button. Falls back to \"More options\". */\n ariaLabel?: string;\n}\n\ninterface ButtonLinesDividerProps extends React.HTMLAttributes<HTMLDivElement> {\n type: \"button\";\n /** Orientation of the divider lines. Defaults to \"horizontal\". */\n orientation?: DividerOrientation;\n /** Size variant for the divider (affects line thickness + button size). */\n size?: DividerSize;\n /** Text inside the button between the lines. */\n buttonLabel: React.ReactNode;\n /** onClick handler for the button between the lines. */\n onButtonClick: React.MouseEventHandler<HTMLButtonElement>;\n /** Variant for the button between the lines. */\n buttonVariant?: ButtonVariant;\n}\n\ninterface IconGroupLinesDividerProps\n extends React.HTMLAttributes<HTMLDivElement> {\n type: \"iconButtonGroup\";\n /** Orientation of the divider lines. Defaults to \"horizontal\". */\n orientation?: DividerOrientation;\n /** Size variant for the divider (affects line thickness + icon group size). */\n size?: DividerSize;\n /** Items rendered as a segmented icon group between the lines. */\n iconGroupItems: IconButtonGroupItem[];\n}\n\nexport type DividerProps =\n | BaseDividerProps\n | IconLinesDividerProps\n | IconGroupLinesDividerProps\n | ButtonLinesDividerProps;\n\nconst gapBySize: Record<NonNullable<DividerSize>, string> = {\n sm: \"gap-2\",\n md: \"gap-3\",\n lg: \"gap-4\",\n xl: \"gap-4\",\n};\n\nconst textClassBySize: Record<NonNullable<DividerSize>, string> = {\n sm: \"footnote\",\n md: \"caption\",\n lg: \"paragraph-sm\",\n xl: \"paragraph-md\",\n};\n\nexport const Divider: React.FC<DividerProps> = (props) => {\n const resolvedType: DividerType = props.type ?? \"default\";\n const resolvedSize = (props.size ?? \"sm\") as NonNullable<DividerSize>;\n const resolvedOrientation: DividerOrientation = props.orientation ?? \"horizontal\";\n\n const ariaOrientation = resolvedOrientation === \"vertical\" ? \"vertical\" : \"horizontal\";\n\n const showCenter = resolvedType !== \"default\";\n\n const lineClass =\n resolvedOrientation === \"vertical\"\n ? \"flex-1 bg-(--border-secondary) w-px\"\n : \"flex-1 bg-(--border-secondary) h-px\";\n\n const wrapperClass = cn(\n \"flex items-center\",\n resolvedOrientation === \"vertical\" ? \"h-full flex-col\" : \"w-full\",\n showCenter ? gapBySize[resolvedSize] : \"gap-0\",\n props.className\n );\n\n if (props.type === undefined || props.type === \"default\") {\n const {\n type: _type,\n orientation: _orientation,\n size: _size,\n label: _label,\n className: _className,\n ...divProps\n } = props;\n return (\n <div\n className={wrapperClass}\n role=\"separator\"\n aria-orientation={ariaOrientation}\n {...divProps}\n >\n <div className={lineClass} />\n </div>\n );\n }\n\n if (props.type === \"text\") {\n const {\n type: _type,\n orientation: _orientation,\n size: _size,\n label,\n className: _className,\n ...divProps\n } = props;\n const textLabel = label ?? \"OR\";\n\n return (\n <div\n className={wrapperClass}\n role=\"separator\"\n aria-orientation={ariaOrientation}\n {...divProps}\n >\n <div className={lineClass} />\n <span\n className={cn(\n textClassBySize[resolvedSize],\n \"text-(--color-secondary)\"\n )}\n >\n {textLabel}\n </span>\n <div className={lineClass} />\n </div>\n );\n }\n\n if (props.type === \"iconButton\") {\n const {\n type: _type,\n orientation: _orientation,\n size: _size,\n icon,\n iconButtonVariant,\n onIconClick,\n ariaLabel,\n className: _className,\n ...divProps\n } = props;\n\n return (\n <div\n className={wrapperClass}\n role=\"separator\"\n aria-orientation={ariaOrientation}\n {...divProps}\n >\n <div className={lineClass} />\n <IconButton\n variant={iconButtonVariant ?? \"secondary\"}\n size={resolvedSize}\n aria-label={ariaLabel ?? \"More options\"}\n icon={icon ?? <TargetIcon />}\n onClick={onIconClick}\n />\n <div className={lineClass} />\n </div>\n );\n }\n\n if (props.type === \"iconButtonGroup\") {\n const {\n type: _type,\n orientation: _orientation,\n size: _size,\n iconGroupItems,\n className: _className,\n ...divProps\n } = props;\n\n return (\n <div\n className={wrapperClass}\n role=\"separator\"\n aria-orientation={ariaOrientation}\n {...divProps}\n >\n <div className={lineClass} />\n <IconButtonGroup\n className={resolvedOrientation === \"vertical\" ? \"flex-col\" : \"flex-row\"}\n items={iconGroupItems} size={resolvedSize}\n />\n <div className={lineClass} />\n </div>\n );\n }\n\n if (props.type === \"button\") {\n const {\n type: _type,\n orientation: _orientation,\n size: _size,\n buttonLabel,\n onButtonClick,\n buttonVariant,\n className: _className,\n ...divProps\n } = props;\n\n return (\n <div\n className={wrapperClass}\n role=\"separator\"\n aria-orientation={ariaOrientation}\n {...divProps}\n >\n <div className={lineClass} />\n <Button\n variant={buttonVariant ?? \"secondary\"}\n size={resolvedSize}\n onClick={onButtonClick}\n >\n {buttonLabel}\n </Button>\n <div className={lineClass} />\n </div>\n );\n }\n\n return null;\n};\n\nDivider.displayName = \"Divider\";\n\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { Field } from \"../Inputs/Field\";\n\nexport type ProgressSize = \"sm\" | \"md\" | \"lg\";\nexport type ProgressStatus = \"default\" | \"success\" | \"error\";\n\nexport interface ProgressProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** Current value, from 0 to 100. */\n value: number;\n /** Optional label shown above the bar. */\n label?: React.ReactNode;\n /** Optional hint text shown below the bar. */\n hint?: React.ReactNode;\n /** Optional accessible label for the progressbar (string-only). */\n ariaLabel?: string;\n /** If true, the progress percentage label will not be rendered. */\n hideProgressLabel?: boolean;\n /** If true, the bar turns status color only when value reaches 100%. */\n useStatusColorOnComplete?: boolean;\n /** If true, the hint will not be rendered even if provided. */\n hideHint?: boolean;\n status?: ProgressStatus;\n disabled?: boolean;\n /** Visual height of the bar. */\n size?: ProgressSize;\n}\n\nconst sizeToBarClasses: Record<ProgressSize, string> = {\n lg: \"h-4 rounded-16\",\n md: \"h-2 rounded-8\",\n sm: \"h-1 rounded-4\",\n};\n\nexport const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n (props, ref) => {\n const {\n value,\n label,\n hint,\n ariaLabel,\n hideProgressLabel = false,\n useStatusColorOnComplete = false,\n hideHint,\n size = \"lg\",\n status = \"default\",\n disabled,\n className,\n ...rest\n } = props;\n\n const clamped = Number.isFinite(value)\n ? Math.min(100, Math.max(0, value))\n : 0;\n\n const percentageLabel = `${Math.round(clamped)}%`;\n const resolvedAriaLabel =\n ariaLabel ?? (typeof label === \"string\" ? label : undefined);\n\n const barHeightClasses = sizeToBarClasses[size];\n\n return (\n <Field\n label={label}\n labelRight={\n !hideProgressLabel && label != null ? (\n <span className=\"footnote text-(--color-secondary)\">\n {percentageLabel}\n </span>\n ) : undefined\n }\n hint={hint}\n hideHint={hideHint}\n status={status}\n disabled={disabled}\n className={cn(\"w-full\", className)}\n >\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuenow={clamped}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={resolvedAriaLabel}\n {...rest}\n >\n <div\n className={cn(\n \"w-full bg-(--chart-mono) overflow-hidden\",\n barHeightClasses,\n disabled && \"opacity-50\"\n )}\n >\n <div\n className={cn(\n \"h-full\",\n useStatusColorOnComplete && clamped === 100\n ? (status === \"success\" ? \"bg-(--color-success)\" : status === \"error\" ? \"bg-(--color-error)\" : \"bg-(--chart-brand)\")\n : \"bg-(--chart-brand)\",\n size === \"lg\" ? \"rounded-4\" : size === \"md\" ? \"rounded-2\" : \"rounded-[1px]\"\n )}\n style={{ width: `${clamped}%` }}\n />\n </div>\n </div>\n </Field>\n );\n }\n);\n\nProgress.displayName = \"Progress\";\n\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type FieldStatus = \"default\" | \"success\" | \"error\";\n\nexport interface FieldProps {\n label?: React.ReactNode;\n labelRight?: React.ReactNode;\n hint?: React.ReactNode;\n /**\n * If true, the hint will not be rendered even if provided.\n */\n hideHint?: boolean;\n status?: FieldStatus;\n disabled?: boolean | null;\n className?: string;\n children: React.ReactNode;\n}\n\nconst fieldBase = \"flex flex-col gap-2 items-start\";\n\nexport const Field: React.FC<FieldProps> = (props) => {\n const {\n label,\n labelRight = false,\n hint,\n hideHint,\n status = \"default\",\n disabled,\n className,\n children,\n } = props;\n\n const hasLabel = label != null;\n const hasHint = hint != null;\n\n const fieldId = React.useId();\n const labelId = hasLabel ? `${fieldId}-label` : undefined;\n const hintId = hasHint ? `${fieldId}-hint` : undefined;\n\n const hintColorClass = disabled\n ? \"text-primary-disabled\"\n : status === \"success\"\n ? \"text-(--color-success)\"\n : status === \"error\"\n ? \"text-(--color-error)\"\n : \"text-(--color-secondary)\";\n\n const labelColorClass = disabled\n ? \"text-primary-disabled\"\n : \"text-primary\";\n\n return (\n <div className={cn(fieldBase, className)}>\n {hasLabel && (\n <div className=\"flex w-full items-center justify-between\">\n <label id={labelId} className={cn(\"paragraph-sm\", labelColorClass)}>\n {label}\n </label>\n {labelRight}\n </div>\n )}\n\n <div className=\"relative w-full\">\n {children}\n </div>\n\n {!hideHint && (\n <p\n id={hasHint ? hintId : undefined}\n className={cn(\"caption\", hasHint ? hintColorClass : \"invisible\")}\n >\n {hasHint ? hint : \"\\u00A0\"}\n </p>\n )}\n </div>\n );\n};\n\nField.displayName = \"Field\";\n","import * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport {\n BookmarkCheckIcon,\n CheckIcon,\n CrossIcon,\n PlusIcon,\n StarIcon,\n} from \"@bubo-squared/icons\";\n\nexport type StatusAvatarVariant =\n | \"verified\"\n | \"bookmark\"\n | \"favorite\"\n | \"add\"\n | \"remove\"\n | \"offline\"\n | \"online\"\n | \"away\"\n | \"busy\";\n\ntype IconVariant =\n | \"verified\"\n | \"bookmark\"\n | \"favorite\"\n | \"add\"\n | \"remove\";\n\nconst iconStatusVariants = cva(\n \"inline-flex size-5 items-center justify-center rounded-full border-1 border-(--color-primary-inverse) p-1\",\n {\n variants: {\n variant: {\n verified: \"bg-(--background-informal)\",\n bookmark: \"bg-(--background-brand)\",\n favorite: \"bg-(--background-success)\",\n add: \"bg-(--background-primary-hover)\",\n remove: \"bg-(--background-error)\",\n },\n },\n defaultVariants: {\n variant: \"verified\",\n },\n }\n);\n\nconst presenceDotBase =\n \"inline-flex h-5 w-5 items-center justify-center\";\n\nconst presenceDotByVariant: Record<\n Exclude<StatusAvatarVariant, IconVariant>,\n string\n> = {\n offline:\n \"bg-(--background-primary) border-1 border-(--color-primary-inverse)\",\n online:\n \"bg-(--background-success) border-1 border-(--color-primary-inverse)\",\n away:\n \"bg-(--background-warning) border-1 border-(--color-primary-inverse)\",\n busy:\n \"bg-(--background-error) border-1 border-(--color-primary-inverse)\",\n};\n\nexport interface StatusAvatarProps\n extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Visual style of the status badge.\n */\n variant?: StatusAvatarVariant;\n}\n\nexport const StatusAvatar = React.forwardRef<\n HTMLDivElement,\n StatusAvatarProps\n>((props, ref) => {\n const { variant = \"verified\", className, ...rest } = props;\n\n if (\n variant === \"offline\" ||\n variant === \"online\" ||\n variant === \"away\" ||\n variant === \"busy\"\n ) {\n const dotClasses = presenceDotByVariant[variant];\n\n return (\n <div\n ref={ref}\n className={cn(\n presenceDotBase,\n className\n )}\n {...rest}\n >\n <div className={cn(dotClasses, \"size-3.5 rounded-full\")} />\n </div>\n );\n }\n\n const iconVariant = variant as IconVariant;\n\n return (\n <div\n ref={ref}\n className={cn(iconStatusVariants({ variant: iconVariant }), className)}\n {...rest}\n >\n {iconVariant === \"verified\" && (\n <CheckIcon className=\"size-3 text-button-white\" />\n )}\n {iconVariant === \"bookmark\" && (\n <BookmarkCheckIcon className=\"size-3 text-button-white\" />\n )}\n {iconVariant === \"favorite\" && (\n <StarIcon className=\"size-3 text-button-white\" />\n )}\n {iconVariant === \"add\" && (\n <PlusIcon className=\"size-3 text-button-white\" />\n )}\n {iconVariant === \"remove\" && (\n <CrossIcon className=\"size-3 text-button-white\" />\n )}\n </div>\n );\n});\n\nStatusAvatar.displayName = \"StatusAvatar\";\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from 'class-variance-authority';\n\n\nconst tagVariants = cva(\n \"inline-flex flex-row items-center justify-center rounded-6 gap-2 px-3 overflow-hidden \" +\n \"border-1 border-secondary bg-(--background-neutral) \" +\n \"focus:border-brand focus-ring-primary \",\n {\n variants: {\n size: {\n sm: \"py-0.5\",\n md: \"py-1.5\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n }\n }\n);\n\nconst disabledTag = \"pointer-events-none border-secondary-disabled bg-(--background-neutral-disabled) text-primary-disabled\"\n\nconst iconClasses = \"flex items-center justify-center w-5 h-5 [&>*]:w-5 [&>*]:h-5 shrink-0 text-primary\";\n\nexport interface TagProps extends\n VariantProps<typeof tagVariants> {\n asChild?: boolean;\n label: React.ReactNode;\n value?: React.ReactNode;\n className?: string;\n leadingIcon?: React.ReactElement<{ disabled?: boolean }>;\n trailingIcon?: React.ReactElement<{ disabled?: boolean }>;\n size?: \"sm\" | \"md\";\n disabled?: boolean;\n}\n\n\nexport const Tag = React.forwardRef<HTMLDivElement, TagProps>(\n (props, ref) => {\n\n const {\n size = \"sm\",\n className,\n asChild = false,\n disabled = false,\n label,\n value,\n ...rest\n } = props;\n\n const hasValue =\n typeof value === \"string\" ? value.trim() !== \"\" : value != null;\n\n const Comp = asChild ? Slot : 'div'\n\n const leading = props.leadingIcon && React.isValidElement(props.leadingIcon)\n ? React.cloneElement(props.leadingIcon, { disabled, ...props.leadingIcon.props })\n : null;\n\n const trailing = props.trailingIcon && React.isValidElement(props.trailingIcon)\n ? React.cloneElement(props.trailingIcon, { disabled, ...props.trailingIcon.props })\n : null;\n\n return (\n <Comp\n className={cn(tagVariants({ size }), disabled && disabledTag, className)}\n ref={ref}\n {...rest}\n >\n {leading && <div className={iconClasses}>{leading}</div>}\n {hasValue ? (\n <div className=\"flex flex-row gap-1 items-center\">\n <span className={\"text-primary paragraph-lg mb-0! cursor-default font-normal\"}>{label}</span>\n <span className={\"text-primary paragraph-lg mb-0! cursor-default font-normal\"}>:</span>\n <span className={\"text-primary paragraph-lg-medium mb-0! cursor-default font-medium\"}>{value}</span>\n </div>\n ) : (\n <span className={\"text-primary paragraph-lg mb-0! cursor-default\"}>{label}</span>\n )}\n {trailing && <div className={iconClasses}>{trailing}</div>}\n </Comp>\n )\n }\n);\n","import * as React from \"react\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport type * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\nimport type { DropdownSize } from \"@/components/ui/dropdown-styles\";\n\nexport interface MenuProps {\n trigger: React.ReactElement;\n children: React.ReactNode;\n size?: DropdownSize;\n align?: DropdownMenuPrimitive.DropdownMenuContentProps[\"align\"];\n side?: DropdownMenuPrimitive.DropdownMenuContentProps[\"side\"];\n offset?: number;\n className?: string;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n modal?: boolean;\n}\n\nexport const Menu: React.FC<MenuProps> = (props) => {\n const {\n trigger,\n children,\n size = \"lg\",\n align = \"start\",\n side,\n offset = 4,\n className,\n open,\n onOpenChange,\n modal,\n } = props;\n\n return (\n <DropdownMenu open={open} onOpenChange={onOpenChange} modal={modal}>\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuContent\n align={align}\n side={side}\n sideOffset={offset}\n size={size}\n className={cn(className)}\n >\n {children}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n\nMenu.displayName = \"Menu\";\n\nexport const MenuGroup = DropdownMenuGroup;\nexport const MenuItem = DropdownMenuItem;\nexport const MenuLabel = DropdownMenuLabel;\nexport const MenuPortal = DropdownMenuPortal;\nexport const MenuSeparator = DropdownMenuSeparator;\nexport const MenuShortcut = DropdownMenuShortcut;\nexport const MenuSub = DropdownMenuSub;\nexport const MenuSubContent = DropdownMenuSubContent;\nexport const MenuSubTrigger = DropdownMenuSubTrigger;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { ChevronRightIcon } from \"@bubo-squared/icons\";\nimport { cn } from \"@/lib/utils\";\nimport {\n dropdownRowVariants,\n dropdownScrollClass,\n dropdownSurfaceClass,\n type DropdownSize,\n} from \"@/components/ui/dropdown-styles\";\n\nconst DropdownMenuSizeContext = React.createContext<DropdownSize>(\"lg\");\n\nfunction useDropdownMenuSize(explicitSize?: DropdownSize) {\n const contextSize = React.useContext(DropdownMenuSizeContext);\n return explicitSize ?? contextSize;\n}\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 sideOffset = 4,\n size = \"lg\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content> & {\n size?: DropdownSize;\n}) {\n return (\n <DropdownMenuSizeContext.Provider value={size}>\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n dropdownSurfaceClass,\n dropdownScrollClass,\n \"min-w-37.5 p-0\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n </DropdownMenuSizeContext.Provider>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n size,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n size?: DropdownSize\n variant?: \"default\" | \"destructive\"\n}) {\n const resolvedSize = useDropdownMenuSize(size);\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n dropdownRowVariants({ size: resolvedSize, inset }),\n \"data-highlighted:bg-(--background-secondary) data-highlighted:outline-none\",\n \"data-disabled:pointer-events-none data-disabled:opacity-50 data-disabled:text-primary-disabled\",\n variant === \"destructive\" ? \"text-(--color-error)\" : null,\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n size,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n size?: DropdownSize\n}) {\n const resolvedSize = useDropdownMenuSize(size);\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n dropdownRowVariants({ size: resolvedSize, inset }),\n \"text-secondary cursor-default hover:bg-transparent caption\",\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(\"my-1 h-px bg-(--border-secondary)\", 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 paragraph-sm text-secondary\",\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 size,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n size?: DropdownSize\n}) {\n const resolvedSize = useDropdownMenuSize(size);\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n dropdownRowVariants({ size: resolvedSize, inset }),\n \"data-highlighted:bg-(--background-secondary) data-highlighted:outline-none\",\n \"data-[state=open]:bg-(--background-secondary)\",\n \"data-disabled:pointer-events-none data-disabled:opacity-50 data-disabled:text-primary-disabled\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4 text-(--icon-primary)\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n size,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent> & {\n size?: DropdownSize\n}) {\n const resolvedSize = useDropdownMenuSize(size);\n return (\n <DropdownMenuSizeContext.Provider value={resolvedSize}>\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n dropdownSurfaceClass,\n dropdownScrollClass,\n \"min-w-37.5 p-0\",\n className,\n )}\n {...props}\n />\n </DropdownMenuSizeContext.Provider>\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","import { cva } from \"class-variance-authority\";\n\nexport type DropdownSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport const dropdownSurfaceClass =\n \"z-50 rounded-4 border border-secondary-hover bg-(--background-neutral) shadow-card-md\";\n\nexport const dropdownScrollClass =\n \"max-h-79 overflow-y-auto dropdown-scrollbar\";\n\nexport const dropdownRowVariants = cva(\n \"flex w-full items-center gap-2 pl-(--space-8) pr-(--space-16) text-left text-primary cursor-pointer hover:bg-(--background-secondary)\",\n {\n variants: {\n size: {\n sm: \"paragraph-sm py-(--space-4)\",\n md: \"paragraph-md py-(--space-6)\",\n lg: \"paragraph-lg py-(--space-8)\",\n xl: \"subtitle py-(--space-10)\",\n },\n inset: {\n true: \"pl-(--space-16)\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n },\n }\n);\n","import * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { CheckIcon } from \"@bubo-squared/icons\";\nimport { MinusIcon } from \"@bubo-squared/icons\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface CheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> {\n /** Only needed when the component is a part of a native form. */\n name?: string;\n label?: React.ReactNode;\n}\n\nexport const Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ label, className, ...props }, forwardedRef) => {\n return (\n <label className=\"inline-flex items-center gap-(--space-12) cursor-pointer select-none\">\n <CheckboxPrimitive.Root\n ref={forwardedRef}\n className={cn(\n \"group flex h-5 w-5 items-center justify-center rounded-2 border border-secondary bg-(--background-neutral) text-primary-inverse\",\n \"data-[state=checked]:bg-(--background-brand) data-[state=checked]:text-button-white data-[state=checked]:border-none\",\n \"data-[state=indeterminate]:bg-(--background-brand) data-[state=indeterminate]:text-button-white data-[state=indeterminate]:border-none\",\n \"data-[state=checked]:hover:bg-(--background-brand-hover) data-[state=indeterminate]:hover:bg-(--background-brand-hover)\",\n \"focus-visible:border-brand\",\n \"disabled:bg-(--background-primary-disabled) disabled:border-none disabled:text-(--icon-primary-disabled)\",\n \"data-[state=checked]:disabled:bg-(--background-primary-disabled) data-[state=checked]:disabled:border-none data-[state=checked]:disabled:text-(--icon-primary-disabled)\",\n \"data-[state=indeterminate]:disabled:bg-(--background-primary-disabled) data-[state=indeterminate]:disabled:border-none data-[state=indeterminate]:disabled:text-(--icon-primary-disabled)\",\n \"focus-ring-primary hover:cursor-pointer hover:border-secondary-hover\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <CheckIcon className=\"h-5 w-5 hidden group-data-[state=checked]:block\" />\n <MinusIcon className=\"h-5 w-5 hidden group-data-[state=indeterminate]:block\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n\n {label && (\n <span className=\"paragraph-md-medium text-primary\">\n {label}\n </span>\n )}\n </label>\n );\n});\n\nCheckbox.displayName = \"Checkbox\";","import * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { Field } from \"./Field\";\nimport { InputShell } from \"./InputShell\";\nimport { Input } from \"../ui/input\";\nimport type { TextInputStatus, TextInputSize } from \"./TextInput\";\nimport { dropdownScrollClass, dropdownSurfaceClass } from \"@/components/ui/dropdown-styles\";\n\nconst inputTextVariants = cva(\"truncate\", {\n variants: {\n size: {\n sm: \"paragraph-md\",\n md: \"paragraph-lg\",\n lg: \"subtitle\",\n xl: \"h6-title\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n },\n});\n\nconst optionVariants = cva(\n \"w-full text-left hover:bg-(--background-secondary)\",\n {\n variants: {\n size: {\n sm: \"paragraph-sm py-(--space-4) \",\n md: \"paragraph-md py-(--space-6) \",\n lg: \"paragraph-lg py-(--space-8) \",\n xl: \"subtitle py-(--space-10) \",\n },\n active: {\n true: \"bg-(--background-secondary)\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n active: false,\n },\n }\n);\n\nconst iconWrapperVariants = cva(\n \"flex items-center justify-center shrink-0 text-(--icon-primary)\",\n {\n variants: {\n size: {\n sm: \"size-4 [&>svg]:size-4\",\n md: \"size-5 [&>svg]:size-5\",\n lg: \"size-5 [&>svg]:size-5\",\n xl: \"size-6 [&>svg]:size-6\",\n },\n disabled: {\n true: \"text-(--icon-primary-disabled)\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n },\n }\n);\n\nexport interface AutocompleteProps\n extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"size\" | \"disabled\" | \"value\" | \"defaultValue\" | \"onChange\"\n > {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n /** If true, the hint will not be rendered even if provided. */\n hideHint?: boolean;\n status?: TextInputStatus;\n size?: TextInputSize;\n disabled?: boolean;\n\n leadingIcon?: React.ReactNode | null;\n trailingIcon?: React.ReactNode | null;\n\n /** Options to render (assumed already server-filtered). */\n options: string[];\n loading?: boolean;\n loadingText?: React.ReactNode;\n noOptionsText?: React.ReactNode;\n\n /** Committed value (e.g. selected option). */\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n\n /** Current input text (used as query). */\n inputValue?: string;\n defaultInputValue?: string;\n onInputChange?: (value: string) => void;\n\n /**\n * If true, free-typed input is also treated as the committed value.\n * Selecting an option from the dropdown still overrides the value.\n */\n freeSolo?: boolean;\n\n /** Optional className for the dropdown (options container). */\n dropdownClassName?: string;\n /** Optional className for the listbox (<ul>). */\n listboxClassName?: string;\n}\n\nexport const Autocomplete = React.forwardRef<HTMLInputElement, AutocompleteProps>((props, forwardedRef) => {\n const {\n label,\n hint,\n hideHint,\n status = \"default\",\n size = \"md\",\n disabled,\n className,\n\n leadingIcon,\n trailingIcon,\n\n options,\n loading = false,\n loadingText = \"Loading…\",\n noOptionsText = \"No matches\",\n\n value,\n defaultValue,\n onChange,\n\n inputValue,\n defaultInputValue,\n onInputChange,\n\n freeSolo = false,\n\n dropdownClassName,\n listboxClassName,\n\n placeholder = \"Search…\",\n onKeyDown,\n onFocus,\n onBlur,\n id,\n ...inputProps\n } = props;\n\n const isValueControlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<string>(\n (defaultValue as string | undefined) ?? \"\"\n );\n\n const isInputControlled = inputValue !== undefined;\n const [internalInputValue, setInternalInputValue] = React.useState<string>(\n (defaultInputValue as string | undefined) ?? \"\"\n );\n\n const [isFocused, setIsFocused] = React.useState(false);\n const [activeIndex, setActiveIndex] = React.useState(-1);\n\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n\n const setInputRef = React.useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n\n if (!forwardedRef) return;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node);\n } else {\n (forwardedRef as React.RefObject<HTMLInputElement | null>).current = node;\n }\n },\n [forwardedRef]\n );\n const baseId = React.useId();\n const inputId = id ?? baseId;\n const listboxId = `${inputId}-listbox`;\n\n const currentValue = (isValueControlled ? value : internalValue) ?? \"\";\n const currentInput = (isInputControlled ? inputValue : internalInputValue) ?? \"\";\n\n React.useEffect(() => {\n if (isFocused) return;\n if (isInputControlled) return;\n if (!isValueControlled) return;\n\n setInternalInputValue(currentValue);\n }, [currentValue, isFocused, isInputControlled, isValueControlled]);\n\n const showDropdown =\n isFocused &&\n (loading || options.length > 0 || currentInput.trim().length > 0);\n\n const setInputText = (next: string) => {\n if (!isInputControlled) {\n setInternalInputValue(next);\n }\n onInputChange?.(next);\n };\n\n const commitTypedValue = (next: string) => {\n if (!isValueControlled) {\n setInternalValue(next);\n }\n onChange?.(next);\n };\n\n const commitValue = (next: string) => {\n if (!isValueControlled) {\n setInternalValue(next);\n }\n onChange?.(next);\n setInputText(next);\n setActiveIndex(-1);\n };\n\n const handleContainerClick = () => {\n if (disabled) return;\n inputRef.current?.focus();\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const next = event.target.value;\n setInputText(next);\n setActiveIndex(-1);\n\n if (freeSolo) {\n commitTypedValue(next);\n }\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true);\n onFocus?.(event);\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(false);\n setActiveIndex(-1);\n\n if (freeSolo) {\n const trimmed = currentInput.trim();\n if (trimmed.length > 0 && currentInput !== currentValue) {\n commitTypedValue(currentInput);\n }\n }\n\n onBlur?.(event);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n\n if (!showDropdown && (event.key === \"ArrowDown\" || event.key === \"ArrowUp\")) {\n setIsFocused(true);\n return;\n }\n\n switch (event.key) {\n case \"ArrowDown\": {\n event.preventDefault();\n setActiveIndex((prev) => {\n if (options.length === 0) return -1;\n const next = prev < 0 ? 0 : Math.min(prev + 1, options.length - 1);\n return next;\n });\n break;\n }\n case \"ArrowUp\": {\n event.preventDefault();\n setActiveIndex((prev) => {\n if (options.length === 0) return -1;\n const next = prev <= 0 ? 0 : prev - 1;\n return next;\n });\n break;\n }\n case \"Enter\": {\n if (activeIndex >= 0 && activeIndex < options.length) {\n event.preventDefault();\n commitValue(options[activeIndex]);\n setIsFocused(false);\n break;\n }\n\n if (freeSolo) {\n const trimmed = currentInput.trim();\n if (trimmed.length > 0) {\n event.preventDefault();\n if (currentInput !== currentValue) {\n commitTypedValue(currentInput);\n }\n setIsFocused(false);\n }\n }\n break;\n }\n case \"Escape\": {\n event.preventDefault();\n setIsFocused(false);\n setActiveIndex(-1);\n break;\n }\n default:\n break;\n }\n };\n\n const handleOptionMouseDown = (event: React.MouseEvent) => {\n // Prevent input blur before we process selection.\n event.preventDefault();\n };\n\n const handleOptionClick = (option: string) => {\n commitValue(option);\n setIsFocused(false);\n };\n\n const activeDescendantId =\n activeIndex >= 0 ? `${inputId}-option-${activeIndex}` : undefined;\n\n const showLeadingIcon = !!leadingIcon;\n const showTrailingIcon = !!trailingIcon;\n\n return (\n <Field label={label} hint={hint} hideHint={hideHint} status={status} disabled={disabled}>\n <div className=\"relative w-full\">\n <InputShell\n size={size}\n status={status}\n disabled={disabled}\n className={className}\n onClick={handleContainerClick}\n >\n {showLeadingIcon && (\n <span className={cn(iconWrapperVariants({ size, disabled: !!disabled }))}>\n {leadingIcon}\n </span>\n )}\n\n <Input\n ref={setInputRef}\n id={inputId}\n type=\"text\"\n disabled={disabled ?? undefined}\n placeholder={placeholder}\n value={currentInput}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-controls={listboxId}\n aria-expanded={showDropdown}\n aria-activedescendant={activeDescendantId}\n variant=\"bare\"\n className={cn(inputTextVariants({ size }), \"bg-transparent outline-none w-full\")}\n {...inputProps}\n />\n\n {showTrailingIcon && (\n <span className={cn(iconWrapperVariants({ size, disabled: !!disabled }))}>\n {trailingIcon}\n </span>\n )}\n </InputShell>\n\n {showDropdown && (\n <div\n className={cn(\n \"absolute left-0 right-0 mt-1\",\n dropdownSurfaceClass,\n dropdownScrollClass,\n dropdownClassName,\n )}\n >\n {loading ? (\n <div className={cn(optionVariants({ size }), \"px-(--space-8) pr-(--space-16) text-secondary\")}\n aria-live=\"polite\"\n >\n {loadingText}\n </div>\n ) : options.length === 0 ? (\n <div className={cn(optionVariants({ size }), \"px-(--space-8) pr-(--space-16) text-secondary\")}\n aria-live=\"polite\"\n >\n {noOptionsText}\n </div>\n ) : (\n <ul\n id={listboxId}\n role=\"listbox\"\n className={cn(\"flex flex-col\", listboxClassName)}\n >\n {options.map((option, index) => (\n <li\n key={`${option}-${index}`}\n id={`${inputId}-option-${index}`}\n role=\"option\"\n aria-selected={index === activeIndex}\n className={cn(\n optionVariants({ size, active: index === activeIndex }),\n \"px-(--space-8) pr-(--space-16) text-primary cursor-pointer\"\n )}\n onMouseDown={handleOptionMouseDown}\n onMouseEnter={() => setActiveIndex(index)}\n onClick={() => handleOptionClick(option)}\n >\n {option}\n </li>\n ))}\n </ul>\n )}\n </div>\n )}\n </div>\n </Field>\n );\n});\n\nAutocomplete.displayName = \"Autocomplete\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nexport type InputShellSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type InputShellStatus = \"default\" | \"success\" | \"error\";\n\nexport const inputShellVariants = cva(\n \"group flex w-full items-center rounded-4 border bg-(--background-primary) text-left cursor-text \" +\n \"border-secondary\",\n {\n variants: {\n size: {\n sm: \"gap-2 px-2 py-1 h-8\",\n md: \"gap-2 px-2 py-2 h-10\",\n lg: \"gap-2 px-2 py-2 h-11\",\n xl: \"gap-2 px-[10px] py-2 h-14\",\n },\n status: {\n default: \"input-default\",\n success: \"input-success\",\n error: \"input-error\",\n },\n disabled: {\n true:\n \"bg-(--background-primary-disabled) border-secondary-disabled text-primary-disabled cursor-default\",\n },\n },\n defaultVariants: {\n size: \"md\",\n status: \"default\",\n },\n }\n);\n\nexport interface InputShellProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof inputShellVariants> { }\n\nexport const InputShell = React.forwardRef<HTMLDivElement, InputShellProps>(\n ({ size = \"md\", status, disabled, className, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n aria-disabled={disabled || undefined}\n className={cn(\n inputShellVariants({ size, status, disabled }),\n className\n )}\n {...rest}\n />\n );\n }\n);\n\nInputShell.displayName = \"InputShell\";\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype InputVariant = \"default\" | \"bare\"\n\nexport interface InputProps\n extends React.ComponentProps<\"input\"> {\n variant?: InputVariant\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, variant = \"default\", ...props }, ref) => {\n const base =\n \"text-primary placeholder:text-(--color-secondary) disabled:text-primary-disabled disabled:placeholder:text-primary-disabled \" +\n \"selection:bg-primary selection:text-primary-foreground file:text-foreground\"\n\n const defaultStyles =\n \"dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 shadow-xs \" +\n \"transition-[color,box-shadow] file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium \" +\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 \" +\n \"focus-visible:border-ring focus-visible:ring-0 focus-visible:shadow-none \" +\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\"\n\n const bareStyles = \"bg-transparent outline-none w-full\"\n\n return (\n <input\n ref={ref}\n type={type}\n data-slot=\"input\"\n className={cn(\n base,\n variant === \"default\" ? defaultStyles : bareStyles,\n className\n )}\n {...props}\n />\n )\n }\n)\n\nInput.displayName = \"Input\"\n\nexport { Input }\n","import * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { ChevronDownIcon } from \"@bubo-squared/icons\";\nimport { Field } from \"./Field\";\nimport { dropdownScrollClass, dropdownSurfaceClass } from \"@/components/ui/dropdown-styles\";\n\nexport type SelectSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type SelectStatus = \"default\" | \"success\" | \"error\";\n\nexport interface SelectOption {\n label: React.ReactNode;\n value: string;\n}\n\nconst selectTriggerVariants = cva(\n \"group flex w-full items-center justify-between rounded-4 border bg-(--background-primary) \" +\n \"p-2 text-left transition-[background-color] cursor-pointer \" +\n \"hover:bg-(--background-primary-hover) disabled:bg-(--background-primary-disabled) \" +\n \"disabled:text-primary-disabled disabled:cursor-default\",\n {\n variants: {\n size: {\n sm: \"h-8 py-1\",\n md: \"h-10 py-2\",\n lg: \"h-11\",\n xl: \"h-14\",\n },\n status: {\n default: \"input-default\",\n success: \"input-success\",\n error: \"input-error\",\n },\n },\n defaultVariants: {\n size: \"md\",\n status: \"default\",\n },\n }\n);\n\nconst textVariants = cva(\"truncate\", {\n variants: {\n size: {\n sm: \"paragraph-md\",\n md: \"paragraph-lg\",\n lg: \"subtitle\",\n xl: \"h6-title\",\n },\n hasValue: {\n false: \"text-secondary\",\n true: \"text-primary\",\n },\n disabled: {\n true: \"text-primary-disabled\",\n },\n },\n defaultVariants: {\n size: \"md\",\n hasValue: false,\n },\n});\n\nconst selectIconVariants = cva(\"flex items-center justify-center shrink-0\", {\n variants: {\n size: {\n sm: \"size-4\",\n md: \"size-5\",\n lg: \"size-5\",\n xl: \"size-6\",\n },\n disabled: {\n false: \"text-(--icon-primary)\",\n true: \"text-(--icon-primary-disabled)\",\n },\n },\n defaultVariants: {\n size: \"md\",\n disabled: false,\n },\n});\n\nconst selectButtonVariants = cva(\n \"flex w-full items-center gap-2 pl-(--space-8) pr-(--space-16) text-left paragraph-lg text-primary hover:bg-(--background-secondary)\",\n {\n variants: {\n size: {\n sm: \"paragraph-sm py-(--space-4) \",\n md: \"paragraph-md py-(--space-6) \",\n lg: \"paragraph-lg py-(--space-8) \",\n xl: \"subtitle py-(--space-10) \",\n },\n },\n }\n);\n\nexport interface SelectProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\">,\n VariantProps<typeof selectTriggerVariants> {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n /**\n * If true, the hint will not be rendered even if provided.\n */\n hideHint?: boolean;\n /**\n * Only needed when the component is a part of a native form.\n * Provide this to include the value in native form submission / FormData.\n */\n name?: string;\n placeholder?: string;\n status?: SelectStatus;\n options: SelectOption[];\n value?: string;\n defaultValue?: string;\n required?: boolean;\n onChange?: (value: string) => void;\n /** Force the menu open (used mainly for docs/Storybook states). */\n showMenu?: boolean;\n}\n\nexport const Select = React.forwardRef<HTMLButtonElement, SelectProps>((props, forwardedRef) => {\n const {\n label = \"Field Label\",\n hint = \"This is a hint text to help user.\",\n hideHint = false,\n name,\n placeholder = \"Placeholder text\",\n size = \"md\",\n status = \"default\",\n disabled,\n options,\n value,\n defaultValue,\n onChange,\n className,\n showMenu,\n required = false,\n ...buttonProps\n } = props;\n\n const isControlled = value !== undefined;\n\n // Radix Select uses empty string to represent “no selection” (placeholder shown).\n // We also use \"\" for backwards compatibility with the previous implementation.\n const controlledValue = value ?? \"\";\n\n const [internalValue, setInternalValue] = React.useState<string>(\n defaultValue ?? \"\"\n );\n const [open, setOpen] = React.useState(false);\n\n const rawValue = isControlled ? controlledValue : internalValue;\n const selectedOption = options.find((opt) => opt.value === rawValue);\n const currentValue = selectedOption ? selectedOption.value : \"\";\n const hasValue = !!selectedOption;\n\n const isOpen = showMenu ?? open;\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (showMenu === undefined) {\n setOpen(nextOpen);\n }\n };\n\n const handleValueChange = (nextValue: string) => {\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n onChange?.(nextValue);\n if (showMenu === undefined) {\n setOpen(false);\n }\n };\n\n const handleClear = () => {\n if (!isControlled) {\n setInternalValue(\"\");\n }\n onChange?.(\"\");\n if (showMenu === undefined) {\n setOpen(false);\n }\n };\n\n return (\n <Field\n label={label}\n hint={hint}\n hideHint={hideHint}\n status={status}\n disabled={disabled}\n >\n <SelectPrimitive.Root\n value={currentValue}\n onValueChange={handleValueChange}\n open={isOpen}\n onOpenChange={handleOpenChange}\n disabled={disabled}\n name={name}\n required={required}\n >\n <SelectPrimitive.Trigger asChild>\n <button\n ref={forwardedRef}\n type=\"button\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n className={cn(\n selectTriggerVariants({ size, status }),\n textVariants({\n size,\n hasValue,\n disabled: !!disabled\n }),\n hasValue ? \"text-primary\" : \"text-secondary\",\n className,\n )}\n data-open={isOpen || undefined}\n {...buttonProps}\n >\n <SelectPrimitive.Value placeholder={placeholder} />\n\n <SelectPrimitive.Icon asChild>\n <span\n className={cn(selectIconVariants({ size, disabled: !!disabled }))}\n >\n <ChevronDownIcon />\n </span>\n </SelectPrimitive.Icon>\n </button>\n </SelectPrimitive.Trigger>\n\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n position=\"popper\"\n align=\"start\"\n sideOffset={4}\n className={cn(\n dropdownSurfaceClass,\n dropdownScrollClass,\n \"min-w-343\"\n )}\n style={{ minWidth: \"var(--radix-select-trigger-width)\" }}\n >\n <SelectPrimitive.Viewport>\n <div className=\"flex flex-col\">\n {hasValue && (\n <div className={cn(\"bg-(--background-neutral)\")}>\n <button\n type=\"button\"\n className={cn(\n selectButtonVariants({ size }),\n \"text-secondary\"\n )}\n onClick={handleClear}\n >\n Clear\n </button>\n </div>\n )}\n\n {options.map((opt) => (\n <SelectPrimitive.Item\n key={opt.value}\n value={opt.value}\n className={cn(\n \"bg-(--background-neutral)\",\n \"data-highlighted:bg-(--background-secondary) data-highlighted:outline-none\",\n \"data-[state=checked]:bg-(--background-secondary)\",\n )}\n >\n <div className={selectButtonVariants({ size })}>\n <SelectPrimitive.ItemText>{opt.label}</SelectPrimitive.ItemText>\n </div>\n </SelectPrimitive.Item>\n ))}\n </div>\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n </Field>\n );\n});\n\nSelect.displayName = \"Select\";\n","import * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { Input } from \"../ui/input\";\nimport { Field } from \"./Field\";\nimport { InputShell } from \"./InputShell\";\nimport { EyeIcon, EyeSlashIcon } from \"@bubo-squared/icons\";\n\nexport type PasswordInputSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type PasswordInputStatus = \"default\" | \"success\" | \"error\";\nexport type PasswordInputVariant = \"icon\" | \"text\";\n\nconst passwordTextVariants = cva(\"truncate\", {\n variants: {\n size: {\n sm: \"paragraph-md\",\n md: \"paragraph-lg\",\n lg: \"subtitle\",\n xl: \"h6-title\",\n },\n disabled: {\n true: \"text-primary-disabled\",\n false: \"text-primary\",\n },\n },\n defaultVariants: {\n size: \"md\",\n disabled: false,\n },\n});\n\nconst iconWrapperVariants = cva(\n \"flex items-center justify-center shrink-0 text-(--icon-primary)\",\n {\n variants: {\n size: {\n sm: \"size-4 [&>svg]:size-4\",\n md: \"size-5 [&>svg]:size-5\",\n lg: \"size-5 [&>svg]:size-5\",\n xl: \"size-6 [&>svg]:size-6\",\n },\n disabled: {\n true: \"text-(--icon-primary-disabled)\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n },\n }\n);\n\nconst actionButtonVariants = cva(\n \"flex items-center justify-center shrink-0 cursor-pointer bg-transparent border-0 p-0 text-left \" +\n \"paragraph-sm text-(--icon-primary) hover:text-(--icon-primary-hover) focus:outline-none \",\n {\n variants: {\n size: {\n sm: \"paragraph-sm\",\n md: \"paragraph-sm\",\n lg: \"paragraph-sm\",\n xl: \"paragraph-md\",\n },\n disabled: {\n true:\n \"cursor-default text-primary-disabled hover:text-primary-disabled\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n },\n }\n);\n\nexport interface PasswordInputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\" | \"disabled\"> {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n /**\n * If true, the hint will not be rendered even if provided.\n */\n hideHint?: boolean;\n /**\n * Only needed when the component is a part of a native form.\n * Provide this to include the value in native form submission / FormData.\n */\n name?: string;\n placeholder?: string;\n status?: PasswordInputStatus;\n size?: PasswordInputSize;\n variant?: PasswordInputVariant;\n leadingIcon?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport const PasswordInput = React.forwardRef<HTMLInputElement, PasswordInputProps>((props, forwardedRef) => {\n const {\n label,\n hint,\n hideHint,\n placeholder = \"••••••••••••\",\n size = \"md\",\n status = \"default\",\n variant = \"icon\",\n disabled,\n className,\n leadingIcon,\n value,\n defaultValue,\n onChange,\n ...inputProps\n } = props;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<string>(\n (defaultValue as string | undefined) ?? \"\"\n );\n const [isRevealed, setIsRevealed] = React.useState<boolean>(false);\n\n const currentValue = (isControlled ? (value as string | undefined) : internalValue) ?? \"\";\n\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n\n const setInputRef = React.useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n\n if (!forwardedRef) return;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node);\n } else {\n (forwardedRef as React.RefObject<HTMLInputElement | null>).current = node;\n }\n },\n [forwardedRef]\n );\n\n const showLeadingIcon = !!leadingIcon;\n\n const handleContainerClick = () => {\n if (disabled) return;\n inputRef.current?.focus();\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(event.target.value);\n }\n onChange?.(event);\n };\n\n return (\n <Field\n label={label}\n hint={hint}\n hideHint={hideHint}\n status={status}\n disabled={disabled}\n >\n <InputShell\n size={size}\n status={status}\n disabled={disabled}\n className={className}\n onClick={handleContainerClick}\n >\n {showLeadingIcon && (\n <span\n className={cn(\n iconWrapperVariants({ size, disabled: !!disabled })\n )}\n >\n {leadingIcon}\n </span>\n )}\n\n <Input\n ref={setInputRef}\n type={isRevealed ? \"text\" : \"password\"}\n disabled={disabled ?? undefined}\n placeholder={placeholder}\n value={isControlled ? value : currentValue}\n defaultValue={isControlled ? undefined : defaultValue}\n onChange={handleChange}\n variant=\"bare\"\n className={cn(passwordTextVariants({ size, disabled: !!disabled }))}\n {...inputProps}\n />\n\n <button\n type=\"button\"\n disabled={!!disabled}\n onClick={() => {\n if (disabled) return;\n setIsRevealed((prev) => !prev);\n inputRef.current?.focus();\n }}\n aria-label={isRevealed ? \"Hide password\" : \"Show password\"}\n className={cn(\n \"cursor-pointer\",\n variant === \"text\"\n ? actionButtonVariants({ size, disabled: !!disabled })\n : iconWrapperVariants({ size, disabled: !!disabled })\n )}\n >\n {variant === \"icon\" ? (\n isRevealed ? <EyeSlashIcon /> : <EyeIcon />\n ) : (\n isRevealed ? \"Hide\" : \"Show\"\n )}\n </button>\n </InputShell>\n </Field>\n );\n});\n\nPasswordInput.displayName = \"PasswordInput\";","import * as React from \"react\";\nimport { CheckIcon, CodeIcon } from \"@bubo-squared/icons\";\nimport * as RPNInput from \"react-phone-number-input\";\nimport flags from \"react-phone-number-input/flags\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/components/ui/command\";\nimport { Input } from \"@/components/ui/input\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\";\nimport { ScrollArea } from \"@/components/ui/scroll-area\";\nimport { cn } from \"@/lib/utils\";\nimport type { TextInputSize, TextInputStatus } from \"./TextInput\";\nimport { Field } from \"./Field\";\nimport { cva } from \"class-variance-authority\";\nimport { dropdownSurfaceClass } from \"@/components/ui/dropdown-styles\";\n\ntype PhoneInputProps = Omit<\n React.ComponentProps<\"input\">,\n \"onChange\" | \"value\" | \"ref\" | \"size\"\n> &\n Omit<RPNInput.Props<typeof RPNInput.default>, \"onChange\"> & {\n onChange?: (value: RPNInput.Value) => void;\n } & {\n className?: string;\n label?: React.ReactNode;\n hint?: React.ReactNode;\n /**\n * If true, the hint will not be rendered even if provided.\n */\n hideHint?: boolean;\n /**\n * Only needed when the component is a part of a native form.\n * Provide this to include the value in native form submission / FormData.\n */\n name?: string;\n placeholder?: string;\n disabled?: boolean;\n status?: TextInputStatus;\n size?: TextInputSize;\n };\n\nconst inputBase = \"h-full rounded-4 border-secondary bg-(--background-primary) hover:border-secondary-hover\";\n\nconst sizeBase = cva(\"flex w-full\", {\n variants: {\n size: {\n sm: \"h-8 [&_button]:gap-2\",\n md: \"h-10 [&_button]:gap-2\",\n lg: \"h-11 [&_button]:gap-2\",\n xl: \"h-14 [&_button]:gap-3\"\n },\n }\n}\n);\n\nconst inputTextVariants = cva(\"\", {\n variants: {\n size: {\n sm: \"paragraph-md\",\n md: \"paragraph-lg\",\n lg: \"subtitle\",\n xl: \"h6-title\",\n },\n disabled: {\n true: \"text-primary-disabled border-secondary-disabled\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nconst dropdownWidthVariants = cva(\"\", {\n variants: {\n size: {\n sm: \"min-w-70\",\n md: \"min-w-72\",\n lg: \"min-w-80\",\n xl: \"min-w-96\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n})\n\nconst wrapperStatusClass: Record<TextInputStatus, string> = {\n default: \"input-default-nested\",\n success: \"input-success-nested\",\n error: \"input-error-nested\"\n};\n\nconst countryOptionVariants = cva(\n \"gap-2 pl-(--space-8) pr-(--space-16) text-left text-primary cursor-pointer hover:bg-(--background-secondary) \" +\n \"data-[selected=true]:bg-(--background-secondary) data-[selected=true]:text-primary\",\n {\n variants: {\n size: {\n sm: \"paragraph-sm py-(--space-4)\",\n md: \"paragraph-md py-(--space-6)\",\n lg: \"paragraph-lg py-(--space-8)\",\n xl: \"subtitle py-(--space-10)\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\nconst PhoneInput: React.ForwardRefExoticComponent<PhoneInputProps> =\n React.forwardRef<React.ComponentRef<typeof RPNInput.default>, PhoneInputProps>(\n (props, forwardedRef) => {\n\n const {\n className, onChange, value,\n label, hint, hideHint, placeholder, size = \"md\",\n disabled = false, status = \"default\", ...rest\n } = props;\n const wrapperRef = React.useRef<HTMLDivElement | null>(null);\n\n const focusNumberInput = React.useCallback(() => {\n const el = wrapperRef.current?.querySelector(\"input\") as HTMLInputElement | null;\n el?.focus();\n }, []);\n\n return (\n <Field\n label={label}\n hint={hint}\n hideHint={hideHint}\n status={status}\n disabled={disabled}\n className={className}\n >\n <div ref={wrapperRef} className={cn(\"w-full\", wrapperStatusClass[status])}>\n <RPNInput.default\n ref={forwardedRef}\n className={cn(\n sizeBase({ size }),\n inputTextVariants({ size, disabled }),\n )}\n flagComponent={FlagComponent}\n countrySelectComponent={(countrySelectProps) => (\n <CountrySelect\n {...countrySelectProps}\n size={size}\n onAfterSelect={() => {\n // Let Popover close + focus management settle first.\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n focusNumberInput();\n });\n });\n }}\n />\n )}\n inputComponent={InputComponent}\n smartCaret={false}\n value={value || undefined}\n international={true}\n countryCallingCodeEditable={false}\n /**\n * Handles the onChange event.\n *\n * react-phone-number-input might trigger the onChange event as undefined\n * when a valid phone number is not entered. To prevent this,\n * the value is coerced to an empty string.\n *\n * @param {E164Number | undefined} value - The entered value\n */\n onChange={(value) => onChange?.(value || (\"\" as RPNInput.Value))}\n placeholder={placeholder}\n disabled={disabled}\n {...rest}\n />\n </div>\n </Field>\n );\n },\n );\nPhoneInput.displayName = \"PhoneInput\";\n\nconst InputComponent = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>((props, ref) => {\n const { className, ...rest } = props;\n\n return (\n <Input\n ref={ref}\n placeholder={rest.placeholder}\n className={cn(inputBase, className)}\n {...rest}\n />\n );\n});\nInputComponent.displayName = \"InputComponent\";\n\ntype CountryEntry = { label: string; value: RPNInput.Country | undefined };\n\ntype CountrySelectProps = {\n disabled?: boolean;\n value: RPNInput.Country;\n options: CountryEntry[];\n onChange: (country: RPNInput.Country) => void;\n size?: TextInputSize;\n onAfterSelect?: () => void;\n};\n\nconst CountrySelect = ({\n disabled,\n value: selectedCountry,\n options: countryList,\n onChange,\n size = \"md\",\n onAfterSelect,\n}: CountrySelectProps) => {\n const scrollAreaRef = React.useRef<HTMLDivElement>(null);\n const [searchValue, setSearchValue] = React.useState(\"\");\n const [isOpen, setIsOpen] = React.useState(false);\n\n return (\n <Popover\n open={isOpen}\n modal\n onOpenChange={(open) => {\n setIsOpen(open);\n if (open) {\n setSearchValue(\"\");\n }\n }}\n >\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n className={cn(inputBase, \"flex gap-1 rounded-4 px-3 focus:z-10 mr-(--space-12) text-primary-disabled hover:text-(--color-primary-hover) focus:text-(--color-primary-focus)\")}\n disabled={disabled}\n >\n <FlagComponent\n country={selectedCountry}\n countryName={selectedCountry}\n />\n <CodeIcon\n className={cn(\n \"-mr-2 size-4 opacity-50 rotate-90\",\n disabled ? \"hidden\" : \"opacity-100\",\n )}\n />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n align=\"start\"\n className={cn(\n \"p-0 **:data-[slot='command-input-wrapper']:border-b-(--border-secondary)\",\n dropdownWidthVariants({ size }),\n dropdownSurfaceClass,\n )}\n >\n <Command className=\"bg-transparent\">\n <CommandInput\n value={searchValue}\n onValueChange={(value) => {\n setSearchValue(value);\n setTimeout(() => {\n if (scrollAreaRef.current) {\n const viewportElement = scrollAreaRef.current.querySelector(\n \"[data-radix-scroll-area-viewport]\",\n );\n if (viewportElement) {\n viewportElement.scrollTop = 0;\n }\n }\n }, 0);\n }}\n placeholder=\"Search country...\"\n />\n <CommandList>\n <ScrollArea ref={scrollAreaRef} className=\"max-h-79\">\n <CommandEmpty>No country found.</CommandEmpty>\n <CommandGroup className=\"p-0\">\n {countryList.map(({ value, label }) =>\n value ? (\n <CountrySelectOption\n key={value}\n country={value}\n countryName={label}\n selectedCountry={selectedCountry}\n onChange={onChange}\n onSelectComplete={() => {\n setIsOpen(false);\n onAfterSelect?.();\n }}\n size={size}\n />\n ) : null,\n )}\n </CommandGroup>\n </ScrollArea>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n};\n\ninterface CountrySelectOptionProps extends RPNInput.FlagProps {\n selectedCountry: RPNInput.Country;\n onChange: (country: RPNInput.Country) => void;\n onSelectComplete: () => void;\n size?: TextInputSize;\n}\n\nconst CountrySelectOption: React.FC<CountrySelectOptionProps> = (props) => {\n\n const {\n country,\n countryName,\n selectedCountry,\n onChange,\n onSelectComplete,\n size = \"md\",\n } = props;\n\n\n const handleSelect = () => {\n onChange(country);\n onSelectComplete();\n };\n\n return (\n <CommandItem\n className={cn(countryOptionVariants({ size }))}\n onSelect={handleSelect}\n >\n <FlagComponent country={country} countryName={countryName} />\n <span className=\"flex-1\">{countryName}</span>\n <span className=\"text-foreground/50\">{`+${RPNInput.getCountryCallingCode(country)}`}</span>\n <CheckIcon\n className={`ml-auto size-4 ${country === selectedCountry ? \"opacity-100\" : \"opacity-0\"}`}\n />\n </CommandItem>\n );\n};\n\nconst FlagComponent = ({ country, countryName }: RPNInput.FlagProps) => {\n const Flag = flags[country];\n\n return (\n <span className=\"flex h-4 w-6 overflow-hidden rounded-2 bg-foreground/20 [&_svg:not([class*='size-'])]:size-full\">\n {Flag && <Flag title={countryName} />}\n </span>\n );\n};\n\nexport { PhoneInput };","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-0 focus-visible:shadow-none aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon } from \"@bubo-squared/icons\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: React.ReactNode\n description?: React.ReactNode\n className?: string\n showCloseButton?: boolean\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50 text-(--color-secondary)\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-(--color-secondary) text-primary flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","import * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\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 ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\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 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\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(\"text-lg leading-none font-semibold\", className)}\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(\"text-muted-foreground text-sm\", className)}\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 { CamelToPascal } from './utility-types';\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n\n/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n\n/**\n * Is empty string\n *\n * @param {unknown} value\n * @returns {boolean} Whether the value is an empty string\n */\nexport const isEmptyString = (value: unknown): boolean => value === '';\n\n/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n};\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }]];\n\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevron-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronRight = createLucideIcon('chevron-right', __iconNode);\n\nexport default ChevronRight;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '1', key: '41hilf' }],\n ['circle', { cx: '19', cy: '12', r: '1', key: '1wjl8i' }],\n ['circle', { cx: '5', cy: '12', r: '1', key: '1pcz8c' }],\n];\n\n/**\n * @component @name Ellipsis\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/ellipsis\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Ellipsis = createLucideIcon('ellipsis', __iconNode);\n\nexport default Ellipsis;\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\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 PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 \" +\n \"data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 \" +\n \"data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 \" +\n \"origin-(--radix-popover-content-transform-origin) rounded-md p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\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 { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","import * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n // Base scrollbar track styling\n \"flex touch-none transition-colors select-none ml-1 pt-1 pb-1\",\n orientation === \"vertical\" &&\n \"h-full w-4\",\n orientation === \"horizontal\" &&\n \"h-4 flex-col\",\n className\n )}\n {...props}\n >\n {/* The draggable thumb/handle that indicates scroll position */}\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"bg-(--background-secondary) relative flex-1 rounded mr-1 w-full ml-1\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","import * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Field } from \"./Field\";\n\nexport type RadioGroupOrientation = \"vertical\" | \"horizontal\";\n\nexport interface RadioGroupOption {\n value: string;\n label: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps\n extends Omit<RadioGroupPrimitive.RadioGroupProps, \"children\" | \"orientation\" | \"onValueChange\"> {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n /** Only needed when the component is a part of a native form. */\n name?: string;\n /** Only needed when the component is a part of a native form. */\n required?: boolean;\n /**\n * If true, the hint will not be rendered even if provided.\n */\n hideHint?: boolean;\n orientation?: RadioGroupOrientation;\n options: RadioGroupOption[];\n disabled?: boolean;\n onValueChange?: (value: string) => void;\n}\n\nexport const RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n RadioGroupProps\n>((props, forwardedRef) => {\n const {\n label,\n hint,\n hideHint,\n options,\n orientation = \"vertical\",\n disabled = false,\n value,\n defaultValue,\n onValueChange,\n className,\n ...rootProps\n } = props;\n const groupId = React.useId();\n const hintId = hint ? `${groupId}-hint` : undefined;\n\n const handleValueChange = (next: string) => {\n onValueChange?.(next);\n };\n\n const isHorizontal = orientation === \"horizontal\";\n\n return (\n <Field\n label={label}\n hint={hint}\n hideHint={hideHint}\n disabled={disabled}\n >\n <RadioGroupPrimitive.Root\n ref={forwardedRef}\n {...rootProps}\n value={value}\n defaultValue={defaultValue}\n onValueChange={handleValueChange}\n disabled={disabled}\n aria-describedby={hintId}\n className={cn(\n \"flex\",\n isHorizontal ? \"flex-row gap-6\" : \"flex-col gap-2\",\n className\n )}\n >\n {options.map((option) => (\n <div key={option.value} className={\"relative inline-flex\"}>\n <RadioGroupPrimitive.Item\n value={option.value}\n disabled={disabled || option.disabled}\n className={cn(\n \"group inline-flex items-center gap-2 outline-none\",\n \"data-disabled:pointer-events-none\",\n (disabled || option.disabled) ? \"cursor-default\" : \"cursor-pointer\",\n )}\n >\n {/* Visual radio */}\n <span\n className={cn(\n \"flex items-center justify-center shrink-0 h-5 w-5 rounded-full border bg-(--background-primary) transition-all\",\n\n // 1: enabled, unchecked, unfocused, unhovered\n \"group-data-[state=unchecked]:border-secondary\",\n\n // 2: enabled, checked, unfocused, unhovered\n \"group-data-[state=checked]:border-brand\",\n\n // 3: enabled, unchecked, hovered, unfocused\n \"group-data-[state=unchecked]:group-hover:border-secondary-hover\",\n\n // 4: enabled, checked, hovered, unfocused\n \"group-data-[state=checked]:group-hover:border-brand-hover\",\n \"group-data-[state=checked]:group-hover:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-secondary)]\",\n\n // 5: enabled, unchecked, focused (override 1/3)\n \"group-data-[state=unchecked]:group-focus-visible:border-secondary-hover\",\n\n // 6: enabled, checked, focused (override 2/4)\n \"group-data-[state=checked]:group-focus-visible:border-brand-focus\",\n \"group-data-[state=checked]:group-focus-visible:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-primary)]\",\n\n // 7: disabled, unchecked (override everything above)\n \"group-[&[data-disabled][data-state=unchecked]]:border-none\",\n \"group-[&[data-disabled][data-state=unchecked]]:bg-(--background-primary-disabled)\",\n\n // 8: disabled, checked (override everything above)\n \"group-[&[data-disabled][data-state=checked]]:border-primary-disabled\",\n \"group-[&[data-disabled][data-state=checked]]:bg-(--background-primary-disabled)\"\n )}\n >\n <span\n className={cn(\n \"h-4 w-4 rounded-full bg-(--background-brand) scale-0 transition-transform\",\n \"group-data-[state=checked]:scale-100\",\n \"group-data-[state=checked]:group-hover:bg-(--background-brand-hover)\",\n \"group-data-[state=checked]:group-focus-visible:bg-(--background-brand-hover)\",\n \"group-[&[data-disabled][data-state=checked]]:bg-(--background-brand-disabled)\",\n \"group-[&[data-disabled][data-state=unchecked]]:scale-0\",\n )}\n />\n </span>\n\n {/* Label */}\n <span\n className={cn(\n \"paragraph-sm text-primary\",\n \"group-data-disabled:text-primary-disabled whitespace-nowrap\"\n )}\n >\n {option.label}\n </span>\n </RadioGroupPrimitive.Item>\n </div>\n ))}\n </RadioGroupPrimitive.Root>\n </Field>\n );\n});\n\nRadioGroup.displayName = \"RadioGroup\";","import * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { SearchIcon } from \"@bubo-squared/icons\";\nimport { Input } from \"../ui/input\";\nimport { InputShell } from \"./InputShell\";\n\nexport type SearchInputSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface SearchInputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"disabled\"> {\n /**\n * Only needed when the component is a part of a native form.\n * Provide this to include the value in native form submission / FormData.\n */\n name?: string;\n placeholder?: string;\n leadingIcon?: React.ReactNode;\n showLeadingIcon?: boolean;\n trailingIcon?: React.ReactNode | null;\n size?: SearchInputSize;\n disabled?: boolean;\n}\n\nconst searchTextVariants = cva(\"truncate\", {\n variants: {\n size: {\n sm: \"paragraph-md\",\n md: \"paragraph-lg\",\n lg: \"subtitle\",\n xl: \"h6-title\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nconst iconWrapperVariants = cva(\"flex items-center justify-center shrink-0 text-(--icon-primary)\", {\n variants: {\n size: {\n sm: \"size-4 [&>svg]:size-4\",\n md: \"size-5 [&>svg]:size-5\",\n lg: \"size-5 [&>svg]:size-5\",\n xl: \"size-6 [&>svg]:size-6\",\n },\n disabled: {\n true: \"text-(--icon-primary-disabled)\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nexport const SearchInput = React.forwardRef<HTMLInputElement, SearchInputProps>((props, forwardedRef) => {\n const {\n placeholder = \"Search...\",\n size = \"md\",\n disabled,\n className,\n leadingIcon,\n showLeadingIcon = true,\n trailingIcon,\n ...inputProps\n } = props;\n\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n\n const setInputRef = React.useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n\n if (!forwardedRef) return;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node);\n } else {\n (forwardedRef as React.RefObject<HTMLInputElement | null>).current = node;\n }\n },\n [forwardedRef]\n );\n\n const handleContainerClick = () => {\n if (disabled) return;\n inputRef.current?.focus();\n };\n\n const showTrailingIcon = !!trailingIcon;\n\n return (\n <div className=\"flex flex-col gap-2 items-start w-full\">\n <div className=\"relative w-full\">\n <InputShell\n size={size}\n status=\"default\"\n disabled={disabled}\n className={className}\n onClick={handleContainerClick}\n >\n {showLeadingIcon && (\n <span className={cn(iconWrapperVariants({ size, disabled: !!disabled }))}>\n {leadingIcon ?? <SearchIcon />}\n </span>\n )}\n\n <Input\n ref={setInputRef}\n type=\"search\"\n placeholder={placeholder}\n disabled={disabled ?? undefined}\n variant=\"bare\"\n className={cn(\n searchTextVariants({ size })\n )}\n {...inputProps}\n />\n\n {showTrailingIcon && (\n <span className={cn(\"cursor-pointer\", iconWrapperVariants({ size, disabled: !!disabled }))}>\n {trailingIcon}\n </span>\n )}\n </InputShell>\n </div>\n </div>\n );\n});\n\nSearchInput.displayName = \"SearchInput\";\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { Tooltip } from \"@/components/Feedback/Tooltip\";\n\nconst wrapperBase = \"flex flex-col gap-2 items-start\";\n\nexport type SliderDisplay = \"flat\" | \"numeric\" | \"tooltip\";\nexport type SliderTooltipPlacement = \"top\" | \"bottom\";\n\nexport type SliderValue = number | [number, number];\n\ntype SliderBaseProps = {\n /**\n * Only needed when the component is a part of a native form.\n * Provide this to include the value in native form submission / FormData.\n *\n * Note: range sliders submit two values under the same name.\n */\n name?: string;\n display?: SliderDisplay;\n tooltipPlacement?: SliderTooltipPlacement;\n /**\n * Custom formatter for tooltip / numeric / accessibility text.\n * Receives the current slider value and should return display content.\n * If provided, it takes precedence over `showPercentage`.\n *\n * Accessibility note: when the formatter returns non-text content,\n * `aria-valuetext` falls back to the default numeric/percentage string.\n */\n tooltipFormatter?: (value: number) => React.ReactNode;\n /**\n * When true (default), values are rendered as percentages (e.g. \"30%\").\n * When false, raw numbers are shown instead.\n * Ignored when `tooltipFormatter` is provided.\n */\n showPercentage?: boolean;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n className?: string;\n};\n\nexport type SliderSingleProps = SliderBaseProps & {\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number) => void;\n};\n\nexport type SliderRangeProps = SliderBaseProps & {\n value?: [number, number];\n defaultValue?: [number, number];\n onValueChange?: (value: [number, number]) => void;\n};\n\nexport type SliderProps = SliderSingleProps | SliderRangeProps;\n\nconst isRangeProps = (props: SliderProps): props is SliderRangeProps => {\n return Array.isArray(props.value) || Array.isArray(props.defaultValue);\n};\n\nconst toArray = (value: SliderValue | undefined): number[] | undefined => {\n if (value === undefined) return undefined;\n return Array.isArray(value) ? value : [value];\n};\n\nexport const Slider = React.forwardRef<HTMLDivElement, SliderProps>((props, forwardedRef) => {\n const {\n name,\n display = \"flat\",\n tooltipPlacement = \"top\",\n tooltipFormatter,\n showPercentage = true,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n value,\n defaultValue,\n className\n } = props;\n\n const isRange = isRangeProps(props);\n const isControlled = value !== undefined;\n\n const expectedLength = isRange ? 2 : 1;\n\n const normalizeArray = React.useCallback(\n (arr: number[] | undefined, fallback: number[]): number[] => {\n if (!arr || arr.length === 0) return fallback;\n if (arr.length === expectedLength) return arr;\n if (arr.length > expectedLength) return arr.slice(0, expectedLength);\n if (arr.length === 1 && expectedLength === 2) {\n return [arr[0], max];\n }\n return fallback;\n },\n [expectedLength, max]\n );\n\n const defaultInternal = React.useMemo(() => {\n const defaultValueArray = toArray(defaultValue);\n if (defaultValueArray) return normalizeArray(defaultValueArray, []);\n if (isRange) return [min, Math.min(min + (max - min) / 4, max)];\n return [min + (max - min) / 3];\n }, [defaultValue, min, max, isRange, normalizeArray]);\n\n const [internalValue, setInternalValue] = React.useState<number[]>(\n () => normalizeArray(isControlled ? toArray(value) : defaultInternal, defaultInternal)\n );\n\n React.useEffect(() => {\n if (isControlled) {\n setInternalValue((current) =>\n normalizeArray(toArray(value), current.length ? current : defaultInternal)\n );\n }\n }, [isControlled, value, normalizeArray, defaultInternal]);\n\n const current = internalValue;\n\n const trackRef = React.useRef<HTMLDivElement | null>(null);\n const [draggingThumbIndex, setDraggingThumbIndex] = React.useState<number | null>(null);\n const [hoveredThumbIndex, setHoveredThumbIndex] = React.useState<number | null>(null);\n const [focusedThumbIndex, setFocusedThumbIndex] = React.useState<number | null>(null);\n\n const clamp = React.useCallback((val: number) => {\n if (val < min) return min;\n if (val > max) return max;\n return val;\n }, [min, max]);\n\n const enforceMinGap = React.useCallback((next: number[], prev: number[]): number[] => {\n if (!isRange || next.length !== 2 || step <= 0) return next;\n\n let [low, high] = next;\n const [prevLow, prevHigh] = prev.length === 2 ? prev : next;\n\n if (low > high) {\n [low, high] = [high, low];\n }\n\n const minGap = step;\n if (high - low < minGap) {\n const lowChanged = low !== prevLow;\n const highChanged = high !== prevHigh;\n\n if (lowChanged && !highChanged) {\n // Lower thumb moved: keep upper fixed, pull lower back\n low = clamp(high - minGap);\n } else if (highChanged && !lowChanged) {\n // Upper thumb moved: keep lower fixed, push upper forward\n high = clamp(low + minGap);\n } else {\n // Fallback: enforce gap relative to lower value\n high = clamp(low + minGap);\n }\n\n // Final safeguard to avoid inverted range after clamping\n if (high - low < minGap) {\n low = clamp(high - minGap);\n }\n }\n\n return [low, high];\n }, [isRange, step, clamp]);\n\n // When min or max change in uncontrolled mode, keep values within the new bounds\n React.useEffect(() => {\n if (!isControlled) {\n setInternalValue((prev) => {\n const clamped = prev.map((v) => clamp(v));\n if (isRange && clamped.length === 2 && step > 0) {\n return enforceMinGap(clamped, prev);\n }\n return clamped;\n });\n }\n }, [isControlled, clamp, enforceMinGap, isRange, step]);\n\n const snap = (val: number) => {\n const range = max - min;\n if (range <= 0 || step <= 0) return clamp(val);\n const stepsFromMin = Math.round((val - min) / step);\n return clamp(min + stepsFromMin * step);\n };\n\n const updateValue = (next: number[]) => {\n let normalized = normalizeArray(next, current);\n\n if (isRange && normalized.length === 2) {\n normalized = enforceMinGap(normalized, current);\n }\n\n if (!isControlled) {\n setInternalValue(normalized);\n }\n\n if (isRangeProps(props)) {\n props.onValueChange?.([normalized[0] ?? min, normalized[1] ?? max]);\n } else {\n props.onValueChange?.(normalized[0] ?? min);\n }\n };\n\n const getSnappedValueFromClientX = (clientX: number, track: HTMLDivElement) => {\n const rect = track.getBoundingClientRect();\n const offsetX = clientX - rect.left;\n const ratio = rect.width === 0 ? 0 : offsetX / rect.width;\n const rawValue = min + ratio * (max - min);\n return snap(rawValue);\n };\n\n const startDrag = (thumbIndex: number, clientX: number) => {\n if (disabled) return;\n const track = trackRef.current;\n if (!track) return;\n\n setDraggingThumbIndex(thumbIndex);\n\n const handlePointerMove = (event: PointerEvent) => {\n if (disabled) return;\n const snapped = getSnappedValueFromClientX(event.clientX, track);\n\n if (isRange && current.length === 2) {\n const [a, b] = current;\n if (thumbIndex === 0) {\n updateValue([snapped, b]);\n } else {\n updateValue([a, snapped]);\n }\n } else {\n updateValue([snapped]);\n }\n };\n\n const handlePointerUp = () => {\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", handlePointerUp);\n window.removeEventListener(\"pointercancel\", handlePointerUp);\n setDraggingThumbIndex(null);\n };\n\n // Apply initial position\n const initialSnapped = getSnappedValueFromClientX(clientX, track);\n if (isRange && current.length === 2) {\n const [a, b] = current;\n if (thumbIndex === 0) {\n updateValue([initialSnapped, b]);\n } else {\n updateValue([a, initialSnapped]);\n }\n } else {\n updateValue([initialSnapped]);\n }\n\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", handlePointerUp);\n window.addEventListener(\"pointercancel\", handlePointerUp);\n };\n\n const handleTrackPointerDown: React.PointerEventHandler<HTMLDivElement> = (event) => {\n if (disabled) return;\n if (event.button !== 0) return;\n const track = trackRef.current;\n if (!track) return;\n\n const snapped = getSnappedValueFromClientX(event.clientX, track);\n\n let thumbIndex = 0;\n if (isRange && current.length === 2) {\n const [a, b] = current;\n const distToA = Math.abs(snapped - a);\n const distToB = Math.abs(snapped - b);\n thumbIndex = distToA <= distToB ? 0 : 1;\n }\n\n event.preventDefault();\n startDrag(thumbIndex, event.clientX);\n };\n\n const handleThumbKeyDown = (\n index: number,\n event: React.KeyboardEvent<HTMLButtonElement>\n ) => {\n if (disabled) return;\n\n const key = event.key;\n let delta = 0;\n\n if (key === \"ArrowRight\" || key === \"ArrowUp\") {\n delta = step;\n } else if (key === \"ArrowLeft\" || key === \"ArrowDown\") {\n delta = -step;\n } else if (key === \"Home\") {\n updateValue(\n current.map((v, i) => (i === index ? min : v))\n );\n event.preventDefault();\n return;\n } else if (key === \"End\") {\n updateValue(\n current.map((v, i) => (i === index ? max : v))\n );\n event.preventDefault();\n return;\n }\n\n if (delta !== 0) {\n const next = current.map((v, i) =>\n i === index ? snap(v + delta) : v\n );\n updateValue(next);\n event.preventDefault();\n }\n };\n\n const [primary, secondary] =\n isRange && current.length === 2\n ? [current[0], current[1]]\n : [current[0], undefined];\n\n const valueToPercent = (val: number | undefined) => {\n if (val === undefined) return 0;\n if (max === min) return 0;\n const clamped = clamp(val);\n return ((clamped - min) / (max - min)) * 100;\n };\n\n const primaryPercent = valueToPercent(primary);\n const secondaryPercent = valueToPercent(secondary);\n\n const showNumeric = display === \"numeric\";\n const showTooltip = display === \"tooltip\";\n\n const isDecimalDomain =\n !Number.isInteger(step) ||\n !Number.isInteger(min) ||\n !Number.isInteger(max);\n\n const formatNumber = (num: number): string => {\n if (!isDecimalDomain) {\n return `${Math.round(num)}`;\n }\n const rounded = Number(num.toFixed(2));\n if (Number.isInteger(rounded)) {\n return `${rounded}`;\n }\n return rounded.toFixed(2);\n };\n\n const formatFallbackText = (val: number | undefined): string => {\n const value = val ?? min;\n if (showPercentage) {\n const percent = valueToPercent(value);\n return `${formatNumber(percent)}%`;\n }\n return formatNumber(value);\n };\n\n const formatDisplayNode = (val: number | undefined): React.ReactNode => {\n const value = val ?? min;\n if (tooltipFormatter) return tooltipFormatter(value);\n return formatFallbackText(value);\n };\n\n const formatAriaValueText = (val: number | undefined): string => {\n const fallback = formatFallbackText(val);\n if (!tooltipFormatter) return fallback;\n\n const node = tooltipFormatter(val ?? min);\n if (typeof node === \"string\") return node;\n if (typeof node === \"number\") return String(node);\n return fallback;\n };\n\n const formatNumericLabel = (): React.ReactNode => {\n if (isRange && secondary !== undefined) {\n // Special-case: numeric + percentage for range should show \"x-y\" (no % symbols)\n if (!tooltipFormatter && showPercentage && display === \"numeric\") {\n const first = formatNumber(valueToPercent(primary));\n const second = formatNumber(valueToPercent(secondary));\n return `${first} - ${second}`;\n }\n return (\n <>\n {formatDisplayNode(primary)} - {formatDisplayNode(secondary)}\n </>\n );\n }\n return formatDisplayNode(primary);\n };\n\n const trackHeight = 32;\n const thumbWidth = 18;\n const thumbRadius = thumbWidth / 2;\n\n const renderHandle = (\n index: number,\n percent: number,\n tooltipContent: React.ReactNode,\n ariaValueText: string\n ) => {\n const val = index === 0 ? primary : secondary;\n const isDragging = draggingThumbIndex === index;\n\n const isTooltipVisible =\n showTooltip &&\n (hoveredThumbIndex === index || draggingThumbIndex === index || focusedThumbIndex === index);\n\n const handle = (\n <button\n key={index}\n type=\"button\"\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={val}\n aria-valuetext={ariaValueText}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n className={cn(\n \"absolute -translate-x-1/2 flex items-center justify-center\",\n \"h-8 w-4.5 rounded-4\",\n \"transition-shadow duration-150\",\n !disabled &&\n (isDragging\n ? \"shadow-[0_0_0_12px_var(--slider-halo-color)]\"\n : \"hover:shadow-[0_0_0_8px_var(--slider-halo-color)]\"),\n disabled\n ? \"bg-(--icon-primary-disabled) cursor-default\"\n : \"bg-(--icon-primary-hover) outline-none focus-visible:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-primary)] cursor-pointer\"\n )}\n style={{\n left: `${percent}%`,\n top: `calc(50% - ${trackHeight / 2}px)`,\n \"--slider-halo-color\": \"color-mix(in srgb, var(--color-brand) 15%, transparent)\",\n } as React.CSSProperties}\n onPointerEnter={() => {\n setHoveredThumbIndex(index);\n }}\n onPointerLeave={() => {\n setHoveredThumbIndex((prev) => (prev === index ? null : prev));\n }}\n onFocus={() => {\n setFocusedThumbIndex(index);\n }}\n onBlur={() => {\n setFocusedThumbIndex((prev) => (prev === index ? null : prev));\n }}\n onPointerDown={(event) => {\n if (disabled) return;\n if (event.button !== 0) return;\n event.preventDefault();\n startDrag(index, event.clientX);\n }}\n onKeyDown={(event) => handleThumbKeyDown(index, event)}\n />\n );\n\n if (!showTooltip) return handle;\n\n return (\n <Tooltip\n title={tooltipContent}\n placement={tooltipPlacement === \"top\" ? \"top\" : \"bottom\"}\n offset={8}\n open={isTooltipVisible}\n disableHoverableContent\n className=\"z-50 pointer-events-none py-2\"\n >\n {handle}\n </Tooltip>\n );\n };\n\n return (\n <div\n className={wrapperBase}\n style={{ marginInline: `${thumbRadius}px` }}\n ref={forwardedRef}\n >\n {name && (\n <>\n <input\n type=\"hidden\"\n name={name}\n value={primary === undefined ? \"\" : String(primary)}\n disabled={disabled}\n />\n {isRange && secondary !== undefined && (\n <input\n type=\"hidden\"\n name={name}\n value={String(secondary)}\n disabled={disabled}\n />\n )}\n </>\n )}\n\n <div className={cn(\"w-full flex flex-col gap-1\", className)}>\n <div className=\"relative w-full\">\n <div\n className={cn(\n \"relative w-full flex items-center rounded-4\",\n disabled\n ? \"bg-(--background-slider-track-disabled) cursor-default\"\n : \"bg-(--background-slider-track) cursor-pointer\"\n )}\n style={{ height: `${trackHeight}px` }}\n ref={trackRef}\n onPointerDown={handleTrackPointerDown}\n >\n <div\n className={cn(\n \"absolute h-full rounded-4\",\n disabled\n ? \"bg-(--background-slider-track-disabled)\"\n : \"bg-(--background-slider-track)\"\n )}\n style={{\n width: `calc(100% + ${thumbWidth}px)`,\n left: `-${thumbRadius}px`,\n }}\n />\n {renderHandle(\n 0,\n primaryPercent,\n formatDisplayNode(primary),\n formatAriaValueText(primary)\n )}\n {isRange && secondary !== undefined &&\n renderHandle(\n 1,\n secondaryPercent,\n formatDisplayNode(secondary),\n formatAriaValueText(secondary)\n )}\n </div>\n </div>\n\n {showNumeric && (\n <p\n className={cn(\n \"paragraph-sm text-primary\",\n disabled && \"text-primary-disabled\"\n )}\n >\n {formatNumericLabel()}\n </p>\n )}\n </div>\n </div>\n );\n});\n\nSlider.displayName = \"Slider\";\n","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"@/lib/utils\";\n\nconst TooltipArrow = TooltipPrimitive.Arrow;\nexport type TooltipPlacement =\n | \"top\"\n | \"topLeft\"\n | \"topRight\"\n | \"bottom\"\n | \"bottomLeft\"\n | \"bottomRight\"\n | \"left\"\n | \"leftTop\"\n | \"leftBottom\"\n | \"right\"\n | \"rightTop\"\n | \"rightBottom\";\n\nexport interface TooltipProps {\n children: React.ReactNode;\n strapline?: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n showArrow?: boolean;\n className?: string;\n placement?: TooltipPlacement;\n offset?: number;\n disableHoverableContent?: boolean;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n delayDuration?: number;\n}\n\nconst REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\");\nconst REACT_MEMO_TYPE = Symbol.for(\"react.memo\");\n\nconst canAcceptRef = (child: React.ReactElement): boolean => {\n const type = child.type as unknown as { $$typeof?: unknown; type?: { $$typeof?: unknown } };\n\n // Native DOM elements always accept refs.\n if (typeof child.type === \"string\") return true;\n\n // React.forwardRef(...) or React.memo(forwardRef(...))\n if (type?.$$typeof === REACT_FORWARD_REF_TYPE) return true;\n if (type?.$$typeof === REACT_MEMO_TYPE && type.type?.$$typeof === REACT_FORWARD_REF_TYPE) {\n return true;\n }\n\n return false;\n};\n\nconst mapPlacementToSideAndAlign = (\n placement: TooltipPlacement\n): {\n side: TooltipPrimitive.TooltipContentProps[\"side\"];\n align: TooltipPrimitive.TooltipContentProps[\"align\"];\n} => {\n switch (placement) {\n case \"top\":\n return { side: \"top\", align: \"center\" };\n case \"topLeft\":\n return { side: \"top\", align: \"start\" };\n case \"topRight\":\n return { side: \"top\", align: \"end\" };\n case \"bottom\":\n return { side: \"bottom\", align: \"center\" };\n case \"bottomLeft\":\n return { side: \"bottom\", align: \"start\" };\n case \"bottomRight\":\n return { side: \"bottom\", align: \"end\" };\n case \"left\":\n return { side: \"left\", align: \"center\" };\n case \"leftTop\":\n return { side: \"left\", align: \"start\" };\n case \"leftBottom\":\n return { side: \"left\", align: \"end\" };\n case \"right\":\n return { side: \"right\", align: \"center\" };\n case \"rightTop\":\n return { side: \"right\", align: \"start\" };\n case \"rightBottom\":\n return { side: \"right\", align: \"end\" };\n default:\n return { side: \"top\", align: \"center\" };\n }\n};\n\nexport const Tooltip: React.FC<TooltipProps> = (props) => {\n const {\n strapline,\n title,\n description,\n showArrow = true,\n className,\n placement = \"top\",\n offset = 10,\n disableHoverableContent,\n open,\n defaultOpen,\n onOpenChange,\n children,\n delayDuration = 200\n } = props;\n\n const trigger = React.isValidElement(children) && canAcceptRef(children)\n ? children\n : (\n <span className=\"inline-flex\" tabIndex={0}>\n {children}\n </span>\n );\n\n const hasStrapline =\n typeof strapline === \"string\" ? strapline.trim() !== \"\" : strapline != null;\n const hasDescription =\n typeof description === \"string\" ? description.trim() !== \"\" : description != null;\n\n const { side, align } = mapPlacementToSideAndAlign(placement);\n\n const tooltipClasses =\n \"group bg-(--background-tooltip) max-w-[calc(100vw-2rem)] shadow-card-md border-none rounded-4 py-1.5 px-2.5 [&>span]:scale-200 \" +\n \"data-[state=delayed-open]:animate-in data-[state=instant-open]:animate-in \" +\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 \" +\n \"data-[state=delayed-open]:fade-in-0 data-[state=instant-open]:fade-in-0 \" +\n \"data-[state=delayed-open]:zoom-in-95 data-[state=instant-open]:zoom-in-95 \" +\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 \" +\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\";\n\n const tooltipArrowClasses =\n \"relative fill-(--background-tooltip) transition-[filter,transform] \" +\n \"group-data-[side=top]:top-[-2px] \" +\n \"group-data-[side=top]:drop-shadow-[0px_1px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] \" +\n \"group-data-[side=bottom]:drop-shadow-[0px_1px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] \" +\n \"group-data-[side=left]:drop-shadow-[0px_2px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] \" +\n \"group-data-[side=right]:drop-shadow-[0px_2px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)]\";\n\n return (\n <TooltipPrimitive.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n disableHoverableContent={disableHoverableContent}\n delayDuration={delayDuration}\n >\n <TooltipPrimitive.Trigger asChild>{trigger}</TooltipPrimitive.Trigger>\n\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n align={align}\n sideOffset={offset}\n className={cn(tooltipClasses, className)}\n >\n {showArrow && <TooltipArrow className={tooltipArrowClasses} />}\n\n <div className=\"grid\">\n {hasStrapline && (\n <span className=\"caption text-secondary\">{strapline}</span>\n )}\n <h4 className=\"paragraph-md text-primary\">{title}</h4>\n {hasDescription && (\n <p className=\"paragraph-sm text-primary\">{description}</p>\n )}\n </div>\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n );\n};\n\nTooltip.displayName = \"Tooltip\";","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport type { TextInputStatus } from \"./TextInput\";\nimport { MaximizeIcon } from \"@bubo-squared/icons\";\nimport { Field } from \"./Field\";\n\nexport type TextAreaType = \"responsive\" | \"character-limit\" | \"plain\";\n\nexport interface TextAreaProps\n extends Omit<\n React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n \"disabled\"\n > {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n /**\n * If true, the hint will not be rendered even if provided.\n */\n hideHint?: boolean;\n /**\n * Only needed when the component is a part of a native form.\n * Provide this to include the value in native form submission / FormData.\n */\n name?: string;\n status?: TextInputStatus;\n /**\n * Visual/behavioural variant.\n * - \"responsive\": regular textarea with resize handle.\n * - \"character-limit\": shows character counter, expects maxLength.\n * - \"plain\": no character limit or resize icon.\n */\n type?: TextAreaType;\n /**\n * Maximum number of characters allowed. Used by \"character-limit\" variant\n * and passed through to the underlying <textarea> as maxLength.\n */\n maxLength?: number;\n /**\n * Optional trailing icon rendered in the top-right corner of the field.\n */\n disabled?: boolean;\n}\n\nexport const TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>((props, forwardedRef) => {\n const {\n label,\n hint,\n hideHint,\n status = \"default\",\n type = \"responsive\",\n maxLength,\n disabled,\n className,\n value,\n defaultValue,\n onChange,\n rows = 3,\n id,\n name,\n ...textareaProps\n } = props;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<string>(\n (defaultValue as string | undefined) ?? \"\"\n );\n\n const currentValue =\n (isControlled ? (value as string | undefined) : internalValue) ?? \"\";\n const hasValue = currentValue.length > 0;\n const currentLength = currentValue.length;\n const effectiveMaxLength = type === \"character-limit\" ? maxLength ?? 144 : undefined;\n\n const showCharacterLimit =\n type === \"character-limit\" && typeof effectiveMaxLength === \"number\";\n\n const textareaRef = React.useRef<HTMLTextAreaElement | null>(null);\n const containerRef = React.useRef<HTMLDivElement | null>(null);\n\n const setTextareaRef = React.useCallback(\n (node: HTMLTextAreaElement | null) => {\n textareaRef.current = node;\n\n if (!forwardedRef) return;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node);\n } else {\n (forwardedRef as React.RefObject<HTMLTextAreaElement | null>).current = node;\n }\n },\n [forwardedRef]\n );\n\n const [height, setHeight] = React.useState<number | undefined>(undefined);\n const [width, setWidth] = React.useState<number | undefined>(undefined);\n const minHeight = 80;\n const minWidth = 240;\n\n const handleContainerClick = () => {\n if (disabled) return;\n textareaRef.current?.focus();\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!isControlled) {\n setInternalValue(event.target.value);\n }\n onChange?.(event);\n };\n\n const generatedId = React.useId();\n const textareaId = id ?? generatedId;\n\n const statusBorderClass: Record<TextInputStatus, string> = {\n default: \"\",\n success: \"border-success\",\n error: \"border-error\",\n };\n\n const statusShellClass: Record<TextInputStatus, string> = {\n default: \"input-default\",\n success: \"input-success\",\n error: \"input-error\",\n };\n\n const counterColorClass = disabled\n ? \"text-primary-disabled\"\n : status === \"success\"\n ? \"text-(--color-success)\"\n : status === \"error\"\n ? \"text-(--color-error)\"\n : \"text-primary\";\n\n const handleResizePointerDown: React.PointerEventHandler<HTMLDivElement> = (\n event\n ) => {\n if (disabled) return;\n if (event.button !== 0) return;\n const container = containerRef.current;\n if (!container) return;\n\n event.preventDefault();\n\n const startX = event.clientX;\n const startY = event.clientY;\n const { height: startHeight, width: startWidth } =\n container.getBoundingClientRect();\n\n const handlePointerMove = (e: PointerEvent) => {\n const deltaX = e.clientX - startX;\n const deltaY = e.clientY - startY;\n\n const nextHeight = Math.max(minHeight, startHeight + deltaY);\n const nextWidth = Math.max(minWidth, startWidth + deltaX);\n\n setHeight(nextHeight);\n setWidth(nextWidth);\n };\n\n const handlePointerUp = () => {\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", handlePointerUp);\n };\n\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", handlePointerUp);\n };\n\n return (\n <Field\n className=\"w-full\"\n label={label}\n hint={hint}\n hideHint={hideHint}\n status={status}\n disabled={disabled}\n >\n <div\n className={cn(\n \"relative flex w-full rounded-4 border bg-(--background-primary) cursor-text\",\n \"border-secondary\",\n statusShellClass[status],\n disabled &&\n \"bg-(--background-primary-disabled) border-secondary-disabled cursor-default\",\n statusBorderClass[status],\n className\n )}\n ref={containerRef}\n style={{\n ...(type === \"responsive\" && height !== undefined ? { height } : {}),\n ...(type === \"responsive\" && width !== undefined ? { width } : {}),\n }}\n onClick={handleContainerClick}\n aria-disabled={disabled || undefined}\n >\n <textarea\n id={textareaId}\n name={name}\n ref={setTextareaRef}\n disabled={disabled ?? undefined}\n value={isControlled ? value : currentValue}\n defaultValue={isControlled ? undefined : defaultValue}\n onChange={handleChange}\n rows={rows}\n maxLength={effectiveMaxLength}\n className={cn(\n \"paragraph-md bg-transparent outline-none w-full h-full resize-none px-2 py-2 pr-8\",\n disabled\n ? \"text-primary-disabled\"\n : hasValue\n ? \"text-primary\"\n : \"text-(--color-secondary)\",\n showCharacterLimit && \"pr-16\"\n )}\n {...textareaProps}\n />\n\n {showCharacterLimit && (\n <span\n className={cn(\n \"absolute bottom-1 right-1 footnote mb-0!\",\n counterColorClass\n )}\n >\n {currentLength}/{effectiveMaxLength}\n </span>\n )}\n\n {type === \"responsive\" && (\n <div\n className={\n \"absolute bottom-1 right-1 h-3 w-3 \" +\n (disabled ? \"cursor-auto\" : \"cursor-nwse-resize\")\n }\n onPointerDown={disabled ? undefined : handleResizePointerDown}\n >\n <span\n className={cn(\n \"absolute bottom-0 right-0 flex h-4 w-4 items-center justify-center text-(--icon-primary)\",\n disabled && \"text-(--icon-primary-disabled)\"\n )}\n >\n <MaximizeIcon />\n </span>\n </div>\n )}\n </div>\n </Field>\n );\n});\n\nTextArea.displayName = \"TextArea\";\n","import * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { Input } from \"../ui/input\";\nimport { Field } from \"./Field\";\nimport { InputShell } from \"./InputShell\";\n\nexport type TextInputSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type TextInputStatus = \"default\" | \"success\" | \"error\";\n\nconst inputTextVariants = cva(\"truncate\", {\n variants: {\n size: {\n sm: \"paragraph-md\",\n md: \"paragraph-lg\",\n lg: \"subtitle\",\n xl: \"h6-title\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nconst iconWrapperVariants = cva(\n \"flex items-center justify-center shrink-0 text-(--icon-primary)\",\n {\n variants: {\n size: {\n sm: \"size-4 [&>svg]:size-4\",\n md: \"size-5 [&>svg]:size-5\",\n lg: \"size-5 [&>svg]:size-5\",\n xl: \"size-6 [&>svg]:size-6\",\n },\n disabled: {\n true: \"text-(--icon-primary-disabled)\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\nexport interface TextInputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"disabled\"> {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n /**\n * If true, the hint will not be rendered even if provided.\n */\n hideHint?: boolean;\n /**\n * Only needed when the component is a part of a native form.\n * Provide this to include the value in native form submission / FormData.\n */\n name?: string;\n placeholder?: string;\n status?: TextInputStatus;\n size?: TextInputSize;\n disabled?: boolean;\n leadingIcon?: React.ReactNode | null;\n trailingIcon?: React.ReactNode | null;\n}\n\nexport const TextInput = React.forwardRef<HTMLInputElement, TextInputProps>((props, forwardedRef) => {\n const {\n label,\n hint,\n hideHint,\n placeholder = \"Placeholder text\",\n size = \"md\",\n status = \"default\",\n disabled = false,\n className,\n leadingIcon,\n trailingIcon,\n value,\n defaultValue,\n onChange,\n ...inputProps\n } = props;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<string>(\n (defaultValue as string | undefined) ?? \"\"\n );\n\n const currentValue = (isControlled ? (value as string | undefined) : internalValue) ?? \"\";\n\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n\n const setInputRef = React.useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n\n if (!forwardedRef) return;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node);\n } else {\n (forwardedRef as React.RefObject<HTMLInputElement | null>).current = node;\n }\n },\n [forwardedRef]\n );\n\n const handleContainerClick = () => {\n if (disabled) return;\n inputRef.current?.focus();\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(event.target.value);\n }\n onChange?.(event);\n };\n const showLeadingIcon = !!leadingIcon;\n const showTrailingIcon = !!trailingIcon;\n\n return (\n <Field\n label={label}\n hint={hint}\n hideHint={hideHint}\n status={status}\n disabled={disabled}\n >\n <InputShell\n size={size}\n status={status}\n disabled={disabled}\n className={className}\n onClick={handleContainerClick}\n >\n {showLeadingIcon && (\n <span\n className={cn(\n iconWrapperVariants({ size, disabled })\n )}\n >\n {leadingIcon}\n </span>\n )}\n\n <Input\n ref={setInputRef}\n type=\"text\"\n disabled={disabled ?? undefined}\n placeholder={placeholder}\n value={isControlled ? value : currentValue}\n defaultValue={isControlled ? undefined : defaultValue}\n onChange={handleChange}\n variant=\"bare\"\n className={cn(\n inputTextVariants({ size }),\n \"bg-transparent outline-none w-full\"\n )}\n {...inputProps}\n />\n\n {showTrailingIcon && (\n <span\n className={cn(\n iconWrapperVariants({ size, disabled: !!disabled })\n )}\n >\n {trailingIcon}\n </span>\n )}\n </InputShell>\n </Field>\n );\n});\n\nTextInput.displayName = \"TextInput\";\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface ToggleProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n /**\n * Only needed when the component is a part of a native form.\n * Provide this to include the checked value in native form submission / FormData.\n */\n name?: string;\n label?: React.ReactNode;\n}\n\nexport const Toggle = React.forwardRef<HTMLInputElement, ToggleProps>((props, forwardedRef) => {\n const { label, className, disabled, ...inputProps } = props;\n\n return (\n <label\n className={cn(\n \"inline-flex items-center gap-2 select-none\",\n disabled ? \"cursor-default\" : \"cursor-pointer\"\n )}\n >\n <span className=\"relative inline-flex items-center\">\n {/* Hidden native checkbox drives checked/disabled/focus state */}\n <input\n ref={forwardedRef}\n type=\"checkbox\"\n disabled={disabled}\n className=\"peer sr-only\"\n {...inputProps}\n />\n\n {/* Slider (track + knob) */}\n <span\n className={cn(\n // Base track\n \"flex items-center w-9 h-5 rounded-24 border bg-(--background-primary) p-(--space-2) transition-all\",\n // Knob position\n \"justify-start peer-checked:justify-end\",\n // 1: enabled, unchecked, unhovered, unfocused\n \"border-secondary\",\n // 3: enabled, unchecked, hovered, unfocused\n \"hover:border-secondary-hover\",\n // 2: enabled, checked, unhovered, unfocused\n \"peer-checked:border-brand\",\n // 4: enabled, checked, hovered, unfocused\n \"peer-checked:hover:border-brand-hover\",\n \"peer-checked:hover:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-secondary)]\",\n // 5: enabled, unchecked, unhovered, focused\n \"peer-focus-visible:border-brand-focus\",\n // 6: enabled, checked, unhovered, focused\n \"peer-checked:peer-focus-visible:bg-(--background-brand-focus)\",\n \"peer-checked:peer-focus-visible:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-primary)]\",\n // 7: disabled, unchecked (override)\n \"peer-disabled:bg-(--background-primary-disabled)\",\n \"peer-disabled:border-none\",\n \"peer-disabled:shadow-none\",\n // 8: disabled, checked (override)\n \"peer-disabled:peer-checked:border-primary-disabled\",\n // Disable hover when disabled\n \"peer-disabled:pointer-events-none\",\n\n // Knob on (enabled)\n \"peer-checked:[&>.knob]:bg-(--background-brand)\",\n // Hover / focus when on\n \"peer-checked:[&>.knob]:hover:bg-(--background-brand-hover)\",\n \"peer-checked:peer-focus-visible:[&>.knob]:bg-(--background-neutral)\",\n // Disabled knob (both off and on use disabled brand token)\n \"peer-disabled:[&>.knob]:bg-(--background-primary-hover)\",\n \"peer-disabled:[&>.knob]:peer-checked:bg-(--background-primary-hover)\",\n className\n )}\n >\n <span\n className={cn(\n \"h-4 w-4 rounded-full transition-colors knob\",\n \"bg-b-100\",\n )}\n />\n </span>\n </span>\n\n {label && (\n <span\n className={cn(\n \"paragraph-sm text-primary\",\n disabled && \"text-primary-disabled\"\n )}\n >\n {label}\n </span>\n )}\n </label>\n );\n});\n\nToggle.displayName = \"Toggle\";\n\n","import * as React from \"react\";\nimport { TextInput, type TextInputProps } from \"./TextInput\";\nimport { cn } from \"@/lib/utils\";\n\nexport type WebsiteInputHierarchy = \"leading\" | \"trailing\";\n\nexport interface WebsiteInputProps\n extends Omit<TextInputProps, \"leadingIcon\" | \"trailingIcon\"> {\n /**\n * Position of the protocol add-on (label + icon).\n * - \"leading\": add-on on the left side of the field\n * - \"trailing\": add-on on the right side of the field\n */\n hierarchy?: WebsiteInputHierarchy;\n /**\n * Text shown inside the protocol add-on (e.g. \"http://\", \"https://\").\n */\n protocolLabel?: string;\n /**\n * Optional icon shown next to the protocol label\".\n */\n icon?: React.ReactNode | null;\n}\n\nexport const WebsiteInput = React.forwardRef<HTMLInputElement, WebsiteInputProps>((props, forwardedRef) => {\n const {\n hierarchy = \"leading\",\n protocolLabel = \"http://\",\n icon,\n size = \"md\",\n disabled,\n className,\n ...rest\n } = props;\n\n const isLeading = hierarchy === \"leading\";\n\n const spanHeightClass =\n size === \"xl\"\n ? \"[&>span]:h-14!\"\n : size === \"lg\"\n ? \"[&>span]:h-11!\"\n : size === \"md\"\n ? \"[&>span]:h-10!\"\n : \"[&>span]:h-8!\";\n\n const baseClass = cn(\n \"[&>span]:w-[unset] hover:bg-[unset]\",\n !disabled &&\n \"[&:not(:focus-within):hover]:shadow-[0_0_0_var(--focus-ring-spread)_var(--background-secondary-hover)]\",\n disabled &&\n \"bg-[unset] hover:shadow-none hover:border-secondary-disabled border-secondary-disabled\",\n spanHeightClass,\n )\n\n const addonTextClass = cn(\n \"flex mb-0!\",\n size === \"xl\" ? \"paragraph-md\" : size === \"sm\" ? \"paragraph-md\" : \"paragraph-sm\",\n disabled\n ? \"text-primary-disabled\"\n : \"text-primary group-hover:text-(--color-primary-hover) group-focus-within:text-(--color-primary-focus)\"\n );\n\n const baseAddonClass = cn(\n \"flex items-center gap-2 px-2 h-full\", // layout + padding\n \"border-secondary\", // divider color\n disabled &&\n \"border-secondary-disabled hover:border-secondary-disabled\",\n isLeading ? \"border-r\" : \"border-l\"\n );\n\n const iconWrapperClass = cn(\n \"flex items-center justify-center shrink-0\",\n size === \"xl\"\n ? \"[&>svg]:w-6 [&>svg]:h-6\"\n : size === \"sm\"\n ? \"[&>svg]:w-4 [&>svg]:h-4\"\n : \"[&>svg]:w-5 [&>svg]:h-5\",\n disabled\n ? \"text-(--icon-primary-disabled)\"\n : \"text-(--icon-primary) group-hover:text-(--icon-primary-hover) group-focus-within:text-(--icon-primary-focus)\"\n );\n\n const leadingAddon = (\n <div className={baseAddonClass}>\n <div className={addonTextClass}>{protocolLabel}</div>\n {icon != null && <span className={iconWrapperClass}>{icon}</span>}\n </div>\n );\n\n const trailingAddon = (\n <div className={baseAddonClass}>\n {icon != null && <span className={iconWrapperClass}>{icon}</span>}\n <div className={addonTextClass}>{protocolLabel}</div>\n </div>\n );\n\n return (\n <TextInput\n ref={forwardedRef}\n {...rest}\n size={size}\n disabled={disabled}\n className={cn(baseClass, className)}\n leadingIcon={isLeading ? leadingAddon : undefined}\n trailingIcon={!isLeading ? trailingAddon : undefined}\n />\n );\n});\n\nWebsiteInput.displayName = \"WebsiteInput\";\n","import * as React from \"react\";\nimport { Popover as ShadPopover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { Button, cn } from \"@/index\";\n\nconst PopoverArrow = PopoverPrimitive.Arrow;\n\ntype PopoverPlacement =\n | \"top\"\n | \"topLeft\"\n | \"topRight\"\n | \"bottom\"\n | \"bottomLeft\"\n | \"bottomRight\"\n | \"left\"\n | \"leftTop\"\n | \"leftBottom\"\n | \"right\"\n | \"rightTop\"\n | \"rightBottom\";\n\ninterface PopoverProps {\n children: React.ReactNode;\n strapline?: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n onOk?: () => void;\n okText?: string;\n onCancel?: () => void;\n cancelText?: string;\n showArrow?: boolean;\n className?: string;\n /**\n * Controls where the popover appears relative to the trigger.\n * Examples: \"bottomRight\", \"top\", \"left\".\n */\n placement?: PopoverPlacement;\n /**\n * Distance between the trigger and the popover.\n * This is forwarded to Radix's `sideOffset`, useful when adjusting\n * the arrow size so the content clears the trigger.\n */\n offset?: number;\n}\n\nexport const Popover: React.FC<PopoverProps> = (props) => {\n\n const {\n strapline, title, description,\n onOk, okText, onCancel, cancelText,\n showArrow = true, className,\n placement = \"bottom\", offset = 10,\n children\n } = props;\n\n const hasStrapline =\n typeof strapline === \"string\" ? strapline.trim() !== \"\" : strapline != null;\n const hasDescription =\n typeof description === \"string\" ? description.trim() !== \"\" : description != null;\n\n const [open, setOpen] = React.useState(false);\n\n const handleCancel = () => {\n onCancel?.();\n setOpen(false);\n };\n\n const handleOk = () => {\n onOk?.();\n setOpen(false);\n };\n\n const popoverClasses =\n \"group bg-(--background-popover) popover w-80 max-w-[calc(100vw-2rem)] shadow-card-md border-none [&>span]:scale-240 rounded-4\";\n\n const popoverArrowClasses =\n \"relative fill-(--background-popover) transition-[filter,transform] \" +\n \"group-data-[side=top]:top-[-2px] \" +\n \"group-data-[side=top]:drop-shadow-[0px_2px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] \" +\n \"group-data-[side=bottom]:drop-shadow-[0px_1px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] \" +\n \"group-data-[side=left]:drop-shadow-[0px_2px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] \" +\n \"group-data-[side=right]:drop-shadow-[0px_2px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)]\";\n\n const mapPlacementToSideAndAlign = (placement: PopoverPlacement): {\n side: PopoverPrimitive.PopoverContentProps[\"side\"];\n align: PopoverPrimitive.PopoverContentProps[\"align\"];\n } => {\n switch (placement) {\n case \"top\":\n return { side: \"top\", align: \"center\" };\n case \"topLeft\":\n return { side: \"top\", align: \"start\" };\n case \"topRight\":\n return { side: \"top\", align: \"end\" };\n case \"bottom\":\n return { side: \"bottom\", align: \"center\" };\n case \"bottomLeft\":\n return { side: \"bottom\", align: \"start\" };\n case \"bottomRight\":\n return { side: \"bottom\", align: \"end\" };\n case \"left\":\n return { side: \"left\", align: \"center\" };\n case \"leftTop\":\n return { side: \"left\", align: \"start\" };\n case \"leftBottom\":\n return { side: \"left\", align: \"end\" };\n case \"right\":\n return { side: \"right\", align: \"center\" };\n case \"rightTop\":\n return { side: \"right\", align: \"start\" };\n case \"rightBottom\":\n return { side: \"right\", align: \"end\" };\n default:\n return { side: \"bottom\", align: \"center\" };\n }\n };\n\n const { side, align } = mapPlacementToSideAndAlign(placement);\n return (\n <ShadPopover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n {children}\n </PopoverTrigger>\n <PopoverContent\n side={side}\n align={align}\n sideOffset={offset}\n className={cn(popoverClasses, className)}\n >\n {showArrow && (\n <PopoverArrow className={popoverArrowClasses} />\n )}\n <div className=\"grid gap-4\">\n <div className=\"space-y-2\">\n {hasStrapline && (\n <span className={\"caption text-secondary\"}>{strapline}</span>\n )}\n <h4 className={\"subtitle-medium text-primary\"}>{title}</h4>\n {hasDescription && (\n <p className={\"paragraph-sm text-primary\"}>{description}</p>\n )}\n </div>\n <div className=\"flex justify-start items-center gap-4 flex-wrap\">\n <Button size={\"sm\"} variant={\"secondary\"} onClick={handleCancel}>{cancelText || \"Cancel\"}</Button>\n <Button size={\"sm\"} variant={\"primary\"} onClick={handleOk}>{okText || \"Ok\"}</Button>\n </div>\n </div>\n </PopoverContent>\n </ShadPopover>\n )\n}\n\nPopover.displayName = \"Popover\";","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nexport interface TooltipProviderProps {\n children: React.ReactNode;\n delayDuration?: number;\n skipDelayDuration?: number;\n disableHoverableContent?: boolean;\n}\n\nexport const TooltipProvider: React.FC<TooltipProviderProps> = (props) => {\n const {\n children,\n delayDuration = 200,\n skipDelayDuration = 300,\n disableHoverableContent = false,\n } = props;\n\n return (\n <TooltipPrimitive.Provider\n delayDuration={delayDuration}\n skipDelayDuration={skipDelayDuration}\n disableHoverableContent={disableHoverableContent}\n >\n {children}\n </TooltipPrimitive.Provider>\n );\n};\n\nTooltipProvider.displayName = \"TooltipProvider\";\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n} from \"@/components/ui/breadcrumb\";\nimport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n} from \"@/components/ui/dropdown-menu\";\n\nconst breadcrumbSeparatorVariants =\n \"size-5 relative bottom-1 [&>svg]:text-secondary group-disabled:text-secondary\";\nconst breadcrumbItemBase = \"h6-title text-secondary hover:text-primary-hover\";\n\nexport interface BreadcrumbsProps extends React.ComponentProps<typeof Breadcrumb> {\n separator?: React.ReactNode;\n /**\n * When true and there are >= 5 breadcrumb items, replaces all items except\n * the first one and the last two with an ellipsis dropdown menu.\n */\n ellipsis?: boolean;\n children: React.ReactNode;\n separatorClassName?: string;\n breadcrumbItemClassName?: string;\n breadcrumbPageClassName?: string;\n}\n\nexport const Breadcrumbs = React.forwardRef<React.ElementRef<typeof Breadcrumb>, BreadcrumbsProps>(\n (props, ref) => {\n const { separator, ellipsis, children, className, ...rest } = props;\n const items = React.Children.toArray(children).filter(Boolean);\n\n const shouldCollapse = Boolean(ellipsis) && items.length >= 5;\n const hiddenItems = shouldCollapse ? items.slice(1, -2) : [];\n\n const displayItems: Array<React.ReactNode | \"__ELLIPSIS__\"> = shouldCollapse\n ? [items[0], \"__ELLIPSIS__\", items[items.length - 2], items[items.length - 1]]\n : items;\n\n return (\n <Breadcrumb ref={ref} className={className} {...rest}>\n <BreadcrumbList>\n {displayItems.map((child, index) => {\n const isEllipsis = child === \"__ELLIPSIS__\";\n const key = isEllipsis\n ? \"__ellipsis\"\n : React.isValidElement(child) && child.key != null\n ? String(child.key)\n : String(index);\n\n const isLast = index === displayItems.length - 1;\n\n return (\n <React.Fragment key={key}>\n {isEllipsis ? (\n <BreadcrumbItem className={cn(breadcrumbItemBase, props.breadcrumbItemClassName)}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className=\"inline-flex size-8 items-center justify-center rounded-4 hover:bg-(--background-secondary) focus-ring-primary text-secondary\"\n aria-label=\"Open breadcrumb menu\"\n >\n <BreadcrumbEllipsis />\n </button>\n </DropdownMenuTrigger>\n\n <DropdownMenuContent\n align=\"start\"\n className=\"bg-(--background-neutral) border-secondary-hover shadow-card-md rounded-4\"\n >\n <DropdownMenuGroup>\n {hiddenItems.map((hidden, hiddenIndex) => {\n const hiddenKey =\n React.isValidElement(hidden) && hidden.key != null\n ? String(hidden.key)\n : `hidden-${hiddenIndex}`;\n\n if (React.isValidElement(hidden)) {\n return (\n <DropdownMenuItem\n key={hiddenKey}\n asChild\n className=\"cursor-pointer paragraph-md text-primary focus:bg-(--background-secondary)\"\n >\n {hidden}\n </DropdownMenuItem>\n );\n }\n\n return (\n <DropdownMenuItem\n key={hiddenKey}\n className=\"cursor-pointer paragraph-md text-primary focus:bg-(--background-secondary)\"\n >\n {String(hidden)}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n </BreadcrumbItem>\n ) : isLast ? (\n <BreadcrumbItem className={cn(breadcrumbItemBase, props.breadcrumbItemClassName)}>\n <BreadcrumbPage\n className={cn(\"h6-title-medium cursor-pointer\", props.breadcrumbPageClassName)}\n >\n {child}\n </BreadcrumbPage>\n </BreadcrumbItem>\n ) : (\n <BreadcrumbItem className={cn(breadcrumbItemBase, props.breadcrumbItemClassName)}>\n {child}\n </BreadcrumbItem>\n )}\n\n {!isLast && (\n <BreadcrumbSeparator className={cn(breadcrumbSeparatorVariants, props.separatorClassName)}>\n {separator}\n </BreadcrumbSeparator>\n )}\n </React.Fragment>\n );\n })}\n </BreadcrumbList>\n </Breadcrumb>\n );\n }\n);\n\nBreadcrumbs.displayName = \"Breadcrumbs\";","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst breadcrumbItemClasses = \"h6-title inline-flex items-center gap-1.5 \" +\n \"text-(--color-secondary) hover:text-(--color-primary-hover) focus-within:text-(--color-secondary-focus) \" +\n \"[&_[aria-current=page]]:font-medium [&_[aria-current=page]]:text-primary\"\n\nconst disabledItemClasses = \"text-primary-disabled cursor-default pointer-events-none\"\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<\"nav\">) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"flex flex-wrap items-center gap-1.5 wrap-break-word sm:gap-2.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbItem({ className, disabled, ...props }: React.ComponentProps<\"li\"> & { disabled?: boolean }) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(breadcrumbItemClasses, disabled && disabledItemClasses, className)}\n style={{ marginBottom: \"7px\" }}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn(\"transition-colors\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-6 [&>svg]:text-(--color-secondary)\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n","import type { FC, SVGProps } from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport type { LogoIconProps } from \"./Logo.types\";\n\nconst LogoIconSvg: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg width=\"89\" height=\"88\" viewBox=\"0 0 89 88\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M83.7156 3.88535C78.5352 -1.29512 70.136 -1.29512 64.9555 3.88535L43.9999 24.8409L43.9995 24.8405L62.3536 6.48637C52.2379 16.5949 35.8584 16.6179 25.7142 6.55523L23.4434 4.28438C18.2629 -0.896082 9.86373 -0.89608 4.68327 4.28438C-0.497191 9.46484 -0.49719 17.864 4.68327 23.0445L6.88526 25.2465C17.0191 35.3875 17.0168 51.8235 6.87859 61.9618L25.2395 43.6008L25.2398 43.601L3.88534 64.9555C-1.29512 70.136 -1.29511 78.5351 3.88535 83.7156C9.06581 88.8961 17.465 88.8961 22.6455 83.7156L25.6458 80.7151L25.6864 80.6747C35.7981 70.6137 52.1313 70.597 62.2636 80.6248L65.7534 84.1146C70.9339 89.2951 79.3331 89.2951 84.5135 84.1146C89.694 78.9342 89.694 70.535 84.5135 65.3545L62.76 43.601L62.7602 43.6009L81.1144 61.9552C70.9806 51.8142 70.9829 35.3782 81.1211 25.24L83.7156 22.6455C88.8961 17.465 88.8961 9.06581 83.7156 3.88535Z\" fill=\"#1685FF\" />\n <path d=\"M44.0667 50.4863C44.1213 50.4317 44.21 50.4317 44.2646 50.4863L48.6465 54.8682C48.6942 54.9158 48.7011 54.9907 48.663 55.0463L44.2812 61.4453C44.2256 61.5265 44.1057 61.5265 44.0501 61.4453L39.6683 55.0463C39.6302 54.9907 39.6371 54.9158 39.6848 54.8682L44.0667 50.4863Z\" fill=\"white\" />\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M44.107 45.3938C44.0536 45.289 43.9013 45.289 43.8479 45.3938C41.8622 49.293 37.8104 51.9638 33.1347 51.9638C26.4991 51.9638 21.1199 46.5846 21.1199 39.9489C21.1199 33.3133 26.4991 27.9341 33.1347 27.9341C37.8104 27.9341 41.8622 30.6049 43.8479 34.5041C43.9013 34.6089 44.0536 34.6089 44.107 34.5041C46.0926 30.6049 50.1445 27.9341 54.8201 27.9341C61.4558 27.9341 66.835 33.3133 66.835 39.9489C66.835 46.5846 61.4558 51.9638 54.8201 51.9638C50.1445 51.9638 46.0926 49.293 44.107 45.3938Z\" fill=\"white\" />\n <path d=\"M60.1113 40.0006C60.1113 43.052 57.6377 45.5256 54.5863 45.5256C51.535 45.5256 49.0614 43.052 49.0614 40.0006C49.0614 36.9493 51.535 34.4757 54.5863 34.4757C57.6377 34.4757 60.1113 36.9493 60.1113 40.0006Z\" fill=\"#1685FF\" />\n <path d=\"M38.8954 40.0006C38.8954 43.052 36.4218 45.5256 33.3705 45.5256C30.3192 45.5256 27.8456 43.052 27.8456 40.0006C27.8456 36.9493 30.3192 34.4757 33.3705 34.4757C36.4218 34.4757 38.8954 36.9493 38.8954 40.0006Z\" fill=\"#1685FF\" />\n </svg>\n);\n\n\nconst logoIconVariants = cva(\n \"relative bg-linear-to-t from-gray-800 to-gray-950 overflow-hidden flex justify-center items-center\",\n {\n variants: {\n size: {\n xs: [\"size-8\", \"rounded-[5px]\"],\n sm: [\"size-14\", \"rounded-8\"],\n md: [\"size-32\", \"rounded-20\"],\n lg: [\"size-64\", \"rounded-40\"],\n xl: [\"size-128\", \"rounded-80\"],\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nconst logoIconSizeClass: Record<NonNullable<LogoIconProps[\"size\"]>, string> = {\n xs: \"size-6\",\n sm: \"size-10\",\n md: \"size-24\",\n lg: \"size-44\",\n xl: \"size-96\",\n};\n\nexport const LogoIcon: FC<LogoIconProps> = ({ className, size = \"md\" }) => {\n return (\n <div className={cn(logoIconVariants({ size }), className)}>\n <LogoIconSvg className={logoIconSizeClass[size]} />\n </div>\n );\n};\n","import type { FC, SVGProps } from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport type { LogoProps } from \"./Logo.types\";\n\nconst LogoIconSvg: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg width=\"89\" height=\"88\" viewBox=\"0 0 89 88\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M83.7156 3.88535C78.5352 -1.29512 70.136 -1.29512 64.9555 3.88535L43.9999 24.8409L43.9995 24.8405L62.3536 6.48637C52.2379 16.5949 35.8584 16.6179 25.7142 6.55523L23.4434 4.28438C18.2629 -0.896082 9.86373 -0.89608 4.68327 4.28438C-0.497191 9.46484 -0.49719 17.864 4.68327 23.0445L6.88526 25.2465C17.0191 35.3875 17.0168 51.8235 6.87859 61.9618L25.2395 43.6008L25.2398 43.601L3.88534 64.9555C-1.29512 70.136 -1.29511 78.5351 3.88535 83.7156C9.06581 88.8961 17.465 88.8961 22.6455 83.7156L25.6458 80.7151L25.6864 80.6747C35.7981 70.6137 52.1313 70.597 62.2636 80.6248L65.7534 84.1146C70.9339 89.2951 79.3331 89.2951 84.5135 84.1146C89.694 78.9342 89.694 70.535 84.5135 65.3545L62.76 43.601L62.7602 43.6009L81.1144 61.9552C70.9806 51.8142 70.9829 35.3782 81.1211 25.24L83.7156 22.6455C88.8961 17.465 88.8961 9.06581 83.7156 3.88535Z\" fill=\"#1685FF\" />\n <path d=\"M44.0667 50.4863C44.1213 50.4317 44.21 50.4317 44.2646 50.4863L48.6465 54.8682C48.6942 54.9158 48.7011 54.9907 48.663 55.0463L44.2812 61.4453C44.2256 61.5265 44.1057 61.5265 44.0501 61.4453L39.6683 55.0463C39.6302 54.9907 39.6371 54.9158 39.6848 54.8682L44.0667 50.4863Z\" fill=\"white\" />\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M44.107 45.3938C44.0536 45.289 43.9013 45.289 43.8479 45.3938C41.8622 49.293 37.8104 51.9638 33.1347 51.9638C26.4991 51.9638 21.1199 46.5846 21.1199 39.9489C21.1199 33.3133 26.4991 27.9341 33.1347 27.9341C37.8104 27.9341 41.8622 30.6049 43.8479 34.5041C43.9013 34.6089 44.0536 34.6089 44.107 34.5041C46.0926 30.6049 50.1445 27.9341 54.8201 27.9341C61.4558 27.9341 66.835 33.3133 66.835 39.9489C66.835 46.5846 61.4558 51.9638 54.8201 51.9638C50.1445 51.9638 46.0926 49.293 44.107 45.3938Z\" fill=\"white\" />\n <path d=\"M60.1113 40.0006C60.1113 43.052 57.6377 45.5256 54.5863 45.5256C51.535 45.5256 49.0614 43.052 49.0614 40.0006C49.0614 36.9493 51.535 34.4757 54.5863 34.4757C57.6377 34.4757 60.1113 36.9493 60.1113 40.0006Z\" fill=\"#1685FF\" />\n <path d=\"M38.8954 40.0006C38.8954 43.052 36.4218 45.5256 33.3705 45.5256C30.3192 45.5256 27.8456 43.052 27.8456 40.0006C27.8456 36.9493 30.3192 34.4757 33.3705 34.4757C36.4218 34.4757 38.8954 36.9493 38.8954 40.0006Z\" fill=\"#1685FF\" />\n </svg>\n);\n\nconst LogoTextSvg: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg width=\"111\" height=\"32\" viewBox=\"0 0 111 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path d=\"M72.7324 20.9658C72.7324 14.4559 77.4246 9.9751 83.8922 9.9751C90.3598 9.9751 95.052 14.4559 95.052 20.9658C95.052 27.4757 90.3598 31.9565 83.8922 31.9565C77.4246 31.9565 72.7324 27.4757 72.7324 20.9658ZM77.8896 20.9658C77.8896 24.7703 80.3414 27.3489 83.8922 27.3489C87.4431 27.3489 89.8948 24.7703 89.8948 20.9658C89.8948 17.1613 87.4431 14.5827 83.8922 14.5827C80.3414 14.5827 77.8896 17.1613 77.8896 20.9658Z\" fill=\"currentColor\" />\n <path d=\"M53.4056 31.4503H48.6289V0H53.7861V13.6116C55.1388 11.2866 57.9287 9.89163 61.0991 9.89163C67.0595 9.89163 70.6949 14.5415 70.6949 21.136C70.6949 27.5613 66.7636 31.9998 60.761 31.9998C57.6328 31.9998 54.9697 30.6049 53.7438 28.1954L53.4056 31.4503ZM53.8284 20.9246C53.8284 24.6868 56.1533 27.2654 59.7042 27.2654C63.3395 27.2654 65.4954 24.6445 65.4954 20.9246C65.4954 17.2047 63.3395 14.5415 59.7042 14.5415C56.1533 14.5415 53.8284 17.1624 53.8284 20.9246Z\" fill=\"currentColor\" />\n <path d=\"M38.9929 10.5681H44.15V31.4504H39.3733L38.9929 28.6605C37.7247 30.6473 35.0193 32 32.2293 32C27.4103 32 24.5781 28.745 24.5781 23.6301V10.5681H29.7353V21.8124C29.7353 25.786 31.2994 27.3923 34.1739 27.3923C37.4288 27.3923 38.9929 25.4901 38.9929 21.5165V10.5681Z\" fill=\"currentColor\" />\n <path d=\"M4.77673 31.4503H0V0H5.15718V13.6116C6.50988 11.2866 9.29983 9.89163 12.4702 9.89163C18.4306 9.89163 22.066 14.5415 22.066 21.136C22.066 27.5613 18.1347 31.9998 12.132 31.9998C9.00392 31.9998 6.34079 30.6049 5.1149 28.1954L4.77673 31.4503ZM5.19945 20.9246C5.19945 24.6868 7.52441 27.2654 11.0752 27.2654C14.7106 27.2654 16.8665 24.6445 16.8665 20.9246C16.8665 17.2047 14.7106 14.5415 11.0752 14.5415C7.52441 14.5415 5.19945 17.1624 5.19945 20.9246Z\" fill=\"currentColor\" />\n <path d=\"M103.555 0.5C107.084 0.5 109.944 3.36029 109.944 6.88867C109.944 10.4172 107.084 13.2773 103.555 13.2773C100.027 13.2772 97.1667 10.4171 97.1667 6.88867C97.1669 3.36036 100.027 0.500118 103.555 0.5Z\" stroke=\"currentColor\" />\n <path d=\"M105.778 9.98355L101.687 10.0001V9.00978L103.578 7.33457C104.19 6.79817 104.445 6.41856 104.445 5.91517C104.445 5.29625 104.159 4.96616 103.647 4.96616C103.113 4.96616 102.803 5.35402 102.803 6.03896H101.556C101.556 4.66908 102.377 3.77783 103.64 3.77783C104.949 3.77783 105.731 4.52879 105.731 5.83265C105.731 6.66613 105.259 7.34282 104.546 7.97825L103.686 8.74571H105.778V9.98355Z\" fill=\"currentColor\" />\n </svg>\n);\n\nconst logoWrapperVariants = cva(\"inline-flex\", {\n variants: {\n variant: {\n inline: [\"w-44\", \"h-12\", \"justify-start\", \"items-center\", \"gap-4\"],\n inlineSmall: [\"w-32\", \"h-9\", \"justify-start\", \"items-center\", \"gap-3\"],\n multiline: [\"w-36\", \"flex-col\", \"justify-start\", \"items-start\", \"gap-2\"],\n },\n },\n defaultVariants: {\n variant: \"inline\",\n },\n});\n\nconst logoIconSizeVariants = cva(\"\", {\n variants: {\n variant: {\n inline: \"size-12\",\n inlineSmall: \"size-9\",\n multiline: \"size-12\",\n },\n },\n defaultVariants: {\n variant: \"inline\",\n },\n});\n\nconst logoTextSizeVariants = cva(\"\", {\n variants: {\n variant: {\n inline: \"h-8 w-27.5\",\n inlineSmall: \"h-6 w-20.75\",\n multiline: \"h-8 w-27.75\",\n },\n },\n defaultVariants: {\n variant: \"inline\",\n },\n});\n\nexport const Logo: FC<LogoProps> = ({ className, textColor, variant = \"inline\" }) => {\n const textColorClass =\n textColor === \"light\"\n ? \"text-(--color-b-white)\"\n : textColor === \"dark\"\n ? \"text-(--color-b-black)\"\n : \"text-primary\";\n\n return (\n <div className={cn(logoWrapperVariants({ variant }), className)}>\n <LogoIconSvg className={logoIconSizeVariants({ variant })} />\n <LogoTextSvg className={cn(logoTextSizeVariants({ variant }), textColorClass)} />\n </div>\n );\n};\n"],"mappings":"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","names":["jsx","cva","jsx","cva","React","Slot","cva","jsx","cva","Slot","cva","jsx","React","Slot","cva","jsx","jsxs","cva","Slot","React","jsx","jsxs","React","jsx","jsxs","React","Slot","cva","jsx","jsxs","cva","Slot","jsx","jsx","React","Slot","cva","jsx","jsxs","cva","Slot","React","cva","jsx","cva","cva","jsx","cva","React","jsx","jsxs","jsx","jsxs","React","React","jsx","jsxs","jsx","React","cva","jsx","jsxs","cva","React","Slot","cva","jsx","jsxs","React","cva","jsx","jsxs","jsx","jsxs","React","CheckIcon","jsx","jsxs","CheckIcon","React","cva","React","cva","jsx","cva","React","jsx","jsx","jsxs","cva","React","cva","ChevronDownIcon","jsx","jsxs","cva","ChevronDownIcon","React","cva","jsx","jsxs","cva","iconWrapperVariants","React","CheckIcon","Slot","cva","jsx","buttonVariants","cva","Button","Slot","Icon","forwardRef","forwardRef","createElement","Icon","__iconNode","jsx","jsxs","jsx","jsxs","jsxs","jsx","jsx","jsx","jsx","jsxs","cva","jsx","jsxs","cva","inputTextVariants","value","Button","CheckIcon","React","jsx","jsxs","React","cva","SearchIcon","jsx","jsxs","cva","iconWrapperVariants","SearchIcon","React","React","jsx","jsxs","Fragment","jsx","jsxs","current","value","React","jsx","jsxs","React","cva","jsx","jsxs","inputTextVariants","cva","iconWrapperVariants","React","jsx","jsxs","React","jsx","jsxs","React","PopoverPrimitive","jsx","jsxs","Popover","mapPlacementToSideAndAlign","placement","TooltipPrimitive","jsx","React","Slot","jsx","jsxs","jsx","jsxs","jsx","jsxs","cva","jsx","jsxs","cva","cva","jsx","jsxs","LogoIconSvg","cva"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Buttons/Button.tsx","../src/lib/utils.tsx","../src/lib/ripple.ts","../src/components/ui/button.tsx","../src/components/Buttons/ButtonGroup.tsx","../src/components/Buttons/IconButton.tsx","../src/components/Buttons/IconButtonGroup.tsx","../src/components/Buttons/LinkButton.tsx","../src/components/Buttons/MessageButton.tsx","../src/components/Content/Accordion.tsx","../src/components/Content/Avatar.tsx","../src/components/Content/Typography.tsx","../src/components/Content/Badge.tsx","../src/components/Content/BadgeDigit.tsx","../src/components/Content/BadgeDot.tsx","../src/components/Content/BadgeStatus.tsx","../src/components/Content/Divider.tsx","../src/components/Content/Progress.tsx","../src/components/Inputs/Field.tsx","../src/components/Content/StatusAvatar.tsx","../src/components/Content/Tag.tsx","../src/components/Content/Menu.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/dropdown-styles.ts","../src/components/Inputs/Checkbox.tsx","../src/components/Inputs/Autocomplete.tsx","../src/components/Inputs/InputShell.tsx","../src/components/ui/input.tsx","../src/components/Inputs/Select.tsx","../src/components/Inputs/PasswordInput.tsx","../src/components/Inputs/PhoneInput.tsx","../src/components/ui/command.tsx","../src/components/ui/dialog.tsx","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/shared/src/utils.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/defaultAttributes.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/Icon.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/createLucideIcon.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/icons/chevron-right.ts","../../../node_modules/.pnpm/lucide-react@0.555.0_react@19.2.3/node_modules/lucide-react/src/icons/ellipsis.ts","../src/components/ui/popover.tsx","../src/components/ui/scroll-area.tsx","../src/components/Inputs/RadioGroup.tsx","../src/components/Inputs/SearchInput.tsx","../src/components/Inputs/Slider.tsx","../src/components/Feedback/Tooltip.tsx","../src/components/Inputs/TextArea.tsx","../src/components/Inputs/TextInput.tsx","../src/components/Inputs/Toggle.tsx","../src/components/Inputs/WebsiteInput.tsx","../src/components/Feedback/Popover.tsx","../src/components/Feedback/TooltipProvider.tsx","../src/components/Navigation/Breadcrumbs.tsx","../src/components/ui/breadcrumb.tsx","../src/components/Logo/LogoIcon.tsx","../src/components/Logo/Logo.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { spawnRipple } from '@/lib/ripple';\nimport { Button as BaseButton } from '@/components/ui/button';\n\nconst buttonVariants = cva(\n 'relative inline-flex items-center justify-center whitespace-nowrap rounded-8 transition-colors ' +\n 'disabled:pointer-events-none overflow-hidden cursor-pointer',\n {\n variants: {\n variant: {\n primary:\n [\n // BaseButton applies some defaults, but our classes will override via cn() in BaseButton\n 'btn-primary',\n 'focus-ring-primary',\n ],\n secondary:\n [\n 'btn-secondary',\n 'focus-ring-secondary',\n ],\n ghost:\n [\n 'btn-ghost',\n ],\n outline:\n [\n 'btn-outline',\n 'focus-ring-outline',\n ],\n destructive:\n [\n 'btn-destructive',\n 'focus-ring-error',\n ],\n 'destructive-outline':\n [\n 'btn-destructive-outline',\n 'focus-ring-error-outline',\n ],\n },\n size: {\n sm: ['px-3', 'py-1', 'gap-2', 'h-9'],\n md: ['px-4', 'py-2', 'gap-2', 'h-10'],\n lg: ['px-4', 'py-2', 'gap-2.5', 'h-11'],\n xl: ['px-4', 'py-2', 'gap-3', 'h-12'],\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n }\n)\n\nconst buttonIconVariants = cva('relative', {\n variants: {\n size: {\n sm: ['size-5', '*:size-5'],\n md: ['size-5', '*:size-5'],\n lg: ['size-6', '*:size-6'],\n xl: ['size-7', '*:size-7'],\n },\n }\n})\n\nconst buttonTextVariants = cva('flex text-center justify-center font-normal', {\n variants: {\n size: {\n sm: ['paragraph-sm'],\n md: ['paragraph-md'],\n lg: ['paragraph-lg'],\n xl: ['subtitle'],\n }\n }\n})\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean,\n trailingIcon?: React.ReactNode,\n leadingIcon?: React.ReactNode,\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (props, ref) => {\n\n const {\n className, variant, size = \"md\",\n asChild = false, children,\n trailingIcon, leadingIcon,\n onPointerDown,\n ...rest\n } = props;\n\n const handlePointerDown: React.PointerEventHandler<HTMLButtonElement> = (e) => {\n onPointerDown?.(e);\n if (e.defaultPrevented) return;\n if ((rest as React.ButtonHTMLAttributes<HTMLButtonElement>).disabled) return;\n if (e.button !== 0 || !e.isPrimary) return;\n\n spawnRipple(e.currentTarget as unknown as HTMLElement, e.clientX, e.clientY);\n }\n\n return (\n <BaseButton\n asChild={asChild}\n ref={ref}\n className={cn(buttonVariants({ variant, size, className }))}\n onPointerDown={handlePointerDown}\n {...rest}\n >\n {leadingIcon && <div className={cn(buttonIconVariants({ size }))}>{leadingIcon}</div>}\n <div className={cn(buttonTextVariants({ size }))}>{children}</div>\n {trailingIcon && <div className={cn(buttonIconVariants({ size }))}>{trailingIcon}</div>}\n </BaseButton>\n )\n }\n)\n\nButton.displayName = 'Button'\n\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n\nexport const InputContainerTemplate = ({ children }: { children: React.ReactNode }) => {\n\n return (\n <div style={{ width: \"350px\" }}>\n {children}\n </div>\n )\n}\n\n","export type RippleOptions = {\n durationMs?: number;\n};\n\nfunction removeExistingRipples(target: HTMLElement) {\n const ripples = target.querySelectorAll(\".bubo-ripple\");\n ripples.forEach((node) => node.remove());\n}\n\nexport function spawnRipple(\n target: HTMLElement,\n clientX: number,\n clientY: number,\n options: RippleOptions = {}\n) {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") return;\n\n const rect = target.getBoundingClientRect();\n const x = clientX - rect.left;\n const y = clientY - rect.top;\n\n const radius = Math.sqrt(rect.width * rect.width + rect.height * rect.height);\n const size = radius * 2;\n\n removeExistingRipples(target);\n\n const ripple = document.createElement(\"span\");\n ripple.className = \"bubo-ripple\";\n ripple.style.width = `${size}px`;\n ripple.style.height = `${size}px`;\n ripple.style.left = `${x - radius}px`;\n ripple.style.top = `${y - radius}px`;\n\n const durationMs = options.durationMs ?? 500;\n ripple.style.animationDuration = `${durationMs}ms`;\n\n const cleanup = () => {\n ripple.removeEventListener(\"animationend\", cleanup);\n ripple.remove();\n };\n\n ripple.addEventListener(\"animationend\", cleanup);\n target.appendChild(ripple);\n\n // Fallback cleanup in case animationend doesn't fire.\n window.setTimeout(cleanup, durationMs + 50);\n}\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-0 focus-visible:shadow-none aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n // className={cn(buttonVariants({ variant, size, className }))}\n className={className}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nconst buttonGroupVariants = cva(\n 'flex items-center justify-center gap-4 pt-4 w-fit',\n {\n variants: {\n orientation: {\n vertical: ['flex-col'],\n horizontal: ['flex-row'],\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n }\n)\n\nexport interface ButtonGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: 'horizontal' | 'vertical';\n}\n\nexport const ButtonGroup: React.FC<ButtonGroupProps> = (props) => {\n const {\n orientation = 'horizontal',\n className,\n children,\n ...rest\n } = props;\n\n return (\n <div\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...rest}\n >\n {children}\n </div>\n )\n}\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\nimport { spawnRipple } from '@/lib/ripple';\nimport { Button as BaseButton } from '@/components/ui/button';\n\nconst iconButtonVariants = cva(\n 'relative inline-flex items-center justify-center whitespace-nowrap transition-colors ' +\n 'disabled:pointer-events-none overflow-hidden p-2 cursor-pointer',\n {\n variants: {\n variant: {\n primary:\n [\n 'btn-primary',\n 'focus-ring-primary',\n ],\n secondary:\n [\n 'btn-secondary',\n 'focus-ring-secondary',\n ],\n ghost:\n [\n 'btn-ghost',\n ],\n outline:\n [\n 'btn-outline',\n 'focus-ring-outline',\n ],\n destructive:\n [\n 'btn-destructive-outline',\n 'focus-ring-error-outline',\n ],\n },\n size: {\n sm: ['[&>.buttonIcon>svg]:size-5'],\n md: ['[&>.buttonIcon>svg]:size-6'],\n lg: ['[&>.buttonIcon>svg]:size-8'],\n xl: ['[&>.buttonIcon>svg]:size-9'],\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof iconButtonVariants> {\n asChild?: boolean,\n icon: React.ReactNode,\n /** If true, renders a circular IconButton. */\n round?: boolean,\n}\n\nexport const IconButton = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (props, ref) => {\n\n const {\n className, variant, size,\n asChild = false, icon,\n round = false,\n onPointerDown,\n ...rest } = props;\n\n const handlePointerDown: React.PointerEventHandler<HTMLButtonElement> = (e) => {\n onPointerDown?.(e);\n if (e.defaultPrevented) return;\n if ((rest as React.ButtonHTMLAttributes<HTMLButtonElement>).disabled) return;\n if (e.button !== 0 || !e.isPrimary) return;\n\n spawnRipple(e.currentTarget as unknown as HTMLElement, e.clientX, e.clientY);\n }\n\n return (\n <BaseButton\n className={cn(iconButtonVariants({ variant, size }), round ? 'rounded-full' : 'rounded-8', className)}\n ref={ref}\n asChild={asChild}\n onPointerDown={handlePointerDown}\n {...rest}\n >\n <div className={\"buttonIcon flex items-center justify-center\"}>{icon}</div>\n </BaseButton>\n )\n }\n)\n\nIconButton.displayName = 'IconButton'\n\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { IconButton } from \"@/components/Buttons/IconButton\";\nimport type { ButtonProps as IconButtonProps } from \"@/components/Buttons/IconButton\";\nimport { cva } from \"class-variance-authority\";\n\ntype IconButtonSize = IconButtonProps[\"size\"];\n\nexport interface IconButtonGroupItem {\n\ticon: React.ReactNode;\n\tariaLabel: string;\n\tonClick?: React.MouseEventHandler<HTMLButtonElement>;\n\tdisabled?: boolean;\n}\n\nexport interface IconButtonGroupProps\n\textends React.HTMLAttributes<HTMLDivElement> {\n\t/** Icons to render as a segmented group. */\n\titems: IconButtonGroupItem[];\n\t/** Shared size for all icon buttons. */\n\tsize?: IconButtonSize;\n}\n\nconst IconGroupLinesClass = \"inline-flex items-center justify-center gap-0 \" +\n\t\"[&>button]:outline-none! [&>button]:rounded-none \" +\n\t\"[&>button:focus]:shadow-none [&>button:focus]:bg-(--border-secondary) \" +\n\t\"[&>button:first-child]:rounded-l-4 [&>button:last-child]:rounded-r-4\";\n\n\nconst IconGroupSizeVariants = cva(\"\", {\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"[&>button]:px-1.5\",\n\t\t\tmd: \"[&>button]:px-2\",\n\t\t\tlg: \"[&>button]:px-2\",\n\t\t\txl: \"[&>button]:px-3\",\n\t\t}\n\t},\n\tdefaultVariants: {\n\t\tsize: \"sm\"\n\t}\n})\n\nexport const IconButtonGroup: React.FC<IconButtonGroupProps> = (props) => {\n\tconst { items, size = \"sm\", className, ...rest } = props;\n\n\tif (!items || items.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\tIconGroupLinesClass,\n\t\t\t\tIconGroupSizeVariants({ size }),\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...rest}\n\t\t>\n\t\t\t{items.map((item, index) => (\n\t\t\t\t<IconButton\n\t\t\t\t\tkey={index}\n\t\t\t\t\tvariant={\"secondary\"}\n\t\t\t\t\tsize={size}\n\t\t\t\t\ticon={item.icon}\n\t\t\t\t\taria-label={item.ariaLabel}\n\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"rounded-none border-1 border-secondary text-primary \",\n\t\t\t\t\t\tindex === 0 && \"rounded-l-6\",\n\t\t\t\t\t\tindex === items.length - 1 && \"rounded-r-6\",\n\t\t\t\t\t\tindex > 0 && \"-ml-px\"\n\t\t\t\t\t)}\n\t\t\t\t\tonClick={item.onClick}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</div>\n\t);\n};\n\nIconButtonGroup.displayName = \"IconButtonGroup\";\n\n","import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '@/lib/utils';\n\nconst linkButtonVariants = cva(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-4 transition-colors ' +\n 'disabled:pointer-events-none overflow-hidden gap-2 cursor-pointer',\n {\n variants: {\n variant: {\n primary:\n ['btn-link-primary'],\n secondary:\n ['btn-link-secondary'],\n destructive:\n ['btn-link-destructive'],\n },\n size: {\n sm: ['py-2', 'px-1'],\n md: ['py-2.5', 'px-2'],\n lg: ['py-2.5', 'px-2'],\n xl: ['py-3', 'px-3'],\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n }\n)\n\nconst linkButtonIconVariants = cva('relative', {\n variants: {\n size: {\n sm: ['size-5', '*:size-5'],\n md: ['size-5', '*:size-5'],\n lg: ['size-6', '*:size-6'],\n xl: ['size-6', '*:size-6'],\n },\n }\n})\n\nconst linkButtonTextVariants = cva('inline-flex items-center text-center font-medium', {\n variants: {\n size: {\n sm: ['text-sm', 'leading-5'],\n md: ['text-sm', 'leading-5',],\n lg: ['text-base', 'leading-6'],\n xl: ['text-base', 'leading-6'],\n }\n }\n})\n\nexport interface LinkButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof linkButtonVariants> {\n asChild?: boolean,\n trailingIcon?: React.ReactNode,\n leadingIcon?: React.ReactNode,\n}\n\nexport const LinkButton = React.forwardRef<HTMLButtonElement, LinkButtonProps>(\n (props, ref) => {\n\n const {\n className, variant, size = \"sm\",\n asChild = false, children,\n trailingIcon, leadingIcon,\n ...rest } = props;\n\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n className={cn(linkButtonVariants({ variant, size, className }))}\n ref={ref}\n {...rest}\n >\n {leadingIcon && <div className={cn(linkButtonIconVariants({ size }))}>{leadingIcon}</div>}\n <div className={cn(linkButtonTextVariants({ size }))}>{children}</div>\n {trailingIcon && <div className={cn(linkButtonIconVariants({ size }))}>{trailingIcon}</div>}\n </Comp>\n )\n }\n)\n\nLinkButton.displayName = 'LinkButton'\n\n","import * as React from \"react\";\n\ntype Status = \"idle\" | \"loading\" | \"success\" | \"error\";\n\ntype MessageButtonProps = Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"onClick\"\n> & {\n onClick?: () => void | Promise<void>;\n idleLabel?: string;\n loadingLabel?: string;\n successLabel?: string;\n errorLabel?: string;\n feedbackDuration?: number;\n icon?: React.ReactNode;\n};\n\nexport const MessageButton: React.FC<MessageButtonProps> = (props) => {\n\n const {\n onClick,\n idleLabel = \"Save\",\n loadingLabel = \"Saving…\",\n successLabel = \"Saved!\",\n errorLabel = \"Error\",\n feedbackDuration = 1500,\n className = \"\",\n ...buttonProps\n } = props;\n\n const [status, setStatus] = React.useState<Status>(\"idle\");\n\n const handleClick = async (_event: React.MouseEvent<HTMLButtonElement>) => {\n if (status === \"loading\") return;\n\n setStatus(\"loading\");\n\n try {\n await Promise.resolve(onClick?.()); // handles sync or async onClick\n setStatus(\"success\");\n } catch (err) {\n console.error(err);\n setStatus(\"error\");\n } finally {\n if (feedbackDuration > 0) {\n window.setTimeout(() => setStatus(\"idle\"), feedbackDuration);\n }\n }\n };\n\n const label =\n status === \"loading\"\n ? loadingLabel\n : status === \"success\"\n ? successLabel\n : status === \"error\"\n ? errorLabel\n : idleLabel;\n\n // tweak these classes to match your design system / tokens\n const statusClasses =\n status === \"success\"\n ? \"btn-msg-success\"\n : status === \"error\"\n ? \"btn-destructive\"\n : \"btn-outline focus-ring-outline\";\n\n return (\n <button\n type=\"button\"\n {...buttonProps}\n onClick={handleClick}\n className={`inline-flex items-center justify-center rounded-4 px-1.5 py-1 gap-1 text-sm transition-colors cursor-pointer ${statusClasses} ${className}`}\n >\n {props.icon && <div className={\"size-5 *:size-5 relative\"}>{props.icon}</div>}\n <div className={\"text-center text-xl font-normal leading-7\"}>{label}</div>\n </button>\n );\n}\n\nMessageButton.displayName = \"MessageButton\";","import * as React from \"react\";\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { ChevronDownIcon } from \"@bubo-squared/icons\";\nimport { cn } from \"@/lib/utils\";\n\ntype RootProps = React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Root>;\ntype RootSingleProps = Extract<RootProps, { type: \"single\" }>;\n\nexport type AccordionProps = Omit<\n RootSingleProps,\n \"type\"| \"collapsible\" | \"children\" | \"title\"\n> & {\n title: React.ReactNode;\n expandIcon?: React.ReactNode;\n defaultOpen?: boolean;\n children: React.ReactNode;\n bordered?: boolean;\n};\n\nexport type AccordionRef = React.ComponentRef<typeof AccordionPrimitive.Root>;\n\nexport const Accordion = React.forwardRef<AccordionRef, AccordionProps>(\n (props, ref) => {\n const {\n title, expandIcon, children,\n className, defaultOpen = false,\n bordered = false,\n ...rootProps\n } = props;\n\n const {\n value,\n defaultValue,\n onValueChange,\n ...restRootProps\n } = rootProps;\n\n const resolvedDefaultValue =\n value === undefined && defaultValue === undefined && defaultOpen\n ? \"item\"\n : defaultValue;\n\n return (\n <AccordionPrimitive.Root\n ref={ref}\n type=\"single\"\n collapsible\n className={cn(\"w-full\", className)}\n value={value}\n defaultValue={resolvedDefaultValue}\n onValueChange={onValueChange}\n {...restRootProps}\n >\n <AccordionPrimitive.Item\n value=\"item\"\n className={cn(bordered ? \"border rounded-4\" : \"border-b\", \"border-secondary px-4\")}\n >\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n className={cn(\n \"flex w-full items-center justify-between gap-2 py-3 text-left\",\n \"paragraph-md text-primary\",\n \"[&[data-state=open]_.accordion-icon]:rotate-180\",\n \"disabled:cursor-not-allowed disabled:text-primary-disabled cursor-pointer\"\n )}\n >\n <span className=\"flex-1\">{title}</span>\n <span className=\"accordion-icon inline-flex shrink-0 transition-transform duration-200 [&>svg]:size-5\">\n {expandIcon ?? <ChevronDownIcon />}\n </span>\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n\n <AccordionPrimitive.Content className=\"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden\">\n <div className=\"pb-3\">{children}</div>\n </AccordionPrimitive.Content>\n </AccordionPrimitive.Item>\n </AccordionPrimitive.Root>\n );\n }\n);\n\nAccordion.displayName = \"Accordion\";\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { UserIcon } from \"@bubo-squared/icons\";\n\ntype AvatarVariant = \"initials\" | \"icon\" | \"image\";\n\nconst avatarVariants = cva(\n \"relative inline-flex items-center justify-center rounded-full border-secondary border-1 bg-(--background-primary) text-primary overflow-hidden \" +\n \"hover:border-(--focus-secondary) focus-visible:border-(--focus-primary) focus-visible:outline-none\",\n {\n variants: {\n size: {\n \"20\": \"min-w-5 min-h-5 hover:border-2 focus-visible:border-2\",\n \"24\": \"min-w-6 min-h-6 hover:border-2 focus-visible:border-2\",\n \"32\": \"min-w-8 min-h-8 hover:border-2 focus-visible:border-2\",\n \"40\": \"min-w-10 min-h-10 hover:border-2 focus-visible:border-2\",\n \"48\": \"min-w-12 min-h-12 hover:border-2 focus-visible:border-2\",\n \"56\": \"min-w-14 min-h-14 hover:border-4 focus-visible:border-4\",\n \"64\": \"min-w-16 min-h-16 hover:border-4 focus-visible:border-4\",\n },\n },\n defaultVariants: {\n size: \"32\",\n },\n }\n);\n\nconst avatarInitialsVariants = cva(\n \"flex items-center justify-center text-primary leading-none \",\n {\n variants: {\n size: {\n \"20\": \"footnote-xs-medium\",\n \"24\": \"footnote-medium\",\n \"32\": \"paragraph-sm font-medium\",\n \"40\": \"paragraph-md font-medium\",\n \"48\": \"paragraph-lg font-medium\",\n \"56\": \"subtitle font-medium\",\n \"64\": \"h6-title font-medium\",\n },\n },\n defaultVariants: {\n size: \"32\",\n },\n }\n);\n\nconst avatarIconVariants = cva(\n \"flex items-center justify-center text-(--icon-primary)\",\n {\n variants: {\n size: {\n \"20\": \"min-h-3 min-w-3 [&>svg]:size-3\",\n \"24\": \"min-h-3.5 min-w-3.5 [&>svg]:size-3.5\",\n \"32\": \"min-h-4 min-w-4 [&>svg]:size-4\",\n \"40\": \"min-h-5 min-w-5 [&>svg]:size-5\",\n \"48\": \"min-h-6 min-w-6 [&>svg]:size-6\",\n \"56\": \"min-h-7 min-w-7 [&>svg]:size-7\",\n \"64\": \"min-h-8 min-w-8 [&>svg]:size-8\",\n },\n },\n defaultVariants: {\n size: \"32\",\n },\n }\n);\n\nexport interface AvatarProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof avatarVariants> {\n /**\n * Visual variant: initials, icon or image.\n */\n variant?: AvatarVariant;\n /**\n * Text rendered when variant=\"initial\".\n */\n initials?: string;\n /**\n * Image source when variant=\"image\".\n */\n src?: string;\n /**\n * Accessible alt text for the image.\n */\n alt?: string;\n /**\n * Render as child via Radix Slot. When true, Avatar will not render a native\n * button element, but instead pass props to the child component.\n */\n asChild?: boolean;\n}\n\nexport const Avatar = React.forwardRef<HTMLButtonElement, AvatarProps>(\n (props, ref) => {\n const {\n asChild = false,\n variant = \"initials\",\n size = \"32\",\n initials = \"RA\",\n src,\n alt,\n className,\n ...rest\n } = props;\n\n const Comp = asChild ? Slot : \"button\";\n\n const hasImage = variant === \"image\" && typeof src === \"string\" && src.length > 0;\n\n return (\n <Comp\n ref={ref}\n className={cn(avatarVariants({ size }), className)}\n {...rest}\n >\n {hasImage ? (\n <img\n src={src}\n alt={alt}\n className=\"w-full h-full object-cover\"\n />\n ) : null}\n\n {!hasImage && variant === \"initials\" && (\n <span className={cn(avatarInitialsVariants({ size }), \"relative bottom-px\")}>{initials}</span>\n )}\n\n {!hasImage && variant === \"icon\" && (\n <span className={cn(avatarIconVariants({ size }))}>\n <UserIcon />\n </span>\n )}\n </Comp>\n );\n }\n);\n\nAvatar.displayName = \"Avatar\";\n\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport const typographyVariants: readonly string[] = [\n \"h1-intro\",\n \"h2-intro\",\n \"h3-intro\",\n \"h1-title\",\n \"h2-title\",\n \"h3-title\",\n \"h4-title\",\n \"h5-title\",\n \"h6-title\",\n \"subtitle\",\n \"paragraph-lg\",\n \"paragraph-md\",\n \"paragraph-sm\",\n \"caption\",\n \"footnote\",\n \"footnote-xs\",\n] as const;\n\nexport type TypographyVariant = (typeof typographyVariants)[number];\n\nexport type TypographyWeight = \"regular\" | \"medium\" | \"bold\";\n\ntype ElementType = React.ElementType;\n\ntype PropsOf<T extends ElementType> = React.ComponentPropsWithoutRef<T>;\n\ntype TypographyOwnProps = {\n variant?: TypographyVariant;\n weight?: TypographyWeight;\n useMargin?: boolean;\n className?: string;\n children?: React.ReactNode;\n};\n\nexport type TypographyProps<T extends ElementType = \"span\"> = TypographyOwnProps & {\n as?: T;\n} & Omit<PropsOf<T>, keyof TypographyOwnProps | \"as\">;\n\nconst mbCapableBaseClasses = new Set([\n \"h1-intro\",\n \"h2-intro\",\n \"h3-intro\",\n \"h1-title\",\n \"h2-title\",\n \"h3-title\",\n \"h4-title\",\n \"h5-title\",\n \"h6-title\",\n \"subtitle\",\n \"paragraph-lg\",\n \"paragraph-md\",\n \"paragraph-sm\",\n \"caption\",\n \"footnote\",\n \"footnote-xs\",\n]);\n\nconst getMbClassName = (variant: TypographyVariant) => {\n if (!mbCapableBaseClasses.has(variant)) return null;\n return `${variant}-mb`;\n};\n\nexport const Typography = <T extends ElementType = \"span\">(\n props: TypographyProps<T>\n) => {\n const {\n as = \"span\",\n variant = \"paragraph-md\",\n weight = \"regular\",\n useMargin = false,\n className,\n children,\n ...rest\n } = props;\n\n const Comp = (as ?? \"span\") as ElementType;\n const mbClassName = useMargin ? getMbClassName(variant) : null;\n const weightClassName =\n weight === \"regular\" ? null : `${variant}-${weight}`;\n\n return (\n <Comp\n className={cn(\"text-primary\", variant, weightClassName, mbClassName, className)}\n {...(rest as PropsOf<T>)}\n >\n {children}\n </Comp>\n );\n};\n\n(Typography as unknown as { displayName?: string }).displayName = \"Typography\";\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-4 leading-none whitespace-nowrap gap-1 py-0\",\n {\n variants: {\n size: {\n sm: \"px-1.5 paragraph-sm\",\n md: \"px-2 paragraph-md\",\n lg: \"px-2 subtitle\",\n xl: \"px-2.5 h6-title\",\n },\n variant: {\n primary:\n \"bg-(--background-secondary) text-primary\",\n secondary:\n \"bg-(--background-primary) border-1 border-primary text-primary\",\n active:\n \"bg-ac-lilac text-badge-black\",\n informal:\n \"bg-ac-neon-blue text-badge-black\",\n success:\n \"bg-ac-neon-green text-badge-black\",\n warning:\n \"bg-ac-light-orange text-badge-black\",\n error:\n \"bg-s-error-300 text-badge-black\",\n disabled:\n \"bg-(--background-primary-disabled) border-1 border-primary-disabled text-primary-disabled\",\n \"double-default\":\n \"bg-(--background-secondary) text-primary\",\n \"double-current\":\n \"bg-color-ac-lilac text-badge-black\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n variant: \"primary\",\n },\n }\n);\n\ntype BadgeVariant =\n | \"primary\"\n | \"secondary\"\n | \"informal\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"disabled\"\n | \"active\"\n\ntype BadgeSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {\n asChild?: boolean;\n label: React.ReactNode;\n value?: React.ReactNode;\n className?: string;\n size?: BadgeSize;\n variant?: BadgeVariant;\n}\n\nexport const Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\n (props, ref) => {\n const {\n asChild = false,\n label,\n value,\n size = \"sm\",\n variant = \"primary\",\n className,\n ...rest\n } = props;\n\n const Comp = asChild ? Slot : \"div\";\n\n const hasValue =\n typeof value === \"string\" ? value.trim() !== \"\" : value != null;\n\n return (\n <Comp\n ref={ref}\n className={cn(badgeVariants({ size, variant }), className)}\n {...rest}\n >\n {hasValue ? (\n <>\n <span className=\"font-normal\">{label}</span>\n <span className=\"font-normal\">:</span>\n <span className=\"font-medium\">{value}</span>\n </>\n ) : (\n <span className=\"font-normal\">{label}</span>\n )}\n </Comp>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nconst badgeDigitVariants = cva(\n \"inline-flex items-center justify-center leading-none whitespace-nowrap text-(--color-b-white)\",\n {\n variants: {\n size: {\n sm: \"px-[6px] rounded-2 caption-medium\",\n md: \"px-2 py-[2px] rounded-4 paragraph-sm-medium\",\n },\n variant: {\n primary:\n \"bg-(--background-brand)\",\n secondary:\n \"bg-(--background-primary) border-1 border-secondary text-primary\",\n informal:\n \"bg-(--background-informal)\",\n success:\n \"bg-(--background-success)\",\n warning:\n \"bg-(--background-warning)\",\n error:\n \"bg-(--background-error)\",\n disabled:\n \"bg-(--background-primary) border-1 border-primary-disabled text-primary-disabled\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n variant: \"primary\",\n },\n }\n);\n\nexport type BadgeDigitSize = \"sm\" | \"md\";\n\nexport type BadgeDigitVariant =\n | \"primary\"\n | \"secondary\"\n | \"informal\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"disabled\";\n\nexport interface BadgeDigitProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeDigitVariants> {\n /** The numeric value to display inside the badge. */\n value: string | number;\n size?: BadgeDigitSize;\n variant?: BadgeDigitVariant;\n}\n\nexport const BadgeDigit = React.forwardRef<HTMLDivElement, BadgeDigitProps>(\n (props, ref) => {\n const {\n value,\n size = \"sm\",\n variant = \"primary\",\n className,\n ...rest\n } = props;\n\n return (\n <div\n ref={ref}\n className={cn(badgeDigitVariants({ size, variant }), className)}\n {...rest}\n >\n {String(value)}\n </div>\n );\n }\n);\n\nBadgeDigit.displayName = \"BadgeDigit\";\n\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nconst badgeDotVariants = cva(\"rounded-12 size-3\", {\n variants: {\n status: {\n disabled: \"bg-(--color-primary)\",\n informal: \"bg-(--background-informal)\",\n \"success/online\": \"bg-(--background-success)\",\n warning: \"bg-(--background-warning)\",\n error: \"bg-(--background-error)\",\n },\n },\n defaultVariants: {\n status: \"disabled\",\n },\n});\n\nexport interface BadgeDotProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeDotVariants> {\n className?: string;\n}\n\nexport const BadgeDot: React.FC<BadgeDotProps> = ({ status, className }) => {\n return <div className={cn(badgeDotVariants({ status }), className)} />;\n};\n\nBadgeDot.displayName = \"BadgeDot\";\n\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface BadgeStatusProps\n extends React.HTMLAttributes<HTMLDivElement> {\n label: React.ReactNode;\n active?: boolean;\n dotClassName?: string;\n}\n\nexport const BadgeStatus = React.forwardRef<HTMLDivElement, BadgeStatusProps>(\n (props, ref) => {\n const {\n label,\n active = true,\n className,\n dotClassName,\n ...rest\n } = props;\n\n const textClasses = active\n ? \"caption-medium text-primary\"\n : \"caption-medium text-primary-disabled\";\n\n const dotClasses = active\n ? \"bg-(--background-informal)\"\n : \"bg-(--background-primary)\";\n\n return (\n <div\n ref={ref}\n className={cn(\"inline-flex items-center gap-2\", className)}\n {...rest}\n >\n <span\n className={cn(\n \"shrink-0 size-3 rounded-full\",\n dotClasses,\n dotClassName\n )}\n />\n <span className={textClasses}>{label}</span>\n </div>\n );\n }\n);\n\nBadgeStatus.displayName = \"BadgeStatus\";\n\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"@/components/Buttons/Button\";\nimport type { ButtonProps as PrimaryButtonProps } from \"@/components/Buttons/Button\";\nimport { IconButton } from \"@/components/Buttons/IconButton\";\nimport type { ButtonProps as IconButtonProps } from \"@/components/Buttons/IconButton\";\nimport { IconButtonGroup } from \"@/components/Buttons/IconButtonGroup\";\nimport type {\n IconButtonGroupItem,\n IconButtonGroupProps,\n} from \"@/components/Buttons/IconButtonGroup\";\nimport { TargetIcon } from \"@bubo-squared/icons\";\n\nexport type DividerType =\n | \"default\"\n | \"text\"\n | \"iconButton\"\n | \"iconButtonGroup\"\n | \"button\";\n\nexport type DividerOrientation = \"horizontal\" | \"vertical\";\n\ntype SimpleDividerType = Exclude<\n DividerType,\n \"button\" | \"iconButton\" | \"iconButtonGroup\"\n>;\n\ninterface BaseDividerProps extends React.HTMLAttributes<HTMLDivElement> {\n type?: SimpleDividerType;\n /** Orientation of the divider lines. Defaults to \"horizontal\". */\n orientation?: DividerOrientation;\n /** Size variant for the divider (affects line thickness + center element sizing). */\n size?: DividerSize;\n /** Label shown for text variant (e.g. \"OR\"). */\n label?: React.ReactNode;\n}\n\ntype ButtonVariant = PrimaryButtonProps[\"variant\"];\ntype IconButtonVariant = IconButtonProps[\"variant\"];\ntype DividerSize = IconButtonGroupProps[\"size\"];\n\ninterface IconLinesDividerProps extends React.HTMLAttributes<HTMLDivElement> {\n type: \"iconButton\";\n /** Orientation of the divider lines. Defaults to \"horizontal\". */\n orientation?: DividerOrientation;\n /** Size variant for the divider (affects line thickness + icon button size). */\n size?: DividerSize;\n /** Icon rendered between the lines. */\n icon: React.ReactNode;\n /** Variant for the icon button between the lines. */\n iconButtonVariant?: IconButtonVariant;\n /** Click handler for the icon button between the lines. */\n onIconClick: React.MouseEventHandler<HTMLButtonElement>;\n /** Accessible label for the icon button. Falls back to \"More options\". */\n ariaLabel?: string;\n}\n\ninterface ButtonLinesDividerProps extends React.HTMLAttributes<HTMLDivElement> {\n type: \"button\";\n /** Orientation of the divider lines. Defaults to \"horizontal\". */\n orientation?: DividerOrientation;\n /** Size variant for the divider (affects line thickness + button size). */\n size?: DividerSize;\n /** Text inside the button between the lines. */\n buttonLabel: React.ReactNode;\n /** onClick handler for the button between the lines. */\n onButtonClick: React.MouseEventHandler<HTMLButtonElement>;\n /** Variant for the button between the lines. */\n buttonVariant?: ButtonVariant;\n}\n\ninterface IconGroupLinesDividerProps\n extends React.HTMLAttributes<HTMLDivElement> {\n type: \"iconButtonGroup\";\n /** Orientation of the divider lines. Defaults to \"horizontal\". */\n orientation?: DividerOrientation;\n /** Size variant for the divider (affects line thickness + icon group size). */\n size?: DividerSize;\n /** Items rendered as a segmented icon group between the lines. */\n iconGroupItems: IconButtonGroupItem[];\n}\n\nexport type DividerProps =\n | BaseDividerProps\n | IconLinesDividerProps\n | IconGroupLinesDividerProps\n | ButtonLinesDividerProps;\n\nconst gapBySize: Record<NonNullable<DividerSize>, string> = {\n sm: \"gap-2\",\n md: \"gap-3\",\n lg: \"gap-4\",\n xl: \"gap-4\",\n};\n\nconst textClassBySize: Record<NonNullable<DividerSize>, string> = {\n sm: \"footnote\",\n md: \"caption\",\n lg: \"paragraph-sm\",\n xl: \"paragraph-md\",\n};\n\nexport const Divider: React.FC<DividerProps> = (props) => {\n const resolvedType: DividerType = props.type ?? \"default\";\n const resolvedSize = (props.size ?? \"sm\") as NonNullable<DividerSize>;\n const resolvedOrientation: DividerOrientation = props.orientation ?? \"horizontal\";\n\n const ariaOrientation = resolvedOrientation === \"vertical\" ? \"vertical\" : \"horizontal\";\n\n const showCenter = resolvedType !== \"default\";\n\n const lineClass =\n resolvedOrientation === \"vertical\"\n ? \"flex-1 bg-(--border-secondary) w-px\"\n : \"flex-1 bg-(--border-secondary) h-px\";\n\n const wrapperClass = cn(\n \"flex items-center\",\n resolvedOrientation === \"vertical\" ? \"h-full flex-col\" : \"w-full\",\n showCenter ? gapBySize[resolvedSize] : \"gap-0\",\n props.className\n );\n\n if (props.type === undefined || props.type === \"default\") {\n const {\n type: _type,\n orientation: _orientation,\n size: _size,\n label: _label,\n className: _className,\n ...divProps\n } = props;\n return (\n <div\n className={wrapperClass}\n role=\"separator\"\n aria-orientation={ariaOrientation}\n {...divProps}\n >\n <div className={lineClass} />\n </div>\n );\n }\n\n if (props.type === \"text\") {\n const {\n type: _type,\n orientation: _orientation,\n size: _size,\n label,\n className: _className,\n ...divProps\n } = props;\n const textLabel = label ?? \"OR\";\n\n return (\n <div\n className={wrapperClass}\n role=\"separator\"\n aria-orientation={ariaOrientation}\n {...divProps}\n >\n <div className={lineClass} />\n <span\n className={cn(\n textClassBySize[resolvedSize],\n \"text-(--color-secondary)\"\n )}\n >\n {textLabel}\n </span>\n <div className={lineClass} />\n </div>\n );\n }\n\n if (props.type === \"iconButton\") {\n const {\n type: _type,\n orientation: _orientation,\n size: _size,\n icon,\n iconButtonVariant,\n onIconClick,\n ariaLabel,\n className: _className,\n ...divProps\n } = props;\n\n return (\n <div\n className={wrapperClass}\n role=\"separator\"\n aria-orientation={ariaOrientation}\n {...divProps}\n >\n <div className={lineClass} />\n <IconButton\n variant={iconButtonVariant ?? \"secondary\"}\n size={resolvedSize}\n aria-label={ariaLabel ?? \"More options\"}\n icon={icon ?? <TargetIcon />}\n onClick={onIconClick}\n />\n <div className={lineClass} />\n </div>\n );\n }\n\n if (props.type === \"iconButtonGroup\") {\n const {\n type: _type,\n orientation: _orientation,\n size: _size,\n iconGroupItems,\n className: _className,\n ...divProps\n } = props;\n\n return (\n <div\n className={wrapperClass}\n role=\"separator\"\n aria-orientation={ariaOrientation}\n {...divProps}\n >\n <div className={lineClass} />\n <IconButtonGroup\n className={resolvedOrientation === \"vertical\" ? \"flex-col\" : \"flex-row\"}\n items={iconGroupItems} size={resolvedSize}\n />\n <div className={lineClass} />\n </div>\n );\n }\n\n if (props.type === \"button\") {\n const {\n type: _type,\n orientation: _orientation,\n size: _size,\n buttonLabel,\n onButtonClick,\n buttonVariant,\n className: _className,\n ...divProps\n } = props;\n\n return (\n <div\n className={wrapperClass}\n role=\"separator\"\n aria-orientation={ariaOrientation}\n {...divProps}\n >\n <div className={lineClass} />\n <Button\n variant={buttonVariant ?? \"secondary\"}\n size={resolvedSize}\n onClick={onButtonClick}\n >\n {buttonLabel}\n </Button>\n <div className={lineClass} />\n </div>\n );\n }\n\n return null;\n};\n\nDivider.displayName = \"Divider\";\n\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { Field } from \"../Inputs/Field\";\n\nexport type ProgressSize = \"sm\" | \"md\" | \"lg\";\nexport type ProgressStatus = \"default\" | \"success\" | \"error\";\n\nexport interface ProgressProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** Current value, from 0 to 100. */\n value: number;\n /** Optional label shown above the bar. */\n label?: React.ReactNode;\n /** Optional hint text shown below the bar. */\n hint?: React.ReactNode;\n /** Optional accessible label for the progressbar (string-only). */\n ariaLabel?: string;\n /** If true, the progress percentage label will not be rendered. */\n hideProgressLabel?: boolean;\n /** If true, the bar turns status color only when value reaches 100%. */\n useStatusColorOnComplete?: boolean;\n /** If true, the hint will not be rendered even if provided. */\n hideHint?: boolean;\n status?: ProgressStatus;\n disabled?: boolean;\n /** Visual height of the bar. */\n size?: ProgressSize;\n}\n\nconst sizeToBarClasses: Record<ProgressSize, string> = {\n lg: \"h-4 rounded-16\",\n md: \"h-2 rounded-8\",\n sm: \"h-1 rounded-4\",\n};\n\nexport const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n (props, ref) => {\n const {\n value,\n label,\n hint,\n ariaLabel,\n hideProgressLabel = false,\n useStatusColorOnComplete = false,\n hideHint,\n size = \"lg\",\n status = \"default\",\n disabled,\n className,\n ...rest\n } = props;\n\n const clamped = Number.isFinite(value)\n ? Math.min(100, Math.max(0, value))\n : 0;\n\n const percentageLabel = `${Math.round(clamped)}%`;\n const resolvedAriaLabel =\n ariaLabel ?? (typeof label === \"string\" ? label : undefined);\n\n const barHeightClasses = sizeToBarClasses[size];\n\n return (\n <Field\n label={label}\n labelRight={\n !hideProgressLabel && label != null ? (\n <span className=\"footnote text-(--color-secondary)\">\n {percentageLabel}\n </span>\n ) : undefined\n }\n hint={hint}\n hideHint={hideHint}\n status={status}\n disabled={disabled}\n className={cn(\"w-full\", className)}\n >\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuenow={clamped}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={resolvedAriaLabel}\n {...rest}\n >\n <div\n className={cn(\n \"w-full bg-(--chart-mono) overflow-hidden\",\n barHeightClasses,\n disabled && \"opacity-50\"\n )}\n >\n <div\n className={cn(\n \"h-full\",\n useStatusColorOnComplete && clamped === 100\n ? (status === \"success\" ? \"bg-(--color-success)\" : status === \"error\" ? \"bg-(--color-error)\" : \"bg-(--chart-brand)\")\n : \"bg-(--chart-brand)\",\n size === \"lg\" ? \"rounded-4\" : size === \"md\" ? \"rounded-2\" : \"rounded-[1px]\"\n )}\n style={{ width: `${clamped}%` }}\n />\n </div>\n </div>\n </Field>\n );\n }\n);\n \nProgress.displayName = \"Progress\";\n\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type FieldStatus = \"default\" | \"success\" | \"error\";\n\nexport interface FieldProps {\n label?: React.ReactNode;\n labelRight?: React.ReactNode;\n hint?: React.ReactNode;\n /**\n * If true, the hint will not be rendered even if provided.\n */\n hideHint?: boolean;\n status?: FieldStatus;\n disabled?: boolean | null;\n className?: string;\n children: React.ReactNode;\n}\n\nconst fieldBase = \"flex flex-col gap-2 items-start\";\n\nexport const Field: React.FC<FieldProps> = (props) => {\n const {\n label,\n labelRight = false,\n hint,\n hideHint,\n status = \"default\",\n disabled,\n className,\n children,\n } = props;\n\n const hasLabel = label != null;\n const hasHint = hint != null;\n\n const fieldId = React.useId();\n const labelId = hasLabel ? `${fieldId}-label` : undefined;\n const hintId = hasHint ? `${fieldId}-hint` : undefined;\n\n const hintColorClass = disabled\n ? \"text-primary-disabled\"\n : status === \"success\"\n ? \"text-(--color-success)\"\n : status === \"error\"\n ? \"text-(--color-error)\"\n : \"text-(--color-secondary)\";\n\n const labelColorClass = disabled\n ? \"text-primary-disabled\"\n : \"text-primary\";\n\n return (\n <div className={cn(fieldBase, className)}>\n {hasLabel && (\n <div className=\"flex w-full items-center justify-between\">\n <label id={labelId} className={cn(\"paragraph-sm\", labelColorClass)}>\n {label}\n </label>\n {labelRight}\n </div>\n )}\n\n <div className=\"relative w-full\">\n {children}\n </div>\n\n {!hideHint && (\n <p\n id={hasHint ? hintId : undefined}\n className={cn(\"caption\", hasHint ? hintColorClass : \"invisible\")}\n >\n {hasHint ? hint : \"\\u00A0\"}\n </p>\n )}\n </div>\n );\n};\n\nField.displayName = \"Field\";\n","import * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport {\n BookmarkCheckIcon,\n CheckIcon,\n CrossIcon,\n PlusIcon,\n StarIcon,\n} from \"@bubo-squared/icons\";\n\nexport type StatusAvatarVariant =\n | \"verified\"\n | \"bookmark\"\n | \"favorite\"\n | \"add\"\n | \"remove\"\n | \"offline\"\n | \"online\"\n | \"away\"\n | \"busy\";\n\ntype IconVariant =\n | \"verified\"\n | \"bookmark\"\n | \"favorite\"\n | \"add\"\n | \"remove\";\n\nconst iconStatusVariants = cva(\n \"inline-flex size-5 items-center justify-center rounded-full border-1 border-(--color-primary-inverse) p-1\",\n {\n variants: {\n variant: {\n verified: \"bg-(--background-informal)\",\n bookmark: \"bg-(--background-brand)\",\n favorite: \"bg-(--background-success)\",\n add: \"bg-(--background-primary-hover)\",\n remove: \"bg-(--background-error)\",\n },\n },\n defaultVariants: {\n variant: \"verified\",\n },\n }\n);\n\nconst presenceDotBase =\n \"inline-flex h-5 w-5 items-center justify-center\";\n\nconst presenceDotByVariant: Record<\n Exclude<StatusAvatarVariant, IconVariant>,\n string\n> = {\n offline:\n \"bg-(--background-primary) border-1 border-(--color-primary-inverse)\",\n online:\n \"bg-(--background-success) border-1 border-(--color-primary-inverse)\",\n away:\n \"bg-(--background-warning) border-1 border-(--color-primary-inverse)\",\n busy:\n \"bg-(--background-error) border-1 border-(--color-primary-inverse)\",\n};\n\nexport interface StatusAvatarProps\n extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Visual style of the status badge.\n */\n variant?: StatusAvatarVariant;\n}\n\nexport const StatusAvatar = React.forwardRef<\n HTMLDivElement,\n StatusAvatarProps\n>((props, ref) => {\n const { variant = \"verified\", className, ...rest } = props;\n\n if (\n variant === \"offline\" ||\n variant === \"online\" ||\n variant === \"away\" ||\n variant === \"busy\"\n ) {\n const dotClasses = presenceDotByVariant[variant];\n\n return (\n <div\n ref={ref}\n className={cn(\n presenceDotBase,\n className\n )}\n {...rest}\n >\n <div className={cn(dotClasses, \"size-3.5 rounded-full\")} />\n </div>\n );\n }\n\n const iconVariant = variant as IconVariant;\n\n return (\n <div\n ref={ref}\n className={cn(iconStatusVariants({ variant: iconVariant }), className)}\n {...rest}\n >\n {iconVariant === \"verified\" && (\n <CheckIcon className=\"size-3 text-button-white\" />\n )}\n {iconVariant === \"bookmark\" && (\n <BookmarkCheckIcon className=\"size-3 text-button-white\" />\n )}\n {iconVariant === \"favorite\" && (\n <StarIcon className=\"size-3 text-button-white\" />\n )}\n {iconVariant === \"add\" && (\n <PlusIcon className=\"size-3 text-button-white\" />\n )}\n {iconVariant === \"remove\" && (\n <CrossIcon className=\"size-3 text-button-white\" />\n )}\n </div>\n );\n});\n\nStatusAvatar.displayName = \"StatusAvatar\";\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from 'class-variance-authority';\n\n\nconst tagVariants = cva(\n \"inline-flex flex-row items-center justify-center rounded-6 gap-2 px-3 overflow-hidden \" +\n \"border-1 border-secondary bg-(--background-neutral) \" +\n \"focus:border-brand focus-ring-primary \",\n {\n variants: {\n size: {\n sm: \"py-0.5\",\n md: \"py-1.5\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n }\n }\n);\n\nconst disabledTag = \"pointer-events-none border-secondary-disabled bg-(--background-neutral-disabled) text-primary-disabled\"\n\nconst iconClasses = \"flex items-center justify-center w-5 h-5 [&>*]:w-5 [&>*]:h-5 shrink-0 text-primary\";\n\nexport interface TagProps extends\n VariantProps<typeof tagVariants> {\n asChild?: boolean;\n label: React.ReactNode;\n value?: React.ReactNode;\n className?: string;\n leadingIcon?: React.ReactElement<{ disabled?: boolean }>;\n trailingIcon?: React.ReactElement<{ disabled?: boolean }>;\n size?: \"sm\" | \"md\";\n disabled?: boolean;\n}\n\n\nexport const Tag = React.forwardRef<HTMLDivElement, TagProps>(\n (props, ref) => {\n\n const {\n size = \"sm\",\n className,\n asChild = false,\n disabled = false,\n label,\n value,\n ...rest\n } = props;\n\n const hasValue =\n typeof value === \"string\" ? value.trim() !== \"\" : value != null;\n\n const Comp = asChild ? Slot : 'div'\n\n const leading = props.leadingIcon && React.isValidElement(props.leadingIcon)\n ? React.cloneElement(props.leadingIcon, { disabled, ...props.leadingIcon.props })\n : null;\n\n const trailing = props.trailingIcon && React.isValidElement(props.trailingIcon)\n ? React.cloneElement(props.trailingIcon, { disabled, ...props.trailingIcon.props })\n : null;\n\n return (\n <Comp\n className={cn(tagVariants({ size }), disabled && disabledTag, className)}\n ref={ref}\n {...rest}\n >\n {leading && <div className={iconClasses}>{leading}</div>}\n {hasValue ? (\n <div className=\"flex flex-row gap-1 items-center\">\n <span className={\"text-primary paragraph-lg mb-0! cursor-default font-normal\"}>{label}</span>\n <span className={\"text-primary paragraph-lg mb-0! cursor-default font-normal\"}>:</span>\n <span className={\"text-primary paragraph-lg-medium mb-0! cursor-default font-medium\"}>{value}</span>\n </div>\n ) : (\n <span className={\"text-primary paragraph-lg mb-0! cursor-default\"}>{label}</span>\n )}\n {trailing && <div className={iconClasses}>{trailing}</div>}\n </Comp>\n )\n }\n);\n","import * as React from \"react\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport type * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\nimport type { DropdownSize } from \"@/components/ui/dropdown-styles\";\n\nexport interface MenuProps {\n trigger: React.ReactElement;\n children: React.ReactNode;\n size?: DropdownSize;\n align?: DropdownMenuPrimitive.DropdownMenuContentProps[\"align\"];\n side?: DropdownMenuPrimitive.DropdownMenuContentProps[\"side\"];\n offset?: number;\n className?: string;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n modal?: boolean;\n}\n\nexport const Menu: React.FC<MenuProps> = (props) => {\n const {\n trigger,\n children,\n size = \"lg\",\n align = \"start\",\n side,\n offset = 4,\n className,\n open,\n onOpenChange,\n modal,\n } = props;\n\n return (\n <DropdownMenu open={open} onOpenChange={onOpenChange} modal={modal}>\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuContent\n align={align}\n side={side}\n sideOffset={offset}\n size={size}\n className={cn(className)}\n >\n {children}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n\nMenu.displayName = \"Menu\";\n\nexport const MenuGroup = DropdownMenuGroup;\nexport const MenuItem = DropdownMenuItem;\nexport const MenuLabel = DropdownMenuLabel;\nexport const MenuPortal = DropdownMenuPortal;\nexport const MenuSeparator = DropdownMenuSeparator;\nexport const MenuShortcut = DropdownMenuShortcut;\nexport const MenuSub = DropdownMenuSub;\nexport const MenuSubContent = DropdownMenuSubContent;\nexport const MenuSubTrigger = DropdownMenuSubTrigger;\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\nimport { ChevronRightIcon } from \"@bubo-squared/icons\";\nimport { cn } from \"@/lib/utils\";\nimport {\n dropdownRowVariants,\n dropdownScrollClass,\n dropdownSurfaceClass,\n type DropdownSize,\n} from \"@/components/ui/dropdown-styles\";\n\nconst DropdownMenuSizeContext = React.createContext<DropdownSize>(\"lg\");\n\nfunction useDropdownMenuSize(explicitSize?: DropdownSize) {\n const contextSize = React.useContext(DropdownMenuSizeContext);\n return explicitSize ?? contextSize;\n}\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 sideOffset = 4,\n size = \"lg\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content> & {\n size?: DropdownSize;\n}) {\n return (\n <DropdownMenuSizeContext.Provider value={size}>\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n dropdownSurfaceClass,\n dropdownScrollClass,\n \"min-w-37.5 p-0\",\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n </DropdownMenuSizeContext.Provider>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n size,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n size?: DropdownSize\n variant?: \"default\" | \"destructive\"\n}) {\n const resolvedSize = useDropdownMenuSize(size);\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n dropdownRowVariants({ size: resolvedSize, inset }),\n \"data-highlighted:bg-(--background-secondary) data-highlighted:outline-none\",\n \"data-disabled:pointer-events-none data-disabled:opacity-50 data-disabled:text-primary-disabled\",\n variant === \"destructive\" ? \"text-(--color-error)\" : null,\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n size,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n size?: DropdownSize\n}) {\n const resolvedSize = useDropdownMenuSize(size);\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n dropdownRowVariants({ size: resolvedSize, inset }),\n \"text-secondary cursor-default hover:bg-transparent caption\",\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(\"my-1 h-px bg-(--border-secondary)\", 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 paragraph-sm text-secondary\",\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 size,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n size?: DropdownSize\n}) {\n const resolvedSize = useDropdownMenuSize(size);\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n dropdownRowVariants({ size: resolvedSize, inset }),\n \"data-highlighted:bg-(--background-secondary) data-highlighted:outline-none\",\n \"data-[state=open]:bg-(--background-secondary)\",\n \"data-disabled:pointer-events-none data-disabled:opacity-50 data-disabled:text-primary-disabled\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4 text-(--icon-primary)\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n size,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent> & {\n size?: DropdownSize\n}) {\n const resolvedSize = useDropdownMenuSize(size);\n return (\n <DropdownMenuSizeContext.Provider value={resolvedSize}>\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n dropdownSurfaceClass,\n dropdownScrollClass,\n \"min-w-37.5 p-0\",\n className,\n )}\n {...props}\n />\n </DropdownMenuSizeContext.Provider>\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","import { cva } from \"class-variance-authority\";\n\nexport type DropdownSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport const dropdownSurfaceClass =\n \"z-50 rounded-4 border border-secondary-hover bg-(--background-neutral) shadow-card-md\";\n\nexport const dropdownScrollClass =\n \"max-h-79 overflow-y-auto dropdown-scrollbar\";\n\nexport const dropdownRowVariants = cva(\n \"flex w-full items-center gap-2 pl-(--space-8) pr-(--space-16) text-left text-primary cursor-pointer hover:bg-(--background-secondary)\",\n {\n variants: {\n size: {\n sm: \"paragraph-sm py-(--space-4)\",\n md: \"paragraph-md py-(--space-6)\",\n lg: \"paragraph-lg py-(--space-8)\",\n xl: \"subtitle py-(--space-10)\",\n },\n inset: {\n true: \"pl-(--space-16)\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n },\n }\n);\n","import * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { CheckIcon } from \"@bubo-squared/icons\";\nimport { MinusIcon } from \"@bubo-squared/icons\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface CheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> {\n /** Only needed when the component is a part of a native form. */\n name?: string;\n label?: React.ReactNode;\n}\n\nexport const Checkbox = React.forwardRef<\n React.ComponentRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ label, className, ...props }, forwardedRef) => {\n return (\n <label className=\"inline-flex items-center gap-(--space-12) cursor-pointer select-none\">\n <CheckboxPrimitive.Root\n ref={forwardedRef}\n className={cn(\n \"group flex h-5 w-5 items-center justify-center rounded-4 border border-secondary bg-(--background-neutral) text-primary-inverse\",\n \"data-[state=checked]:bg-(--background-brand) data-[state=checked]:text-button-white data-[state=checked]:border-none\",\n \"data-[state=indeterminate]:bg-(--background-brand) data-[state=indeterminate]:text-button-white data-[state=indeterminate]:border-none\",\n \"data-[state=checked]:hover:bg-(--background-brand-hover) data-[state=indeterminate]:hover:bg-(--background-brand-hover)\",\n \"focus-visible:border-brand\",\n \"disabled:bg-(--background-primary-disabled) disabled:border-none disabled:text-(--icon-primary-disabled)\",\n \"data-[state=checked]:disabled:bg-(--background-primary-disabled) data-[state=checked]:disabled:border-none data-[state=checked]:disabled:text-(--icon-primary-disabled)\",\n \"data-[state=indeterminate]:disabled:bg-(--background-primary-disabled) data-[state=indeterminate]:disabled:border-none data-[state=indeterminate]:disabled:text-(--icon-primary-disabled)\",\n \"focus-ring-primary hover:cursor-pointer hover:border-secondary-hover\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <CheckIcon className=\"h-5 w-5 hidden group-data-[state=checked]:block\" />\n <MinusIcon className=\"h-5 w-5 hidden group-data-[state=indeterminate]:block\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n\n {label && (\n <span className=\"paragraph-md-medium text-primary\">\n {label}\n </span>\n )}\n </label>\n );\n});\n\nCheckbox.displayName = \"Checkbox\";","import * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { Field } from \"./Field\";\nimport { InputShell } from \"./InputShell\";\nimport { Input } from \"../ui/input\";\nimport type { TextInputStatus, TextInputSize } from \"./TextInput\";\nimport { dropdownScrollClass, dropdownSurfaceClass } from \"@/components/ui/dropdown-styles\";\n\nconst inputTextVariants = cva(\"truncate\", {\n variants: {\n size: {\n sm: \"paragraph-md\",\n md: \"paragraph-lg\",\n lg: \"subtitle\",\n xl: \"h6-title\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n },\n});\n\nconst optionVariants = cva(\n \"w-full text-left hover:bg-(--background-secondary)\",\n {\n variants: {\n size: {\n sm: \"paragraph-sm py-(--space-4) \",\n md: \"paragraph-md py-(--space-6) \",\n lg: \"paragraph-lg py-(--space-8) \",\n xl: \"subtitle py-(--space-10) \",\n },\n active: {\n true: \"bg-(--background-secondary)\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n active: false,\n },\n }\n);\n\nconst iconWrapperVariants = cva(\n \"flex items-center justify-center shrink-0 text-(--icon-primary)\",\n {\n variants: {\n size: {\n sm: \"size-4 [&>svg]:size-4\",\n md: \"size-5 [&>svg]:size-5\",\n lg: \"size-5 [&>svg]:size-5\",\n xl: \"size-6 [&>svg]:size-6\",\n },\n disabled: {\n true: \"text-(--icon-primary-disabled)\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n },\n }\n);\n\nexport interface AutocompleteProps\n extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"size\" | \"disabled\" | \"value\" | \"defaultValue\" | \"onChange\"\n > {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n /** If true, the hint will not be rendered even if provided. */\n hideHint?: boolean;\n status?: TextInputStatus;\n size?: TextInputSize;\n disabled?: boolean;\n\n leadingIcon?: React.ReactNode | null;\n trailingIcon?: React.ReactNode | null;\n\n /** Options to render (assumed already server-filtered). */\n options: string[];\n loading?: boolean;\n loadingText?: React.ReactNode;\n noOptionsText?: React.ReactNode;\n\n /** Committed value (e.g. selected option). */\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n\n /** Current input text (used as query). */\n inputValue?: string;\n defaultInputValue?: string;\n onInputChange?: (value: string) => void;\n\n /**\n * If true, free-typed input is also treated as the committed value.\n * Selecting an option from the dropdown still overrides the value.\n */\n freeSolo?: boolean;\n\n /** Optional className for the dropdown (options container). */\n dropdownClassName?: string;\n /** Optional className for the listbox (<ul>). */\n listboxClassName?: string;\n}\n\nexport const Autocomplete = React.forwardRef<HTMLInputElement, AutocompleteProps>((props, forwardedRef) => {\n const {\n label,\n hint,\n hideHint,\n status = \"default\",\n size = \"md\",\n disabled,\n className,\n\n leadingIcon,\n trailingIcon,\n\n options,\n loading = false,\n loadingText = \"Loading…\",\n noOptionsText = \"No matches\",\n\n value,\n defaultValue,\n onChange,\n\n inputValue,\n defaultInputValue,\n onInputChange,\n\n freeSolo = false,\n\n dropdownClassName,\n listboxClassName,\n\n placeholder = \"Search…\",\n onKeyDown,\n onFocus,\n onBlur,\n id,\n ...inputProps\n } = props;\n\n const isValueControlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<string>(\n (defaultValue as string | undefined) ?? \"\"\n );\n\n const isInputControlled = inputValue !== undefined;\n const [internalInputValue, setInternalInputValue] = React.useState<string>(\n (defaultInputValue as string | undefined) ?? \"\"\n );\n\n const [isFocused, setIsFocused] = React.useState(false);\n const [activeIndex, setActiveIndex] = React.useState(-1);\n\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n\n const setInputRef = React.useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n\n if (!forwardedRef) return;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node);\n } else {\n (forwardedRef as React.RefObject<HTMLInputElement | null>).current = node;\n }\n },\n [forwardedRef]\n );\n const baseId = React.useId();\n const inputId = id ?? baseId;\n const listboxId = `${inputId}-listbox`;\n\n const currentValue = (isValueControlled ? value : internalValue) ?? \"\";\n const currentInput = (isInputControlled ? inputValue : internalInputValue) ?? \"\";\n\n React.useEffect(() => {\n if (isFocused) return;\n if (isInputControlled) return;\n if (!isValueControlled) return;\n\n setInternalInputValue(currentValue);\n }, [currentValue, isFocused, isInputControlled, isValueControlled]);\n\n const showDropdown =\n isFocused &&\n (loading || options.length > 0 || currentInput.trim().length > 0);\n\n const setInputText = (next: string) => {\n if (!isInputControlled) {\n setInternalInputValue(next);\n }\n onInputChange?.(next);\n };\n\n const commitTypedValue = (next: string) => {\n if (!isValueControlled) {\n setInternalValue(next);\n }\n onChange?.(next);\n };\n\n const commitValue = (next: string) => {\n if (!isValueControlled) {\n setInternalValue(next);\n }\n onChange?.(next);\n setInputText(next);\n setActiveIndex(-1);\n };\n\n const handleContainerClick = () => {\n if (disabled) return;\n inputRef.current?.focus();\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const next = event.target.value;\n setInputText(next);\n setActiveIndex(-1);\n\n if (freeSolo) {\n commitTypedValue(next);\n }\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true);\n onFocus?.(event);\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(false);\n setActiveIndex(-1);\n\n if (freeSolo) {\n const trimmed = currentInput.trim();\n if (trimmed.length > 0 && currentInput !== currentValue) {\n commitTypedValue(currentInput);\n }\n }\n\n onBlur?.(event);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n\n if (!showDropdown && (event.key === \"ArrowDown\" || event.key === \"ArrowUp\")) {\n setIsFocused(true);\n return;\n }\n\n switch (event.key) {\n case \"ArrowDown\": {\n event.preventDefault();\n setActiveIndex((prev) => {\n if (options.length === 0) return -1;\n const next = prev < 0 ? 0 : Math.min(prev + 1, options.length - 1);\n return next;\n });\n break;\n }\n case \"ArrowUp\": {\n event.preventDefault();\n setActiveIndex((prev) => {\n if (options.length === 0) return -1;\n const next = prev <= 0 ? 0 : prev - 1;\n return next;\n });\n break;\n }\n case \"Enter\": {\n if (activeIndex >= 0 && activeIndex < options.length) {\n event.preventDefault();\n commitValue(options[activeIndex]);\n setIsFocused(false);\n break;\n }\n\n if (freeSolo) {\n const trimmed = currentInput.trim();\n if (trimmed.length > 0) {\n event.preventDefault();\n if (currentInput !== currentValue) {\n commitTypedValue(currentInput);\n }\n setIsFocused(false);\n }\n }\n break;\n }\n case \"Escape\": {\n event.preventDefault();\n setIsFocused(false);\n setActiveIndex(-1);\n break;\n }\n default:\n break;\n }\n };\n\n const handleOptionMouseDown = (event: React.MouseEvent) => {\n // Prevent input blur before we process selection.\n event.preventDefault();\n };\n\n const handleOptionClick = (option: string) => {\n commitValue(option);\n setIsFocused(false);\n };\n\n const activeDescendantId =\n activeIndex >= 0 ? `${inputId}-option-${activeIndex}` : undefined;\n\n const showLeadingIcon = !!leadingIcon;\n const showTrailingIcon = !!trailingIcon;\n\n return (\n <Field label={label} hint={hint} hideHint={hideHint} status={status} disabled={disabled}>\n <div className=\"relative w-full\">\n <InputShell\n size={size}\n status={status}\n disabled={disabled}\n className={className}\n onClick={handleContainerClick}\n >\n {showLeadingIcon && (\n <span className={cn(iconWrapperVariants({ size, disabled: !!disabled }))}>\n {leadingIcon}\n </span>\n )}\n\n <Input\n ref={setInputRef}\n id={inputId}\n type=\"text\"\n disabled={disabled ?? undefined}\n placeholder={placeholder}\n value={currentInput}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-controls={listboxId}\n aria-expanded={showDropdown}\n aria-activedescendant={activeDescendantId}\n variant=\"bare\"\n className={cn(inputTextVariants({ size }), \"bg-transparent outline-none w-full\")}\n {...inputProps}\n />\n\n {showTrailingIcon && (\n <span className={cn(iconWrapperVariants({ size, disabled: !!disabled }))}>\n {trailingIcon}\n </span>\n )}\n </InputShell>\n\n {showDropdown && (\n <div\n className={cn(\n \"absolute left-0 right-0 mt-1\",\n dropdownSurfaceClass,\n dropdownScrollClass,\n dropdownClassName,\n )}\n >\n {loading ? (\n <div className={cn(optionVariants({ size }), \"px-(--space-8) pr-(--space-16) text-secondary\")}\n aria-live=\"polite\"\n >\n {loadingText}\n </div>\n ) : options.length === 0 ? (\n <div className={cn(optionVariants({ size }), \"px-(--space-8) pr-(--space-16) text-secondary\")}\n aria-live=\"polite\"\n >\n {noOptionsText}\n </div>\n ) : (\n <ul\n id={listboxId}\n role=\"listbox\"\n className={cn(\"flex flex-col\", listboxClassName)}\n >\n {options.map((option, index) => (\n <li\n key={`${option}-${index}`}\n id={`${inputId}-option-${index}`}\n role=\"option\"\n aria-selected={index === activeIndex}\n className={cn(\n optionVariants({ size, active: index === activeIndex }),\n \"px-(--space-8) pr-(--space-16) text-primary cursor-pointer\"\n )}\n onMouseDown={handleOptionMouseDown}\n onMouseEnter={() => setActiveIndex(index)}\n onClick={() => handleOptionClick(option)}\n >\n {option}\n </li>\n ))}\n </ul>\n )}\n </div>\n )}\n </div>\n </Field>\n );\n});\n\nAutocomplete.displayName = \"Autocomplete\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\n\nexport type InputShellSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type InputShellStatus = \"default\" | \"success\" | \"error\";\n\nexport const inputShellVariants = cva(\n \"group flex w-full items-center rounded-8 border bg-(--background-primary) text-left cursor-text \" +\n \"border-secondary\",\n {\n variants: {\n size: {\n sm: \"gap-2 px-2 py-1 h-8\",\n md: \"gap-2 px-2 py-2 h-10\",\n lg: \"gap-2 px-2 py-2 h-11\",\n xl: \"gap-2 px-[10px] py-2 h-14\",\n },\n status: {\n default: \"input-default\",\n success: \"input-success\",\n error: \"input-error\",\n },\n disabled: {\n true:\n \"bg-(--background-primary-disabled) border-secondary-disabled text-primary-disabled cursor-default\",\n },\n },\n defaultVariants: {\n size: \"md\",\n status: \"default\",\n },\n }\n);\n\nexport interface InputShellProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof inputShellVariants> { }\n\nexport const InputShell = React.forwardRef<HTMLDivElement, InputShellProps>(\n ({ size = \"md\", status, disabled, className, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n aria-disabled={disabled || undefined}\n className={cn(\n inputShellVariants({ size, status, disabled }),\n className\n )}\n {...rest}\n />\n );\n }\n);\n\nInputShell.displayName = \"InputShell\";\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype InputVariant = \"default\" | \"bare\"\n\nexport interface InputProps\n extends React.ComponentProps<\"input\"> {\n variant?: InputVariant\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, variant = \"default\", ...props }, ref) => {\n const base =\n \"text-primary placeholder:text-(--color-secondary) disabled:text-primary-disabled disabled:placeholder:text-primary-disabled \" +\n \"selection:bg-primary selection:text-primary-foreground file:text-foreground\"\n\n const defaultStyles =\n \"dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 shadow-xs \" +\n \"transition-[color,box-shadow] file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium \" +\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 \" +\n \"focus-visible:border-ring focus-visible:ring-0 focus-visible:shadow-none \" +\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\"\n\n const bareStyles = \"bg-transparent outline-none w-full\"\n\n return (\n <input\n ref={ref}\n type={type}\n data-slot=\"input\"\n className={cn(\n base,\n variant === \"default\" ? defaultStyles : bareStyles,\n className\n )}\n {...props}\n />\n )\n }\n)\n\nInput.displayName = \"Input\"\n\nexport { Input }\n","import * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { ChevronDownIcon } from \"@bubo-squared/icons\";\nimport { Field } from \"./Field\";\nimport { dropdownScrollClass, dropdownSurfaceClass } from \"@/components/ui/dropdown-styles\";\n\nexport type SelectSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type SelectStatus = \"default\" | \"success\" | \"error\";\n\nexport interface SelectOption {\n label: React.ReactNode;\n value: string;\n}\n\nconst selectTriggerVariants = cva(\n \"group flex w-full items-center justify-between rounded-8 border bg-(--background-primary) \" +\n \"p-2 text-left transition-[background-color] cursor-pointer \" +\n \"hover:bg-(--background-primary-hover) disabled:bg-(--background-primary-disabled) \" +\n \"disabled:text-primary-disabled disabled:cursor-default\",\n {\n variants: {\n size: {\n sm: \"h-8 py-1\",\n md: \"h-10 py-2\",\n lg: \"h-11\",\n xl: \"h-14\",\n },\n status: {\n default: \"input-default\",\n success: \"input-success\",\n error: \"input-error\",\n },\n },\n defaultVariants: {\n size: \"md\",\n status: \"default\",\n },\n }\n);\n\nconst textVariants = cva(\"truncate\", {\n variants: {\n size: {\n sm: \"paragraph-md\",\n md: \"paragraph-lg\",\n lg: \"subtitle\",\n xl: \"h6-title\",\n },\n hasValue: {\n false: \"text-secondary\",\n true: \"text-primary\",\n },\n disabled: {\n true: \"text-primary-disabled\",\n },\n },\n defaultVariants: {\n size: \"md\",\n hasValue: false,\n },\n});\n\nconst selectIconVariants = cva(\"flex items-center justify-center shrink-0\", {\n variants: {\n size: {\n sm: \"size-4\",\n md: \"size-5\",\n lg: \"size-5\",\n xl: \"size-6\",\n },\n disabled: {\n false: \"text-(--icon-primary)\",\n true: \"text-(--icon-primary-disabled)\",\n },\n },\n defaultVariants: {\n size: \"md\",\n disabled: false,\n },\n});\n\nconst selectButtonVariants = cva(\n \"flex w-full items-center gap-2 pl-(--space-8) pr-(--space-16) text-left paragraph-lg text-primary hover:bg-(--background-secondary)\",\n {\n variants: {\n size: {\n sm: \"paragraph-sm py-(--space-4) \",\n md: \"paragraph-md py-(--space-6) \",\n lg: \"paragraph-lg py-(--space-8) \",\n xl: \"subtitle py-(--space-10) \",\n },\n },\n }\n);\n\nexport interface SelectProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"onChange\">,\n VariantProps<typeof selectTriggerVariants> {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n /**\n * If true, the hint will not be rendered even if provided.\n */\n hideHint?: boolean;\n /**\n * Only needed when the component is a part of a native form.\n * Provide this to include the value in native form submission / FormData.\n */\n name?: string;\n placeholder?: string;\n status?: SelectStatus;\n options: SelectOption[];\n value?: string;\n defaultValue?: string;\n required?: boolean;\n onChange?: (value: string) => void;\n /** Force the menu open (used mainly for docs/Storybook states). */\n showMenu?: boolean;\n}\n\nexport const Select = React.forwardRef<HTMLButtonElement, SelectProps>((props, forwardedRef) => {\n const {\n label = \"Field Label\",\n hint = \"This is a hint text to help user.\",\n hideHint = false,\n name,\n placeholder = \"Placeholder text\",\n size = \"md\",\n status = \"default\",\n disabled,\n options,\n value,\n defaultValue,\n onChange,\n className,\n showMenu,\n required = false,\n ...buttonProps\n } = props;\n\n const isControlled = value !== undefined;\n\n // Radix Select uses empty string to represent “no selection” (placeholder shown).\n // We also use \"\" for backwards compatibility with the previous implementation.\n const controlledValue = value ?? \"\";\n\n const [internalValue, setInternalValue] = React.useState<string>(\n defaultValue ?? \"\"\n );\n const [open, setOpen] = React.useState(false);\n\n const rawValue = isControlled ? controlledValue : internalValue;\n const selectedOption = options.find((opt) => opt.value === rawValue);\n const currentValue = selectedOption ? selectedOption.value : \"\";\n const hasValue = !!selectedOption;\n\n const isOpen = showMenu ?? open;\n\n const handleOpenChange = (nextOpen: boolean) => {\n if (showMenu === undefined) {\n setOpen(nextOpen);\n }\n };\n\n const handleValueChange = (nextValue: string) => {\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n onChange?.(nextValue);\n if (showMenu === undefined) {\n setOpen(false);\n }\n };\n\n const handleClear = () => {\n if (!isControlled) {\n setInternalValue(\"\");\n }\n onChange?.(\"\");\n if (showMenu === undefined) {\n setOpen(false);\n }\n };\n\n return (\n <Field\n label={label}\n hint={hint}\n hideHint={hideHint}\n status={status}\n disabled={disabled}\n >\n <SelectPrimitive.Root\n value={currentValue}\n onValueChange={handleValueChange}\n open={isOpen}\n onOpenChange={handleOpenChange}\n disabled={disabled}\n name={name}\n required={required}\n >\n <SelectPrimitive.Trigger asChild>\n <button\n ref={forwardedRef}\n type=\"button\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n className={cn(\n selectTriggerVariants({ size, status }),\n textVariants({\n size,\n hasValue,\n disabled: !!disabled\n }),\n hasValue ? \"text-primary\" : \"text-secondary\",\n className,\n )}\n data-open={isOpen || undefined}\n {...buttonProps}\n >\n <SelectPrimitive.Value placeholder={placeholder} />\n\n <SelectPrimitive.Icon asChild>\n <span\n className={cn(selectIconVariants({ size, disabled: !!disabled }))}\n >\n <ChevronDownIcon />\n </span>\n </SelectPrimitive.Icon>\n </button>\n </SelectPrimitive.Trigger>\n\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n position=\"popper\"\n align=\"start\"\n sideOffset={4}\n className={cn(\n dropdownSurfaceClass,\n dropdownScrollClass,\n \"min-w-343 rounded-8\"\n )}\n style={{ minWidth: \"var(--radix-select-trigger-width)\" }}\n >\n <SelectPrimitive.Viewport>\n <div className=\"flex flex-col\">\n {hasValue && (\n <div className={cn(\"bg-(--background-neutral)\")}>\n <button\n type=\"button\"\n className={cn(\n selectButtonVariants({ size }),\n \"text-secondary\"\n )}\n onClick={handleClear}\n >\n Clear\n </button>\n </div>\n )}\n\n {options.map((opt) => (\n <SelectPrimitive.Item\n key={opt.value}\n value={opt.value}\n className={cn(\n \"bg-(--background-neutral)\",\n \"data-highlighted:bg-(--background-secondary) data-highlighted:outline-none\",\n \"data-[state=checked]:bg-(--background-secondary)\",\n )}\n >\n <div className={selectButtonVariants({ size })}>\n <SelectPrimitive.ItemText>{opt.label}</SelectPrimitive.ItemText>\n </div>\n </SelectPrimitive.Item>\n ))}\n </div>\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n </Field>\n );\n});\n\nSelect.displayName = \"Select\";\n","import * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { Input } from \"../ui/input\";\nimport { Field } from \"./Field\";\nimport { InputShell } from \"./InputShell\";\nimport { EyeIcon, EyeSlashIcon } from \"@bubo-squared/icons\";\n\nexport type PasswordInputSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type PasswordInputStatus = \"default\" | \"success\" | \"error\";\nexport type PasswordInputVariant = \"icon\" | \"text\";\n\nconst passwordTextVariants = cva(\"truncate\", {\n variants: {\n size: {\n sm: \"paragraph-md\",\n md: \"paragraph-lg\",\n lg: \"subtitle\",\n xl: \"h6-title\",\n },\n disabled: {\n true: \"text-primary-disabled\",\n false: \"text-primary\",\n },\n },\n defaultVariants: {\n size: \"md\",\n disabled: false,\n },\n});\n\nconst iconWrapperVariants = cva(\n \"flex items-center justify-center shrink-0 text-(--icon-primary)\",\n {\n variants: {\n size: {\n sm: \"size-4 [&>svg]:size-4\",\n md: \"size-5 [&>svg]:size-5\",\n lg: \"size-5 [&>svg]:size-5\",\n xl: \"size-6 [&>svg]:size-6\",\n },\n disabled: {\n true: \"text-(--icon-primary-disabled)\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n },\n }\n);\n\nconst actionButtonVariants = cva(\n \"flex items-center justify-center shrink-0 cursor-pointer bg-transparent border-0 p-0 text-left \" +\n \"paragraph-sm text-(--icon-primary) hover:text-(--icon-primary-hover) focus:outline-none \",\n {\n variants: {\n size: {\n sm: \"paragraph-sm\",\n md: \"paragraph-sm\",\n lg: \"paragraph-sm\",\n xl: \"paragraph-md\",\n },\n disabled: {\n true:\n \"cursor-default text-primary-disabled hover:text-primary-disabled\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n },\n }\n);\n\nexport interface PasswordInputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\" | \"disabled\"> {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n /**\n * If true, the hint will not be rendered even if provided.\n */\n hideHint?: boolean;\n /**\n * Only needed when the component is a part of a native form.\n * Provide this to include the value in native form submission / FormData.\n */\n name?: string;\n placeholder?: string;\n status?: PasswordInputStatus;\n size?: PasswordInputSize;\n variant?: PasswordInputVariant;\n leadingIcon?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport const PasswordInput = React.forwardRef<HTMLInputElement, PasswordInputProps>((props, forwardedRef) => {\n const {\n label,\n hint,\n hideHint,\n placeholder = \"••••••••••••\",\n size = \"md\",\n status = \"default\",\n variant = \"icon\",\n disabled,\n className,\n leadingIcon,\n value,\n defaultValue,\n onChange,\n ...inputProps\n } = props;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<string>(\n (defaultValue as string | undefined) ?? \"\"\n );\n const [isRevealed, setIsRevealed] = React.useState<boolean>(false);\n\n const currentValue = (isControlled ? (value as string | undefined) : internalValue) ?? \"\";\n\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n\n const setInputRef = React.useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n\n if (!forwardedRef) return;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node);\n } else {\n (forwardedRef as React.RefObject<HTMLInputElement | null>).current = node;\n }\n },\n [forwardedRef]\n );\n\n const showLeadingIcon = !!leadingIcon;\n\n const handleContainerClick = () => {\n if (disabled) return;\n inputRef.current?.focus();\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(event.target.value);\n }\n onChange?.(event);\n };\n\n return (\n <Field\n label={label}\n hint={hint}\n hideHint={hideHint}\n status={status}\n disabled={disabled}\n >\n <InputShell\n size={size}\n status={status}\n disabled={disabled}\n className={className}\n onClick={handleContainerClick}\n >\n {showLeadingIcon && (\n <span\n className={cn(\n iconWrapperVariants({ size, disabled: !!disabled })\n )}\n >\n {leadingIcon}\n </span>\n )}\n\n <Input\n ref={setInputRef}\n type={isRevealed ? \"text\" : \"password\"}\n disabled={disabled ?? undefined}\n placeholder={placeholder}\n value={isControlled ? value : currentValue}\n defaultValue={isControlled ? undefined : defaultValue}\n onChange={handleChange}\n variant=\"bare\"\n className={cn(passwordTextVariants({ size, disabled: !!disabled }))}\n {...inputProps}\n />\n\n <button\n type=\"button\"\n disabled={!!disabled}\n onClick={() => {\n if (disabled) return;\n setIsRevealed((prev) => !prev);\n inputRef.current?.focus();\n }}\n aria-label={isRevealed ? \"Hide password\" : \"Show password\"}\n className={cn(\n \"cursor-pointer\",\n variant === \"text\"\n ? actionButtonVariants({ size, disabled: !!disabled })\n : iconWrapperVariants({ size, disabled: !!disabled })\n )}\n >\n {variant === \"icon\" ? (\n isRevealed ? <EyeSlashIcon /> : <EyeIcon />\n ) : (\n isRevealed ? \"Hide\" : \"Show\"\n )}\n </button>\n </InputShell>\n </Field>\n );\n});\n\nPasswordInput.displayName = \"PasswordInput\";","import * as React from \"react\";\nimport { CheckIcon, CodeIcon } from \"@bubo-squared/icons\";\nimport * as RPNInput from \"react-phone-number-input\";\nimport flags from \"react-phone-number-input/flags\";\n\nimport { Button } from \"@/components/ui/button\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/components/ui/command\";\nimport { Input } from \"@/components/ui/input\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\";\nimport { ScrollArea } from \"@/components/ui/scroll-area\";\nimport { cn } from \"@/lib/utils\";\nimport type { TextInputSize, TextInputStatus } from \"./TextInput\";\nimport { Field } from \"./Field\";\nimport { cva } from \"class-variance-authority\";\nimport { dropdownSurfaceClass } from \"@/components/ui/dropdown-styles\";\n\ntype PhoneInputProps = Omit<\n React.ComponentProps<\"input\">,\n \"onChange\" | \"value\" | \"ref\" | \"size\"\n> &\n Omit<RPNInput.Props<typeof RPNInput.default>, \"onChange\"> & {\n onChange?: (value: RPNInput.Value) => void;\n } & {\n className?: string;\n label?: React.ReactNode;\n hint?: React.ReactNode;\n /**\n * If true, the hint will not be rendered even if provided.\n */\n hideHint?: boolean;\n /**\n * Only needed when the component is a part of a native form.\n * Provide this to include the value in native form submission / FormData.\n */\n name?: string;\n placeholder?: string;\n disabled?: boolean;\n status?: TextInputStatus;\n size?: TextInputSize;\n };\n\nconst inputBase = \"h-full rounded-8 border border-secondary bg-(--background-primary) hover:border-secondary-hover\";\n\nconst sizeBase = cva(\"flex w-full\", {\n variants: {\n size: {\n sm: \"h-8 [&_button]:gap-2\",\n md: \"h-10 [&_button]:gap-2\",\n lg: \"h-11 [&_button]:gap-2\",\n xl: \"h-14 [&_button]:gap-3\"\n },\n }\n}\n);\n\nconst inputTextVariants = cva(\"\", {\n variants: {\n size: {\n sm: \"paragraph-md\",\n md: \"paragraph-lg\",\n lg: \"subtitle\",\n xl: \"h6-title\",\n },\n disabled: {\n true: \"text-primary-disabled border-secondary-disabled\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nconst dropdownWidthVariants = cva(\"\", {\n variants: {\n size: {\n sm: \"min-w-70\",\n md: \"min-w-72\",\n lg: \"min-w-80\",\n xl: \"min-w-96\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n})\n\nconst wrapperStatusClass: Record<TextInputStatus, string> = {\n default: \"input-default-nested\",\n success: \"input-success-nested\",\n error: \"input-error-nested\"\n};\n\nconst countryOptionVariants = cva(\n \"gap-2 pl-(--space-8) pr-(--space-16) text-left text-primary cursor-pointer hover:bg-(--background-secondary) \" +\n \"data-[selected=true]:bg-(--background-secondary) data-[selected=true]:text-primary\",\n {\n variants: {\n size: {\n sm: \"paragraph-sm py-(--space-4)\",\n md: \"paragraph-md py-(--space-6)\",\n lg: \"paragraph-lg py-(--space-8)\",\n xl: \"subtitle py-(--space-10)\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\nconst PhoneInput: React.ForwardRefExoticComponent<PhoneInputProps> =\n React.forwardRef<React.ComponentRef<typeof RPNInput.default>, PhoneInputProps>(\n (props, forwardedRef) => {\n\n const {\n className, onChange, value,\n label, hint, hideHint, placeholder, size = \"md\",\n disabled = false, status = \"default\", ...rest\n } = props;\n const wrapperRef = React.useRef<HTMLDivElement | null>(null);\n\n const focusNumberInput = React.useCallback(() => {\n const el = wrapperRef.current?.querySelector(\"input\") as HTMLInputElement | null;\n el?.focus();\n }, []);\n\n return (\n <Field\n label={label}\n hint={hint}\n hideHint={hideHint}\n status={status}\n disabled={disabled}\n className={className}\n >\n <div ref={wrapperRef} className={cn(\"w-full\", wrapperStatusClass[status])}>\n <RPNInput.default\n ref={forwardedRef}\n className={cn(\n sizeBase({ size }),\n inputTextVariants({ size, disabled }),\n )}\n flagComponent={FlagComponent}\n countrySelectComponent={(countrySelectProps) => (\n <CountrySelect\n {...countrySelectProps}\n size={size}\n onAfterSelect={() => {\n // Let Popover close + focus management settle first.\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n focusNumberInput();\n });\n });\n }}\n />\n )}\n inputComponent={InputComponent}\n smartCaret={false}\n value={value || undefined}\n international={true}\n countryCallingCodeEditable={false}\n /**\n * Handles the onChange event.\n *\n * react-phone-number-input might trigger the onChange event as undefined\n * when a valid phone number is not entered. To prevent this,\n * the value is coerced to an empty string.\n *\n * @param {E164Number | undefined} value - The entered value\n */\n onChange={(value) => onChange?.(value || (\"\" as RPNInput.Value))}\n placeholder={placeholder}\n disabled={disabled}\n {...rest}\n />\n </div>\n </Field>\n );\n },\n );\nPhoneInput.displayName = \"PhoneInput\";\n\nconst InputComponent = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>((props, ref) => {\n const { className, ...rest } = props;\n\n return (\n <Input\n ref={ref}\n placeholder={rest.placeholder}\n className={cn(inputBase, className)}\n {...rest}\n />\n );\n});\nInputComponent.displayName = \"InputComponent\";\n\ntype CountryEntry = { label: string; value: RPNInput.Country | undefined };\n\ntype CountrySelectProps = {\n disabled?: boolean;\n value: RPNInput.Country;\n options: CountryEntry[];\n onChange: (country: RPNInput.Country) => void;\n size?: TextInputSize;\n onAfterSelect?: () => void;\n};\n\nconst CountrySelect = ({\n disabled,\n value: selectedCountry,\n options: countryList,\n onChange,\n size = \"md\",\n onAfterSelect,\n}: CountrySelectProps) => {\n const scrollAreaRef = React.useRef<HTMLDivElement>(null);\n const [searchValue, setSearchValue] = React.useState(\"\");\n const [isOpen, setIsOpen] = React.useState(false);\n\n return (\n <Popover\n open={isOpen}\n modal\n onOpenChange={(open) => {\n setIsOpen(open);\n if (open) {\n setSearchValue(\"\");\n }\n }}\n >\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"secondary\"\n className={cn(inputBase, \"flex items-center justify-center gap-1 px-3 focus:z-10 mr-(--space-12) text-primary-disabled hover:text-(--color-primary-hover) focus:text-(--color-primary-focus)\")}\n disabled={disabled}\n >\n <FlagComponent\n country={selectedCountry}\n countryName={selectedCountry}\n />\n <CodeIcon\n className={cn(\n \"-mr-2 size-4 opacity-50 rotate-90\",\n disabled ? \"hidden\" : \"opacity-100\",\n )}\n />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n align=\"start\"\n className={cn(\n \"p-0 **:data-[slot='command-input-wrapper']:border-b-(--border-secondary) rounded-8\",\n dropdownWidthVariants({ size }),\n dropdownSurfaceClass,\n )}\n >\n <Command className=\"bg-transparent\">\n <CommandInput\n value={searchValue}\n onValueChange={(value) => {\n setSearchValue(value);\n setTimeout(() => {\n if (scrollAreaRef.current) {\n const viewportElement = scrollAreaRef.current.querySelector(\n \"[data-radix-scroll-area-viewport]\",\n );\n if (viewportElement) {\n viewportElement.scrollTop = 0;\n }\n }\n }, 0);\n }}\n placeholder=\"Search country...\"\n />\n <CommandList>\n <ScrollArea ref={scrollAreaRef} className=\"max-h-79\">\n <CommandEmpty>No country found.</CommandEmpty>\n <CommandGroup className=\"p-0\">\n {countryList.map(({ value, label }) =>\n value ? (\n <CountrySelectOption\n key={value}\n country={value}\n countryName={label}\n selectedCountry={selectedCountry}\n onChange={onChange}\n onSelectComplete={() => {\n setIsOpen(false);\n onAfterSelect?.();\n }}\n size={size}\n />\n ) : null,\n )}\n </CommandGroup>\n </ScrollArea>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n};\n\ninterface CountrySelectOptionProps extends RPNInput.FlagProps {\n selectedCountry: RPNInput.Country;\n onChange: (country: RPNInput.Country) => void;\n onSelectComplete: () => void;\n size?: TextInputSize;\n}\n\nconst CountrySelectOption: React.FC<CountrySelectOptionProps> = (props) => {\n\n const {\n country,\n countryName,\n selectedCountry,\n onChange,\n onSelectComplete,\n size = \"md\",\n } = props;\n\n\n const handleSelect = () => {\n onChange(country);\n onSelectComplete();\n };\n\n return (\n <CommandItem\n className={cn(countryOptionVariants({ size }))}\n onSelect={handleSelect}\n >\n <FlagComponent country={country} countryName={countryName} />\n <span className=\"flex-1\">{countryName}</span>\n <span className=\"text-foreground/50\">{`+${RPNInput.getCountryCallingCode(country)}`}</span>\n <CheckIcon\n className={`ml-auto size-4 ${country === selectedCountry ? \"opacity-100\" : \"opacity-0\"}`}\n />\n </CommandItem>\n );\n};\n\nconst FlagComponent = ({ country, countryName }: RPNInput.FlagProps) => {\n const Flag = flags[country];\n\n return (\n <span className=\"flex h-4 w-6 overflow-hidden rounded-2 bg-foreground/20 [&_svg:not([class*='size-'])]:size-full\">\n {Flag && <Flag title={countryName} />}\n </span>\n );\n};\n\nexport { PhoneInput };","\"use client\"\n\nimport * as React from \"react\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { SearchIcon } from \"@bubo-squared/icons\"\n\nimport { cn } from \"@/lib/utils\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\"\n\nfunction Command({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: React.ReactNode\n description?: React.ReactNode\n className?: string\n showCloseButton?: boolean\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div\n data-slot=\"command-input-wrapper\"\n className=\"flex h-9 items-center gap-2 border-b px-3\"\n >\n <SearchIcon className=\"size-4 shrink-0 opacity-50 text-(--color-secondary)\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-(--color-secondary) text-primary flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction CommandList({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\n \"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandEmpty({\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n )\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction CommandItem({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CommandShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","import * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\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 ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n )\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 text-center sm:text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\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(\"text-lg leading-none font-semibold\", className)}\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(\"text-muted-foreground text-sm\", className)}\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 { CamelToPascal } from './utility-types';\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\n/**\n * Converts string to camel case\n *\n * @param {string} string\n * @returns {string} A camelized string\n */\nexport const toCamelCase = <T extends string>(string: T) =>\n string.replace(/^([A-Z])|[\\s-_]+(\\w)/g, (match, p1, p2) =>\n p2 ? p2.toUpperCase() : p1.toLowerCase(),\n );\n\n/**\n * Converts string to pascal case\n *\n * @param {string} string\n * @returns {string} A pascalized string\n */\nexport const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {\n const camelCase = toCamelCase(string);\n\n return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;\n};\n\n/**\n * Merges classes into a single string\n *\n * @param {array} classes\n * @returns {string} A string of classes\n */\nexport const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>\n classes\n .filter((className, index, array) => {\n return (\n Boolean(className) &&\n (className as string).trim() !== '' &&\n array.indexOf(className) === index\n );\n })\n .join(' ')\n .trim();\n\n/**\n * Is empty string\n *\n * @param {unknown} value\n * @returns {boolean} Whether the value is an empty string\n */\nexport const isEmptyString = (value: unknown): boolean => value === '';\n\n/**\n * Check if a component has an accessibility prop\n *\n * @param {object} props\n * @returns {boolean} Whether the component has an accessibility prop\n */\nexport const hasA11yProp = (props: Record<string, any>) => {\n for (const prop in props) {\n if (prop.startsWith('aria-') || prop === 'role' || prop === 'title') {\n return true;\n }\n }\n};\n","export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","import { createElement, forwardRef } from 'react';\nimport defaultAttributes from './defaultAttributes';\nimport { IconNode, LucideProps } from './types';\nimport { mergeClasses, hasA11yProp } from '@lucide/shared';\n\ninterface IconComponentProps extends LucideProps {\n iconNode: IconNode;\n}\n\n/**\n * Lucide icon component\n *\n * @component Icon\n * @param {object} props\n * @param {string} props.color - The color of the icon\n * @param {number} props.size - The size of the icon\n * @param {number} props.strokeWidth - The stroke width of the icon\n * @param {boolean} props.absoluteStrokeWidth - Whether to use absolute stroke width\n * @param {string} props.className - The class name of the icon\n * @param {IconNode} props.children - The children of the icon\n * @param {IconNode} props.iconNode - The icon node of the icon\n *\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst Icon = forwardRef<SVGSVGElement, IconComponentProps>(\n (\n {\n color = 'currentColor',\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = '',\n children,\n iconNode,\n ...rest\n },\n ref,\n ) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? (Number(strokeWidth) * 24) / Number(size) : strokeWidth,\n className: mergeClasses('lucide', className),\n ...(!children && !hasA11yProp(rest) && { 'aria-hidden': 'true' }),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ],\n ),\n);\n\nexport default Icon;\n","import { createElement, forwardRef } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from '@lucide/shared';\nimport { IconNode, LucideProps } from './types';\nimport Icon from './Icon';\n\n/**\n * Create a Lucide icon component\n * @param {string} iconName\n * @param {array} iconNode\n * @returns {ForwardRefExoticComponent} LucideIcon\n */\nconst createLucideIcon = (iconName: string, iconNode: IconNode) => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(({ className, ...props }, ref) =>\n createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className,\n ),\n ...props,\n }),\n );\n\n Component.displayName = toPascalCase(iconName);\n\n return Component;\n};\n\nexport default createLucideIcon;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }]];\n\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevron-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronRight = createLucideIcon('chevron-right', __iconNode);\n\nexport default ChevronRight;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['circle', { cx: '12', cy: '12', r: '1', key: '41hilf' }],\n ['circle', { cx: '19', cy: '12', r: '1', key: '1wjl8i' }],\n ['circle', { cx: '5', cy: '12', r: '1', key: '1pcz8c' }],\n];\n\n/**\n * @component @name Ellipsis\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/ellipsis\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Ellipsis = createLucideIcon('ellipsis', __iconNode);\n\nexport default Ellipsis;\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\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 PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 \" +\n \"data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 \" +\n \"data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 \" +\n \"origin-(--radix-popover-content-transform-origin) rounded-md p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\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 { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","import * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n orientation={orientation}\n className={cn(\n // Base scrollbar track styling\n \"flex touch-none transition-colors select-none ml-1 pt-1 pb-1\",\n orientation === \"vertical\" &&\n \"h-full w-4\",\n orientation === \"horizontal\" &&\n \"h-4 flex-col\",\n className\n )}\n {...props}\n >\n {/* The draggable thumb/handle that indicates scroll position */}\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"bg-(--background-secondary) relative flex-1 rounded mr-1 w-full ml-1\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n","import * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Field } from \"./Field\";\n\nexport type RadioGroupOrientation = \"vertical\" | \"horizontal\";\n\nexport interface RadioGroupOption {\n value: string;\n label: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps\n extends Omit<RadioGroupPrimitive.RadioGroupProps, \"children\" | \"orientation\" | \"onValueChange\"> {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n /** Only needed when the component is a part of a native form. */\n name?: string;\n /** Only needed when the component is a part of a native form. */\n required?: boolean;\n /**\n * If true, the hint will not be rendered even if provided.\n */\n hideHint?: boolean;\n orientation?: RadioGroupOrientation;\n options: RadioGroupOption[];\n disabled?: boolean;\n onValueChange?: (value: string) => void;\n}\n\nexport const RadioGroup = React.forwardRef<\n React.ComponentRef<typeof RadioGroupPrimitive.Root>,\n RadioGroupProps\n>((props, forwardedRef) => {\n const {\n label,\n hint,\n hideHint,\n options,\n orientation = \"vertical\",\n disabled = false,\n value,\n defaultValue,\n onValueChange,\n className,\n ...rootProps\n } = props;\n const groupId = React.useId();\n const hintId = hint ? `${groupId}-hint` : undefined;\n\n const handleValueChange = (next: string) => {\n onValueChange?.(next);\n };\n\n const isHorizontal = orientation === \"horizontal\";\n\n return (\n <Field\n label={label}\n hint={hint}\n hideHint={hideHint}\n disabled={disabled}\n >\n <RadioGroupPrimitive.Root\n ref={forwardedRef}\n {...rootProps}\n value={value}\n defaultValue={defaultValue}\n onValueChange={handleValueChange}\n disabled={disabled}\n aria-describedby={hintId}\n className={cn(\n \"flex\",\n isHorizontal ? \"flex-row gap-6\" : \"flex-col gap-2\",\n className\n )}\n >\n {options.map((option) => (\n <div key={option.value} className={\"relative inline-flex\"}>\n <RadioGroupPrimitive.Item\n value={option.value}\n disabled={disabled || option.disabled}\n className={cn(\n \"group inline-flex items-center gap-2 outline-none\",\n \"data-disabled:pointer-events-none\",\n (disabled || option.disabled) ? \"cursor-default\" : \"cursor-pointer\",\n )}\n >\n {/* Visual radio */}\n <span\n className={cn(\n \"flex items-center justify-center shrink-0 h-5 w-5 rounded-full border bg-(--background-primary) transition-all\",\n\n // 1: enabled, unchecked, unfocused, unhovered\n \"group-data-[state=unchecked]:border-secondary\",\n\n // 2: enabled, checked, unfocused, unhovered\n \"group-data-[state=checked]:border-brand\",\n\n // 3: enabled, unchecked, hovered, unfocused\n \"group-data-[state=unchecked]:group-hover:border-secondary-hover\",\n\n // 4: enabled, checked, hovered, unfocused\n \"group-data-[state=checked]:group-hover:border-brand-hover\",\n \"group-data-[state=checked]:group-hover:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-secondary)]\",\n\n // 5: enabled, unchecked, focused (override 1/3)\n \"group-data-[state=unchecked]:group-focus-visible:border-secondary-hover\",\n\n // 6: enabled, checked, focused (override 2/4)\n \"group-data-[state=checked]:group-focus-visible:border-brand-focus\",\n \"group-data-[state=checked]:group-focus-visible:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-primary)]\",\n\n // 7: disabled, unchecked (override everything above)\n \"group-[&[data-disabled][data-state=unchecked]]:border-none\",\n \"group-[&[data-disabled][data-state=unchecked]]:bg-(--background-primary-disabled)\",\n\n // 8: disabled, checked (override everything above)\n \"group-[&[data-disabled][data-state=checked]]:border-primary-disabled\",\n \"group-[&[data-disabled][data-state=checked]]:bg-(--background-primary-disabled)\"\n )}\n >\n <span\n className={cn(\n \"h-4 w-4 rounded-full bg-(--background-brand) scale-0 transition-transform\",\n \"group-data-[state=checked]:scale-100\",\n \"group-data-[state=checked]:group-hover:bg-(--background-brand-hover)\",\n \"group-data-[state=checked]:group-focus-visible:bg-(--background-brand-hover)\",\n \"group-[&[data-disabled][data-state=checked]]:bg-(--background-brand-disabled)\",\n \"group-[&[data-disabled][data-state=unchecked]]:scale-0\",\n )}\n />\n </span>\n\n {/* Label */}\n <span\n className={cn(\n \"paragraph-sm text-primary\",\n \"group-data-disabled:text-primary-disabled whitespace-nowrap\"\n )}\n >\n {option.label}\n </span>\n </RadioGroupPrimitive.Item>\n </div>\n ))}\n </RadioGroupPrimitive.Root>\n </Field>\n );\n});\n\nRadioGroup.displayName = \"RadioGroup\";","import * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { SearchIcon } from \"@bubo-squared/icons\";\nimport { Input } from \"../ui/input\";\nimport { InputShell } from \"./InputShell\";\n\nexport type SearchInputSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface SearchInputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"disabled\"> {\n /**\n * Only needed when the component is a part of a native form.\n * Provide this to include the value in native form submission / FormData.\n */\n name?: string;\n placeholder?: string;\n leadingIcon?: React.ReactNode;\n showLeadingIcon?: boolean;\n trailingIcon?: React.ReactNode | null;\n size?: SearchInputSize;\n disabled?: boolean;\n}\n\nconst searchTextVariants = cva(\"truncate\", {\n variants: {\n size: {\n sm: \"paragraph-md\",\n md: \"paragraph-lg\",\n lg: \"subtitle\",\n xl: \"h6-title\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nconst iconWrapperVariants = cva(\"flex items-center justify-center shrink-0 text-(--icon-primary)\", {\n variants: {\n size: {\n sm: \"size-4 [&>svg]:size-4\",\n md: \"size-5 [&>svg]:size-5\",\n lg: \"size-5 [&>svg]:size-5\",\n xl: \"size-6 [&>svg]:size-6\",\n },\n disabled: {\n true: \"text-(--icon-primary-disabled)\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nexport const SearchInput = React.forwardRef<HTMLInputElement, SearchInputProps>((props, forwardedRef) => {\n const {\n placeholder = \"Search...\",\n size = \"md\",\n disabled,\n className,\n leadingIcon,\n showLeadingIcon = true,\n trailingIcon,\n ...inputProps\n } = props;\n\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n\n const setInputRef = React.useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n\n if (!forwardedRef) return;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node);\n } else {\n (forwardedRef as React.RefObject<HTMLInputElement | null>).current = node;\n }\n },\n [forwardedRef]\n );\n\n const handleContainerClick = () => {\n if (disabled) return;\n inputRef.current?.focus();\n };\n\n const showTrailingIcon = !!trailingIcon;\n\n return (\n <div className=\"flex flex-col gap-2 items-start w-full\">\n <div className=\"relative w-full\">\n <InputShell\n size={size}\n status=\"default\"\n disabled={disabled}\n className={className}\n onClick={handleContainerClick}\n >\n {showLeadingIcon && (\n <span className={cn(iconWrapperVariants({ size, disabled: !!disabled }))}>\n {leadingIcon ?? <SearchIcon />}\n </span>\n )}\n\n <Input\n ref={setInputRef}\n type=\"search\"\n placeholder={placeholder}\n disabled={disabled ?? undefined}\n variant=\"bare\"\n className={cn(\n searchTextVariants({ size })\n )}\n {...inputProps}\n />\n\n {showTrailingIcon && (\n <span className={cn(\"cursor-pointer\", iconWrapperVariants({ size, disabled: !!disabled }))}>\n {trailingIcon}\n </span>\n )}\n </InputShell>\n </div>\n </div>\n );\n});\n\nSearchInput.displayName = \"SearchInput\";\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { Tooltip } from \"@/components/Feedback/Tooltip\";\n\nconst wrapperBase = \"flex flex-col gap-2 items-start\";\n\nexport type SliderDisplay = \"flat\" | \"numeric\" | \"tooltip\";\nexport type SliderTooltipPlacement = \"top\" | \"bottom\";\n\nexport type SliderValue = number | [number, number];\n\ntype SliderBaseProps = {\n /**\n * Only needed when the component is a part of a native form.\n * Provide this to include the value in native form submission / FormData.\n *\n * Note: range sliders submit two values under the same name.\n */\n name?: string;\n display?: SliderDisplay;\n tooltipPlacement?: SliderTooltipPlacement;\n /**\n * Custom formatter for tooltip / numeric / accessibility text.\n * Receives the current slider value and should return display content.\n * If provided, it takes precedence over `showPercentage`.\n *\n * Accessibility note: when the formatter returns non-text content,\n * `aria-valuetext` falls back to the default numeric/percentage string.\n */\n tooltipFormatter?: (value: number) => React.ReactNode;\n /**\n * When true (default), values are rendered as percentages (e.g. \"30%\").\n * When false, raw numbers are shown instead.\n * Ignored when `tooltipFormatter` is provided.\n */\n showPercentage?: boolean;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n className?: string;\n};\n\nexport type SliderSingleProps = SliderBaseProps & {\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number) => void;\n};\n\nexport type SliderRangeProps = SliderBaseProps & {\n value?: [number, number];\n defaultValue?: [number, number];\n onValueChange?: (value: [number, number]) => void;\n};\n\nexport type SliderProps = SliderSingleProps | SliderRangeProps;\n\nconst isRangeProps = (props: SliderProps): props is SliderRangeProps => {\n return Array.isArray(props.value) || Array.isArray(props.defaultValue);\n};\n\nconst toArray = (value: SliderValue | undefined): number[] | undefined => {\n if (value === undefined) return undefined;\n return Array.isArray(value) ? value : [value];\n};\n\nexport const Slider = React.forwardRef<HTMLDivElement, SliderProps>((props, forwardedRef) => {\n const {\n name,\n display = \"flat\",\n tooltipPlacement = \"top\",\n tooltipFormatter,\n showPercentage = true,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n value,\n defaultValue,\n className\n } = props;\n\n const isRange = isRangeProps(props);\n const isControlled = value !== undefined;\n\n const expectedLength = isRange ? 2 : 1;\n\n const normalizeArray = React.useCallback(\n (arr: number[] | undefined, fallback: number[]): number[] => {\n if (!arr || arr.length === 0) return fallback;\n if (arr.length === expectedLength) return arr;\n if (arr.length > expectedLength) return arr.slice(0, expectedLength);\n if (arr.length === 1 && expectedLength === 2) {\n return [arr[0], max];\n }\n return fallback;\n },\n [expectedLength, max]\n );\n\n const defaultInternal = React.useMemo(() => {\n const defaultValueArray = toArray(defaultValue);\n if (defaultValueArray) return normalizeArray(defaultValueArray, []);\n if (isRange) return [min, Math.min(min + (max - min) / 4, max)];\n return [min + (max - min) / 3];\n }, [defaultValue, min, max, isRange, normalizeArray]);\n\n const [internalValue, setInternalValue] = React.useState<number[]>(\n () => normalizeArray(isControlled ? toArray(value) : defaultInternal, defaultInternal)\n );\n\n React.useEffect(() => {\n if (isControlled) {\n setInternalValue((current) =>\n normalizeArray(toArray(value), current.length ? current : defaultInternal)\n );\n }\n }, [isControlled, value, normalizeArray, defaultInternal]);\n\n const current = internalValue;\n\n const trackRef = React.useRef<HTMLDivElement | null>(null);\n const [draggingThumbIndex, setDraggingThumbIndex] = React.useState<number | null>(null);\n const [hoveredThumbIndex, setHoveredThumbIndex] = React.useState<number | null>(null);\n const [focusedThumbIndex, setFocusedThumbIndex] = React.useState<number | null>(null);\n\n const clamp = React.useCallback((val: number) => {\n if (val < min) return min;\n if (val > max) return max;\n return val;\n }, [min, max]);\n\n const enforceMinGap = React.useCallback((next: number[], prev: number[]): number[] => {\n if (!isRange || next.length !== 2 || step <= 0) return next;\n\n let [low, high] = next;\n const [prevLow, prevHigh] = prev.length === 2 ? prev : next;\n\n if (low > high) {\n [low, high] = [high, low];\n }\n\n const minGap = step;\n if (high - low < minGap) {\n const lowChanged = low !== prevLow;\n const highChanged = high !== prevHigh;\n\n if (lowChanged && !highChanged) {\n // Lower thumb moved: keep upper fixed, pull lower back\n low = clamp(high - minGap);\n } else if (highChanged && !lowChanged) {\n // Upper thumb moved: keep lower fixed, push upper forward\n high = clamp(low + minGap);\n } else {\n // Fallback: enforce gap relative to lower value\n high = clamp(low + minGap);\n }\n\n // Final safeguard to avoid inverted range after clamping\n if (high - low < minGap) {\n low = clamp(high - minGap);\n }\n }\n\n return [low, high];\n }, [isRange, step, clamp]);\n\n // When min or max change in uncontrolled mode, keep values within the new bounds\n React.useEffect(() => {\n if (!isControlled) {\n setInternalValue((prev) => {\n const clamped = prev.map((v) => clamp(v));\n if (isRange && clamped.length === 2 && step > 0) {\n return enforceMinGap(clamped, prev);\n }\n return clamped;\n });\n }\n }, [isControlled, clamp, enforceMinGap, isRange, step]);\n\n const snap = (val: number) => {\n const range = max - min;\n if (range <= 0 || step <= 0) return clamp(val);\n const stepsFromMin = Math.round((val - min) / step);\n return clamp(min + stepsFromMin * step);\n };\n\n const updateValue = (next: number[]) => {\n let normalized = normalizeArray(next, current);\n\n if (isRange && normalized.length === 2) {\n normalized = enforceMinGap(normalized, current);\n }\n\n if (!isControlled) {\n setInternalValue(normalized);\n }\n\n if (isRangeProps(props)) {\n props.onValueChange?.([normalized[0] ?? min, normalized[1] ?? max]);\n } else {\n props.onValueChange?.(normalized[0] ?? min);\n }\n };\n\n const getSnappedValueFromClientX = (clientX: number, track: HTMLDivElement) => {\n const rect = track.getBoundingClientRect();\n const offsetX = clientX - rect.left;\n const ratio = rect.width === 0 ? 0 : offsetX / rect.width;\n const rawValue = min + ratio * (max - min);\n return snap(rawValue);\n };\n\n const startDrag = (thumbIndex: number, clientX: number) => {\n if (disabled) return;\n const track = trackRef.current;\n if (!track) return;\n\n setDraggingThumbIndex(thumbIndex);\n\n const handlePointerMove = (event: PointerEvent) => {\n if (disabled) return;\n const snapped = getSnappedValueFromClientX(event.clientX, track);\n\n if (isRange && current.length === 2) {\n const [a, b] = current;\n if (thumbIndex === 0) {\n updateValue([snapped, b]);\n } else {\n updateValue([a, snapped]);\n }\n } else {\n updateValue([snapped]);\n }\n };\n\n const handlePointerUp = () => {\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", handlePointerUp);\n window.removeEventListener(\"pointercancel\", handlePointerUp);\n setDraggingThumbIndex(null);\n };\n\n // Apply initial position\n const initialSnapped = getSnappedValueFromClientX(clientX, track);\n if (isRange && current.length === 2) {\n const [a, b] = current;\n if (thumbIndex === 0) {\n updateValue([initialSnapped, b]);\n } else {\n updateValue([a, initialSnapped]);\n }\n } else {\n updateValue([initialSnapped]);\n }\n\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", handlePointerUp);\n window.addEventListener(\"pointercancel\", handlePointerUp);\n };\n\n const handleTrackPointerDown: React.PointerEventHandler<HTMLDivElement> = (event) => {\n if (disabled) return;\n if (event.button !== 0) return;\n const track = trackRef.current;\n if (!track) return;\n\n const snapped = getSnappedValueFromClientX(event.clientX, track);\n\n let thumbIndex = 0;\n if (isRange && current.length === 2) {\n const [a, b] = current;\n const distToA = Math.abs(snapped - a);\n const distToB = Math.abs(snapped - b);\n thumbIndex = distToA <= distToB ? 0 : 1;\n }\n\n event.preventDefault();\n startDrag(thumbIndex, event.clientX);\n };\n\n const handleThumbKeyDown = (\n index: number,\n event: React.KeyboardEvent<HTMLButtonElement>\n ) => {\n if (disabled) return;\n\n const key = event.key;\n let delta = 0;\n\n if (key === \"ArrowRight\" || key === \"ArrowUp\") {\n delta = step;\n } else if (key === \"ArrowLeft\" || key === \"ArrowDown\") {\n delta = -step;\n } else if (key === \"Home\") {\n updateValue(\n current.map((v, i) => (i === index ? min : v))\n );\n event.preventDefault();\n return;\n } else if (key === \"End\") {\n updateValue(\n current.map((v, i) => (i === index ? max : v))\n );\n event.preventDefault();\n return;\n }\n\n if (delta !== 0) {\n const next = current.map((v, i) =>\n i === index ? snap(v + delta) : v\n );\n updateValue(next);\n event.preventDefault();\n }\n };\n\n const [primary, secondary] =\n isRange && current.length === 2\n ? [current[0], current[1]]\n : [current[0], undefined];\n\n const valueToPercent = (val: number | undefined) => {\n if (val === undefined) return 0;\n if (max === min) return 0;\n const clamped = clamp(val);\n return ((clamped - min) / (max - min)) * 100;\n };\n\n const primaryPercent = valueToPercent(primary);\n const secondaryPercent = valueToPercent(secondary);\n\n const showNumeric = display === \"numeric\";\n const showTooltip = display === \"tooltip\";\n\n const isDecimalDomain =\n !Number.isInteger(step) ||\n !Number.isInteger(min) ||\n !Number.isInteger(max);\n\n const formatNumber = (num: number): string => {\n if (!isDecimalDomain) {\n return `${Math.round(num)}`;\n }\n const rounded = Number(num.toFixed(2));\n if (Number.isInteger(rounded)) {\n return `${rounded}`;\n }\n return rounded.toFixed(2);\n };\n\n const formatFallbackText = (val: number | undefined): string => {\n const value = val ?? min;\n if (showPercentage) {\n const percent = valueToPercent(value);\n return `${formatNumber(percent)}%`;\n }\n return formatNumber(value);\n };\n\n const formatDisplayNode = (val: number | undefined): React.ReactNode => {\n const value = val ?? min;\n if (tooltipFormatter) return tooltipFormatter(value);\n return formatFallbackText(value);\n };\n\n const formatAriaValueText = (val: number | undefined): string => {\n const fallback = formatFallbackText(val);\n if (!tooltipFormatter) return fallback;\n\n const node = tooltipFormatter(val ?? min);\n if (typeof node === \"string\") return node;\n if (typeof node === \"number\") return String(node);\n return fallback;\n };\n\n const formatNumericLabel = (): React.ReactNode => {\n if (isRange && secondary !== undefined) {\n // Special-case: numeric + percentage for range should show \"x-y\" (no % symbols)\n if (!tooltipFormatter && showPercentage && display === \"numeric\") {\n const first = formatNumber(valueToPercent(primary));\n const second = formatNumber(valueToPercent(secondary));\n return `${first} - ${second}`;\n }\n return (\n <>\n {formatDisplayNode(primary)} - {formatDisplayNode(secondary)}\n </>\n );\n }\n return formatDisplayNode(primary);\n };\n\n const trackHeight = 32;\n const thumbWidth = 18;\n const thumbRadius = thumbWidth / 2;\n\n const renderHandle = (\n index: number,\n percent: number,\n tooltipContent: React.ReactNode,\n ariaValueText: string\n ) => {\n const val = index === 0 ? primary : secondary;\n const isDragging = draggingThumbIndex === index;\n\n const isTooltipVisible =\n showTooltip &&\n (hoveredThumbIndex === index || draggingThumbIndex === index || focusedThumbIndex === index);\n\n const handle = (\n <button\n key={index}\n type=\"button\"\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={val}\n aria-valuetext={ariaValueText}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n className={cn(\n \"absolute -translate-x-1/2 flex items-center justify-center\",\n \"h-8 w-4.5 rounded-8\",\n \"transition-shadow duration-150\",\n !disabled &&\n (isDragging\n ? \"shadow-[0_0_0_12px_var(--slider-halo-color)]\"\n : \"hover:shadow-[0_0_0_8px_var(--slider-halo-color)]\"),\n disabled\n ? \"bg-(--icon-primary-disabled) cursor-default\"\n : \"bg-(--icon-primary-hover) outline-none focus-visible:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-primary)] cursor-pointer\"\n )}\n style={{\n left: `${percent}%`,\n top: `calc(50% - ${trackHeight / 2}px)`,\n \"--slider-halo-color\": \"color-mix(in srgb, var(--color-brand) 15%, transparent)\",\n } as React.CSSProperties}\n onPointerEnter={() => {\n setHoveredThumbIndex(index);\n }}\n onPointerLeave={() => {\n setHoveredThumbIndex((prev) => (prev === index ? null : prev));\n }}\n onFocus={() => {\n setFocusedThumbIndex(index);\n }}\n onBlur={() => {\n setFocusedThumbIndex((prev) => (prev === index ? null : prev));\n }}\n onPointerDown={(event) => {\n if (disabled) return;\n if (event.button !== 0) return;\n event.preventDefault();\n startDrag(index, event.clientX);\n }}\n onKeyDown={(event) => handleThumbKeyDown(index, event)}\n />\n );\n\n if (!showTooltip) return handle;\n\n return (\n <Tooltip\n title={tooltipContent}\n placement={tooltipPlacement === \"top\" ? \"top\" : \"bottom\"}\n offset={8}\n open={isTooltipVisible}\n disableHoverableContent\n className=\"z-50 pointer-events-none py-2\"\n >\n {handle}\n </Tooltip>\n );\n };\n\n return (\n <div\n className={wrapperBase}\n style={{ marginInline: `${thumbRadius}px` }}\n ref={forwardedRef}\n >\n {name && (\n <>\n <input\n type=\"hidden\"\n name={name}\n value={primary === undefined ? \"\" : String(primary)}\n disabled={disabled}\n />\n {isRange && secondary !== undefined && (\n <input\n type=\"hidden\"\n name={name}\n value={String(secondary)}\n disabled={disabled}\n />\n )}\n </>\n )}\n\n <div className={cn(\"w-full flex flex-col gap-1\", className)}>\n <div className=\"relative w-full\">\n <div\n className={cn(\n \"relative w-full flex items-center rounded-8\",\n disabled\n ? \"bg-(--background-slider-track-disabled) cursor-default\"\n : \"bg-(--background-slider-track) cursor-pointer\"\n )}\n style={{ height: `${trackHeight}px` }}\n ref={trackRef}\n onPointerDown={handleTrackPointerDown}\n >\n <div\n className={cn(\n \"absolute h-full rounded-8\",\n disabled\n ? \"bg-(--background-slider-track-disabled)\"\n : \"bg-(--background-slider-track)\"\n )}\n style={{\n width: `calc(100% + ${thumbWidth}px)`,\n left: `-${thumbRadius}px`,\n }}\n />\n {renderHandle(\n 0,\n primaryPercent,\n formatDisplayNode(primary),\n formatAriaValueText(primary)\n )}\n {isRange && secondary !== undefined &&\n renderHandle(\n 1,\n secondaryPercent,\n formatDisplayNode(secondary),\n formatAriaValueText(secondary)\n )}\n </div>\n </div>\n\n {showNumeric && (\n <p\n className={cn(\n \"paragraph-sm text-primary\",\n disabled && \"text-primary-disabled\"\n )}\n >\n {formatNumericLabel()}\n </p>\n )}\n </div>\n </div>\n );\n});\n\nSlider.displayName = \"Slider\";\n","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { cn } from \"@/lib/utils\";\n\nconst TooltipArrow = TooltipPrimitive.Arrow;\nexport type TooltipPlacement =\n | \"top\"\n | \"topLeft\"\n | \"topRight\"\n | \"bottom\"\n | \"bottomLeft\"\n | \"bottomRight\"\n | \"left\"\n | \"leftTop\"\n | \"leftBottom\"\n | \"right\"\n | \"rightTop\"\n | \"rightBottom\";\n\nexport interface TooltipProps {\n children: React.ReactNode;\n strapline?: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n showArrow?: boolean;\n className?: string;\n placement?: TooltipPlacement;\n offset?: number;\n disableHoverableContent?: boolean;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n delayDuration?: number;\n}\n\nconst REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\");\nconst REACT_MEMO_TYPE = Symbol.for(\"react.memo\");\n\nconst canAcceptRef = (child: React.ReactElement): boolean => {\n const type = child.type as unknown as { $$typeof?: unknown; type?: { $$typeof?: unknown } };\n\n // Native DOM elements always accept refs.\n if (typeof child.type === \"string\") return true;\n\n // React.forwardRef(...) or React.memo(forwardRef(...))\n if (type?.$$typeof === REACT_FORWARD_REF_TYPE) return true;\n if (type?.$$typeof === REACT_MEMO_TYPE && type.type?.$$typeof === REACT_FORWARD_REF_TYPE) {\n return true;\n }\n\n return false;\n};\n\nconst mapPlacementToSideAndAlign = (\n placement: TooltipPlacement\n): {\n side: TooltipPrimitive.TooltipContentProps[\"side\"];\n align: TooltipPrimitive.TooltipContentProps[\"align\"];\n} => {\n switch (placement) {\n case \"top\":\n return { side: \"top\", align: \"center\" };\n case \"topLeft\":\n return { side: \"top\", align: \"start\" };\n case \"topRight\":\n return { side: \"top\", align: \"end\" };\n case \"bottom\":\n return { side: \"bottom\", align: \"center\" };\n case \"bottomLeft\":\n return { side: \"bottom\", align: \"start\" };\n case \"bottomRight\":\n return { side: \"bottom\", align: \"end\" };\n case \"left\":\n return { side: \"left\", align: \"center\" };\n case \"leftTop\":\n return { side: \"left\", align: \"start\" };\n case \"leftBottom\":\n return { side: \"left\", align: \"end\" };\n case \"right\":\n return { side: \"right\", align: \"center\" };\n case \"rightTop\":\n return { side: \"right\", align: \"start\" };\n case \"rightBottom\":\n return { side: \"right\", align: \"end\" };\n default:\n return { side: \"top\", align: \"center\" };\n }\n};\n\nexport const Tooltip: React.FC<TooltipProps> = (props) => {\n const {\n strapline,\n title,\n description,\n showArrow = true,\n className,\n placement = \"top\",\n offset = 10,\n disableHoverableContent,\n open,\n defaultOpen,\n onOpenChange,\n children,\n delayDuration = 200\n } = props;\n\n const trigger = React.isValidElement(children) && canAcceptRef(children)\n ? children\n : (\n <span className=\"inline-flex\" tabIndex={0}>\n {children}\n </span>\n );\n\n const hasStrapline =\n typeof strapline === \"string\" ? strapline.trim() !== \"\" : strapline != null;\n const hasDescription =\n typeof description === \"string\" ? description.trim() !== \"\" : description != null;\n\n const { side, align } = mapPlacementToSideAndAlign(placement);\n\n const tooltipClasses =\n \"group bg-(--background-tooltip) max-w-[calc(100vw-2rem)] shadow-card-md border-none rounded-4 py-1.5 px-2.5 [&>span]:scale-200 \" +\n \"data-[state=delayed-open]:animate-in data-[state=instant-open]:animate-in \" +\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 \" +\n \"data-[state=delayed-open]:fade-in-0 data-[state=instant-open]:fade-in-0 \" +\n \"data-[state=delayed-open]:zoom-in-95 data-[state=instant-open]:zoom-in-95 \" +\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 \" +\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\";\n\n const tooltipArrowClasses =\n \"relative fill-(--background-tooltip) transition-[filter,transform] \" +\n \"group-data-[side=top]:top-[-2px] \" +\n \"group-data-[side=top]:drop-shadow-[0px_1px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] \" +\n \"group-data-[side=bottom]:drop-shadow-[0px_1px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] \" +\n \"group-data-[side=left]:drop-shadow-[0px_2px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] \" +\n \"group-data-[side=right]:drop-shadow-[0px_2px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)]\";\n\n return (\n <TooltipPrimitive.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n disableHoverableContent={disableHoverableContent}\n delayDuration={delayDuration}\n >\n <TooltipPrimitive.Trigger asChild>{trigger}</TooltipPrimitive.Trigger>\n\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n align={align}\n sideOffset={offset}\n className={cn(tooltipClasses, className)}\n >\n {showArrow && <TooltipArrow className={tooltipArrowClasses} />}\n\n <div className=\"grid\">\n {hasStrapline && (\n <span className=\"caption text-secondary\">{strapline}</span>\n )}\n <h4 className=\"paragraph-md text-primary\">{title}</h4>\n {hasDescription && (\n <p className=\"paragraph-sm text-primary\">{description}</p>\n )}\n </div>\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n );\n};\n\nTooltip.displayName = \"Tooltip\";","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport type { TextInputStatus } from \"./TextInput\";\nimport { MaximizeIcon } from \"@bubo-squared/icons\";\nimport { Field } from \"./Field\";\n\nexport type TextAreaType = \"responsive\" | \"character-limit\" | \"plain\";\n\nexport interface TextAreaProps\n extends Omit<\n React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n \"disabled\"\n > {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n /**\n * If true, the hint will not be rendered even if provided.\n */\n hideHint?: boolean;\n /**\n * Only needed when the component is a part of a native form.\n * Provide this to include the value in native form submission / FormData.\n */\n name?: string;\n status?: TextInputStatus;\n /**\n * Visual/behavioural variant.\n * - \"responsive\": regular textarea with resize handle.\n * - \"character-limit\": shows character counter, expects maxLength.\n * - \"plain\": no character limit or resize icon.\n */\n type?: TextAreaType;\n /**\n * Maximum number of characters allowed. Used by \"character-limit\" variant\n * and passed through to the underlying <textarea> as maxLength.\n */\n maxLength?: number;\n /**\n * Optional trailing icon rendered in the top-right corner of the field.\n */\n disabled?: boolean;\n}\n\nexport const TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>((props, forwardedRef) => {\n const {\n label,\n hint,\n hideHint,\n status = \"default\",\n type = \"responsive\",\n maxLength,\n disabled,\n className,\n value,\n defaultValue,\n onChange,\n rows = 3,\n id,\n name,\n ...textareaProps\n } = props;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<string>(\n (defaultValue as string | undefined) ?? \"\"\n );\n\n const currentValue =\n (isControlled ? (value as string | undefined) : internalValue) ?? \"\";\n const hasValue = currentValue.length > 0;\n const currentLength = currentValue.length;\n const effectiveMaxLength = type === \"character-limit\" ? maxLength ?? 144 : undefined;\n\n const showCharacterLimit =\n type === \"character-limit\" && typeof effectiveMaxLength === \"number\";\n\n const textareaRef = React.useRef<HTMLTextAreaElement | null>(null);\n const containerRef = React.useRef<HTMLDivElement | null>(null);\n\n const setTextareaRef = React.useCallback(\n (node: HTMLTextAreaElement | null) => {\n textareaRef.current = node;\n\n if (!forwardedRef) return;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node);\n } else {\n (forwardedRef as React.RefObject<HTMLTextAreaElement | null>).current = node;\n }\n },\n [forwardedRef]\n );\n\n const [height, setHeight] = React.useState<number | undefined>(undefined);\n const [width, setWidth] = React.useState<number | undefined>(undefined);\n const minHeight = 80;\n const minWidth = 240;\n\n const handleContainerClick = () => {\n if (disabled) return;\n textareaRef.current?.focus();\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!isControlled) {\n setInternalValue(event.target.value);\n }\n onChange?.(event);\n };\n\n const generatedId = React.useId();\n const textareaId = id ?? generatedId;\n\n const statusBorderClass: Record<TextInputStatus, string> = {\n default: \"\",\n success: \"border-success\",\n error: \"border-error\",\n };\n\n const statusShellClass: Record<TextInputStatus, string> = {\n default: \"input-default\",\n success: \"input-success\",\n error: \"input-error\",\n };\n\n const counterColorClass = disabled\n ? \"text-primary-disabled\"\n : status === \"success\"\n ? \"text-(--color-success)\"\n : status === \"error\"\n ? \"text-(--color-error)\"\n : \"text-primary\";\n\n const handleResizePointerDown: React.PointerEventHandler<HTMLDivElement> = (\n event\n ) => {\n if (disabled) return;\n if (event.button !== 0) return;\n const container = containerRef.current;\n if (!container) return;\n\n event.preventDefault();\n\n const startX = event.clientX;\n const startY = event.clientY;\n const { height: startHeight, width: startWidth } =\n container.getBoundingClientRect();\n\n const handlePointerMove = (e: PointerEvent) => {\n const deltaX = e.clientX - startX;\n const deltaY = e.clientY - startY;\n\n const nextHeight = Math.max(minHeight, startHeight + deltaY);\n const nextWidth = Math.max(minWidth, startWidth + deltaX);\n\n setHeight(nextHeight);\n setWidth(nextWidth);\n };\n\n const handlePointerUp = () => {\n window.removeEventListener(\"pointermove\", handlePointerMove);\n window.removeEventListener(\"pointerup\", handlePointerUp);\n };\n\n window.addEventListener(\"pointermove\", handlePointerMove);\n window.addEventListener(\"pointerup\", handlePointerUp);\n };\n\n return (\n <Field\n className=\"w-full\"\n label={label}\n hint={hint}\n hideHint={hideHint}\n status={status}\n disabled={disabled}\n >\n <div\n className={cn(\n \"relative flex w-full rounded-8 border bg-(--background-primary) cursor-text\",\n \"border-secondary\",\n statusShellClass[status],\n disabled &&\n \"bg-(--background-primary-disabled) border-secondary-disabled cursor-default\",\n statusBorderClass[status],\n className\n )}\n ref={containerRef}\n style={{\n ...(type === \"responsive\" && height !== undefined ? { height } : {}),\n ...(type === \"responsive\" && width !== undefined ? { width } : {}),\n }}\n onClick={handleContainerClick}\n aria-disabled={disabled || undefined}\n >\n <textarea\n id={textareaId}\n name={name}\n ref={setTextareaRef}\n disabled={disabled ?? undefined}\n value={isControlled ? value : currentValue}\n defaultValue={isControlled ? undefined : defaultValue}\n onChange={handleChange}\n rows={rows}\n maxLength={effectiveMaxLength}\n className={cn(\n \"paragraph-md bg-transparent outline-none w-full h-full resize-none px-2 py-2 pr-8\",\n disabled\n ? \"text-primary-disabled\"\n : hasValue\n ? \"text-primary\"\n : \"text-(--color-secondary)\",\n showCharacterLimit && \"pr-16\"\n )}\n {...textareaProps}\n />\n\n {showCharacterLimit && (\n <span\n className={cn(\n \"absolute bottom-1 right-1 footnote mb-0!\",\n counterColorClass\n )}\n >\n {currentLength}/{effectiveMaxLength}\n </span>\n )}\n\n {type === \"responsive\" && (\n <div\n className={\n \"absolute bottom-1 right-1 h-3 w-3 \" +\n (disabled ? \"cursor-auto\" : \"cursor-nwse-resize\")\n }\n onPointerDown={disabled ? undefined : handleResizePointerDown}\n >\n <span\n className={cn(\n \"absolute bottom-0 right-0 flex h-4 w-4 items-center justify-center text-(--icon-primary)\",\n disabled && \"text-(--icon-primary-disabled)\"\n )}\n >\n <MaximizeIcon />\n </span>\n </div>\n )}\n </div>\n </Field>\n );\n});\n\nTextArea.displayName = \"TextArea\";\n","import * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { Input } from \"../ui/input\";\nimport { Field } from \"./Field\";\nimport { InputShell } from \"./InputShell\";\n\nexport type TextInputSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type TextInputStatus = \"default\" | \"success\" | \"error\";\n\nconst inputTextVariants = cva(\"truncate\", {\n variants: {\n size: {\n sm: \"paragraph-md\",\n md: \"paragraph-lg\",\n lg: \"subtitle\",\n xl: \"h6-title\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nconst iconWrapperVariants = cva(\n \"flex items-center justify-center shrink-0 text-(--icon-primary)\",\n {\n variants: {\n size: {\n sm: \"size-4 [&>svg]:size-4\",\n md: \"size-5 [&>svg]:size-5\",\n lg: \"size-5 [&>svg]:size-5\",\n xl: \"size-6 [&>svg]:size-6\",\n },\n disabled: {\n true: \"text-(--icon-primary-disabled)\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\nexport interface TextInputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"disabled\"> {\n label?: React.ReactNode;\n hint?: React.ReactNode;\n /**\n * If true, the hint will not be rendered even if provided.\n */\n hideHint?: boolean;\n /**\n * Only needed when the component is a part of a native form.\n * Provide this to include the value in native form submission / FormData.\n */\n name?: string;\n placeholder?: string;\n status?: TextInputStatus;\n size?: TextInputSize;\n disabled?: boolean;\n leadingIcon?: React.ReactNode | null;\n trailingIcon?: React.ReactNode | null;\n}\n\nexport const TextInput = React.forwardRef<HTMLInputElement, TextInputProps>((props, forwardedRef) => {\n const {\n label,\n hint,\n hideHint,\n placeholder = \"Placeholder text\",\n size = \"md\",\n status = \"default\",\n disabled = false,\n className,\n leadingIcon,\n trailingIcon,\n value,\n defaultValue,\n onChange,\n ...inputProps\n } = props;\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<string>(\n (defaultValue as string | undefined) ?? \"\"\n );\n\n const currentValue = (isControlled ? (value as string | undefined) : internalValue) ?? \"\";\n\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n\n const setInputRef = React.useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n\n if (!forwardedRef) return;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node);\n } else {\n (forwardedRef as React.RefObject<HTMLInputElement | null>).current = node;\n }\n },\n [forwardedRef]\n );\n\n const handleContainerClick = () => {\n if (disabled) return;\n inputRef.current?.focus();\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(event.target.value);\n }\n onChange?.(event);\n };\n const showLeadingIcon = !!leadingIcon;\n const showTrailingIcon = !!trailingIcon;\n\n return (\n <Field\n label={label}\n hint={hint}\n hideHint={hideHint}\n status={status}\n disabled={disabled}\n >\n <InputShell\n size={size}\n status={status}\n disabled={disabled}\n className={className}\n onClick={handleContainerClick}\n >\n {showLeadingIcon && (\n <span\n className={cn(\n iconWrapperVariants({ size, disabled })\n )}\n >\n {leadingIcon}\n </span>\n )}\n\n <Input\n ref={setInputRef}\n type=\"text\"\n disabled={disabled ?? undefined}\n placeholder={placeholder}\n value={isControlled ? value : currentValue}\n defaultValue={isControlled ? undefined : defaultValue}\n onChange={handleChange}\n variant=\"bare\"\n className={cn(\n inputTextVariants({ size }),\n \"bg-transparent outline-none w-full\"\n )}\n {...inputProps}\n />\n\n {showTrailingIcon && (\n <span\n className={cn(\n iconWrapperVariants({ size, disabled: !!disabled })\n )}\n >\n {trailingIcon}\n </span>\n )}\n </InputShell>\n </Field>\n );\n});\n\nTextInput.displayName = \"TextInput\";\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface ToggleProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\"> {\n /**\n * Only needed when the component is a part of a native form.\n * Provide this to include the checked value in native form submission / FormData.\n */\n name?: string;\n label?: React.ReactNode;\n}\n\nexport const Toggle = React.forwardRef<HTMLInputElement, ToggleProps>((props, forwardedRef) => {\n const { label, className, disabled, ...inputProps } = props;\n\n return (\n <label\n className={cn(\n \"inline-flex items-center gap-2 select-none\",\n disabled ? \"cursor-default\" : \"cursor-pointer\"\n )}\n >\n <span className=\"relative inline-flex items-center\">\n {/* Hidden native checkbox drives checked/disabled/focus state */}\n <input\n ref={forwardedRef}\n type=\"checkbox\"\n disabled={disabled}\n className=\"peer sr-only\"\n {...inputProps}\n />\n\n {/* Slider (track + knob) */}\n <span\n className={cn(\n // Base track\n \"flex items-center w-9 h-5 rounded-24 border bg-(--background-primary) p-(--space-2) transition-all\",\n // Knob position\n \"justify-start peer-checked:justify-end\",\n // 1: enabled, unchecked, unhovered, unfocused\n \"border-secondary\",\n // 3: enabled, unchecked, hovered, unfocused\n \"hover:border-secondary-hover\",\n // 2: enabled, checked, unhovered, unfocused\n \"peer-checked:border-brand\",\n // 4: enabled, checked, hovered, unfocused\n \"peer-checked:hover:border-brand-hover\",\n \"peer-checked:hover:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-secondary)]\",\n // 5: enabled, unchecked, unhovered, focused\n \"peer-focus-visible:border-brand-focus\",\n // 6: enabled, checked, unhovered, focused\n \"peer-checked:peer-focus-visible:bg-(--background-brand-focus)\",\n \"peer-checked:peer-focus-visible:shadow-[0_0_0_var(--focus-ring-spread)_var(--focus-primary)]\",\n // 7: disabled, unchecked (override)\n \"peer-disabled:bg-(--background-primary-disabled)\",\n \"peer-disabled:border-none\",\n \"peer-disabled:shadow-none\",\n // 8: disabled, checked (override)\n \"peer-disabled:peer-checked:border-primary-disabled\",\n // Disable hover when disabled\n \"peer-disabled:pointer-events-none\",\n\n // Knob on (enabled)\n \"peer-checked:[&>.knob]:bg-(--background-brand)\",\n // Hover / focus when on\n \"peer-checked:[&>.knob]:hover:bg-(--background-brand-hover)\",\n \"peer-checked:peer-focus-visible:[&>.knob]:bg-(--background-neutral)\",\n // Disabled knob (both off and on use disabled brand token)\n \"peer-disabled:[&>.knob]:bg-(--background-primary-hover)\",\n \"peer-disabled:[&>.knob]:peer-checked:bg-(--background-primary-hover)\",\n className\n )}\n >\n <span\n className={cn(\n \"h-4 w-4 rounded-full transition-colors knob\",\n \"bg-b-100\",\n )}\n />\n </span>\n </span>\n\n {label && (\n <span\n className={cn(\n \"paragraph-sm text-primary\",\n disabled && \"text-primary-disabled\"\n )}\n >\n {label}\n </span>\n )}\n </label>\n );\n});\n\nToggle.displayName = \"Toggle\";\n\n","import * as React from \"react\";\nimport { TextInput, type TextInputProps } from \"./TextInput\";\nimport { cn } from \"@/lib/utils\";\n\nexport type WebsiteInputHierarchy = \"leading\" | \"trailing\";\n\nexport interface WebsiteInputProps\n extends Omit<TextInputProps, \"leadingIcon\" | \"trailingIcon\"> {\n /**\n * Position of the protocol add-on (label + icon).\n * - \"leading\": add-on on the left side of the field\n * - \"trailing\": add-on on the right side of the field\n */\n hierarchy?: WebsiteInputHierarchy;\n /**\n * Text shown inside the protocol add-on (e.g. \"http://\", \"https://\").\n */\n protocolLabel?: string;\n /**\n * Optional icon shown next to the protocol label\".\n */\n icon?: React.ReactNode | null;\n}\n\nexport const WebsiteInput = React.forwardRef<HTMLInputElement, WebsiteInputProps>((props, forwardedRef) => {\n const {\n hierarchy = \"leading\",\n protocolLabel = \"http://\",\n icon,\n size = \"md\",\n disabled,\n className,\n ...rest\n } = props;\n\n const isLeading = hierarchy === \"leading\";\n\n const spanHeightClass =\n size === \"xl\"\n ? \"[&>span]:h-14!\"\n : size === \"lg\"\n ? \"[&>span]:h-11!\"\n : size === \"md\"\n ? \"[&>span]:h-10!\"\n : \"[&>span]:h-8!\";\n\n const baseClass = cn(\n \"[&>span]:w-[unset] hover:bg-[unset]\",\n !disabled &&\n \"[&:not(:focus-within):hover]:shadow-[0_0_0_var(--focus-ring-spread)_var(--background-secondary-hover)]\",\n disabled &&\n \"bg-[unset] hover:shadow-none hover:border-secondary-disabled border-secondary-disabled\",\n spanHeightClass,\n )\n\n const addonTextClass = cn(\n \"flex mb-0!\",\n size === \"xl\" ? \"paragraph-md\" : size === \"sm\" ? \"paragraph-md\" : \"paragraph-sm\",\n disabled\n ? \"text-primary-disabled\"\n : \"text-primary group-hover:text-(--color-primary-hover) group-focus-within:text-(--color-primary-focus)\"\n );\n\n const baseAddonClass = cn(\n \"flex items-center gap-2 px-2 h-full\", // layout + padding\n \"border-secondary\", // divider color\n disabled &&\n \"border-secondary-disabled hover:border-secondary-disabled\",\n isLeading ? \"border-r\" : \"border-l\"\n );\n\n const iconWrapperClass = cn(\n \"flex items-center justify-center shrink-0\",\n size === \"xl\"\n ? \"[&>svg]:w-6 [&>svg]:h-6\"\n : size === \"sm\"\n ? \"[&>svg]:w-4 [&>svg]:h-4\"\n : \"[&>svg]:w-5 [&>svg]:h-5\",\n disabled\n ? \"text-(--icon-primary-disabled)\"\n : \"text-(--icon-primary) group-hover:text-(--icon-primary-hover) group-focus-within:text-(--icon-primary-focus)\"\n );\n\n const leadingAddon = (\n <div className={baseAddonClass}>\n <div className={addonTextClass}>{protocolLabel}</div>\n {icon != null && <span className={iconWrapperClass}>{icon}</span>}\n </div>\n );\n\n const trailingAddon = (\n <div className={baseAddonClass}>\n {icon != null && <span className={iconWrapperClass}>{icon}</span>}\n <div className={addonTextClass}>{protocolLabel}</div>\n </div>\n );\n\n return (\n <TextInput\n ref={forwardedRef}\n {...rest}\n size={size}\n disabled={disabled}\n className={cn(baseClass, className)}\n leadingIcon={isLeading ? leadingAddon : undefined}\n trailingIcon={!isLeading ? trailingAddon : undefined}\n />\n );\n});\n\nWebsiteInput.displayName = \"WebsiteInput\";\n","import * as React from \"react\";\nimport { Popover as ShadPopover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { Button, cn } from \"@/index\";\n\nconst PopoverArrow = PopoverPrimitive.Arrow;\n\ntype PopoverPlacement =\n | \"top\"\n | \"topLeft\"\n | \"topRight\"\n | \"bottom\"\n | \"bottomLeft\"\n | \"bottomRight\"\n | \"left\"\n | \"leftTop\"\n | \"leftBottom\"\n | \"right\"\n | \"rightTop\"\n | \"rightBottom\";\n\ninterface PopoverProps {\n children: React.ReactNode;\n strapline?: React.ReactNode;\n title: React.ReactNode;\n description?: React.ReactNode;\n onOk?: () => void;\n okText?: string;\n onCancel?: () => void;\n cancelText?: string;\n showArrow?: boolean;\n className?: string;\n /**\n * Controls where the popover appears relative to the trigger.\n * Examples: \"bottomRight\", \"top\", \"left\".\n */\n placement?: PopoverPlacement;\n /**\n * Distance between the trigger and the popover.\n * This is forwarded to Radix's `sideOffset`, useful when adjusting\n * the arrow size so the content clears the trigger.\n */\n offset?: number;\n /**\n * If provide, this content will be rendered inside the popover \n * instead of the default layout with strapline, title, description and buttons.\n * Can be a ReactNode or a function that receives close/ok/cancel handlers.\n */\n customContent?: React.ReactNode | ((props: { close: () => void, ok: () => void, cancel: () => void }) => React.ReactNode);\n}\n\nexport const Popover: React.FC<PopoverProps> = (props) => {\n\n const {\n strapline, title, description,\n onOk, okText, onCancel, cancelText,\n showArrow = true, className,\n placement = \"bottom\", offset = 10,\n customContent, children\n } = props;\n\n const hasStrapline =\n typeof strapline === \"string\" ? strapline.trim() !== \"\" : strapline != null;\n const hasDescription =\n typeof description === \"string\" ? description.trim() !== \"\" : description != null;\n\n const [open, setOpen] = React.useState(false);\n\n const handleCancel = () => {\n onCancel?.();\n setOpen(false);\n };\n\n const handleOk = () => {\n onOk?.();\n setOpen(false);\n };\n\n const popoverClasses =\n \"group bg-(--background-popover) popover w-80 max-w-[calc(100vw-2rem)] shadow-card-md border-none [&>span]:scale-240 rounded-8\";\n\n const popoverArrowClasses =\n \"relative fill-(--background-popover) transition-[filter,transform] \" +\n \"group-data-[side=top]:top-[-2px] \" +\n \"group-data-[side=top]:drop-shadow-[0px_2px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] \" +\n \"group-data-[side=bottom]:drop-shadow-[0px_1px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] \" +\n \"group-data-[side=left]:drop-shadow-[0px_2px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)] \" +\n \"group-data-[side=right]:drop-shadow-[0px_2px_1px_color-mix(in_srgb,_var(--color-b-black-10)_66%,_transparent)]\";\n\n const mapPlacementToSideAndAlign = (placement: PopoverPlacement): {\n side: PopoverPrimitive.PopoverContentProps[\"side\"];\n align: PopoverPrimitive.PopoverContentProps[\"align\"];\n } => {\n switch (placement) {\n case \"top\":\n return { side: \"top\", align: \"center\" };\n case \"topLeft\":\n return { side: \"top\", align: \"start\" };\n case \"topRight\":\n return { side: \"top\", align: \"end\" };\n case \"bottom\":\n return { side: \"bottom\", align: \"center\" };\n case \"bottomLeft\":\n return { side: \"bottom\", align: \"start\" };\n case \"bottomRight\":\n return { side: \"bottom\", align: \"end\" };\n case \"left\":\n return { side: \"left\", align: \"center\" };\n case \"leftTop\":\n return { side: \"left\", align: \"start\" };\n case \"leftBottom\":\n return { side: \"left\", align: \"end\" };\n case \"right\":\n return { side: \"right\", align: \"center\" };\n case \"rightTop\":\n return { side: \"right\", align: \"start\" };\n case \"rightBottom\":\n return { side: \"right\", align: \"end\" };\n default:\n return { side: \"bottom\", align: \"center\" };\n }\n };\n\n const { side, align } = mapPlacementToSideAndAlign(placement);\n return (\n <ShadPopover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n {children}\n </PopoverTrigger>\n <PopoverContent\n side={side}\n align={align}\n sideOffset={offset}\n className={cn(popoverClasses, className)}\n >\n {showArrow && (\n <PopoverArrow className={popoverArrowClasses} />\n )}\n {customContent ? (\n typeof customContent === 'function'\n ? customContent({ close: () => setOpen(false), ok: handleOk, cancel: handleCancel })\n : customContent\n ) : (\n <div className=\"grid gap-4\">\n <div className=\"space-y-2\">\n {hasStrapline && (\n <span className={\"caption text-secondary\"}>{strapline}</span>\n )}\n <h4 className={\"subtitle-medium text-primary\"}>{title}</h4>\n {hasDescription && (\n <p className={\"paragraph-sm text-primary\"}>{description}</p>\n )}\n </div>\n <div className=\"flex justify-start items-center gap-4 flex-wrap\">\n <Button size={\"sm\"} variant={\"secondary\"} onClick={handleCancel}>{cancelText || \"Cancel\"}</Button>\n <Button size={\"sm\"} variant={\"primary\"} onClick={handleOk}>{okText || \"Ok\"}</Button>\n </div>\n </div>\n )}\n </PopoverContent>\n </ShadPopover>\n )\n}\n\nPopover.displayName = \"Popover\";","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nexport interface TooltipProviderProps {\n children: React.ReactNode;\n delayDuration?: number;\n skipDelayDuration?: number;\n disableHoverableContent?: boolean;\n}\n\nexport const TooltipProvider: React.FC<TooltipProviderProps> = (props) => {\n const {\n children,\n delayDuration = 200,\n skipDelayDuration = 300,\n disableHoverableContent = false,\n } = props;\n\n return (\n <TooltipPrimitive.Provider\n delayDuration={delayDuration}\n skipDelayDuration={skipDelayDuration}\n disableHoverableContent={disableHoverableContent}\n >\n {children}\n </TooltipPrimitive.Provider>\n );\n};\n\nTooltipProvider.displayName = \"TooltipProvider\";\n","import * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n} from \"@/components/ui/breadcrumb\";\nimport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n} from \"@/components/ui/dropdown-menu\";\n\nconst breadcrumbSeparatorVariants =\n \"size-5 relative bottom-1 [&>svg]:text-secondary group-disabled:text-secondary\";\nconst breadcrumbItemBase = \"h6-title text-secondary hover:text-primary-hover\";\n\nexport interface BreadcrumbsProps extends React.ComponentProps<typeof Breadcrumb> {\n separator?: React.ReactNode;\n /**\n * When true and there are >= 5 breadcrumb items, replaces all items except\n * the first one and the last two with an ellipsis dropdown menu.\n */\n ellipsis?: boolean;\n children: React.ReactNode;\n separatorClassName?: string;\n breadcrumbItemClassName?: string;\n breadcrumbPageClassName?: string;\n}\n\nexport const Breadcrumbs = React.forwardRef<React.ComponentRef<typeof Breadcrumb>, BreadcrumbsProps>(\n (props, ref) => {\n const {\n separator, ellipsis, children,\n className, breadcrumbItemClassName,\n breadcrumbPageClassName, separatorClassName,\n ...rest\n } = props;\n\n const items = React.Children.toArray(children).filter(Boolean);\n\n const shouldCollapse = Boolean(ellipsis) && items.length >= 5;\n const hiddenItems = shouldCollapse ? items.slice(1, -2) : [];\n\n const displayItems: Array<React.ReactNode | \"__ELLIPSIS__\"> = shouldCollapse\n ? [items[0], \"__ELLIPSIS__\", items[items.length - 2], items[items.length - 1]]\n : items;\n\n return (\n <Breadcrumb ref={ref} className={className} {...rest}>\n <BreadcrumbList>\n {displayItems.map((child, index) => {\n const isEllipsis = child === \"__ELLIPSIS__\";\n const key = isEllipsis\n ? \"__ellipsis\"\n : React.isValidElement(child) && child.key != null\n ? String(child.key)\n : String(index);\n\n const isLast = index === displayItems.length - 1;\n\n return (\n <React.Fragment key={key}>\n {isEllipsis ? (\n <BreadcrumbItem className={cn(breadcrumbItemBase, breadcrumbItemClassName)}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className=\"inline-flex size-8 items-center justify-center rounded-4 hover:bg-(--background-secondary) focus-ring-primary text-secondary\"\n aria-label=\"Open breadcrumb menu\"\n >\n <BreadcrumbEllipsis />\n </button>\n </DropdownMenuTrigger>\n\n <DropdownMenuContent\n align=\"start\"\n className=\"bg-(--background-neutral) border-secondary-hover shadow-card-md rounded-4\"\n >\n <DropdownMenuGroup>\n {hiddenItems.map((hidden, hiddenIndex) => {\n const hiddenKey =\n React.isValidElement(hidden) && hidden.key != null\n ? String(hidden.key)\n : `hidden-${hiddenIndex}`;\n\n if (React.isValidElement(hidden)) {\n return (\n <DropdownMenuItem\n key={hiddenKey}\n asChild\n className=\"cursor-pointer paragraph-md text-primary focus:bg-(--background-secondary)\"\n >\n {hidden}\n </DropdownMenuItem>\n );\n }\n\n return (\n <DropdownMenuItem\n key={hiddenKey}\n className=\"cursor-pointer paragraph-md text-primary focus:bg-(--background-secondary)\"\n >\n {String(hidden)}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n </BreadcrumbItem>\n ) : isLast ? (\n <BreadcrumbItem className={cn(breadcrumbItemBase, breadcrumbItemClassName)}>\n <BreadcrumbPage\n className={cn(\"h6-title-medium cursor-pointer\", breadcrumbPageClassName)}\n >\n {child}\n </BreadcrumbPage>\n </BreadcrumbItem>\n ) : (\n <BreadcrumbItem className={cn(breadcrumbItemBase, breadcrumbItemClassName)}>\n {child}\n </BreadcrumbItem>\n )}\n\n {!isLast && (\n <BreadcrumbSeparator className={cn(breadcrumbSeparatorVariants, separatorClassName)}>\n {separator}\n </BreadcrumbSeparator>\n )}\n </React.Fragment>\n );\n })}\n </BreadcrumbList>\n </Breadcrumb>\n );\n }\n);\n\nBreadcrumbs.displayName = \"Breadcrumbs\";","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst breadcrumbItemClasses = \"h6-title inline-flex items-center gap-1.5 \" +\n \"text-(--color-secondary) hover:text-(--color-primary-hover) focus-within:text-(--color-secondary-focus) \" +\n \"[&_[aria-current=page]]:font-medium [&_[aria-current=page]]:text-primary\"\n\nconst disabledItemClasses = \"text-primary-disabled cursor-default pointer-events-none\"\n\nfunction Breadcrumb({ ...props }: React.ComponentProps<\"nav\">) {\n return <nav aria-label=\"breadcrumb\" data-slot=\"breadcrumb\" {...props} />\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"flex flex-wrap items-center gap-1.5 wrap-break-word sm:gap-2.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbItem({ className, disabled, ...props }: React.ComponentProps<\"li\"> & { disabled?: boolean }) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(breadcrumbItemClasses, disabled && disabledItemClasses, className)}\n style={{ marginBottom: \"7px\" }}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbLink({\n asChild,\n className,\n ...props\n}: React.ComponentProps<\"a\"> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n data-slot=\"breadcrumb-link\"\n className={cn(\"transition-colors\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-6 [&>svg]:text-(--color-secondary)\", className)}\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex size-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n","import type { FC, SVGProps } from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport type { LogoIconProps } from \"./Logo.types\";\n\nconst LogoIconSvg: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg width=\"89\" height=\"88\" viewBox=\"0 0 89 88\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M83.7156 3.88535C78.5352 -1.29512 70.136 -1.29512 64.9555 3.88535L43.9999 24.8409L43.9995 24.8405L62.3536 6.48637C52.2379 16.5949 35.8584 16.6179 25.7142 6.55523L23.4434 4.28438C18.2629 -0.896082 9.86373 -0.89608 4.68327 4.28438C-0.497191 9.46484 -0.49719 17.864 4.68327 23.0445L6.88526 25.2465C17.0191 35.3875 17.0168 51.8235 6.87859 61.9618L25.2395 43.6008L25.2398 43.601L3.88534 64.9555C-1.29512 70.136 -1.29511 78.5351 3.88535 83.7156C9.06581 88.8961 17.465 88.8961 22.6455 83.7156L25.6458 80.7151L25.6864 80.6747C35.7981 70.6137 52.1313 70.597 62.2636 80.6248L65.7534 84.1146C70.9339 89.2951 79.3331 89.2951 84.5135 84.1146C89.694 78.9342 89.694 70.535 84.5135 65.3545L62.76 43.601L62.7602 43.6009L81.1144 61.9552C70.9806 51.8142 70.9829 35.3782 81.1211 25.24L83.7156 22.6455C88.8961 17.465 88.8961 9.06581 83.7156 3.88535Z\" fill=\"#1685FF\" />\n <path d=\"M44.0667 50.4863C44.1213 50.4317 44.21 50.4317 44.2646 50.4863L48.6465 54.8682C48.6942 54.9158 48.7011 54.9907 48.663 55.0463L44.2812 61.4453C44.2256 61.5265 44.1057 61.5265 44.0501 61.4453L39.6683 55.0463C39.6302 54.9907 39.6371 54.9158 39.6848 54.8682L44.0667 50.4863Z\" fill=\"white\" />\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M44.107 45.3938C44.0536 45.289 43.9013 45.289 43.8479 45.3938C41.8622 49.293 37.8104 51.9638 33.1347 51.9638C26.4991 51.9638 21.1199 46.5846 21.1199 39.9489C21.1199 33.3133 26.4991 27.9341 33.1347 27.9341C37.8104 27.9341 41.8622 30.6049 43.8479 34.5041C43.9013 34.6089 44.0536 34.6089 44.107 34.5041C46.0926 30.6049 50.1445 27.9341 54.8201 27.9341C61.4558 27.9341 66.835 33.3133 66.835 39.9489C66.835 46.5846 61.4558 51.9638 54.8201 51.9638C50.1445 51.9638 46.0926 49.293 44.107 45.3938Z\" fill=\"white\" />\n <path d=\"M60.1113 40.0006C60.1113 43.052 57.6377 45.5256 54.5863 45.5256C51.535 45.5256 49.0614 43.052 49.0614 40.0006C49.0614 36.9493 51.535 34.4757 54.5863 34.4757C57.6377 34.4757 60.1113 36.9493 60.1113 40.0006Z\" fill=\"#1685FF\" />\n <path d=\"M38.8954 40.0006C38.8954 43.052 36.4218 45.5256 33.3705 45.5256C30.3192 45.5256 27.8456 43.052 27.8456 40.0006C27.8456 36.9493 30.3192 34.4757 33.3705 34.4757C36.4218 34.4757 38.8954 36.9493 38.8954 40.0006Z\" fill=\"#1685FF\" />\n </svg>\n);\n\n\nconst logoIconVariants = cva(\n \"relative bg-linear-to-t from-gray-800 to-gray-950 overflow-hidden flex justify-center items-center\",\n {\n variants: {\n size: {\n xs: [\"size-8\", \"rounded-[5px]\"],\n sm: [\"size-14\", \"rounded-8\"],\n md: [\"size-32\", \"rounded-20\"],\n lg: [\"size-64\", \"rounded-40\"],\n xl: [\"size-128\", \"rounded-80\"],\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nconst logoIconSizeClass: Record<NonNullable<LogoIconProps[\"size\"]>, string> = {\n xs: \"size-6\",\n sm: \"size-10\",\n md: \"size-24\",\n lg: \"size-44\",\n xl: \"size-96\",\n};\n\nexport const LogoIcon: FC<LogoIconProps> = ({ className, size = \"md\" }) => {\n return (\n <div className={cn(logoIconVariants({ size }), className)}>\n <LogoIconSvg className={logoIconSizeClass[size]} />\n </div>\n );\n};\n","import type { FC, SVGProps } from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport type { LogoProps } from \"./Logo.types\";\n\nconst LogoIconSvg: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg width=\"89\" height=\"88\" viewBox=\"0 0 89 88\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M83.7156 3.88535C78.5352 -1.29512 70.136 -1.29512 64.9555 3.88535L43.9999 24.8409L43.9995 24.8405L62.3536 6.48637C52.2379 16.5949 35.8584 16.6179 25.7142 6.55523L23.4434 4.28438C18.2629 -0.896082 9.86373 -0.89608 4.68327 4.28438C-0.497191 9.46484 -0.49719 17.864 4.68327 23.0445L6.88526 25.2465C17.0191 35.3875 17.0168 51.8235 6.87859 61.9618L25.2395 43.6008L25.2398 43.601L3.88534 64.9555C-1.29512 70.136 -1.29511 78.5351 3.88535 83.7156C9.06581 88.8961 17.465 88.8961 22.6455 83.7156L25.6458 80.7151L25.6864 80.6747C35.7981 70.6137 52.1313 70.597 62.2636 80.6248L65.7534 84.1146C70.9339 89.2951 79.3331 89.2951 84.5135 84.1146C89.694 78.9342 89.694 70.535 84.5135 65.3545L62.76 43.601L62.7602 43.6009L81.1144 61.9552C70.9806 51.8142 70.9829 35.3782 81.1211 25.24L83.7156 22.6455C88.8961 17.465 88.8961 9.06581 83.7156 3.88535Z\" fill=\"#1685FF\" />\n <path d=\"M44.0667 50.4863C44.1213 50.4317 44.21 50.4317 44.2646 50.4863L48.6465 54.8682C48.6942 54.9158 48.7011 54.9907 48.663 55.0463L44.2812 61.4453C44.2256 61.5265 44.1057 61.5265 44.0501 61.4453L39.6683 55.0463C39.6302 54.9907 39.6371 54.9158 39.6848 54.8682L44.0667 50.4863Z\" fill=\"white\" />\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M44.107 45.3938C44.0536 45.289 43.9013 45.289 43.8479 45.3938C41.8622 49.293 37.8104 51.9638 33.1347 51.9638C26.4991 51.9638 21.1199 46.5846 21.1199 39.9489C21.1199 33.3133 26.4991 27.9341 33.1347 27.9341C37.8104 27.9341 41.8622 30.6049 43.8479 34.5041C43.9013 34.6089 44.0536 34.6089 44.107 34.5041C46.0926 30.6049 50.1445 27.9341 54.8201 27.9341C61.4558 27.9341 66.835 33.3133 66.835 39.9489C66.835 46.5846 61.4558 51.9638 54.8201 51.9638C50.1445 51.9638 46.0926 49.293 44.107 45.3938Z\" fill=\"white\" />\n <path d=\"M60.1113 40.0006C60.1113 43.052 57.6377 45.5256 54.5863 45.5256C51.535 45.5256 49.0614 43.052 49.0614 40.0006C49.0614 36.9493 51.535 34.4757 54.5863 34.4757C57.6377 34.4757 60.1113 36.9493 60.1113 40.0006Z\" fill=\"#1685FF\" />\n <path d=\"M38.8954 40.0006C38.8954 43.052 36.4218 45.5256 33.3705 45.5256C30.3192 45.5256 27.8456 43.052 27.8456 40.0006C27.8456 36.9493 30.3192 34.4757 33.3705 34.4757C36.4218 34.4757 38.8954 36.9493 38.8954 40.0006Z\" fill=\"#1685FF\" />\n </svg>\n);\n\nconst LogoTextSvg: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg width=\"111\" height=\"32\" viewBox=\"0 0 111 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path d=\"M72.7324 20.9658C72.7324 14.4559 77.4246 9.9751 83.8922 9.9751C90.3598 9.9751 95.052 14.4559 95.052 20.9658C95.052 27.4757 90.3598 31.9565 83.8922 31.9565C77.4246 31.9565 72.7324 27.4757 72.7324 20.9658ZM77.8896 20.9658C77.8896 24.7703 80.3414 27.3489 83.8922 27.3489C87.4431 27.3489 89.8948 24.7703 89.8948 20.9658C89.8948 17.1613 87.4431 14.5827 83.8922 14.5827C80.3414 14.5827 77.8896 17.1613 77.8896 20.9658Z\" fill=\"currentColor\" />\n <path d=\"M53.4056 31.4503H48.6289V0H53.7861V13.6116C55.1388 11.2866 57.9287 9.89163 61.0991 9.89163C67.0595 9.89163 70.6949 14.5415 70.6949 21.136C70.6949 27.5613 66.7636 31.9998 60.761 31.9998C57.6328 31.9998 54.9697 30.6049 53.7438 28.1954L53.4056 31.4503ZM53.8284 20.9246C53.8284 24.6868 56.1533 27.2654 59.7042 27.2654C63.3395 27.2654 65.4954 24.6445 65.4954 20.9246C65.4954 17.2047 63.3395 14.5415 59.7042 14.5415C56.1533 14.5415 53.8284 17.1624 53.8284 20.9246Z\" fill=\"currentColor\" />\n <path d=\"M38.9929 10.5681H44.15V31.4504H39.3733L38.9929 28.6605C37.7247 30.6473 35.0193 32 32.2293 32C27.4103 32 24.5781 28.745 24.5781 23.6301V10.5681H29.7353V21.8124C29.7353 25.786 31.2994 27.3923 34.1739 27.3923C37.4288 27.3923 38.9929 25.4901 38.9929 21.5165V10.5681Z\" fill=\"currentColor\" />\n <path d=\"M4.77673 31.4503H0V0H5.15718V13.6116C6.50988 11.2866 9.29983 9.89163 12.4702 9.89163C18.4306 9.89163 22.066 14.5415 22.066 21.136C22.066 27.5613 18.1347 31.9998 12.132 31.9998C9.00392 31.9998 6.34079 30.6049 5.1149 28.1954L4.77673 31.4503ZM5.19945 20.9246C5.19945 24.6868 7.52441 27.2654 11.0752 27.2654C14.7106 27.2654 16.8665 24.6445 16.8665 20.9246C16.8665 17.2047 14.7106 14.5415 11.0752 14.5415C7.52441 14.5415 5.19945 17.1624 5.19945 20.9246Z\" fill=\"currentColor\" />\n <path d=\"M103.555 0.5C107.084 0.5 109.944 3.36029 109.944 6.88867C109.944 10.4172 107.084 13.2773 103.555 13.2773C100.027 13.2772 97.1667 10.4171 97.1667 6.88867C97.1669 3.36036 100.027 0.500118 103.555 0.5Z\" stroke=\"currentColor\" />\n <path d=\"M105.778 9.98355L101.687 10.0001V9.00978L103.578 7.33457C104.19 6.79817 104.445 6.41856 104.445 5.91517C104.445 5.29625 104.159 4.96616 103.647 4.96616C103.113 4.96616 102.803 5.35402 102.803 6.03896H101.556C101.556 4.66908 102.377 3.77783 103.64 3.77783C104.949 3.77783 105.731 4.52879 105.731 5.83265C105.731 6.66613 105.259 7.34282 104.546 7.97825L103.686 8.74571H105.778V9.98355Z\" fill=\"currentColor\" />\n </svg>\n);\n\nconst logoWrapperVariants = cva(\"inline-flex\", {\n variants: {\n variant: {\n inline: [\"w-44\", \"h-12\", \"justify-start\", \"items-center\", \"gap-4\"],\n inlineSmall: [\"w-32\", \"h-9\", \"justify-start\", \"items-center\", \"gap-3\"],\n multiline: [\"w-36\", \"flex-col\", \"justify-start\", \"items-start\", \"gap-2\"],\n },\n },\n defaultVariants: {\n variant: \"inline\",\n },\n});\n\nconst logoIconSizeVariants = cva(\"\", {\n variants: {\n variant: {\n inline: \"size-12\",\n inlineSmall: \"size-9\",\n multiline: \"size-12\",\n },\n },\n defaultVariants: {\n variant: \"inline\",\n },\n});\n\nconst logoTextSizeVariants = cva(\"\", {\n variants: {\n variant: {\n inline: \"h-8 w-27.5\",\n inlineSmall: \"h-6 w-20.75\",\n multiline: \"h-8 w-27.75\",\n },\n },\n defaultVariants: {\n variant: \"inline\",\n },\n});\n\nexport const Logo: FC<LogoProps> = ({ className, textColor, variant = \"inline\" }) => {\n const textColorClass =\n textColor === \"light\"\n ? \"text-(--color-b-white)\"\n : textColor === \"dark\"\n ? \"text-(--color-b-black)\"\n : \"text-primary\";\n\n return (\n <div className={cn(logoWrapperVariants({ variant }), className)}>\n <LogoIconSvg className={logoIconSizeVariants({ variant })} />\n <LogoTextSvg className={cn(logoTextSizeVariants({ variant }), textColorClass)} />\n </div>\n );\n};\n"],"mappings":"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","names":["React","cva","jsx","jsx","buttonVariants","cva","Button","cva","jsx","cva","React","cva","jsx","cva","cva","jsx","React","Slot","cva","jsx","jsxs","cva","Slot","React","jsx","jsxs","React","jsx","jsxs","React","Slot","cva","jsx","jsxs","cva","Slot","jsx","jsx","React","Slot","cva","jsx","jsxs","cva","Slot","React","cva","jsx","cva","cva","jsx","cva","React","jsx","jsxs","jsx","jsxs","Button","React","React","jsx","jsxs","jsx","React","cva","jsx","jsxs","cva","React","Slot","cva","jsx","jsxs","React","cva","jsx","jsxs","jsx","jsxs","React","CheckIcon","jsx","jsxs","CheckIcon","React","cva","React","cva","jsx","cva","React","jsx","jsx","jsxs","cva","React","cva","ChevronDownIcon","jsx","jsxs","cva","ChevronDownIcon","React","cva","jsx","jsxs","cva","iconWrapperVariants","React","CheckIcon","Icon","forwardRef","forwardRef","createElement","Icon","__iconNode","jsx","jsxs","jsx","jsxs","jsxs","jsx","jsx","jsx","jsx","jsxs","cva","jsx","jsxs","cva","inputTextVariants","value","CheckIcon","React","jsx","jsxs","React","cva","SearchIcon","jsx","jsxs","cva","iconWrapperVariants","SearchIcon","React","React","jsx","jsxs","Fragment","jsx","jsxs","current","value","React","jsx","jsxs","React","cva","jsx","jsxs","inputTextVariants","cva","iconWrapperVariants","React","jsx","jsxs","React","jsx","jsxs","React","PopoverPrimitive","jsx","jsxs","Popover","mapPlacementToSideAndAlign","placement","Button","TooltipPrimitive","jsx","React","Slot","jsx","jsxs","jsx","jsxs","jsx","jsxs","cva","jsx","jsxs","cva","cva","jsx","jsxs","LogoIconSvg","cva"]}
|