@archieai/ui 1.2.55 → 1.3.1
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/Search-CROkXP0L.cjs +2 -0
- package/dist/Search-CROkXP0L.cjs.map +1 -0
- package/dist/{Search-Cv4MnT2e.js → Search-CTS1KcAY.js} +591 -576
- package/dist/Search-CTS1KcAY.js.map +1 -0
- package/dist/components/atoms/icons/ArrowDown2.d.ts +7 -0
- package/dist/components/atoms/icons/ArrowDown2.d.ts.map +1 -0
- package/dist/components/atoms/icons/index.d.ts +1 -0
- package/dist/components/atoms/icons/index.d.ts.map +1 -1
- package/dist/components/molecules/Button/Button.figma.d.ts +2 -0
- package/dist/components/molecules/Button/Button.figma.d.ts.map +1 -0
- package/dist/components/molecules/Input/Input.figma.d.ts +2 -0
- package/dist/components/molecules/Input/Input.figma.d.ts.map +1 -0
- package/dist/components/molecules/SidebarItem/SidebarItem.figma.d.ts +2 -0
- package/dist/components/molecules/SidebarItem/SidebarItem.figma.d.ts.map +1 -0
- package/dist/components/molecules/Tag/Tag.figma.d.ts +2 -0
- package/dist/components/molecules/Tag/Tag.figma.d.ts.map +1 -0
- package/dist/components/organisms/ChatInput/ChatInput.figma.d.ts +2 -0
- package/dist/components/organisms/ChatInput/ChatInput.figma.d.ts.map +1 -0
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +271 -270
- package/dist/index.cjs +14 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5016 -2247
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -22
- package/dist/Search-Cv4MnT2e.js.map +0 -1
- package/dist/Search-jJp9VWfl.cjs +0 -2
- package/dist/Search-jJp9VWfl.cjs.map +0 -1
- package/dist/components/renderers/MarkdownRenderer/MarkdownRenderer.d.ts +0 -33
- package/dist/components/renderers/MarkdownRenderer/MarkdownRenderer.d.ts.map +0 -1
- package/dist/components/renderers/MarkdownRenderer/MarkdownRenderer.styles.d.ts +0 -5
- package/dist/components/renderers/MarkdownRenderer/MarkdownRenderer.styles.d.ts.map +0 -1
- package/dist/index-3Ykv-knV.js +0 -2775
- package/dist/index-3Ykv-knV.js.map +0 -1
- package/dist/index-DBlB_5Nx.cjs +0 -2
- package/dist/index-DBlB_5Nx.cjs.map +0 -1
- package/dist/katex-styles.cjs +0 -2
- package/dist/katex-styles.cjs.map +0 -1
- package/dist/katex-styles.css +0 -1
- package/dist/katex-styles.d.ts +0 -2
- package/dist/katex-styles.d.ts.map +0 -1
- package/dist/katex-styles.js +0 -2
- package/dist/katex-styles.js.map +0 -1
- package/dist/markdown.cjs +0 -314
- package/dist/markdown.cjs.map +0 -1
- package/dist/markdown.d.ts +0 -3
- package/dist/markdown.d.ts.map +0 -1
- package/dist/markdown.js +0 -21801
- package/dist/markdown.js.map +0 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/components/atoms/Avatar/Avatar.styles.ts","../src/components/atoms/Avatar/Avatar.tsx","../src/components/atoms/StatusIndicator/StatusIndicator.styles.ts","../src/components/atoms/StatusIndicator/StatusIndicator.tsx","../src/components/atoms/Typography/Typography.tsx","../src/components/atoms/logos/LogoA.tsx","../src/components/atoms/logos/FullLogo.tsx","../src/components/atoms/logos/SignatureA.tsx","../src/components/molecules/ArtifactCard/ArtifactCard.styles.ts","../src/components/molecules/ArtifactCard/ArtifactCard.tsx","../src/components/molecules/Breadcrumbs/Breadcrumbs.styles.ts","../src/components/molecules/Breadcrumbs/Breadcrumbs.tsx","../src/components/molecules/Button/Button.styles.ts","../src/components/molecules/Button/Button.tsx","../src/components/molecules/ChatFile/ChatFile.styles.ts","../src/components/molecules/ChatFile/ChatFile.tsx","../src/components/molecules/Checkbox/Checkbox.styles.ts","../src/components/molecules/Checkbox/Checkbox.tsx","../src/components/molecules/CircularProgress/CircularProgress.styles.ts","../src/components/molecules/CircularProgress/CircularProgress.tsx","../src/hooks/useClickOutside.ts","../src/components/molecules/Dropdown/Dropdown.styles.ts","../src/components/molecules/Dropdown/Dropdown.tsx","../src/components/molecules/Input/Input.styles.ts","../src/components/molecules/Input/Input.tsx","../src/components/molecules/LoadingSpinner/LoadingSpinner.styles.ts","../src/components/molecules/LoadingSpinner/LoadingSpinner.tsx","../src/components/molecules/MessageBubble/MessageBubble.styles.ts","../src/components/molecules/MessageBubble/MessageBubble.tsx","../src/components/molecules/ProgressBar/ProgressBar.styles.ts","../src/components/molecules/ProgressBar/ProgressBar.tsx","../src/components/molecules/RangeInput/RangeInput.styles.ts","../src/components/molecules/RangeInput/RangeInput.tsx","../src/components/molecules/SidebarItem/SidebarItem.styles.ts","../src/components/molecules/SidebarItem/SidebarItem.tsx","../src/components/molecules/Tag/Tag.styles.ts","../src/components/molecules/Tag/Tag.tsx","../src/components/molecules/Tabs/Tabs.styles.ts","../src/components/molecules/Tabs/Tabs.tsx","../src/components/molecules/TextArea/TextArea.styles.ts","../src/components/molecules/TextArea/TextArea.tsx","../src/components/molecules/Timestamp/Timestamp.styles.ts","../src/components/molecules/Timestamp/Timestamp.tsx","../src/components/molecules/Toast/Toast.styles.ts","../src/components/molecules/Toast/Toast.tsx","../src/components/molecules/Toggle/Toggle.styles.ts","../src/components/molecules/Toggle/Toggle.tsx","../src/components/molecules/StatusMessage/StatusMessage.styles.ts","../src/components/molecules/StatusMessage/StatusMessage.tsx","../src/components/molecules/AutopilotAction/AutopilotAction.styles.ts","../src/components/molecules/AutopilotAction/AutopilotAction.tsx","../src/components/molecules/Tooltip/Tooltip.styles.ts","../src/components/molecules/Tooltip/Tooltip.tsx","../src/components/organisms/ChatInput/ChatInput.styles.ts","../src/components/organisms/ChatInput/ChatInput.tsx","../src/components/organisms/ConversationHeader/ConversationHeader.styles.ts","../src/components/organisms/ConversationHeader/ConversationHeader.tsx","../node_modules/.pnpm/@radix-ui+primitive@1.1.3/node_modules/@radix-ui/primitive/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-compose-refs@1.1.2_@types+react@18.3.27_react@18.3.1/node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-context@1.1.2_@types+react@18.3.27_react@18.3.1/node_modules/@radix-ui/react-context/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.1.1_@types+react@18.3.27_react@18.3.1/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-id@1.1.1_@types+react@18.3.27_react@18.3.1/node_modules/@radix-ui/react-id/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.2.2_@types+react@18.3.27_react@18.3.1/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-slot@1.2.3_@types+react@18.3.27_react@18.3.1/node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-primitive@2.1.3_@types+react-dom@18.3.7_@types+react@18.3.27__@types+re_fcd3de21280e20c51ab14304cef2fe55/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-callback-ref@1.1.1_@types+react@18.3.27_react@18.3.1/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-escape-keydown@1.1.1_@types+react@18.3.27_react@18.3.1/node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-dismissable-layer@1.1.11_@types+react-dom@18.3.7_@types+react@18.3.27___ef32cd5833e4d18b8335c2f21b9ac2fa/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-focus-scope@1.1.7_@types+react-dom@18.3.7_@types+react@18.3.27__@types+_079b38391d94963b8fbac89fb53f156c/node_modules/@radix-ui/react-focus-scope/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-portal@1.1.9_@types+react-dom@18.3.7_@types+react@18.3.27__@types+react_a95d18b6a60dc8d181a971a9b89b86b6/node_modules/@radix-ui/react-portal/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-presence@1.1.5_@types+react-dom@18.3.7_@types+react@18.3.27__@types+rea_64d32f1aa8205b8137d1ae7fefc406b4/node_modules/@radix-ui/react-presence/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-focus-guards@1.1.3_@types+react@18.3.27_react@18.3.1/node_modules/@radix-ui/react-focus-guards/dist/index.mjs","../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@18.3.27_react@18.3.1/node_modules/use-callback-ref/dist/es2015/assignRef.js","../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@18.3.27_react@18.3.1/node_modules/use-callback-ref/dist/es2015/useRef.js","../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@18.3.27_react@18.3.1/node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../node_modules/.pnpm/use-sidecar@1.1.3_@types+react@18.3.27_react@18.3.1/node_modules/use-sidecar/dist/es2015/medium.js","../node_modules/.pnpm/use-sidecar@1.1.3_@types+react@18.3.27_react@18.3.1/node_modules/use-sidecar/dist/es2015/exports.js","../node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/medium.js","../node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/UI.js","../node_modules/.pnpm/get-nonce@1.0.1/node_modules/get-nonce/dist/es2015/index.js","../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@18.3.27_react@18.3.1/node_modules/react-style-singleton/dist/es2015/singleton.js","../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@18.3.27_react@18.3.1/node_modules/react-style-singleton/dist/es2015/hook.js","../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@18.3.27_react@18.3.1/node_modules/react-style-singleton/dist/es2015/component.js","../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll-bar/dist/es2015/component.js","../node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/sidecar.js","../node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/Combination.js","../node_modules/.pnpm/aria-hidden@1.2.6/node_modules/aria-hidden/dist/es2015/index.js","../node_modules/.pnpm/@radix-ui+react-dialog@1.1.15_@types+react-dom@18.3.7_@types+react@18.3.27__@types+reac_714ecc194868bb6245bac079a4c1dd41/node_modules/@radix-ui/react-dialog/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-visually-hidden@1.2.3_@types+react-dom@18.3.7_@types+react@18.3.27__@ty_1b568180cc69792ef5dc460e0a38e386/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs","../src/components/organisms/Modal/Modal.styles.ts","../src/components/organisms/Modal/Modal.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport const avatarContainerStyles = cva(\n 'relative inline-flex items-center justify-center shrink-0 overflow-hidden',\n {\n variants: {\n shape: {\n circular: 'rounded-full',\n square: '',\n },\n size: {\n small: 'size-[16px]',\n big: 'size-[32px]',\n },\n },\n compoundVariants: [\n {\n shape: 'square',\n size: 'small',\n className: 'rounded-[4px]',\n },\n {\n shape: 'square',\n size: 'big',\n className: 'rounded-[8px]',\n },\n ],\n defaultVariants: {\n shape: 'circular',\n size: 'small',\n },\n }\n);\n\nexport const avatarTextStyles = cva(\n 'font-[\"Inter\",sans-serif] font-normal text-center text-[var(--color-blue-800)]',\n {\n variants: {\n size: {\n small: 'text-[8px] leading-[16px]',\n big: 'text-[16px] leading-[24px]',\n },\n },\n defaultVariants: {\n size: 'small',\n },\n }\n);\n\nexport const avatarImageStyles = cva('absolute inset-0 w-full h-full object-cover');\n\n","// React\nimport { HTMLAttributes, forwardRef, useState, useMemo } from 'react';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport {\n avatarContainerStyles,\n avatarTextStyles,\n avatarImageStyles,\n} from './Avatar.styles';\n\nexport interface AvatarProps extends HTMLAttributes<HTMLDivElement> {\n /** The type of avatar to display */\n type?: 'text' | 'image';\n /** The shape of the avatar */\n shape?: 'circular' | 'square';\n /** The size of the avatar */\n size?: 'small' | 'big';\n /** The initials to display when type is 'text' */\n initials?: string;\n /** The image source URL when type is 'image' */\n src?: string;\n /** Alt text for the image */\n alt?: string;\n /** Fallback initials to show when image fails to load */\n fallbackInitials?: string;\n}\n\n/**\n * Generates initials from a name string\n * Takes the first letter of the first two words\n */\nconst generateInitials = (name: string): string => {\n const words = name.trim().split(/\\s+/);\n if (words.length >= 2) {\n return (words[0][0] + words[1][0]).toUpperCase();\n }\n return name.slice(0, 2).toUpperCase();\n};\n\n/**\n * Generates a random placeholder image URL from picsum.photos\n */\nconst getPlaceholderImage = (seed: number, size: number): string => {\n return `https://picsum.photos/seed/${seed}/${size}/${size}`;\n};\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(\n (\n {\n className,\n type = 'text',\n shape = 'circular',\n size = 'small',\n initials = 'AR',\n src,\n alt = 'Avatar',\n fallbackInitials,\n ...props\n },\n ref\n ) => {\n const [imageError, setImageError] = useState(false);\n\n // Generate a stable random seed for placeholder images\n const placeholderSeed = useMemo(() => Math.floor(Math.random() * 1000), []);\n const imageSize = size === 'big' ? 64 : 32; // Use larger size for better quality\n\n // Determine the image source\n const imageSrc = src || getPlaceholderImage(placeholderSeed, imageSize);\n\n // Determine what to display\n const displayInitials = imageError && fallbackInitials\n ? fallbackInitials\n : initials;\n const shouldShowImage = type === 'image' && !imageError;\n\n const handleImageError = () => {\n setImageError(true);\n };\n\n // Background style for text variant (light blue gradient)\n const textBackgroundStyle = {\n backgroundImage:\n 'linear-gradient(90deg, rgba(21, 177, 205, 0.08) 0%, rgba(21, 177, 205, 0.08) 100%), linear-gradient(90deg, rgb(255, 255, 255) 0%, rgb(255, 255, 255) 100%)',\n };\n\n return (\n <div\n ref={ref}\n className={cn(avatarContainerStyles({ shape, size }), className)}\n style={!shouldShowImage ? textBackgroundStyle : undefined}\n role=\"img\"\n aria-label={alt}\n {...props}\n >\n {shouldShowImage ? (\n <img\n src={imageSrc}\n alt={alt}\n className={cn(avatarImageStyles())}\n onError={handleImageError}\n />\n ) : (\n <span className={cn(avatarTextStyles({ size }))}>\n {generateInitials(displayInitials)}\n </span>\n )}\n </div>\n );\n }\n);\n\nAvatar.displayName = 'Avatar';\n\n","import { cva } from 'class-variance-authority';\n\nexport const statusIndicatorContainerStyles = cva(\n 'relative inline-flex items-center justify-center shrink-0',\n {\n variants: {\n size: {\n small: 'w-2 h-2',\n medium: 'w-3 h-3',\n large: 'w-4 h-4',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n }\n);\n\nexport const statusIndicatorDotStyles = cva(\n 'w-full h-full rounded-full',\n {\n variants: {\n variant: {\n success: 'bg-[var(--color-green-1000)]',\n warning: 'bg-[var(--color-orange-800)]',\n error: 'bg-[var(--color-red-1000)]',\n info: 'bg-[var(--color-blue-800)]',\n neutral: 'bg-[var(--color-gray-600)]',\n },\n },\n defaultVariants: {\n variant: 'neutral',\n },\n }\n);\n\nexport const statusIndicatorPingStyles = cva(\n 'absolute w-full h-full rounded-full opacity-75 animate-ping',\n {\n variants: {\n variant: {\n success: 'bg-[var(--color-green-1000)]',\n warning: 'bg-[var(--color-orange-800)]',\n error: 'bg-[var(--color-red-1000)]',\n info: 'bg-[var(--color-blue-800)]',\n neutral: 'bg-[var(--color-gray-600)]',\n },\n },\n defaultVariants: {\n variant: 'neutral',\n },\n }\n);\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { cn } from '@/utils/cn';\nimport {\n statusIndicatorContainerStyles,\n statusIndicatorDotStyles,\n statusIndicatorPingStyles,\n} from './StatusIndicator.styles';\n\nexport interface StatusIndicatorProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'success' | 'warning' | 'error' | 'info' | 'neutral';\n size?: 'small' | 'medium' | 'large';\n animated?: boolean;\n}\n\nexport const StatusIndicator = forwardRef<HTMLDivElement, StatusIndicatorProps>(\n (\n {\n className,\n variant = 'neutral',\n size = 'medium',\n animated = false,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(statusIndicatorContainerStyles({ size }), className)}\n {...props}\n >\n {animated && (\n <span className={statusIndicatorPingStyles({ variant })} />\n )}\n <span className={statusIndicatorDotStyles({ variant })} />\n </div>\n );\n }\n);\n\nStatusIndicator.displayName = 'StatusIndicator';\n\n","// react / next\nimport { ReactNode, ElementType } from 'react';\n\n// utils\nimport { cn } from '@/utils/cn';\n\nexport type TypographyVariant =\n | 'display'\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'small'\n | 'tiny'\n | 'x-small'\n | 'column-header'\n | 'tag';\n\nexport type TypographyWeight =\n | 'thin'\n | 'extralight'\n | 'light'\n | 'regular'\n | 'medium'\n | 'semibold'\n | 'bold'\n | 'black';\n\nexport type TypographyFontFamily = 'serif' | 'sans';\n\nexport interface TypographyProps {\n variant: TypographyVariant;\n as?: ElementType;\n children: ReactNode;\n className?: string;\n color?: 'primary' | 'secondary' | 'inherit';\n weight?: TypographyWeight;\n fontFamily?: TypographyFontFamily;\n}\n\nconst variantClassMap: Record<TypographyVariant, string> = {\n display: 'typography-display',\n h1: 'typography-h1',\n h2: 'typography-h2',\n h3: 'typography-h3',\n h4: 'typography-h4',\n small: 'typography-small',\n tiny: 'typography-tiny',\n 'x-small': 'typography-x-small',\n 'column-header': 'typography-column-header',\n tag: 'typography-tag',\n};\n\nconst defaultElementMap: Record<TypographyVariant, ElementType> = {\n display: 'h1',\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n small: 'p',\n tiny: 'p',\n 'x-small': 'p',\n 'column-header': 'span',\n tag: 'span',\n};\n\nconst colorClassMap = {\n primary: 'text-[var(--color-gray-1000)]',\n secondary: 'text-[var(--color-gray-600)]',\n inherit: '',\n};\n\nconst weightClassMap: Record<TypographyWeight, string> = {\n thin: 'font-thin',\n extralight: 'font-extralight',\n light: 'font-light',\n regular: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n black: 'font-black',\n};\n\nconst fontFamilyClassMap: Record<TypographyFontFamily, string> = {\n serif: '!font-heading',\n sans: '!font-body',\n};\n\nexport const Typography = ({\n variant,\n as,\n children,\n className,\n color = 'primary',\n weight,\n fontFamily,\n}: TypographyProps) => {\n const Component = as || defaultElementMap[variant];\n const variantClass = variantClassMap[variant];\n const colorClass = colorClassMap[color];\n const weightClass = weight ? weightClassMap[weight] : '';\n const fontFamilyClass = fontFamily ? fontFamilyClassMap[fontFamily] : '';\n\n return (\n <Component\n className={cn(\n variantClass,\n colorClass,\n weightClass,\n fontFamilyClass,\n className\n )}\n >\n {children}\n </Component>\n );\n};\n","import React from 'react';\n\nexport type LogoColorVariant =\n | 'dark'\n | 'darkTeal'\n | 'teal'\n | 'lightTeal'\n | 'orange'\n | 'white';\n\nconst colorMap: Record<LogoColorVariant, string> = {\n dark: 'rgba(0, 6, 38, 1)',\n darkTeal: 'rgba(2, 46, 64, 1)',\n teal: 'rgba(21, 177, 205, 1)',\n lightTeal: 'rgba(106, 234, 253, 1)',\n orange: 'rgba(255, 111, 0, 1)',\n white: 'rgba(255, 255, 255, 1)',\n};\n\nexport interface LogoAProps extends React.SVGProps<SVGSVGElement> {\n size?: number | string;\n colorVariant?: LogoColorVariant;\n}\n\nexport const LogoA: React.FC<LogoAProps> = ({\n size = 256,\n colorVariant = 'dark',\n ...props\n}) => {\n const color = colorMap[colorVariant];\n\n return (\n <svg\n {...props}\n width={size}\n height={size}\n viewBox=\"0 0 256 256\"\n fill=\"none\"\n >\n <path\n d=\"M35.2761 209.996L27.7832 218.211H11V227H79.5141V218.211H53.3838L48.1047 212.422L62.2011 175.529H138.132L151.434 212.289L146.041 218.211H120.914V227H206.306V218.211H192.664L187.404 212.441L115.029 30H79.7412L81.3306 34.872L93.5916 64.7535M46.0234 218.211H45.9098L46.9127 215.575L46.0234 218.211ZM126.496 162.633H73.9891L69.4858 157.703L97.7164 88.5402H103.223L113.383 113.951L126.269 146.182L130.923 157.818L126.515 162.652L126.496 162.633ZM131.548 159.06H131.567L133.024 162.652L131.548 159.06Z\"\n fill={color}\n />\n <path\n d=\"M233.477 227C239.841 227 245 221.791 245 215.365C245 208.938 239.841 203.729 233.477 203.729C227.113 203.729 221.954 208.938 221.954 215.365C221.954 221.791 227.113 227 233.477 227Z\"\n fill={color}\n />\n </svg>\n );\n};\n\nLogoA.displayName = 'LogoA';\n","import React from 'react';\n\nexport type LogoColorVariant =\n | 'dark'\n | 'darkTeal'\n | 'teal'\n | 'lightTeal'\n | 'orange'\n | 'white';\n\nconst colorMap: Record<LogoColorVariant, string> = {\n dark: 'rgba(0, 6, 38, 1)',\n darkTeal: 'rgba(2, 46, 64, 1)',\n teal: 'rgba(21, 177, 205, 1)',\n lightTeal: 'rgba(106, 234, 253, 1)',\n orange: 'rgba(255, 111, 0, 1)',\n white: 'rgba(255, 255, 255, 1)',\n};\n\nexport interface FullLogoProps extends React.SVGProps<SVGSVGElement> {\n size?: number | string;\n colorVariant?: LogoColorVariant;\n}\n\nexport const FullLogo: React.FC<FullLogoProps> = ({\n size = 163,\n colorVariant = 'dark',\n ...props\n}) => {\n const color = colorMap[colorVariant];\n // Original aspect ratio is 603:163\n const aspectRatio = 603 / 163;\n const height = typeof size === 'number' ? size : parseFloat(size);\n const width = height * aspectRatio;\n\n return (\n <svg\n {...props}\n width={width}\n height={height}\n viewBox=\"0 0 603 163\"\n fill=\"none\"\n >\n <g clipPath=\"url(#clip0_full_logo)\">\n <path\n d=\"M303.686 142.03C284.282 142.03 267.966 127.819 267.966 105.332C267.966 84.0925 278.722 69.1137 300.637 67.9807L314.384 93.9439H326.694V59.4543H301.96C284.723 59.4543 270.554 65.5226 260.642 75.2972C250.537 85.2639 244.862 99.0905 244.862 114.3C244.862 142.702 267.506 163.019 293.025 163.019C314.615 163.019 330.107 148.156 332.733 127.416C326.406 136.365 315.727 142.049 303.724 142.049L303.686 142.03Z\"\n fill={color}\n />\n <path\n d=\"M481.48 48.6811C490.204 48.6811 497.183 41.4797 497.183 32.9534C497.183 24.427 490.204 17.2256 481.48 17.2256C472.756 17.2256 465.547 24.2157 465.547 32.9534C465.547 41.691 472.526 48.6811 481.48 48.6811Z\"\n fill={color}\n />\n <path\n d=\"M570.942 141.588C550.868 141.588 534.724 126.072 534.724 102.912V101.376H603C603 78.8691 587.949 59.4351 562.87 59.4351C536.047 59.4351 513.787 84.7838 513.787 112.533C513.787 140.282 534.513 163 561.336 163C581.622 163 598.859 150.114 602.348 126.955C594.487 137.229 583.367 141.588 570.942 141.588ZM558.94 69.9202C570.501 69.9202 578.132 79.0996 578.132 92.6381H535.606C538.654 78.005 548.049 69.9202 558.94 69.9202Z\"\n fill={color}\n />\n <path\n d=\"M198.233 79.0995V57.2459L155.476 73.204L172.502 86.5313V148.866L168.073 153.667H146.81L84.8802 0H55.8901L57.7691 4.53204L67.8351 28.8438L19.9402 146.984L13.7856 153.667H0V160.811H56.2736V153.667H34.8187L30.4855 148.962L42.0662 118.947H104.437L115.366 148.847L110.937 153.667H90.3062V160.811H221.26V153.667H198.233V89.1622L213.725 78.0242L230.961 91.2362H240.088V59.4543H230.079C217.118 59.4543 204.847 64.6585 198.233 79.1188V79.0995ZM28.7791 153.667H28.6641L29.4885 151.516L28.7599 153.667H28.7791ZM51.7487 108.462L48.0483 104.448L71.2288 48.1818H75.7537L84.094 68.8448L94.6777 95.0577L98.4932 104.525L94.8694 108.462H51.7487ZM99.0109 105.543H99.03L100.219 108.462L99.0109 105.543Z\"\n fill={color}\n />\n <path\n d=\"M495.668 153.667V57.2459L452.911 73.204L469.918 86.5313V148.866L465.489 153.667H443.344L438.934 148.885V91.5627C438.934 72.7816 429.328 59.4543 411.229 59.4543H407.394C392.995 59.4543 382.737 68.1919 374.895 76.2766H374.799V1.92035L328.764 16.7839L349.05 29.6695V148.866L344.64 153.667H333.404V160.811H390.253V153.667H379.229L374.819 148.866V84.3421C379.401 80.6358 385.728 76.6991 392.707 76.6991C406.014 76.6991 413.223 84.5726 413.223 98.5528V148.866L408.794 153.667H399.706V160.811H514.745V153.667H495.687H495.668Z\"\n fill={color}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_full_logo\">\n <rect width=\"603\" height=\"163\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n};\n\nFullLogo.displayName = 'FullLogo';\n","import React, { useId } from 'react';\n\nexport type LogoColorVariant =\n | 'dark'\n | 'darkTeal'\n | 'teal'\n | 'lightTeal'\n | 'orange'\n | 'white';\n\nconst colorMap: Record<LogoColorVariant, string> = {\n dark: 'rgba(0, 6, 38, 1)',\n darkTeal: 'rgba(2, 46, 64, 1)',\n teal: 'rgba(21, 177, 205, 1)',\n lightTeal: 'rgba(106, 234, 253, 1)',\n orange: 'rgba(255, 111, 0, 1)',\n white: 'rgba(255, 255, 255, 1)',\n};\n\nexport interface SignatureAProps extends React.SVGProps<SVGSVGElement> {\n size?: number | string;\n colorVariant?: LogoColorVariant;\n animated?: boolean;\n animationDuration?: number;\n animationDelay?: number;\n}\n\nexport const SignatureA: React.FC<SignatureAProps> = ({\n size = 329,\n colorVariant = 'dark',\n animated = false,\n animationDuration = 2,\n animationDelay = 0,\n ...props\n}) => {\n const color = colorMap[colorVariant];\n const uniqueId = useId();\n\n // Path length for stroke animation (approximate value)\n const mainPathLength = 2800;\n\n if (animated) {\n return (\n <svg\n {...props}\n width={size}\n height={size}\n viewBox=\"0 0 329 329\"\n fill=\"none\"\n >\n <style>\n {`\n @keyframes drawSignature-${uniqueId.replace(/:/g, '')} {\n 0% {\n stroke-dashoffset: var(--path-length);\n fill-opacity: 0;\n }\n 80% {\n stroke-dashoffset: 0;\n fill-opacity: 0;\n }\n 100% {\n stroke-dashoffset: 0;\n fill-opacity: 1;\n }\n }\n @keyframes drawDot-${uniqueId.replace(/:/g, '')} {\n 0% {\n opacity: 0;\n transform: scale(0);\n }\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n }\n `}\n </style>\n {/* Dot - appears at the end */}\n <path\n d=\"M239.997 257.024C239.13 256.261 238.348 255.328 237.671 254.268C236.994 253.208 236.55 252.126 236.359 251.066C236.169 250.006 236.359 249.179 236.93 248.585C239.659 245.277 243.233 242.118 247.696 239.107C252.138 236.095 256.601 234.59 261.063 234.59C263.2 234.59 264.595 235.375 265.293 236.922C265.97 238.47 266.309 240.018 266.309 241.587C266.309 244.302 265.568 246.443 264.13 247.991C262.692 249.539 260.831 250.854 258.61 251.914C256.389 252.996 254.062 253.907 251.63 254.692C249.198 255.455 247.04 256.24 245.095 257.024L242.768 258.191C241.795 258.191 240.886 257.809 239.997 257.024Z\"\n fill={color}\n style={{\n transformOrigin: '252px 247px',\n animation: `drawDot-${uniqueId.replace(/:/g, '')} 0.3s ease-out ${animationDelay + animationDuration * 0.9}s forwards`,\n opacity: 0,\n }}\n />\n {/* Main signature path */}\n <path\n d=\"M308.102 176.765C306.453 175.663 304.126 174.963 301.123 174.687C298.119 174.411 294.46 174.433 290.167 174.772C285.873 175.111 281.008 175.578 275.594 176.193C273.648 176.405 271.829 176.617 270.179 176.808L245.793 180.942C242.091 181.536 239.003 182.003 236.486 182.406C233.969 182.808 231.558 182.702 229.232 182.13L193.572 185.777C193.952 184.293 194.587 182.893 195.517 181.6C196.469 180.243 197.548 179.161 198.711 178.398C205.099 169.068 211.254 160.056 217.176 151.299C223.077 142.562 228.639 134.102 233.885 125.959L234.752 121.888L253.936 88.6814C253.936 87.3243 254.422 86.2641 255.395 85.4795C256.368 84.7162 257.045 83.4439 257.425 81.7051L260.344 73.2445C260.915 71.6966 261.465 70.0426 261.93 68.2826C262.417 66.5439 262.671 64.5082 262.671 62.1757C262.671 60.8186 262.459 59.1223 262.1 57.0866C261.698 55.051 261.084 53.1426 260.217 51.4038C259.35 49.6438 258.271 48.1595 257.024 46.8872C255.776 45.615 254.168 45 252.243 45C250.89 45 249.388 45.3817 247.738 46.1663C246.089 46.9509 244.439 47.9263 242.789 49.0925C241.139 50.2588 239.595 51.4674 238.136 52.7397C236.677 54.012 235.471 55.0298 234.498 55.7932L207.468 81.7263L206.008 82.5957L192.641 96.2939C192.429 96.2939 192.112 96.3999 191.626 96.5907C191.139 96.7816 190.801 96.8876 190.61 96.8876L122.04 164.763C120.094 164.763 117.493 163.894 114.193 162.134C110.915 160.374 107.023 159.505 102.56 159.505C101.587 159.505 100.53 159.802 99.3666 160.374C98.2033 160.947 97.3361 161.243 96.7439 161.243C95.9613 161.243 95.2422 160.798 94.5654 159.929C93.8885 159.059 92.7887 158.635 91.2236 158.635C86.5704 159.611 83.567 160.183 82.2134 160.374C80.8597 160.586 79.9714 160.671 79.5907 160.671C77.6448 159.886 76.397 159.696 75.8047 160.098C75.2125 160.501 74.7472 160.777 74.3453 160.968C73.7743 160.586 72.3149 160.247 69.9883 159.95C67.6617 159.674 65.5255 159.505 63.6008 159.505C60.682 159.505 56.6634 159.611 51.5449 159.802C46.4053 159.992 41.3715 160.629 36.4434 161.689C31.5153 162.749 27.2005 164.488 23.5203 166.926C19.8401 169.365 18 172.8 18 177.274C18 181.155 18.9518 184.462 20.8976 187.177C22.8435 189.912 25.3181 192.223 28.3215 194.174C31.3249 196.125 34.6667 197.524 38.3469 198.394C42.0271 199.263 45.6016 199.709 49.0915 199.709C51.2277 200.281 53.1524 200.09 54.9079 199.136C54.6964 199.136 55.7328 199.369 57.9536 199.857C60.1744 200.345 62.9451 200.79 66.2235 201.172C69.523 201.553 72.9494 201.999 76.545 202.465C80.1195 202.953 83.0806 203.207 85.4071 203.207L59.5399 232.915L54.0196 239.319C52.8563 240.294 52.4333 241.948 52.7294 244.281C53.0043 246.613 53.6389 247.779 54.6118 247.779C57.1287 247.779 60.3225 246.083 64.193 242.69C68.0636 239.297 72.1457 235.163 76.397 230.307C80.6694 225.451 84.9207 220.51 89.1931 215.464C93.4444 210.417 97.2303 206.24 100.53 202.932C100.911 202.932 101.312 202.974 101.693 203.08C102.074 203.165 102.455 203.228 102.856 203.228C115.822 203.228 127.878 202.847 139.045 202.062C150.192 201.299 160.407 200.896 169.692 200.896C166.985 205.37 164.066 209.929 160.978 214.594C157.89 219.259 154.591 224.115 151.101 229.162L127.285 264.701C125.932 266.842 124.726 268.984 123.648 271.104C122.569 273.225 122.061 275.366 122.061 277.508C122.061 279.056 122.59 280.371 123.648 281.431C124.705 282.491 125.826 283.042 126.989 283.042C129.316 283.042 131.346 282.364 133.081 281.007C134.815 279.65 136.613 278.038 138.453 276.193C140.293 274.349 142.197 272.44 144.121 270.511C146.046 268.56 148.373 267.012 151.08 265.846L182.467 237.007C182.658 236.414 183.102 235.777 183.758 235.12C184.434 234.442 185.259 233.615 186.232 232.639L197.273 223.33C200.192 220.807 202.941 217.881 205.543 214.573C208.166 211.286 209.477 209.145 209.477 208.169C209.477 206.027 208.229 204.967 205.712 204.967C205.331 204.967 204.697 205.116 203.83 205.413C202.962 205.709 201.947 206.346 200.784 207.3L156.896 248.076L146.152 255.646L149.049 251.575C149.832 250.218 151.186 248.034 153.132 245.023C155.056 242.012 157.192 238.725 159.519 235.12C161.846 231.537 164.32 227.805 166.943 223.903C169.566 220.022 172.019 216.418 174.367 213.11C176.693 209.823 178.724 207.045 180.458 204.819C182.193 202.592 183.44 201.278 184.223 200.875C184.604 200.684 185.386 200.493 186.55 200.302C186.803 200.281 187.121 200.281 187.374 200.239L196.871 199.433C201.672 199.009 206.304 198.161 210.746 196.931C215.166 195.68 219.798 194.853 224.6 194.407C226.122 194.301 228.893 193.983 232.891 193.474C236.909 192.965 241.266 192.393 245.941 191.757C250.615 191.142 254.993 190.527 259.075 189.912C263.157 189.297 265.991 188.852 267.599 188.555C269.206 188.258 270.602 188.025 271.787 187.834C272.971 187.664 274.431 187.516 276.165 187.41C276.313 187.41 276.503 187.177 276.651 187.134L281.579 186.583C284.435 186.265 286.888 186.095 288.961 186.095C291.013 186.095 292.514 186.18 293.445 186.392C292.726 188.152 292.112 189.361 291.563 190.039C291.034 190.718 290.59 191.142 290.23 191.333C289.871 191.524 289.659 191.672 289.596 191.757C289.532 191.842 289.532 192.181 289.596 192.796C289.807 194.768 291.647 195.531 295.116 195.15C295.708 195.086 296.491 194.81 297.421 194.323C298.352 193.835 299.325 193.305 300.319 192.732C301.313 192.16 302.286 191.545 303.195 190.909C304.126 190.272 304.782 189.7 305.184 189.191C306.072 188.937 307.299 188.046 308.885 186.477C310.45 184.929 311.169 183.402 311 181.875C310.746 179.628 309.794 177.931 308.145 176.829L308.102 176.765ZM96.7227 190.039C76.5662 189.276 60.9781 188.088 49.9375 186.54C38.8968 184.993 31.5364 181.981 27.8562 177.507C28.6388 176.15 31.3884 175.026 36.1473 174.157C40.885 173.288 46.0246 172.567 51.5449 171.973C57.0653 171.379 62.1414 170.955 66.7946 170.679C71.4477 170.383 74.0704 170.234 74.6415 170.234H79.2946C88.6009 170.807 96.0882 171.4 101.82 171.973C107.531 172.545 111.549 173.033 113.876 173.436L96.7227 190.039ZM147.146 188.576C136.592 188.958 125.488 189.255 113.876 189.446C115.23 187.495 117.366 184.971 120.263 181.875C123.182 178.78 126.376 175.472 129.845 171.973C133.335 168.474 137.015 164.891 140.885 161.201C144.756 157.511 148.436 154.013 151.926 150.705L172.273 129.14C172.654 127.973 173.33 127.401 174.303 127.401L184.181 118.092C185.154 117.71 186.55 116.629 188.411 114.89C190.251 113.151 192.176 111.201 194.206 109.08C196.237 106.96 198.182 104.818 200.023 102.676C201.863 100.535 203.259 98.902 204.231 97.7146L211.211 93.0496C213.919 90.3354 216.541 87.706 219.058 85.1827C221.575 82.6593 224.092 80.3268 226.609 78.1852L231.262 73.5202C233.99 70.9968 236.74 68.8128 239.553 66.968C242.345 65.1232 246.279 62.727 251.313 59.822V63.0239C251.313 66.3318 250.551 70.1062 248.986 74.3896C247.421 78.6729 245.877 82.3625 244.333 85.4583L184.181 180.137C182.446 181.494 180.881 183.445 179.528 185.968C168.487 187.325 157.679 188.194 147.125 188.597L147.146 188.576Z\"\n stroke={color}\n strokeWidth=\"2\"\n fill={color}\n style={\n {\n '--path-length': mainPathLength,\n strokeDasharray: mainPathLength,\n strokeDashoffset: mainPathLength,\n fillOpacity: 0,\n animation: `drawSignature-${uniqueId.replace(/:/g, '')} ${animationDuration}s ease-out ${animationDelay}s forwards`,\n } as React.CSSProperties\n }\n />\n </svg>\n );\n }\n\n return (\n <svg\n {...props}\n width={size}\n height={size}\n viewBox=\"0 0 329 329\"\n fill=\"none\"\n >\n <path\n d=\"M239.997 257.024C239.13 256.261 238.348 255.328 237.671 254.268C236.994 253.208 236.55 252.126 236.359 251.066C236.169 250.006 236.359 249.179 236.93 248.585C239.659 245.277 243.233 242.118 247.696 239.107C252.138 236.095 256.601 234.59 261.063 234.59C263.2 234.59 264.595 235.375 265.293 236.922C265.97 238.47 266.309 240.018 266.309 241.587C266.309 244.302 265.568 246.443 264.13 247.991C262.692 249.539 260.831 250.854 258.61 251.914C256.389 252.996 254.062 253.907 251.63 254.692C249.198 255.455 247.04 256.24 245.095 257.024L242.768 258.191C241.795 258.191 240.886 257.809 239.997 257.024Z\"\n fill={color}\n />\n <path\n d=\"M308.102 176.765C306.453 175.663 304.126 174.963 301.123 174.687C298.119 174.411 294.46 174.433 290.167 174.772C285.873 175.111 281.008 175.578 275.594 176.193C273.648 176.405 271.829 176.617 270.179 176.808L245.793 180.942C242.091 181.536 239.003 182.003 236.486 182.406C233.969 182.808 231.558 182.702 229.232 182.13L193.572 185.777C193.952 184.293 194.587 182.893 195.517 181.6C196.469 180.243 197.548 179.161 198.711 178.398C205.099 169.068 211.254 160.056 217.176 151.299C223.077 142.562 228.639 134.102 233.885 125.959L234.752 121.888L253.936 88.6814C253.936 87.3243 254.422 86.2641 255.395 85.4795C256.368 84.7162 257.045 83.4439 257.425 81.7051L260.344 73.2445C260.915 71.6966 261.465 70.0426 261.93 68.2826C262.417 66.5439 262.671 64.5082 262.671 62.1757C262.671 60.8186 262.459 59.1223 262.1 57.0866C261.698 55.051 261.084 53.1426 260.217 51.4038C259.35 49.6438 258.271 48.1595 257.024 46.8872C255.776 45.615 254.168 45 252.243 45C250.89 45 249.388 45.3817 247.738 46.1663C246.089 46.9509 244.439 47.9263 242.789 49.0925C241.139 50.2588 239.595 51.4674 238.136 52.7397C236.677 54.012 235.471 55.0298 234.498 55.7932L207.468 81.7263L206.008 82.5957L192.641 96.2939C192.429 96.2939 192.112 96.3999 191.626 96.5907C191.139 96.7816 190.801 96.8876 190.61 96.8876L122.04 164.763C120.094 164.763 117.493 163.894 114.193 162.134C110.915 160.374 107.023 159.505 102.56 159.505C101.587 159.505 100.53 159.802 99.3666 160.374C98.2033 160.947 97.3361 161.243 96.7439 161.243C95.9613 161.243 95.2422 160.798 94.5654 159.929C93.8885 159.059 92.7887 158.635 91.2236 158.635C86.5704 159.611 83.567 160.183 82.2134 160.374C80.8597 160.586 79.9714 160.671 79.5907 160.671C77.6448 159.886 76.397 159.696 75.8047 160.098C75.2125 160.501 74.7472 160.777 74.3453 160.968C73.7743 160.586 72.3149 160.247 69.9883 159.95C67.6617 159.674 65.5255 159.505 63.6008 159.505C60.682 159.505 56.6634 159.611 51.5449 159.802C46.4053 159.992 41.3715 160.629 36.4434 161.689C31.5153 162.749 27.2005 164.488 23.5203 166.926C19.8401 169.365 18 172.8 18 177.274C18 181.155 18.9518 184.462 20.8976 187.177C22.8435 189.912 25.3181 192.223 28.3215 194.174C31.3249 196.125 34.6667 197.524 38.3469 198.394C42.0271 199.263 45.6016 199.709 49.0915 199.709C51.2277 200.281 53.1524 200.09 54.9079 199.136C54.6964 199.136 55.7328 199.369 57.9536 199.857C60.1744 200.345 62.9451 200.79 66.2235 201.172C69.523 201.553 72.9494 201.999 76.545 202.465C80.1195 202.953 83.0806 203.207 85.4071 203.207L59.5399 232.915L54.0196 239.319C52.8563 240.294 52.4333 241.948 52.7294 244.281C53.0043 246.613 53.6389 247.779 54.6118 247.779C57.1287 247.779 60.3225 246.083 64.193 242.69C68.0636 239.297 72.1457 235.163 76.397 230.307C80.6694 225.451 84.9207 220.51 89.1931 215.464C93.4444 210.417 97.2303 206.24 100.53 202.932C100.911 202.932 101.312 202.974 101.693 203.08C102.074 203.165 102.455 203.228 102.856 203.228C115.822 203.228 127.878 202.847 139.045 202.062C150.192 201.299 160.407 200.896 169.692 200.896C166.985 205.37 164.066 209.929 160.978 214.594C157.89 219.259 154.591 224.115 151.101 229.162L127.285 264.701C125.932 266.842 124.726 268.984 123.648 271.104C122.569 273.225 122.061 275.366 122.061 277.508C122.061 279.056 122.59 280.371 123.648 281.431C124.705 282.491 125.826 283.042 126.989 283.042C129.316 283.042 131.346 282.364 133.081 281.007C134.815 279.65 136.613 278.038 138.453 276.193C140.293 274.349 142.197 272.44 144.121 270.511C146.046 268.56 148.373 267.012 151.08 265.846L182.467 237.007C182.658 236.414 183.102 235.777 183.758 235.12C184.434 234.442 185.259 233.615 186.232 232.639L197.273 223.33C200.192 220.807 202.941 217.881 205.543 214.573C208.166 211.286 209.477 209.145 209.477 208.169C209.477 206.027 208.229 204.967 205.712 204.967C205.331 204.967 204.697 205.116 203.83 205.413C202.962 205.709 201.947 206.346 200.784 207.3L156.896 248.076L146.152 255.646L149.049 251.575C149.832 250.218 151.186 248.034 153.132 245.023C155.056 242.012 157.192 238.725 159.519 235.12C161.846 231.537 164.32 227.805 166.943 223.903C169.566 220.022 172.019 216.418 174.367 213.11C176.693 209.823 178.724 207.045 180.458 204.819C182.193 202.592 183.44 201.278 184.223 200.875C184.604 200.684 185.386 200.493 186.55 200.302C186.803 200.281 187.121 200.281 187.374 200.239L196.871 199.433C201.672 199.009 206.304 198.161 210.746 196.931C215.166 195.68 219.798 194.853 224.6 194.407C226.122 194.301 228.893 193.983 232.891 193.474C236.909 192.965 241.266 192.393 245.941 191.757C250.615 191.142 254.993 190.527 259.075 189.912C263.157 189.297 265.991 188.852 267.599 188.555C269.206 188.258 270.602 188.025 271.787 187.834C272.971 187.664 274.431 187.516 276.165 187.41C276.313 187.41 276.503 187.177 276.651 187.134L281.579 186.583C284.435 186.265 286.888 186.095 288.961 186.095C291.013 186.095 292.514 186.18 293.445 186.392C292.726 188.152 292.112 189.361 291.563 190.039C291.034 190.718 290.59 191.142 290.23 191.333C289.871 191.524 289.659 191.672 289.596 191.757C289.532 191.842 289.532 192.181 289.596 192.796C289.807 194.768 291.647 195.531 295.116 195.15C295.708 195.086 296.491 194.81 297.421 194.323C298.352 193.835 299.325 193.305 300.319 192.732C301.313 192.16 302.286 191.545 303.195 190.909C304.126 190.272 304.782 189.7 305.184 189.191C306.072 188.937 307.299 188.046 308.885 186.477C310.45 184.929 311.169 183.402 311 181.875C310.746 179.628 309.794 177.931 308.145 176.829L308.102 176.765ZM96.7227 190.039C76.5662 189.276 60.9781 188.088 49.9375 186.54C38.8968 184.993 31.5364 181.981 27.8562 177.507C28.6388 176.15 31.3884 175.026 36.1473 174.157C40.885 173.288 46.0246 172.567 51.5449 171.973C57.0653 171.379 62.1414 170.955 66.7946 170.679C71.4477 170.383 74.0704 170.234 74.6415 170.234H79.2946C88.6009 170.807 96.0882 171.4 101.82 171.973C107.531 172.545 111.549 173.033 113.876 173.436L96.7227 190.039ZM147.146 188.576C136.592 188.958 125.488 189.255 113.876 189.446C115.23 187.495 117.366 184.971 120.263 181.875C123.182 178.78 126.376 175.472 129.845 171.973C133.335 168.474 137.015 164.891 140.885 161.201C144.756 157.511 148.436 154.013 151.926 150.705L172.273 129.14C172.654 127.973 173.33 127.401 174.303 127.401L184.181 118.092C185.154 117.71 186.55 116.629 188.411 114.89C190.251 113.151 192.176 111.201 194.206 109.08C196.237 106.96 198.182 104.818 200.023 102.676C201.863 100.535 203.259 98.902 204.231 97.7146L211.211 93.0496C213.919 90.3354 216.541 87.706 219.058 85.1827C221.575 82.6593 224.092 80.3268 226.609 78.1852L231.262 73.5202C233.99 70.9968 236.74 68.8128 239.553 66.968C242.345 65.1232 246.279 62.727 251.313 59.822V63.0239C251.313 66.3318 250.551 70.1062 248.986 74.3896C247.421 78.6729 245.877 82.3625 244.333 85.4583L184.181 180.137C182.446 181.494 180.881 183.445 179.528 185.968C168.487 187.325 157.679 188.194 147.125 188.597L147.146 188.576Z\"\n fill={color}\n />\n </svg>\n );\n};\n\nSignatureA.displayName = 'SignatureA';\n","import { cva } from 'class-variance-authority';\n\nexport const artifactCardStyles = cva(\n 'group relative flex items-center rounded-[8px] border box-border cursor-pointer w-full overflow-hidden isolate transition-[border-color] duration-300',\n {\n variants: {\n status: {\n normal: 'bg-[var(--color-white)] border-[var(--color-gray-200)]',\n hover: 'border-[var(--color-blue-800)]',\n generating:\n 'bg-[var(--color-white)] border-[var(--color-gray-200)] cursor-default',\n error: 'border-[var(--color-red-1000)]',\n },\n disabled: {\n true: 'opacity-50 cursor-not-allowed pointer-events-none',\n false: '',\n },\n },\n defaultVariants: {\n status: 'normal',\n disabled: false,\n },\n },\n);\n\n// Background layer for hover effect - solid colors instead of gradients\nexport const hoverBackgroundStyles = cva(\n 'absolute inset-0 -z-10 transition-opacity duration-300',\n {\n variants: {\n status: {\n normal: 'opacity-0 group-hover:opacity-100',\n hover: 'opacity-100',\n generating: 'opacity-0',\n error: 'opacity-100',\n },\n },\n defaultVariants: {\n status: 'normal',\n },\n },\n);\n\n// Solid background color styles\nexport const animatedGradientStyles = cva('absolute inset-0', {\n variants: {\n status: {\n normal: 'bg-[var(--color-blue-200)]',\n hover: 'bg-[var(--color-blue-200)]',\n generating: '',\n error: 'bg-[var(--color-red-200)]',\n },\n },\n defaultVariants: {\n status: 'normal',\n },\n});\n\nexport const previewContainerStyles = cva('flex gap-2 h-[75px] shrink-0', {\n variants: {\n status: {\n normal: 'p-2 items-end',\n hover: 'p-2 items-end',\n generating: 'px-4 py-2 items-center',\n error: 'px-4 py-2 items-center',\n },\n },\n defaultVariants: {\n status: 'normal',\n },\n});\n\nexport const previewBoxStyles = cva(\n 'relative -bottom-2 w-[60px] h-[66px] bg-[var(--color-gray-50)] border border-[var(--color-gray-200)] border-b-0 rounded-t-[4px] overflow-hidden transition-transform duration-300 group-hover:opacity-90 group-hover:shadow-sm',\n);\n\nexport const previewBoxInnerStyles = cva(\n 'w-full h-full bg-[var(--color-blue-200)]/30 p-2 space-y-2 flex flex-col items-start justify-start gap-1',\n);\n\nexport const skeletonLineStyles = cva(\n 'h-1 bg-[var(--color-gray-200)] rounded-full origin-left',\n);\n\nexport const contentContainerStyles = cva(\n 'flex flex-col gap-[4px] grow items-start p-4 min-w-0',\n);\n\nexport const titleStyles = cva(\n 'font-medium text-[14px] leading-[20px] text-[var(--color-blue-1000)]',\n);\n\nexport const subtitleStyles = cva(\n 'text-[12px] leading-[16px] text-[var(--color-gray-600)]',\n);\n\nexport const iconContainerStyles = cva(\n 'px-4 overflow-hidden flex items-center w-[56px] relative',\n);\n\nexport const iconActiveStyles = cva(\n 'absolute w-6 h-6 text-[var(--color-blue-800)]',\n);\n\nexport const iconInactiveStyles = cva('w-6 h-6 text-[var(--color-gray-200)]');\n\nexport const iconStyles = cva('w-4 h-4 shrink-0 transition-all duration-300', {\n variants: {\n status: {\n normal:\n 'text-[var(--color-blue-1000)] group-hover:text-[var(--color-blue-800)] group-hover:translate-x-0.5',\n hover: 'text-[var(--color-blue-800)] translate-x-0.5',\n generating: 'text-[var(--color-gray-600)] animate-spin',\n error: 'text-[var(--color-blue-1000)] group-hover:rotate-[-20deg]',\n },\n },\n defaultVariants: {\n status: 'normal',\n },\n});\n\nexport const errorIconStyles = cva(\n 'w-4 h-4 shrink-0 text-[var(--color-red-1000)] transition-transform duration-300 group-hover:scale-110',\n);\n","// React\nimport { forwardRef, useState, useCallback, useMemo } from 'react';\nimport { motion } from 'framer-motion';\n\n// Components\nimport {\n Loader,\n TriangleAlert,\n RotateCcw,\n ArrowUp,\n} from '@/components/atoms/icons';\n\n// Styles\nimport {\n artifactCardStyles,\n hoverBackgroundStyles,\n animatedGradientStyles,\n previewContainerStyles,\n previewBoxStyles,\n previewBoxInnerStyles,\n contentContainerStyles,\n titleStyles,\n subtitleStyles,\n iconContainerStyles,\n iconStyles,\n errorIconStyles,\n skeletonLineStyles,\n iconActiveStyles,\n iconInactiveStyles,\n} from './ArtifactCard.styles';\n\n// Misc\nimport { cn } from '@/utils/cn';\n\n// Types\nimport type { ArtifactCardProps, ArtifactCardStatus } from './ArtifactCard.types';\n\n// Animation variants\nconst skeletonLineVariants = {\n rest: { scaleX: 1 },\n hover: { scaleX: [0, 1] },\n};\n\nconst contentSlideVariants = {\n rest: { x: 0 },\n hover: { x: 4 },\n};\n\nconst iconActiveVariants = {\n rest: { x: -20, opacity: 0 },\n hover: { x: 0, opacity: 1 },\n};\n\nconst iconInactiveVariants = {\n rest: { x: 0, opacity: 1 },\n hover: { x: 20, opacity: 0 },\n};\n\n// Skeleton line widths for the document preview animation\nconst SKELETON_WIDTHS = [100, 66, 75, 50];\n\nexport const ArtifactCard = forwardRef<HTMLDivElement, ArtifactCardProps>(\n (\n {\n title,\n subtitle,\n status: controlledStatus,\n onClick,\n onActionClick,\n className,\n disabled = false,\n },\n ref,\n ) => {\n const [isHovered, setIsHovered] = useState(false);\n\n // Determine effective status - controlled or internal hover state\n const effectiveStatus: ArtifactCardStatus =\n controlledStatus || (isHovered && !disabled ? 'hover' : 'normal');\n\n // Memoize animation state\n const animationState = useMemo(() => {\n if (effectiveStatus === 'generating' || effectiveStatus === 'error')\n return 'rest';\n return isHovered ? 'hover' : 'rest';\n }, [effectiveStatus, isHovered]);\n\n const handleMouseEnter = useCallback(() => {\n if (!controlledStatus && !disabled) {\n setIsHovered(true);\n }\n }, [controlledStatus, disabled]);\n\n const handleMouseLeave = useCallback(() => {\n if (!controlledStatus && !disabled) {\n setIsHovered(false);\n }\n }, [controlledStatus, disabled]);\n\n const handleClick = useCallback(() => {\n if (!disabled && onClick) {\n onClick();\n }\n }, [disabled, onClick]);\n\n const handleActionClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!disabled && onActionClick) {\n onActionClick();\n }\n },\n [disabled, onActionClick],\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleClick();\n }\n },\n [handleClick],\n );\n\n // Render preview with skeleton animation\n const renderPreview = () => {\n if (effectiveStatus === 'generating') {\n return (\n <div className={previewContainerStyles({ status: 'generating' })}>\n <Loader\n size={16}\n className=\"text-[var(--color-gray-600)] animate-spin\"\n />\n </div>\n );\n }\n\n if (effectiveStatus === 'error') {\n return (\n <div className={previewContainerStyles({ status: 'error' })}>\n <TriangleAlert size={16} className={errorIconStyles()} />\n </div>\n );\n }\n\n // Normal or hover - show animated skeleton preview\n return (\n <div className={previewContainerStyles({ status: effectiveStatus })}>\n <div className={previewBoxStyles()}>\n <motion.div\n className={previewBoxInnerStyles()}\n variants={{\n rest: {},\n hover: { transition: { staggerChildren: 0.1 } },\n }}\n >\n {SKELETON_WIDTHS.map((width, i) => (\n <motion.div\n key={i}\n className={skeletonLineStyles()}\n style={{ width: `${width}%` }}\n variants={skeletonLineVariants}\n transition={{ duration: 0.4, ease: 'easeInOut' }}\n />\n ))}\n </motion.div>\n </div>\n </div>\n );\n };\n\n // Render action icon with swap animation\n const renderActionIcon = () => {\n if (effectiveStatus === 'generating') {\n return null;\n }\n\n if (effectiveStatus === 'error') {\n return (\n <button\n type=\"button\"\n onClick={handleActionClick}\n className=\"focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-blue-800)] focus-visible:ring-offset-2 rounded-sm\"\n aria-label=\"Retry\"\n >\n <RotateCcw size={16} className={iconStyles({ status: 'error' })} />\n </button>\n );\n }\n\n // Icon swap animation\n return (\n <>\n <motion.div\n className={iconActiveStyles()}\n variants={iconActiveVariants}\n transition={{ duration: 0.3, ease: 'backOut' }}\n >\n <ArrowUp size={24} className=\"rotate-90\" />\n </motion.div>\n <motion.div\n className={iconInactiveStyles()}\n variants={iconInactiveVariants}\n transition={{ duration: 0.3 }}\n >\n <ArrowUp size={24} className=\"rotate-90\" />\n </motion.div>\n </>\n );\n };\n\n return (\n <motion.div\n ref={ref}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n className={cn(\n artifactCardStyles({\n status: effectiveStatus,\n disabled,\n }),\n className,\n )}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n aria-disabled={disabled}\n aria-label={`${title} - ${subtitle}${\n effectiveStatus === 'error' ? ' - Error occurred' : ''\n }${effectiveStatus === 'generating' ? ' - Generating' : ''}`}\n initial=\"rest\"\n whileHover=\"hover\"\n animate={animationState}\n >\n {/* Background Layer - solid color */}\n <div className={hoverBackgroundStyles({ status: effectiveStatus })}>\n <div className={animatedGradientStyles({ status: effectiveStatus })} />\n </div>\n\n {/* Preview Section */}\n {renderPreview()}\n\n {/* Content Section with slide animation */}\n <motion.div\n className={contentContainerStyles()}\n variants={contentSlideVariants}\n >\n <p className={titleStyles()} title={title}>\n {title}\n </p>\n <p className={subtitleStyles()} title={subtitle}>\n {subtitle}\n </p>\n </motion.div>\n\n {/* Action Icon Section with swap animation */}\n <div className={iconContainerStyles()}>{renderActionIcon()}</div>\n </motion.div>\n );\n },\n);\n\nArtifactCard.displayName = 'ArtifactCard';\n","import { cva } from 'class-variance-authority';\n\nexport const breadcrumbsStyles = cva('flex items-center flex-wrap gap-2', {\n variants: {\n size: {\n small: 'text-[0.875rem] leading-[1.25rem]', // typography-tiny\n medium: 'text-[1rem] leading-[1.5rem]', // typography-small\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n});\n\nexport const breadcrumbItemStyles = cva(\n 'inline-flex items-center gap-2 transition-colors duration-200',\n {\n variants: {\n state: {\n default:\n 'text-[var(--color-gray-600)] hover:text-[var(--color-blue-1000)] cursor-pointer',\n active: 'text-[var(--color-blue-1000)] font-medium cursor-default',\n inactive: 'text-[var(--color-gray-600)] cursor-default',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n }\n);\n\nexport const separatorStyles = cva(\n 'text-[var(--color-gray-600)] flex items-center justify-center'\n);\n\n","import { ReactNode } from 'react';\n\nimport {\n breadcrumbsStyles,\n breadcrumbItemStyles,\n separatorStyles,\n} from './Breadcrumbs.styles';\n\nimport { cn } from '@/utils/cn';\n\nimport { ChevronRight } from '@/components/atoms/icons';\n\nexport interface BreadcrumbItem {\n label: string;\n href?: string;\n onClick?: () => void;\n icon?: ReactNode;\n}\n\nexport interface BreadcrumbsProps {\n items: BreadcrumbItem[];\n separator?: ReactNode;\n className?: string;\n size?: 'small' | 'medium';\n}\n\nexport const Breadcrumbs = ({\n items,\n separator = <ChevronRight size={16} />,\n className,\n size = 'medium',\n}: BreadcrumbsProps) => {\n return (\n <nav\n aria-label=\"Breadcrumb\"\n className={cn(breadcrumbsStyles({ size }), className)}\n >\n <ol className=\"flex items-center flex-wrap gap-2\">\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n let content;\n\n if (isLast) {\n content = (\n <span\n className={breadcrumbItemStyles({ state: 'active' })}\n aria-current=\"page\"\n >\n {item.icon}\n {item.label}\n </span>\n );\n } else if (item.href) {\n content = (\n <a\n href={item.href}\n className={breadcrumbItemStyles({ state: 'default' })}\n onClick={item.onClick}\n >\n {item.icon}\n {item.label}\n </a>\n );\n } else if (item.onClick) {\n content = (\n <button\n type=\"button\"\n className={breadcrumbItemStyles({ state: 'default' })}\n onClick={item.onClick}\n >\n {item.icon}\n {item.label}\n </button>\n );\n } else {\n content = (\n <span className={breadcrumbItemStyles({ state: 'inactive' })}>\n {item.icon}\n {item.label}\n </span>\n );\n }\n\n return (\n <li\n key={`${item.label}-${index}`}\n className=\"flex items-center gap-2\"\n >\n {content}\n {!isLast && (\n <span className={separatorStyles()} aria-hidden=\"true\">\n {separator}\n </span>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n};\n","import { cva } from 'class-variance-authority';\n\nexport const buttonStyles = cva(\n 'inline-flex items-center justify-center rounded-[8px] font-normal transition-colors duration-200 box-border cursor-pointer disabled:cursor-not-allowed disabled:opacity-50 focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-2',\n {\n variants: {\n variant: {\n primary:\n 'bg-[var(--color-white)] border border-[var(--color-blue-1000)] text-[var(--color-blue-1000)] hover:bg-[var(--color-blue-200)] active:bg-[var(--color-blue-400)]',\n secondary:\n 'bg-[rgba(255,255,255,0.01)] border border-[var(--color-gray-600)] text-[var(--color-gray-600)] hover:bg-[var(--color-gray-100)] hover:border-[var(--color-gray-800)] hover:text-[var(--color-gray-800)] active:bg-[var(--color-gray-200)] active:border-[var(--color-gray-1000)] active:text-[var(--color-gray-1000)]',\n tertiary:\n 'bg-transparent border border-transparent text-[var(--color-blue-1000)] hover:bg-[var(--color-gray-100)] active:bg-[var(--color-gray-200)]',\n cta:\n 'bg-[var(--color-blue-800)] border border-transparent text-[var(--color-white)] hover:bg-[var(--color-blue-400)] active:bg-[var(--color-blue-1000)]',\n danger:\n 'bg-[var(--color-red-1000)] border border-transparent text-[var(--color-white)] hover:bg-[#e54545] active:bg-[#cc3d3d] focus-visible:ring-[var(--color-red-200)]',\n },\n tone: {\n brand: '',\n neutral: '',\n },\n size: {\n small: 'px-2 py-2 gap-1 text-[0.75rem] leading-[1rem]', // 12px/16px, 8px padding\n medium: 'px-3 py-2 gap-1 text-[1rem] leading-[1.5rem]', // 16px/24px, 12px/8px padding\n large: 'px-4 py-3 gap-1 text-[1rem] leading-[1.5rem]', // 16px/24px, 16px/12px padding\n },\n },\n compoundVariants: [\n // Primary Neutral Overrides\n {\n variant: 'primary',\n tone: 'neutral',\n className:\n 'bg-[rgba(0,6,38,0.9)] border-transparent text-[var(--color-white)] hover:bg-[rgba(0,6,38,0.8)] active:bg-[rgba(0,6,38,1)]',\n },\n // Secondary Neutral Overrides\n {\n variant: 'secondary',\n tone: 'neutral',\n className:\n 'bg-[rgba(255,255,255,0.01)] border-[rgba(0,13,77,0.45)] text-[rgba(0,9,51,0.65)] hover:bg-[rgba(0,13,77,0.05)] hover:border-[rgba(0,13,77,0.65)] hover:text-[rgba(0,9,51,0.85)] active:bg-[rgba(0,13,77,0.1)] active:border-[rgba(0,13,77,0.85)] active:text-[rgba(0,9,51,1)]',\n },\n // Tertiary Neutral Overrides\n {\n variant: 'tertiary',\n tone: 'neutral',\n className:\n 'text-[rgba(0,9,51,0.65)] hover:bg-[rgba(0,13,77,0.05)] active:bg-[rgba(0,13,77,0.1)] hover:text-[rgba(0,9,51,0.85)] active:text-[rgba(0,9,51,1)]',\n },\n ],\n defaultVariants: {\n variant: 'primary',\n tone: 'brand',\n size: 'medium',\n },\n }\n);\n","import { ButtonHTMLAttributes, ReactNode, forwardRef } from 'react';\nimport { cn } from '@/utils/cn';\nimport { buttonStyles } from './Button.styles';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'primary' | 'secondary' | 'tertiary' | 'cta' | 'danger';\n tone?: 'brand' | 'neutral';\n size?: 'small' | 'medium' | 'large';\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = 'primary',\n tone = 'brand',\n size = 'medium',\n startIcon,\n endIcon,\n children,\n disabled,\n ...props\n },\n ref\n ) => {\n const iconSize = size === 'small' ? 13 : size === 'large' ? 20 : 16;\n\n return (\n <button\n ref={ref}\n className={cn(buttonStyles({ variant, tone, size }), className)}\n disabled={disabled}\n {...props}\n >\n {startIcon && (\n <span\n className=\"flex items-center justify-center shrink-0\"\n style={{ width: iconSize, height: iconSize }}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className=\"flex items-center justify-center shrink-0\"\n style={{ width: iconSize, height: iconSize }}\n >\n {endIcon}\n </span>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n","import { cva } from 'class-variance-authority';\n\nexport const chatFileContainerStyles = cva(\n 'relative inline-flex items-center px-1 py-1 gap-1 rounded-[5px] border overflow-hidden transition-colors',\n {\n variants: {\n status: {\n uploading: 'border-[var(--color-gray-600)] bg-[var(--color-gray-50)]',\n processing: 'border-[var(--color-gray-600)] bg-[var(--color-gray-50)]',\n done: 'border-[var(--color-gray-200)] bg-[var(--color-white)]',\n error: 'border-[var(--color-gray-200)] bg-[var(--color-white)]',\n },\n },\n defaultVariants: {\n status: 'done',\n },\n },\n);\n\nexport const chatFileNameStyles = cva(\n 'truncate text-[0.75rem] leading-[1rem] font-normal',\n {\n variants: {\n status: {\n uploading: 'text-[var(--color-gray-600)]',\n processing: 'text-[var(--color-gray-800)]',\n done: 'text-[var(--color-gray-800)]',\n error: 'text-[var(--color-gray-800)]',\n },\n },\n defaultVariants: {\n status: 'done',\n },\n },\n);\n\nexport const chatFileIconStyles = cva('shrink-0', {\n variants: {\n status: {\n uploading: 'text-[var(--color-blue-800)]',\n processing: 'text-[var(--color-blue-800)]',\n done: 'text-[var(--color-gray-600)]',\n error: 'text-[var(--color-red-1000)]',\n },\n },\n defaultVariants: {\n status: 'done',\n },\n});\n\nexport const progressBarStyles = cva(\n 'absolute top-0 left-0 bottom-0 bg-[var(--color-gray-200)] z-0 rounded-bl-[4px] rounded-tl-[4px]',\n {\n variants: {\n status: {\n uploading: 'opacity-100',\n processing: 'opacity-100',\n done: 'opacity-0',\n error: 'opacity-0',\n },\n },\n defaultVariants: {\n status: 'uploading',\n },\n },\n);\n","// react / next\nimport React from 'react';\n\n// components\nimport { motion } from 'framer-motion';\nimport { FileText, Loader, ArrowUp, X, TriangleAlert } from '@/components/atoms/icons';\n\n// styles\nimport {\n chatFileContainerStyles,\n chatFileNameStyles,\n chatFileIconStyles,\n progressBarStyles,\n} from './ChatFile.styles';\n\n// misc\nimport { cn } from '@/utils/cn';\n\nexport enum FileStatus {\n Uploading = 'uploading',\n Processing = 'processing',\n Done = 'done',\n Error = 'error',\n}\n\nexport interface ChatFileProps {\n filename: string;\n status?: FileStatus;\n progress?: number;\n onDelete?: () => void;\n className?: string;\n}\n\nexport const ChatFile: React.FC<ChatFileProps> = ({\n filename,\n status = FileStatus.Done,\n progress = 0,\n onDelete,\n className,\n}) => {\n const isUploading = status === FileStatus.Uploading;\n const isProcessing = status === FileStatus.Processing;\n const isError = status === FileStatus.Error;\n\n const getStatusVariant = () => {\n if (isUploading) return 'uploading';\n if (isProcessing) return 'processing';\n if (isError) return 'error';\n return 'done';\n };\n\n const statusVariant = getStatusVariant();\n\n const renderIcon = () => {\n if (isUploading) return <ArrowUp size={12} className={chatFileIconStyles({ status: statusVariant })} />;\n if (isProcessing) return <Loader size={12} className={cn(chatFileIconStyles({ status: statusVariant }), \"animate-spin\")} />;\n if (isError) return <TriangleAlert size={12} className={chatFileIconStyles({ status: statusVariant })} />;\n return <FileText size={12} className={chatFileIconStyles({ status: statusVariant })} />;\n };\n\n return (\n <div className=\"relative inline-block group\">\n <div className={cn(chatFileContainerStyles({ status: statusVariant }), className)}>\n {/* Progress Bar Background */}\n {(isUploading || isProcessing) && (\n <motion.div\n className={progressBarStyles({ status: statusVariant })}\n initial={{ width: '0%' }}\n animate={{ width: `${progress}%` }}\n transition={{ duration: 0.3, ease: \"easeOut\" }}\n />\n )}\n\n {/* Content */}\n <div className=\"relative z-10 flex items-center gap-1 pr-1\">\n <div className={cn(\n \"flex items-center justify-center shrink-0 p-1 rounded-[2px]\",\n isError && \"bg-[#fff2f2]\"\n )}>\n {renderIcon()}\n </div>\n\n <span className={chatFileNameStyles({ status: statusVariant })} title={filename}>\n {filename}\n </span>\n </div>\n </div>\n\n {/* Delete Button - Shows on Hover (only when not uploading/processing) */}\n {onDelete && !isUploading && !isProcessing && (\n <motion.button\n onClick={onDelete}\n className=\"absolute -top-[6px] -right-[6px] hidden group-hover:flex items-center justify-center bg-[var(--color-white)] border border-[var(--color-gray-200)] rounded-[8px] p-[2px] focus:outline-none focus:ring-2 focus:ring-[var(--color-blue-800)] shrink-0 z-20\"\n aria-label=\"Remove file\"\n initial={{ scale: 0, opacity: 0 }}\n whileInView={{ scale: 1, opacity: 1 }}\n whileHover={{ scale: 1.1 }}\n whileTap={{ scale: 0.95 }}\n transition={{\n scale: { type: \"spring\", stiffness: 400, damping: 17 },\n opacity: { duration: 0.2 }\n }}\n >\n <X size={10} className=\"text-[var(--color-gray-800)]\" />\n </motion.button>\n )}\n </div>\n );\n};\n","import { cva } from 'class-variance-authority';\n\nexport const checkboxLabelStyles = cva(\n 'inline-flex items-center gap-2 cursor-pointer select-none group disabled:cursor-not-allowed disabled:opacity-50 w-fit',\n {\n variants: {\n size: {\n medium: 'text-[1rem] leading-[1.5rem] gap-2',\n small: 'gap-1',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n },\n);\n\nexport const checkboxVisualWrapperStyles = cva(\n 'flex items-center justify-center transition-colors duration-200 ease-in-out rounded-[2px] border shrink-0 peer-focus-visible:ring-2 peer-focus-visible:ring-[var(--color-blue-200)] peer-focus-visible:ring-offset-1',\n {\n variants: {\n checked: {\n true: 'bg-[var(--color-blue-1000)] border-[var(--color-blue-1000)] text-white',\n false:\n 'bg-white border-[var(--color-gray-200)] group-hover:border-[var(--color-gray-600)]',\n },\n size: {\n medium: 'w-[16px] h-[16px]', // 16px\n small: 'w-[12px] h-[12px]', // 12px\n },\n },\n defaultVariants: {\n checked: false,\n size: 'medium',\n },\n },\n);\n\n// Invisible input but accessible\nexport const checkboxInputStyles = 'sr-only peer';\n","// 1: react / next\nimport React, { forwardRef, useState } from 'react';\n\n// 2: components\nimport { Typography } from '@/components/atoms/Typography/Typography';\n\n// 3: styles\nimport {\n checkboxInputStyles,\n checkboxLabelStyles,\n checkboxVisualWrapperStyles,\n} from './Checkbox.styles';\n\n// 6: misc\nimport { Check } from '@/components/atoms/icons';\nimport { cn } from '@/utils/cn';\n\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n label?: string;\n size?: 'medium' | 'small';\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n className,\n checked,\n defaultChecked,\n onChange,\n label,\n size = 'medium',\n disabled,\n ...props\n },\n ref,\n ) => {\n const [internalChecked, setInternalChecked] = useState(\n defaultChecked || false,\n );\n const isControlled = checked !== undefined;\n const isChecked = isControlled ? checked : internalChecked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalChecked(e.target.checked);\n }\n onChange?.(e);\n };\n\n return (\n <label className={checkboxLabelStyles({ size, className })}>\n <input\n type=\"checkbox\"\n className={checkboxInputStyles}\n ref={ref}\n checked={isControlled ? checked : undefined}\n defaultChecked={!isControlled ? defaultChecked : undefined}\n onChange={handleChange}\n disabled={disabled}\n {...props}\n />\n <span\n className={checkboxVisualWrapperStyles({\n checked: !!isChecked,\n size,\n })}\n >\n <Check\n size={size === 'medium' ? 12 : 8}\n strokeWidth={3}\n className={cn(\n 'text-white transition-opacity duration-200',\n isChecked ? 'opacity-100' : 'opacity-0',\n )}\n />\n </span>\n {label && (\n <Typography\n as=\"span\"\n variant={size === 'medium' ? 'small' : 'x-small'}\n color=\"secondary\"\n >\n {label}\n </Typography>\n )}\n </label>\n );\n },\n);\n\nCheckbox.displayName = 'Checkbox';\n","import { cva } from 'class-variance-authority';\n\nexport const circularProgressContainerStyles = cva(\n 'relative inline-flex items-center justify-center',\n {\n variants: {\n size: {\n xs: 'w-[18px] h-[18px]',\n small: 'w-[24px] h-[24px]',\n medium: 'w-[32px] h-[32px]',\n large: 'w-[40px] h-[40px]',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n }\n);\n\nexport const circularProgressSvgStyles = cva('transform');\n\nexport const circularProgressTrackStyles = cva(\n 'stroke-[var(--color-gray-200)]'\n);\n\nexport const circularProgressIndicatorStyles = cva(\n 'transition-[stroke-dashoffset] duration-300 ease-in-out',\n {\n variants: {\n variant: {\n default: 'stroke-[var(--color-blue-800)]',\n success: 'stroke-[var(--color-green-1000)]',\n warning: 'stroke-[var(--color-orange-800)]',\n error: 'stroke-[var(--color-red-1000)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport const circularProgressLabelStyles = cva(\n 'absolute inset-0 flex items-center justify-center font-medium text-[var(--color-gray-800)]',\n {\n variants: {\n size: {\n xs: 'text-[6px]',\n small: 'text-[8px]',\n medium: 'text-[10px]',\n large: 'text-[12px]',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n }\n);\n\n","// React\nimport { forwardRef, HTMLAttributes } from 'react';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport {\n circularProgressContainerStyles,\n circularProgressSvgStyles,\n circularProgressTrackStyles,\n circularProgressIndicatorStyles,\n circularProgressLabelStyles,\n} from './CircularProgress.styles';\n\nexport interface CircularProgressProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The current value of the progress.\n * @default 0\n */\n value?: number;\n /**\n * The maximum value of the progress.\n * @default 100\n */\n max?: number;\n /**\n * The size of the circular progress.\n * @default 'medium'\n */\n size?: 'xs' | 'small' | 'medium' | 'large';\n /**\n * The visual variant of the progress indicator.\n * @default 'default'\n */\n variant?: 'default' | 'success' | 'warning' | 'error';\n /**\n * Whether to show the value label in the center.\n * @default true\n */\n showLabel?: boolean;\n /**\n * Custom formatter for the value label.\n */\n labelFormatter?: (value: number, max: number) => string;\n /**\n * The stroke width of the progress ring.\n * @default 3\n */\n strokeWidth?: number;\n}\n\nconst SIZE_MAP = {\n xs: 18,\n small: 24,\n medium: 32,\n large: 40,\n};\n\nexport const CircularProgress = forwardRef<HTMLDivElement, CircularProgressProps>(\n (\n {\n className,\n value = 0,\n max = 100,\n size = 'medium',\n variant = 'default',\n showLabel = true,\n labelFormatter,\n strokeWidth = 3,\n ...props\n },\n ref\n ) => {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n const sizePx = SIZE_MAP[size];\n const radius = (sizePx - strokeWidth) / 2;\n const circumference = 2 * Math.PI * radius;\n const strokeDashoffset = circumference - (percentage / 100) * circumference;\n\n const formattedLabel = labelFormatter\n ? labelFormatter(value, max)\n : `${Math.round(value)}`;\n\n return (\n <div\n ref={ref}\n className={cn(circularProgressContainerStyles({ size }), className)}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={value}\n {...props}\n >\n <svg\n className={circularProgressSvgStyles()}\n width={sizePx}\n height={sizePx}\n viewBox={`0 0 ${sizePx} ${sizePx}`}\n >\n {/* Background track */}\n <circle\n className={circularProgressTrackStyles()}\n cx={sizePx / 2}\n cy={sizePx / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={strokeWidth}\n />\n {/* Progress indicator */}\n <circle\n className={circularProgressIndicatorStyles({ variant })}\n cx={sizePx / 2}\n cy={sizePx / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={strokeDashoffset}\n transform={`rotate(-90 ${sizePx / 2} ${sizePx / 2})`}\n />\n </svg>\n {showLabel && (\n <span className={circularProgressLabelStyles({ size })}>\n {formattedLabel}\n </span>\n )}\n </div>\n );\n }\n);\n\nCircularProgress.displayName = 'CircularProgress';\n\n","import { useEffect, RefObject } from 'react';\n\ntype Handler = (event: MouseEvent | TouchEvent) => void;\n\nexport function useClickOutside<T extends HTMLElement = HTMLElement>(\n ref: RefObject<T>,\n handler: Handler\n): void {\n useEffect(() => {\n const listener = (event: MouseEvent | TouchEvent) => {\n const el = ref?.current;\n\n // Do nothing if clicking ref's element or descendent elements\n if (!el || el.contains(event.target as Node)) {\n return;\n }\n\n handler(event);\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [ref, handler]);\n}\n\n","import { cva } from 'class-variance-authority';\n\nexport const dropdownContentStyles = cva(\n 'absolute top-full left-0 z-50 w-full min-w-[200px] overflow-hidden rounded-[8px] border border-[var(--color-gray-200)] bg-[var(--color-white)] shadow-lg focus:outline-none',\n {\n variants: {\n align: {\n start: 'left-0',\n end: 'right-0 left-auto',\n center: 'left-1/2 -translate-x-1/2',\n },\n attached: {\n true: 'mt-0 rounded-t-none border-t-0',\n false: 'mt-2',\n },\n },\n defaultVariants: {\n align: 'start',\n attached: false,\n },\n },\n);\n\nexport const dropdownItemStyles = cva(\n 'flex w-full cursor-pointer items-center px-3 py-2 text-[0.875rem] text-[var(--color-gray-800)] transition-colors hover:bg-[var(--color-gray-50)] focus:bg-[var(--color-blue-200)] focus:outline-none disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n active: {\n true: 'bg-[var(--color-blue-200)] text-[var(--color-blue-1000)]',\n },\n variant: {\n default: '',\n destructive:\n 'text-[var(--color-red-1000)] hover:bg-[var(--color-red-200)] focus:bg-[var(--color-red-200)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n active: false,\n },\n },\n);\n\nexport const dropdownLabelStyles = cva(\n 'w-full px-3 py-1 text-[0.625rem] font-bold text-[var(--color-gray-600)] uppercase tracking-wider select-none',\n);\n\nexport const dropdownSeparatorStyles = cva(\n 'w-full h-px bg-[var(--color-gray-200)] my-1',\n);\n","import {\n useState,\n useRef,\n createContext,\n useContext,\n HTMLAttributes,\n forwardRef,\n MouseEvent,\n} from 'react';\nimport { AnimatePresence, motion, HTMLMotionProps } from 'framer-motion';\n\n// Components\nimport { ChevronDown } from '@/components/atoms/icons';\n\n// Hooks\nimport { useClickOutside } from '@/hooks/useClickOutside';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport {\n dropdownContentStyles,\n dropdownItemStyles,\n dropdownLabelStyles,\n dropdownSeparatorStyles,\n} from './Dropdown.styles';\n\n// Context\ninterface DropdownContextType {\n isOpen: boolean;\n toggle: () => void;\n close: () => void;\n}\nconst DropdownContext = createContext<DropdownContextType | undefined>(\n undefined,\n);\n\nexport const useDropdown = () => {\n const context = useContext(DropdownContext);\n if (!context) {\n throw new Error('useDropdown must be used within a Dropdown');\n }\n return context;\n};\n\n// Dropdown Root\nexport interface DropdownProps extends HTMLAttributes<HTMLDivElement> {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport const Dropdown = ({\n children,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n className,\n ...props\n}: DropdownProps) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : uncontrolledOpen;\n\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const toggle = () => {\n const newState = !isOpen;\n if (!isControlled) setUncontrolledOpen(newState);\n onOpenChange?.(newState);\n };\n\n const close = () => {\n if (!isControlled) setUncontrolledOpen(false);\n onOpenChange?.(false);\n };\n\n useClickOutside(dropdownRef, close);\n\n return (\n <DropdownContext.Provider value={{ isOpen, toggle, close }}>\n <div\n ref={dropdownRef}\n className={cn('relative w-full text-left', className)}\n {...props}\n >\n {children}\n </div>\n </DropdownContext.Provider>\n );\n};\n\nDropdown.displayName = 'Dropdown';\n\n// Trigger\nexport interface DropdownTriggerProps extends HTMLAttributes<HTMLDivElement> {\n /** Show a chevron icon positioned absolutely inside the trigger */\n chevronIcon?: boolean;\n}\n\nexport const DropdownTrigger = forwardRef<HTMLDivElement, DropdownTriggerProps>(\n (\n { className, children, onClick, chevronIcon = false, ...props },\n ref,\n ) => {\n const { toggle, isOpen } = useDropdown();\n\n const handleClick = (e: MouseEvent<HTMLDivElement>) => {\n toggle();\n onClick?.(e);\n };\n\n return (\n <div\n ref={ref}\n className={cn('cursor-pointer w-full relative overflow-visible', className)}\n onClick={handleClick}\n aria-haspopup=\"true\"\n aria-expanded={isOpen}\n {...props}\n >\n {children}\n {chevronIcon && (\n <motion.span\n animate={{ rotate: isOpen ? 180 : 0 }}\n transition={{ duration: 0.2, ease: [0.16, 1, 0.3, 1] }}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 z-20 pointer-events-none text-[var(--color-gray-600)]\"\n >\n <ChevronDown size={16} />\n </motion.span>\n )}\n </div>\n );\n },\n);\nDropdownTrigger.displayName = 'DropdownTrigger';\n\n// Content\nexport interface DropdownContentProps\n extends Omit<HTMLMotionProps<'div'>, 'ref'> {\n align?: 'start' | 'end' | 'center';\n attached?: boolean;\n}\n\nexport const DropdownContent = forwardRef<HTMLDivElement, DropdownContentProps>(\n (\n { className, align = 'start', attached = false, children, ...props },\n ref,\n ) => {\n const { isOpen } = useDropdown();\n\n return (\n <AnimatePresence>\n {isOpen && (\n <motion.div\n ref={ref}\n initial={{ opacity: 0, y: -4, scale: 0.98 }}\n animate={{ opacity: 1, y: 0, scale: 1 }}\n exit={{ opacity: 0, y: -4, scale: 0.98 }}\n transition={{ duration: 0.2, ease: [0.16, 1, 0.3, 1] }}\n style={{ transformOrigin: 'top center' }}\n className={cn(\n dropdownContentStyles({ align, attached }),\n className,\n )}\n {...props}\n >\n {children}\n </motion.div>\n )}\n </AnimatePresence>\n );\n },\n);\nDropdownContent.displayName = 'DropdownContent';\n\n// Item\nexport interface DropdownItemProps extends HTMLAttributes<HTMLDivElement> {\n active?: boolean;\n variant?: 'default' | 'destructive';\n closeOnSelect?: boolean;\n}\n\nexport const DropdownItem = forwardRef<HTMLDivElement, DropdownItemProps>(\n (\n {\n className,\n active,\n variant,\n closeOnSelect = true,\n children,\n onClick,\n ...props\n },\n ref,\n ) => {\n const { close } = useDropdown();\n\n const handleClick = (e: MouseEvent<HTMLDivElement>) => {\n onClick?.(e);\n if (closeOnSelect) {\n close();\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(dropdownItemStyles({ active, variant }), className)}\n onClick={handleClick}\n role=\"menuitem\"\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nDropdownItem.displayName = 'DropdownItem';\n\n// Label\nexport interface DropdownLabelProps extends HTMLAttributes<HTMLDivElement> { }\n\nexport const DropdownLabel = forwardRef<HTMLDivElement, DropdownLabelProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(dropdownLabelStyles(), className)}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nDropdownLabel.displayName = 'DropdownLabel';\n\n// Separator\nexport interface DropdownSeparatorProps extends HTMLAttributes<HTMLDivElement> {\n animated?: boolean;\n animationDelay?: number;\n}\n\nexport const DropdownSeparator = forwardRef<\n HTMLDivElement,\n DropdownSeparatorProps\n>(({ className, animated = false, animationDelay = 0.2, ...props }, ref) => {\n if (animated) {\n return (\n <div\n ref={ref}\n className={cn('h-px my-1 overflow-hidden', className)}\n {...props}\n >\n <motion.div\n className=\"h-full bg-[var(--color-gray-200)]\"\n initial={{ width: 0 }}\n animate={{ width: '100%' }}\n transition={{\n duration: 0.3,\n ease: [0.16, 1, 0.3, 1],\n delay: animationDelay,\n }}\n />\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn(dropdownSeparatorStyles(), className)}\n {...props}\n />\n );\n});\nDropdownSeparator.displayName = 'DropdownSeparator';\n","import { cva } from 'class-variance-authority';\n\nexport const inputStyles = cva(\n 'w-full bg-[var(--color-white)] border border-solid rounded-[8px] font-normal transition-colors duration-200 box-border focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-1 disabled:cursor-not-allowed disabled:opacity-50',\n {\n variants: {\n status: {\n default:\n 'border-[var(--color-gray-200)] text-[var(--color-gray-600)] placeholder:text-[var(--color-gray-600)] focus:border-[var(--color-blue-1000)] focus:text-[var(--color-blue-1000)]',\n error:\n 'border-[var(--color-red-1000)] text-[var(--color-red-1000)] placeholder:text-[var(--color-red-1000)] focus:border-[var(--color-red-1000)]',\n success:\n 'border-[var(--color-green-1000)] text-[var(--color-green-1000)] placeholder:text-[var(--color-green-1000)] focus:border-[var(--color-green-1000)]',\n },\n size: {\n medium: 'px-4 py-4 text-[1rem] leading-[1.5rem]', // 16px/24px\n small: 'px-3 py-2 text-[0.875rem] leading-[1.25rem]', // 14px/20px\n tiny: 'p-2 text-[0.75rem] leading-[1rem]', // 12px/16px\n },\n },\n defaultVariants: {\n status: 'default',\n size: 'medium',\n },\n },\n);\n\nexport const inputContainerStyles = cva('relative w-full', {\n variants: {\n size: {\n medium: '',\n small: '',\n tiny: '',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n});\n\nexport const inputIconStyles = cva(\n 'absolute top-1/2 -translate-y-1/2 pointer-events-none flex items-center justify-center',\n {\n variants: {\n status: {\n default: 'text-[var(--color-gray-600)]',\n error: 'text-[var(--color-red-1000)]',\n success: 'text-[var(--color-green-1000)]',\n },\n position: {\n start: '',\n end: '',\n },\n size: {\n medium: 'size-[24px]',\n small: 'size-[16px]',\n tiny: 'size-[16px]',\n },\n },\n compoundVariants: [\n {\n position: 'start',\n size: 'medium',\n className: 'left-4',\n },\n {\n position: 'start',\n size: 'small',\n className: 'left-3',\n },\n {\n position: 'start',\n size: 'tiny',\n className: 'left-2',\n },\n {\n position: 'end',\n size: 'medium',\n className: 'right-4',\n },\n {\n position: 'end',\n size: 'small',\n className: 'right-3',\n },\n {\n position: 'end',\n size: 'tiny',\n className: 'right-2',\n },\n ],\n defaultVariants: {\n status: 'default',\n size: 'medium',\n position: 'end',\n },\n },\n);\n","import { InputHTMLAttributes, ReactNode, forwardRef } from 'react';\nimport { cn } from '@/utils/cn';\nimport {\n inputStyles,\n inputContainerStyles,\n inputIconStyles,\n} from './Input.styles';\n\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\n status?: 'default' | 'error' | 'success';\n size?: 'medium' | 'small' | 'tiny';\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n status = 'default',\n size = 'medium',\n startIcon,\n endIcon,\n disabled,\n ...props\n },\n ref\n ) => {\n // Size-aware padding\n const startIconPaddingMap = {\n medium: 'pl-12', // 16px (pad) + 24px (icon) + 8px (gap) = 48px -> pl-12\n small: 'pl-9', // 12px (pad) + 16px (icon) + 8px (gap) = 36px -> pl-9\n tiny: 'pl-8', // 8px (pad) + 16px (icon) + 8px (gap) = 32px -> pl-8\n };\n\n const endIconPaddingMap = {\n medium: 'pr-12',\n small: 'pr-9',\n tiny: 'pr-8',\n };\n\n return (\n <div className={inputContainerStyles({ size })}>\n {startIcon && (\n <span className={inputIconStyles({ status, size, position: 'start' })}>\n {startIcon}\n </span>\n )}\n <input\n ref={ref}\n className={cn(\n inputStyles({ status, size }),\n startIcon && startIconPaddingMap[size],\n endIcon && endIconPaddingMap[size],\n className\n )}\n disabled={disabled}\n {...props}\n />\n {endIcon && (\n <span className={inputIconStyles({ status, size, position: 'end' })}>\n {endIcon}\n </span>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = 'Input';\n","import { cva } from 'class-variance-authority';\n\nexport const loadingSpinnerWrapperStyles = cva('flex flex-col items-center justify-center');\n\nexport const spinnerContainerStyles = cva('relative', {\n variants: {\n size: {\n sm: 'w-8 h-8',\n md: 'w-12 h-12',\n lg: 'w-16 h-16',\n },\n },\n defaultVariants: {\n size: 'lg',\n },\n});\n\nexport const spinnerBorderStyles = cva(\n 'absolute inset-0 rounded-full border-4 border-transparent animate-spin',\n {\n variants: {\n color: {\n primary: 'border-t-[var(--color-blue-800)]',\n secondary: 'border-t-[var(--color-gray-600)]',\n },\n },\n defaultVariants: {\n color: 'primary',\n },\n }\n);\n\nexport const loadingTextStyles = cva('mt-4 typography-small', {\n variants: {\n color: {\n primary: 'text-[var(--color-gray-1000)]',\n muted: 'text-[var(--color-gray-600)]',\n },\n },\n defaultVariants: {\n color: 'muted',\n },\n});\n","import { FC } from 'react';\nimport {\n loadingSpinnerWrapperStyles,\n spinnerContainerStyles,\n spinnerBorderStyles,\n loadingTextStyles,\n} from './LoadingSpinner.styles';\n\ninterface LoadingSpinnerProps {\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary';\n text?: string;\n textColor?: 'primary' | 'muted';\n}\n\nexport const LoadingSpinner: FC<LoadingSpinnerProps> = ({\n size = 'lg',\n color = 'primary',\n text,\n textColor = 'muted',\n}) => {\n return (\n <div className={loadingSpinnerWrapperStyles()}>\n <div className={spinnerContainerStyles({ size })}>\n <div className={spinnerBorderStyles({ color })} />\n </div>\n {text && <p className={loadingTextStyles({ color: textColor })}>{text}</p>}\n </div>\n );\n};\n\n","import { cva } from 'class-variance-authority';\n\nexport const rootStyles = cva(\n 'relative flex flex-col w-full max-w-[668px] transition-colors duration-200 group',\n {\n variants: {\n variant: {\n user: '',\n assistant: '',\n system: '',\n loader: '',\n },\n alignment: {\n left: 'items-start',\n center: 'items-center',\n right: 'items-end',\n },\n isEditing: {\n true: 'items-stretch',\n false: '',\n },\n },\n compoundVariants: [\n // Default alignments based on variant (can be overridden by explicit alignment prop)\n { variant: 'user', alignment: undefined, isEditing: false, className: 'items-end' },\n { variant: 'assistant', alignment: undefined, isEditing: false, className: 'items-start' },\n { variant: 'system', alignment: undefined, className: 'items-start' },\n { variant: 'loader', alignment: undefined, className: 'items-start' },\n ],\n defaultVariants: {\n variant: 'user',\n isEditing: false,\n },\n },\n);\n\nexport const innerContainerStyles = cva('flex gap-[12px] items-start w-full');\n\nexport const messageContainerStyles = cva('flex flex-col flex-1 min-w-0');\n\nexport const bubbleStyles = cva(\n 'flex flex-col w-full transition-colors duration-200',\n {\n variants: {\n variant: {\n user: 'bg-[var(--color-white)] border border-[var(--color-gray-200)] rounded-[16px] p-[16px] gap-[24px]',\n assistant: 'bg-transparent p-[8px] gap-[8px]',\n system: 'bg-transparent p-[8px] gap-[8px]',\n loader: 'bg-transparent p-[8px] gap-[24px]',\n },\n isSticky: {\n true: 'shadow-[0px_8px_16px_-4px_rgba(0,0,0,0.1),0px_4px_8px_-4px_rgba(0,0,0,0.06)]',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'user',\n isSticky: false,\n },\n },\n);\n\nexport const contentStyles = cva('flex w-full', {\n variants: {\n variant: {\n user: 'flex-col gap-[8px]',\n assistant: 'flex-col gap-[8px]',\n system: 'flex-row items-center gap-[8px]',\n loader: 'flex-col items-start',\n },\n },\n defaultVariants: {\n variant: 'user',\n },\n});\n\nexport const headerStyles = cva('typography-h4 text-[var(--color-blue-1000)]');\n\nexport const textStyles = cva('typography-small', {\n variants: {\n variant: {\n user: 'text-[var(--color-blue-1000)]',\n assistant: 'text-[var(--color-blue-1000)]',\n system: 'text-[var(--color-gray-600)]',\n loader: '',\n },\n },\n defaultVariants: {\n variant: 'user',\n },\n});\n\nexport const actionsStyles = cva(\n 'flex gap-[8px] p-[4px] rounded-[4px] transition-opacity duration-200',\n {\n variants: {\n variant: {\n user: '',\n assistant: '',\n system: 'hidden',\n loader: 'hidden',\n },\n },\n defaultVariants: {\n variant: 'user',\n },\n },\n);\n\n// Actions icons wrapper - only visible on hover\nexport const actionsIconsStyles = cva([\n 'flex',\n 'gap-[8px]',\n 'opacity-0',\n 'group-hover:opacity-100',\n 'transition-opacity',\n 'duration-200',\n]);\n\nexport const actionButtonStyles = cva(\n 'p-1 rounded-[4px] text-[var(--color-gray-400)] hover:text-[var(--color-gray-800)] hover:drop-shadow-[0_1px_2px_rgba(0,0,0,0.15)] transition-all duration-200 focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-1 disabled:opacity-30 disabled:cursor-not-allowed disabled:hover:text-[var(--color-gray-400)] disabled:hover:drop-shadow-none',\n {\n variants: {\n isActive: {\n true: 'text-[var(--color-blue-800)]',\n false: '',\n },\n },\n defaultVariants: {\n isActive: false,\n },\n },\n);\n\nexport const avatarContainerStyles = cva(\n 'flex items-start justify-center shrink-0 pt-[4px]',\n);\n\nexport const avatarInnerStyles = cva(\n 'flex items-center justify-center size-[32px] rounded-full bg-[var(--color-blue-1000)]',\n);\n\nexport const timestampStyles = cva(\n 'text-[12px] text-[var(--color-gray-600)] mt-[4px]',\n);\n\nexport const loaderStyles = cva(\n 'flex items-center justify-center',\n);\n\n// Container for system message content with shimmer overlay\nexport const systemContentWrapperStyles = cva(\n 'relative overflow-hidden flex items-center gap-[8px] py-[2px] select-none',\n);\n\n// Shine overlay that passes over the content like a skeleton loader\nexport const shimmerOverlayStyles = cva([\n 'absolute -inset-y-2 -inset-x-4',\n 'animate-shimmer',\n 'bg-[linear-gradient(90deg,transparent_0%,transparent_35%,rgba(255,255,255,0.4)_50%,transparent_65%,transparent_100%)]',\n 'blur-[1px]',\n 'z-10 pointer-events-none',\n]);\n\n// Activity icon container with styling and rhythm animation\nexport const activityIconAnimatedStyles = cva([\n 'relative shrink-0 flex items-center justify-center',\n 'text-[var(--color-gray-600)]',\n 'animate-signal-rhythm',\n 'origin-center',\n]);\n\n// Optional subtle glow backdrop for the activity icon\nexport const activityIconGlowStyles = cva([\n 'absolute inset-0',\n 'bg-[var(--color-blue-200)]',\n 'rounded-full',\n 'opacity-0',\n 'animate-ping-slow',\n '-z-10',\n]);\n\n// Edit mode container styles - wraps the bubble with blue border\nexport const editContainerStyles = cva([\n 'flex',\n 'flex-col',\n 'w-full',\n 'bg-[var(--color-white)]',\n 'rounded-[16px]',\n 'border',\n 'border-[var(--color-blue-800)]',\n 'p-[16px]',\n 'gap-[8px]',\n 'transition-colors',\n 'duration-200',\n]);\n\n// Edit mode textarea styles - minimal, no border\nexport const editTextareaStyles = cva([\n 'w-full',\n 'min-h-[60px]',\n 'bg-transparent',\n 'border-none',\n 'resize-none',\n 'typography-small',\n 'text-[var(--color-blue-1000)]',\n 'placeholder:text-[var(--color-gray-600)]',\n 'focus:outline-none',\n 'disabled:opacity-50',\n 'disabled:cursor-not-allowed',\n]);\n\n// Edit mode hint text styles\nexport const editHintStyles = cva([\n 'text-[12px]',\n 'leading-[16px]',\n 'text-[var(--color-gray-600)]',\n]);\n\n// Branch navigator container\nexport const branchNavigatorStyles = cva([\n 'flex',\n 'items-center',\n 'gap-[4px]',\n]);\n\n// Branch navigator button\nexport const branchNavButtonStyles = cva(\n [\n 'p-[4px]',\n 'rounded-[4px]',\n 'text-[var(--color-gray-400)]',\n 'transition-colors',\n 'duration-200',\n 'hover:text-[var(--color-gray-800)]',\n 'hover:bg-[var(--color-gray-100)]',\n 'disabled:opacity-30',\n 'disabled:cursor-not-allowed',\n 'disabled:hover:bg-transparent',\n 'disabled:hover:text-[var(--color-gray-400)]',\n 'focus-visible:ring-2',\n 'focus-visible:ring-[var(--color-blue-200)]',\n 'focus-visible:ring-offset-1',\n ]\n);\n\n// Branch navigator text\nexport const branchNavTextStyles = cva([\n 'text-[12px]',\n 'leading-[16px]',\n 'text-[var(--color-gray-600)]',\n 'font-normal',\n 'tabular-nums',\n 'select-none',\n 'min-w-[32px]',\n 'text-center',\n]);\n","// React\nimport {\n forwardRef,\n HTMLAttributes,\n useState,\n useEffect,\n useRef,\n useCallback,\n useMemo,\n memo,\n ComponentType,\n KeyboardEvent,\n ChangeEvent,\n} from 'react';\n\n// Components\nimport { Check, Activity, ChevronLeft, ChevronRight, Edit2, X } from '@/components/atoms/icons';\nimport { LogoA, SignatureA } from '@/components/atoms/logos';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport {\n rootStyles,\n bubbleStyles,\n contentStyles,\n actionsStyles,\n avatarContainerStyles,\n innerContainerStyles,\n messageContainerStyles,\n headerStyles,\n textStyles,\n actionButtonStyles,\n avatarInnerStyles,\n timestampStyles,\n loaderStyles,\n systemContentWrapperStyles,\n shimmerOverlayStyles,\n activityIconAnimatedStyles,\n activityIconGlowStyles,\n editContainerStyles,\n editTextareaStyles,\n editHintStyles,\n actionsIconsStyles,\n branchNavigatorStyles,\n branchNavButtonStyles,\n branchNavTextStyles,\n} from './MessageBubble.styles';\n\n// Types\nexport interface MessageAction {\n /** Icon component to display */\n icon: ComponentType<{ size?: number | string }>;\n /** Accessible label for the action button */\n label: string;\n /** Click handler for the action */\n onClick?: () => void;\n /** Whether this action is in an active/highlighted state */\n isActive?: boolean;\n}\n\nexport interface BranchInfo {\n /** Current branch index (1-based for display) */\n currentIndex: number;\n /** Total number of branches */\n totalBranches: number;\n}\n\nexport interface MessageBubbleProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'user' | 'assistant' | 'system' | 'loader';\n heading?: string;\n isLoading?: boolean;\n /** Hide the Archie logo avatar (only applicable to assistant variant). Defaults to true (hidden). */\n hideAvatar?: boolean;\n /** Show timestamp (not recommended per design). Defaults to false. */\n showTimestamp?: boolean;\n /** Timestamp value to display */\n timestamp?: Date | string;\n /** Sticky mode - adds shadow to bubble, no action controls */\n isSticky?: boolean;\n /** Initial prompt - centers the message (only applies to user variant). Used for the first user message in a conversation. */\n isInitialPrompt?: boolean;\n /** Explicit alignment override - auto determines based on variant and isInitialPrompt */\n alignment?: 'left' | 'center' | 'right';\n /** Custom actions to display on hover. Each action has an icon, label, and onClick handler. */\n actions?: MessageAction[];\n /** Enable built-in copy functionality. When true, adds a copy button that copies the message content. */\n enableCopy?: boolean;\n /** Icon to use for the copy action (defaults to Clipboard icon from props) */\n copyIcon?: ComponentType<{ size?: number | string }>;\n /** Callback executed when copy succeeds */\n onCopySuccess?: () => void;\n /** Enable edit mode functionality for user messages */\n enableEdit?: boolean;\n /** Whether the message is currently in edit mode (controlled) */\n isEditing?: boolean;\n /** Initial content for edit mode (required for controlled mode since contentRef is not available) */\n initialEditContent?: string;\n /** Callback when entering edit mode */\n onEditStart?: () => void;\n /** Callback when cancelling edit mode */\n onEditCancel?: () => void;\n /** Callback when saving edit with the new content */\n onEditSave?: (newContent: string) => void | Promise<void>;\n /** Whether save operation is in progress */\n isSaving?: boolean;\n /** Branch information for navigation */\n branchInfo?: BranchInfo;\n /** Callback when navigating to previous branch */\n onPreviousBranch?: () => void;\n /** Callback when navigating to next branch */\n onNextBranch?: () => void;\n /** Whether branch navigation is loading */\n isBranchLoading?: boolean;\n}\n\n// Empty array constant to prevent re-renders from default prop\nconst EMPTY_ACTIONS: MessageAction[] = [];\n\n// Platform detection - only needs to run once\nconst IS_MAC = typeof navigator !== 'undefined' && /Mac|iPod|iPhone|iPad/.test(navigator.platform);\nconst KEYBOARD_HINT = IS_MAC ? '⌘+Enter to save, Esc to cancel' : 'Ctrl+Enter to save, Esc to cancel';\n\n// Format timestamp utility - moved outside component to prevent recreation\nconst formatTimestamp = (ts: Date | string): string => {\n const date = typeof ts === 'string' ? new Date(ts) : ts;\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n const diffMins = Math.floor(diffMs / 60000);\n\n if (diffMins < 1) return 'Just now';\n if (diffMins < 60) return `${diffMins} min ago`;\n\n const diffHours = Math.floor(diffMins / 60);\n if (diffHours < 24) return `${diffHours}h ago`;\n\n return date.toLocaleDateString();\n};\n\ninterface ActionButtonProps {\n onClick?: () => void;\n icon: ComponentType<{ size?: number | string }>;\n label: string;\n className?: string;\n isActive?: boolean;\n disabled?: boolean;\n}\n\nconst ActionButton = memo<ActionButtonProps>(({\n onClick,\n icon: Icon,\n label,\n className,\n isActive = false,\n disabled = false,\n}) => (\n <button\n className={cn(actionButtonStyles({ isActive }), className)}\n onClick={onClick}\n type=\"button\"\n aria-label={label}\n disabled={disabled}\n >\n <Icon size={12} />\n </button>\n));\n\nActionButton.displayName = 'ActionButton';\n\ninterface BranchNavigatorProps {\n branchInfo: BranchInfo;\n onPrevious?: () => void;\n onNext?: () => void;\n isLoading?: boolean;\n}\n\n/** Branch navigator component for navigating between message versions */\nconst BranchNavigator = memo<BranchNavigatorProps>(({\n branchInfo,\n onPrevious,\n onNext,\n isLoading = false,\n}) => {\n const hasPrevious = branchInfo.currentIndex > 1;\n const hasNext = branchInfo.currentIndex < branchInfo.totalBranches;\n\n if (branchInfo.totalBranches <= 1) {\n return null;\n }\n\n return (\n <div className={cn(branchNavigatorStyles())}>\n <button\n type=\"button\"\n className={cn(branchNavButtonStyles())}\n onClick={onPrevious}\n disabled={!hasPrevious || isLoading}\n aria-label=\"Previous version\"\n >\n <ChevronLeft size={14} />\n </button>\n <span className={cn(branchNavTextStyles())}>\n {branchInfo.currentIndex} / {branchInfo.totalBranches}\n </span>\n <button\n type=\"button\"\n className={cn(branchNavButtonStyles())}\n onClick={onNext}\n disabled={!hasNext || isLoading}\n aria-label=\"Next version\"\n >\n <ChevronRight size={14} />\n </button>\n </div>\n );\n});\n\nBranchNavigator.displayName = 'BranchNavigator';\n\n// Looping animated SignatureA for loader state\nconst AnimatedLoader = () => {\n const [key, setKey] = useState(0);\n\n useEffect(() => {\n // Restart animation every 2.5 seconds (animation duration + small pause)\n const interval = setInterval(() => {\n setKey((k) => k + 1);\n }, 2500);\n\n return () => clearInterval(interval);\n }, []);\n\n return (\n <div className={cn(loaderStyles())}>\n <SignatureA\n key={key}\n size={28}\n colorVariant=\"lightTeal\"\n animated\n animationDuration={2}\n />\n </div>\n );\n};\n\nexport const MessageBubble = forwardRef<HTMLDivElement, MessageBubbleProps>(\n (\n {\n className,\n variant = 'user',\n heading,\n children,\n isLoading,\n timestamp,\n hideAvatar = false,\n showTimestamp = false,\n isSticky = false,\n isInitialPrompt = false,\n alignment,\n actions = EMPTY_ACTIONS,\n enableCopy = false,\n copyIcon,\n onCopySuccess,\n enableEdit = false,\n isEditing: isEditingProp,\n initialEditContent,\n onEditStart,\n onEditCancel,\n onEditSave,\n isSaving = false,\n branchInfo,\n onPreviousBranch,\n onNextBranch,\n isBranchLoading = false,\n ...props\n },\n ref,\n ) => {\n const contentRef = useRef<HTMLDivElement>(null);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const [isCopied, setIsCopied] = useState(false);\n const [internalEditing, setInternalEditing] = useState(false);\n const [editContent, setEditContent] = useState(initialEditContent ?? '');\n\n // Use controlled or uncontrolled editing state\n const isEditing = isEditingProp ?? internalEditing;\n\n const resolvedAlignment =\n alignment ??\n (variant === 'user' ? (isInitialPrompt ? 'center' : 'right') : 'left');\n\n // Extract text content from children for editing\n const getTextContent = useCallback((): string => {\n if (contentRef.current) {\n return contentRef.current.innerText;\n }\n if (typeof children === 'string') {\n return children;\n }\n return '';\n }, [children]);\n\n // Handle entering edit mode\n const handleEditStart = useCallback(() => {\n // In controlled mode, don't set editContent here - let the useEffect handle it\n // when isEditing transitions to true. This prevents race conditions.\n if (isEditingProp === undefined) {\n // Uncontrolled mode: set content immediately since we manage the state\n const content = initialEditContent ?? getTextContent();\n setEditContent(content);\n setInternalEditing(true);\n }\n // In controlled mode, the useEffect will handle setting editContent\n // when isEditing transitions from false to true\n onEditStart?.();\n }, [initialEditContent, getTextContent, isEditingProp, onEditStart]);\n\n // Handle cancelling edit mode\n const handleEditCancel = useCallback(() => {\n if (isEditingProp === undefined) {\n setInternalEditing(false);\n }\n setEditContent('');\n onEditCancel?.();\n }, [isEditingProp, onEditCancel]);\n\n // Handle saving edit\n const handleEditSave = useCallback(async () => {\n // Don't save if content is empty, saving in progress, or content hasn't changed\n if (!editContent?.trim() || isSaving) return;\n if (editContent.trim() === initialEditContent?.trim()) return;\n\n try {\n await onEditSave?.(editContent);\n if (isEditingProp === undefined) {\n setInternalEditing(false);\n }\n setEditContent('');\n } catch (error) {\n console.error('Failed to save edit:', error);\n }\n }, [editContent, isSaving, onEditSave, isEditingProp, initialEditContent]);\n\n // Handle keyboard shortcuts in edit mode\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Escape') {\n handleEditCancel();\n } else if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n handleEditSave();\n }\n },\n [handleEditCancel, handleEditSave],\n );\n\n // Track previous editing state to detect transitions\n const prevIsEditingRef = useRef(false);\n // Keep track of last known initialEditContent for controlled mode\n const lastInitialContentRef = useRef(initialEditContent);\n\n // Update ref whenever initialEditContent changes (before edit mode transition)\n useEffect(() => {\n lastInitialContentRef.current = initialEditContent;\n }, [initialEditContent]);\n\n // Initialize edit content when entering edit mode (controlled mode)\n // In controlled mode, use initialEditContent prop since contentRef won't be available\n useEffect(() => {\n const wasEditing = prevIsEditingRef.current;\n prevIsEditingRef.current = isEditing;\n\n // Only initialize when transitioning from not editing -> editing\n if (isEditing && !wasEditing) {\n // In controlled mode, ALWAYS prefer initialEditContent since contentRef\n // won't be available when isEditing is true (edit UI replaces content)\n // Use the ref to ensure we get the latest value even in race conditions\n const content = initialEditContent || lastInitialContentRef.current || getTextContent() || '';\n setEditContent(content);\n } else if (!isEditing && wasEditing) {\n // Clear content when exiting edit mode\n setEditContent('');\n }\n }, [isEditing, initialEditContent, getTextContent]);\n\n // Focus textarea when entering edit mode\n useEffect(() => {\n if (isEditing && textareaRef.current) {\n textareaRef.current.focus();\n const length = textareaRef.current.value.length;\n textareaRef.current.setSelectionRange(length, length);\n }\n }, [isEditing]);\n\n const handleCopyInternal = useCallback(async () => {\n if (!contentRef.current) return;\n\n const textToCopy = contentRef.current.innerText;\n try {\n if (navigator.clipboard && navigator.clipboard.writeText) {\n await navigator.clipboard.writeText(textToCopy);\n setIsCopied(true);\n\n // Trigger onCopySuccess callback if provided\n onCopySuccess?.();\n\n setTimeout(() => {\n setIsCopied(false);\n }, 2000);\n } else {\n // Fallback for environments where navigator.clipboard is not available\n console.warn('Clipboard API not available');\n }\n } catch (err) {\n console.error('Failed to copy:', err);\n }\n }, [onCopySuccess]);\n\n // Memoized handler for edit content change\n const handleEditContentChange = useCallback(\n (e: ChangeEvent<HTMLTextAreaElement>) => {\n setEditContent(e.target.value);\n },\n [],\n );\n\n // Memoize derived values to prevent unnecessary recalculations\n const hasActions = useMemo(\n () => actions.length > 0 || enableCopy || (enableEdit && variant === 'user'),\n [actions.length, enableCopy, enableEdit, variant],\n );\n\n const showActions = useMemo(\n () => !isSticky && !isEditing && (variant === 'user' || variant === 'assistant') && hasActions,\n [isSticky, isEditing, variant, hasActions],\n );\n\n const showBranchNavigator = useMemo(\n () => !isEditing && branchInfo && branchInfo.totalBranches > 1 && variant === 'user',\n [isEditing, branchInfo, variant],\n );\n\n // Loader variant - uses animated SignatureA drawing in loop\n if (variant === 'loader' || isLoading) {\n return (\n <div\n ref={ref}\n className={cn(\n rootStyles({ variant: 'loader', alignment: 'left', isEditing: false }),\n className,\n )}\n {...props}\n >\n <div className={cn(bubbleStyles({ variant: 'loader', isSticky }))}>\n <AnimatedLoader />\n </div>\n </div>\n );\n }\n\n // Edit mode UI for user messages\n if (isEditing && variant === 'user') {\n return (\n <div\n ref={ref}\n className={cn(\n rootStyles({ variant, alignment: 'right', isEditing: true }),\n 'group',\n className,\n )}\n {...props}\n >\n <div className={cn(editContainerStyles())}>\n <textarea\n ref={textareaRef}\n value={editContent}\n onChange={handleEditContentChange}\n onKeyDown={handleKeyDown}\n className={cn(editTextareaStyles())}\n placeholder=\"Edit your message...\"\n disabled={isSaving}\n aria-label=\"Edit message\"\n />\n </div>\n {/* Edit mode actions - hint on left, icons on right */}\n <div className={cn(actionsStyles({ variant }), 'opacity-100 justify-between')}>\n <span className={cn(editHintStyles())}>{KEYBOARD_HINT}</span>\n <div className=\"flex\">\n <ActionButton\n onClick={handleEditSave}\n icon={Check}\n label=\"Save\"\n disabled={isSaving || !editContent?.trim() || editContent.trim() === initialEditContent?.trim()}\n />\n <ActionButton\n onClick={handleEditCancel}\n icon={X}\n label=\"Cancel\"\n disabled={isSaving}\n />\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n rootStyles({ variant, alignment: resolvedAlignment, isEditing: false }),\n 'group',\n className,\n )}\n {...props}\n >\n <div className={cn(innerContainerStyles())}>\n {!hideAvatar && variant === 'assistant' && (\n <div className={cn(avatarContainerStyles())}>\n <div className={cn(avatarInnerStyles())}>\n <LogoA size={20} colorVariant=\"lightTeal\" />\n </div>\n </div>\n )}\n\n <div className={cn(messageContainerStyles())}>\n <div className={cn(bubbleStyles({ variant, isSticky }))}>\n <div className={cn(contentStyles({ variant }))} ref={contentRef}>\n {variant === 'system' ? (\n <div className={cn(systemContentWrapperStyles())}>\n {/* Shimmer overlay that passes over the content */}\n <div className={cn(shimmerOverlayStyles())} />\n {/* Activity icon with rhythm animation */}\n <div className={cn(activityIconAnimatedStyles())}>\n <Activity size={16} />\n {/* Subtle glowing backdrop for active feel */}\n <div className={cn(activityIconGlowStyles())} />\n </div>\n {/* Text content */}\n <span className={cn(textStyles({ variant }))}>\n {children}\n </span>\n </div>\n ) : (\n <>\n {variant === 'assistant' && heading && (\n <h4 className={cn(headerStyles())}>{heading}</h4>\n )}\n <div className={cn(textStyles({ variant }))}>{children}</div>\n </>\n )}\n </div>\n </div>\n\n {/* Timestamp - Only show if explicitly enabled */}\n {showTimestamp && timestamp && (\n <div className={cn(timestampStyles())}>\n {formatTimestamp(timestamp)}\n </div>\n )}\n\n {/* Actions row - actions on left, branch navigator on right */}\n {(showActions || showBranchNavigator) && (\n <div className={cn(actionsStyles({ variant }), 'justify-between')}>\n {/* Left side: actions (visible on hover) */}\n <div className={cn(actionsIconsStyles())}>\n {showActions && (\n <>\n {/* Built-in copy action */}\n {enableCopy && copyIcon && (\n <ActionButton\n onClick={handleCopyInternal}\n icon={isCopied ? Check : copyIcon}\n label={isCopied ? 'Copied' : 'Copy'}\n isActive={isCopied}\n />\n )}\n\n {/* Built-in edit action for user messages */}\n {enableEdit && variant === 'user' && (\n <ActionButton\n onClick={handleEditStart}\n icon={Edit2}\n label=\"Edit\"\n />\n )}\n\n {/* Custom actions */}\n {actions.map((action, index) => (\n <ActionButton\n key={`${action.label}-${index}`}\n onClick={action.onClick}\n icon={action.icon}\n label={action.label}\n isActive={action.isActive}\n />\n ))}\n </>\n )}\n </div>\n\n {/* Right side: branch navigator (always visible) */}\n {showBranchNavigator && branchInfo && (\n <BranchNavigator\n branchInfo={branchInfo}\n onPrevious={onPreviousBranch}\n onNext={onNextBranch}\n isLoading={isBranchLoading}\n />\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n },\n);\n\nMessageBubble.displayName = 'MessageBubble';\n","import { cva } from 'class-variance-authority';\n\nexport const progressBarTrackStyles = cva(\n 'w-full overflow-hidden rounded-full bg-[var(--color-gray-200)]',\n {\n variants: {\n size: {\n small: 'h-1',\n medium: 'h-2',\n large: 'h-3',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n }\n);\n\nexport const progressBarIndicatorStyles = cva(\n 'h-full w-full flex-1 transition-all duration-300 ease-in-out rounded-full',\n {\n variants: {\n variant: {\n default: 'bg-[var(--color-blue-800)]',\n success: 'bg-[var(--color-green-1000)]',\n error: 'bg-[var(--color-red-1000)]',\n warning: 'bg-[var(--color-amber-1000)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport const progressBarLabelStyles = cva(\n 'flex justify-between mb-2 text-[var(--color-gray-800)]',\n {\n variants: {\n size: {\n small: 'text-xs',\n medium: 'text-sm',\n large: 'text-base',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n }\n);\n\n","// React\nimport { forwardRef, HTMLAttributes } from 'react';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport {\n progressBarTrackStyles,\n progressBarIndicatorStyles,\n progressBarLabelStyles,\n} from './ProgressBar.styles';\n\nexport interface ProgressBarProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The current value of the progress bar.\n */\n value?: number;\n /**\n * The maximum value of the progress bar.\n * @default 100\n */\n max?: number;\n /**\n * The visual variant of the progress bar.\n * @default 'default'\n */\n variant?: 'default' | 'success' | 'error' | 'warning';\n /**\n * The size of the progress bar.\n * @default 'medium'\n */\n size?: 'small' | 'medium' | 'large';\n /**\n * Whether to show the value label.\n * @default false\n */\n showValueLabel?: boolean;\n /**\n * Custom label text to display above the progress bar.\n */\n label?: string;\n /**\n * Custom formatter for the value label.\n */\n valueFormatter?: (value: number, max: number) => string;\n}\n\nexport const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(\n (\n {\n className,\n value = 0,\n max = 100,\n variant = 'default',\n size = 'medium',\n showValueLabel = false,\n label,\n valueFormatter,\n ...props\n },\n ref\n ) => {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n const formattedValue = valueFormatter\n ? valueFormatter(value, max)\n : `${Math.round(percentage)}%`;\n\n return (\n <div\n ref={ref}\n className={cn('w-full', className)}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={value}\n {...props}\n >\n {(label || showValueLabel) && (\n <div className={progressBarLabelStyles({ size })}>\n {label && <span className=\"font-medium\">{label}</span>}\n {showValueLabel && <span className=\"ml-auto\">{formattedValue}</span>}\n </div>\n )}\n <div className={progressBarTrackStyles({ size })}>\n <div\n className={progressBarIndicatorStyles({ variant })}\n style={{ transform: `translateX(-${100 - percentage}%)` }}\n />\n </div>\n </div>\n );\n }\n);\n\nProgressBar.displayName = 'ProgressBar';\n\n","import { cva } from 'class-variance-authority';\n\nexport const rangeInputStyles = cva(\n [\n 'w-full h-2 rounded-lg appearance-none cursor-pointer',\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n\n // Webkit Thumb\n '[&::-webkit-slider-thumb]:appearance-none',\n '[&::-webkit-slider-thumb]:w-5 [&::-webkit-slider-thumb]:h-5',\n '[&::-webkit-slider-thumb]:bg-[var(--color-white)]',\n '[&::-webkit-slider-thumb]:border-2',\n '[&::-webkit-slider-thumb]:rounded-full',\n '[&::-webkit-slider-thumb]:shadow-sm',\n '[&::-webkit-slider-thumb]:transition-all [&::-webkit-slider-thumb]:duration-200',\n '[&::-webkit-slider-thumb]:hover:scale-110',\n\n // Firefox Thumb\n '[&::-moz-range-thumb]:w-5 [&::-moz-range-thumb]:h-5',\n '[&::-moz-range-thumb]:bg-[var(--color-white)]',\n '[&::-moz-range-thumb]:border-2',\n '[&::-moz-range-thumb]:rounded-full',\n '[&::-moz-range-thumb]:shadow-sm',\n '[&::-moz-range-thumb]:transition-all [&::-moz-range-thumb]:duration-200',\n '[&::-moz-range-thumb]:hover:scale-110',\n ].join(' '),\n {\n variants: {\n variant: {\n cyan: [\n 'focus-visible:ring-[var(--color-blue-200)]',\n '[&::-webkit-slider-thumb]:border-[var(--color-gray-200)] [&::-webkit-slider-thumb]:hover:border-[var(--color-blue-800)]',\n '[&::-moz-range-thumb]:border-[var(--color-gray-200)] [&::-moz-range-thumb]:hover:border-[var(--color-blue-800)]',\n ],\n orange: [\n 'focus-visible:ring-[var(--color-orange-200)]',\n '[&::-webkit-slider-thumb]:border-[var(--color-gray-200)] [&::-webkit-slider-thumb]:hover:border-[var(--color-orange-800)]',\n '[&::-moz-range-thumb]:border-[var(--color-gray-200)] [&::-moz-range-thumb]:hover:border-[var(--color-orange-800)]',\n ],\n },\n animated: {\n true: [\n '[&::-webkit-slider-thumb]:animate-pulse',\n '[&::-moz-range-thumb]:animate-pulse',\n ],\n false: [],\n },\n },\n defaultVariants: {\n variant: 'cyan',\n animated: false,\n },\n },\n);\n","// React\nimport { InputHTMLAttributes, forwardRef } from 'react';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport { rangeInputStyles } from './RangeInput.styles';\n\nexport interface RangeInputProps extends InputHTMLAttributes<HTMLInputElement> {\n variant?: 'cyan' | 'orange';\n animated?: boolean;\n}\n\nexport const RangeInput = forwardRef<HTMLInputElement, RangeInputProps>(\n ({ className, variant = 'cyan', animated = false, style, ...props }, ref) => {\n const { min = 0, max = 100, value, defaultValue } = props;\n const currentValue = Number(value ?? defaultValue ?? 0);\n const minVal = Number(min);\n const maxVal = Number(max);\n\n // Calculate percentage for the gradient fill\n const percentage = Math.min(\n Math.max(((currentValue - minVal) * 100) / (maxVal - minVal), 0),\n 100,\n );\n\n const trackColor =\n variant === 'orange'\n ? 'var(--color-orange-800)'\n : 'var(--color-blue-800)';\n\n // We use a linear gradient to simulate the progress bar\n // The first part is the \"filled\" part (accent color)\n // The second part is the \"empty\" part (gray-200)\n const backgroundStyle = `linear-gradient(to right, ${trackColor} 0%, ${trackColor} ${percentage}%, var(--color-gray-200) ${percentage}%, var(--color-gray-200) 100%)`;\n\n return (\n <input\n ref={ref}\n type=\"range\"\n className={cn(rangeInputStyles({ variant, animated }), className)}\n style={{\n background: backgroundStyle,\n ...style,\n }}\n {...props}\n />\n );\n },\n);\n\nRangeInput.displayName = 'RangeInput';\n","import { cva } from 'class-variance-authority';\n\nexport const sidebarItemStyles = cva(\n 'box-border flex cursor-pointer transition-all duration-200 focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-2',\n {\n variants: {\n type: {\n collapsed: 'flex-col items-center justify-center w-[64px] py-[6px] px-[4px] gap-[4px] rounded-[4px]',\n expanded: 'flex-row items-center w-full h-[32px] px-[4px] py-[6px] gap-[8px] rounded-[4px]',\n },\n variant: {\n default: 'text-[var(--color-gray-800)] hover:bg-[var(--color-gray-100)]',\n active: 'text-[var(--color-blue-800)] bg-[var(--color-blue-200)]',\n brand: 'h-[44px] rounded-[24px] bg-transparent hover:bg-transparent', // Special case for brand logo\n },\n },\n compoundVariants: [\n {\n type: 'collapsed',\n variant: 'active',\n className: 'bg-[var(--color-blue-200)]',\n },\n ],\n defaultVariants: {\n type: 'expanded',\n variant: 'default',\n },\n }\n);\n\nexport const sidebarItemIconStyles = cva(\n 'relative shrink-0 flex items-center justify-center',\n {\n variants: {\n type: {\n collapsed: 'size-[16px]',\n expanded: 'size-[16px]',\n },\n variant: {\n default: 'text-[var(--color-gray-800)]',\n active: 'text-[var(--color-blue-800)]',\n brand: 'text-[var(--color-blue-1000)] size-[24px]',\n },\n },\n defaultVariants: {\n type: 'expanded',\n variant: 'default',\n },\n }\n);\n\nexport const sidebarItemLabelStyles = cva(\n 'font-normal whitespace-nowrap shrink-0',\n {\n variants: {\n type: {\n collapsed: 'text-[8px] leading-[10px] text-center min-w-full',\n expanded: 'text-[14px] leading-[20px]',\n },\n variant: {\n default: 'text-[var(--color-gray-800)]',\n active: 'text-[var(--color-blue-800)]',\n brand: 'hidden', // Brand variant usually just shows logo in collapsed, or text in expanded? Figma shows only Logo A in collapsed brand.\n },\n },\n defaultVariants: {\n type: 'expanded',\n variant: 'default',\n },\n }\n);\n","// React\nimport { HTMLAttributes, forwardRef, ReactNode } from 'react';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport { sidebarItemStyles, sidebarItemIconStyles, sidebarItemLabelStyles } from './SidebarItem.styles';\n\nexport interface SidebarItemProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** The icon to display */\n icon?: ReactNode;\n /** The label text */\n label: string;\n /** Whether the item is in collapsed state */\n isCollapsed?: boolean;\n /** Whether the item is active/selected */\n isActive?: boolean;\n /** Variant of the item */\n variant?: 'default' | 'brand';\n /** Click handler */\n onClick?: () => void;\n}\n\nexport const SidebarItem = forwardRef<HTMLDivElement, SidebarItemProps>(\n (\n {\n className,\n icon,\n label,\n isCollapsed = false,\n isActive = false,\n variant = 'default',\n onClick,\n children,\n ...props\n },\n ref\n ) => {\n const type = isCollapsed ? 'collapsed' : 'expanded';\n // Map component props to style variant\n const styleVariant = isActive ? 'active' : variant;\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (onClick && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n onClick();\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(sidebarItemStyles({ type, variant: styleVariant }), className)}\n role=\"button\"\n tabIndex={0}\n aria-label={label}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {icon && (\n <div className={cn(sidebarItemIconStyles({ type, variant: styleVariant }))}>\n {icon}\n </div>\n )}\n\n {(variant !== 'brand' || !isCollapsed) && (\n <span className={cn(sidebarItemLabelStyles({ type, variant: styleVariant }))}>\n {label}\n </span>\n )}\n </div>\n );\n }\n);\n\nSidebarItem.displayName = 'SidebarItem';\n","import { cva } from 'class-variance-authority';\n\nexport const tagStyles = cva(\n 'inline-flex items-center justify-center rounded-[4px] whitespace-nowrap transition-colors duration-200 box-border',\n {\n variants: {\n variant: {\n default:\n 'border border-[var(--color-gray-200)] bg-[var(--color-gray-100)] px-2 py-[2px] text-[var(--color-gray-800)] gap-1',\n collaborator:\n 'border border-[var(--color-gray-200)] bg-[var(--color-gray-100)] px-2 py-[2px] text-[var(--color-gray-800)] gap-1',\n indicator:\n 'bg-[var(--color-gray-100)] px-[2px] h-[12px] gap-[4px] text-[var(--color-gray-600)]',\n error:\n 'bg-[var(--color-red-200)] px-[2px] h-[12px] gap-[4px] text-[var(--color-red-1000)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport const tagAvatarStyles = cva(\n 'w-4 h-4 rounded-full object-cover shrink-0'\n);\n\nexport const tagIconStyles = cva(\n 'flex items-center justify-center shrink-0'\n);\n","// React\nimport { HTMLAttributes, ReactNode, forwardRef } from 'react';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport { tagStyles, tagAvatarStyles, tagIconStyles } from './Tag.styles';\n\n// Components\nimport { Typography } from '@/components/atoms/Typography/Typography';\n\nexport interface TagProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'default' | 'indicator' | 'collaborator' | 'error';\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n avatarSrc?: string;\n}\n\nexport const Tag = forwardRef<HTMLDivElement, TagProps>(\n (\n {\n className,\n variant = 'default',\n startIcon,\n endIcon,\n avatarSrc,\n children,\n ...props\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={cn(tagStyles({ variant }), className)}\n {...props}\n >\n {avatarSrc && (\n <img src={avatarSrc} alt=\"avatar\" className={tagAvatarStyles()} />\n )}\n {startIcon && <span className={tagIconStyles()}>{startIcon}</span>}\n <Typography variant=\"tag\" color=\"inherit\" className=\"whitespace-nowrap\">\n {children}\n </Typography>\n {endIcon && <span className={tagIconStyles()}>{endIcon}</span>}\n </div>\n );\n },\n);\n\nTag.displayName = 'Tag';\n","import { cva } from 'class-variance-authority';\n\nexport const tabsListStyles = cva(\n 'inline-flex h-8 items-center justify-start rounded-none bg-transparent p-0 text-muted-foreground w-full relative'\n);\n\nexport const tabsTriggerStyles = cva(\n 'inline-flex items-center justify-center whitespace-nowrap px-2 py-2 text-[10px] leading-4 font-normal transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-[var(--color-blue-200)] data-[state=active]:text-[var(--color-blue-1000)] data-[state=active]:shadow-none border-b border-[var(--color-gray-200)] data-[state=active]:border-[var(--color-blue-200)] text-[var(--color-gray-600)] gap-2 hover:bg-[var(--color-gray-50)] hover:text-[var(--color-gray-800)] cursor-pointer group relative',\n {\n variants: {\n variant: {\n default: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport const tabsContentStyles = cva(\n 'mt-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-2'\n);\n\nexport const tabsIndicatorStyles = cva(\n 'absolute bottom-0 left-0 right-0 h-[2px] bg-[var(--color-blue-1000)] bg-opacity-20'\n);\n\nexport const tabsBadgeContainerStyles = cva(\n 'flex items-center gap-[2px]'\n);\n\nexport const tabsTagStyles = cva(\n 'group-data-[state=active]:text-[var(--color-blue-1000)]'\n);\n","// react / next\nimport * as React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport { motion } from 'framer-motion';\n\n// components\nimport { Tag } from '@/components/molecules/Tag/Tag';\nimport { Settings, TriangleAlert } from '@/components/atoms/icons';\n\n// utils\nimport { cn } from '@/utils/cn';\n\n// styles\nimport {\n tabsListStyles,\n tabsTriggerStyles,\n tabsContentStyles,\n tabsIndicatorStyles,\n tabsBadgeContainerStyles,\n tabsTagStyles\n} from './Tabs.styles';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(tabsListStyles(), className)}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\ninterface TabsTriggerProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> {\n errorCount?: number;\n configurationCount?: number;\n children?: React.ReactNode;\n value: string;\n}\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n TabsTriggerProps\n>(({ className, children, errorCount, configurationCount, ...props }, ref) => {\n const [isActive, setIsActive] = React.useState(false);\n const internalRef = React.useRef<HTMLButtonElement | null>(null);\n\n React.useEffect(() => {\n const element = internalRef.current;\n if (!element) return;\n\n const observer = new MutationObserver(() => {\n setIsActive(element.getAttribute('data-state') === 'active');\n });\n\n observer.observe(element, {\n attributes: true,\n attributeFilter: ['data-state'],\n });\n\n setIsActive(element.getAttribute('data-state') === 'active');\n\n return () => observer.disconnect();\n }, []);\n\n const setRefs = React.useCallback(\n (node: HTMLButtonElement | null) => {\n internalRef.current = node;\n\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLButtonElement | null>).current = node;\n }\n },\n [ref]\n );\n\n return (\n <TabsPrimitive.Trigger\n ref={setRefs}\n className={cn(tabsTriggerStyles(), className)}\n {...props}\n >\n {children}\n {(configurationCount !== undefined || errorCount !== undefined) && (\n <div className={tabsBadgeContainerStyles()}>\n {configurationCount !== undefined && (\n <Tag\n variant=\"indicator\"\n startIcon={<Settings size={10} className=\"text-[#15B1CD]\" />}\n className={tabsTagStyles()}\n >\n {configurationCount}\n </Tag>\n )}\n {errorCount !== undefined && (\n <Tag\n variant=\"indicator\"\n startIcon={<TriangleAlert size={10} className=\"text-[#FB6060]\" />}\n className={tabsTagStyles()}\n >\n {errorCount}\n </Tag>\n )}\n </div>\n )}\n <motion.div\n className={tabsIndicatorStyles()}\n initial={false}\n animate={{\n scaleX: isActive ? 1 : 0,\n opacity: isActive ? 1 : 0,\n }}\n transition={{ duration: 0.3, ease: 'easeInOut' }}\n style={{ originX: 0 }}\n />\n </TabsPrimitive.Trigger>\n );\n});\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(tabsContentStyles(), className)}\n {...props}\n asChild\n >\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n transition={{ duration: 0.2, ease: 'easeOut' }}\n >\n {props.children}\n </motion.div>\n </TabsPrimitive.Content>\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import { cva } from 'class-variance-authority';\n\nexport const textAreaStyles = cva(\n 'w-full bg-[var(--color-white)] border border-solid rounded-[8px] font-normal transition-colors duration-200 box-border focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-1 disabled:cursor-not-allowed disabled:opacity-50 min-h-[80px]',\n {\n variants: {\n status: {\n default:\n 'border-[var(--color-gray-200)] text-[var(--color-gray-600)] placeholder:text-[var(--color-gray-600)] focus:border-[var(--color-blue-1000)] focus:text-[var(--color-blue-1000)]',\n error:\n 'border-[var(--color-red-1000)] text-[var(--color-red-1000)] placeholder:text-[var(--color-red-1000)] focus:border-[var(--color-red-1000)]',\n success:\n 'border-[var(--color-green-1000)] text-[var(--color-green-1000)] placeholder:text-[var(--color-green-1000)] focus:border-[var(--color-green-1000)]',\n },\n size: {\n medium: 'px-4 py-4 text-[1rem] leading-[1.5rem]', // 16px/24px\n small: 'px-3 py-2 text-[0.875rem] leading-[1.25rem]', // 14px/20px\n tiny: 'p-2 text-[0.75rem] leading-[1rem]', // 12px/16px\n },\n resize: {\n none: 'resize-none',\n vertical: 'resize-y',\n horizontal: 'resize-x',\n both: 'resize',\n },\n },\n defaultVariants: {\n status: 'default',\n size: 'medium',\n resize: 'vertical',\n },\n }\n);\n\nexport const textAreaContainerStyles = cva('relative w-full', {\n variants: {\n size: {\n medium: '',\n small: '',\n tiny: '',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n});\n","import { TextareaHTMLAttributes, forwardRef } from 'react';\nimport { cn } from '@/utils/cn';\nimport {\n textAreaStyles,\n textAreaContainerStyles,\n} from './TextArea.styles';\n\nexport interface TextAreaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {\n status?: 'default' | 'error' | 'success';\n size?: 'medium' | 'small' | 'tiny';\n resize?: 'none' | 'vertical' | 'horizontal' | 'both';\n}\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n className,\n status = 'default',\n size = 'medium',\n resize = 'vertical',\n disabled,\n ...props\n },\n ref\n ) => {\n return (\n <div className={textAreaContainerStyles({ size })}>\n <textarea\n ref={ref}\n className={cn(\n textAreaStyles({ status, size, resize }),\n className\n )}\n disabled={disabled}\n {...props}\n />\n </div>\n );\n }\n);\n\nTextArea.displayName = 'TextArea';\n","import { cva } from 'class-variance-authority';\n\nexport const timestampContainerStyles = cva(\n 'inline-flex items-center gap-1 font-sans whitespace-nowrap',\n {\n variants: {\n size: {\n small: 'text-[0.625rem] leading-[1rem]', // 10px / 16px\n medium: 'text-[0.75rem] leading-[1rem]', // 12px / 16px\n large: 'text-[0.875rem] leading-[1.25rem]', // 14px / 20px\n },\n variant: {\n default: 'text-[var(--color-gray-600)]',\n primary: 'text-[var(--color-gray-800)]',\n muted: 'text-[var(--color-gray-600)]',\n },\n },\n defaultVariants: {\n size: 'medium',\n variant: 'default',\n },\n },\n);\n\nexport const timestampIconStyles = cva(\n 'flex items-center justify-center shrink-0',\n {\n variants: {\n size: {\n small: '[&>svg]:w-[10px] [&>svg]:h-[10px]',\n medium: '[&>svg]:w-[12px] [&>svg]:h-[12px]',\n large: '[&>svg]:w-[14px] [&>svg]:h-[14px]',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n },\n);\n","// React\nimport { HTMLAttributes, forwardRef, useMemo } from 'react';\n\n// Components\nimport { ClockHistory } from '@/components/atoms/icons';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport {\n timestampContainerStyles,\n timestampIconStyles,\n} from './Timestamp.styles';\n\nexport type TimestampFormat =\n | 'relative'\n | 'short'\n | 'long'\n | 'time'\n | 'datetime';\n\nexport interface TimestampProps\n extends Omit<HTMLAttributes<HTMLTimeElement>, 'dateTime'> {\n /** The date to display - can be a Date object, timestamp number, or ISO string */\n date: Date | number | string;\n /** The format to display the timestamp */\n format?: TimestampFormat;\n /** Size variant */\n size?: 'small' | 'medium' | 'large';\n /** Color variant */\n variant?: 'default' | 'primary' | 'muted';\n /** Whether to show the clock icon */\n showIcon?: boolean;\n /** Custom locale for date formatting (default: 'en-US') */\n locale?: string;\n}\n\n/**\n * Formats a relative time string (e.g., \"2 hours ago\", \"in 3 days\")\n */\nconst formatRelativeTime = (date: Date, now: Date): string => {\n const diffMs = now.getTime() - date.getTime();\n const diffSeconds = Math.floor(diffMs / 1000);\n const diffMinutes = Math.floor(diffSeconds / 60);\n const diffHours = Math.floor(diffMinutes / 60);\n const diffDays = Math.floor(diffHours / 24);\n const diffWeeks = Math.floor(diffDays / 7);\n const diffMonths = Math.floor(diffDays / 30);\n const diffYears = Math.floor(diffDays / 365);\n\n const isFuture = diffMs < 0;\n const absSeconds = Math.abs(diffSeconds);\n const absMinutes = Math.abs(diffMinutes);\n const absHours = Math.abs(diffHours);\n const absDays = Math.abs(diffDays);\n const absWeeks = Math.abs(diffWeeks);\n const absMonths = Math.abs(diffMonths);\n const absYears = Math.abs(diffYears);\n\n const formatUnit = (value: number, unit: string): string => {\n const plural = value === 1 ? '' : 's';\n if (isFuture) {\n return `in ${value} ${unit}${plural}`;\n }\n return `${value} ${unit}${plural} ago`;\n };\n\n if (absSeconds < 60) {\n return 'just now';\n }\n if (absMinutes < 60) {\n return formatUnit(absMinutes, 'minute');\n }\n if (absHours < 24) {\n return formatUnit(absHours, 'hour');\n }\n if (absDays === 1) {\n return isFuture ? 'tomorrow' : 'yesterday';\n }\n if (absDays < 7) {\n return formatUnit(absDays, 'day');\n }\n if (absWeeks < 4) {\n return formatUnit(absWeeks, 'week');\n }\n if (absMonths < 12) {\n return formatUnit(absMonths, 'month');\n }\n return formatUnit(absYears, 'year');\n};\n\n/**\n * Formats a date based on the specified format\n */\nconst formatDate = (\n date: Date,\n format: TimestampFormat,\n locale: string,\n): string => {\n switch (format) {\n case 'relative':\n return formatRelativeTime(date, new Date());\n\n case 'short':\n return date.toLocaleDateString(locale, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n });\n\n case 'long':\n return date.toLocaleDateString(locale, {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n });\n\n case 'time':\n return date.toLocaleTimeString(locale, {\n hour: 'numeric',\n minute: '2-digit',\n hour12: true,\n });\n\n case 'datetime':\n return date.toLocaleDateString(locale, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n hour12: true,\n });\n\n default:\n return date.toLocaleDateString(locale);\n }\n};\n\n/**\n * Parses the input date to a Date object\n */\nconst parseDate = (date: Date | number | string): Date => {\n if (date instanceof Date) {\n return date;\n }\n if (typeof date === 'number') {\n return new Date(date);\n }\n return new Date(date);\n};\n\nexport const Timestamp = forwardRef<HTMLTimeElement, TimestampProps>(\n (\n {\n className,\n date,\n format = 'relative',\n size = 'medium',\n variant = 'default',\n showIcon = false,\n locale = 'en-US',\n ...props\n },\n ref,\n ) => {\n const parsedDate = useMemo(() => parseDate(date), [date]);\n const formattedDate = useMemo(\n () => formatDate(parsedDate, format, locale),\n [parsedDate, format, locale],\n );\n const isoString = useMemo(() => parsedDate.toISOString(), [parsedDate]);\n\n // Icon color based on variant\n const iconColor =\n variant === 'primary' ? 'var(--color-gray-800)' : 'var(--color-gray-600)';\n\n // Icon size based on size prop\n const iconSize = size === 'small' ? 10 : size === 'large' ? 14 : 12;\n\n return (\n <time\n ref={ref}\n dateTime={isoString}\n className={cn(timestampContainerStyles({ size, variant }), className)}\n {...props}\n >\n {showIcon && (\n <span className={timestampIconStyles({ size })}>\n <ClockHistory size={iconSize} color={iconColor} />\n </span>\n )}\n {formattedDate}\n </time>\n );\n },\n);\n\nTimestamp.displayName = 'Timestamp';\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const toastStyles = cva(\n 'flex min-w-[420px] w-fit max-w-[850px] pl-4 pr-3 py-3 rounded-[12px] shadow-xl border pointer-events-auto gap-2 relative items-center bg-white',\n {\n variants: {\n variant: {\n info: 'bg-[linear-gradient(90deg,rgba(21,177,205,0.08)_0%,rgba(21,177,205,0.08)_100%),linear-gradient(90deg,rgb(255,255,255)_0%,rgb(255,255,255)_100%)] border-[var(--color-blue-800)]',\n success: 'bg-[linear-gradient(90deg,rgba(113,212,129,0.08)_0%,rgba(113,212,129,0.08)_100%),linear-gradient(90deg,rgb(255,255,255)_0%,rgb(255,255,255)_100%)] border-[var(--color-green-1000)]',\n warning:\n 'bg-[linear-gradient(90deg,rgba(242,229,40,0.08)_0%,rgba(242,229,40,0.08)_100%),linear-gradient(90deg,rgb(255,255,255)_0%,rgb(255,255,255)_100%)] border-[var(--color-orange-800)]',\n error: 'bg-[linear-gradient(90deg,rgba(251,96,96,0.08)_0%,rgba(251,96,96,0.08)_100%),linear-gradient(90deg,rgb(255,255,255)_0%,rgb(255,255,255)_100%)] border-[var(--color-red-1000)]',\n prompt: 'bg-[var(--color-gray-50)] border-[var(--color-blue-1000)]',\n },\n },\n defaultVariants: {\n variant: 'info',\n },\n },\n);\n\nexport type ToastVariant = NonNullable<\n VariantProps<typeof toastStyles>['variant']\n>;\n\nexport const iconStyles = cva('flex-shrink-0', {\n variants: {\n variant: {\n info: 'text-[var(--color-blue-800)]',\n success: 'text-[var(--color-green-1000)]',\n warning: 'text-[var(--color-orange-800)]',\n error: 'text-[var(--color-red-1000)]',\n prompt: 'text-[var(--color-blue-1000)]',\n },\n },\n defaultVariants: {\n variant: 'info',\n },\n});\n\nexport const contentStyles = cva(\n 'flex items-center gap-1 flex-1',\n);\n\nexport const titleStyles = cva(\n 'font-bold text-[var(--color-blue-1000)] text-[0.75rem] leading-normal',\n);\n\nexport const descriptionStyles = cva(\n 'font-normal text-[var(--color-blue-1000)] text-[0.75rem] leading-normal',\n);\n\nexport const actionsWrapperStyles = cva(\n 'flex items-center gap-2 shrink-0',\n);\n\nexport const separatorStyles = cva(\n 'w-[1px] self-stretch flex-shrink-0 bg-current',\n {\n variants: {\n variant: {\n info: 'text-[var(--color-blue-800)]',\n success: 'text-[var(--color-green-1000)]',\n warning: 'text-[var(--color-orange-800)]',\n error: 'text-[var(--color-red-1000)]',\n prompt: 'text-[var(--color-blue-1000)]',\n },\n },\n defaultVariants: {\n variant: 'info',\n },\n },\n);\n\nexport const closeButtonStyles = cva(\n 'p-0 bg-transparent border-none text-[var(--color-blue-1000)] hover:opacity-70 transition-opacity flex items-center justify-center w-4 h-4 shrink-0 cursor-pointer',\n);\n","// react\nimport { ReactNode } from 'react';\nimport { toast, Toaster as SonnerToaster, ToasterProps } from 'sonner';\n\n// components\nimport { Button } from '../Button/Button';\nimport {\n Info,\n TriangleAlert,\n X,\n Check,\n CheckCircle,\n AlertCircle,\n Sparks,\n Trash,\n} from '@/components/atoms/icons';\n\n// styles\nimport {\n toastStyles,\n iconStyles,\n contentStyles,\n titleStyles,\n descriptionStyles,\n closeButtonStyles,\n actionsWrapperStyles,\n separatorStyles,\n ToastVariant,\n} from './Toast.styles';\n\n// misc\nimport { cn } from '@/utils/cn';\n\nexport type { ToastVariant };\n\nexport interface ToastAction {\n label: string;\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => void;\n icon?: ReactNode;\n}\n\nexport interface ToastProps {\n id?: string | number;\n variant?: ToastVariant;\n title: string;\n description?: ReactNode;\n icon?: ReactNode;\n action?: ToastAction;\n secondaryAction?: ToastAction;\n onClose?: () => void;\n}\n\nconst icons = {\n info: Info,\n success: CheckCircle,\n warning: TriangleAlert,\n error: AlertCircle,\n prompt: Sparks,\n};\n\nconst iconColors = {\n info: 'var(--color-blue-800)',\n success: 'var(--color-green-1000)',\n warning: 'var(--color-orange-800)',\n error: 'var(--color-red-1000)',\n prompt: 'var(--color-blue-800)',\n};\n\nexport const Toast = ({\n id,\n variant = 'info',\n title,\n description,\n icon,\n action,\n secondaryAction,\n onClose,\n}: ToastProps) => {\n const IconComponent = icons[variant];\n const iconColor = iconColors[variant];\n\n const handleClose = () => {\n if (onClose) {\n onClose();\n }\n if (id) {\n toast.dismiss(id);\n }\n };\n\n const handleActionClick = (\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => void,\n ) => {\n return (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick(e);\n if (id) {\n toast.dismiss(id);\n }\n };\n };\n\n const renderIcon = () => {\n if (icon) return icon;\n\n // Render custom icons with color prop\n if (variant === 'success') {\n return <CheckCircle size={16} color={iconColor} />;\n }\n if (variant === 'error') {\n return <AlertCircle size={16} color={iconColor} />;\n }\n if (variant === 'prompt') {\n return <Sparks size={16} color={iconColor} />;\n }\n\n // Lucide icons inherit color from CSS\n return <IconComponent size={16} />;\n };\n\n return (\n <div className={cn(toastStyles({ variant }))} role=\"alert\">\n <div className={iconStyles({ variant })}>{renderIcon()}</div>\n\n <div className={contentStyles()}>\n <span className={titleStyles()}>{title}</span>\n {description && (\n <span className={descriptionStyles()}>{description}</span>\n )}\n </div>\n\n <div className={separatorStyles({ variant })} />\n\n <div className={actionsWrapperStyles()}>\n {secondaryAction && (\n <Button\n onClick={handleActionClick(secondaryAction.onClick)}\n variant=\"tertiary\"\n size=\"small\"\n startIcon={\n secondaryAction.icon || <Trash size={13} color=\"currentColor\" />\n }\n className=\"w-auto\"\n >\n {secondaryAction.label}\n </Button>\n )}\n\n {action && (\n <Button\n onClick={handleActionClick(action.onClick)}\n variant=\"primary\"\n size=\"small\"\n startIcon={action.icon || <Check size={13} color=\"currentColor\" />}\n className=\"w-auto\"\n >\n {action.label}\n </Button>\n )}\n\n <button\n onClick={handleClose}\n className={closeButtonStyles()}\n aria-label=\"Close\"\n >\n <X size={16} />\n </button>\n </div>\n </div>\n );\n};\n\nexport interface ToastContainerProps extends Omit<ToasterProps, 'position'> {\n /** Position of the toast container */\n position?: ToasterProps['position'];\n /** Offset from the edge of the screen in pixels */\n offset?: number | string;\n /** Gap between toasts in pixels */\n gap?: number;\n /** Custom width for toasts */\n width?: number | string;\n}\n\n// Custom Toast Container configured for our design system\nexport const ToastContainer = ({\n position = 'bottom-right',\n offset = 24,\n gap = 8,\n width,\n ...props\n}: ToastContainerProps) => {\n return (\n <SonnerToaster\n position={position}\n offset={offset}\n gap={gap}\n toastOptions={{\n unstyled: true,\n classNames: {\n toast: cn('bg-transparent p-0', width ? '' : 'w-auto'),\n },\n style: width ? { width: typeof width === 'number' ? `${width}px` : width } : undefined,\n }}\n {...props}\n />\n );\n};\n\n// Helper to show toasts easier\nexport const showToast = {\n success: (title: string, description?: string, action?: ToastAction) =>\n toast.custom((id) => (\n <Toast\n id={id}\n variant=\"success\"\n title={title}\n description={description}\n action={action}\n />\n )),\n error: (title: string, description?: string, action?: ToastAction) =>\n toast.custom((id) => (\n <Toast\n id={id}\n variant=\"error\"\n title={title}\n description={description}\n action={action}\n />\n )),\n warning: (title: string, description?: string, action?: ToastAction) =>\n toast.custom((id) => (\n <Toast\n id={id}\n variant=\"warning\"\n title={title}\n description={description}\n action={action}\n />\n )),\n info: (title: string, description?: string, action?: ToastAction) =>\n toast.custom((id) => (\n <Toast\n id={id}\n variant=\"info\"\n title={title}\n description={description}\n action={action}\n />\n )),\n prompt: (\n title: string,\n description?: string,\n action?: ToastAction,\n secondaryAction?: ToastAction,\n ) =>\n toast.custom((id) => (\n <Toast\n id={id}\n variant=\"prompt\"\n title={title}\n description={description}\n action={action}\n secondaryAction={secondaryAction}\n />\n )),\n custom: (props: Omit<ToastProps, 'id'>) =>\n toast.custom((id) => <Toast id={id} {...props} />),\n};\n","import { cva } from 'class-variance-authority';\n\nexport const toggleRowStyles = cva('flex items-center gap-3');\n\nexport const toggleLabelStyles = cva(\n 'text-[var(--color-gray-1000)] font-medium select-none',\n);\n\nexport const toggleButtonStyles = cva(\n 'relative inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n {\n variants: {\n enabled: {\n true: 'bg-[var(--color-blue-800)]',\n false: 'bg-[var(--color-gray-200)]',\n },\n },\n defaultVariants: {\n enabled: false,\n },\n },\n);\n\nexport const toggleKnobStyles = cva(\n 'pointer-events-none inline-block h-[20px] w-[20px] transform rounded-full bg-[var(--color-white)] shadow-lg ring-0 transition duration-200 ease-in-out',\n {\n variants: {\n enabled: {\n true: 'translate-x-[20px]',\n false: 'translate-x-0',\n },\n },\n defaultVariants: {\n enabled: false,\n },\n },\n);\n","// React\nimport { forwardRef, ButtonHTMLAttributes } from 'react';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport {\n toggleRowStyles,\n toggleLabelStyles,\n toggleButtonStyles,\n toggleKnobStyles,\n} from './Toggle.styles';\n\n// Components\nimport { Typography } from '@/components/atoms/Typography/Typography';\n\nexport interface ToggleProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\n enabled: boolean;\n onChange: (enabled: boolean) => void;\n label?: string;\n}\n\nexport const Toggle = forwardRef<HTMLButtonElement, ToggleProps>(\n ({ enabled, onChange, label, className, disabled, ...props }, ref) => {\n return (\n <div className={cn(toggleRowStyles(), className)}>\n {label && (\n <Typography variant=\"small\" className={toggleLabelStyles()}>\n {label}\n </Typography>\n )}\n <button\n ref={ref}\n type=\"button\"\n role=\"switch\"\n aria-checked={enabled}\n disabled={disabled}\n onClick={() => !disabled && onChange(!enabled)}\n className={toggleButtonStyles({ enabled })}\n {...props}\n >\n <span className={toggleKnobStyles({ enabled })} />\n </button>\n </div>\n );\n },\n);\n\nToggle.displayName = 'Toggle';\n","import { cva } from 'class-variance-authority';\n\nexport const statusMessageContainerStyles = cva(\n 'flex items-center justify-between w-full gap-2 min-h-[20px]'\n);\n\nexport const statusMessageTextStyles = cva(\n 'text-xs font-normal font-sans leading-4 whitespace-nowrap',\n {\n variants: {\n status: {\n success: 'text-[var(--color-gray-800)]',\n warning: 'text-[var(--color-gray-800)]',\n error: 'text-[var(--color-gray-800)]',\n info: 'text-[var(--color-gray-800)]',\n neutral: 'text-[var(--color-gray-800)]',\n loading: 'text-[var(--color-gray-800)]',\n },\n },\n defaultVariants: {\n status: 'neutral',\n },\n }\n);\n\nexport const statusMessageIconStyles = cva(\n 'w-4 h-4',\n {\n variants: {\n status: {\n success: 'text-[var(--color-green-1000)]',\n warning: 'text-[var(--color-orange-800)]',\n error: 'text-[var(--color-red-1000)]',\n info: 'text-[var(--color-blue-800)]',\n neutral: 'text-[var(--color-gray-600)]',\n loading: 'text-[var(--color-blue-800)]', // Matches Running/Info color\n },\n },\n defaultVariants: {\n status: 'neutral',\n },\n }\n);\n\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { cn } from '@/utils/cn';\nimport { StatusIndicator } from '@/components/atoms/StatusIndicator/StatusIndicator';\nimport { CheckCircle, AlertCircle, TriangleAlert, Loader, Info } from '@/components/atoms/icons';\nimport {\n statusMessageContainerStyles,\n statusMessageTextStyles,\n} from './StatusMessage.styles';\n\nexport interface StatusMessageProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n status?: 'success' | 'warning' | 'error' | 'info' | 'neutral' | 'loading';\n message: string;\n}\n\n// Icon colors matching StatusIndicator dot colors\nconst iconColors = {\n success: 'var(--color-green-1000)',\n warning: 'var(--color-orange-800)',\n error: 'var(--color-red-1000)',\n info: 'var(--color-blue-800)',\n neutral: 'var(--color-gray-600)',\n loading: 'var(--color-blue-800)',\n};\n\nexport const StatusMessage = forwardRef<HTMLDivElement, StatusMessageProps>(\n ({ className, status = 'neutral', message, ...props }, ref) => {\n // Map status to StatusIndicator variant\n const indicatorVariant = status === 'loading' ? 'info' : status;\n const iconColor = iconColors[status];\n\n // Map status to Icon\n const renderIcon = () => {\n if (status === 'loading') {\n return <Loader size={16} color={iconColor} className=\"animate-spin\" />;\n }\n if (status === 'success') {\n return <CheckCircle size={16} color={iconColor} />;\n }\n if (status === 'warning') {\n return <TriangleAlert size={16} color={iconColor} />;\n }\n if (status === 'error') {\n return <AlertCircle size={16} color={iconColor} />;\n }\n if (status === 'info') {\n return <Info size={16} color={iconColor} />;\n }\n return null;\n };\n\n return (\n <div\n ref={ref}\n className={cn(statusMessageContainerStyles(), className)}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n <StatusIndicator variant={indicatorVariant} size=\"small\" />\n <span className={statusMessageTextStyles({ status })}>{message}</span>\n </div>\n <div className=\"w-4 h-4 flex items-center justify-center\">\n {renderIcon()}\n </div>\n </div>\n );\n }\n);\n\nStatusMessage.displayName = 'StatusMessage';\n\n","import { cva } from 'class-variance-authority';\n\nexport const autopilotActionContainerStyles = cva(\n 'flex items-center justify-between w-full gap-2 min-h-[20px]'\n);\n\nexport const autopilotActionContentStyles = cva(\n 'flex items-center gap-2'\n);\n\nexport const autopilotActionTextStyles = cva(\n 'text-[12px] font-normal font-sans leading-[16px]',\n {\n variants: {\n status: {\n running: 'text-[var(--color-gray-800)]',\n completed: 'text-[var(--color-gray-800)]',\n stopped: 'text-[var(--color-blue-800)]',\n },\n },\n defaultVariants: {\n status: 'running',\n },\n }\n);\n\nexport const autopilotActionIconContainerStyles = cva(\n 'w-4 h-4 flex items-center justify-center shrink-0'\n);\n","// React\nimport { HTMLAttributes, forwardRef } from 'react';\n\n// Components\nimport { Hexagon, CheckCircle, Pause, Hand } from '@/components/atoms/icons';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport {\n autopilotActionContainerStyles,\n autopilotActionContentStyles,\n autopilotActionTextStyles,\n autopilotActionIconContainerStyles,\n} from './AutopilotAction.styles';\n\nexport interface AutopilotActionProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n /** The status of the autopilot action */\n status?: 'running' | 'completed' | 'stopped';\n /** The message to display */\n message: string;\n}\n\n/** Color mapping for hexagon and action icons based on status */\nconst statusColors = {\n running: 'var(--color-gray-800)',\n completed: 'var(--color-gray-800)',\n stopped: 'var(--color-blue-800)',\n};\n\n/** Color for the action icon on the right side */\nconst actionIconColors = {\n running: 'var(--color-gray-800)',\n completed: 'var(--color-green-1000)',\n stopped: 'var(--color-blue-800)',\n};\n\nexport const AutopilotAction = forwardRef<HTMLDivElement, AutopilotActionProps>(\n ({ className, status = 'running', message, ...props }, ref) => {\n const hexagonColor = statusColors[status];\n const actionIconColor = actionIconColors[status];\n\n /** Renders the appropriate action icon based on status */\n const renderActionIcon = () => {\n if (status === 'completed') {\n return <CheckCircle size={16} color={actionIconColor} />;\n }\n if (status === 'stopped') {\n return <Hand size={16} color={actionIconColor} />;\n }\n // Default: running\n return <Pause size={16} color={actionIconColor} />;\n };\n\n return (\n <div\n ref={ref}\n className={cn(autopilotActionContainerStyles(), className)}\n {...props}\n >\n <div className={autopilotActionContentStyles()}>\n <div className={autopilotActionIconContainerStyles()}>\n <Hexagon size={16} color={hexagonColor} />\n </div>\n <span className={autopilotActionTextStyles({ status })}>{message}</span>\n </div>\n <div className={autopilotActionIconContainerStyles()}>\n {renderActionIcon()}\n </div>\n </div>\n );\n }\n);\n\nAutopilotAction.displayName = 'AutopilotAction';\n","import { cva } from 'class-variance-authority';\n\nexport const tooltipContentStyles = cva(\n 'z-50 rounded-[4px] px-3 py-3 shadow-[0px_8px_8px_-4px_rgba(0,0,0,0.04),0px_20px_24px_-4px_rgba(0,0,0,0.08)] max-w-[var(--radix-tooltip-content-available-width)] origin-[var(--radix-tooltip-content-transform-origin)]',\n {\n variants: {\n variant: {\n default: 'bg-[var(--color-blue-1000)] text-[var(--color-gray-50)]',\n light: 'bg-[var(--color-gray-50)] text-[var(--color-gray-1000)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nexport const tooltipArrowStyles = cva('', {\n variants: {\n variant: {\n default: 'fill-[var(--color-blue-1000)]',\n light: 'fill-[var(--color-gray-50)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n","import * as React from 'react';\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport { motion } from 'framer-motion';\nimport { cn } from '@/utils/cn';\nimport { tooltipContentStyles, tooltipArrowStyles } from './Tooltip.styles';\nimport { Typography } from '@/components/atoms/Typography/Typography';\nimport { VariantProps } from 'class-variance-authority';\n\n// Set default delay to 0ms for better UX (faster than Radix default of 700ms)\nconst TooltipProvider = ({\n delayDuration = 0,\n ...props\n}: TooltipPrimitive.TooltipProviderProps) => (\n <TooltipPrimitive.Provider delayDuration={delayDuration} {...props} />\n);\n\nconst Tooltip = TooltipPrimitive.Root;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\ninterface TooltipContentProps\n extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>,\n VariantProps<typeof tooltipContentStyles> {}\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n TooltipContentProps\n>(({ className, sideOffset = 4, children, variant, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n asChild\n className={cn(tooltipContentStyles({ variant }), className)}\n {...props}\n >\n <motion.div\n initial={{ opacity: 0, scale: 0.95 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.95 }}\n transition={{ duration: 0.1, ease: 'easeOut' }}\n >\n <Typography\n variant=\"x-small\"\n color=\"inherit\"\n className=\"font-normal relative z-10\"\n >\n {children}\n </Typography>\n <TooltipPrimitive.Arrow className={tooltipArrowStyles({ variant })} />\n </motion.div>\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import { cva } from 'class-variance-authority';\n\nexport const chatInputRootStyles = cva('relative flex flex-col w-full');\n\nexport const chatInputContainerStyles = cva(\n 'box-border flex flex-col items-start p-4 rounded-[16px] w-full transition-all duration-200 min-w-[300px] max-w-[800px] relative z-10',\n {\n variants: {\n state: {\n default: '',\n active: '',\n withFiles: '',\n dragOver: '',\n },\n variant: {\n default:\n '[background-image:linear-gradient(var(--color-white),var(--color-white)),linear-gradient(180deg,#B9BCCB_0%,#E5E7F0_100%)] [background-origin:padding-box,border-box] [background-clip:padding-box,border-box] border border-transparent shadow-[0px_8px_8px_-4px_rgba(0,0,0,0.04),0px_20px_24px_-4px_rgba(0,0,0,0.08)]',\n transparent: 'bg-transparent border-none shadow-none',\n },\n isMagicActive: {\n true: '[background-image:linear-gradient(var(--color-white),var(--color-white))] border-transparent shadow-[0_0_40px_-10px_rgba(106,234,253,0.5),0_0_40px_-10px_rgba(255,111,0,0.4)]',\n false: '',\n },\n },\n defaultVariants: {\n state: 'default',\n variant: 'default',\n isMagicActive: false,\n },\n },\n);\n\nexport const chatInputWrapperStyles = cva(\n 'w-full transition-all duration-200',\n {\n variants: {\n state: {\n default: 'border-[var(--color-gray-600)]',\n active: 'border-[var(--color-blue-800)]',\n withFiles: 'border-[var(--color-gray-600)]',\n dragOver: 'border-[var(--color-blue-800)] border-dashed',\n },\n variant: {\n default: 'bg-[var(--color-white)]',\n transparent: 'bg-transparent',\n },\n },\n defaultVariants: {\n state: 'default',\n variant: 'default',\n },\n },\n);\n\nexport const chatInputContentStyles = cva(\n 'box-border flex flex-col gap-[1.25rem] items-start justify-center w-full rounded-[inherit]',\n);\n\nexport const chatInputInnerListStyles = cva('flex flex-col gap-5 w-full');\n\nexport const filesContainerStyles = cva(\n 'flex flex-wrap gap-[8px] items-start w-full',\n);\n\nexport const textareaWrapperStyles = cva(\n 'flex items-start justify-between w-full max-h-[200px] overflow-y-auto',\n);\n\nexport const textareaStyles = cva(\n 'w-full bg-transparent border-none outline-none resize-none font-normal text-[16px] leading-[24px] min-h-[24px] placeholder:text-[var(--color-gray-600)] text-[var(--color-gray-1000)]',\n {\n variants: {\n state: {\n default: '',\n active: '',\n withFiles: '',\n dragOver: '',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n },\n);\n\nexport const toolbarStyles = cva('flex items-center justify-between w-full');\n\nexport const toolbarLeftStyles = cva('flex gap-[8px] items-center');\n\nexport const toolbarRightStyles = cva('flex items-center gap-2.5');\n\nexport const toolbarIconButtonStyles = cva(\n 'flex items-center justify-center shrink-0 transition-all duration-200 disabled:opacity-40 disabled:cursor-not-allowed focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-2',\n {\n variants: {\n variant: {\n default:\n 'size-[16px] text-[var(--color-gray-600)] hover:text-[var(--color-gray-800)] active:text-[var(--color-gray-1000)] cursor-pointer',\n add: 'bg-[var(--color-gray-100)] border border-[var(--color-gray-200)] border-solid rounded-[100px] p-[8px] size-auto text-[var(--color-gray-600)] hover:bg-[var(--color-gray-200)] active:bg-[var(--color-gray-200)] cursor-pointer',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\nexport const sendButtonStyles = cva(\n 'flex items-center justify-center shrink-0 size-[32px] rounded-[100px] transition-all duration-200 focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-2',\n {\n variants: {\n disabled: {\n true: 'bg-[var(--color-gray-200)] text-[var(--color-white)] cursor-not-allowed',\n false:\n 'bg-[var(--color-blue-800)] text-[var(--color-white)] hover:opacity-80 active:bg-[var(--color-blue-1000)] cursor-pointer',\n },\n },\n defaultVariants: {\n disabled: false,\n },\n },\n);\n\nexport const loaderStyles = cva('animate-spin');\n\nexport const dragOverlayStyles = cva(\n 'flex flex-col gap-[12px] items-center justify-center px-[16px] py-[40px] min-h-[120px] w-full absolute inset-0 z-50 bg-[var(--color-white)] h-full rounded-xl min-h-0 border border-solid border-[var(--color-blue-1000)]',\n);\n\nexport const dragOverlayIconWrapperStyles = cva(\n 'flex items-center justify-center',\n);\n\nexport const modelSelectorTriggerStyles = cva(\n 'flex items-center gap-1 px-2 py-1 rounded-[6px] text-[var(--color-gray-600)] border border-[var(--color-gray-200)] transition-colors duration-200 cursor-pointer hover:bg-[var(--color-gray-50)] hover:border-[var(--color-gray-300)] hover:text-[var(--color-gray-800)] disabled:cursor-not-allowed disabled:opacity-50',\n);\n\nexport const modelDropdownContentStyles = cva('min-w-[120px]');\n\nexport const modelDropdownItemStyles = cva('py-1.5 px-2');\n\nexport const magicBorderWrapperStyles = cva(\n 'absolute -inset-[2px] rounded-[18px] z-0 pointer-events-none',\n);\n\nexport const magicBorderGradientStyles = cva(\n 'absolute inset-0 rounded-[18px] w-full h-full',\n {\n variants: {\n layer: {\n base: 'opacity-40',\n blur: 'blur-xl opacity-20',\n },\n },\n defaultVariants: {\n layer: 'base',\n },\n },\n);\n\nexport const magicToggleButtonStyles = cva(\n 'flex items-center gap-1.5 px-3 py-1.5 rounded-full text-[12px] font-medium transition-all duration-300 cursor-pointer border focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-2',\n {\n variants: {\n active: {\n true: 'bg-gradient-to-r from-[var(--color-blue-800)] to-[var(--color-orange-800)] text-white border-transparent shadow-[0_0_12px_rgba(21,177,205,0.4)]',\n false:\n 'bg-[var(--color-gray-50)] text-[var(--color-gray-600)] border-[var(--color-gray-200)] hover:bg-[var(--color-gray-100)] hover:border-[var(--color-gray-300)] hover:text-[var(--color-gray-800)]',\n },\n },\n defaultVariants: {\n active: false,\n },\n },\n);\n\nexport const chatInputOuterWrapperStyles = cva('flex flex-col w-full');\n\nexport const magicToggleWrapperStyles = cva('flex justify-end mb-3');\n","// react / next\nimport {\n useState,\n useRef,\n useCallback,\n useEffect,\n forwardRef,\n KeyboardEvent,\n DragEvent,\n ChangeEvent,\n ReactNode,\n Fragment,\n} from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\n\n// components\nimport { ChatFile, FileStatus } from '../../molecules/ChatFile/ChatFile';\nimport { CircularProgress } from '../../molecules/CircularProgress/CircularProgress';\nimport { Typography } from '../../atoms/Typography/Typography';\nimport {\n Plus,\n ArrowUp,\n Uploadfile,\n ChevronDown,\n Loader,\n} from '../../atoms/icons';\nimport {\n Dropdown,\n DropdownTrigger,\n DropdownContent,\n DropdownItem,\n} from '../../molecules/Dropdown/Dropdown';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '../../molecules/Tooltip/Tooltip';\n\n// styles\nimport {\n chatInputContainerStyles,\n chatInputWrapperStyles,\n chatInputContentStyles,\n filesContainerStyles,\n textareaWrapperStyles,\n textareaStyles,\n toolbarStyles,\n toolbarLeftStyles,\n toolbarIconButtonStyles,\n sendButtonStyles,\n dragOverlayStyles,\n dragOverlayIconWrapperStyles,\n modelSelectorTriggerStyles,\n magicBorderWrapperStyles,\n magicBorderGradientStyles,\n chatInputRootStyles,\n chatInputInnerListStyles,\n toolbarRightStyles,\n modelDropdownContentStyles,\n modelDropdownItemStyles,\n loaderStyles,\n} from './ChatInput.styles';\n\n// misc\nimport { cn } from '../../../utils/cn';\n\nexport interface ChatInputFile {\n id: string;\n filename: string;\n status?: FileStatus;\n progress?: number;\n}\n\n/** Generic action for the ChatInput toolbar */\nexport interface ChatInputAction {\n /** Unique identifier for the action */\n id: string;\n /** Icon to display in the button */\n icon: ReactNode;\n /** Accessible label for the button */\n label: string;\n /** Click handler for the action */\n onClick?: () => void;\n /** Whether the action is disabled */\n disabled?: boolean;\n /** Tooltip text to display on hover */\n tooltip?: string;\n}\n\n/** Model option for the model selector dropdown */\nexport interface ChatInputModelOption {\n /** Unique identifier for the model */\n id: string;\n /** Display name for the model */\n name: string;\n}\n\nexport interface ChatInputProps {\n placeholder?: string;\n value?: string;\n files?: ChatInputFile[];\n disabled?: boolean;\n maxFiles?: number;\n maxFileSize?: number;\n className?: string;\n /** Container variant - 'transparent' removes background, border, and shadow */\n variant?: 'default' | 'transparent';\n /** Generic toolbar actions to display between file button and send button */\n actions?: ChatInputAction[];\n /** Available AI models for the model selector dropdown */\n models?: ChatInputModelOption[];\n /** Currently selected model ID */\n selectedModel?: string;\n /** Shows a loading spinner in the send button and disables input */\n isLoading?: boolean;\n /** Disables only the send button (e.g., during file upload) while keeping input enabled */\n isUploading?: boolean;\n onChange?: (value: string) => void;\n onSend?: (message: string, files: ChatInputFile[]) => void;\n onFileAdd?: (files: File[]) => void;\n onFileRemove?: (fileId: string) => void;\n /** Callback when model selection changes */\n onModelChange?: (modelId: string) => void;\n /** Whether the magic AI border effect is active */\n isUsingMagic?: boolean;\n /** Context window usage value (0-100) */\n contextUsage?: number;\n /** Maximum context window value */\n contextMax?: number;\n}\n\nexport const ChatInput = forwardRef<HTMLDivElement, ChatInputProps>(\n (\n {\n placeholder = 'Type message',\n value: controlledValue,\n files = [],\n disabled = false,\n maxFiles = 10,\n maxFileSize = 1024 * 1024 * 1024, // 1GB\n className,\n variant = 'default',\n actions = [],\n models = [],\n selectedModel,\n isLoading = false,\n isUploading = false,\n onChange,\n onSend,\n onFileAdd,\n onFileRemove,\n onModelChange,\n isUsingMagic = false,\n contextUsage,\n contextMax = 100,\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = useState('');\n const [isDragOver, setIsDragOver] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const value =\n controlledValue !== undefined ? controlledValue : internalValue;\n const hasContent = value.trim().length > 0;\n const hasFiles = files.length > 0;\n\n const getState = () => {\n if (isDragOver) return 'dragOver';\n if (hasFiles) return 'withFiles';\n if (isFocused) return 'active';\n return 'default';\n };\n\n const state = getState();\n\n const handleValueChange = (newValue: string) => {\n if (onChange) {\n onChange(newValue);\n } else {\n setInternalValue(newValue);\n }\n };\n\n const handleTextareaChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n handleValueChange(e.target.value);\n autoResizeTextarea();\n };\n\n const autoResizeTextarea = useCallback(() => {\n const textarea = textareaRef.current;\n if (textarea) {\n textarea.style.height = 'auto';\n textarea.style.height = `${Math.min(textarea.scrollHeight, 200)}px`;\n }\n }, []);\n\n // Auto-resize when value changes programmatically (e.g., from prompt refinement)\n useEffect(() => {\n autoResizeTextarea();\n }, [value, autoResizeTextarea]);\n\n const handleSend = useCallback(() => {\n if (disabled || isUploading || (!hasContent && !hasFiles)) return;\n\n if (onSend) {\n onSend(value, files);\n handleValueChange('');\n if (textareaRef.current) {\n textareaRef.current.style.height = 'auto';\n }\n }\n }, [disabled, isUploading, hasContent, hasFiles, onSend, value, files]);\n\n const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n handleSend();\n }\n };\n\n const handleFileInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n const selectedFiles = Array.from(e.target.files || []);\n if (selectedFiles.length > 0 && onFileAdd) {\n onFileAdd(selectedFiles);\n }\n if (fileInputRef.current) {\n fileInputRef.current.value = '';\n }\n };\n\n const handleAddFileClick = () => {\n fileInputRef.current?.click();\n };\n\n const dragCounterRef = useRef(0);\n\n const handleDragEnter = (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n dragCounterRef.current += 1;\n if (dragCounterRef.current === 1) {\n setIsDragOver(true);\n }\n };\n\n const handleDragLeave = (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n dragCounterRef.current -= 1;\n if (dragCounterRef.current === 0) {\n setIsDragOver(false);\n }\n };\n\n const handleDragOver = (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n const handleDrop = (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n dragCounterRef.current = 0;\n setIsDragOver(false);\n\n const droppedFiles = Array.from(e.dataTransfer.files);\n if (droppedFiles.length > 0 && onFileAdd) {\n onFileAdd(droppedFiles);\n }\n };\n\n const handleFileRemove = (fileId: string) => {\n if (onFileRemove) {\n onFileRemove(fileId);\n }\n };\n\n return (\n <div ref={ref} className={cn(chatInputRootStyles(), className)}>\n <AnimatePresence>\n {isUsingMagic && (\n <motion.div\n initial={{ opacity: 0, scale: 0.98 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.98 }}\n transition={{ duration: 1.2, ease: 'easeInOut' }}\n className={magicBorderWrapperStyles()}\n >\n {/* 1. The Moving Gradient Layer - REDUCED OPACITY */}\n <div className={magicBorderGradientStyles({ layer: 'base' })}>\n <motion.div\n className=\"w-full h-full rounded-[inherit]\"\n style={{\n background:\n 'linear-gradient(90deg, var(--color-blue-800), var(--color-blue-400), var(--color-orange-800), var(--color-blue-800))',\n backgroundSize: '300% 100%',\n }}\n animate={{ backgroundPosition: ['0% 50%', '100% 50%'] }}\n transition={{ duration: 4, repeat: Infinity, ease: 'linear' }}\n />\n </div>\n {/* 2. The Blur/Glow Layer - REDUCED OPACITY & BLUR */}\n <div className={magicBorderGradientStyles({ layer: 'blur' })}>\n <motion.div\n className=\"w-full h-full rounded-[inherit]\"\n style={{\n background:\n 'linear-gradient(90deg, var(--color-blue-800), var(--color-blue-400), var(--color-orange-800), var(--color-blue-800))',\n backgroundSize: '300% 100%',\n }}\n animate={{ backgroundPosition: ['0% 50%', '100% 50%'] }}\n transition={{ duration: 4, repeat: Infinity, ease: 'linear' }}\n />\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n\n <div\n className={chatInputContainerStyles({\n state,\n variant,\n isMagicActive: isUsingMagic,\n })}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <div className={chatInputWrapperStyles({ state, variant })}>\n <div className={chatInputContentStyles()}>\n <div className={chatInputInnerListStyles()}>\n {/* Files Container */}\n {hasFiles && (\n <div className={filesContainerStyles()}>\n {files.map((file) => (\n <ChatFile\n key={file.id}\n filename={file.filename}\n status={file.status}\n progress={file.progress}\n onDelete={() => handleFileRemove(file.id)}\n />\n ))}\n </div>\n )}\n\n {/* Textarea */}\n <div className={textareaWrapperStyles()}>\n <textarea\n ref={textareaRef}\n className={textareaStyles({ state })}\n placeholder={placeholder}\n value={value}\n disabled={disabled || isLoading}\n onChange={handleTextareaChange}\n onKeyDown={handleKeyDown}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n rows={2}\n maxLength={10000}\n aria-label=\"Chat message input\"\n />\n </div>\n\n {/* Toolbar */}\n <div className={toolbarStyles()}>\n <div className={toolbarLeftStyles()}>\n {/* Add File Button */}\n <button\n type=\"button\"\n onClick={handleAddFileClick}\n className={toolbarIconButtonStyles({ variant: 'add' })}\n disabled={disabled}\n aria-label=\"Add file\"\n tabIndex={0}\n >\n <Plus size={16} />\n </button>\n\n {/* Generic Actions */}\n {actions.map((action) => (\n <Fragment key={`--action-${action.id}`}>\n {action.tooltip ? (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n onClick={action.onClick}\n className={toolbarIconButtonStyles()}\n disabled={disabled || action.disabled}\n aria-label={action.label}\n tabIndex={0}\n >\n {action.icon}\n </button>\n </TooltipTrigger>\n <TooltipContent variant=\"light\">\n {action.tooltip}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n ) : (\n <button\n type=\"button\"\n onClick={action.onClick}\n className={toolbarIconButtonStyles()}\n disabled={disabled || action.disabled}\n aria-label={action.label}\n tabIndex={0}\n >\n {action.icon}\n </button>\n )}\n </Fragment>\n ))}\n </div>\n\n <div className={toolbarRightStyles()}>\n {/* Model Selector Dropdown */}\n {models.length > 0 && (\n <Dropdown>\n <DropdownTrigger>\n <button\n type=\"button\"\n className={modelSelectorTriggerStyles()}\n disabled={disabled || isLoading}\n aria-label=\"Select AI model\"\n >\n <Typography\n variant=\"tiny\"\n color=\"inherit\"\n as=\"span\"\n className={\n disabled || isLoading ? 'opacity-50' : undefined\n }\n >\n {models.find((m) => m.id === selectedModel)\n ?.name ||\n models[0]?.name ||\n 'Select model'}\n </Typography>\n <ChevronDown size={10} color=\"currentColor\" />\n </button>\n </DropdownTrigger>\n <DropdownContent\n align=\"end\"\n className={modelDropdownContentStyles()}\n >\n {models.map((model) => (\n <DropdownItem\n key={model.id}\n active={model.id === selectedModel}\n onClick={() => onModelChange?.(model.id)}\n className={modelDropdownItemStyles()}\n >\n <Typography\n variant=\"tiny\"\n color=\"inherit\"\n as=\"span\"\n >\n {model.name}\n </Typography>\n </DropdownItem>\n ))}\n </DropdownContent>\n </Dropdown>\n )}\n\n {/* Context Usage Progress */}\n {contextUsage !== undefined && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <div className=\"flex items-center justify-center h-[32px]\">\n <CircularProgress\n value={contextUsage}\n max={contextMax}\n size=\"xs\"\n showLabel={false}\n variant={\n contextUsage >= 90\n ? 'error'\n : contextUsage >= 75\n ? 'warning'\n : 'default'\n }\n strokeWidth={2}\n aria-label={`Context usage: ${contextUsage} of ${contextMax}`}\n />\n </div>\n </TooltipTrigger>\n <TooltipContent variant=\"light\">\n Context: {contextUsage}/{contextMax}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n\n {/* Send Button */}\n <button\n type=\"button\"\n onClick={handleSend}\n className={sendButtonStyles({\n disabled:\n disabled ||\n isLoading ||\n isUploading ||\n (!hasContent && !hasFiles),\n })}\n disabled={\n disabled ||\n isLoading ||\n isUploading ||\n (!hasContent && !hasFiles)\n }\n aria-label={isLoading ? 'Loading' : 'Send message'}\n tabIndex={0}\n >\n {isLoading ? (\n <Loader\n size={16}\n color=\"currentColor\"\n className={loaderStyles()}\n />\n ) : (\n <ArrowUp\n size={16}\n strokeWidth={2.5}\n color=\"currentColor\"\n />\n )}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <AnimatePresence>\n {isDragOver && (\n <motion.div\n key=\"overlay\"\n initial={{ opacity: 0, filter: 'blur(2px)' }}\n animate={{ opacity: 1, filter: 'blur(0px)' }}\n exit={{ opacity: 0, filter: 'blur(2px)' }}\n transition={{ duration: 0.2, ease: 'easeInOut' }}\n className={dragOverlayStyles()}\n >\n <div className={dragOverlayIconWrapperStyles()}>\n <Uploadfile size={32} color=\"var(--color-gray-1000)\" />\n </div>\n <Typography\n variant=\"small\"\n weight=\"bold\"\n color=\"primary\"\n className=\"text-center\"\n >\n Drop your files here\n </Typography>\n <Typography\n variant=\"small\"\n color=\"secondary\"\n className=\"text-center\"\n >\n Up to {maxFiles} files or a maximum size of{' '}\n {Math.round(maxFileSize / (1024 * 1024 * 1024))}GB\n </Typography>\n </motion.div>\n )}\n </AnimatePresence>\n\n {/* Hidden File Input */}\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n onChange={handleFileInputChange}\n className=\"hidden\"\n aria-hidden=\"true\"\n />\n </div>\n </div>\n );\n },\n);\n\nChatInput.displayName = 'ChatInput';\n","import { cva } from 'class-variance-authority';\n\nexport const conversationHeaderStyles = cva(\n 'w-full h-[48px] box-border flex items-center justify-between px-[16px] py-[12px] bg-[var(--color-white)] border-b border-[var(--color-gray-200)]'\n);\n\nexport const headerRightStyles = cva(\n 'flex items-center gap-[12px] h-[24px]'\n);\n\nexport const actionGroupStyles = cva(\n 'flex items-center gap-[12px] h-[24px] rounded-[8px]'\n);\n\nexport const iconButtonStyles = cva(\n 'flex items-center justify-center size-[16px] overflow-hidden text-[var(--color-gray-800)] hover:text-[var(--color-blue-800)] transition-colors bg-transparent border-none cursor-pointer outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] rounded-sm'\n);\n\nexport const tagsGroupStyles = cva('flex items-center gap-[8px]');\n\nexport const collaboratorsGroupStyles = cva('flex items-center'); // We will handle overlap in the component or child items\n\n","// React\nimport { HTMLAttributes, forwardRef } from 'react';\n\n// Components\nimport { Breadcrumbs, BreadcrumbItem } from '@/components/molecules/Breadcrumbs/Breadcrumbs';\nimport { Tag } from '@/components/molecules/Tag/Tag';\nimport { Avatar } from '@/components/atoms/Avatar/Avatar';\nimport { TagPlus, UserPlus } from '@/components/atoms/icons';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport {\n conversationHeaderStyles,\n headerRightStyles,\n actionGroupStyles,\n iconButtonStyles,\n tagsGroupStyles,\n collaboratorsGroupStyles,\n} from './ConversationHeader.styles';\n\nexport interface ConversationTag {\n id: string;\n label: string;\n}\n\nexport interface ConversationCollaborator {\n id: string;\n name: string;\n src?: string;\n}\n\nexport interface ConversationHeaderProps extends HTMLAttributes<HTMLDivElement> {\n /** Breadcrumb items to display on the left */\n breadcrumbs: BreadcrumbItem[];\n /** List of tags to display */\n tags?: ConversationTag[];\n /** List of collaborators/users to display */\n collaborators?: ConversationCollaborator[];\n /** Callback when adding a tag */\n onAddTag?: () => void;\n /** Callback when adding a collaborator */\n onAddCollaborator?: () => void;\n /** Additional count for tags if truncated */\n tagsOverflowCount?: number;\n}\n\nexport const ConversationHeader = forwardRef<HTMLDivElement, ConversationHeaderProps>(\n (\n {\n className,\n breadcrumbs,\n tags = [],\n collaborators = [],\n onAddTag,\n onAddCollaborator,\n tagsOverflowCount = 0,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(conversationHeaderStyles(), className)}\n {...props}\n >\n <Breadcrumbs items={breadcrumbs} size=\"medium\" />\n\n <div className={headerRightStyles()}>\n {/* Tags & Collaborators Group */}\n <div className={actionGroupStyles()}>\n\n {/* Tags Section */}\n {(tags.length > 0 || tagsOverflowCount > 0) && (\n <div className={tagsGroupStyles()}>\n {tags.map((tag) => (\n <Tag key={tag.id} variant=\"default\" className=\"bg-[var(--color-gray-100)] border border-[var(--color-gray-200)] text-[var(--color-gray-800)] px-[8px] py-[2px] text-[10px] h-[20px]\">\n {tag.label}\n </Tag>\n ))}\n {tagsOverflowCount > 0 && (\n <Tag variant=\"default\" className=\"bg-[var(--color-gray-100)] border border-[var(--color-gray-200)] text-[var(--color-gray-800)] px-[8px] py-[2px] text-[10px] h-[20px]\">\n +{tagsOverflowCount}\n </Tag>\n )}\n </div>\n )}\n\n {/* Collaborators Section (Avatars) */}\n {collaborators.length > 0 && (\n <div className={collaboratorsGroupStyles()}>\n <div className=\"flex items-center flex-row-reverse\">\n {/* Flex row reverse to make the first item on top if using negative margin from left,\n but typically we want the first one on left on top.\n Figma uses negative right margin on the wrapper div for each avatar.\n Let's use negative margin-right on items except the last one.\n */}\n {collaborators.map((user, index) => (\n <div\n key={user.id}\n className=\"relative shrink-0 border-[1.5px] border-white rounded-full\"\n style={{\n zIndex: collaborators.length - index,\n marginRight: index < collaborators.length - 1 ? -4 : 0\n }}\n >\n <Avatar\n initials={user.name}\n src={user.src}\n alt={user.name}\n // Avatar component handles size 'small' as 24px or 32px?\n // Looking at Avatar.tsx: size='small' (default) or 'big'.\n // We need 24px. Let's check Avatar implementation details.\n // Avatar.tsx says: const imageSize = size === 'big' ? 64 : 32;\n // 32px might be too big for this header (Figma shows 24px).\n // I might need to override class/size or add 'tiny' size to Avatar later.\n // For now, I'll use className to force size if needed, or accept 32px.\n // Figma explicitly showed 24px size.\n // I will try to force it via className if Avatar allows, otherwise might need to update Avatar.\n className=\"size-[24px] text-[10px]\"\n />\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Add Tag Button */}\n <button\n type=\"button\"\n onClick={onAddTag}\n className={iconButtonStyles()}\n aria-label=\"Add tag\"\n >\n <TagPlus size={16} />\n </button>\n\n {/* Add Collaborator Button */}\n <button\n type=\"button\"\n onClick={onAddCollaborator}\n className={iconButtonStyles()}\n aria-label=\"Add collaborator\"\n >\n <UserPlus size={16} />\n </button>\n\n </div>\n </div>\n </div>\n );\n }\n);\n\nConversationHeader.displayName = 'ConversationHeader';\n\n","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React.forwardRef((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n }\n }).current;\n React.useEffect(() => {\n if (trapped) {\n let handleFocusIn2 = function(event) {\n if (focusScope.paused || !container) return;\n const target = event.target;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleFocusOut2 = function(event) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === null) return;\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleMutations2 = function(mutations) {\n const focusedElement = document.activeElement;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n };\n var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n document.addEventListener(\"focusin\", handleFocusIn2);\n document.addEventListener(\"focusout\", handleFocusOut2);\n const mutationObserver = new MutationObserver(handleMutations2);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn2);\n document.removeEventListener(\"focusout\", handleFocusOut2);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n const handleKeyDown = React.useCallback(\n (event) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement;\n if (isTabKey && focusedElement) {\n const container2 = event.currentTarget;\n const [first, last] = getTabbableEdges(container2);\n const hasTabbableElementsInside = first && last;\n if (!hasTabbableElementsInside) {\n if (focusedElement === container2) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\nfunction getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last];\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction findVisible(elements, container) {\n for (const element of elements) {\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\nfunction isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === \"hidden\") return true;\n while (node) {\n if (upTo !== void 0 && node === upTo) return false;\n if (getComputedStyle(node).display === \"none\") return true;\n node = node.parentElement;\n }\n return false;\n}\nfunction isSelectableInput(element) {\n return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n element.focus({ preventScroll: true });\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n let stack = [];\n return {\n add(focusScope) {\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n remove(focusScope) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n }\n };\n}\nfunction arrayRemove(array, item) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\nfunction removeLinks(items) {\n return items.filter((item) => item.tagName !== \"A\");\n}\nvar Root = FocusScope;\nexport {\n FocusScope,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-guards.tsx\nimport * as React from \"react\";\nvar count = 0;\nfunction FocusGuards(props) {\n useFocusGuards();\n return props.children;\n}\nfunction useFocusGuards() {\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll(\"[data-radix-focus-guard]\");\n document.body.insertAdjacentElement(\"afterbegin\", edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement(\"beforeend\", edgeGuards[1] ?? createFocusGuard());\n count++;\n return () => {\n if (count === 1) {\n document.querySelectorAll(\"[data-radix-focus-guard]\").forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n}\nfunction createFocusGuard() {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-radix-focus-guard\", \"\");\n element.tabIndex = 0;\n element.style.outline = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.pointerEvents = \"none\";\n return element;\n}\nexport {\n FocusGuards,\n FocusGuards as Root,\n useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of <Style\n */\n var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n // textarea will always _contain_ scroll inside self. It only can be hidden\n return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n if (!(node instanceof Element)) {\n return false;\n }\n var styles = window.getComputedStyle(node);\n return (\n // not-not-scrollable\n styles[overflow] !== 'hidden' &&\n // contains scroll inside self\n !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n var ownerDocument = node.ownerDocument;\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n if (scrollHeight > clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n if (!target) {\n break;\n }\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n var parent_1 = target.parentNode;\n // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n // this is the same logic used in focus-lock\n target = (parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1);\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10\n // and script elements, as they have no impact on accessibility.\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","\"use client\";\n\n// src/dialog.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContext, createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { hideOthers } from \"aria-hidden\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar DIALOG_NAME = \"Dialog\";\nvar [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\nvar [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);\nvar Dialog = (props) => {\n const {\n __scopeDialog,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true\n } = props;\n const triggerRef = React.useRef(null);\n const contentRef = React.useRef(null);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: DIALOG_NAME\n });\n return /* @__PURE__ */ jsx(\n DialogProvider,\n {\n scope: __scopeDialog,\n triggerRef,\n contentRef,\n contentId: useId(),\n titleId: useId(),\n descriptionId: useId(),\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n modal,\n children\n }\n );\n};\nDialog.displayName = DIALOG_NAME;\nvar TRIGGER_NAME = \"DialogTrigger\";\nvar DialogTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...triggerProps } = props;\n const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n }\n);\nDialogTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DialogPortal\";\nvar [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar DialogPortal = (props) => {\n const { __scopeDialog, forceMount, children, container } = props;\n const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeDialog, forceMount, children: React.Children.map(children, (child) => /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children: child }) })) });\n};\nDialogPortal.displayName = PORTAL_NAME;\nvar OVERLAY_NAME = \"DialogOverlay\";\nvar DialogOverlay = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n return context.modal ? /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;\n }\n);\nDialogOverlay.displayName = OVERLAY_NAME;\nvar Slot = createSlot(\"DialogOverlay.RemoveScroll\");\nvar DialogOverlayImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n return (\n // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n // ie. when `Overlay` and `Content` are siblings\n /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(context.open),\n ...overlayProps,\n ref: forwardedRef,\n style: { pointerEvents: \"auto\", ...overlayProps.style }\n }\n ) })\n );\n }\n);\nvar CONTENT_NAME = \"DialogContent\";\nvar DialogContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nDialogContent.displayName = CONTENT_NAME;\nvar DialogContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (isRightClick) event.preventDefault();\n }),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault()\n )\n }\n );\n }\n);\nvar DialogContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar DialogContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n useFocusGuards();\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n role: \"dialog\",\n id: context.contentId,\n \"aria-describedby\": context.descriptionId,\n \"aria-labelledby\": context.titleId,\n \"data-state\": getState(context.open),\n ...contentProps,\n ref: composedRefs,\n onDismiss: () => context.onOpenChange(false)\n }\n )\n }\n ),\n /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(TitleWarning, { titleId: context.titleId }),\n /* @__PURE__ */ jsx(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })\n ] })\n ] });\n }\n);\nvar TITLE_NAME = \"DialogTitle\";\nvar DialogTitle = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...titleProps } = props;\n const context = useDialogContext(TITLE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });\n }\n);\nDialogTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"DialogDescription\";\nvar DialogDescription = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...descriptionProps } = props;\n const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });\n }\n);\nDialogDescription.displayName = DESCRIPTION_NAME;\nvar CLOSE_NAME = \"DialogClose\";\nvar DialogClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...closeProps } = props;\n const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nDialogClose.displayName = CLOSE_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar TITLE_WARNING_NAME = \"DialogTitleWarning\";\nvar [WarningProvider, useWarningContext] = createContext(TITLE_WARNING_NAME, {\n contentName: CONTENT_NAME,\n titleName: TITLE_NAME,\n docsSlug: \"dialog\"\n});\nvar TitleWarning = ({ titleId }) => {\n const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);\n const MESSAGE = `\\`${titleWarningContext.contentName}\\` requires a \\`${titleWarningContext.titleName}\\` for the component to be accessible for screen reader users.\n\nIf you want to hide the \\`${titleWarningContext.titleName}\\`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;\n React.useEffect(() => {\n if (titleId) {\n const hasTitle = document.getElementById(titleId);\n if (!hasTitle) console.error(MESSAGE);\n }\n }, [MESSAGE, titleId]);\n return null;\n};\nvar DESCRIPTION_WARNING_NAME = \"DialogDescriptionWarning\";\nvar DescriptionWarning = ({ contentRef, descriptionId }) => {\n const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);\n const MESSAGE = `Warning: Missing \\`Description\\` or \\`aria-describedby={undefined}\\` for {${descriptionWarningContext.contentName}}.`;\n React.useEffect(() => {\n const describedById = contentRef.current?.getAttribute(\"aria-describedby\");\n if (descriptionId && describedById) {\n const hasDescription = document.getElementById(descriptionId);\n if (!hasDescription) console.warn(MESSAGE);\n }\n }, [MESSAGE, contentRef, descriptionId]);\n return null;\n};\nvar Root = Dialog;\nvar Trigger = DialogTrigger;\nvar Portal = DialogPortal;\nvar Overlay = DialogOverlay;\nvar Content = DialogContent;\nvar Title = DialogTitle;\nvar Description = DialogDescription;\nvar Close = DialogClose;\nexport {\n Close,\n Content,\n Description,\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n Overlay,\n Portal,\n Root,\n Title,\n Trigger,\n WarningProvider,\n createDialogScope\n};\n//# sourceMappingURL=index.mjs.map\n","// src/visually-hidden.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar VISUALLY_HIDDEN_STYLES = Object.freeze({\n // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n});\nvar NAME = \"VisuallyHidden\";\nvar VisuallyHidden = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...props,\n ref: forwardedRef,\n style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }\n }\n );\n }\n);\nVisuallyHidden.displayName = NAME;\nvar Root = VisuallyHidden;\nexport {\n Root,\n VISUALLY_HIDDEN_STYLES,\n VisuallyHidden\n};\n//# sourceMappingURL=index.mjs.map\n","import { cva } from 'class-variance-authority';\n\nexport const modalOverlayStyles = cva(\n 'fixed inset-0 z-50 bg-[rgba(0,6,38,0.5)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0'\n);\n\nexport const modalContainerStyles = cva(\n 'fixed left-[50%] top-[50%] z-50 translate-x-[-50%] translate-y-[-50%] bg-[var(--color-white)] border border-[var(--color-gray-200)] rounded-[12px] shadow-lg p-4 flex flex-col gap-2 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 duration-200',\n {\n variants: {\n size: {\n sm: 'w-[300px] max-w-[calc(100vw-2rem)]',\n md: 'w-[400px] max-w-[calc(100vw-2rem)]',\n lg: 'w-[500px] max-w-[calc(100vw-2rem)]',\n xl: 'w-[600px] max-w-[calc(100vw-2rem)]',\n full: 'w-[calc(100vw-2rem)] h-[calc(100vh-2rem)]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nexport const modalHeaderStyles = cva(\n 'flex flex-col gap-2 items-start justify-center w-full'\n);\n\nexport const modalHeaderTopRowStyles = cva(\n 'flex items-start justify-between w-full pr-6'\n);\n\nexport const modalCloseButtonStyles = cva(\n 'absolute right-4 top-4 flex-shrink-0 w-4 h-4 text-[var(--color-blue-1000)] cursor-pointer bg-transparent border-none p-0 hover:opacity-70 transition-opacity focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-2 rounded-sm'\n);\n\nexport const modalTitleStyles = cva(\n '!font-[Inter,system-ui,-apple-system,sans-serif] font-medium text-[1rem] leading-[1.5rem] text-[var(--color-blue-1000)] w-full'\n);\n\nexport const modalDescriptionStyles = cva(\n 'font-[Inter,system-ui,-apple-system,sans-serif] font-normal text-[0.875rem] leading-[1.25rem] text-[var(--color-gray-800)] w-full'\n);\n\nexport const modalContentStyles = cva('flex flex-col gap-4 items-start w-full', {\n variants: {\n size: {\n sm: 'max-h-[60vh] overflow-y-auto',\n md: 'max-h-[70vh] overflow-y-auto',\n lg: 'max-h-[75vh] overflow-y-auto',\n xl: 'max-h-[80vh] overflow-y-auto',\n full: 'flex-1 overflow-y-auto',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const modalFooterStyles = cva('flex gap-2 items-start w-full');\n","// react\nimport { useCallback, useRef } from 'react';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport * as VisuallyHidden from '@radix-ui/react-visually-hidden';\n\n// components\nimport { Button } from '@/components/molecules/Button/Button';\nimport { X } from '@/components/atoms/icons';\n\n// styles\nimport {\n modalOverlayStyles,\n modalContainerStyles,\n modalCloseButtonStyles,\n modalTitleStyles,\n modalDescriptionStyles,\n modalContentStyles,\n modalFooterStyles,\n} from './Modal.styles';\n\n// misc\nimport { cn } from '@/utils/cn';\n\n// types\nimport type { ModalProps } from './Modal.types';\n\nexport const Modal = ({\n open,\n onOpenChange,\n title,\n description,\n showCloseButton = true,\n closeIcon,\n children,\n primaryAction,\n secondaryAction,\n closeOnClickOutside = true,\n closeOnEsc = true,\n onClose,\n className,\n overlayClassName,\n contentClassName,\n footerClassName,\n size = 'md',\n}: ModalProps) => {\n const primaryButtonRef = useRef<HTMLButtonElement>(null);\n const secondaryButtonRef = useRef<HTMLButtonElement>(null);\n\n const handleOpenChange = useCallback(\n (newOpen: boolean) => {\n onOpenChange(newOpen);\n if (!newOpen) {\n onClose?.();\n }\n },\n [onOpenChange, onClose],\n );\n\n const handlePrimaryAction = useCallback(async () => {\n if (primaryAction?.onClick) {\n await primaryAction.onClick();\n }\n }, [primaryAction]);\n\n const handleSecondaryAction = useCallback(async () => {\n if (secondaryAction?.onClick) {\n await secondaryAction.onClick();\n }\n }, [secondaryAction]);\n\n // Handle ESC key\n const handleEscapeKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (!closeOnEsc) {\n event.preventDefault();\n }\n },\n [closeOnEsc],\n );\n\n // Handle click outside\n const handlePointerDownOutside = useCallback(\n (event: Event) => {\n if (!closeOnClickOutside) {\n event.preventDefault();\n }\n },\n [closeOnClickOutside],\n );\n\n const hasFooter = primaryAction || secondaryAction;\n\n return (\n <Dialog.Root open={open} onOpenChange={handleOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay\n className={cn(modalOverlayStyles(), overlayClassName)}\n />\n <Dialog.Content\n className={cn(modalContainerStyles({ size }), className)}\n onEscapeKeyDown={handleEscapeKeyDown}\n onPointerDownOutside={handlePointerDownOutside}\n >\n {/* Always render Dialog.Title for accessibility */}\n {title ? (\n <Dialog.Title className={modalTitleStyles()}>{title}</Dialog.Title>\n ) : (\n <VisuallyHidden.Root>\n <Dialog.Title>Modal dialog</Dialog.Title>\n </VisuallyHidden.Root>\n )}\n\n {/* Always render Dialog.Description for accessibility */}\n {description ? (\n <Dialog.Description className={modalDescriptionStyles()}>\n {description}\n </Dialog.Description>\n ) : (\n <VisuallyHidden.Root>\n <Dialog.Description>Modal content</Dialog.Description>\n </VisuallyHidden.Root>\n )}\n\n {/* Close button */}\n {showCloseButton && (\n <Dialog.Close asChild>\n <button\n className={modalCloseButtonStyles()}\n aria-label=\"Close modal\"\n >\n {closeIcon || <X size={16} color=\"currentColor\" />}\n </button>\n </Dialog.Close>\n )}\n\n {/* Content */}\n {children && (\n <div className={cn(modalContentStyles({ size }), contentClassName)}>\n {children}\n </div>\n )}\n\n {/* Footer */}\n {hasFooter && (\n <div className={cn(modalFooterStyles(), footerClassName)}>\n {secondaryAction && (\n <Button\n ref={secondaryButtonRef}\n variant={secondaryAction.variant || 'secondary'}\n size=\"small\"\n onClick={handleSecondaryAction}\n disabled={secondaryAction.disabled || secondaryAction.loading}\n startIcon={secondaryAction.icon}\n className=\"flex-1\"\n >\n {secondaryAction.label}\n </Button>\n )}\n {primaryAction && (\n <Button\n ref={primaryButtonRef}\n variant={primaryAction.variant || 'primary'}\n size=\"small\"\n onClick={handlePrimaryAction}\n disabled={primaryAction.disabled || primaryAction.loading}\n startIcon={primaryAction.icon}\n className=\"flex-1\"\n >\n {primaryAction.label}\n </Button>\n )}\n </div>\n )}\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n\nModal.displayName = 'Modal';\n"],"names":["avatarContainerStyles","cva","avatarTextStyles","avatarImageStyles","generateInitials","name","words","getPlaceholderImage","seed","size","Avatar","forwardRef","className","type","shape","initials","src","alt","fallbackInitials","props","ref","imageError","setImageError","useState","placeholderSeed","useMemo","imageSrc","displayInitials","shouldShowImage","handleImageError","textBackgroundStyle","jsx","cn","statusIndicatorContainerStyles","statusIndicatorDotStyles","statusIndicatorPingStyles","StatusIndicator","variant","animated","jsxs","variantClassMap","defaultElementMap","colorClassMap","weightClassMap","fontFamilyClassMap","Typography","as","children","color","weight","fontFamily","Component","variantClass","colorClass","weightClass","fontFamilyClass","colorMap","LogoA","colorVariant","FullLogo","aspectRatio","height","width","SignatureA","animationDuration","animationDelay","uniqueId","useId","mainPathLength","artifactCardStyles","hoverBackgroundStyles","animatedGradientStyles","previewContainerStyles","previewBoxStyles","previewBoxInnerStyles","skeletonLineStyles","contentContainerStyles","titleStyles","subtitleStyles","iconContainerStyles","iconActiveStyles","iconInactiveStyles","iconStyles","errorIconStyles","skeletonLineVariants","contentSlideVariants","iconActiveVariants","iconInactiveVariants","SKELETON_WIDTHS","ArtifactCard","title","subtitle","controlledStatus","onClick","onActionClick","disabled","isHovered","setIsHovered","effectiveStatus","animationState","handleMouseEnter","useCallback","handleMouseLeave","handleClick","handleActionClick","e","handleKeyDown","renderPreview","Loader","TriangleAlert","motion","i","renderActionIcon","RotateCcw","Fragment","ArrowUp","breadcrumbsStyles","breadcrumbItemStyles","separatorStyles","Breadcrumbs","items","separator","ChevronRight","item","index","isLast","content","buttonStyles","Button","tone","startIcon","endIcon","iconSize","chatFileContainerStyles","chatFileNameStyles","chatFileIconStyles","progressBarStyles","FileStatus","ChatFile","filename","status","progress","onDelete","isUploading","isProcessing","isError","statusVariant","renderIcon","FileText","X","checkboxLabelStyles","checkboxVisualWrapperStyles","checkboxInputStyles","Checkbox","checked","defaultChecked","onChange","label","internalChecked","setInternalChecked","isControlled","isChecked","handleChange","Check","circularProgressContainerStyles","circularProgressSvgStyles","circularProgressTrackStyles","circularProgressIndicatorStyles","circularProgressLabelStyles","SIZE_MAP","CircularProgress","value","max","showLabel","labelFormatter","strokeWidth","percentage","sizePx","radius","circumference","strokeDashoffset","formattedLabel","useClickOutside","handler","useEffect","listener","event","el","dropdownContentStyles","dropdownItemStyles","dropdownLabelStyles","dropdownSeparatorStyles","DropdownContext","createContext","useDropdown","context","useContext","Dropdown","defaultOpen","controlledOpen","onOpenChange","uncontrolledOpen","setUncontrolledOpen","isOpen","dropdownRef","useRef","toggle","newState","close","DropdownTrigger","chevronIcon","ChevronDown","DropdownContent","align","attached","AnimatePresence","DropdownItem","active","closeOnSelect","DropdownLabel","DropdownSeparator","inputStyles","inputContainerStyles","inputIconStyles","Input","startIconPaddingMap","endIconPaddingMap","loadingSpinnerWrapperStyles","spinnerContainerStyles","spinnerBorderStyles","loadingTextStyles","LoadingSpinner","text","textColor","rootStyles","innerContainerStyles","messageContainerStyles","bubbleStyles","contentStyles","headerStyles","textStyles","actionsStyles","actionsIconsStyles","actionButtonStyles","avatarInnerStyles","timestampStyles","loaderStyles","systemContentWrapperStyles","shimmerOverlayStyles","activityIconAnimatedStyles","activityIconGlowStyles","editContainerStyles","editTextareaStyles","editHintStyles","branchNavigatorStyles","branchNavButtonStyles","branchNavTextStyles","EMPTY_ACTIONS","IS_MAC","KEYBOARD_HINT","formatTimestamp","ts","date","diffMs","diffMins","diffHours","ActionButton","memo","Icon","isActive","BranchNavigator","branchInfo","onPrevious","onNext","isLoading","hasPrevious","hasNext","ChevronLeft","AnimatedLoader","key","setKey","interval","k","MessageBubble","heading","timestamp","hideAvatar","showTimestamp","isSticky","isInitialPrompt","alignment","actions","enableCopy","copyIcon","onCopySuccess","enableEdit","isEditingProp","initialEditContent","onEditStart","onEditCancel","onEditSave","isSaving","onPreviousBranch","onNextBranch","isBranchLoading","contentRef","textareaRef","isCopied","setIsCopied","internalEditing","setInternalEditing","editContent","setEditContent","isEditing","resolvedAlignment","getTextContent","handleEditStart","handleEditCancel","handleEditSave","error","prevIsEditingRef","lastInitialContentRef","wasEditing","length","handleCopyInternal","textToCopy","err","handleEditContentChange","hasActions","showActions","showBranchNavigator","Activity","Edit2","action","progressBarTrackStyles","progressBarIndicatorStyles","progressBarLabelStyles","ProgressBar","showValueLabel","valueFormatter","formattedValue","rangeInputStyles","RangeInput","style","min","defaultValue","currentValue","minVal","maxVal","trackColor","backgroundStyle","sidebarItemStyles","sidebarItemIconStyles","sidebarItemLabelStyles","SidebarItem","icon","isCollapsed","styleVariant","tagStyles","tagAvatarStyles","tagIconStyles","Tag","avatarSrc","tabsListStyles","tabsTriggerStyles","tabsContentStyles","tabsIndicatorStyles","tabsBadgeContainerStyles","tabsTagStyles","Tabs","TabsPrimitive","TabsList","React","TabsTrigger","errorCount","configurationCount","setIsActive","internalRef","element","observer","setRefs","node","Settings","TabsContent","textAreaStyles","textAreaContainerStyles","TextArea","resize","timestampContainerStyles","timestampIconStyles","formatRelativeTime","now","diffSeconds","diffMinutes","diffDays","diffWeeks","diffMonths","diffYears","isFuture","absSeconds","absMinutes","absHours","absDays","absWeeks","absMonths","absYears","formatUnit","unit","plural","formatDate","format","locale","parseDate","Timestamp","showIcon","parsedDate","formattedDate","isoString","iconColor","ClockHistory","toastStyles","descriptionStyles","actionsWrapperStyles","closeButtonStyles","icons","Info","CheckCircle","AlertCircle","Sparks","iconColors","Toast","id","description","secondaryAction","onClose","IconComponent","handleClose","toast","Trash","ToastContainer","position","offset","gap","SonnerToaster","showToast","toggleRowStyles","toggleLabelStyles","toggleButtonStyles","toggleKnobStyles","Toggle","enabled","statusMessageContainerStyles","statusMessageTextStyles","StatusMessage","message","indicatorVariant","autopilotActionContainerStyles","autopilotActionContentStyles","autopilotActionTextStyles","autopilotActionIconContainerStyles","statusColors","actionIconColors","AutopilotAction","hexagonColor","actionIconColor","Hand","Pause","Hexagon","tooltipContentStyles","tooltipArrowStyles","TooltipProvider","delayDuration","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","sideOffset","chatInputRootStyles","chatInputContainerStyles","chatInputWrapperStyles","chatInputContentStyles","chatInputInnerListStyles","filesContainerStyles","textareaWrapperStyles","textareaStyles","toolbarStyles","toolbarLeftStyles","toolbarRightStyles","toolbarIconButtonStyles","sendButtonStyles","dragOverlayStyles","dragOverlayIconWrapperStyles","modelSelectorTriggerStyles","modelDropdownContentStyles","modelDropdownItemStyles","magicBorderWrapperStyles","magicBorderGradientStyles","ChatInput","placeholder","controlledValue","files","maxFiles","maxFileSize","models","selectedModel","onSend","onFileAdd","onFileRemove","onModelChange","isUsingMagic","contextUsage","contextMax","internalValue","setInternalValue","isDragOver","setIsDragOver","isFocused","setIsFocused","fileInputRef","hasContent","hasFiles","state","handleValueChange","newValue","handleTextareaChange","autoResizeTextarea","textarea","handleSend","handleFileInputChange","selectedFiles","handleAddFileClick","_a","dragCounterRef","handleDragEnter","handleDragLeave","handleDragOver","handleDrop","droppedFiles","handleFileRemove","fileId","file","Plus","m","_b","model","Uploadfile","conversationHeaderStyles","headerRightStyles","actionGroupStyles","iconButtonStyles","tagsGroupStyles","collaboratorsGroupStyles","ConversationHeader","breadcrumbs","tags","collaborators","onAddTag","onAddCollaborator","tagsOverflowCount","tag","user","TagPlus","UserPlus","composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","setRef","composeRefs","refs","hasCleanup","cleanups","cleanup","useComposedRefs","createContext2","rootComponentName","defaultContext","Context","Provider","useContext2","consumerName","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createContext3","BaseContext","scope","createScope","scopeContexts","contexts","composeContextScopes","scopes","baseScope","scopeHooks","createScope2","overrideScopes","nextScopes","nextScopes2","useScope","currentScope","useLayoutEffect2","useReactId","count","deterministicId","setId","useLayoutEffect","reactId","useInsertionEffect","useControllableState","prop","defaultProp","caller","uncontrolledProp","setUncontrolledProp","onChangeRef","useUncontrolledState","isControlledRef","wasControlled","setValue","nextValue","value2","isFunction","prevValueRef","createSlot","ownerName","SlotClone","createSlotClone","Slot2","forwardedRef","slotProps","childrenArray","slottable","isSlottable","newElement","newChildren","child","childrenRef","getElementRef","props2","mergeProps","SLOTTABLE_IDENTIFIER","childProps","overrideProps","propName","slotPropValue","childPropValue","args","result","getter","mayWarn","NODES","Primitive","primitive","Slot","Node","asChild","primitiveProps","Comp","dispatchDiscreteCustomEvent","target","ReactDOM","useCallbackRef","callback","callbackRef","useEscapeKeydown","onEscapeKeyDownProp","ownerDocument","onEscapeKeyDown","DISMISSABLE_LAYER_NAME","CONTEXT_UPDATE","POINTER_DOWN_OUTSIDE","FOCUS_OUTSIDE","originalBodyPointerEvents","DismissableLayerContext","DismissableLayer","disableOutsidePointerEvents","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","layerProps","setNode","force","composedRefs","node2","layers","highestLayerWithOutsidePointerEventsDisabled","highestLayerWithOutsidePointerEventsDisabledIndex","isBodyPointerEventsDisabled","isPointerEventsEnabled","pointerDownOutside","usePointerDownOutside","isPointerDownOnBranch","branch","focusOutside","useFocusOutside","dispatchUpdate","handleUpdate","BRANCH_NAME","DismissableLayerBranch","handlePointerDownOutside","isPointerInsideReactTreeRef","handleClickRef","handlePointerDown","handleAndDispatchPointerDownOutsideEvent2","handleAndDispatchCustomEvent","eventDetail","timerId","handleFocusOutside","isFocusInsideReactTreeRef","handleFocus","detail","discrete","AUTOFOCUS_ON_MOUNT","AUTOFOCUS_ON_UNMOUNT","EVENT_OPTIONS","FOCUS_SCOPE_NAME","FocusScope","loop","trapped","onMountAutoFocusProp","onUnmountAutoFocusProp","scopeProps","container","setContainer","onMountAutoFocus","onUnmountAutoFocus","lastFocusedElementRef","focusScope","handleFocusIn2","focus","handleFocusOut2","relatedTarget","handleMutations2","mutations","mutation","mutationObserver","focusScopesStack","previouslyFocusedElement","mountEvent","focusFirst","removeLinks","getTabbableCandidates","unmountEvent","isTabKey","focusedElement","container2","first","last","getTabbableEdges","candidates","select","candidate","findVisible","nodes","walker","isHiddenInput","elements","isHidden","upTo","isSelectableInput","createFocusScopesStack","stack","activeFocusScope","arrayRemove","array","updatedArray","PORTAL_NAME","Portal","containerProp","portalProps","mounted","setMounted","useStateMachine","initialState","machine","Presence","present","presence","usePresence","React2","stylesRef","prevPresentRef","prevAnimationNameRef","send","currentAnimationName","getAnimationName","styles","wasPresent","prevAnimationName","timeoutId","ownerWindow","handleAnimationEnd","isCurrentAnimation","currentFillMode","handleAnimationStart","useFocusGuards","edgeGuards","createFocusGuard","__assign","s","n","p","__rest","t","__spreadArray","to","from","pack","l","ar","zeroRightClassName","fullWidthClassName","noScrollbarsClassName","removedBarSizeVariable","assignRef","initialValue","useIsomorphicLayoutEffect","currentValues","useMergeRefs","oldValue","prevRefs_1","nextRefs_1","current_1","ItoI","a","innerCreateMedium","defaults","middleware","buffer","assigned","medium","data","x","cb","cbs","pendingQueue","executeQueue","cycle","filter","createSidecarMedium","options","SideCar","sideCar","rest","Target","exportSidecar","exported","effectCar","nothing","RemoveScroll","parentRef","callbacks","setCallbacks","forwardProps","removeScrollBar","shards","noRelative","noIsolation","inert","allowPinchZoom","Container","gapMode","containerRef","containerProps","getNonce","makeStyleTag","nonce","injectStyles","css","insertStyleTag","head","stylesheetSingleton","counter","stylesheet","styleHookSingleton","sheet","isDynamic","styleSingleton","useStyle","Sheet","dynamic","zeroGap","parse","getOffset","cs","left","top","right","getGapWidth","offsets","documentWidth","windowWidth","Style","lockAttribute","getStyles","allowRelative","important","getCurrentUseCounter","useLockAttribute","newCounter","RemoveScrollBar","noImportant","passiveSupported","nonPassive","alwaysContainsScroll","elementCanBeScrolled","overflow","elementCouldBeVScrolled","elementCouldBeHScrolled","locationCouldBeScrolled","axis","current","isScrollable","elementCouldBeScrolled","getScrollVariables","scrollHeight","clientHeight","getVScrollVariables","scrollTop","getHScrollVariables","scrollLeft","scrollWidth","clientWidth","getDirectionFactor","direction","handleScroll","endTarget","sourceDelta","noOverscroll","directionFactor","delta","targetInLock","shouldCancelScroll","isDeltaPositive","availableScroll","availableScrollTop","scroll_1","capacity","elementScroll","parent_1","getTouchXY","getDeltaXY","extractRef","deltaCompare","y","generateStyle","idCounter","lockStack","RemoveScrollSideCar","shouldPreventQueue","touchStartRef","activeAxis","lastProps","allow_1","shouldCancelEvent","parent","touch","touchStart","deltaX","deltaY","currentAxis","moveDirection","canBeScrolledInMainDirection","cancelingAxis","shouldPrevent","_event","sourceEvent","shardNodes","shouldStop","shouldCancel","should","getOutermostShadowParent","scrollTouchStart","scrollWheel","scrollTouchMove","inst","shadowParent","ReactRemoveScroll","getDefaultParent","originalTarget","sampleTarget","counterMap","uncontrolledNodes","markerMap","lockCount","unwrapHost","correctTargets","targets","correctedTarget","applyAttributeToOthers","parentNode","markerName","controlAttribute","markerCounter","hiddenNodes","elementsToKeep","elementsToStop","keep","deep","attr","alreadyHidden","counterValue","markerValue","hideOthers","activeParentNode","DIALOG_NAME","createDialogContext","DialogProvider","useDialogContext","Dialog","__scopeDialog","openProp","modal","triggerRef","open","setOpen","prevOpen","TRIGGER_NAME","DialogTrigger","triggerProps","composedTriggerRef","getState","PortalProvider","usePortalContext","DialogPortal","forceMount","PortalPrimitive","OVERLAY_NAME","DialogOverlay","portalContext","overlayProps","DialogOverlayImpl","CONTENT_NAME","DialogContent","contentProps","DialogContentModal","DialogContentNonModal","DialogContentImpl","originalEvent","ctrlLeftClick","hasInteractedOutsideRef","hasPointerDownOutsideRef","trapFocus","onOpenAutoFocus","onCloseAutoFocus","TitleWarning","DescriptionWarning","TITLE_NAME","DialogTitle","titleProps","DESCRIPTION_NAME","DialogDescription","descriptionProps","CLOSE_NAME","DialogClose","closeProps","TITLE_WARNING_NAME","WarningProvider","useWarningContext","titleId","titleWarningContext","MESSAGE","DESCRIPTION_WARNING_NAME","descriptionId","describedById","Root","Overlay","Content","Title","Description","Close","VISUALLY_HIDDEN_STYLES","NAME","VisuallyHidden","modalOverlayStyles","modalContainerStyles","modalCloseButtonStyles","modalTitleStyles","modalDescriptionStyles","modalContentStyles","modalFooterStyles","Modal","showCloseButton","closeIcon","primaryAction","closeOnClickOutside","closeOnEsc","overlayClassName","contentClassName","footerClassName","primaryButtonRef","secondaryButtonRef","handleOpenChange","newOpen","handlePrimaryAction","handleSecondaryAction","handleEscapeKeyDown","hasFooter","Dialog.Root","Dialog.Portal","Dialog.Overlay","Dialog.Content","Dialog.Title","VisuallyHidden.Root","Dialog.Description","Dialog.Close"],"mappings":"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","x_google_ignoreList":[57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94]}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../node_modules/.pnpm/tailwind-merge@3.3.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/utils/cn.ts","../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs","../src/components/atoms/Avatar/Avatar.styles.ts","../src/components/atoms/Avatar/Avatar.tsx","../src/components/atoms/StatusIndicator/StatusIndicator.styles.ts","../src/components/atoms/StatusIndicator/StatusIndicator.tsx","../src/components/atoms/Typography/Typography.tsx","../src/components/atoms/logos/LogoA.tsx","../src/components/atoms/logos/FullLogo.tsx","../src/components/atoms/logos/SignatureA.tsx","../src/components/molecules/ArtifactCard/ArtifactCard.styles.ts","../src/components/molecules/ArtifactCard/ArtifactCard.tsx","../src/components/molecules/Breadcrumbs/Breadcrumbs.styles.ts","../src/components/molecules/Breadcrumbs/Breadcrumbs.tsx","../src/components/molecules/Button/Button.styles.ts","../src/components/molecules/Button/Button.tsx","../src/components/molecules/ChatFile/ChatFile.styles.ts","../src/components/molecules/ChatFile/ChatFile.tsx","../src/components/molecules/Checkbox/Checkbox.styles.ts","../src/components/molecules/Checkbox/Checkbox.tsx","../src/components/molecules/CircularProgress/CircularProgress.styles.ts","../src/components/molecules/CircularProgress/CircularProgress.tsx","../src/hooks/useClickOutside.ts","../src/components/molecules/Dropdown/Dropdown.styles.ts","../src/components/molecules/Dropdown/Dropdown.tsx","../src/components/molecules/Input/Input.styles.ts","../src/components/molecules/Input/Input.tsx","../src/components/molecules/LoadingSpinner/LoadingSpinner.styles.ts","../src/components/molecules/LoadingSpinner/LoadingSpinner.tsx","../src/components/molecules/MessageBubble/MessageBubble.styles.ts","../src/components/molecules/MessageBubble/MessageBubble.tsx","../src/components/molecules/ProgressBar/ProgressBar.styles.ts","../src/components/molecules/ProgressBar/ProgressBar.tsx","../src/components/molecules/RangeInput/RangeInput.styles.ts","../src/components/molecules/RangeInput/RangeInput.tsx","../src/components/molecules/SidebarItem/SidebarItem.styles.ts","../src/components/molecules/SidebarItem/SidebarItem.tsx","../src/components/molecules/Tag/Tag.styles.ts","../src/components/molecules/Tag/Tag.tsx","../src/components/molecules/Tabs/Tabs.styles.ts","../src/components/molecules/Tabs/Tabs.tsx","../src/components/molecules/TextArea/TextArea.styles.ts","../src/components/molecules/TextArea/TextArea.tsx","../src/components/molecules/Timestamp/Timestamp.styles.ts","../src/components/molecules/Timestamp/Timestamp.tsx","../src/components/molecules/Toast/Toast.styles.ts","../src/components/molecules/Toast/Toast.tsx","../src/components/molecules/Toggle/Toggle.styles.ts","../src/components/molecules/Toggle/Toggle.tsx","../src/components/molecules/StatusMessage/StatusMessage.styles.ts","../src/components/molecules/StatusMessage/StatusMessage.tsx","../src/components/molecules/AutopilotAction/AutopilotAction.styles.ts","../src/components/molecules/AutopilotAction/AutopilotAction.tsx","../src/components/molecules/Tooltip/Tooltip.styles.ts","../src/components/molecules/Tooltip/Tooltip.tsx","../src/components/organisms/ChatInput/ChatInput.styles.ts","../src/components/organisms/ChatInput/ChatInput.tsx","../src/components/organisms/ConversationHeader/ConversationHeader.styles.ts","../src/components/organisms/ConversationHeader/ConversationHeader.tsx","../node_modules/.pnpm/@radix-ui+primitive@1.1.3/node_modules/@radix-ui/primitive/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-compose-refs@1.1.2_@types+react@18.3.27_react@18.3.1/node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-context@1.1.2_@types+react@18.3.27_react@18.3.1/node_modules/@radix-ui/react-context/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.1.1_@types+react@18.3.27_react@18.3.1/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-id@1.1.1_@types+react@18.3.27_react@18.3.1/node_modules/@radix-ui/react-id/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.2.2_@types+react@18.3.27_react@18.3.1/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-slot@1.2.3_@types+react@18.3.27_react@18.3.1/node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-primitive@2.1.3_@types+react-dom@18.3.7_@types+react@18.3.27__@types+re_fcd3de21280e20c51ab14304cef2fe55/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-callback-ref@1.1.1_@types+react@18.3.27_react@18.3.1/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-escape-keydown@1.1.1_@types+react@18.3.27_react@18.3.1/node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-dismissable-layer@1.1.11_@types+react-dom@18.3.7_@types+react@18.3.27___ef32cd5833e4d18b8335c2f21b9ac2fa/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-focus-scope@1.1.7_@types+react-dom@18.3.7_@types+react@18.3.27__@types+_079b38391d94963b8fbac89fb53f156c/node_modules/@radix-ui/react-focus-scope/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-portal@1.1.9_@types+react-dom@18.3.7_@types+react@18.3.27__@types+react_a95d18b6a60dc8d181a971a9b89b86b6/node_modules/@radix-ui/react-portal/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-presence@1.1.5_@types+react-dom@18.3.7_@types+react@18.3.27__@types+rea_64d32f1aa8205b8137d1ae7fefc406b4/node_modules/@radix-ui/react-presence/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-focus-guards@1.1.3_@types+react@18.3.27_react@18.3.1/node_modules/@radix-ui/react-focus-guards/dist/index.mjs","../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@18.3.27_react@18.3.1/node_modules/use-callback-ref/dist/es2015/assignRef.js","../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@18.3.27_react@18.3.1/node_modules/use-callback-ref/dist/es2015/useRef.js","../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@18.3.27_react@18.3.1/node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../node_modules/.pnpm/use-sidecar@1.1.3_@types+react@18.3.27_react@18.3.1/node_modules/use-sidecar/dist/es2015/medium.js","../node_modules/.pnpm/use-sidecar@1.1.3_@types+react@18.3.27_react@18.3.1/node_modules/use-sidecar/dist/es2015/exports.js","../node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/medium.js","../node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/UI.js","../node_modules/.pnpm/get-nonce@1.0.1/node_modules/get-nonce/dist/es2015/index.js","../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@18.3.27_react@18.3.1/node_modules/react-style-singleton/dist/es2015/singleton.js","../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@18.3.27_react@18.3.1/node_modules/react-style-singleton/dist/es2015/hook.js","../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@18.3.27_react@18.3.1/node_modules/react-style-singleton/dist/es2015/component.js","../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll-bar/dist/es2015/component.js","../node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/sidecar.js","../node_modules/.pnpm/react-remove-scroll@2.7.1_@types+react@18.3.27_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/Combination.js","../node_modules/.pnpm/aria-hidden@1.2.6/node_modules/aria-hidden/dist/es2015/index.js","../node_modules/.pnpm/@radix-ui+react-dialog@1.1.15_@types+react-dom@18.3.7_@types+react@18.3.27__@types+reac_714ecc194868bb6245bac079a4c1dd41/node_modules/@radix-ui/react-dialog/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-visually-hidden@1.2.3_@types+react-dom@18.3.7_@types+react@18.3.27__@ty_1b568180cc69792ef5dc460e0a38e386/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs","../src/components/organisms/Modal/Modal.styles.ts","../src/components/organisms/Modal/Modal.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n for (const classGroupId in classGroups) {\n processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + MODIFIER_SEPARATOR_LENGTH;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n } else if (currentCharacter === '(') {\n parenDepth++;\n } else if (currentCharacter === ')') {\n parenDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);\n const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {\n isExternal: true,\n modifiers: [],\n hasImportantModifier: false,\n baseClassName: className,\n maybePostfixModifierPosition: undefined\n };\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\nconst stripImportantModifier = baseClassName => {\n if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(0, baseClassName.length - 1);\n }\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(1);\n }\n return baseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));\n const sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];\n if (isPositionSensitive) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n };\n return sortModifiers;\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import { cva } from 'class-variance-authority';\n\nexport const avatarContainerStyles = cva(\n 'relative inline-flex items-center justify-center shrink-0 overflow-hidden',\n {\n variants: {\n shape: {\n circular: 'rounded-full',\n square: '',\n },\n size: {\n small: 'size-[16px]',\n big: 'size-[32px]',\n },\n },\n compoundVariants: [\n {\n shape: 'square',\n size: 'small',\n className: 'rounded-[4px]',\n },\n {\n shape: 'square',\n size: 'big',\n className: 'rounded-[8px]',\n },\n ],\n defaultVariants: {\n shape: 'circular',\n size: 'small',\n },\n }\n);\n\nexport const avatarTextStyles = cva(\n 'font-[\"Inter\",sans-serif] font-normal text-center text-[var(--color-blue-800)]',\n {\n variants: {\n size: {\n small: 'text-[8px] leading-[16px]',\n big: 'text-[16px] leading-[24px]',\n },\n },\n defaultVariants: {\n size: 'small',\n },\n }\n);\n\nexport const avatarImageStyles = cva('absolute inset-0 w-full h-full object-cover');\n\n","// React\nimport { HTMLAttributes, forwardRef, useState, useMemo } from 'react';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport {\n avatarContainerStyles,\n avatarTextStyles,\n avatarImageStyles,\n} from './Avatar.styles';\n\nexport interface AvatarProps extends HTMLAttributes<HTMLDivElement> {\n /** The type of avatar to display */\n type?: 'text' | 'image';\n /** The shape of the avatar */\n shape?: 'circular' | 'square';\n /** The size of the avatar */\n size?: 'small' | 'big';\n /** The initials to display when type is 'text' */\n initials?: string;\n /** The image source URL when type is 'image' */\n src?: string;\n /** Alt text for the image */\n alt?: string;\n /** Fallback initials to show when image fails to load */\n fallbackInitials?: string;\n}\n\n/**\n * Generates initials from a name string\n * Takes the first letter of the first two words\n */\nconst generateInitials = (name: string): string => {\n const words = name.trim().split(/\\s+/);\n if (words.length >= 2) {\n return (words[0][0] + words[1][0]).toUpperCase();\n }\n return name.slice(0, 2).toUpperCase();\n};\n\n/**\n * Generates a random placeholder image URL from picsum.photos\n */\nconst getPlaceholderImage = (seed: number, size: number): string => {\n return `https://picsum.photos/seed/${seed}/${size}/${size}`;\n};\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(\n (\n {\n className,\n type = 'text',\n shape = 'circular',\n size = 'small',\n initials = 'AR',\n src,\n alt = 'Avatar',\n fallbackInitials,\n ...props\n },\n ref\n ) => {\n const [imageError, setImageError] = useState(false);\n\n // Generate a stable random seed for placeholder images\n const placeholderSeed = useMemo(() => Math.floor(Math.random() * 1000), []);\n const imageSize = size === 'big' ? 64 : 32; // Use larger size for better quality\n\n // Determine the image source\n const imageSrc = src || getPlaceholderImage(placeholderSeed, imageSize);\n\n // Determine what to display\n const displayInitials = imageError && fallbackInitials\n ? fallbackInitials\n : initials;\n const shouldShowImage = type === 'image' && !imageError;\n\n const handleImageError = () => {\n setImageError(true);\n };\n\n // Background style for text variant (light blue gradient)\n const textBackgroundStyle = {\n backgroundImage:\n 'linear-gradient(90deg, rgba(21, 177, 205, 0.08) 0%, rgba(21, 177, 205, 0.08) 100%), linear-gradient(90deg, rgb(255, 255, 255) 0%, rgb(255, 255, 255) 100%)',\n };\n\n return (\n <div\n ref={ref}\n className={cn(avatarContainerStyles({ shape, size }), className)}\n style={!shouldShowImage ? textBackgroundStyle : undefined}\n role=\"img\"\n aria-label={alt}\n {...props}\n >\n {shouldShowImage ? (\n <img\n src={imageSrc}\n alt={alt}\n className={cn(avatarImageStyles())}\n onError={handleImageError}\n />\n ) : (\n <span className={cn(avatarTextStyles({ size }))}>\n {generateInitials(displayInitials)}\n </span>\n )}\n </div>\n );\n }\n);\n\nAvatar.displayName = 'Avatar';\n\n","import { cva } from 'class-variance-authority';\n\nexport const statusIndicatorContainerStyles = cva(\n 'relative inline-flex items-center justify-center shrink-0',\n {\n variants: {\n size: {\n small: 'w-2 h-2',\n medium: 'w-3 h-3',\n large: 'w-4 h-4',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n }\n);\n\nexport const statusIndicatorDotStyles = cva(\n 'w-full h-full rounded-full',\n {\n variants: {\n variant: {\n success: 'bg-[var(--color-green-1000)]',\n warning: 'bg-[var(--color-orange-800)]',\n error: 'bg-[var(--color-red-1000)]',\n info: 'bg-[var(--color-blue-800)]',\n neutral: 'bg-[var(--color-gray-600)]',\n },\n },\n defaultVariants: {\n variant: 'neutral',\n },\n }\n);\n\nexport const statusIndicatorPingStyles = cva(\n 'absolute w-full h-full rounded-full opacity-75 animate-ping',\n {\n variants: {\n variant: {\n success: 'bg-[var(--color-green-1000)]',\n warning: 'bg-[var(--color-orange-800)]',\n error: 'bg-[var(--color-red-1000)]',\n info: 'bg-[var(--color-blue-800)]',\n neutral: 'bg-[var(--color-gray-600)]',\n },\n },\n defaultVariants: {\n variant: 'neutral',\n },\n }\n);\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { cn } from '@/utils/cn';\nimport {\n statusIndicatorContainerStyles,\n statusIndicatorDotStyles,\n statusIndicatorPingStyles,\n} from './StatusIndicator.styles';\n\nexport interface StatusIndicatorProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'success' | 'warning' | 'error' | 'info' | 'neutral';\n size?: 'small' | 'medium' | 'large';\n animated?: boolean;\n}\n\nexport const StatusIndicator = forwardRef<HTMLDivElement, StatusIndicatorProps>(\n (\n {\n className,\n variant = 'neutral',\n size = 'medium',\n animated = false,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(statusIndicatorContainerStyles({ size }), className)}\n {...props}\n >\n {animated && (\n <span className={statusIndicatorPingStyles({ variant })} />\n )}\n <span className={statusIndicatorDotStyles({ variant })} />\n </div>\n );\n }\n);\n\nStatusIndicator.displayName = 'StatusIndicator';\n\n","// react / next\nimport { ReactNode, ElementType } from 'react';\n\n// utils\nimport { cn } from '@/utils/cn';\n\nexport type TypographyVariant =\n | 'display'\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'small'\n | 'tiny'\n | 'x-small'\n | 'column-header'\n | 'tag';\n\nexport type TypographyWeight =\n | 'thin'\n | 'extralight'\n | 'light'\n | 'regular'\n | 'medium'\n | 'semibold'\n | 'bold'\n | 'black';\n\nexport type TypographyFontFamily = 'serif' | 'sans';\n\nexport interface TypographyProps {\n variant: TypographyVariant;\n as?: ElementType;\n children: ReactNode;\n className?: string;\n color?: 'primary' | 'secondary' | 'inherit';\n weight?: TypographyWeight;\n fontFamily?: TypographyFontFamily;\n}\n\nconst variantClassMap: Record<TypographyVariant, string> = {\n display: 'typography-display',\n h1: 'typography-h1',\n h2: 'typography-h2',\n h3: 'typography-h3',\n h4: 'typography-h4',\n small: 'typography-small',\n tiny: 'typography-tiny',\n 'x-small': 'typography-x-small',\n 'column-header': 'typography-column-header',\n tag: 'typography-tag',\n};\n\nconst defaultElementMap: Record<TypographyVariant, ElementType> = {\n display: 'h1',\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n small: 'p',\n tiny: 'p',\n 'x-small': 'p',\n 'column-header': 'span',\n tag: 'span',\n};\n\nconst colorClassMap = {\n primary: 'text-[var(--color-gray-1000)]',\n secondary: 'text-[var(--color-gray-600)]',\n inherit: '',\n};\n\nconst weightClassMap: Record<TypographyWeight, string> = {\n thin: 'font-thin',\n extralight: 'font-extralight',\n light: 'font-light',\n regular: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n black: 'font-black',\n};\n\nconst fontFamilyClassMap: Record<TypographyFontFamily, string> = {\n serif: '!font-heading',\n sans: '!font-body',\n};\n\nexport const Typography = ({\n variant,\n as,\n children,\n className,\n color = 'primary',\n weight,\n fontFamily,\n}: TypographyProps) => {\n const Component = as || defaultElementMap[variant];\n const variantClass = variantClassMap[variant];\n const colorClass = colorClassMap[color];\n const weightClass = weight ? weightClassMap[weight] : '';\n const fontFamilyClass = fontFamily ? fontFamilyClassMap[fontFamily] : '';\n\n return (\n <Component\n className={cn(\n variantClass,\n colorClass,\n weightClass,\n fontFamilyClass,\n className\n )}\n >\n {children}\n </Component>\n );\n};\n","import React from 'react';\n\nexport type LogoColorVariant =\n | 'dark'\n | 'darkTeal'\n | 'teal'\n | 'lightTeal'\n | 'orange'\n | 'white';\n\nconst colorMap: Record<LogoColorVariant, string> = {\n dark: 'rgba(0, 6, 38, 1)',\n darkTeal: 'rgba(2, 46, 64, 1)',\n teal: 'rgba(21, 177, 205, 1)',\n lightTeal: 'rgba(106, 234, 253, 1)',\n orange: 'rgba(255, 111, 0, 1)',\n white: 'rgba(255, 255, 255, 1)',\n};\n\nexport interface LogoAProps extends React.SVGProps<SVGSVGElement> {\n size?: number | string;\n colorVariant?: LogoColorVariant;\n}\n\nexport const LogoA: React.FC<LogoAProps> = ({\n size = 256,\n colorVariant = 'dark',\n ...props\n}) => {\n const color = colorMap[colorVariant];\n\n return (\n <svg\n {...props}\n width={size}\n height={size}\n viewBox=\"0 0 256 256\"\n fill=\"none\"\n >\n <path\n d=\"M35.2761 209.996L27.7832 218.211H11V227H79.5141V218.211H53.3838L48.1047 212.422L62.2011 175.529H138.132L151.434 212.289L146.041 218.211H120.914V227H206.306V218.211H192.664L187.404 212.441L115.029 30H79.7412L81.3306 34.872L93.5916 64.7535M46.0234 218.211H45.9098L46.9127 215.575L46.0234 218.211ZM126.496 162.633H73.9891L69.4858 157.703L97.7164 88.5402H103.223L113.383 113.951L126.269 146.182L130.923 157.818L126.515 162.652L126.496 162.633ZM131.548 159.06H131.567L133.024 162.652L131.548 159.06Z\"\n fill={color}\n />\n <path\n d=\"M233.477 227C239.841 227 245 221.791 245 215.365C245 208.938 239.841 203.729 233.477 203.729C227.113 203.729 221.954 208.938 221.954 215.365C221.954 221.791 227.113 227 233.477 227Z\"\n fill={color}\n />\n </svg>\n );\n};\n\nLogoA.displayName = 'LogoA';\n","import React from 'react';\n\nexport type LogoColorVariant =\n | 'dark'\n | 'darkTeal'\n | 'teal'\n | 'lightTeal'\n | 'orange'\n | 'white';\n\nconst colorMap: Record<LogoColorVariant, string> = {\n dark: 'rgba(0, 6, 38, 1)',\n darkTeal: 'rgba(2, 46, 64, 1)',\n teal: 'rgba(21, 177, 205, 1)',\n lightTeal: 'rgba(106, 234, 253, 1)',\n orange: 'rgba(255, 111, 0, 1)',\n white: 'rgba(255, 255, 255, 1)',\n};\n\nexport interface FullLogoProps extends React.SVGProps<SVGSVGElement> {\n size?: number | string;\n colorVariant?: LogoColorVariant;\n}\n\nexport const FullLogo: React.FC<FullLogoProps> = ({\n size = 163,\n colorVariant = 'dark',\n ...props\n}) => {\n const color = colorMap[colorVariant];\n // Original aspect ratio is 603:163\n const aspectRatio = 603 / 163;\n const height = typeof size === 'number' ? size : parseFloat(size);\n const width = height * aspectRatio;\n\n return (\n <svg\n {...props}\n width={width}\n height={height}\n viewBox=\"0 0 603 163\"\n fill=\"none\"\n >\n <g clipPath=\"url(#clip0_full_logo)\">\n <path\n d=\"M303.686 142.03C284.282 142.03 267.966 127.819 267.966 105.332C267.966 84.0925 278.722 69.1137 300.637 67.9807L314.384 93.9439H326.694V59.4543H301.96C284.723 59.4543 270.554 65.5226 260.642 75.2972C250.537 85.2639 244.862 99.0905 244.862 114.3C244.862 142.702 267.506 163.019 293.025 163.019C314.615 163.019 330.107 148.156 332.733 127.416C326.406 136.365 315.727 142.049 303.724 142.049L303.686 142.03Z\"\n fill={color}\n />\n <path\n d=\"M481.48 48.6811C490.204 48.6811 497.183 41.4797 497.183 32.9534C497.183 24.427 490.204 17.2256 481.48 17.2256C472.756 17.2256 465.547 24.2157 465.547 32.9534C465.547 41.691 472.526 48.6811 481.48 48.6811Z\"\n fill={color}\n />\n <path\n d=\"M570.942 141.588C550.868 141.588 534.724 126.072 534.724 102.912V101.376H603C603 78.8691 587.949 59.4351 562.87 59.4351C536.047 59.4351 513.787 84.7838 513.787 112.533C513.787 140.282 534.513 163 561.336 163C581.622 163 598.859 150.114 602.348 126.955C594.487 137.229 583.367 141.588 570.942 141.588ZM558.94 69.9202C570.501 69.9202 578.132 79.0996 578.132 92.6381H535.606C538.654 78.005 548.049 69.9202 558.94 69.9202Z\"\n fill={color}\n />\n <path\n d=\"M198.233 79.0995V57.2459L155.476 73.204L172.502 86.5313V148.866L168.073 153.667H146.81L84.8802 0H55.8901L57.7691 4.53204L67.8351 28.8438L19.9402 146.984L13.7856 153.667H0V160.811H56.2736V153.667H34.8187L30.4855 148.962L42.0662 118.947H104.437L115.366 148.847L110.937 153.667H90.3062V160.811H221.26V153.667H198.233V89.1622L213.725 78.0242L230.961 91.2362H240.088V59.4543H230.079C217.118 59.4543 204.847 64.6585 198.233 79.1188V79.0995ZM28.7791 153.667H28.6641L29.4885 151.516L28.7599 153.667H28.7791ZM51.7487 108.462L48.0483 104.448L71.2288 48.1818H75.7537L84.094 68.8448L94.6777 95.0577L98.4932 104.525L94.8694 108.462H51.7487ZM99.0109 105.543H99.03L100.219 108.462L99.0109 105.543Z\"\n fill={color}\n />\n <path\n d=\"M495.668 153.667V57.2459L452.911 73.204L469.918 86.5313V148.866L465.489 153.667H443.344L438.934 148.885V91.5627C438.934 72.7816 429.328 59.4543 411.229 59.4543H407.394C392.995 59.4543 382.737 68.1919 374.895 76.2766H374.799V1.92035L328.764 16.7839L349.05 29.6695V148.866L344.64 153.667H333.404V160.811H390.253V153.667H379.229L374.819 148.866V84.3421C379.401 80.6358 385.728 76.6991 392.707 76.6991C406.014 76.6991 413.223 84.5726 413.223 98.5528V148.866L408.794 153.667H399.706V160.811H514.745V153.667H495.687H495.668Z\"\n fill={color}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_full_logo\">\n <rect width=\"603\" height=\"163\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n};\n\nFullLogo.displayName = 'FullLogo';\n","import React, { useId } from 'react';\n\nexport type LogoColorVariant =\n | 'dark'\n | 'darkTeal'\n | 'teal'\n | 'lightTeal'\n | 'orange'\n | 'white';\n\nconst colorMap: Record<LogoColorVariant, string> = {\n dark: 'rgba(0, 6, 38, 1)',\n darkTeal: 'rgba(2, 46, 64, 1)',\n teal: 'rgba(21, 177, 205, 1)',\n lightTeal: 'rgba(106, 234, 253, 1)',\n orange: 'rgba(255, 111, 0, 1)',\n white: 'rgba(255, 255, 255, 1)',\n};\n\nexport interface SignatureAProps extends React.SVGProps<SVGSVGElement> {\n size?: number | string;\n colorVariant?: LogoColorVariant;\n animated?: boolean;\n animationDuration?: number;\n animationDelay?: number;\n}\n\nexport const SignatureA: React.FC<SignatureAProps> = ({\n size = 329,\n colorVariant = 'dark',\n animated = false,\n animationDuration = 2,\n animationDelay = 0,\n ...props\n}) => {\n const color = colorMap[colorVariant];\n const uniqueId = useId();\n\n // Path length for stroke animation (approximate value)\n const mainPathLength = 2800;\n\n if (animated) {\n return (\n <svg\n {...props}\n width={size}\n height={size}\n viewBox=\"0 0 329 329\"\n fill=\"none\"\n >\n <style>\n {`\n @keyframes drawSignature-${uniqueId.replace(/:/g, '')} {\n 0% {\n stroke-dashoffset: var(--path-length);\n fill-opacity: 0;\n }\n 80% {\n stroke-dashoffset: 0;\n fill-opacity: 0;\n }\n 100% {\n stroke-dashoffset: 0;\n fill-opacity: 1;\n }\n }\n @keyframes drawDot-${uniqueId.replace(/:/g, '')} {\n 0% {\n opacity: 0;\n transform: scale(0);\n }\n 100% {\n opacity: 1;\n transform: scale(1);\n }\n }\n `}\n </style>\n {/* Dot - appears at the end */}\n <path\n d=\"M239.997 257.024C239.13 256.261 238.348 255.328 237.671 254.268C236.994 253.208 236.55 252.126 236.359 251.066C236.169 250.006 236.359 249.179 236.93 248.585C239.659 245.277 243.233 242.118 247.696 239.107C252.138 236.095 256.601 234.59 261.063 234.59C263.2 234.59 264.595 235.375 265.293 236.922C265.97 238.47 266.309 240.018 266.309 241.587C266.309 244.302 265.568 246.443 264.13 247.991C262.692 249.539 260.831 250.854 258.61 251.914C256.389 252.996 254.062 253.907 251.63 254.692C249.198 255.455 247.04 256.24 245.095 257.024L242.768 258.191C241.795 258.191 240.886 257.809 239.997 257.024Z\"\n fill={color}\n style={{\n transformOrigin: '252px 247px',\n animation: `drawDot-${uniqueId.replace(/:/g, '')} 0.3s ease-out ${animationDelay + animationDuration * 0.9}s forwards`,\n opacity: 0,\n }}\n />\n {/* Main signature path */}\n <path\n d=\"M308.102 176.765C306.453 175.663 304.126 174.963 301.123 174.687C298.119 174.411 294.46 174.433 290.167 174.772C285.873 175.111 281.008 175.578 275.594 176.193C273.648 176.405 271.829 176.617 270.179 176.808L245.793 180.942C242.091 181.536 239.003 182.003 236.486 182.406C233.969 182.808 231.558 182.702 229.232 182.13L193.572 185.777C193.952 184.293 194.587 182.893 195.517 181.6C196.469 180.243 197.548 179.161 198.711 178.398C205.099 169.068 211.254 160.056 217.176 151.299C223.077 142.562 228.639 134.102 233.885 125.959L234.752 121.888L253.936 88.6814C253.936 87.3243 254.422 86.2641 255.395 85.4795C256.368 84.7162 257.045 83.4439 257.425 81.7051L260.344 73.2445C260.915 71.6966 261.465 70.0426 261.93 68.2826C262.417 66.5439 262.671 64.5082 262.671 62.1757C262.671 60.8186 262.459 59.1223 262.1 57.0866C261.698 55.051 261.084 53.1426 260.217 51.4038C259.35 49.6438 258.271 48.1595 257.024 46.8872C255.776 45.615 254.168 45 252.243 45C250.89 45 249.388 45.3817 247.738 46.1663C246.089 46.9509 244.439 47.9263 242.789 49.0925C241.139 50.2588 239.595 51.4674 238.136 52.7397C236.677 54.012 235.471 55.0298 234.498 55.7932L207.468 81.7263L206.008 82.5957L192.641 96.2939C192.429 96.2939 192.112 96.3999 191.626 96.5907C191.139 96.7816 190.801 96.8876 190.61 96.8876L122.04 164.763C120.094 164.763 117.493 163.894 114.193 162.134C110.915 160.374 107.023 159.505 102.56 159.505C101.587 159.505 100.53 159.802 99.3666 160.374C98.2033 160.947 97.3361 161.243 96.7439 161.243C95.9613 161.243 95.2422 160.798 94.5654 159.929C93.8885 159.059 92.7887 158.635 91.2236 158.635C86.5704 159.611 83.567 160.183 82.2134 160.374C80.8597 160.586 79.9714 160.671 79.5907 160.671C77.6448 159.886 76.397 159.696 75.8047 160.098C75.2125 160.501 74.7472 160.777 74.3453 160.968C73.7743 160.586 72.3149 160.247 69.9883 159.95C67.6617 159.674 65.5255 159.505 63.6008 159.505C60.682 159.505 56.6634 159.611 51.5449 159.802C46.4053 159.992 41.3715 160.629 36.4434 161.689C31.5153 162.749 27.2005 164.488 23.5203 166.926C19.8401 169.365 18 172.8 18 177.274C18 181.155 18.9518 184.462 20.8976 187.177C22.8435 189.912 25.3181 192.223 28.3215 194.174C31.3249 196.125 34.6667 197.524 38.3469 198.394C42.0271 199.263 45.6016 199.709 49.0915 199.709C51.2277 200.281 53.1524 200.09 54.9079 199.136C54.6964 199.136 55.7328 199.369 57.9536 199.857C60.1744 200.345 62.9451 200.79 66.2235 201.172C69.523 201.553 72.9494 201.999 76.545 202.465C80.1195 202.953 83.0806 203.207 85.4071 203.207L59.5399 232.915L54.0196 239.319C52.8563 240.294 52.4333 241.948 52.7294 244.281C53.0043 246.613 53.6389 247.779 54.6118 247.779C57.1287 247.779 60.3225 246.083 64.193 242.69C68.0636 239.297 72.1457 235.163 76.397 230.307C80.6694 225.451 84.9207 220.51 89.1931 215.464C93.4444 210.417 97.2303 206.24 100.53 202.932C100.911 202.932 101.312 202.974 101.693 203.08C102.074 203.165 102.455 203.228 102.856 203.228C115.822 203.228 127.878 202.847 139.045 202.062C150.192 201.299 160.407 200.896 169.692 200.896C166.985 205.37 164.066 209.929 160.978 214.594C157.89 219.259 154.591 224.115 151.101 229.162L127.285 264.701C125.932 266.842 124.726 268.984 123.648 271.104C122.569 273.225 122.061 275.366 122.061 277.508C122.061 279.056 122.59 280.371 123.648 281.431C124.705 282.491 125.826 283.042 126.989 283.042C129.316 283.042 131.346 282.364 133.081 281.007C134.815 279.65 136.613 278.038 138.453 276.193C140.293 274.349 142.197 272.44 144.121 270.511C146.046 268.56 148.373 267.012 151.08 265.846L182.467 237.007C182.658 236.414 183.102 235.777 183.758 235.12C184.434 234.442 185.259 233.615 186.232 232.639L197.273 223.33C200.192 220.807 202.941 217.881 205.543 214.573C208.166 211.286 209.477 209.145 209.477 208.169C209.477 206.027 208.229 204.967 205.712 204.967C205.331 204.967 204.697 205.116 203.83 205.413C202.962 205.709 201.947 206.346 200.784 207.3L156.896 248.076L146.152 255.646L149.049 251.575C149.832 250.218 151.186 248.034 153.132 245.023C155.056 242.012 157.192 238.725 159.519 235.12C161.846 231.537 164.32 227.805 166.943 223.903C169.566 220.022 172.019 216.418 174.367 213.11C176.693 209.823 178.724 207.045 180.458 204.819C182.193 202.592 183.44 201.278 184.223 200.875C184.604 200.684 185.386 200.493 186.55 200.302C186.803 200.281 187.121 200.281 187.374 200.239L196.871 199.433C201.672 199.009 206.304 198.161 210.746 196.931C215.166 195.68 219.798 194.853 224.6 194.407C226.122 194.301 228.893 193.983 232.891 193.474C236.909 192.965 241.266 192.393 245.941 191.757C250.615 191.142 254.993 190.527 259.075 189.912C263.157 189.297 265.991 188.852 267.599 188.555C269.206 188.258 270.602 188.025 271.787 187.834C272.971 187.664 274.431 187.516 276.165 187.41C276.313 187.41 276.503 187.177 276.651 187.134L281.579 186.583C284.435 186.265 286.888 186.095 288.961 186.095C291.013 186.095 292.514 186.18 293.445 186.392C292.726 188.152 292.112 189.361 291.563 190.039C291.034 190.718 290.59 191.142 290.23 191.333C289.871 191.524 289.659 191.672 289.596 191.757C289.532 191.842 289.532 192.181 289.596 192.796C289.807 194.768 291.647 195.531 295.116 195.15C295.708 195.086 296.491 194.81 297.421 194.323C298.352 193.835 299.325 193.305 300.319 192.732C301.313 192.16 302.286 191.545 303.195 190.909C304.126 190.272 304.782 189.7 305.184 189.191C306.072 188.937 307.299 188.046 308.885 186.477C310.45 184.929 311.169 183.402 311 181.875C310.746 179.628 309.794 177.931 308.145 176.829L308.102 176.765ZM96.7227 190.039C76.5662 189.276 60.9781 188.088 49.9375 186.54C38.8968 184.993 31.5364 181.981 27.8562 177.507C28.6388 176.15 31.3884 175.026 36.1473 174.157C40.885 173.288 46.0246 172.567 51.5449 171.973C57.0653 171.379 62.1414 170.955 66.7946 170.679C71.4477 170.383 74.0704 170.234 74.6415 170.234H79.2946C88.6009 170.807 96.0882 171.4 101.82 171.973C107.531 172.545 111.549 173.033 113.876 173.436L96.7227 190.039ZM147.146 188.576C136.592 188.958 125.488 189.255 113.876 189.446C115.23 187.495 117.366 184.971 120.263 181.875C123.182 178.78 126.376 175.472 129.845 171.973C133.335 168.474 137.015 164.891 140.885 161.201C144.756 157.511 148.436 154.013 151.926 150.705L172.273 129.14C172.654 127.973 173.33 127.401 174.303 127.401L184.181 118.092C185.154 117.71 186.55 116.629 188.411 114.89C190.251 113.151 192.176 111.201 194.206 109.08C196.237 106.96 198.182 104.818 200.023 102.676C201.863 100.535 203.259 98.902 204.231 97.7146L211.211 93.0496C213.919 90.3354 216.541 87.706 219.058 85.1827C221.575 82.6593 224.092 80.3268 226.609 78.1852L231.262 73.5202C233.99 70.9968 236.74 68.8128 239.553 66.968C242.345 65.1232 246.279 62.727 251.313 59.822V63.0239C251.313 66.3318 250.551 70.1062 248.986 74.3896C247.421 78.6729 245.877 82.3625 244.333 85.4583L184.181 180.137C182.446 181.494 180.881 183.445 179.528 185.968C168.487 187.325 157.679 188.194 147.125 188.597L147.146 188.576Z\"\n stroke={color}\n strokeWidth=\"2\"\n fill={color}\n style={\n {\n '--path-length': mainPathLength,\n strokeDasharray: mainPathLength,\n strokeDashoffset: mainPathLength,\n fillOpacity: 0,\n animation: `drawSignature-${uniqueId.replace(/:/g, '')} ${animationDuration}s ease-out ${animationDelay}s forwards`,\n } as React.CSSProperties\n }\n />\n </svg>\n );\n }\n\n return (\n <svg\n {...props}\n width={size}\n height={size}\n viewBox=\"0 0 329 329\"\n fill=\"none\"\n >\n <path\n d=\"M239.997 257.024C239.13 256.261 238.348 255.328 237.671 254.268C236.994 253.208 236.55 252.126 236.359 251.066C236.169 250.006 236.359 249.179 236.93 248.585C239.659 245.277 243.233 242.118 247.696 239.107C252.138 236.095 256.601 234.59 261.063 234.59C263.2 234.59 264.595 235.375 265.293 236.922C265.97 238.47 266.309 240.018 266.309 241.587C266.309 244.302 265.568 246.443 264.13 247.991C262.692 249.539 260.831 250.854 258.61 251.914C256.389 252.996 254.062 253.907 251.63 254.692C249.198 255.455 247.04 256.24 245.095 257.024L242.768 258.191C241.795 258.191 240.886 257.809 239.997 257.024Z\"\n fill={color}\n />\n <path\n d=\"M308.102 176.765C306.453 175.663 304.126 174.963 301.123 174.687C298.119 174.411 294.46 174.433 290.167 174.772C285.873 175.111 281.008 175.578 275.594 176.193C273.648 176.405 271.829 176.617 270.179 176.808L245.793 180.942C242.091 181.536 239.003 182.003 236.486 182.406C233.969 182.808 231.558 182.702 229.232 182.13L193.572 185.777C193.952 184.293 194.587 182.893 195.517 181.6C196.469 180.243 197.548 179.161 198.711 178.398C205.099 169.068 211.254 160.056 217.176 151.299C223.077 142.562 228.639 134.102 233.885 125.959L234.752 121.888L253.936 88.6814C253.936 87.3243 254.422 86.2641 255.395 85.4795C256.368 84.7162 257.045 83.4439 257.425 81.7051L260.344 73.2445C260.915 71.6966 261.465 70.0426 261.93 68.2826C262.417 66.5439 262.671 64.5082 262.671 62.1757C262.671 60.8186 262.459 59.1223 262.1 57.0866C261.698 55.051 261.084 53.1426 260.217 51.4038C259.35 49.6438 258.271 48.1595 257.024 46.8872C255.776 45.615 254.168 45 252.243 45C250.89 45 249.388 45.3817 247.738 46.1663C246.089 46.9509 244.439 47.9263 242.789 49.0925C241.139 50.2588 239.595 51.4674 238.136 52.7397C236.677 54.012 235.471 55.0298 234.498 55.7932L207.468 81.7263L206.008 82.5957L192.641 96.2939C192.429 96.2939 192.112 96.3999 191.626 96.5907C191.139 96.7816 190.801 96.8876 190.61 96.8876L122.04 164.763C120.094 164.763 117.493 163.894 114.193 162.134C110.915 160.374 107.023 159.505 102.56 159.505C101.587 159.505 100.53 159.802 99.3666 160.374C98.2033 160.947 97.3361 161.243 96.7439 161.243C95.9613 161.243 95.2422 160.798 94.5654 159.929C93.8885 159.059 92.7887 158.635 91.2236 158.635C86.5704 159.611 83.567 160.183 82.2134 160.374C80.8597 160.586 79.9714 160.671 79.5907 160.671C77.6448 159.886 76.397 159.696 75.8047 160.098C75.2125 160.501 74.7472 160.777 74.3453 160.968C73.7743 160.586 72.3149 160.247 69.9883 159.95C67.6617 159.674 65.5255 159.505 63.6008 159.505C60.682 159.505 56.6634 159.611 51.5449 159.802C46.4053 159.992 41.3715 160.629 36.4434 161.689C31.5153 162.749 27.2005 164.488 23.5203 166.926C19.8401 169.365 18 172.8 18 177.274C18 181.155 18.9518 184.462 20.8976 187.177C22.8435 189.912 25.3181 192.223 28.3215 194.174C31.3249 196.125 34.6667 197.524 38.3469 198.394C42.0271 199.263 45.6016 199.709 49.0915 199.709C51.2277 200.281 53.1524 200.09 54.9079 199.136C54.6964 199.136 55.7328 199.369 57.9536 199.857C60.1744 200.345 62.9451 200.79 66.2235 201.172C69.523 201.553 72.9494 201.999 76.545 202.465C80.1195 202.953 83.0806 203.207 85.4071 203.207L59.5399 232.915L54.0196 239.319C52.8563 240.294 52.4333 241.948 52.7294 244.281C53.0043 246.613 53.6389 247.779 54.6118 247.779C57.1287 247.779 60.3225 246.083 64.193 242.69C68.0636 239.297 72.1457 235.163 76.397 230.307C80.6694 225.451 84.9207 220.51 89.1931 215.464C93.4444 210.417 97.2303 206.24 100.53 202.932C100.911 202.932 101.312 202.974 101.693 203.08C102.074 203.165 102.455 203.228 102.856 203.228C115.822 203.228 127.878 202.847 139.045 202.062C150.192 201.299 160.407 200.896 169.692 200.896C166.985 205.37 164.066 209.929 160.978 214.594C157.89 219.259 154.591 224.115 151.101 229.162L127.285 264.701C125.932 266.842 124.726 268.984 123.648 271.104C122.569 273.225 122.061 275.366 122.061 277.508C122.061 279.056 122.59 280.371 123.648 281.431C124.705 282.491 125.826 283.042 126.989 283.042C129.316 283.042 131.346 282.364 133.081 281.007C134.815 279.65 136.613 278.038 138.453 276.193C140.293 274.349 142.197 272.44 144.121 270.511C146.046 268.56 148.373 267.012 151.08 265.846L182.467 237.007C182.658 236.414 183.102 235.777 183.758 235.12C184.434 234.442 185.259 233.615 186.232 232.639L197.273 223.33C200.192 220.807 202.941 217.881 205.543 214.573C208.166 211.286 209.477 209.145 209.477 208.169C209.477 206.027 208.229 204.967 205.712 204.967C205.331 204.967 204.697 205.116 203.83 205.413C202.962 205.709 201.947 206.346 200.784 207.3L156.896 248.076L146.152 255.646L149.049 251.575C149.832 250.218 151.186 248.034 153.132 245.023C155.056 242.012 157.192 238.725 159.519 235.12C161.846 231.537 164.32 227.805 166.943 223.903C169.566 220.022 172.019 216.418 174.367 213.11C176.693 209.823 178.724 207.045 180.458 204.819C182.193 202.592 183.44 201.278 184.223 200.875C184.604 200.684 185.386 200.493 186.55 200.302C186.803 200.281 187.121 200.281 187.374 200.239L196.871 199.433C201.672 199.009 206.304 198.161 210.746 196.931C215.166 195.68 219.798 194.853 224.6 194.407C226.122 194.301 228.893 193.983 232.891 193.474C236.909 192.965 241.266 192.393 245.941 191.757C250.615 191.142 254.993 190.527 259.075 189.912C263.157 189.297 265.991 188.852 267.599 188.555C269.206 188.258 270.602 188.025 271.787 187.834C272.971 187.664 274.431 187.516 276.165 187.41C276.313 187.41 276.503 187.177 276.651 187.134L281.579 186.583C284.435 186.265 286.888 186.095 288.961 186.095C291.013 186.095 292.514 186.18 293.445 186.392C292.726 188.152 292.112 189.361 291.563 190.039C291.034 190.718 290.59 191.142 290.23 191.333C289.871 191.524 289.659 191.672 289.596 191.757C289.532 191.842 289.532 192.181 289.596 192.796C289.807 194.768 291.647 195.531 295.116 195.15C295.708 195.086 296.491 194.81 297.421 194.323C298.352 193.835 299.325 193.305 300.319 192.732C301.313 192.16 302.286 191.545 303.195 190.909C304.126 190.272 304.782 189.7 305.184 189.191C306.072 188.937 307.299 188.046 308.885 186.477C310.45 184.929 311.169 183.402 311 181.875C310.746 179.628 309.794 177.931 308.145 176.829L308.102 176.765ZM96.7227 190.039C76.5662 189.276 60.9781 188.088 49.9375 186.54C38.8968 184.993 31.5364 181.981 27.8562 177.507C28.6388 176.15 31.3884 175.026 36.1473 174.157C40.885 173.288 46.0246 172.567 51.5449 171.973C57.0653 171.379 62.1414 170.955 66.7946 170.679C71.4477 170.383 74.0704 170.234 74.6415 170.234H79.2946C88.6009 170.807 96.0882 171.4 101.82 171.973C107.531 172.545 111.549 173.033 113.876 173.436L96.7227 190.039ZM147.146 188.576C136.592 188.958 125.488 189.255 113.876 189.446C115.23 187.495 117.366 184.971 120.263 181.875C123.182 178.78 126.376 175.472 129.845 171.973C133.335 168.474 137.015 164.891 140.885 161.201C144.756 157.511 148.436 154.013 151.926 150.705L172.273 129.14C172.654 127.973 173.33 127.401 174.303 127.401L184.181 118.092C185.154 117.71 186.55 116.629 188.411 114.89C190.251 113.151 192.176 111.201 194.206 109.08C196.237 106.96 198.182 104.818 200.023 102.676C201.863 100.535 203.259 98.902 204.231 97.7146L211.211 93.0496C213.919 90.3354 216.541 87.706 219.058 85.1827C221.575 82.6593 224.092 80.3268 226.609 78.1852L231.262 73.5202C233.99 70.9968 236.74 68.8128 239.553 66.968C242.345 65.1232 246.279 62.727 251.313 59.822V63.0239C251.313 66.3318 250.551 70.1062 248.986 74.3896C247.421 78.6729 245.877 82.3625 244.333 85.4583L184.181 180.137C182.446 181.494 180.881 183.445 179.528 185.968C168.487 187.325 157.679 188.194 147.125 188.597L147.146 188.576Z\"\n fill={color}\n />\n </svg>\n );\n};\n\nSignatureA.displayName = 'SignatureA';\n","import { cva } from 'class-variance-authority';\n\nexport const artifactCardStyles = cva(\n 'group relative flex items-center rounded-[8px] border box-border cursor-pointer w-full overflow-hidden isolate transition-[border-color] duration-300',\n {\n variants: {\n status: {\n normal: 'bg-[var(--color-white)] border-[var(--color-gray-200)]',\n hover: 'border-[var(--color-blue-800)]',\n generating:\n 'bg-[var(--color-white)] border-[var(--color-gray-200)] cursor-default',\n error: 'border-[var(--color-red-1000)]',\n },\n disabled: {\n true: 'opacity-50 cursor-not-allowed pointer-events-none',\n false: '',\n },\n },\n defaultVariants: {\n status: 'normal',\n disabled: false,\n },\n },\n);\n\n// Background layer for hover effect - solid colors instead of gradients\nexport const hoverBackgroundStyles = cva(\n 'absolute inset-0 -z-10 transition-opacity duration-300',\n {\n variants: {\n status: {\n normal: 'opacity-0 group-hover:opacity-100',\n hover: 'opacity-100',\n generating: 'opacity-0',\n error: 'opacity-100',\n },\n },\n defaultVariants: {\n status: 'normal',\n },\n },\n);\n\n// Solid background color styles\nexport const animatedGradientStyles = cva('absolute inset-0', {\n variants: {\n status: {\n normal: 'bg-[var(--color-blue-200)]',\n hover: 'bg-[var(--color-blue-200)]',\n generating: '',\n error: 'bg-[var(--color-red-200)]',\n },\n },\n defaultVariants: {\n status: 'normal',\n },\n});\n\nexport const previewContainerStyles = cva('flex gap-2 h-[75px] shrink-0', {\n variants: {\n status: {\n normal: 'p-2 items-end',\n hover: 'p-2 items-end',\n generating: 'px-4 py-2 items-center',\n error: 'px-4 py-2 items-center',\n },\n },\n defaultVariants: {\n status: 'normal',\n },\n});\n\nexport const previewBoxStyles = cva(\n 'relative -bottom-2 w-[60px] h-[66px] bg-[var(--color-gray-50)] border border-[var(--color-gray-200)] border-b-0 rounded-t-[4px] overflow-hidden transition-transform duration-300 group-hover:opacity-90 group-hover:shadow-sm',\n);\n\nexport const previewBoxInnerStyles = cva(\n 'w-full h-full bg-[var(--color-blue-200)]/30 p-2 space-y-2 flex flex-col items-start justify-start gap-1',\n);\n\nexport const skeletonLineStyles = cva(\n 'h-1 bg-[var(--color-gray-200)] rounded-full origin-left',\n);\n\nexport const contentContainerStyles = cva(\n 'flex flex-col gap-[4px] grow items-start p-4 min-w-0',\n);\n\nexport const titleStyles = cva(\n 'font-medium text-[14px] leading-[20px] text-[var(--color-blue-1000)]',\n);\n\nexport const subtitleStyles = cva(\n 'text-[12px] leading-[16px] text-[var(--color-gray-600)]',\n);\n\nexport const iconContainerStyles = cva(\n 'px-4 overflow-hidden flex items-center w-[56px] relative',\n);\n\nexport const iconActiveStyles = cva(\n 'absolute w-6 h-6 text-[var(--color-blue-800)]',\n);\n\nexport const iconInactiveStyles = cva('w-6 h-6 text-[var(--color-gray-200)]');\n\nexport const iconStyles = cva('w-4 h-4 shrink-0 transition-all duration-300', {\n variants: {\n status: {\n normal:\n 'text-[var(--color-blue-1000)] group-hover:text-[var(--color-blue-800)] group-hover:translate-x-0.5',\n hover: 'text-[var(--color-blue-800)] translate-x-0.5',\n generating: 'text-[var(--color-gray-600)] animate-spin',\n error: 'text-[var(--color-blue-1000)] group-hover:rotate-[-20deg]',\n },\n },\n defaultVariants: {\n status: 'normal',\n },\n});\n\nexport const errorIconStyles = cva(\n 'w-4 h-4 shrink-0 text-[var(--color-red-1000)] transition-transform duration-300 group-hover:scale-110',\n);\n","// React\nimport { forwardRef, useState, useCallback, useMemo } from 'react';\nimport { motion } from 'framer-motion';\n\n// Components\nimport {\n Loader,\n TriangleAlert,\n RotateCcw,\n ArrowUp,\n} from '@/components/atoms/icons';\n\n// Styles\nimport {\n artifactCardStyles,\n hoverBackgroundStyles,\n animatedGradientStyles,\n previewContainerStyles,\n previewBoxStyles,\n previewBoxInnerStyles,\n contentContainerStyles,\n titleStyles,\n subtitleStyles,\n iconContainerStyles,\n iconStyles,\n errorIconStyles,\n skeletonLineStyles,\n iconActiveStyles,\n iconInactiveStyles,\n} from './ArtifactCard.styles';\n\n// Misc\nimport { cn } from '@/utils/cn';\n\n// Types\nimport type { ArtifactCardProps, ArtifactCardStatus } from './ArtifactCard.types';\n\n// Animation variants\nconst skeletonLineVariants = {\n rest: { scaleX: 1 },\n hover: { scaleX: [0, 1] },\n};\n\nconst contentSlideVariants = {\n rest: { x: 0 },\n hover: { x: 4 },\n};\n\nconst iconActiveVariants = {\n rest: { x: -20, opacity: 0 },\n hover: { x: 0, opacity: 1 },\n};\n\nconst iconInactiveVariants = {\n rest: { x: 0, opacity: 1 },\n hover: { x: 20, opacity: 0 },\n};\n\n// Skeleton line widths for the document preview animation\nconst SKELETON_WIDTHS = [100, 66, 75, 50];\n\nexport const ArtifactCard = forwardRef<HTMLDivElement, ArtifactCardProps>(\n (\n {\n title,\n subtitle,\n status: controlledStatus,\n onClick,\n onActionClick,\n className,\n disabled = false,\n },\n ref,\n ) => {\n const [isHovered, setIsHovered] = useState(false);\n\n // Determine effective status - controlled or internal hover state\n const effectiveStatus: ArtifactCardStatus =\n controlledStatus || (isHovered && !disabled ? 'hover' : 'normal');\n\n // Memoize animation state\n const animationState = useMemo(() => {\n if (effectiveStatus === 'generating' || effectiveStatus === 'error')\n return 'rest';\n return isHovered ? 'hover' : 'rest';\n }, [effectiveStatus, isHovered]);\n\n const handleMouseEnter = useCallback(() => {\n if (!controlledStatus && !disabled) {\n setIsHovered(true);\n }\n }, [controlledStatus, disabled]);\n\n const handleMouseLeave = useCallback(() => {\n if (!controlledStatus && !disabled) {\n setIsHovered(false);\n }\n }, [controlledStatus, disabled]);\n\n const handleClick = useCallback(() => {\n if (!disabled && onClick) {\n onClick();\n }\n }, [disabled, onClick]);\n\n const handleActionClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!disabled && onActionClick) {\n onActionClick();\n }\n },\n [disabled, onActionClick],\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleClick();\n }\n },\n [handleClick],\n );\n\n // Render preview with skeleton animation\n const renderPreview = () => {\n if (effectiveStatus === 'generating') {\n return (\n <div className={previewContainerStyles({ status: 'generating' })}>\n <Loader\n size={16}\n className=\"text-[var(--color-gray-600)] animate-spin\"\n />\n </div>\n );\n }\n\n if (effectiveStatus === 'error') {\n return (\n <div className={previewContainerStyles({ status: 'error' })}>\n <TriangleAlert size={16} className={errorIconStyles()} />\n </div>\n );\n }\n\n // Normal or hover - show animated skeleton preview\n return (\n <div className={previewContainerStyles({ status: effectiveStatus })}>\n <div className={previewBoxStyles()}>\n <motion.div\n className={previewBoxInnerStyles()}\n variants={{\n rest: {},\n hover: { transition: { staggerChildren: 0.1 } },\n }}\n >\n {SKELETON_WIDTHS.map((width, i) => (\n <motion.div\n key={i}\n className={skeletonLineStyles()}\n style={{ width: `${width}%` }}\n variants={skeletonLineVariants}\n transition={{ duration: 0.4, ease: 'easeInOut' }}\n />\n ))}\n </motion.div>\n </div>\n </div>\n );\n };\n\n // Render action icon with swap animation\n const renderActionIcon = () => {\n if (effectiveStatus === 'generating') {\n return null;\n }\n\n if (effectiveStatus === 'error') {\n return (\n <button\n type=\"button\"\n onClick={handleActionClick}\n className=\"focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-blue-800)] focus-visible:ring-offset-2 rounded-sm\"\n aria-label=\"Retry\"\n >\n <RotateCcw size={16} className={iconStyles({ status: 'error' })} />\n </button>\n );\n }\n\n // Icon swap animation\n return (\n <>\n <motion.div\n className={iconActiveStyles()}\n variants={iconActiveVariants}\n transition={{ duration: 0.3, ease: 'backOut' }}\n >\n <ArrowUp size={24} className=\"rotate-90\" />\n </motion.div>\n <motion.div\n className={iconInactiveStyles()}\n variants={iconInactiveVariants}\n transition={{ duration: 0.3 }}\n >\n <ArrowUp size={24} className=\"rotate-90\" />\n </motion.div>\n </>\n );\n };\n\n return (\n <motion.div\n ref={ref}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n className={cn(\n artifactCardStyles({\n status: effectiveStatus,\n disabled,\n }),\n className,\n )}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n aria-disabled={disabled}\n aria-label={`${title} - ${subtitle}${\n effectiveStatus === 'error' ? ' - Error occurred' : ''\n }${effectiveStatus === 'generating' ? ' - Generating' : ''}`}\n initial=\"rest\"\n whileHover=\"hover\"\n animate={animationState}\n >\n {/* Background Layer - solid color */}\n <div className={hoverBackgroundStyles({ status: effectiveStatus })}>\n <div className={animatedGradientStyles({ status: effectiveStatus })} />\n </div>\n\n {/* Preview Section */}\n {renderPreview()}\n\n {/* Content Section with slide animation */}\n <motion.div\n className={contentContainerStyles()}\n variants={contentSlideVariants}\n >\n <p className={titleStyles()} title={title}>\n {title}\n </p>\n <p className={subtitleStyles()} title={subtitle}>\n {subtitle}\n </p>\n </motion.div>\n\n {/* Action Icon Section with swap animation */}\n <div className={iconContainerStyles()}>{renderActionIcon()}</div>\n </motion.div>\n );\n },\n);\n\nArtifactCard.displayName = 'ArtifactCard';\n","import { cva } from 'class-variance-authority';\n\nexport const breadcrumbsStyles = cva('flex items-center flex-wrap gap-2', {\n variants: {\n size: {\n small: 'text-[0.875rem] leading-[1.25rem]', // typography-tiny\n medium: 'text-[1rem] leading-[1.5rem]', // typography-small\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n});\n\nexport const breadcrumbItemStyles = cva(\n 'inline-flex items-center gap-2 transition-colors duration-200',\n {\n variants: {\n state: {\n default:\n 'text-[var(--color-gray-600)] hover:text-[var(--color-blue-1000)] cursor-pointer',\n active: 'text-[var(--color-blue-1000)] font-medium cursor-default',\n inactive: 'text-[var(--color-gray-600)] cursor-default',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n }\n);\n\nexport const separatorStyles = cva(\n 'text-[var(--color-gray-600)] flex items-center justify-center'\n);\n\n","import { ReactNode } from 'react';\n\nimport {\n breadcrumbsStyles,\n breadcrumbItemStyles,\n separatorStyles,\n} from './Breadcrumbs.styles';\n\nimport { cn } from '@/utils/cn';\n\nimport { ChevronRight } from '@/components/atoms/icons';\n\nexport interface BreadcrumbItem {\n label: string;\n href?: string;\n onClick?: () => void;\n icon?: ReactNode;\n}\n\nexport interface BreadcrumbsProps {\n items: BreadcrumbItem[];\n separator?: ReactNode;\n className?: string;\n size?: 'small' | 'medium';\n}\n\nexport const Breadcrumbs = ({\n items,\n separator = <ChevronRight size={16} />,\n className,\n size = 'medium',\n}: BreadcrumbsProps) => {\n return (\n <nav\n aria-label=\"Breadcrumb\"\n className={cn(breadcrumbsStyles({ size }), className)}\n >\n <ol className=\"flex items-center flex-wrap gap-2\">\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n let content;\n\n if (isLast) {\n content = (\n <span\n className={breadcrumbItemStyles({ state: 'active' })}\n aria-current=\"page\"\n >\n {item.icon}\n {item.label}\n </span>\n );\n } else if (item.href) {\n content = (\n <a\n href={item.href}\n className={breadcrumbItemStyles({ state: 'default' })}\n onClick={item.onClick}\n >\n {item.icon}\n {item.label}\n </a>\n );\n } else if (item.onClick) {\n content = (\n <button\n type=\"button\"\n className={breadcrumbItemStyles({ state: 'default' })}\n onClick={item.onClick}\n >\n {item.icon}\n {item.label}\n </button>\n );\n } else {\n content = (\n <span className={breadcrumbItemStyles({ state: 'inactive' })}>\n {item.icon}\n {item.label}\n </span>\n );\n }\n\n return (\n <li\n key={`${item.label}-${index}`}\n className=\"flex items-center gap-2\"\n >\n {content}\n {!isLast && (\n <span className={separatorStyles()} aria-hidden=\"true\">\n {separator}\n </span>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n};\n","import { cva } from 'class-variance-authority';\n\nexport const buttonStyles = cva(\n 'inline-flex items-center justify-center rounded-[8px] font-normal transition-colors duration-200 box-border cursor-pointer disabled:cursor-not-allowed disabled:opacity-50 focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-2',\n {\n variants: {\n variant: {\n primary:\n 'bg-[var(--color-white)] border border-[var(--color-blue-1000)] text-[var(--color-blue-1000)] hover:bg-[var(--color-blue-200)] active:bg-[var(--color-blue-400)]',\n secondary:\n 'bg-[rgba(255,255,255,0.01)] border border-[var(--color-gray-600)] text-[var(--color-gray-600)] hover:bg-[var(--color-gray-100)] hover:border-[var(--color-gray-800)] hover:text-[var(--color-gray-800)] active:bg-[var(--color-gray-200)] active:border-[var(--color-gray-1000)] active:text-[var(--color-gray-1000)]',\n tertiary:\n 'bg-transparent border border-transparent text-[var(--color-blue-1000)] hover:bg-[var(--color-gray-100)] active:bg-[var(--color-gray-200)]',\n cta:\n 'bg-[var(--color-blue-800)] border border-transparent text-[var(--color-white)] hover:bg-[var(--color-blue-400)] active:bg-[var(--color-blue-1000)]',\n danger:\n 'bg-[var(--color-red-1000)] border border-transparent text-[var(--color-white)] hover:bg-[#e54545] active:bg-[#cc3d3d] focus-visible:ring-[var(--color-red-200)]',\n },\n tone: {\n brand: '',\n neutral: '',\n },\n size: {\n small: 'px-2 py-2 gap-1 text-[0.75rem] leading-[1rem]', // 12px/16px, 8px padding\n medium: 'px-3 py-2 gap-1 text-[1rem] leading-[1.5rem]', // 16px/24px, 12px/8px padding\n large: 'px-4 py-3 gap-1 text-[1rem] leading-[1.5rem]', // 16px/24px, 16px/12px padding\n },\n },\n compoundVariants: [\n // Primary Neutral Overrides\n {\n variant: 'primary',\n tone: 'neutral',\n className:\n 'bg-[rgba(0,6,38,0.9)] border-transparent text-[var(--color-white)] hover:bg-[rgba(0,6,38,0.8)] active:bg-[rgba(0,6,38,1)]',\n },\n // Secondary Neutral Overrides\n {\n variant: 'secondary',\n tone: 'neutral',\n className:\n 'bg-[rgba(255,255,255,0.01)] border-[rgba(0,13,77,0.45)] text-[rgba(0,9,51,0.65)] hover:bg-[rgba(0,13,77,0.05)] hover:border-[rgba(0,13,77,0.65)] hover:text-[rgba(0,9,51,0.85)] active:bg-[rgba(0,13,77,0.1)] active:border-[rgba(0,13,77,0.85)] active:text-[rgba(0,9,51,1)]',\n },\n // Tertiary Neutral Overrides\n {\n variant: 'tertiary',\n tone: 'neutral',\n className:\n 'text-[rgba(0,9,51,0.65)] hover:bg-[rgba(0,13,77,0.05)] active:bg-[rgba(0,13,77,0.1)] hover:text-[rgba(0,9,51,0.85)] active:text-[rgba(0,9,51,1)]',\n },\n ],\n defaultVariants: {\n variant: 'primary',\n tone: 'brand',\n size: 'medium',\n },\n }\n);\n","import { ButtonHTMLAttributes, ReactNode, forwardRef } from 'react';\nimport { cn } from '@/utils/cn';\nimport { buttonStyles } from './Button.styles';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'primary' | 'secondary' | 'tertiary' | 'cta' | 'danger';\n tone?: 'brand' | 'neutral';\n size?: 'small' | 'medium' | 'large';\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = 'primary',\n tone = 'brand',\n size = 'medium',\n startIcon,\n endIcon,\n children,\n disabled,\n ...props\n },\n ref\n ) => {\n const iconSize = size === 'small' ? 13 : size === 'large' ? 20 : 16;\n\n return (\n <button\n ref={ref}\n className={cn(buttonStyles({ variant, tone, size }), className)}\n disabled={disabled}\n {...props}\n >\n {startIcon && (\n <span\n className=\"flex items-center justify-center shrink-0\"\n style={{ width: iconSize, height: iconSize }}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className=\"flex items-center justify-center shrink-0\"\n style={{ width: iconSize, height: iconSize }}\n >\n {endIcon}\n </span>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n","import { cva } from 'class-variance-authority';\n\nexport const chatFileContainerStyles = cva(\n 'relative inline-flex items-center px-1 py-1 gap-1 rounded-[5px] border overflow-hidden transition-colors',\n {\n variants: {\n status: {\n uploading: 'border-[var(--color-gray-600)] bg-[var(--color-gray-50)]',\n processing: 'border-[var(--color-gray-600)] bg-[var(--color-gray-50)]',\n done: 'border-[var(--color-gray-200)] bg-[var(--color-white)]',\n error: 'border-[var(--color-gray-200)] bg-[var(--color-white)]',\n },\n },\n defaultVariants: {\n status: 'done',\n },\n },\n);\n\nexport const chatFileNameStyles = cva(\n 'truncate text-[0.75rem] leading-[1rem] font-normal',\n {\n variants: {\n status: {\n uploading: 'text-[var(--color-gray-600)]',\n processing: 'text-[var(--color-gray-800)]',\n done: 'text-[var(--color-gray-800)]',\n error: 'text-[var(--color-gray-800)]',\n },\n },\n defaultVariants: {\n status: 'done',\n },\n },\n);\n\nexport const chatFileIconStyles = cva('shrink-0', {\n variants: {\n status: {\n uploading: 'text-[var(--color-blue-800)]',\n processing: 'text-[var(--color-blue-800)]',\n done: 'text-[var(--color-gray-600)]',\n error: 'text-[var(--color-red-1000)]',\n },\n },\n defaultVariants: {\n status: 'done',\n },\n});\n\nexport const progressBarStyles = cva(\n 'absolute top-0 left-0 bottom-0 bg-[var(--color-gray-200)] z-0 rounded-bl-[4px] rounded-tl-[4px]',\n {\n variants: {\n status: {\n uploading: 'opacity-100',\n processing: 'opacity-100',\n done: 'opacity-0',\n error: 'opacity-0',\n },\n },\n defaultVariants: {\n status: 'uploading',\n },\n },\n);\n","// react / next\nimport React from 'react';\n\n// components\nimport { motion } from 'framer-motion';\nimport { FileText, Loader, ArrowUp, X, TriangleAlert } from '@/components/atoms/icons';\n\n// styles\nimport {\n chatFileContainerStyles,\n chatFileNameStyles,\n chatFileIconStyles,\n progressBarStyles,\n} from './ChatFile.styles';\n\n// misc\nimport { cn } from '@/utils/cn';\n\nexport enum FileStatus {\n Uploading = 'uploading',\n Processing = 'processing',\n Done = 'done',\n Error = 'error',\n}\n\nexport interface ChatFileProps {\n filename: string;\n status?: FileStatus;\n progress?: number;\n onDelete?: () => void;\n className?: string;\n}\n\nexport const ChatFile: React.FC<ChatFileProps> = ({\n filename,\n status = FileStatus.Done,\n progress = 0,\n onDelete,\n className,\n}) => {\n const isUploading = status === FileStatus.Uploading;\n const isProcessing = status === FileStatus.Processing;\n const isError = status === FileStatus.Error;\n\n const getStatusVariant = () => {\n if (isUploading) return 'uploading';\n if (isProcessing) return 'processing';\n if (isError) return 'error';\n return 'done';\n };\n\n const statusVariant = getStatusVariant();\n\n const renderIcon = () => {\n if (isUploading) return <ArrowUp size={12} className={chatFileIconStyles({ status: statusVariant })} />;\n if (isProcessing) return <Loader size={12} className={cn(chatFileIconStyles({ status: statusVariant }), \"animate-spin\")} />;\n if (isError) return <TriangleAlert size={12} className={chatFileIconStyles({ status: statusVariant })} />;\n return <FileText size={12} className={chatFileIconStyles({ status: statusVariant })} />;\n };\n\n return (\n <div className=\"relative inline-block group\">\n <div className={cn(chatFileContainerStyles({ status: statusVariant }), className)}>\n {/* Progress Bar Background */}\n {(isUploading || isProcessing) && (\n <motion.div\n className={progressBarStyles({ status: statusVariant })}\n initial={{ width: '0%' }}\n animate={{ width: `${progress}%` }}\n transition={{ duration: 0.3, ease: \"easeOut\" }}\n />\n )}\n\n {/* Content */}\n <div className=\"relative z-10 flex items-center gap-1 pr-1\">\n <div className={cn(\n \"flex items-center justify-center shrink-0 p-1 rounded-[2px]\",\n isError && \"bg-[#fff2f2]\"\n )}>\n {renderIcon()}\n </div>\n\n <span className={chatFileNameStyles({ status: statusVariant })} title={filename}>\n {filename}\n </span>\n </div>\n </div>\n\n {/* Delete Button - Shows on Hover (only when not uploading/processing) */}\n {onDelete && !isUploading && !isProcessing && (\n <motion.button\n onClick={onDelete}\n className=\"absolute -top-[6px] -right-[6px] hidden group-hover:flex items-center justify-center bg-[var(--color-white)] border border-[var(--color-gray-200)] rounded-[8px] p-[2px] focus:outline-none focus:ring-2 focus:ring-[var(--color-blue-800)] shrink-0 z-20\"\n aria-label=\"Remove file\"\n initial={{ scale: 0, opacity: 0 }}\n whileInView={{ scale: 1, opacity: 1 }}\n whileHover={{ scale: 1.1 }}\n whileTap={{ scale: 0.95 }}\n transition={{\n scale: { type: \"spring\", stiffness: 400, damping: 17 },\n opacity: { duration: 0.2 }\n }}\n >\n <X size={10} className=\"text-[var(--color-gray-800)]\" />\n </motion.button>\n )}\n </div>\n );\n};\n","import { cva } from 'class-variance-authority';\n\nexport const checkboxLabelStyles = cva(\n 'inline-flex items-center gap-2 cursor-pointer select-none group disabled:cursor-not-allowed disabled:opacity-50 w-fit',\n {\n variants: {\n size: {\n medium: 'text-[1rem] leading-[1.5rem] gap-2',\n small: 'gap-1',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n },\n);\n\nexport const checkboxVisualWrapperStyles = cva(\n 'flex items-center justify-center transition-colors duration-200 ease-in-out rounded-[2px] border shrink-0 peer-focus-visible:ring-2 peer-focus-visible:ring-[var(--color-blue-200)] peer-focus-visible:ring-offset-1',\n {\n variants: {\n checked: {\n true: 'bg-[var(--color-blue-1000)] border-[var(--color-blue-1000)] text-white',\n false:\n 'bg-white border-[var(--color-gray-200)] group-hover:border-[var(--color-gray-600)]',\n },\n size: {\n medium: 'w-[16px] h-[16px]', // 16px\n small: 'w-[12px] h-[12px]', // 12px\n },\n },\n defaultVariants: {\n checked: false,\n size: 'medium',\n },\n },\n);\n\n// Invisible input but accessible\nexport const checkboxInputStyles = 'sr-only peer';\n","// 1: react / next\nimport React, { forwardRef, useState } from 'react';\n\n// 2: components\nimport { Typography } from '@/components/atoms/Typography/Typography';\n\n// 3: styles\nimport {\n checkboxInputStyles,\n checkboxLabelStyles,\n checkboxVisualWrapperStyles,\n} from './Checkbox.styles';\n\n// 6: misc\nimport { Check } from '@/components/atoms/icons';\nimport { cn } from '@/utils/cn';\n\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n label?: string;\n size?: 'medium' | 'small';\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n className,\n checked,\n defaultChecked,\n onChange,\n label,\n size = 'medium',\n disabled,\n ...props\n },\n ref,\n ) => {\n const [internalChecked, setInternalChecked] = useState(\n defaultChecked || false,\n );\n const isControlled = checked !== undefined;\n const isChecked = isControlled ? checked : internalChecked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalChecked(e.target.checked);\n }\n onChange?.(e);\n };\n\n return (\n <label className={checkboxLabelStyles({ size, className })}>\n <input\n type=\"checkbox\"\n className={checkboxInputStyles}\n ref={ref}\n checked={isControlled ? checked : undefined}\n defaultChecked={!isControlled ? defaultChecked : undefined}\n onChange={handleChange}\n disabled={disabled}\n {...props}\n />\n <span\n className={checkboxVisualWrapperStyles({\n checked: !!isChecked,\n size,\n })}\n >\n <Check\n size={size === 'medium' ? 12 : 8}\n strokeWidth={3}\n className={cn(\n 'text-white transition-opacity duration-200',\n isChecked ? 'opacity-100' : 'opacity-0',\n )}\n />\n </span>\n {label && (\n <Typography\n as=\"span\"\n variant={size === 'medium' ? 'small' : 'x-small'}\n color=\"secondary\"\n >\n {label}\n </Typography>\n )}\n </label>\n );\n },\n);\n\nCheckbox.displayName = 'Checkbox';\n","import { cva } from 'class-variance-authority';\n\nexport const circularProgressContainerStyles = cva(\n 'relative inline-flex items-center justify-center',\n {\n variants: {\n size: {\n xs: 'w-[18px] h-[18px]',\n small: 'w-[24px] h-[24px]',\n medium: 'w-[32px] h-[32px]',\n large: 'w-[40px] h-[40px]',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n }\n);\n\nexport const circularProgressSvgStyles = cva('transform');\n\nexport const circularProgressTrackStyles = cva(\n 'stroke-[var(--color-gray-200)]'\n);\n\nexport const circularProgressIndicatorStyles = cva(\n 'transition-[stroke-dashoffset] duration-300 ease-in-out',\n {\n variants: {\n variant: {\n default: 'stroke-[var(--color-blue-800)]',\n success: 'stroke-[var(--color-green-1000)]',\n warning: 'stroke-[var(--color-orange-800)]',\n error: 'stroke-[var(--color-red-1000)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport const circularProgressLabelStyles = cva(\n 'absolute inset-0 flex items-center justify-center font-medium text-[var(--color-gray-800)]',\n {\n variants: {\n size: {\n xs: 'text-[6px]',\n small: 'text-[8px]',\n medium: 'text-[10px]',\n large: 'text-[12px]',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n }\n);\n\n","// React\nimport { forwardRef, HTMLAttributes } from 'react';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport {\n circularProgressContainerStyles,\n circularProgressSvgStyles,\n circularProgressTrackStyles,\n circularProgressIndicatorStyles,\n circularProgressLabelStyles,\n} from './CircularProgress.styles';\n\nexport interface CircularProgressProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The current value of the progress.\n * @default 0\n */\n value?: number;\n /**\n * The maximum value of the progress.\n * @default 100\n */\n max?: number;\n /**\n * The size of the circular progress.\n * @default 'medium'\n */\n size?: 'xs' | 'small' | 'medium' | 'large';\n /**\n * The visual variant of the progress indicator.\n * @default 'default'\n */\n variant?: 'default' | 'success' | 'warning' | 'error';\n /**\n * Whether to show the value label in the center.\n * @default true\n */\n showLabel?: boolean;\n /**\n * Custom formatter for the value label.\n */\n labelFormatter?: (value: number, max: number) => string;\n /**\n * The stroke width of the progress ring.\n * @default 3\n */\n strokeWidth?: number;\n}\n\nconst SIZE_MAP = {\n xs: 18,\n small: 24,\n medium: 32,\n large: 40,\n};\n\nexport const CircularProgress = forwardRef<HTMLDivElement, CircularProgressProps>(\n (\n {\n className,\n value = 0,\n max = 100,\n size = 'medium',\n variant = 'default',\n showLabel = true,\n labelFormatter,\n strokeWidth = 3,\n ...props\n },\n ref\n ) => {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n const sizePx = SIZE_MAP[size];\n const radius = (sizePx - strokeWidth) / 2;\n const circumference = 2 * Math.PI * radius;\n const strokeDashoffset = circumference - (percentage / 100) * circumference;\n\n const formattedLabel = labelFormatter\n ? labelFormatter(value, max)\n : `${Math.round(value)}`;\n\n return (\n <div\n ref={ref}\n className={cn(circularProgressContainerStyles({ size }), className)}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={value}\n {...props}\n >\n <svg\n className={circularProgressSvgStyles()}\n width={sizePx}\n height={sizePx}\n viewBox={`0 0 ${sizePx} ${sizePx}`}\n >\n {/* Background track */}\n <circle\n className={circularProgressTrackStyles()}\n cx={sizePx / 2}\n cy={sizePx / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={strokeWidth}\n />\n {/* Progress indicator */}\n <circle\n className={circularProgressIndicatorStyles({ variant })}\n cx={sizePx / 2}\n cy={sizePx / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={strokeDashoffset}\n transform={`rotate(-90 ${sizePx / 2} ${sizePx / 2})`}\n />\n </svg>\n {showLabel && (\n <span className={circularProgressLabelStyles({ size })}>\n {formattedLabel}\n </span>\n )}\n </div>\n );\n }\n);\n\nCircularProgress.displayName = 'CircularProgress';\n\n","import { useEffect, RefObject } from 'react';\n\ntype Handler = (event: MouseEvent | TouchEvent) => void;\n\nexport function useClickOutside<T extends HTMLElement = HTMLElement>(\n ref: RefObject<T>,\n handler: Handler\n): void {\n useEffect(() => {\n const listener = (event: MouseEvent | TouchEvent) => {\n const el = ref?.current;\n\n // Do nothing if clicking ref's element or descendent elements\n if (!el || el.contains(event.target as Node)) {\n return;\n }\n\n handler(event);\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [ref, handler]);\n}\n\n","import { cva } from 'class-variance-authority';\n\nexport const dropdownContentStyles = cva(\n 'absolute top-full left-0 z-50 w-full min-w-[200px] overflow-hidden rounded-[8px] border border-[var(--color-gray-200)] bg-[var(--color-white)] shadow-lg focus:outline-none',\n {\n variants: {\n align: {\n start: 'left-0',\n end: 'right-0 left-auto',\n center: 'left-1/2 -translate-x-1/2',\n },\n attached: {\n true: 'mt-0 rounded-t-none border-t-0',\n false: 'mt-2',\n },\n },\n defaultVariants: {\n align: 'start',\n attached: false,\n },\n },\n);\n\nexport const dropdownItemStyles = cva(\n 'flex w-full cursor-pointer items-center px-3 py-2 text-[0.875rem] text-[var(--color-gray-800)] transition-colors hover:bg-[var(--color-gray-50)] focus:bg-[var(--color-blue-200)] focus:outline-none disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n active: {\n true: 'bg-[var(--color-blue-200)] text-[var(--color-blue-1000)]',\n },\n variant: {\n default: '',\n destructive:\n 'text-[var(--color-red-1000)] hover:bg-[var(--color-red-200)] focus:bg-[var(--color-red-200)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n active: false,\n },\n },\n);\n\nexport const dropdownLabelStyles = cva(\n 'w-full px-3 py-1 text-[0.625rem] font-bold text-[var(--color-gray-600)] uppercase tracking-wider select-none',\n);\n\nexport const dropdownSeparatorStyles = cva(\n 'w-full h-px bg-[var(--color-gray-200)] my-1',\n);\n","import {\n useState,\n useRef,\n createContext,\n useContext,\n HTMLAttributes,\n forwardRef,\n MouseEvent,\n} from 'react';\nimport { AnimatePresence, motion, HTMLMotionProps } from 'framer-motion';\n\n// Components\nimport { ChevronDown } from '@/components/atoms/icons';\n\n// Hooks\nimport { useClickOutside } from '@/hooks/useClickOutside';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport {\n dropdownContentStyles,\n dropdownItemStyles,\n dropdownLabelStyles,\n dropdownSeparatorStyles,\n} from './Dropdown.styles';\n\n// Context\ninterface DropdownContextType {\n isOpen: boolean;\n toggle: () => void;\n close: () => void;\n}\nconst DropdownContext = createContext<DropdownContextType | undefined>(\n undefined,\n);\n\nexport const useDropdown = () => {\n const context = useContext(DropdownContext);\n if (!context) {\n throw new Error('useDropdown must be used within a Dropdown');\n }\n return context;\n};\n\n// Dropdown Root\nexport interface DropdownProps extends HTMLAttributes<HTMLDivElement> {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport const Dropdown = ({\n children,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n className,\n ...props\n}: DropdownProps) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : uncontrolledOpen;\n\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const toggle = () => {\n const newState = !isOpen;\n if (!isControlled) setUncontrolledOpen(newState);\n onOpenChange?.(newState);\n };\n\n const close = () => {\n if (!isControlled) setUncontrolledOpen(false);\n onOpenChange?.(false);\n };\n\n useClickOutside(dropdownRef, close);\n\n return (\n <DropdownContext.Provider value={{ isOpen, toggle, close }}>\n <div\n ref={dropdownRef}\n className={cn('relative w-full text-left', className)}\n {...props}\n >\n {children}\n </div>\n </DropdownContext.Provider>\n );\n};\n\nDropdown.displayName = 'Dropdown';\n\n// Trigger\nexport interface DropdownTriggerProps extends HTMLAttributes<HTMLDivElement> {\n /** Show a chevron icon positioned absolutely inside the trigger */\n chevronIcon?: boolean;\n}\n\nexport const DropdownTrigger = forwardRef<HTMLDivElement, DropdownTriggerProps>(\n (\n { className, children, onClick, chevronIcon = false, ...props },\n ref,\n ) => {\n const { toggle, isOpen } = useDropdown();\n\n const handleClick = (e: MouseEvent<HTMLDivElement>) => {\n toggle();\n onClick?.(e);\n };\n\n return (\n <div\n ref={ref}\n className={cn('cursor-pointer w-full relative overflow-visible', className)}\n onClick={handleClick}\n aria-haspopup=\"true\"\n aria-expanded={isOpen}\n {...props}\n >\n {children}\n {chevronIcon && (\n <motion.span\n animate={{ rotate: isOpen ? 180 : 0 }}\n transition={{ duration: 0.2, ease: [0.16, 1, 0.3, 1] }}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 z-20 pointer-events-none text-[var(--color-gray-600)]\"\n >\n <ChevronDown size={16} />\n </motion.span>\n )}\n </div>\n );\n },\n);\nDropdownTrigger.displayName = 'DropdownTrigger';\n\n// Content\nexport interface DropdownContentProps\n extends Omit<HTMLMotionProps<'div'>, 'ref'> {\n align?: 'start' | 'end' | 'center';\n attached?: boolean;\n}\n\nexport const DropdownContent = forwardRef<HTMLDivElement, DropdownContentProps>(\n (\n { className, align = 'start', attached = false, children, ...props },\n ref,\n ) => {\n const { isOpen } = useDropdown();\n\n return (\n <AnimatePresence>\n {isOpen && (\n <motion.div\n ref={ref}\n initial={{ opacity: 0, y: -4, scale: 0.98 }}\n animate={{ opacity: 1, y: 0, scale: 1 }}\n exit={{ opacity: 0, y: -4, scale: 0.98 }}\n transition={{ duration: 0.2, ease: [0.16, 1, 0.3, 1] }}\n style={{ transformOrigin: 'top center' }}\n className={cn(\n dropdownContentStyles({ align, attached }),\n className,\n )}\n {...props}\n >\n {children}\n </motion.div>\n )}\n </AnimatePresence>\n );\n },\n);\nDropdownContent.displayName = 'DropdownContent';\n\n// Item\nexport interface DropdownItemProps extends HTMLAttributes<HTMLDivElement> {\n active?: boolean;\n variant?: 'default' | 'destructive';\n closeOnSelect?: boolean;\n}\n\nexport const DropdownItem = forwardRef<HTMLDivElement, DropdownItemProps>(\n (\n {\n className,\n active,\n variant,\n closeOnSelect = true,\n children,\n onClick,\n ...props\n },\n ref,\n ) => {\n const { close } = useDropdown();\n\n const handleClick = (e: MouseEvent<HTMLDivElement>) => {\n onClick?.(e);\n if (closeOnSelect) {\n close();\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(dropdownItemStyles({ active, variant }), className)}\n onClick={handleClick}\n role=\"menuitem\"\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nDropdownItem.displayName = 'DropdownItem';\n\n// Label\nexport interface DropdownLabelProps extends HTMLAttributes<HTMLDivElement> { }\n\nexport const DropdownLabel = forwardRef<HTMLDivElement, DropdownLabelProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(dropdownLabelStyles(), className)}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nDropdownLabel.displayName = 'DropdownLabel';\n\n// Separator\nexport interface DropdownSeparatorProps extends HTMLAttributes<HTMLDivElement> {\n animated?: boolean;\n animationDelay?: number;\n}\n\nexport const DropdownSeparator = forwardRef<\n HTMLDivElement,\n DropdownSeparatorProps\n>(({ className, animated = false, animationDelay = 0.2, ...props }, ref) => {\n if (animated) {\n return (\n <div\n ref={ref}\n className={cn('h-px my-1 overflow-hidden', className)}\n {...props}\n >\n <motion.div\n className=\"h-full bg-[var(--color-gray-200)]\"\n initial={{ width: 0 }}\n animate={{ width: '100%' }}\n transition={{\n duration: 0.3,\n ease: [0.16, 1, 0.3, 1],\n delay: animationDelay,\n }}\n />\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn(dropdownSeparatorStyles(), className)}\n {...props}\n />\n );\n});\nDropdownSeparator.displayName = 'DropdownSeparator';\n","import { cva } from 'class-variance-authority';\n\nexport const inputStyles = cva(\n 'w-full bg-[var(--color-white)] border border-solid rounded-[8px] font-normal transition-colors duration-200 box-border focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-1 disabled:cursor-not-allowed disabled:opacity-50',\n {\n variants: {\n status: {\n default:\n 'border-[var(--color-gray-200)] text-[var(--color-gray-600)] placeholder:text-[var(--color-gray-600)] focus:border-[var(--color-blue-1000)] focus:text-[var(--color-blue-1000)]',\n error:\n 'border-[var(--color-red-1000)] text-[var(--color-red-1000)] placeholder:text-[var(--color-red-1000)] focus:border-[var(--color-red-1000)]',\n success:\n 'border-[var(--color-green-1000)] text-[var(--color-green-1000)] placeholder:text-[var(--color-green-1000)] focus:border-[var(--color-green-1000)]',\n },\n size: {\n medium: 'px-4 py-4 text-[1rem] leading-[1.5rem]', // 16px/24px\n small: 'px-3 py-2 text-[0.875rem] leading-[1.25rem]', // 14px/20px\n tiny: 'p-2 text-[0.75rem] leading-[1rem]', // 12px/16px\n },\n },\n defaultVariants: {\n status: 'default',\n size: 'medium',\n },\n },\n);\n\nexport const inputContainerStyles = cva('relative w-full', {\n variants: {\n size: {\n medium: '',\n small: '',\n tiny: '',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n});\n\nexport const inputIconStyles = cva(\n 'absolute top-1/2 -translate-y-1/2 pointer-events-none flex items-center justify-center',\n {\n variants: {\n status: {\n default: 'text-[var(--color-gray-600)]',\n error: 'text-[var(--color-red-1000)]',\n success: 'text-[var(--color-green-1000)]',\n },\n position: {\n start: '',\n end: '',\n },\n size: {\n medium: 'size-[24px]',\n small: 'size-[16px]',\n tiny: 'size-[16px]',\n },\n },\n compoundVariants: [\n {\n position: 'start',\n size: 'medium',\n className: 'left-4',\n },\n {\n position: 'start',\n size: 'small',\n className: 'left-3',\n },\n {\n position: 'start',\n size: 'tiny',\n className: 'left-2',\n },\n {\n position: 'end',\n size: 'medium',\n className: 'right-4',\n },\n {\n position: 'end',\n size: 'small',\n className: 'right-3',\n },\n {\n position: 'end',\n size: 'tiny',\n className: 'right-2',\n },\n ],\n defaultVariants: {\n status: 'default',\n size: 'medium',\n position: 'end',\n },\n },\n);\n","import { InputHTMLAttributes, ReactNode, forwardRef } from 'react';\nimport { cn } from '@/utils/cn';\nimport {\n inputStyles,\n inputContainerStyles,\n inputIconStyles,\n} from './Input.styles';\n\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\n status?: 'default' | 'error' | 'success';\n size?: 'medium' | 'small' | 'tiny';\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n status = 'default',\n size = 'medium',\n startIcon,\n endIcon,\n disabled,\n ...props\n },\n ref\n ) => {\n // Size-aware padding\n const startIconPaddingMap = {\n medium: 'pl-12', // 16px (pad) + 24px (icon) + 8px (gap) = 48px -> pl-12\n small: 'pl-9', // 12px (pad) + 16px (icon) + 8px (gap) = 36px -> pl-9\n tiny: 'pl-8', // 8px (pad) + 16px (icon) + 8px (gap) = 32px -> pl-8\n };\n\n const endIconPaddingMap = {\n medium: 'pr-12',\n small: 'pr-9',\n tiny: 'pr-8',\n };\n\n return (\n <div className={inputContainerStyles({ size })}>\n {startIcon && (\n <span className={inputIconStyles({ status, size, position: 'start' })}>\n {startIcon}\n </span>\n )}\n <input\n ref={ref}\n className={cn(\n inputStyles({ status, size }),\n startIcon && startIconPaddingMap[size],\n endIcon && endIconPaddingMap[size],\n className\n )}\n disabled={disabled}\n {...props}\n />\n {endIcon && (\n <span className={inputIconStyles({ status, size, position: 'end' })}>\n {endIcon}\n </span>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = 'Input';\n","import { cva } from 'class-variance-authority';\n\nexport const loadingSpinnerWrapperStyles = cva('flex flex-col items-center justify-center');\n\nexport const spinnerContainerStyles = cva('relative', {\n variants: {\n size: {\n sm: 'w-8 h-8',\n md: 'w-12 h-12',\n lg: 'w-16 h-16',\n },\n },\n defaultVariants: {\n size: 'lg',\n },\n});\n\nexport const spinnerBorderStyles = cva(\n 'absolute inset-0 rounded-full border-4 border-transparent animate-spin',\n {\n variants: {\n color: {\n primary: 'border-t-[var(--color-blue-800)]',\n secondary: 'border-t-[var(--color-gray-600)]',\n },\n },\n defaultVariants: {\n color: 'primary',\n },\n }\n);\n\nexport const loadingTextStyles = cva('mt-4 typography-small', {\n variants: {\n color: {\n primary: 'text-[var(--color-gray-1000)]',\n muted: 'text-[var(--color-gray-600)]',\n },\n },\n defaultVariants: {\n color: 'muted',\n },\n});\n","import { FC } from 'react';\nimport {\n loadingSpinnerWrapperStyles,\n spinnerContainerStyles,\n spinnerBorderStyles,\n loadingTextStyles,\n} from './LoadingSpinner.styles';\n\ninterface LoadingSpinnerProps {\n size?: 'sm' | 'md' | 'lg';\n color?: 'primary' | 'secondary';\n text?: string;\n textColor?: 'primary' | 'muted';\n}\n\nexport const LoadingSpinner: FC<LoadingSpinnerProps> = ({\n size = 'lg',\n color = 'primary',\n text,\n textColor = 'muted',\n}) => {\n return (\n <div className={loadingSpinnerWrapperStyles()}>\n <div className={spinnerContainerStyles({ size })}>\n <div className={spinnerBorderStyles({ color })} />\n </div>\n {text && <p className={loadingTextStyles({ color: textColor })}>{text}</p>}\n </div>\n );\n};\n\n","import { cva } from 'class-variance-authority';\n\nexport const rootStyles = cva(\n 'relative flex flex-col w-full max-w-[668px] transition-colors duration-200 group',\n {\n variants: {\n variant: {\n user: '',\n assistant: '',\n system: '',\n loader: '',\n },\n alignment: {\n left: 'items-start',\n center: 'items-center',\n right: 'items-end',\n },\n isEditing: {\n true: 'items-stretch',\n false: '',\n },\n },\n compoundVariants: [\n // Default alignments based on variant (can be overridden by explicit alignment prop)\n { variant: 'user', alignment: undefined, isEditing: false, className: 'items-end' },\n { variant: 'assistant', alignment: undefined, isEditing: false, className: 'items-start' },\n { variant: 'system', alignment: undefined, className: 'items-start' },\n { variant: 'loader', alignment: undefined, className: 'items-start' },\n ],\n defaultVariants: {\n variant: 'user',\n isEditing: false,\n },\n },\n);\n\nexport const innerContainerStyles = cva('flex gap-[12px] items-start w-full');\n\nexport const messageContainerStyles = cva('flex flex-col flex-1 min-w-0');\n\nexport const bubbleStyles = cva(\n 'flex flex-col w-full transition-colors duration-200',\n {\n variants: {\n variant: {\n user: 'bg-[var(--color-white)] border border-solid border-[#e5e7f0] rounded-[16px] p-[16px] overflow-clip shadow-[0px_2px_4px_-2px_rgba(0,0,0,0.08),0px_4px_8px_-2px_rgba(0,0,0,0.04)]',\n assistant: 'bg-transparent p-[8px] gap-[8px]',\n system: 'bg-transparent p-[8px] gap-[8px]',\n loader: 'bg-transparent p-[8px] gap-[24px]',\n },\n isSticky: {\n true: 'shadow-[0px_8px_16px_-4px_rgba(0,0,0,0.1),0px_4px_8px_-4px_rgba(0,0,0,0.06)]',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'user',\n isSticky: false,\n },\n },\n);\n\nexport const contentStyles = cva('flex w-full', {\n variants: {\n variant: {\n user: 'flex-col gap-[8px]',\n assistant: 'flex-col gap-[8px]',\n system: 'flex-row items-center gap-[8px]',\n loader: 'flex-col items-start',\n },\n },\n defaultVariants: {\n variant: 'user',\n },\n});\n\nexport const headerStyles = cva('typography-h4 text-[var(--color-blue-1000)]');\n\nexport const textStyles = cva('typography-small', {\n variants: {\n variant: {\n user: 'text-[var(--color-blue-1000)]',\n assistant: 'text-[var(--color-blue-1000)]',\n system: 'text-[var(--color-gray-600)]',\n loader: '',\n },\n },\n defaultVariants: {\n variant: 'user',\n },\n});\n\nexport const actionsStyles = cva(\n 'flex gap-[8px] p-[4px] rounded-[4px] transition-opacity duration-200',\n {\n variants: {\n variant: {\n user: '',\n assistant: '',\n system: 'hidden',\n loader: 'hidden',\n },\n },\n defaultVariants: {\n variant: 'user',\n },\n },\n);\n\n// Actions icons wrapper - only visible on hover\nexport const actionsIconsStyles = cva([\n 'flex',\n 'gap-[8px]',\n 'opacity-0',\n 'group-hover:opacity-100',\n 'transition-opacity',\n 'duration-200',\n]);\n\nexport const actionButtonStyles = cva(\n 'p-1 rounded-[4px] text-[var(--color-gray-400)] hover:text-[var(--color-gray-800)] hover:drop-shadow-[0_1px_2px_rgba(0,0,0,0.15)] transition-all duration-200 focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-1 disabled:opacity-30 disabled:cursor-not-allowed disabled:hover:text-[var(--color-gray-400)] disabled:hover:drop-shadow-none',\n {\n variants: {\n isActive: {\n true: 'text-[var(--color-blue-800)]',\n false: '',\n },\n },\n defaultVariants: {\n isActive: false,\n },\n },\n);\n\nexport const avatarContainerStyles = cva(\n 'flex items-start justify-center shrink-0 pt-[4px]',\n);\n\nexport const avatarInnerStyles = cva(\n 'flex items-center justify-center size-[32px] rounded-full bg-[var(--color-blue-1000)]',\n);\n\nexport const timestampStyles = cva(\n 'text-[12px] text-[var(--color-gray-600)] mt-[4px]',\n);\n\nexport const loaderStyles = cva(\n 'flex items-center justify-center',\n);\n\n// Container for system message content with shimmer overlay\nexport const systemContentWrapperStyles = cva(\n 'relative overflow-hidden flex items-center gap-[8px] py-[2px] select-none',\n);\n\n// Shine overlay that passes over the content like a skeleton loader\nexport const shimmerOverlayStyles = cva([\n 'absolute -inset-y-2 -inset-x-4',\n 'animate-shimmer',\n 'bg-[linear-gradient(90deg,transparent_0%,transparent_35%,rgba(255,255,255,0.4)_50%,transparent_65%,transparent_100%)]',\n 'blur-[1px]',\n 'z-10 pointer-events-none',\n]);\n\n// Activity icon container with styling and rhythm animation\nexport const activityIconAnimatedStyles = cva([\n 'relative shrink-0 flex items-center justify-center',\n 'text-[var(--color-gray-600)]',\n 'animate-signal-rhythm',\n 'origin-center',\n]);\n\n// Optional subtle glow backdrop for the activity icon\nexport const activityIconGlowStyles = cva([\n 'absolute inset-0',\n 'bg-[var(--color-blue-200)]',\n 'rounded-full',\n 'opacity-0',\n 'animate-ping-slow',\n '-z-10',\n]);\n\n// Edit mode container styles - wraps the bubble with blue border\nexport const editContainerStyles = cva([\n 'flex',\n 'flex-col',\n 'w-full',\n 'bg-[var(--color-white)]',\n 'rounded-[16px]',\n 'border',\n 'border-[var(--color-blue-800)]',\n 'p-[16px]',\n 'gap-[8px]',\n 'transition-colors',\n 'duration-200',\n]);\n\n// Edit mode textarea styles - minimal, no border\nexport const editTextareaStyles = cva([\n 'w-full',\n 'min-h-[60px]',\n 'bg-transparent',\n 'border-none',\n 'resize-none',\n 'typography-small',\n 'text-[var(--color-blue-1000)]',\n 'placeholder:text-[var(--color-gray-600)]',\n 'focus:outline-none',\n 'disabled:opacity-50',\n 'disabled:cursor-not-allowed',\n]);\n\n// Edit mode hint text styles\nexport const editHintStyles = cva([\n 'text-[12px]',\n 'leading-[16px]',\n 'text-[var(--color-gray-600)]',\n]);\n\n// Branch navigator container\nexport const branchNavigatorStyles = cva([\n 'flex',\n 'items-center',\n 'gap-[4px]',\n]);\n\n// Branch navigator button\nexport const branchNavButtonStyles = cva(\n [\n 'p-[4px]',\n 'rounded-[4px]',\n 'text-[var(--color-gray-400)]',\n 'transition-colors',\n 'duration-200',\n 'hover:text-[var(--color-gray-800)]',\n 'hover:bg-[var(--color-gray-100)]',\n 'disabled:opacity-30',\n 'disabled:cursor-not-allowed',\n 'disabled:hover:bg-transparent',\n 'disabled:hover:text-[var(--color-gray-400)]',\n 'focus-visible:ring-2',\n 'focus-visible:ring-[var(--color-blue-200)]',\n 'focus-visible:ring-offset-1',\n ]\n);\n\n// Branch navigator text\nexport const branchNavTextStyles = cva([\n 'text-[12px]',\n 'leading-[16px]',\n 'text-[var(--color-gray-600)]',\n 'font-normal',\n 'tabular-nums',\n 'select-none',\n 'min-w-[32px]',\n 'text-center',\n]);\n","// React\nimport {\n forwardRef,\n HTMLAttributes,\n useState,\n useEffect,\n useRef,\n useCallback,\n useMemo,\n memo,\n ComponentType,\n KeyboardEvent,\n ChangeEvent,\n} from 'react';\n\n// Components\nimport { Check, Activity, ChevronLeft, ChevronRight, Edit2, X } from '@/components/atoms/icons';\nimport { LogoA, SignatureA } from '@/components/atoms/logos';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport {\n rootStyles,\n bubbleStyles,\n contentStyles,\n actionsStyles,\n avatarContainerStyles,\n innerContainerStyles,\n messageContainerStyles,\n headerStyles,\n textStyles,\n actionButtonStyles,\n avatarInnerStyles,\n timestampStyles,\n loaderStyles,\n systemContentWrapperStyles,\n shimmerOverlayStyles,\n activityIconAnimatedStyles,\n activityIconGlowStyles,\n editContainerStyles,\n editTextareaStyles,\n editHintStyles,\n actionsIconsStyles,\n branchNavigatorStyles,\n branchNavButtonStyles,\n branchNavTextStyles,\n} from './MessageBubble.styles';\n\n// Types\nexport interface MessageAction {\n /** Icon component to display */\n icon: ComponentType<{ size?: number | string }>;\n /** Accessible label for the action button */\n label: string;\n /** Click handler for the action */\n onClick?: () => void;\n /** Whether this action is in an active/highlighted state */\n isActive?: boolean;\n}\n\nexport interface BranchInfo {\n /** Current branch index (1-based for display) */\n currentIndex: number;\n /** Total number of branches */\n totalBranches: number;\n}\n\nexport interface MessageBubbleProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'user' | 'assistant' | 'system' | 'loader';\n heading?: string;\n isLoading?: boolean;\n /** Hide the Archie logo avatar (only applicable to assistant variant). Defaults to true (hidden). */\n hideAvatar?: boolean;\n /** Show timestamp (not recommended per design). Defaults to false. */\n showTimestamp?: boolean;\n /** Timestamp value to display */\n timestamp?: Date | string;\n /** Sticky mode - adds shadow to bubble, no action controls */\n isSticky?: boolean;\n /** Initial prompt - centers the message (only applies to user variant). Used for the first user message in a conversation. */\n isInitialPrompt?: boolean;\n /** Explicit alignment override - auto determines based on variant and isInitialPrompt */\n alignment?: 'left' | 'center' | 'right';\n /** Custom actions to display on hover. Each action has an icon, label, and onClick handler. */\n actions?: MessageAction[];\n /** Enable built-in copy functionality. When true, adds a copy button that copies the message content. */\n enableCopy?: boolean;\n /** Icon to use for the copy action (defaults to Clipboard icon from props) */\n copyIcon?: ComponentType<{ size?: number | string }>;\n /** Callback executed when copy succeeds */\n onCopySuccess?: () => void;\n /** Enable edit mode functionality for user messages */\n enableEdit?: boolean;\n /** Whether the message is currently in edit mode (controlled) */\n isEditing?: boolean;\n /** Initial content for edit mode (required for controlled mode since contentRef is not available) */\n initialEditContent?: string;\n /** Callback when entering edit mode */\n onEditStart?: () => void;\n /** Callback when cancelling edit mode */\n onEditCancel?: () => void;\n /** Callback when saving edit with the new content */\n onEditSave?: (newContent: string) => void | Promise<void>;\n /** Whether save operation is in progress */\n isSaving?: boolean;\n /** Branch information for navigation */\n branchInfo?: BranchInfo;\n /** Callback when navigating to previous branch */\n onPreviousBranch?: () => void;\n /** Callback when navigating to next branch */\n onNextBranch?: () => void;\n /** Whether branch navigation is loading */\n isBranchLoading?: boolean;\n}\n\n// Empty array constant to prevent re-renders from default prop\nconst EMPTY_ACTIONS: MessageAction[] = [];\n\n// Platform detection - only needs to run once\nconst IS_MAC = typeof navigator !== 'undefined' && /Mac|iPod|iPhone|iPad/.test(navigator.platform);\nconst KEYBOARD_HINT = IS_MAC ? '⌘+Enter to save, Esc to cancel' : 'Ctrl+Enter to save, Esc to cancel';\n\n// Format timestamp utility - moved outside component to prevent recreation\nconst formatTimestamp = (ts: Date | string): string => {\n const date = typeof ts === 'string' ? new Date(ts) : ts;\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n const diffMins = Math.floor(diffMs / 60000);\n\n if (diffMins < 1) return 'Just now';\n if (diffMins < 60) return `${diffMins} min ago`;\n\n const diffHours = Math.floor(diffMins / 60);\n if (diffHours < 24) return `${diffHours}h ago`;\n\n return date.toLocaleDateString();\n};\n\ninterface ActionButtonProps {\n onClick?: () => void;\n icon: ComponentType<{ size?: number | string }>;\n label: string;\n className?: string;\n isActive?: boolean;\n disabled?: boolean;\n}\n\nconst ActionButton = memo<ActionButtonProps>(({\n onClick,\n icon: Icon,\n label,\n className,\n isActive = false,\n disabled = false,\n}) => (\n <button\n className={cn(actionButtonStyles({ isActive }), className)}\n onClick={onClick}\n type=\"button\"\n aria-label={label}\n disabled={disabled}\n >\n <Icon size={12} />\n </button>\n));\n\nActionButton.displayName = 'ActionButton';\n\ninterface BranchNavigatorProps {\n branchInfo: BranchInfo;\n onPrevious?: () => void;\n onNext?: () => void;\n isLoading?: boolean;\n}\n\n/** Branch navigator component for navigating between message versions */\nconst BranchNavigator = memo<BranchNavigatorProps>(({\n branchInfo,\n onPrevious,\n onNext,\n isLoading = false,\n}) => {\n const hasPrevious = branchInfo.currentIndex > 1;\n const hasNext = branchInfo.currentIndex < branchInfo.totalBranches;\n\n if (branchInfo.totalBranches <= 1) {\n return null;\n }\n\n return (\n <div className={cn(branchNavigatorStyles())}>\n <button\n type=\"button\"\n className={cn(branchNavButtonStyles())}\n onClick={onPrevious}\n disabled={!hasPrevious || isLoading}\n aria-label=\"Previous version\"\n >\n <ChevronLeft size={14} />\n </button>\n <span className={cn(branchNavTextStyles())}>\n {branchInfo.currentIndex} / {branchInfo.totalBranches}\n </span>\n <button\n type=\"button\"\n className={cn(branchNavButtonStyles())}\n onClick={onNext}\n disabled={!hasNext || isLoading}\n aria-label=\"Next version\"\n >\n <ChevronRight size={14} />\n </button>\n </div>\n );\n});\n\nBranchNavigator.displayName = 'BranchNavigator';\n\n// Looping animated SignatureA for loader state\nconst AnimatedLoader = () => {\n const [key, setKey] = useState(0);\n\n useEffect(() => {\n // Restart animation every 2.5 seconds (animation duration + small pause)\n const interval = setInterval(() => {\n setKey((k) => k + 1);\n }, 2500);\n\n return () => clearInterval(interval);\n }, []);\n\n return (\n <div className={cn(loaderStyles())}>\n <SignatureA\n key={key}\n size={28}\n colorVariant=\"lightTeal\"\n animated\n animationDuration={2}\n />\n </div>\n );\n};\n\nexport const MessageBubble = forwardRef<HTMLDivElement, MessageBubbleProps>(\n (\n {\n className,\n variant = 'user',\n heading,\n children,\n isLoading,\n timestamp,\n hideAvatar = false,\n showTimestamp = false,\n isSticky = false,\n isInitialPrompt = false,\n alignment,\n actions = EMPTY_ACTIONS,\n enableCopy = false,\n copyIcon,\n onCopySuccess,\n enableEdit = false,\n isEditing: isEditingProp,\n initialEditContent,\n onEditStart,\n onEditCancel,\n onEditSave,\n isSaving = false,\n branchInfo,\n onPreviousBranch,\n onNextBranch,\n isBranchLoading = false,\n ...props\n },\n ref,\n ) => {\n const contentRef = useRef<HTMLDivElement>(null);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const [isCopied, setIsCopied] = useState(false);\n const [internalEditing, setInternalEditing] = useState(false);\n const [editContent, setEditContent] = useState(initialEditContent ?? '');\n\n // Use controlled or uncontrolled editing state\n const isEditing = isEditingProp ?? internalEditing;\n\n const resolvedAlignment =\n alignment ??\n (variant === 'user' ? (isInitialPrompt ? 'center' : 'right') : 'left');\n\n // Extract text content from children for editing\n const getTextContent = useCallback((): string => {\n if (contentRef.current) {\n return contentRef.current.innerText;\n }\n if (typeof children === 'string') {\n return children;\n }\n return '';\n }, [children]);\n\n // Handle entering edit mode\n const handleEditStart = useCallback(() => {\n // In controlled mode, don't set editContent here - let the useEffect handle it\n // when isEditing transitions to true. This prevents race conditions.\n if (isEditingProp === undefined) {\n // Uncontrolled mode: set content immediately since we manage the state\n const content = initialEditContent ?? getTextContent();\n setEditContent(content);\n setInternalEditing(true);\n }\n // In controlled mode, the useEffect will handle setting editContent\n // when isEditing transitions from false to true\n onEditStart?.();\n }, [initialEditContent, getTextContent, isEditingProp, onEditStart]);\n\n // Handle cancelling edit mode\n const handleEditCancel = useCallback(() => {\n if (isEditingProp === undefined) {\n setInternalEditing(false);\n }\n setEditContent('');\n onEditCancel?.();\n }, [isEditingProp, onEditCancel]);\n\n // Handle saving edit\n const handleEditSave = useCallback(async () => {\n // Don't save if content is empty, saving in progress, or content hasn't changed\n if (!editContent?.trim() || isSaving) return;\n if (editContent.trim() === initialEditContent?.trim()) return;\n\n try {\n await onEditSave?.(editContent);\n if (isEditingProp === undefined) {\n setInternalEditing(false);\n }\n setEditContent('');\n } catch (error) {\n console.error('Failed to save edit:', error);\n }\n }, [editContent, isSaving, onEditSave, isEditingProp, initialEditContent]);\n\n // Handle keyboard shortcuts in edit mode\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Escape') {\n handleEditCancel();\n } else if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n handleEditSave();\n }\n },\n [handleEditCancel, handleEditSave],\n );\n\n // Track previous editing state to detect transitions\n const prevIsEditingRef = useRef(false);\n // Keep track of last known initialEditContent for controlled mode\n const lastInitialContentRef = useRef(initialEditContent);\n\n // Update ref whenever initialEditContent changes (before edit mode transition)\n useEffect(() => {\n lastInitialContentRef.current = initialEditContent;\n }, [initialEditContent]);\n\n // Initialize edit content when entering edit mode (controlled mode)\n // In controlled mode, use initialEditContent prop since contentRef won't be available\n useEffect(() => {\n const wasEditing = prevIsEditingRef.current;\n prevIsEditingRef.current = isEditing;\n\n // Only initialize when transitioning from not editing -> editing\n if (isEditing && !wasEditing) {\n // In controlled mode, ALWAYS prefer initialEditContent since contentRef\n // won't be available when isEditing is true (edit UI replaces content)\n // Use the ref to ensure we get the latest value even in race conditions\n const content = initialEditContent || lastInitialContentRef.current || getTextContent() || '';\n setEditContent(content);\n } else if (!isEditing && wasEditing) {\n // Clear content when exiting edit mode\n setEditContent('');\n }\n }, [isEditing, initialEditContent, getTextContent]);\n\n // Focus textarea when entering edit mode\n useEffect(() => {\n if (isEditing && textareaRef.current) {\n textareaRef.current.focus();\n const length = textareaRef.current.value.length;\n textareaRef.current.setSelectionRange(length, length);\n }\n }, [isEditing]);\n\n const handleCopyInternal = useCallback(async () => {\n if (!contentRef.current) return;\n\n const textToCopy = contentRef.current.innerText;\n try {\n if (navigator.clipboard && navigator.clipboard.writeText) {\n await navigator.clipboard.writeText(textToCopy);\n setIsCopied(true);\n\n // Trigger onCopySuccess callback if provided\n onCopySuccess?.();\n\n setTimeout(() => {\n setIsCopied(false);\n }, 2000);\n } else {\n // Fallback for environments where navigator.clipboard is not available\n console.warn('Clipboard API not available');\n }\n } catch (err) {\n console.error('Failed to copy:', err);\n }\n }, [onCopySuccess]);\n\n // Memoized handler for edit content change\n const handleEditContentChange = useCallback(\n (e: ChangeEvent<HTMLTextAreaElement>) => {\n setEditContent(e.target.value);\n },\n [],\n );\n\n // Memoize derived values to prevent unnecessary recalculations\n const hasActions = useMemo(\n () => actions.length > 0 || enableCopy || (enableEdit && variant === 'user'),\n [actions.length, enableCopy, enableEdit, variant],\n );\n\n const showActions = useMemo(\n () => !isSticky && !isEditing && (variant === 'user' || variant === 'assistant') && hasActions,\n [isSticky, isEditing, variant, hasActions],\n );\n\n const showBranchNavigator = useMemo(\n () => !isEditing && branchInfo && branchInfo.totalBranches > 1 && variant === 'user',\n [isEditing, branchInfo, variant],\n );\n\n // Loader variant - uses animated SignatureA drawing in loop\n if (variant === 'loader' || isLoading) {\n return (\n <div\n ref={ref}\n className={cn(\n rootStyles({ variant: 'loader', alignment: 'left', isEditing: false }),\n className,\n )}\n {...props}\n >\n <div className={cn(bubbleStyles({ variant: 'loader', isSticky }))}>\n <AnimatedLoader />\n </div>\n </div>\n );\n }\n\n // Edit mode UI for user messages\n if (isEditing && variant === 'user') {\n return (\n <div\n ref={ref}\n className={cn(\n rootStyles({ variant, alignment: 'right', isEditing: true }),\n 'group',\n className,\n )}\n {...props}\n >\n <div className={cn(editContainerStyles())}>\n <textarea\n ref={textareaRef}\n value={editContent}\n onChange={handleEditContentChange}\n onKeyDown={handleKeyDown}\n className={cn(editTextareaStyles())}\n placeholder=\"Edit your message...\"\n disabled={isSaving}\n aria-label=\"Edit message\"\n />\n </div>\n {/* Edit mode actions - hint on left, icons on right */}\n <div className={cn(actionsStyles({ variant }), 'opacity-100 justify-between')}>\n <span className={cn(editHintStyles())}>{KEYBOARD_HINT}</span>\n <div className=\"flex\">\n <ActionButton\n onClick={handleEditSave}\n icon={Check}\n label=\"Save\"\n disabled={isSaving || !editContent?.trim() || editContent.trim() === initialEditContent?.trim()}\n />\n <ActionButton\n onClick={handleEditCancel}\n icon={X}\n label=\"Cancel\"\n disabled={isSaving}\n />\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n rootStyles({ variant, alignment: resolvedAlignment, isEditing: false }),\n 'group',\n className,\n )}\n {...props}\n >\n <div className={cn(innerContainerStyles())}>\n {!hideAvatar && variant === 'assistant' && (\n <div className={cn(avatarContainerStyles())}>\n <div className={cn(avatarInnerStyles())}>\n <LogoA size={20} colorVariant=\"lightTeal\" />\n </div>\n </div>\n )}\n\n <div className={cn(messageContainerStyles())}>\n <div className={cn(bubbleStyles({ variant, isSticky }))}>\n <div className={cn(contentStyles({ variant }))} ref={contentRef}>\n {variant === 'system' ? (\n <div className={cn(systemContentWrapperStyles())}>\n {/* Shimmer overlay that passes over the content */}\n <div className={cn(shimmerOverlayStyles())} />\n {/* Activity icon with rhythm animation */}\n <div className={cn(activityIconAnimatedStyles())}>\n <Activity size={16} />\n {/* Subtle glowing backdrop for active feel */}\n <div className={cn(activityIconGlowStyles())} />\n </div>\n {/* Text content */}\n <span className={cn(textStyles({ variant }))}>\n {children}\n </span>\n </div>\n ) : (\n <>\n {variant === 'assistant' && heading && (\n <h4 className={cn(headerStyles())}>{heading}</h4>\n )}\n <div className={cn(textStyles({ variant }))}>{children}</div>\n </>\n )}\n </div>\n </div>\n\n {/* Timestamp - Only show if explicitly enabled */}\n {showTimestamp && timestamp && (\n <div className={cn(timestampStyles())}>\n {formatTimestamp(timestamp)}\n </div>\n )}\n\n {/* Actions row - actions on left, branch navigator on right */}\n {(showActions || showBranchNavigator) && (\n <div className={cn(actionsStyles({ variant }), 'justify-between')}>\n {/* Left side: actions (visible on hover) */}\n <div className={cn(actionsIconsStyles())}>\n {showActions && (\n <>\n {/* Built-in copy action */}\n {enableCopy && copyIcon && (\n <ActionButton\n onClick={handleCopyInternal}\n icon={isCopied ? Check : copyIcon}\n label={isCopied ? 'Copied' : 'Copy'}\n isActive={isCopied}\n />\n )}\n\n {/* Built-in edit action for user messages */}\n {enableEdit && variant === 'user' && (\n <ActionButton\n onClick={handleEditStart}\n icon={Edit2}\n label=\"Edit\"\n />\n )}\n\n {/* Custom actions */}\n {actions.map((action, index) => (\n <ActionButton\n key={`${action.label}-${index}`}\n onClick={action.onClick}\n icon={action.icon}\n label={action.label}\n isActive={action.isActive}\n />\n ))}\n </>\n )}\n </div>\n\n {/* Right side: branch navigator (always visible) */}\n {showBranchNavigator && branchInfo && (\n <BranchNavigator\n branchInfo={branchInfo}\n onPrevious={onPreviousBranch}\n onNext={onNextBranch}\n isLoading={isBranchLoading}\n />\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n },\n);\n\nMessageBubble.displayName = 'MessageBubble';\n","import { cva } from 'class-variance-authority';\n\nexport const progressBarTrackStyles = cva(\n 'w-full overflow-hidden rounded-full bg-[var(--color-gray-200)]',\n {\n variants: {\n size: {\n small: 'h-1',\n medium: 'h-2',\n large: 'h-3',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n }\n);\n\nexport const progressBarIndicatorStyles = cva(\n 'h-full w-full flex-1 transition-all duration-300 ease-in-out rounded-full',\n {\n variants: {\n variant: {\n default: 'bg-[var(--color-blue-800)]',\n success: 'bg-[var(--color-green-1000)]',\n error: 'bg-[var(--color-red-1000)]',\n warning: 'bg-[var(--color-amber-1000)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport const progressBarLabelStyles = cva(\n 'flex justify-between mb-2 text-[var(--color-gray-800)]',\n {\n variants: {\n size: {\n small: 'text-xs',\n medium: 'text-sm',\n large: 'text-base',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n }\n);\n\n","// React\nimport { forwardRef, HTMLAttributes } from 'react';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport {\n progressBarTrackStyles,\n progressBarIndicatorStyles,\n progressBarLabelStyles,\n} from './ProgressBar.styles';\n\nexport interface ProgressBarProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The current value of the progress bar.\n */\n value?: number;\n /**\n * The maximum value of the progress bar.\n * @default 100\n */\n max?: number;\n /**\n * The visual variant of the progress bar.\n * @default 'default'\n */\n variant?: 'default' | 'success' | 'error' | 'warning';\n /**\n * The size of the progress bar.\n * @default 'medium'\n */\n size?: 'small' | 'medium' | 'large';\n /**\n * Whether to show the value label.\n * @default false\n */\n showValueLabel?: boolean;\n /**\n * Custom label text to display above the progress bar.\n */\n label?: string;\n /**\n * Custom formatter for the value label.\n */\n valueFormatter?: (value: number, max: number) => string;\n}\n\nexport const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(\n (\n {\n className,\n value = 0,\n max = 100,\n variant = 'default',\n size = 'medium',\n showValueLabel = false,\n label,\n valueFormatter,\n ...props\n },\n ref\n ) => {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n const formattedValue = valueFormatter\n ? valueFormatter(value, max)\n : `${Math.round(percentage)}%`;\n\n return (\n <div\n ref={ref}\n className={cn('w-full', className)}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={value}\n {...props}\n >\n {(label || showValueLabel) && (\n <div className={progressBarLabelStyles({ size })}>\n {label && <span className=\"font-medium\">{label}</span>}\n {showValueLabel && <span className=\"ml-auto\">{formattedValue}</span>}\n </div>\n )}\n <div className={progressBarTrackStyles({ size })}>\n <div\n className={progressBarIndicatorStyles({ variant })}\n style={{ transform: `translateX(-${100 - percentage}%)` }}\n />\n </div>\n </div>\n );\n }\n);\n\nProgressBar.displayName = 'ProgressBar';\n\n","import { cva } from 'class-variance-authority';\n\nexport const rangeInputStyles = cva(\n [\n 'w-full h-2 rounded-lg appearance-none cursor-pointer',\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n\n // Webkit Thumb\n '[&::-webkit-slider-thumb]:appearance-none',\n '[&::-webkit-slider-thumb]:w-5 [&::-webkit-slider-thumb]:h-5',\n '[&::-webkit-slider-thumb]:bg-[var(--color-white)]',\n '[&::-webkit-slider-thumb]:border-2',\n '[&::-webkit-slider-thumb]:rounded-full',\n '[&::-webkit-slider-thumb]:shadow-sm',\n '[&::-webkit-slider-thumb]:transition-all [&::-webkit-slider-thumb]:duration-200',\n '[&::-webkit-slider-thumb]:hover:scale-110',\n\n // Firefox Thumb\n '[&::-moz-range-thumb]:w-5 [&::-moz-range-thumb]:h-5',\n '[&::-moz-range-thumb]:bg-[var(--color-white)]',\n '[&::-moz-range-thumb]:border-2',\n '[&::-moz-range-thumb]:rounded-full',\n '[&::-moz-range-thumb]:shadow-sm',\n '[&::-moz-range-thumb]:transition-all [&::-moz-range-thumb]:duration-200',\n '[&::-moz-range-thumb]:hover:scale-110',\n ].join(' '),\n {\n variants: {\n variant: {\n cyan: [\n 'focus-visible:ring-[var(--color-blue-200)]',\n '[&::-webkit-slider-thumb]:border-[var(--color-gray-200)] [&::-webkit-slider-thumb]:hover:border-[var(--color-blue-800)]',\n '[&::-moz-range-thumb]:border-[var(--color-gray-200)] [&::-moz-range-thumb]:hover:border-[var(--color-blue-800)]',\n ],\n orange: [\n 'focus-visible:ring-[var(--color-orange-200)]',\n '[&::-webkit-slider-thumb]:border-[var(--color-gray-200)] [&::-webkit-slider-thumb]:hover:border-[var(--color-orange-800)]',\n '[&::-moz-range-thumb]:border-[var(--color-gray-200)] [&::-moz-range-thumb]:hover:border-[var(--color-orange-800)]',\n ],\n },\n animated: {\n true: [\n '[&::-webkit-slider-thumb]:animate-pulse',\n '[&::-moz-range-thumb]:animate-pulse',\n ],\n false: [],\n },\n },\n defaultVariants: {\n variant: 'cyan',\n animated: false,\n },\n },\n);\n","// React\nimport { InputHTMLAttributes, forwardRef } from 'react';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport { rangeInputStyles } from './RangeInput.styles';\n\nexport interface RangeInputProps extends InputHTMLAttributes<HTMLInputElement> {\n variant?: 'cyan' | 'orange';\n animated?: boolean;\n}\n\nexport const RangeInput = forwardRef<HTMLInputElement, RangeInputProps>(\n ({ className, variant = 'cyan', animated = false, style, ...props }, ref) => {\n const { min = 0, max = 100, value, defaultValue } = props;\n const currentValue = Number(value ?? defaultValue ?? 0);\n const minVal = Number(min);\n const maxVal = Number(max);\n\n // Calculate percentage for the gradient fill\n const percentage = Math.min(\n Math.max(((currentValue - minVal) * 100) / (maxVal - minVal), 0),\n 100,\n );\n\n const trackColor =\n variant === 'orange'\n ? 'var(--color-orange-800)'\n : 'var(--color-blue-800)';\n\n // We use a linear gradient to simulate the progress bar\n // The first part is the \"filled\" part (accent color)\n // The second part is the \"empty\" part (gray-200)\n const backgroundStyle = `linear-gradient(to right, ${trackColor} 0%, ${trackColor} ${percentage}%, var(--color-gray-200) ${percentage}%, var(--color-gray-200) 100%)`;\n\n return (\n <input\n ref={ref}\n type=\"range\"\n className={cn(rangeInputStyles({ variant, animated }), className)}\n style={{\n background: backgroundStyle,\n ...style,\n }}\n {...props}\n />\n );\n },\n);\n\nRangeInput.displayName = 'RangeInput';\n","import { cva } from 'class-variance-authority';\n\nexport const sidebarItemStyles = cva(\n 'box-border flex cursor-pointer transition-all duration-200 focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-2',\n {\n variants: {\n type: {\n collapsed: 'flex-col items-center justify-center w-[64px] py-[6px] px-[4px] gap-[4px] rounded-[4px]',\n expanded: 'flex-row items-center w-full h-[32px] px-[4px] py-[6px] gap-[8px] rounded-[4px]',\n },\n variant: {\n default: 'text-[var(--color-gray-800)] hover:bg-[var(--color-gray-100)]',\n active: 'text-[var(--color-blue-800)] bg-[var(--color-blue-200)]',\n brand: 'h-[44px] rounded-[24px] bg-transparent hover:bg-transparent', // Special case for brand logo\n },\n },\n compoundVariants: [\n {\n type: 'collapsed',\n variant: 'active',\n className: 'bg-[var(--color-blue-200)]',\n },\n ],\n defaultVariants: {\n type: 'expanded',\n variant: 'default',\n },\n }\n);\n\nexport const sidebarItemIconStyles = cva(\n 'relative shrink-0 flex items-center justify-center',\n {\n variants: {\n type: {\n collapsed: 'size-[16px]',\n expanded: 'size-[16px]',\n },\n variant: {\n default: 'text-[var(--color-gray-800)]',\n active: 'text-[var(--color-blue-800)]',\n brand: 'text-[var(--color-blue-1000)] size-[24px]',\n },\n },\n defaultVariants: {\n type: 'expanded',\n variant: 'default',\n },\n }\n);\n\nexport const sidebarItemLabelStyles = cva(\n 'font-normal whitespace-nowrap shrink-0',\n {\n variants: {\n type: {\n collapsed: 'text-[8px] leading-[10px] text-center min-w-full',\n expanded: 'text-[14px] leading-[20px]',\n },\n variant: {\n default: 'text-[var(--color-gray-800)]',\n active: 'text-[var(--color-blue-800)]',\n brand: 'hidden', // Brand variant usually just shows logo in collapsed, or text in expanded? Figma shows only Logo A in collapsed brand.\n },\n },\n defaultVariants: {\n type: 'expanded',\n variant: 'default',\n },\n }\n);\n","// React\nimport { HTMLAttributes, forwardRef, ReactNode } from 'react';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport { sidebarItemStyles, sidebarItemIconStyles, sidebarItemLabelStyles } from './SidebarItem.styles';\n\nexport interface SidebarItemProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** The icon to display */\n icon?: ReactNode;\n /** The label text */\n label: string;\n /** Whether the item is in collapsed state */\n isCollapsed?: boolean;\n /** Whether the item is active/selected */\n isActive?: boolean;\n /** Variant of the item */\n variant?: 'default' | 'brand';\n /** Click handler */\n onClick?: () => void;\n}\n\nexport const SidebarItem = forwardRef<HTMLDivElement, SidebarItemProps>(\n (\n {\n className,\n icon,\n label,\n isCollapsed = false,\n isActive = false,\n variant = 'default',\n onClick,\n children,\n ...props\n },\n ref\n ) => {\n const type = isCollapsed ? 'collapsed' : 'expanded';\n // Map component props to style variant\n const styleVariant = isActive ? 'active' : variant;\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (onClick && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n onClick();\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(sidebarItemStyles({ type, variant: styleVariant }), className)}\n role=\"button\"\n tabIndex={0}\n aria-label={label}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {icon && (\n <div className={cn(sidebarItemIconStyles({ type, variant: styleVariant }))}>\n {icon}\n </div>\n )}\n\n {(variant !== 'brand' || !isCollapsed) && (\n <span className={cn(sidebarItemLabelStyles({ type, variant: styleVariant }))}>\n {label}\n </span>\n )}\n </div>\n );\n }\n);\n\nSidebarItem.displayName = 'SidebarItem';\n","import { cva } from 'class-variance-authority';\n\nexport const tagStyles = cva(\n 'inline-flex items-center justify-center rounded-[4px] whitespace-nowrap transition-colors duration-200 box-border',\n {\n variants: {\n variant: {\n default:\n 'border border-[var(--color-gray-200)] bg-[var(--color-gray-100)] px-2 py-[2px] text-[var(--color-gray-800)] gap-1',\n collaborator:\n 'border border-[var(--color-gray-200)] bg-[var(--color-gray-100)] px-2 py-[2px] text-[var(--color-gray-800)] gap-1',\n indicator:\n 'bg-[var(--color-gray-100)] px-[2px] h-[12px] gap-[4px] text-[var(--color-gray-600)]',\n error:\n 'bg-[var(--color-red-200)] px-[2px] h-[12px] gap-[4px] text-[var(--color-red-1000)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport const tagAvatarStyles = cva(\n 'w-4 h-4 rounded-full object-cover shrink-0'\n);\n\nexport const tagIconStyles = cva(\n 'flex items-center justify-center shrink-0'\n);\n","// React\nimport { HTMLAttributes, ReactNode, forwardRef } from 'react';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport { tagStyles, tagAvatarStyles, tagIconStyles } from './Tag.styles';\n\n// Components\nimport { Typography } from '@/components/atoms/Typography/Typography';\n\nexport interface TagProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'default' | 'indicator' | 'collaborator' | 'error';\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n avatarSrc?: string;\n}\n\nexport const Tag = forwardRef<HTMLDivElement, TagProps>(\n (\n {\n className,\n variant = 'default',\n startIcon,\n endIcon,\n avatarSrc,\n children,\n ...props\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={cn(tagStyles({ variant }), className)}\n {...props}\n >\n {avatarSrc && (\n <img src={avatarSrc} alt=\"avatar\" className={tagAvatarStyles()} />\n )}\n {startIcon && <span className={tagIconStyles()}>{startIcon}</span>}\n <Typography variant=\"tag\" color=\"inherit\" className=\"whitespace-nowrap\">\n {children}\n </Typography>\n {endIcon && <span className={tagIconStyles()}>{endIcon}</span>}\n </div>\n );\n },\n);\n\nTag.displayName = 'Tag';\n","import { cva } from 'class-variance-authority';\n\nexport const tabsListStyles = cva(\n 'inline-flex h-8 items-center justify-start rounded-none bg-transparent p-0 text-muted-foreground w-full relative'\n);\n\nexport const tabsTriggerStyles = cva(\n 'inline-flex items-center justify-center whitespace-nowrap px-2 py-2 text-[10px] leading-4 font-normal transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-[var(--color-blue-200)] data-[state=active]:text-[var(--color-blue-1000)] data-[state=active]:shadow-none border-b border-[var(--color-gray-200)] data-[state=active]:border-[var(--color-blue-200)] text-[var(--color-gray-600)] gap-2 hover:bg-[var(--color-gray-50)] hover:text-[var(--color-gray-800)] cursor-pointer group relative',\n {\n variants: {\n variant: {\n default: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport const tabsContentStyles = cva(\n 'mt-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-2'\n);\n\nexport const tabsIndicatorStyles = cva(\n 'absolute bottom-0 left-0 right-0 h-[2px] bg-[var(--color-blue-1000)] bg-opacity-20'\n);\n\nexport const tabsBadgeContainerStyles = cva(\n 'flex items-center gap-[2px]'\n);\n\nexport const tabsTagStyles = cva(\n 'group-data-[state=active]:text-[var(--color-blue-1000)]'\n);\n","// react / next\nimport * as React from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport { motion } from 'framer-motion';\n\n// components\nimport { Tag } from '@/components/molecules/Tag/Tag';\nimport { Settings, TriangleAlert } from '@/components/atoms/icons';\n\n// utils\nimport { cn } from '@/utils/cn';\n\n// styles\nimport {\n tabsListStyles,\n tabsTriggerStyles,\n tabsContentStyles,\n tabsIndicatorStyles,\n tabsBadgeContainerStyles,\n tabsTagStyles\n} from './Tabs.styles';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn(tabsListStyles(), className)}\n {...props}\n />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\ninterface TabsTriggerProps\n extends React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> {\n errorCount?: number;\n configurationCount?: number;\n children?: React.ReactNode;\n value: string;\n}\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n TabsTriggerProps\n>(({ className, children, errorCount, configurationCount, ...props }, ref) => {\n const [isActive, setIsActive] = React.useState(false);\n const internalRef = React.useRef<HTMLButtonElement | null>(null);\n\n React.useEffect(() => {\n const element = internalRef.current;\n if (!element) return;\n\n const observer = new MutationObserver(() => {\n setIsActive(element.getAttribute('data-state') === 'active');\n });\n\n observer.observe(element, {\n attributes: true,\n attributeFilter: ['data-state'],\n });\n\n setIsActive(element.getAttribute('data-state') === 'active');\n\n return () => observer.disconnect();\n }, []);\n\n const setRefs = React.useCallback(\n (node: HTMLButtonElement | null) => {\n internalRef.current = node;\n\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLButtonElement | null>).current = node;\n }\n },\n [ref]\n );\n\n return (\n <TabsPrimitive.Trigger\n ref={setRefs}\n className={cn(tabsTriggerStyles(), className)}\n {...props}\n >\n {children}\n {(configurationCount !== undefined || errorCount !== undefined) && (\n <div className={tabsBadgeContainerStyles()}>\n {configurationCount !== undefined && (\n <Tag\n variant=\"indicator\"\n startIcon={<Settings size={10} className=\"text-[#15B1CD]\" />}\n className={tabsTagStyles()}\n >\n {configurationCount}\n </Tag>\n )}\n {errorCount !== undefined && (\n <Tag\n variant=\"indicator\"\n startIcon={<TriangleAlert size={10} className=\"text-[#FB6060]\" />}\n className={tabsTagStyles()}\n >\n {errorCount}\n </Tag>\n )}\n </div>\n )}\n <motion.div\n className={tabsIndicatorStyles()}\n initial={false}\n animate={{\n scaleX: isActive ? 1 : 0,\n opacity: isActive ? 1 : 0,\n }}\n transition={{ duration: 0.3, ease: 'easeInOut' }}\n style={{ originX: 0 }}\n />\n </TabsPrimitive.Trigger>\n );\n});\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(tabsContentStyles(), className)}\n {...props}\n asChild\n >\n <motion.div\n initial={{ opacity: 0, y: 10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n transition={{ duration: 0.2, ease: 'easeOut' }}\n >\n {props.children}\n </motion.div>\n </TabsPrimitive.Content>\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import { cva } from 'class-variance-authority';\n\nexport const textAreaStyles = cva(\n 'w-full bg-[var(--color-white)] border border-solid rounded-[8px] font-normal transition-colors duration-200 box-border focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-1 disabled:cursor-not-allowed disabled:opacity-50 min-h-[80px]',\n {\n variants: {\n status: {\n default:\n 'border-[var(--color-gray-200)] text-[var(--color-gray-600)] placeholder:text-[var(--color-gray-600)] focus:border-[var(--color-blue-1000)] focus:text-[var(--color-blue-1000)]',\n error:\n 'border-[var(--color-red-1000)] text-[var(--color-red-1000)] placeholder:text-[var(--color-red-1000)] focus:border-[var(--color-red-1000)]',\n success:\n 'border-[var(--color-green-1000)] text-[var(--color-green-1000)] placeholder:text-[var(--color-green-1000)] focus:border-[var(--color-green-1000)]',\n },\n size: {\n medium: 'px-4 py-4 text-[1rem] leading-[1.5rem]', // 16px/24px\n small: 'px-3 py-2 text-[0.875rem] leading-[1.25rem]', // 14px/20px\n tiny: 'p-2 text-[0.75rem] leading-[1rem]', // 12px/16px\n },\n resize: {\n none: 'resize-none',\n vertical: 'resize-y',\n horizontal: 'resize-x',\n both: 'resize',\n },\n },\n defaultVariants: {\n status: 'default',\n size: 'medium',\n resize: 'vertical',\n },\n }\n);\n\nexport const textAreaContainerStyles = cva('relative w-full', {\n variants: {\n size: {\n medium: '',\n small: '',\n tiny: '',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n});\n","import { TextareaHTMLAttributes, forwardRef } from 'react';\nimport { cn } from '@/utils/cn';\nimport {\n textAreaStyles,\n textAreaContainerStyles,\n} from './TextArea.styles';\n\nexport interface TextAreaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {\n status?: 'default' | 'error' | 'success';\n size?: 'medium' | 'small' | 'tiny';\n resize?: 'none' | 'vertical' | 'horizontal' | 'both';\n}\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n className,\n status = 'default',\n size = 'medium',\n resize = 'vertical',\n disabled,\n ...props\n },\n ref\n ) => {\n return (\n <div className={textAreaContainerStyles({ size })}>\n <textarea\n ref={ref}\n className={cn(\n textAreaStyles({ status, size, resize }),\n className\n )}\n disabled={disabled}\n {...props}\n />\n </div>\n );\n }\n);\n\nTextArea.displayName = 'TextArea';\n","import { cva } from 'class-variance-authority';\n\nexport const timestampContainerStyles = cva(\n 'inline-flex items-center gap-1 font-sans whitespace-nowrap',\n {\n variants: {\n size: {\n small: 'text-[0.625rem] leading-[1rem]', // 10px / 16px\n medium: 'text-[0.75rem] leading-[1rem]', // 12px / 16px\n large: 'text-[0.875rem] leading-[1.25rem]', // 14px / 20px\n },\n variant: {\n default: 'text-[var(--color-gray-600)]',\n primary: 'text-[var(--color-gray-800)]',\n muted: 'text-[var(--color-gray-600)]',\n },\n },\n defaultVariants: {\n size: 'medium',\n variant: 'default',\n },\n },\n);\n\nexport const timestampIconStyles = cva(\n 'flex items-center justify-center shrink-0',\n {\n variants: {\n size: {\n small: '[&>svg]:w-[10px] [&>svg]:h-[10px]',\n medium: '[&>svg]:w-[12px] [&>svg]:h-[12px]',\n large: '[&>svg]:w-[14px] [&>svg]:h-[14px]',\n },\n },\n defaultVariants: {\n size: 'medium',\n },\n },\n);\n","// React\nimport { HTMLAttributes, forwardRef, useMemo } from 'react';\n\n// Components\nimport { ClockHistory } from '@/components/atoms/icons';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport {\n timestampContainerStyles,\n timestampIconStyles,\n} from './Timestamp.styles';\n\nexport type TimestampFormat =\n | 'relative'\n | 'short'\n | 'long'\n | 'time'\n | 'datetime';\n\nexport interface TimestampProps\n extends Omit<HTMLAttributes<HTMLTimeElement>, 'dateTime'> {\n /** The date to display - can be a Date object, timestamp number, or ISO string */\n date: Date | number | string;\n /** The format to display the timestamp */\n format?: TimestampFormat;\n /** Size variant */\n size?: 'small' | 'medium' | 'large';\n /** Color variant */\n variant?: 'default' | 'primary' | 'muted';\n /** Whether to show the clock icon */\n showIcon?: boolean;\n /** Custom locale for date formatting (default: 'en-US') */\n locale?: string;\n}\n\n/**\n * Formats a relative time string (e.g., \"2 hours ago\", \"in 3 days\")\n */\nconst formatRelativeTime = (date: Date, now: Date): string => {\n const diffMs = now.getTime() - date.getTime();\n const diffSeconds = Math.floor(diffMs / 1000);\n const diffMinutes = Math.floor(diffSeconds / 60);\n const diffHours = Math.floor(diffMinutes / 60);\n const diffDays = Math.floor(diffHours / 24);\n const diffWeeks = Math.floor(diffDays / 7);\n const diffMonths = Math.floor(diffDays / 30);\n const diffYears = Math.floor(diffDays / 365);\n\n const isFuture = diffMs < 0;\n const absSeconds = Math.abs(diffSeconds);\n const absMinutes = Math.abs(diffMinutes);\n const absHours = Math.abs(diffHours);\n const absDays = Math.abs(diffDays);\n const absWeeks = Math.abs(diffWeeks);\n const absMonths = Math.abs(diffMonths);\n const absYears = Math.abs(diffYears);\n\n const formatUnit = (value: number, unit: string): string => {\n const plural = value === 1 ? '' : 's';\n if (isFuture) {\n return `in ${value} ${unit}${plural}`;\n }\n return `${value} ${unit}${plural} ago`;\n };\n\n if (absSeconds < 60) {\n return 'just now';\n }\n if (absMinutes < 60) {\n return formatUnit(absMinutes, 'minute');\n }\n if (absHours < 24) {\n return formatUnit(absHours, 'hour');\n }\n if (absDays === 1) {\n return isFuture ? 'tomorrow' : 'yesterday';\n }\n if (absDays < 7) {\n return formatUnit(absDays, 'day');\n }\n if (absWeeks < 4) {\n return formatUnit(absWeeks, 'week');\n }\n if (absMonths < 12) {\n return formatUnit(absMonths, 'month');\n }\n return formatUnit(absYears, 'year');\n};\n\n/**\n * Formats a date based on the specified format\n */\nconst formatDate = (\n date: Date,\n format: TimestampFormat,\n locale: string,\n): string => {\n switch (format) {\n case 'relative':\n return formatRelativeTime(date, new Date());\n\n case 'short':\n return date.toLocaleDateString(locale, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n });\n\n case 'long':\n return date.toLocaleDateString(locale, {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n });\n\n case 'time':\n return date.toLocaleTimeString(locale, {\n hour: 'numeric',\n minute: '2-digit',\n hour12: true,\n });\n\n case 'datetime':\n return date.toLocaleDateString(locale, {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n hour12: true,\n });\n\n default:\n return date.toLocaleDateString(locale);\n }\n};\n\n/**\n * Parses the input date to a Date object\n */\nconst parseDate = (date: Date | number | string): Date => {\n if (date instanceof Date) {\n return date;\n }\n if (typeof date === 'number') {\n return new Date(date);\n }\n return new Date(date);\n};\n\nexport const Timestamp = forwardRef<HTMLTimeElement, TimestampProps>(\n (\n {\n className,\n date,\n format = 'relative',\n size = 'medium',\n variant = 'default',\n showIcon = false,\n locale = 'en-US',\n ...props\n },\n ref,\n ) => {\n const parsedDate = useMemo(() => parseDate(date), [date]);\n const formattedDate = useMemo(\n () => formatDate(parsedDate, format, locale),\n [parsedDate, format, locale],\n );\n const isoString = useMemo(() => parsedDate.toISOString(), [parsedDate]);\n\n // Icon color based on variant\n const iconColor =\n variant === 'primary' ? 'var(--color-gray-800)' : 'var(--color-gray-600)';\n\n // Icon size based on size prop\n const iconSize = size === 'small' ? 10 : size === 'large' ? 14 : 12;\n\n return (\n <time\n ref={ref}\n dateTime={isoString}\n className={cn(timestampContainerStyles({ size, variant }), className)}\n {...props}\n >\n {showIcon && (\n <span className={timestampIconStyles({ size })}>\n <ClockHistory size={iconSize} color={iconColor} />\n </span>\n )}\n {formattedDate}\n </time>\n );\n },\n);\n\nTimestamp.displayName = 'Timestamp';\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const toastStyles = cva(\n 'flex min-w-[420px] w-fit max-w-[850px] pl-4 pr-3 py-3 rounded-[12px] shadow-xl border pointer-events-auto gap-2 relative items-center bg-white',\n {\n variants: {\n variant: {\n info: 'bg-[linear-gradient(90deg,rgba(21,177,205,0.08)_0%,rgba(21,177,205,0.08)_100%),linear-gradient(90deg,rgb(255,255,255)_0%,rgb(255,255,255)_100%)] border-[var(--color-blue-800)]',\n success: 'bg-[linear-gradient(90deg,rgba(113,212,129,0.08)_0%,rgba(113,212,129,0.08)_100%),linear-gradient(90deg,rgb(255,255,255)_0%,rgb(255,255,255)_100%)] border-[var(--color-green-1000)]',\n warning:\n 'bg-[linear-gradient(90deg,rgba(242,229,40,0.08)_0%,rgba(242,229,40,0.08)_100%),linear-gradient(90deg,rgb(255,255,255)_0%,rgb(255,255,255)_100%)] border-[var(--color-orange-800)]',\n error: 'bg-[linear-gradient(90deg,rgba(251,96,96,0.08)_0%,rgba(251,96,96,0.08)_100%),linear-gradient(90deg,rgb(255,255,255)_0%,rgb(255,255,255)_100%)] border-[var(--color-red-1000)]',\n prompt: 'bg-[var(--color-gray-50)] border-[var(--color-blue-1000)]',\n },\n },\n defaultVariants: {\n variant: 'info',\n },\n },\n);\n\nexport type ToastVariant = NonNullable<\n VariantProps<typeof toastStyles>['variant']\n>;\n\nexport const iconStyles = cva('flex-shrink-0', {\n variants: {\n variant: {\n info: 'text-[var(--color-blue-800)]',\n success: 'text-[var(--color-green-1000)]',\n warning: 'text-[var(--color-orange-800)]',\n error: 'text-[var(--color-red-1000)]',\n prompt: 'text-[var(--color-blue-1000)]',\n },\n },\n defaultVariants: {\n variant: 'info',\n },\n});\n\nexport const contentStyles = cva(\n 'flex items-center gap-1 flex-1',\n);\n\nexport const titleStyles = cva(\n 'font-bold text-[var(--color-blue-1000)] text-[0.75rem] leading-normal',\n);\n\nexport const descriptionStyles = cva(\n 'font-normal text-[var(--color-blue-1000)] text-[0.75rem] leading-normal',\n);\n\nexport const actionsWrapperStyles = cva(\n 'flex items-center gap-2 shrink-0',\n);\n\nexport const separatorStyles = cva(\n 'w-[1px] self-stretch flex-shrink-0 bg-current',\n {\n variants: {\n variant: {\n info: 'text-[var(--color-blue-800)]',\n success: 'text-[var(--color-green-1000)]',\n warning: 'text-[var(--color-orange-800)]',\n error: 'text-[var(--color-red-1000)]',\n prompt: 'text-[var(--color-blue-1000)]',\n },\n },\n defaultVariants: {\n variant: 'info',\n },\n },\n);\n\nexport const closeButtonStyles = cva(\n 'p-0 bg-transparent border-none text-[var(--color-blue-1000)] hover:opacity-70 transition-opacity flex items-center justify-center w-4 h-4 shrink-0 cursor-pointer',\n);\n","// react\nimport { ReactNode } from 'react';\nimport { toast, Toaster as SonnerToaster, ToasterProps } from 'sonner';\n\n// components\nimport { Button } from '../Button/Button';\nimport {\n Info,\n TriangleAlert,\n X,\n Check,\n CheckCircle,\n AlertCircle,\n Sparks,\n Trash,\n} from '@/components/atoms/icons';\n\n// styles\nimport {\n toastStyles,\n iconStyles,\n contentStyles,\n titleStyles,\n descriptionStyles,\n closeButtonStyles,\n actionsWrapperStyles,\n separatorStyles,\n ToastVariant,\n} from './Toast.styles';\n\n// misc\nimport { cn } from '@/utils/cn';\n\nexport type { ToastVariant };\n\nexport interface ToastAction {\n label: string;\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => void;\n icon?: ReactNode;\n}\n\nexport interface ToastProps {\n id?: string | number;\n variant?: ToastVariant;\n title: string;\n description?: ReactNode;\n icon?: ReactNode;\n action?: ToastAction;\n secondaryAction?: ToastAction;\n onClose?: () => void;\n}\n\nconst icons = {\n info: Info,\n success: CheckCircle,\n warning: TriangleAlert,\n error: AlertCircle,\n prompt: Sparks,\n};\n\nconst iconColors = {\n info: 'var(--color-blue-800)',\n success: 'var(--color-green-1000)',\n warning: 'var(--color-orange-800)',\n error: 'var(--color-red-1000)',\n prompt: 'var(--color-blue-800)',\n};\n\nexport const Toast = ({\n id,\n variant = 'info',\n title,\n description,\n icon,\n action,\n secondaryAction,\n onClose,\n}: ToastProps) => {\n const IconComponent = icons[variant];\n const iconColor = iconColors[variant];\n\n const handleClose = () => {\n if (onClose) {\n onClose();\n }\n if (id) {\n toast.dismiss(id);\n }\n };\n\n const handleActionClick = (\n onClick: (e: React.MouseEvent<HTMLButtonElement>) => void,\n ) => {\n return (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick(e);\n if (id) {\n toast.dismiss(id);\n }\n };\n };\n\n const renderIcon = () => {\n if (icon) return icon;\n\n // Render custom icons with color prop\n if (variant === 'success') {\n return <CheckCircle size={16} color={iconColor} />;\n }\n if (variant === 'error') {\n return <AlertCircle size={16} color={iconColor} />;\n }\n if (variant === 'prompt') {\n return <Sparks size={16} color={iconColor} />;\n }\n\n // Lucide icons inherit color from CSS\n return <IconComponent size={16} />;\n };\n\n return (\n <div className={cn(toastStyles({ variant }))} role=\"alert\">\n <div className={iconStyles({ variant })}>{renderIcon()}</div>\n\n <div className={contentStyles()}>\n <span className={titleStyles()}>{title}</span>\n {description && (\n <span className={descriptionStyles()}>{description}</span>\n )}\n </div>\n\n <div className={separatorStyles({ variant })} />\n\n <div className={actionsWrapperStyles()}>\n {secondaryAction && (\n <Button\n onClick={handleActionClick(secondaryAction.onClick)}\n variant=\"tertiary\"\n size=\"small\"\n startIcon={\n secondaryAction.icon || <Trash size={13} color=\"currentColor\" />\n }\n className=\"w-auto\"\n >\n {secondaryAction.label}\n </Button>\n )}\n\n {action && (\n <Button\n onClick={handleActionClick(action.onClick)}\n variant=\"primary\"\n size=\"small\"\n startIcon={action.icon || <Check size={13} color=\"currentColor\" />}\n className=\"w-auto\"\n >\n {action.label}\n </Button>\n )}\n\n <button\n onClick={handleClose}\n className={closeButtonStyles()}\n aria-label=\"Close\"\n >\n <X size={16} />\n </button>\n </div>\n </div>\n );\n};\n\nexport interface ToastContainerProps extends Omit<ToasterProps, 'position'> {\n /** Position of the toast container */\n position?: ToasterProps['position'];\n /** Offset from the edge of the screen in pixels */\n offset?: number | string;\n /** Gap between toasts in pixels */\n gap?: number;\n /** Custom width for toasts */\n width?: number | string;\n}\n\n// Custom Toast Container configured for our design system\nexport const ToastContainer = ({\n position = 'bottom-right',\n offset = 24,\n gap = 8,\n width,\n ...props\n}: ToastContainerProps) => {\n return (\n <SonnerToaster\n position={position}\n offset={offset}\n gap={gap}\n toastOptions={{\n unstyled: true,\n classNames: {\n toast: cn('bg-transparent p-0', width ? '' : 'w-auto'),\n },\n style: width ? { width: typeof width === 'number' ? `${width}px` : width } : undefined,\n }}\n {...props}\n />\n );\n};\n\n// Helper to show toasts easier\nexport const showToast = {\n success: (title: string, description?: string, action?: ToastAction) =>\n toast.custom((id) => (\n <Toast\n id={id}\n variant=\"success\"\n title={title}\n description={description}\n action={action}\n />\n )),\n error: (title: string, description?: string, action?: ToastAction) =>\n toast.custom((id) => (\n <Toast\n id={id}\n variant=\"error\"\n title={title}\n description={description}\n action={action}\n />\n )),\n warning: (title: string, description?: string, action?: ToastAction) =>\n toast.custom((id) => (\n <Toast\n id={id}\n variant=\"warning\"\n title={title}\n description={description}\n action={action}\n />\n )),\n info: (title: string, description?: string, action?: ToastAction) =>\n toast.custom((id) => (\n <Toast\n id={id}\n variant=\"info\"\n title={title}\n description={description}\n action={action}\n />\n )),\n prompt: (\n title: string,\n description?: string,\n action?: ToastAction,\n secondaryAction?: ToastAction,\n ) =>\n toast.custom((id) => (\n <Toast\n id={id}\n variant=\"prompt\"\n title={title}\n description={description}\n action={action}\n secondaryAction={secondaryAction}\n />\n )),\n custom: (props: Omit<ToastProps, 'id'>) =>\n toast.custom((id) => <Toast id={id} {...props} />),\n};\n","import { cva } from 'class-variance-authority';\n\nexport const toggleRowStyles = cva('flex items-center gap-3');\n\nexport const toggleLabelStyles = cva(\n 'text-[var(--color-gray-1000)] font-medium select-none',\n);\n\nexport const toggleButtonStyles = cva(\n 'relative inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n {\n variants: {\n enabled: {\n true: 'bg-[var(--color-blue-800)]',\n false: 'bg-[var(--color-gray-200)]',\n },\n },\n defaultVariants: {\n enabled: false,\n },\n },\n);\n\nexport const toggleKnobStyles = cva(\n 'pointer-events-none inline-block h-[20px] w-[20px] transform rounded-full bg-[var(--color-white)] shadow-lg ring-0 transition duration-200 ease-in-out',\n {\n variants: {\n enabled: {\n true: 'translate-x-[20px]',\n false: 'translate-x-0',\n },\n },\n defaultVariants: {\n enabled: false,\n },\n },\n);\n","// React\nimport { forwardRef, ButtonHTMLAttributes } from 'react';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport {\n toggleRowStyles,\n toggleLabelStyles,\n toggleButtonStyles,\n toggleKnobStyles,\n} from './Toggle.styles';\n\n// Components\nimport { Typography } from '@/components/atoms/Typography/Typography';\n\nexport interface ToggleProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\n enabled: boolean;\n onChange: (enabled: boolean) => void;\n label?: string;\n}\n\nexport const Toggle = forwardRef<HTMLButtonElement, ToggleProps>(\n ({ enabled, onChange, label, className, disabled, ...props }, ref) => {\n return (\n <div className={cn(toggleRowStyles(), className)}>\n {label && (\n <Typography variant=\"small\" className={toggleLabelStyles()}>\n {label}\n </Typography>\n )}\n <button\n ref={ref}\n type=\"button\"\n role=\"switch\"\n aria-checked={enabled}\n disabled={disabled}\n onClick={() => !disabled && onChange(!enabled)}\n className={toggleButtonStyles({ enabled })}\n {...props}\n >\n <span className={toggleKnobStyles({ enabled })} />\n </button>\n </div>\n );\n },\n);\n\nToggle.displayName = 'Toggle';\n","import { cva } from 'class-variance-authority';\n\nexport const statusMessageContainerStyles = cva(\n 'flex items-center justify-between w-full gap-2 min-h-[20px]'\n);\n\nexport const statusMessageTextStyles = cva(\n 'text-xs font-normal font-sans leading-4 whitespace-nowrap',\n {\n variants: {\n status: {\n success: 'text-[var(--color-gray-800)]',\n warning: 'text-[var(--color-gray-800)]',\n error: 'text-[var(--color-gray-800)]',\n info: 'text-[var(--color-gray-800)]',\n neutral: 'text-[var(--color-gray-800)]',\n loading: 'text-[var(--color-gray-800)]',\n },\n },\n defaultVariants: {\n status: 'neutral',\n },\n }\n);\n\nexport const statusMessageIconStyles = cva(\n 'w-4 h-4',\n {\n variants: {\n status: {\n success: 'text-[var(--color-green-1000)]',\n warning: 'text-[var(--color-orange-800)]',\n error: 'text-[var(--color-red-1000)]',\n info: 'text-[var(--color-blue-800)]',\n neutral: 'text-[var(--color-gray-600)]',\n loading: 'text-[var(--color-blue-800)]', // Matches Running/Info color\n },\n },\n defaultVariants: {\n status: 'neutral',\n },\n }\n);\n\n","import { HTMLAttributes, forwardRef } from 'react';\nimport { cn } from '@/utils/cn';\nimport { StatusIndicator } from '@/components/atoms/StatusIndicator/StatusIndicator';\nimport { CheckCircle, AlertCircle, TriangleAlert, Loader, Info } from '@/components/atoms/icons';\nimport {\n statusMessageContainerStyles,\n statusMessageTextStyles,\n} from './StatusMessage.styles';\n\nexport interface StatusMessageProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n status?: 'success' | 'warning' | 'error' | 'info' | 'neutral' | 'loading';\n message: string;\n}\n\n// Icon colors matching StatusIndicator dot colors\nconst iconColors = {\n success: 'var(--color-green-1000)',\n warning: 'var(--color-orange-800)',\n error: 'var(--color-red-1000)',\n info: 'var(--color-blue-800)',\n neutral: 'var(--color-gray-600)',\n loading: 'var(--color-blue-800)',\n};\n\nexport const StatusMessage = forwardRef<HTMLDivElement, StatusMessageProps>(\n ({ className, status = 'neutral', message, ...props }, ref) => {\n // Map status to StatusIndicator variant\n const indicatorVariant = status === 'loading' ? 'info' : status;\n const iconColor = iconColors[status];\n\n // Map status to Icon\n const renderIcon = () => {\n if (status === 'loading') {\n return <Loader size={16} color={iconColor} className=\"animate-spin\" />;\n }\n if (status === 'success') {\n return <CheckCircle size={16} color={iconColor} />;\n }\n if (status === 'warning') {\n return <TriangleAlert size={16} color={iconColor} />;\n }\n if (status === 'error') {\n return <AlertCircle size={16} color={iconColor} />;\n }\n if (status === 'info') {\n return <Info size={16} color={iconColor} />;\n }\n return null;\n };\n\n return (\n <div\n ref={ref}\n className={cn(statusMessageContainerStyles(), className)}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n <StatusIndicator variant={indicatorVariant} size=\"small\" />\n <span className={statusMessageTextStyles({ status })}>{message}</span>\n </div>\n <div className=\"w-4 h-4 flex items-center justify-center\">\n {renderIcon()}\n </div>\n </div>\n );\n }\n);\n\nStatusMessage.displayName = 'StatusMessage';\n\n","import { cva } from 'class-variance-authority';\n\nexport const autopilotActionContainerStyles = cva(\n 'flex items-center justify-between w-full gap-2 min-h-[20px]'\n);\n\nexport const autopilotActionContentStyles = cva(\n 'flex items-center gap-2'\n);\n\nexport const autopilotActionTextStyles = cva(\n 'text-[12px] font-normal font-sans leading-[16px]',\n {\n variants: {\n status: {\n running: 'text-[var(--color-gray-800)]',\n completed: 'text-[var(--color-gray-800)]',\n stopped: 'text-[var(--color-blue-800)]',\n },\n },\n defaultVariants: {\n status: 'running',\n },\n }\n);\n\nexport const autopilotActionIconContainerStyles = cva(\n 'w-4 h-4 flex items-center justify-center shrink-0'\n);\n","// React\nimport { HTMLAttributes, forwardRef } from 'react';\n\n// Components\nimport { Hexagon, CheckCircle, Pause, Hand } from '@/components/atoms/icons';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport {\n autopilotActionContainerStyles,\n autopilotActionContentStyles,\n autopilotActionTextStyles,\n autopilotActionIconContainerStyles,\n} from './AutopilotAction.styles';\n\nexport interface AutopilotActionProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n /** The status of the autopilot action */\n status?: 'running' | 'completed' | 'stopped';\n /** The message to display */\n message: string;\n}\n\n/** Color mapping for hexagon and action icons based on status */\nconst statusColors = {\n running: 'var(--color-gray-800)',\n completed: 'var(--color-gray-800)',\n stopped: 'var(--color-blue-800)',\n};\n\n/** Color for the action icon on the right side */\nconst actionIconColors = {\n running: 'var(--color-gray-800)',\n completed: 'var(--color-green-1000)',\n stopped: 'var(--color-blue-800)',\n};\n\nexport const AutopilotAction = forwardRef<HTMLDivElement, AutopilotActionProps>(\n ({ className, status = 'running', message, ...props }, ref) => {\n const hexagonColor = statusColors[status];\n const actionIconColor = actionIconColors[status];\n\n /** Renders the appropriate action icon based on status */\n const renderActionIcon = () => {\n if (status === 'completed') {\n return <CheckCircle size={16} color={actionIconColor} />;\n }\n if (status === 'stopped') {\n return <Hand size={16} color={actionIconColor} />;\n }\n // Default: running\n return <Pause size={16} color={actionIconColor} />;\n };\n\n return (\n <div\n ref={ref}\n className={cn(autopilotActionContainerStyles(), className)}\n {...props}\n >\n <div className={autopilotActionContentStyles()}>\n <div className={autopilotActionIconContainerStyles()}>\n <Hexagon size={16} color={hexagonColor} />\n </div>\n <span className={autopilotActionTextStyles({ status })}>{message}</span>\n </div>\n <div className={autopilotActionIconContainerStyles()}>\n {renderActionIcon()}\n </div>\n </div>\n );\n }\n);\n\nAutopilotAction.displayName = 'AutopilotAction';\n","import { cva } from 'class-variance-authority';\n\nexport const tooltipContentStyles = cva(\n 'z-50 rounded-[4px] px-3 py-3 shadow-[0px_8px_8px_-4px_rgba(0,0,0,0.04),0px_20px_24px_-4px_rgba(0,0,0,0.08)] max-w-[var(--radix-tooltip-content-available-width)] origin-[var(--radix-tooltip-content-transform-origin)]',\n {\n variants: {\n variant: {\n default: 'bg-[var(--color-blue-1000)] text-[var(--color-gray-50)]',\n light: 'bg-[var(--color-gray-50)] text-[var(--color-gray-1000)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nexport const tooltipArrowStyles = cva('', {\n variants: {\n variant: {\n default: 'fill-[var(--color-blue-1000)]',\n light: 'fill-[var(--color-gray-50)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n","import * as React from 'react';\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport { motion } from 'framer-motion';\nimport { cn } from '@/utils/cn';\nimport { tooltipContentStyles, tooltipArrowStyles } from './Tooltip.styles';\nimport { Typography } from '@/components/atoms/Typography/Typography';\nimport { VariantProps } from 'class-variance-authority';\n\n// Set default delay to 0ms for better UX (faster than Radix default of 700ms)\nconst TooltipProvider = ({\n delayDuration = 0,\n ...props\n}: TooltipPrimitive.TooltipProviderProps) => (\n <TooltipPrimitive.Provider delayDuration={delayDuration} {...props} />\n);\n\nconst Tooltip = TooltipPrimitive.Root;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\ninterface TooltipContentProps\n extends React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>,\n VariantProps<typeof tooltipContentStyles> {}\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n TooltipContentProps\n>(({ className, sideOffset = 4, children, variant, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n asChild\n className={cn(tooltipContentStyles({ variant }), className)}\n {...props}\n >\n <motion.div\n initial={{ opacity: 0, scale: 0.95 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.95 }}\n transition={{ duration: 0.1, ease: 'easeOut' }}\n >\n <Typography\n variant=\"x-small\"\n color=\"inherit\"\n className=\"font-normal relative z-10\"\n >\n {children}\n </Typography>\n <TooltipPrimitive.Arrow className={tooltipArrowStyles({ variant })} />\n </motion.div>\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import { cva } from 'class-variance-authority';\n\nexport const chatInputRootStyles = cva('relative flex flex-col w-full');\n\nexport const chatInputContainerStyles = cva(\n 'box-border flex flex-col items-start p-4 rounded-[16px] w-full transition-all duration-200 min-w-[300px] max-w-[800px] relative z-10',\n {\n variants: {\n state: {\n default: '',\n active: '',\n withFiles: '',\n dragOver: '',\n },\n variant: {\n default:\n '[background-image:linear-gradient(var(--color-white),var(--color-white)),linear-gradient(180deg,#B9BCCB_0%,#E5E7F0_100%)] [background-origin:padding-box,border-box] [background-clip:padding-box,border-box] border border-transparent shadow-[0px_8px_8px_-4px_rgba(0,0,0,0.04),0px_20px_24px_-4px_rgba(0,0,0,0.08)]',\n transparent: 'bg-transparent border-none shadow-none',\n },\n isMagicActive: {\n true: '[background-image:linear-gradient(var(--color-white),var(--color-white))] border-transparent shadow-[0_0_40px_-10px_rgba(106,234,253,0.5),0_0_40px_-10px_rgba(255,111,0,0.4)]',\n false: '',\n },\n },\n defaultVariants: {\n state: 'default',\n variant: 'default',\n isMagicActive: false,\n },\n },\n);\n\nexport const chatInputWrapperStyles = cva(\n 'w-full transition-all duration-200',\n {\n variants: {\n state: {\n default: 'border-[var(--color-gray-600)]',\n active: 'border-[var(--color-blue-800)]',\n withFiles: 'border-[var(--color-gray-600)]',\n dragOver: 'border-[var(--color-blue-800)] border-dashed',\n },\n variant: {\n default: 'bg-[var(--color-white)]',\n transparent: 'bg-transparent',\n },\n },\n defaultVariants: {\n state: 'default',\n variant: 'default',\n },\n },\n);\n\nexport const chatInputContentStyles = cva(\n 'box-border flex flex-col gap-[1.25rem] items-start justify-center w-full rounded-[inherit]',\n);\n\nexport const chatInputInnerListStyles = cva('flex flex-col gap-5 w-full');\n\nexport const filesContainerStyles = cva(\n 'flex flex-wrap gap-[8px] items-start w-full',\n);\n\nexport const textareaWrapperStyles = cva(\n 'flex items-start justify-between w-full max-h-[200px] overflow-y-auto',\n);\n\nexport const textareaStyles = cva(\n 'w-full bg-transparent border-none outline-none resize-none font-normal text-[16px] leading-[24px] min-h-[24px] placeholder:text-[var(--color-gray-600)] text-[var(--color-gray-1000)]',\n {\n variants: {\n state: {\n default: '',\n active: '',\n withFiles: '',\n dragOver: '',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n },\n);\n\nexport const toolbarStyles = cva('flex items-center justify-between w-full');\n\nexport const toolbarLeftStyles = cva('flex gap-[8px] items-center');\n\nexport const toolbarRightStyles = cva('flex items-center gap-2.5');\n\nexport const toolbarIconButtonStyles = cva(\n 'flex items-center justify-center shrink-0 transition-all duration-200 disabled:opacity-40 disabled:cursor-not-allowed focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-2',\n {\n variants: {\n variant: {\n default:\n 'size-[16px] text-[var(--color-gray-600)] hover:text-[var(--color-gray-800)] active:text-[var(--color-gray-1000)] cursor-pointer',\n add: 'bg-[var(--color-gray-100)] border border-[var(--color-gray-200)] border-solid rounded-[100px] p-[8px] size-auto text-[var(--color-gray-600)] hover:bg-[var(--color-gray-200)] active:bg-[var(--color-gray-200)] cursor-pointer',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\nexport const sendButtonStyles = cva(\n 'flex items-center justify-center shrink-0 size-[32px] rounded-[100px] transition-all duration-200 focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-2',\n {\n variants: {\n disabled: {\n true: 'bg-[var(--color-gray-200)] text-[var(--color-white)] cursor-not-allowed',\n false:\n 'bg-[var(--color-blue-800)] text-[var(--color-white)] hover:opacity-80 active:bg-[var(--color-blue-1000)] cursor-pointer',\n },\n },\n defaultVariants: {\n disabled: false,\n },\n },\n);\n\nexport const loaderStyles = cva('animate-spin');\n\nexport const dragOverlayStyles = cva(\n 'flex flex-col gap-[12px] items-center justify-center px-[16px] py-[40px] min-h-[120px] w-full absolute inset-0 z-50 bg-[var(--color-white)] h-full rounded-xl min-h-0 border border-solid border-[var(--color-blue-1000)]',\n);\n\nexport const dragOverlayIconWrapperStyles = cva(\n 'flex items-center justify-center',\n);\n\nexport const modelSelectorTriggerStyles = cva(\n 'flex items-center gap-1 px-2 py-1 rounded-[6px] text-[var(--color-gray-600)] border border-[var(--color-gray-200)] transition-colors duration-200 cursor-pointer hover:bg-[var(--color-gray-50)] hover:border-[var(--color-gray-300)] hover:text-[var(--color-gray-800)] disabled:cursor-not-allowed disabled:opacity-50',\n);\n\nexport const modelDropdownContentStyles = cva('min-w-[120px]');\n\nexport const modelDropdownItemStyles = cva('py-1.5 px-2');\n\nexport const magicBorderWrapperStyles = cva(\n 'absolute -inset-[2px] rounded-[18px] z-0 pointer-events-none',\n);\n\nexport const magicBorderGradientStyles = cva(\n 'absolute inset-0 rounded-[18px] w-full h-full',\n {\n variants: {\n layer: {\n base: 'opacity-40',\n blur: 'blur-xl opacity-20',\n },\n },\n defaultVariants: {\n layer: 'base',\n },\n },\n);\n\nexport const magicToggleButtonStyles = cva(\n 'flex items-center gap-1.5 px-3 py-1.5 rounded-full text-[12px] font-medium transition-all duration-300 cursor-pointer border focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-2',\n {\n variants: {\n active: {\n true: 'bg-gradient-to-r from-[var(--color-blue-800)] to-[var(--color-orange-800)] text-white border-transparent shadow-[0_0_12px_rgba(21,177,205,0.4)]',\n false:\n 'bg-[var(--color-gray-50)] text-[var(--color-gray-600)] border-[var(--color-gray-200)] hover:bg-[var(--color-gray-100)] hover:border-[var(--color-gray-300)] hover:text-[var(--color-gray-800)]',\n },\n },\n defaultVariants: {\n active: false,\n },\n },\n);\n\nexport const chatInputOuterWrapperStyles = cva('flex flex-col w-full');\n\nexport const magicToggleWrapperStyles = cva('flex justify-end mb-3');\n","// react / next\nimport {\n useState,\n useRef,\n useCallback,\n useEffect,\n forwardRef,\n KeyboardEvent,\n DragEvent,\n ChangeEvent,\n ReactNode,\n Fragment,\n} from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\n\n// components\nimport { ChatFile, FileStatus } from '../../molecules/ChatFile/ChatFile';\nimport { CircularProgress } from '../../molecules/CircularProgress/CircularProgress';\nimport { Typography } from '../../atoms/Typography/Typography';\nimport {\n Plus,\n ArrowUp,\n Uploadfile,\n ChevronDown,\n Loader,\n} from '../../atoms/icons';\nimport {\n Dropdown,\n DropdownTrigger,\n DropdownContent,\n DropdownItem,\n} from '../../molecules/Dropdown/Dropdown';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '../../molecules/Tooltip/Tooltip';\n\n// styles\nimport {\n chatInputContainerStyles,\n chatInputWrapperStyles,\n chatInputContentStyles,\n filesContainerStyles,\n textareaWrapperStyles,\n textareaStyles,\n toolbarStyles,\n toolbarLeftStyles,\n toolbarIconButtonStyles,\n sendButtonStyles,\n dragOverlayStyles,\n dragOverlayIconWrapperStyles,\n modelSelectorTriggerStyles,\n magicBorderWrapperStyles,\n magicBorderGradientStyles,\n chatInputRootStyles,\n chatInputInnerListStyles,\n toolbarRightStyles,\n modelDropdownContentStyles,\n modelDropdownItemStyles,\n loaderStyles,\n} from './ChatInput.styles';\n\n// misc\nimport { cn } from '../../../utils/cn';\n\nexport interface ChatInputFile {\n id: string;\n filename: string;\n status?: FileStatus;\n progress?: number;\n}\n\n/** Generic action for the ChatInput toolbar */\nexport interface ChatInputAction {\n /** Unique identifier for the action */\n id: string;\n /** Icon to display in the button */\n icon: ReactNode;\n /** Accessible label for the button */\n label: string;\n /** Click handler for the action */\n onClick?: () => void;\n /** Whether the action is disabled */\n disabled?: boolean;\n /** Tooltip text to display on hover */\n tooltip?: string;\n}\n\n/** Model option for the model selector dropdown */\nexport interface ChatInputModelOption {\n /** Unique identifier for the model */\n id: string;\n /** Display name for the model */\n name: string;\n}\n\nexport interface ChatInputProps {\n placeholder?: string;\n value?: string;\n files?: ChatInputFile[];\n disabled?: boolean;\n maxFiles?: number;\n maxFileSize?: number;\n className?: string;\n /** Container variant - 'transparent' removes background, border, and shadow */\n variant?: 'default' | 'transparent';\n /** Generic toolbar actions to display between file button and send button */\n actions?: ChatInputAction[];\n /** Available AI models for the model selector dropdown */\n models?: ChatInputModelOption[];\n /** Currently selected model ID */\n selectedModel?: string;\n /** Shows a loading spinner in the send button and disables input */\n isLoading?: boolean;\n /** Disables only the send button (e.g., during file upload) while keeping input enabled */\n isUploading?: boolean;\n onChange?: (value: string) => void;\n onSend?: (message: string, files: ChatInputFile[]) => void;\n onFileAdd?: (files: File[]) => void;\n onFileRemove?: (fileId: string) => void;\n /** Callback when model selection changes */\n onModelChange?: (modelId: string) => void;\n /** Whether the magic AI border effect is active */\n isUsingMagic?: boolean;\n /** Context window usage value (0-100) */\n contextUsage?: number;\n /** Maximum context window value */\n contextMax?: number;\n}\n\nexport const ChatInput = forwardRef<HTMLDivElement, ChatInputProps>(\n (\n {\n placeholder = 'Type message',\n value: controlledValue,\n files = [],\n disabled = false,\n maxFiles = 10,\n maxFileSize = 1024 * 1024 * 1024, // 1GB\n className,\n variant = 'default',\n actions = [],\n models = [],\n selectedModel,\n isLoading = false,\n isUploading = false,\n onChange,\n onSend,\n onFileAdd,\n onFileRemove,\n onModelChange,\n isUsingMagic = false,\n contextUsage,\n contextMax = 100,\n },\n ref,\n ) => {\n const [internalValue, setInternalValue] = useState('');\n const [isDragOver, setIsDragOver] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n const value =\n controlledValue !== undefined ? controlledValue : internalValue;\n const hasContent = value.trim().length > 0;\n const hasFiles = files.length > 0;\n\n const getState = () => {\n if (isDragOver) return 'dragOver';\n if (hasFiles) return 'withFiles';\n if (isFocused) return 'active';\n return 'default';\n };\n\n const state = getState();\n\n const handleValueChange = (newValue: string) => {\n if (onChange) {\n onChange(newValue);\n } else {\n setInternalValue(newValue);\n }\n };\n\n const handleTextareaChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n handleValueChange(e.target.value);\n autoResizeTextarea();\n };\n\n const autoResizeTextarea = useCallback(() => {\n const textarea = textareaRef.current;\n if (textarea) {\n textarea.style.height = 'auto';\n textarea.style.height = `${Math.min(textarea.scrollHeight, 200)}px`;\n }\n }, []);\n\n // Auto-resize when value changes programmatically (e.g., from prompt refinement)\n useEffect(() => {\n autoResizeTextarea();\n }, [value, autoResizeTextarea]);\n\n const handleSend = useCallback(() => {\n if (disabled || isUploading || (!hasContent && !hasFiles)) return;\n\n if (onSend) {\n onSend(value, files);\n handleValueChange('');\n if (textareaRef.current) {\n textareaRef.current.style.height = 'auto';\n }\n }\n }, [disabled, isUploading, hasContent, hasFiles, onSend, value, files]);\n\n const handleKeyDown = (e: KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n handleSend();\n }\n };\n\n const handleFileInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n const selectedFiles = Array.from(e.target.files || []);\n if (selectedFiles.length > 0 && onFileAdd) {\n onFileAdd(selectedFiles);\n }\n if (fileInputRef.current) {\n fileInputRef.current.value = '';\n }\n };\n\n const handleAddFileClick = () => {\n fileInputRef.current?.click();\n };\n\n const dragCounterRef = useRef(0);\n\n const handleDragEnter = (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n dragCounterRef.current += 1;\n if (dragCounterRef.current === 1) {\n setIsDragOver(true);\n }\n };\n\n const handleDragLeave = (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n dragCounterRef.current -= 1;\n if (dragCounterRef.current === 0) {\n setIsDragOver(false);\n }\n };\n\n const handleDragOver = (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n };\n\n const handleDrop = (e: DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n dragCounterRef.current = 0;\n setIsDragOver(false);\n\n const droppedFiles = Array.from(e.dataTransfer.files);\n if (droppedFiles.length > 0 && onFileAdd) {\n onFileAdd(droppedFiles);\n }\n };\n\n const handleFileRemove = (fileId: string) => {\n if (onFileRemove) {\n onFileRemove(fileId);\n }\n };\n\n return (\n <div ref={ref} className={cn(chatInputRootStyles(), className)}>\n <AnimatePresence>\n {isUsingMagic && (\n <motion.div\n initial={{ opacity: 0, scale: 0.98 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.98 }}\n transition={{ duration: 1.2, ease: 'easeInOut' }}\n className={magicBorderWrapperStyles()}\n >\n {/* 1. The Moving Gradient Layer - REDUCED OPACITY */}\n <div className={magicBorderGradientStyles({ layer: 'base' })}>\n <motion.div\n className=\"w-full h-full rounded-[inherit]\"\n style={{\n background:\n 'linear-gradient(90deg, var(--color-blue-800), var(--color-blue-400), var(--color-orange-800), var(--color-blue-800))',\n backgroundSize: '300% 100%',\n }}\n animate={{ backgroundPosition: ['0% 50%', '100% 50%'] }}\n transition={{ duration: 4, repeat: Infinity, ease: 'linear' }}\n />\n </div>\n {/* 2. The Blur/Glow Layer - REDUCED OPACITY & BLUR */}\n <div className={magicBorderGradientStyles({ layer: 'blur' })}>\n <motion.div\n className=\"w-full h-full rounded-[inherit]\"\n style={{\n background:\n 'linear-gradient(90deg, var(--color-blue-800), var(--color-blue-400), var(--color-orange-800), var(--color-blue-800))',\n backgroundSize: '300% 100%',\n }}\n animate={{ backgroundPosition: ['0% 50%', '100% 50%'] }}\n transition={{ duration: 4, repeat: Infinity, ease: 'linear' }}\n />\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n\n <div\n className={chatInputContainerStyles({\n state,\n variant,\n isMagicActive: isUsingMagic,\n })}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <div className={chatInputWrapperStyles({ state, variant })}>\n <div className={chatInputContentStyles()}>\n <div className={chatInputInnerListStyles()}>\n {/* Files Container */}\n {hasFiles && (\n <div className={filesContainerStyles()}>\n {files.map((file) => (\n <ChatFile\n key={file.id}\n filename={file.filename}\n status={file.status}\n progress={file.progress}\n onDelete={() => handleFileRemove(file.id)}\n />\n ))}\n </div>\n )}\n\n {/* Textarea */}\n <div className={textareaWrapperStyles()}>\n <textarea\n ref={textareaRef}\n className={textareaStyles({ state })}\n placeholder={placeholder}\n value={value}\n disabled={disabled || isLoading}\n onChange={handleTextareaChange}\n onKeyDown={handleKeyDown}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n rows={2}\n maxLength={10000}\n aria-label=\"Chat message input\"\n />\n </div>\n\n {/* Toolbar */}\n <div className={toolbarStyles()}>\n <div className={toolbarLeftStyles()}>\n {/* Add File Button */}\n <button\n type=\"button\"\n onClick={handleAddFileClick}\n className={toolbarIconButtonStyles({ variant: 'add' })}\n disabled={disabled}\n aria-label=\"Add file\"\n tabIndex={0}\n >\n <Plus size={16} />\n </button>\n\n {/* Generic Actions */}\n {actions.map((action) => (\n <Fragment key={`--action-${action.id}`}>\n {action.tooltip ? (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n onClick={action.onClick}\n className={toolbarIconButtonStyles()}\n disabled={disabled || action.disabled}\n aria-label={action.label}\n tabIndex={0}\n >\n {action.icon}\n </button>\n </TooltipTrigger>\n <TooltipContent variant=\"light\">\n {action.tooltip}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n ) : (\n <button\n type=\"button\"\n onClick={action.onClick}\n className={toolbarIconButtonStyles()}\n disabled={disabled || action.disabled}\n aria-label={action.label}\n tabIndex={0}\n >\n {action.icon}\n </button>\n )}\n </Fragment>\n ))}\n </div>\n\n <div className={toolbarRightStyles()}>\n {/* Model Selector Dropdown */}\n {models.length > 0 && (\n <Dropdown>\n <DropdownTrigger>\n <button\n type=\"button\"\n className={modelSelectorTriggerStyles()}\n disabled={disabled || isLoading}\n aria-label=\"Select AI model\"\n >\n <Typography\n variant=\"tiny\"\n color=\"inherit\"\n as=\"span\"\n className={\n disabled || isLoading ? 'opacity-50' : undefined\n }\n >\n {models.find((m) => m.id === selectedModel)\n ?.name ||\n models[0]?.name ||\n 'Select model'}\n </Typography>\n <ChevronDown size={10} color=\"currentColor\" />\n </button>\n </DropdownTrigger>\n <DropdownContent\n align=\"end\"\n className={modelDropdownContentStyles()}\n >\n {models.map((model) => (\n <DropdownItem\n key={model.id}\n active={model.id === selectedModel}\n onClick={() => onModelChange?.(model.id)}\n className={modelDropdownItemStyles()}\n >\n <Typography\n variant=\"tiny\"\n color=\"inherit\"\n as=\"span\"\n >\n {model.name}\n </Typography>\n </DropdownItem>\n ))}\n </DropdownContent>\n </Dropdown>\n )}\n\n {/* Context Usage Progress */}\n {contextUsage !== undefined && (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <div className=\"flex items-center justify-center h-[32px]\">\n <CircularProgress\n value={contextUsage}\n max={contextMax}\n size=\"xs\"\n showLabel={false}\n variant={\n contextUsage >= 90\n ? 'error'\n : contextUsage >= 75\n ? 'warning'\n : 'default'\n }\n strokeWidth={2}\n aria-label={`Context usage: ${contextUsage} of ${contextMax}`}\n />\n </div>\n </TooltipTrigger>\n <TooltipContent variant=\"light\">\n Context: {contextUsage}/{contextMax}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n\n {/* Send Button */}\n <button\n type=\"button\"\n onClick={handleSend}\n className={sendButtonStyles({\n disabled:\n disabled ||\n isLoading ||\n isUploading ||\n (!hasContent && !hasFiles),\n })}\n disabled={\n disabled ||\n isLoading ||\n isUploading ||\n (!hasContent && !hasFiles)\n }\n aria-label={isLoading ? 'Loading' : 'Send message'}\n tabIndex={0}\n >\n {isLoading ? (\n <Loader\n size={16}\n color=\"currentColor\"\n className={loaderStyles()}\n />\n ) : (\n <ArrowUp\n size={16}\n strokeWidth={2.5}\n color=\"currentColor\"\n />\n )}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <AnimatePresence>\n {isDragOver && (\n <motion.div\n key=\"overlay\"\n initial={{ opacity: 0, filter: 'blur(2px)' }}\n animate={{ opacity: 1, filter: 'blur(0px)' }}\n exit={{ opacity: 0, filter: 'blur(2px)' }}\n transition={{ duration: 0.2, ease: 'easeInOut' }}\n className={dragOverlayStyles()}\n >\n <div className={dragOverlayIconWrapperStyles()}>\n <Uploadfile size={32} color=\"var(--color-gray-1000)\" />\n </div>\n <Typography\n variant=\"small\"\n weight=\"bold\"\n color=\"primary\"\n className=\"text-center\"\n >\n Drop your files here\n </Typography>\n <Typography\n variant=\"small\"\n color=\"secondary\"\n className=\"text-center\"\n >\n Up to {maxFiles} files or a maximum size of{' '}\n {Math.round(maxFileSize / (1024 * 1024 * 1024))}GB\n </Typography>\n </motion.div>\n )}\n </AnimatePresence>\n\n {/* Hidden File Input */}\n <input\n ref={fileInputRef}\n type=\"file\"\n multiple\n onChange={handleFileInputChange}\n className=\"hidden\"\n aria-hidden=\"true\"\n />\n </div>\n </div>\n );\n },\n);\n\nChatInput.displayName = 'ChatInput';\n","import { cva } from 'class-variance-authority';\n\nexport const conversationHeaderStyles = cva(\n 'w-full h-[48px] box-border flex items-center justify-between px-[16px] py-[12px] bg-[var(--color-white)] border-b border-[var(--color-gray-200)]'\n);\n\nexport const headerRightStyles = cva(\n 'flex items-center gap-[12px] h-[24px]'\n);\n\nexport const actionGroupStyles = cva(\n 'flex items-center gap-[12px] h-[24px] rounded-[8px]'\n);\n\nexport const iconButtonStyles = cva(\n 'flex items-center justify-center size-[16px] overflow-hidden text-[var(--color-gray-800)] hover:text-[var(--color-blue-800)] transition-colors bg-transparent border-none cursor-pointer outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] rounded-sm'\n);\n\nexport const tagsGroupStyles = cva('flex items-center gap-[8px]');\n\nexport const collaboratorsGroupStyles = cva('flex items-center'); // We will handle overlap in the component or child items\n\n","// React\nimport { HTMLAttributes, forwardRef } from 'react';\n\n// Components\nimport { Breadcrumbs, BreadcrumbItem } from '@/components/molecules/Breadcrumbs/Breadcrumbs';\nimport { Tag } from '@/components/molecules/Tag/Tag';\nimport { Avatar } from '@/components/atoms/Avatar/Avatar';\nimport { TagPlus, UserPlus } from '@/components/atoms/icons';\n\n// Styles\nimport { cn } from '@/utils/cn';\nimport {\n conversationHeaderStyles,\n headerRightStyles,\n actionGroupStyles,\n iconButtonStyles,\n tagsGroupStyles,\n collaboratorsGroupStyles,\n} from './ConversationHeader.styles';\n\nexport interface ConversationTag {\n id: string;\n label: string;\n}\n\nexport interface ConversationCollaborator {\n id: string;\n name: string;\n src?: string;\n}\n\nexport interface ConversationHeaderProps extends HTMLAttributes<HTMLDivElement> {\n /** Breadcrumb items to display on the left */\n breadcrumbs: BreadcrumbItem[];\n /** List of tags to display */\n tags?: ConversationTag[];\n /** List of collaborators/users to display */\n collaborators?: ConversationCollaborator[];\n /** Callback when adding a tag */\n onAddTag?: () => void;\n /** Callback when adding a collaborator */\n onAddCollaborator?: () => void;\n /** Additional count for tags if truncated */\n tagsOverflowCount?: number;\n}\n\nexport const ConversationHeader = forwardRef<HTMLDivElement, ConversationHeaderProps>(\n (\n {\n className,\n breadcrumbs,\n tags = [],\n collaborators = [],\n onAddTag,\n onAddCollaborator,\n tagsOverflowCount = 0,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(conversationHeaderStyles(), className)}\n {...props}\n >\n <Breadcrumbs items={breadcrumbs} size=\"medium\" />\n\n <div className={headerRightStyles()}>\n {/* Tags & Collaborators Group */}\n <div className={actionGroupStyles()}>\n\n {/* Tags Section */}\n {(tags.length > 0 || tagsOverflowCount > 0) && (\n <div className={tagsGroupStyles()}>\n {tags.map((tag) => (\n <Tag key={tag.id} variant=\"default\" className=\"bg-[var(--color-gray-100)] border border-[var(--color-gray-200)] text-[var(--color-gray-800)] px-[8px] py-[2px] text-[10px] h-[20px]\">\n {tag.label}\n </Tag>\n ))}\n {tagsOverflowCount > 0 && (\n <Tag variant=\"default\" className=\"bg-[var(--color-gray-100)] border border-[var(--color-gray-200)] text-[var(--color-gray-800)] px-[8px] py-[2px] text-[10px] h-[20px]\">\n +{tagsOverflowCount}\n </Tag>\n )}\n </div>\n )}\n\n {/* Collaborators Section (Avatars) */}\n {collaborators.length > 0 && (\n <div className={collaboratorsGroupStyles()}>\n <div className=\"flex items-center flex-row-reverse\">\n {/* Flex row reverse to make the first item on top if using negative margin from left,\n but typically we want the first one on left on top.\n Figma uses negative right margin on the wrapper div for each avatar.\n Let's use negative margin-right on items except the last one.\n */}\n {collaborators.map((user, index) => (\n <div\n key={user.id}\n className=\"relative shrink-0 border-[1.5px] border-white rounded-full\"\n style={{\n zIndex: collaborators.length - index,\n marginRight: index < collaborators.length - 1 ? -4 : 0\n }}\n >\n <Avatar\n initials={user.name}\n src={user.src}\n alt={user.name}\n // Avatar component handles size 'small' as 24px or 32px?\n // Looking at Avatar.tsx: size='small' (default) or 'big'.\n // We need 24px. Let's check Avatar implementation details.\n // Avatar.tsx says: const imageSize = size === 'big' ? 64 : 32;\n // 32px might be too big for this header (Figma shows 24px).\n // I might need to override class/size or add 'tiny' size to Avatar later.\n // For now, I'll use className to force size if needed, or accept 32px.\n // Figma explicitly showed 24px size.\n // I will try to force it via className if Avatar allows, otherwise might need to update Avatar.\n className=\"size-[24px] text-[10px]\"\n />\n </div>\n ))}\n </div>\n </div>\n )}\n\n {/* Add Tag Button */}\n <button\n type=\"button\"\n onClick={onAddTag}\n className={iconButtonStyles()}\n aria-label=\"Add tag\"\n >\n <TagPlus size={16} />\n </button>\n\n {/* Add Collaborator Button */}\n <button\n type=\"button\"\n onClick={onAddCollaborator}\n className={iconButtonStyles()}\n aria-label=\"Add collaborator\"\n >\n <UserPlus size={16} />\n </button>\n\n </div>\n </div>\n </div>\n );\n }\n);\n\nConversationHeader.displayName = 'ConversationHeader';\n\n","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React.forwardRef((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n }\n }).current;\n React.useEffect(() => {\n if (trapped) {\n let handleFocusIn2 = function(event) {\n if (focusScope.paused || !container) return;\n const target = event.target;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleFocusOut2 = function(event) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === null) return;\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleMutations2 = function(mutations) {\n const focusedElement = document.activeElement;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n };\n var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n document.addEventListener(\"focusin\", handleFocusIn2);\n document.addEventListener(\"focusout\", handleFocusOut2);\n const mutationObserver = new MutationObserver(handleMutations2);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn2);\n document.removeEventListener(\"focusout\", handleFocusOut2);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n const handleKeyDown = React.useCallback(\n (event) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement;\n if (isTabKey && focusedElement) {\n const container2 = event.currentTarget;\n const [first, last] = getTabbableEdges(container2);\n const hasTabbableElementsInside = first && last;\n if (!hasTabbableElementsInside) {\n if (focusedElement === container2) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\nfunction getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last];\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction findVisible(elements, container) {\n for (const element of elements) {\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\nfunction isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === \"hidden\") return true;\n while (node) {\n if (upTo !== void 0 && node === upTo) return false;\n if (getComputedStyle(node).display === \"none\") return true;\n node = node.parentElement;\n }\n return false;\n}\nfunction isSelectableInput(element) {\n return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n element.focus({ preventScroll: true });\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n let stack = [];\n return {\n add(focusScope) {\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n remove(focusScope) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n }\n };\n}\nfunction arrayRemove(array, item) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\nfunction removeLinks(items) {\n return items.filter((item) => item.tagName !== \"A\");\n}\nvar Root = FocusScope;\nexport {\n FocusScope,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-guards.tsx\nimport * as React from \"react\";\nvar count = 0;\nfunction FocusGuards(props) {\n useFocusGuards();\n return props.children;\n}\nfunction useFocusGuards() {\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll(\"[data-radix-focus-guard]\");\n document.body.insertAdjacentElement(\"afterbegin\", edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement(\"beforeend\", edgeGuards[1] ?? createFocusGuard());\n count++;\n return () => {\n if (count === 1) {\n document.querySelectorAll(\"[data-radix-focus-guard]\").forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n}\nfunction createFocusGuard() {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-radix-focus-guard\", \"\");\n element.tabIndex = 0;\n element.style.outline = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.pointerEvents = \"none\";\n return element;\n}\nexport {\n FocusGuards,\n FocusGuards as Root,\n useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of <Style\n */\n var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n // textarea will always _contain_ scroll inside self. It only can be hidden\n return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n if (!(node instanceof Element)) {\n return false;\n }\n var styles = window.getComputedStyle(node);\n return (\n // not-not-scrollable\n styles[overflow] !== 'hidden' &&\n // contains scroll inside self\n !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n var ownerDocument = node.ownerDocument;\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n if (scrollHeight > clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n if (!target) {\n break;\n }\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n var parent_1 = target.parentNode;\n // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n // this is the same logic used in focus-lock\n target = (parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1);\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10\n // and script elements, as they have no impact on accessibility.\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","\"use client\";\n\n// src/dialog.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContext, createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { hideOthers } from \"aria-hidden\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar DIALOG_NAME = \"Dialog\";\nvar [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\nvar [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);\nvar Dialog = (props) => {\n const {\n __scopeDialog,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true\n } = props;\n const triggerRef = React.useRef(null);\n const contentRef = React.useRef(null);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: DIALOG_NAME\n });\n return /* @__PURE__ */ jsx(\n DialogProvider,\n {\n scope: __scopeDialog,\n triggerRef,\n contentRef,\n contentId: useId(),\n titleId: useId(),\n descriptionId: useId(),\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n modal,\n children\n }\n );\n};\nDialog.displayName = DIALOG_NAME;\nvar TRIGGER_NAME = \"DialogTrigger\";\nvar DialogTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...triggerProps } = props;\n const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n }\n);\nDialogTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DialogPortal\";\nvar [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar DialogPortal = (props) => {\n const { __scopeDialog, forceMount, children, container } = props;\n const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeDialog, forceMount, children: React.Children.map(children, (child) => /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children: child }) })) });\n};\nDialogPortal.displayName = PORTAL_NAME;\nvar OVERLAY_NAME = \"DialogOverlay\";\nvar DialogOverlay = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n return context.modal ? /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;\n }\n);\nDialogOverlay.displayName = OVERLAY_NAME;\nvar Slot = createSlot(\"DialogOverlay.RemoveScroll\");\nvar DialogOverlayImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n return (\n // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n // ie. when `Overlay` and `Content` are siblings\n /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(context.open),\n ...overlayProps,\n ref: forwardedRef,\n style: { pointerEvents: \"auto\", ...overlayProps.style }\n }\n ) })\n );\n }\n);\nvar CONTENT_NAME = \"DialogContent\";\nvar DialogContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nDialogContent.displayName = CONTENT_NAME;\nvar DialogContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (isRightClick) event.preventDefault();\n }),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault()\n )\n }\n );\n }\n);\nvar DialogContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar DialogContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n useFocusGuards();\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n role: \"dialog\",\n id: context.contentId,\n \"aria-describedby\": context.descriptionId,\n \"aria-labelledby\": context.titleId,\n \"data-state\": getState(context.open),\n ...contentProps,\n ref: composedRefs,\n onDismiss: () => context.onOpenChange(false)\n }\n )\n }\n ),\n /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(TitleWarning, { titleId: context.titleId }),\n /* @__PURE__ */ jsx(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })\n ] })\n ] });\n }\n);\nvar TITLE_NAME = \"DialogTitle\";\nvar DialogTitle = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...titleProps } = props;\n const context = useDialogContext(TITLE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });\n }\n);\nDialogTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"DialogDescription\";\nvar DialogDescription = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...descriptionProps } = props;\n const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });\n }\n);\nDialogDescription.displayName = DESCRIPTION_NAME;\nvar CLOSE_NAME = \"DialogClose\";\nvar DialogClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...closeProps } = props;\n const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nDialogClose.displayName = CLOSE_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar TITLE_WARNING_NAME = \"DialogTitleWarning\";\nvar [WarningProvider, useWarningContext] = createContext(TITLE_WARNING_NAME, {\n contentName: CONTENT_NAME,\n titleName: TITLE_NAME,\n docsSlug: \"dialog\"\n});\nvar TitleWarning = ({ titleId }) => {\n const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);\n const MESSAGE = `\\`${titleWarningContext.contentName}\\` requires a \\`${titleWarningContext.titleName}\\` for the component to be accessible for screen reader users.\n\nIf you want to hide the \\`${titleWarningContext.titleName}\\`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;\n React.useEffect(() => {\n if (titleId) {\n const hasTitle = document.getElementById(titleId);\n if (!hasTitle) console.error(MESSAGE);\n }\n }, [MESSAGE, titleId]);\n return null;\n};\nvar DESCRIPTION_WARNING_NAME = \"DialogDescriptionWarning\";\nvar DescriptionWarning = ({ contentRef, descriptionId }) => {\n const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);\n const MESSAGE = `Warning: Missing \\`Description\\` or \\`aria-describedby={undefined}\\` for {${descriptionWarningContext.contentName}}.`;\n React.useEffect(() => {\n const describedById = contentRef.current?.getAttribute(\"aria-describedby\");\n if (descriptionId && describedById) {\n const hasDescription = document.getElementById(descriptionId);\n if (!hasDescription) console.warn(MESSAGE);\n }\n }, [MESSAGE, contentRef, descriptionId]);\n return null;\n};\nvar Root = Dialog;\nvar Trigger = DialogTrigger;\nvar Portal = DialogPortal;\nvar Overlay = DialogOverlay;\nvar Content = DialogContent;\nvar Title = DialogTitle;\nvar Description = DialogDescription;\nvar Close = DialogClose;\nexport {\n Close,\n Content,\n Description,\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n Overlay,\n Portal,\n Root,\n Title,\n Trigger,\n WarningProvider,\n createDialogScope\n};\n//# sourceMappingURL=index.mjs.map\n","// src/visually-hidden.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar VISUALLY_HIDDEN_STYLES = Object.freeze({\n // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n});\nvar NAME = \"VisuallyHidden\";\nvar VisuallyHidden = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...props,\n ref: forwardedRef,\n style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }\n }\n );\n }\n);\nVisuallyHidden.displayName = NAME;\nvar Root = VisuallyHidden;\nexport {\n Root,\n VISUALLY_HIDDEN_STYLES,\n VisuallyHidden\n};\n//# sourceMappingURL=index.mjs.map\n","import { cva } from 'class-variance-authority';\n\nexport const modalOverlayStyles = cva(\n 'fixed inset-0 z-50 bg-[rgba(0,6,38,0.5)] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0'\n);\n\nexport const modalContainerStyles = cva(\n 'fixed left-[50%] top-[50%] z-50 translate-x-[-50%] translate-y-[-50%] bg-[var(--color-white)] border border-[var(--color-gray-200)] rounded-[12px] shadow-lg p-4 flex flex-col gap-2 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 duration-200',\n {\n variants: {\n size: {\n sm: 'w-[300px] max-w-[calc(100vw-2rem)]',\n md: 'w-[400px] max-w-[calc(100vw-2rem)]',\n lg: 'w-[500px] max-w-[calc(100vw-2rem)]',\n xl: 'w-[600px] max-w-[calc(100vw-2rem)]',\n full: 'w-[calc(100vw-2rem)] h-[calc(100vh-2rem)]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nexport const modalHeaderStyles = cva(\n 'flex flex-col gap-2 items-start justify-center w-full'\n);\n\nexport const modalHeaderTopRowStyles = cva(\n 'flex items-start justify-between w-full pr-6'\n);\n\nexport const modalCloseButtonStyles = cva(\n 'absolute right-4 top-4 flex-shrink-0 w-4 h-4 text-[var(--color-blue-1000)] cursor-pointer bg-transparent border-none p-0 hover:opacity-70 transition-opacity focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-blue-200)] focus-visible:ring-offset-2 rounded-sm'\n);\n\nexport const modalTitleStyles = cva(\n '!font-[Inter,system-ui,-apple-system,sans-serif] font-medium text-[1rem] leading-[1.5rem] text-[var(--color-blue-1000)] w-full'\n);\n\nexport const modalDescriptionStyles = cva(\n 'font-[Inter,system-ui,-apple-system,sans-serif] font-normal text-[0.875rem] leading-[1.25rem] text-[var(--color-gray-800)] w-full'\n);\n\nexport const modalContentStyles = cva('flex flex-col gap-4 items-start w-full', {\n variants: {\n size: {\n sm: 'max-h-[60vh] overflow-y-auto',\n md: 'max-h-[70vh] overflow-y-auto',\n lg: 'max-h-[75vh] overflow-y-auto',\n xl: 'max-h-[80vh] overflow-y-auto',\n full: 'flex-1 overflow-y-auto',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const modalFooterStyles = cva('flex gap-2 items-start w-full');\n","// react\nimport { useCallback, useRef } from 'react';\nimport * as Dialog from '@radix-ui/react-dialog';\nimport * as VisuallyHidden from '@radix-ui/react-visually-hidden';\n\n// components\nimport { Button } from '@/components/molecules/Button/Button';\nimport { X } from '@/components/atoms/icons';\n\n// styles\nimport {\n modalOverlayStyles,\n modalContainerStyles,\n modalCloseButtonStyles,\n modalTitleStyles,\n modalDescriptionStyles,\n modalContentStyles,\n modalFooterStyles,\n} from './Modal.styles';\n\n// misc\nimport { cn } from '@/utils/cn';\n\n// types\nimport type { ModalProps } from './Modal.types';\n\nexport const Modal = ({\n open,\n onOpenChange,\n title,\n description,\n showCloseButton = true,\n closeIcon,\n children,\n primaryAction,\n secondaryAction,\n closeOnClickOutside = true,\n closeOnEsc = true,\n onClose,\n className,\n overlayClassName,\n contentClassName,\n footerClassName,\n size = 'md',\n}: ModalProps) => {\n const primaryButtonRef = useRef<HTMLButtonElement>(null);\n const secondaryButtonRef = useRef<HTMLButtonElement>(null);\n\n const handleOpenChange = useCallback(\n (newOpen: boolean) => {\n onOpenChange(newOpen);\n if (!newOpen) {\n onClose?.();\n }\n },\n [onOpenChange, onClose],\n );\n\n const handlePrimaryAction = useCallback(async () => {\n if (primaryAction?.onClick) {\n await primaryAction.onClick();\n }\n }, [primaryAction]);\n\n const handleSecondaryAction = useCallback(async () => {\n if (secondaryAction?.onClick) {\n await secondaryAction.onClick();\n }\n }, [secondaryAction]);\n\n // Handle ESC key\n const handleEscapeKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (!closeOnEsc) {\n event.preventDefault();\n }\n },\n [closeOnEsc],\n );\n\n // Handle click outside\n const handlePointerDownOutside = useCallback(\n (event: Event) => {\n if (!closeOnClickOutside) {\n event.preventDefault();\n }\n },\n [closeOnClickOutside],\n );\n\n const hasFooter = primaryAction || secondaryAction;\n\n return (\n <Dialog.Root open={open} onOpenChange={handleOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay\n className={cn(modalOverlayStyles(), overlayClassName)}\n />\n <Dialog.Content\n className={cn(modalContainerStyles({ size }), className)}\n onEscapeKeyDown={handleEscapeKeyDown}\n onPointerDownOutside={handlePointerDownOutside}\n >\n {/* Always render Dialog.Title for accessibility */}\n {title ? (\n <Dialog.Title className={modalTitleStyles()}>{title}</Dialog.Title>\n ) : (\n <VisuallyHidden.Root>\n <Dialog.Title>Modal dialog</Dialog.Title>\n </VisuallyHidden.Root>\n )}\n\n {/* Always render Dialog.Description for accessibility */}\n {description ? (\n <Dialog.Description className={modalDescriptionStyles()}>\n {description}\n </Dialog.Description>\n ) : (\n <VisuallyHidden.Root>\n <Dialog.Description>Modal content</Dialog.Description>\n </VisuallyHidden.Root>\n )}\n\n {/* Close button */}\n {showCloseButton && (\n <Dialog.Close asChild>\n <button\n className={modalCloseButtonStyles()}\n aria-label=\"Close modal\"\n >\n {closeIcon || <X size={16} color=\"currentColor\" />}\n </button>\n </Dialog.Close>\n )}\n\n {/* Content */}\n {children && (\n <div className={cn(modalContentStyles({ size }), contentClassName)}>\n {children}\n </div>\n )}\n\n {/* Footer */}\n {hasFooter && (\n <div className={cn(modalFooterStyles(), footerClassName)}>\n {secondaryAction && (\n <Button\n ref={secondaryButtonRef}\n variant={secondaryAction.variant || 'secondary'}\n size=\"small\"\n onClick={handleSecondaryAction}\n disabled={secondaryAction.disabled || secondaryAction.loading}\n startIcon={secondaryAction.icon}\n className=\"flex-1\"\n >\n {secondaryAction.label}\n </Button>\n )}\n {primaryAction && (\n <Button\n ref={primaryButtonRef}\n variant={primaryAction.variant || 'primary'}\n size=\"small\"\n onClick={handlePrimaryAction}\n disabled={primaryAction.disabled || primaryAction.loading}\n startIcon={primaryAction.icon}\n className=\"flex-1\"\n >\n {primaryAction.label}\n </Button>\n )}\n </div>\n )}\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n\nModal.displayName = 'Modal';\n"],"names":["r","f","n","o","clsx","CLASS_PART_SEPARATOR","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","classParts","getGroupRecursive","getGroupIdForArbitraryProperty","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","classGroupFromNextClassPart","classRest","_a","validator","arbitraryPropertyRegex","arbitraryPropertyClassName","property","theme","classGroups","processClassesRecursively","classGroup","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","key","path","currentClassPartObject","pathPart","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","value","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","MODIFIER_SEPARATOR_LENGTH","createParseClassName","prefix","experimentalParseClassName","parseClassName","modifiers","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","baseClassName","stripImportantModifier","hasImportantModifier","maybePostfixModifierPosition","fullPrefix","parseClassNameOriginal","createSortModifiers","orderSensitiveModifiers","modifier","sortedModifiers","unsortedModifiers","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","classNames","result","originalClassName","isExternal","variantModifier","modifierId","classId","conflictGroups","i","group","twJoin","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","cn","inputs","falsyToString","cx","cva","base","props","_config_compoundVariants","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","acc","param","getCompoundVariantClassNames","cvClass","cvClassName","compoundVariantOptions","avatarContainerStyles","avatarTextStyles","avatarImageStyles","generateInitials","name","words","getPlaceholderImage","seed","size","Avatar","forwardRef","type","shape","initials","src","alt","fallbackInitials","ref","imageError","setImageError","useState","placeholderSeed","useMemo","imageSrc","displayInitials","shouldShowImage","handleImageError","textBackgroundStyle","jsx","statusIndicatorContainerStyles","statusIndicatorDotStyles","statusIndicatorPingStyles","StatusIndicator","animated","jsxs","variantClassMap","defaultElementMap","colorClassMap","weightClassMap","fontFamilyClassMap","Typography","as","children","color","weight","fontFamily","Component","variantClass","colorClass","weightClass","fontFamilyClass","colorMap","LogoA","colorVariant","FullLogo","aspectRatio","height","width","SignatureA","animationDuration","animationDelay","uniqueId","useId","mainPathLength","artifactCardStyles","hoverBackgroundStyles","animatedGradientStyles","previewContainerStyles","previewBoxStyles","previewBoxInnerStyles","skeletonLineStyles","contentContainerStyles","titleStyles","subtitleStyles","iconContainerStyles","iconActiveStyles","iconInactiveStyles","iconStyles","errorIconStyles","skeletonLineVariants","contentSlideVariants","iconActiveVariants","iconInactiveVariants","SKELETON_WIDTHS","ArtifactCard","title","subtitle","controlledStatus","onClick","onActionClick","disabled","isHovered","setIsHovered","effectiveStatus","animationState","handleMouseEnter","useCallback","handleMouseLeave","handleClick","handleActionClick","e","handleKeyDown","renderPreview","Loader","TriangleAlert","motion","renderActionIcon","RotateCcw","Fragment","ArrowUp","breadcrumbsStyles","breadcrumbItemStyles","separatorStyles","Breadcrumbs","items","separator","ChevronRight","item","isLast","content","buttonStyles","Button","tone","startIcon","endIcon","iconSize","chatFileContainerStyles","chatFileNameStyles","chatFileIconStyles","progressBarStyles","FileStatus","ChatFile","filename","status","progress","onDelete","isUploading","isProcessing","isError","statusVariant","renderIcon","FileText","X","checkboxLabelStyles","checkboxVisualWrapperStyles","checkboxInputStyles","Checkbox","checked","defaultChecked","onChange","internalChecked","setInternalChecked","isControlled","isChecked","handleChange","Check","circularProgressContainerStyles","circularProgressSvgStyles","circularProgressTrackStyles","circularProgressIndicatorStyles","circularProgressLabelStyles","SIZE_MAP","CircularProgress","max","showLabel","labelFormatter","strokeWidth","percentage","sizePx","radius","circumference","strokeDashoffset","formattedLabel","useClickOutside","handler","useEffect","listener","event","el","dropdownContentStyles","dropdownItemStyles","dropdownLabelStyles","dropdownSeparatorStyles","DropdownContext","createContext","useDropdown","context","useContext","Dropdown","defaultOpen","controlledOpen","onOpenChange","uncontrolledOpen","setUncontrolledOpen","isOpen","dropdownRef","useRef","toggle","newState","close","DropdownTrigger","chevronIcon","ChevronDown","DropdownContent","align","attached","AnimatePresence","DropdownItem","active","closeOnSelect","DropdownLabel","DropdownSeparator","inputStyles","inputContainerStyles","inputIconStyles","Input","startIconPaddingMap","endIconPaddingMap","loadingSpinnerWrapperStyles","spinnerContainerStyles","spinnerBorderStyles","loadingTextStyles","LoadingSpinner","text","textColor","rootStyles","innerContainerStyles","messageContainerStyles","bubbleStyles","contentStyles","headerStyles","textStyles","actionsStyles","actionsIconsStyles","actionButtonStyles","avatarInnerStyles","timestampStyles","loaderStyles","systemContentWrapperStyles","shimmerOverlayStyles","activityIconAnimatedStyles","activityIconGlowStyles","editContainerStyles","editTextareaStyles","editHintStyles","branchNavigatorStyles","branchNavButtonStyles","branchNavTextStyles","EMPTY_ACTIONS","IS_MAC","KEYBOARD_HINT","formatTimestamp","ts","date","diffMs","diffMins","diffHours","ActionButton","memo","Icon","isActive","BranchNavigator","branchInfo","onPrevious","onNext","isLoading","hasPrevious","hasNext","ChevronLeft","AnimatedLoader","setKey","interval","MessageBubble","heading","timestamp","hideAvatar","showTimestamp","isSticky","isInitialPrompt","alignment","actions","enableCopy","copyIcon","onCopySuccess","enableEdit","isEditingProp","initialEditContent","onEditStart","onEditCancel","onEditSave","isSaving","onPreviousBranch","onNextBranch","isBranchLoading","contentRef","textareaRef","isCopied","setIsCopied","internalEditing","setInternalEditing","editContent","setEditContent","isEditing","resolvedAlignment","getTextContent","handleEditStart","handleEditCancel","handleEditSave","error","prevIsEditingRef","lastInitialContentRef","wasEditing","length","handleCopyInternal","textToCopy","err","handleEditContentChange","hasActions","showActions","showBranchNavigator","Activity","Edit2","action","progressBarTrackStyles","progressBarIndicatorStyles","progressBarLabelStyles","ProgressBar","showValueLabel","valueFormatter","formattedValue","rangeInputStyles","RangeInput","style","min","defaultValue","currentValue","minVal","maxVal","trackColor","backgroundStyle","sidebarItemStyles","sidebarItemIconStyles","sidebarItemLabelStyles","SidebarItem","icon","isCollapsed","styleVariant","tagStyles","tagAvatarStyles","tagIconStyles","Tag","avatarSrc","tabsListStyles","tabsTriggerStyles","tabsContentStyles","tabsIndicatorStyles","tabsBadgeContainerStyles","tabsTagStyles","Tabs","TabsPrimitive","TabsList","React","TabsTrigger","errorCount","configurationCount","setIsActive","internalRef","element","observer","setRefs","node","Settings","TabsContent","textAreaStyles","textAreaContainerStyles","TextArea","resize","timestampContainerStyles","timestampIconStyles","formatRelativeTime","now","diffSeconds","diffMinutes","diffDays","diffWeeks","diffMonths","diffYears","isFuture","absSeconds","absMinutes","absHours","absDays","absWeeks","absMonths","absYears","formatUnit","unit","plural","formatDate","format","locale","parseDate","Timestamp","showIcon","parsedDate","formattedDate","isoString","iconColor","ClockHistory","toastStyles","descriptionStyles","actionsWrapperStyles","closeButtonStyles","icons","Info","CheckCircle","AlertCircle","Sparks","iconColors","Toast","id","description","secondaryAction","onClose","IconComponent","handleClose","toast","Trash","ToastContainer","position","offset","gap","SonnerToaster","showToast","toggleRowStyles","toggleLabelStyles","toggleButtonStyles","toggleKnobStyles","Toggle","enabled","statusMessageContainerStyles","statusMessageTextStyles","StatusMessage","message","indicatorVariant","autopilotActionContainerStyles","autopilotActionContentStyles","autopilotActionTextStyles","autopilotActionIconContainerStyles","statusColors","actionIconColors","AutopilotAction","hexagonColor","actionIconColor","Hand","Pause","Hexagon","tooltipContentStyles","tooltipArrowStyles","TooltipProvider","delayDuration","TooltipPrimitive","Tooltip","TooltipTrigger","TooltipContent","sideOffset","chatInputRootStyles","chatInputContainerStyles","chatInputWrapperStyles","chatInputContentStyles","chatInputInnerListStyles","filesContainerStyles","textareaWrapperStyles","textareaStyles","toolbarStyles","toolbarLeftStyles","toolbarRightStyles","toolbarIconButtonStyles","sendButtonStyles","dragOverlayStyles","dragOverlayIconWrapperStyles","modelSelectorTriggerStyles","modelDropdownContentStyles","modelDropdownItemStyles","magicBorderWrapperStyles","magicBorderGradientStyles","ChatInput","placeholder","controlledValue","files","maxFiles","maxFileSize","models","selectedModel","onSend","onFileAdd","onFileRemove","onModelChange","isUsingMagic","contextUsage","contextMax","internalValue","setInternalValue","isDragOver","setIsDragOver","isFocused","setIsFocused","fileInputRef","hasContent","hasFiles","state","handleValueChange","newValue","handleTextareaChange","autoResizeTextarea","textarea","handleSend","handleFileInputChange","selectedFiles","handleAddFileClick","dragCounterRef","handleDragEnter","handleDragLeave","handleDragOver","handleDrop","droppedFiles","handleFileRemove","fileId","file","Plus","m","_b","model","Uploadfile","conversationHeaderStyles","headerRightStyles","actionGroupStyles","iconButtonStyles","tagsGroupStyles","collaboratorsGroupStyles","ConversationHeader","breadcrumbs","tags","collaborators","onAddTag","onAddCollaborator","tagsOverflowCount","tag","user","TagPlus","UserPlus","composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","setRef","composeRefs","refs","hasCleanup","cleanups","cleanup","useComposedRefs","createContext2","rootComponentName","defaultContext","Context","Provider","useContext2","consumerName","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createContext3","BaseContext","scope","createScope","scopeContexts","contexts","composeContextScopes","scopes","baseScope","scopeHooks","createScope2","overrideScopes","nextScopes","nextScopes2","useScope","currentScope","useLayoutEffect2","useReactId","count","deterministicId","setId","useLayoutEffect","reactId","useInsertionEffect","useControllableState","prop","defaultProp","caller","uncontrolledProp","setUncontrolledProp","onChangeRef","useUncontrolledState","isControlledRef","wasControlled","setValue","nextValue","value2","isFunction","prevValueRef","createSlot","ownerName","SlotClone","createSlotClone","Slot2","forwardedRef","slotProps","childrenArray","slottable","isSlottable","newElement","newChildren","child","childrenRef","getElementRef","props2","mergeProps","SLOTTABLE_IDENTIFIER","childProps","overrideProps","propName","slotPropValue","childPropValue","args","getter","mayWarn","NODES","Primitive","primitive","Slot","Node","asChild","primitiveProps","Comp","dispatchDiscreteCustomEvent","target","ReactDOM","useCallbackRef","callback","callbackRef","useEscapeKeydown","onEscapeKeyDownProp","ownerDocument","onEscapeKeyDown","DISMISSABLE_LAYER_NAME","CONTEXT_UPDATE","POINTER_DOWN_OUTSIDE","FOCUS_OUTSIDE","originalBodyPointerEvents","DismissableLayerContext","DismissableLayer","disableOutsidePointerEvents","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","layerProps","setNode","force","composedRefs","node2","layers","highestLayerWithOutsidePointerEventsDisabled","highestLayerWithOutsidePointerEventsDisabledIndex","isBodyPointerEventsDisabled","isPointerEventsEnabled","pointerDownOutside","usePointerDownOutside","isPointerDownOnBranch","branch","focusOutside","useFocusOutside","dispatchUpdate","handleUpdate","BRANCH_NAME","DismissableLayerBranch","handlePointerDownOutside","isPointerInsideReactTreeRef","handleClickRef","handlePointerDown","handleAndDispatchPointerDownOutsideEvent2","handleAndDispatchCustomEvent","eventDetail","timerId","handleFocusOutside","isFocusInsideReactTreeRef","handleFocus","detail","discrete","AUTOFOCUS_ON_MOUNT","AUTOFOCUS_ON_UNMOUNT","EVENT_OPTIONS","FOCUS_SCOPE_NAME","FocusScope","loop","trapped","onMountAutoFocusProp","onUnmountAutoFocusProp","scopeProps","container","setContainer","onMountAutoFocus","onUnmountAutoFocus","lastFocusedElementRef","focusScope","handleFocusIn2","focus","handleFocusOut2","relatedTarget","handleMutations2","mutations","mutation","mutationObserver","focusScopesStack","previouslyFocusedElement","mountEvent","focusFirst","removeLinks","getTabbableCandidates","unmountEvent","isTabKey","focusedElement","container2","first","last","getTabbableEdges","candidates","select","candidate","findVisible","nodes","walker","isHiddenInput","elements","isHidden","upTo","isSelectableInput","createFocusScopesStack","stack","activeFocusScope","arrayRemove","array","updatedArray","PORTAL_NAME","Portal","containerProp","portalProps","mounted","setMounted","useStateMachine","initialState","machine","Presence","present","presence","usePresence","React2","stylesRef","prevPresentRef","prevAnimationNameRef","send","currentAnimationName","getAnimationName","styles","wasPresent","prevAnimationName","timeoutId","ownerWindow","handleAnimationEnd","isCurrentAnimation","currentFillMode","handleAnimationStart","useFocusGuards","edgeGuards","createFocusGuard","__assign","s","p","__rest","t","__spreadArray","to","from","pack","l","ar","zeroRightClassName","fullWidthClassName","noScrollbarsClassName","removedBarSizeVariable","assignRef","initialValue","useIsomorphicLayoutEffect","currentValues","useMergeRefs","oldValue","prevRefs_1","nextRefs_1","current_1","ItoI","a","innerCreateMedium","defaults","middleware","buffer","assigned","medium","data","x","cb","cbs","pendingQueue","executeQueue","cycle","filter","createSidecarMedium","options","SideCar","sideCar","rest","Target","exportSidecar","exported","effectCar","nothing","RemoveScroll","parentRef","callbacks","setCallbacks","forwardProps","removeScrollBar","shards","noRelative","noIsolation","inert","allowPinchZoom","Container","gapMode","containerRef","containerProps","getNonce","makeStyleTag","nonce","injectStyles","css","insertStyleTag","head","stylesheetSingleton","counter","stylesheet","styleHookSingleton","sheet","isDynamic","styleSingleton","useStyle","Sheet","dynamic","zeroGap","parse","getOffset","cs","left","top","right","getGapWidth","offsets","documentWidth","windowWidth","Style","lockAttribute","getStyles","allowRelative","important","getCurrentUseCounter","useLockAttribute","newCounter","RemoveScrollBar","noImportant","passiveSupported","nonPassive","alwaysContainsScroll","elementCanBeScrolled","overflow","elementCouldBeVScrolled","elementCouldBeHScrolled","locationCouldBeScrolled","axis","current","isScrollable","elementCouldBeScrolled","getScrollVariables","scrollHeight","clientHeight","getVScrollVariables","scrollTop","getHScrollVariables","scrollLeft","scrollWidth","clientWidth","getDirectionFactor","direction","handleScroll","endTarget","sourceDelta","noOverscroll","directionFactor","delta","targetInLock","shouldCancelScroll","isDeltaPositive","availableScroll","availableScrollTop","scroll_1","capacity","elementScroll","parent_1","getTouchXY","getDeltaXY","extractRef","deltaCompare","y","generateStyle","idCounter","lockStack","RemoveScrollSideCar","shouldPreventQueue","touchStartRef","activeAxis","lastProps","allow_1","shouldCancelEvent","parent","touch","touchStart","deltaX","deltaY","currentAxis","moveDirection","canBeScrolledInMainDirection","cancelingAxis","shouldPrevent","_event","sourceEvent","shardNodes","shouldStop","shouldCancel","should","getOutermostShadowParent","scrollTouchStart","scrollWheel","scrollTouchMove","inst","shadowParent","ReactRemoveScroll","getDefaultParent","originalTarget","sampleTarget","counterMap","uncontrolledNodes","markerMap","lockCount","unwrapHost","correctTargets","targets","correctedTarget","applyAttributeToOthers","parentNode","markerName","controlAttribute","markerCounter","hiddenNodes","elementsToKeep","elementsToStop","keep","deep","attr","alreadyHidden","counterValue","markerValue","hideOthers","activeParentNode","DIALOG_NAME","createDialogContext","DialogProvider","useDialogContext","Dialog","__scopeDialog","openProp","modal","triggerRef","open","setOpen","prevOpen","TRIGGER_NAME","DialogTrigger","triggerProps","composedTriggerRef","getState","PortalProvider","usePortalContext","DialogPortal","forceMount","PortalPrimitive","OVERLAY_NAME","DialogOverlay","portalContext","overlayProps","DialogOverlayImpl","CONTENT_NAME","DialogContent","contentProps","DialogContentModal","DialogContentNonModal","DialogContentImpl","originalEvent","ctrlLeftClick","hasInteractedOutsideRef","hasPointerDownOutsideRef","trapFocus","onOpenAutoFocus","onCloseAutoFocus","TitleWarning","DescriptionWarning","TITLE_NAME","DialogTitle","titleProps","DESCRIPTION_NAME","DialogDescription","descriptionProps","CLOSE_NAME","DialogClose","closeProps","TITLE_WARNING_NAME","WarningProvider","useWarningContext","titleId","titleWarningContext","MESSAGE","DESCRIPTION_WARNING_NAME","descriptionId","describedById","Root","Overlay","Content","Title","Description","Close","VISUALLY_HIDDEN_STYLES","NAME","VisuallyHidden","modalOverlayStyles","modalContainerStyles","modalCloseButtonStyles","modalTitleStyles","modalDescriptionStyles","modalContentStyles","modalFooterStyles","Modal","showCloseButton","closeIcon","primaryAction","closeOnClickOutside","closeOnEsc","overlayClassName","contentClassName","footerClassName","primaryButtonRef","secondaryButtonRef","handleOpenChange","newOpen","handlePrimaryAction","handleSecondaryAction","handleEscapeKeyDown","hasFooter","Dialog.Root","Dialog.Portal","Dialog.Overlay","Dialog.Content","Dialog.Title","VisuallyHidden.Root","Dialog.Description","Dialog.Close"],"mappings":"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","x_google_ignoreList":[0,1,3,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98]}
|