@deckai/deck-ui 0.0.20 → 0.0.22

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.
Files changed (187) hide show
  1. package/dist/components/AboutCard.cjs +5 -5
  2. package/dist/components/AboutCard.cjs.map +1 -1
  3. package/dist/components/AboutCard.d.cts +4 -3
  4. package/dist/components/AboutCard.d.ts +4 -3
  5. package/dist/components/AboutCard.js +5 -5
  6. package/dist/components/AboutCard.js.map +1 -1
  7. package/dist/components/Accordion.cjs +3 -3
  8. package/dist/components/Accordion.cjs.map +1 -1
  9. package/dist/components/Accordion.d.cts +5 -1
  10. package/dist/components/Accordion.d.ts +5 -1
  11. package/dist/components/Accordion.js +3 -3
  12. package/dist/components/Accordion.js.map +1 -1
  13. package/dist/components/AddWorkCard.cjs +2 -2
  14. package/dist/components/AddWorkCard.cjs.map +1 -1
  15. package/dist/components/AddWorkCard.js +2 -2
  16. package/dist/components/AddWorkCard.js.map +1 -1
  17. package/dist/components/AutocompleteInput.cjs +2 -2
  18. package/dist/components/AutocompleteInput.cjs.map +1 -1
  19. package/dist/components/AutocompleteInput.js +2 -2
  20. package/dist/components/AutocompleteInput.js.map +1 -1
  21. package/dist/components/Avatar.cjs +1 -1
  22. package/dist/components/Avatar.cjs.map +1 -1
  23. package/dist/components/Avatar.d.cts +3 -1
  24. package/dist/components/Avatar.d.ts +3 -1
  25. package/dist/components/Avatar.js +1 -1
  26. package/dist/components/Avatar.js.map +1 -1
  27. package/dist/components/Badge.cjs +4 -4
  28. package/dist/components/Badge.cjs.map +1 -1
  29. package/dist/components/Badge.js +4 -4
  30. package/dist/components/Badge.js.map +1 -1
  31. package/dist/components/Breadcrumbs.cjs +3 -3
  32. package/dist/components/Breadcrumbs.cjs.map +1 -1
  33. package/dist/components/Breadcrumbs.d.cts +1 -1
  34. package/dist/components/Breadcrumbs.d.ts +1 -1
  35. package/dist/components/Breadcrumbs.js +3 -3
  36. package/dist/components/Breadcrumbs.js.map +1 -1
  37. package/dist/components/Button.cjs.map +1 -1
  38. package/dist/components/Button.js.map +1 -1
  39. package/dist/components/Carousel.cjs +1 -1
  40. package/dist/components/Carousel.cjs.map +1 -1
  41. package/dist/components/Carousel.js +1 -1
  42. package/dist/components/Carousel.js.map +1 -1
  43. package/dist/components/Collapsible.cjs +6 -6
  44. package/dist/components/Collapsible.cjs.map +1 -1
  45. package/dist/components/Collapsible.js +6 -6
  46. package/dist/components/Collapsible.js.map +1 -1
  47. package/dist/components/Combobox.cjs +6 -6
  48. package/dist/components/Combobox.cjs.map +1 -1
  49. package/dist/components/Combobox.js +6 -6
  50. package/dist/components/Combobox.js.map +1 -1
  51. package/dist/components/ContactItem.cjs +5 -5
  52. package/dist/components/ContactItem.cjs.map +1 -1
  53. package/dist/components/ContactItem.d.cts +5 -4
  54. package/dist/components/ContactItem.d.ts +5 -4
  55. package/dist/components/ContactItem.js +5 -5
  56. package/dist/components/ContactItem.js.map +1 -1
  57. package/dist/components/Dropdown.cjs +4 -4
  58. package/dist/components/Dropdown.cjs.map +1 -1
  59. package/dist/components/Dropdown.js +4 -4
  60. package/dist/components/Dropdown.js.map +1 -1
  61. package/dist/components/EditButton.cjs +5 -5
  62. package/dist/components/EditButton.cjs.map +1 -1
  63. package/dist/components/EditButton.js +5 -5
  64. package/dist/components/EditButton.js.map +1 -1
  65. package/dist/components/Fallback.cjs +2 -0
  66. package/dist/components/Fallback.cjs.map +1 -0
  67. package/dist/components/Fallback.d.cts +30 -0
  68. package/dist/components/Fallback.d.ts +30 -0
  69. package/dist/components/Fallback.js +2 -0
  70. package/dist/components/Fallback.js.map +1 -0
  71. package/dist/components/Icon.cjs +1 -1
  72. package/dist/components/Icon.cjs.map +1 -1
  73. package/dist/components/Icon.js +1 -1
  74. package/dist/components/Icon.js.map +1 -1
  75. package/dist/components/Input.cjs +4 -4
  76. package/dist/components/Input.cjs.map +1 -1
  77. package/dist/components/Input.d.cts +2 -2
  78. package/dist/components/Input.d.ts +2 -2
  79. package/dist/components/Input.js +4 -4
  80. package/dist/components/Input.js.map +1 -1
  81. package/dist/components/Link.cjs.map +1 -1
  82. package/dist/components/Link.js.map +1 -1
  83. package/dist/components/Logo.cjs +1 -1
  84. package/dist/components/Logo.cjs.map +1 -1
  85. package/dist/components/Logo.js +1 -1
  86. package/dist/components/Logo.js.map +1 -1
  87. package/dist/components/Modal.cjs +1 -1
  88. package/dist/components/Modal.cjs.map +1 -1
  89. package/dist/components/Modal.js +1 -1
  90. package/dist/components/Modal.js.map +1 -1
  91. package/dist/components/MultiSelectCombobox.cjs +2 -2
  92. package/dist/components/MultiSelectCombobox.cjs.map +1 -1
  93. package/dist/components/MultiSelectCombobox.js +2 -2
  94. package/dist/components/MultiSelectCombobox.js.map +1 -1
  95. package/dist/components/Navbar.cjs +7 -7
  96. package/dist/components/Navbar.cjs.map +1 -1
  97. package/dist/components/Navbar.d.cts +5 -5
  98. package/dist/components/Navbar.d.ts +5 -5
  99. package/dist/components/Navbar.js +7 -7
  100. package/dist/components/Navbar.js.map +1 -1
  101. package/dist/components/NavbarItem.cjs +3 -3
  102. package/dist/components/NavbarItem.cjs.map +1 -1
  103. package/dist/components/NavbarItem.js +3 -3
  104. package/dist/components/NavbarItem.js.map +1 -1
  105. package/dist/components/Option.cjs +3 -3
  106. package/dist/components/Option.cjs.map +1 -1
  107. package/dist/components/Option.js +3 -3
  108. package/dist/components/Option.js.map +1 -1
  109. package/dist/components/ProfileCard.cjs +6 -6
  110. package/dist/components/ProfileCard.cjs.map +1 -1
  111. package/dist/components/ProfileCard.d.cts +5 -4
  112. package/dist/components/ProfileCard.d.ts +5 -4
  113. package/dist/components/ProfileCard.js +6 -6
  114. package/dist/components/ProfileCard.js.map +1 -1
  115. package/dist/components/ProgressBar.cjs.map +1 -1
  116. package/dist/components/ProgressBar.js.map +1 -1
  117. package/dist/components/RadioGroup.cjs.map +1 -1
  118. package/dist/components/RadioGroup.js.map +1 -1
  119. package/dist/components/SegmentedTabs.cjs +3 -3
  120. package/dist/components/SegmentedTabs.cjs.map +1 -1
  121. package/dist/components/SegmentedTabs.js +3 -3
  122. package/dist/components/SegmentedTabs.js.map +1 -1
  123. package/dist/components/Sidebar.cjs +1 -1
  124. package/dist/components/Sidebar.cjs.map +1 -1
  125. package/dist/components/Sidebar.js +1 -1
  126. package/dist/components/Sidebar.js.map +1 -1
  127. package/dist/components/SlideButton.cjs.map +1 -1
  128. package/dist/components/SlideButton.js.map +1 -1
  129. package/dist/components/Slider.cjs +1 -1
  130. package/dist/components/Slider.cjs.map +1 -1
  131. package/dist/components/Slider.js +1 -1
  132. package/dist/components/Slider.js.map +1 -1
  133. package/dist/components/SocialCard.cjs +4 -4
  134. package/dist/components/SocialCard.cjs.map +1 -1
  135. package/dist/components/SocialCard.d.cts +2 -1
  136. package/dist/components/SocialCard.d.ts +2 -1
  137. package/dist/components/SocialCard.js +4 -4
  138. package/dist/components/SocialCard.js.map +1 -1
  139. package/dist/components/Spinner.d.cts +2 -2
  140. package/dist/components/Spinner.d.ts +2 -2
  141. package/dist/components/Switch.cjs +1 -1
  142. package/dist/components/Switch.cjs.map +1 -1
  143. package/dist/components/Switch.js +1 -1
  144. package/dist/components/Switch.js.map +1 -1
  145. package/dist/components/Tabs.cjs +4 -4
  146. package/dist/components/Tabs.cjs.map +1 -1
  147. package/dist/components/Tabs.js +4 -4
  148. package/dist/components/Tabs.js.map +1 -1
  149. package/dist/components/Tag.cjs +5 -5
  150. package/dist/components/Tag.cjs.map +1 -1
  151. package/dist/components/Tag.js +5 -5
  152. package/dist/components/Tag.js.map +1 -1
  153. package/dist/components/Text.cjs.map +1 -1
  154. package/dist/components/Text.d.cts +1 -1
  155. package/dist/components/Text.d.ts +1 -1
  156. package/dist/components/Text.js.map +1 -1
  157. package/dist/components/TextArea.cjs.map +1 -1
  158. package/dist/components/TextArea.js.map +1 -1
  159. package/dist/components/Toast.cjs +5 -5
  160. package/dist/components/Toast.cjs.map +1 -1
  161. package/dist/components/Toast.d.cts +2 -2
  162. package/dist/components/Toast.d.ts +2 -2
  163. package/dist/components/Toast.js +5 -5
  164. package/dist/components/Toast.js.map +1 -1
  165. package/dist/components/Tooltip.cjs +2 -2
  166. package/dist/components/Tooltip.cjs.map +1 -1
  167. package/dist/components/Tooltip.js +2 -2
  168. package/dist/components/Tooltip.js.map +1 -1
  169. package/dist/components/VideoPlayer.cjs +2 -2
  170. package/dist/components/VideoPlayer.cjs.map +1 -1
  171. package/dist/components/VideoPlayer.js +2 -2
  172. package/dist/components/VideoPlayer.js.map +1 -1
  173. package/dist/components/WorkCard.cjs +14 -6
  174. package/dist/components/WorkCard.cjs.map +1 -1
  175. package/dist/components/WorkCard.d.cts +8 -5
  176. package/dist/components/WorkCard.d.ts +8 -5
  177. package/dist/components/WorkCard.js +14 -6
  178. package/dist/components/WorkCard.js.map +1 -1
  179. package/dist/index.cjs +8 -8
  180. package/dist/index.cjs.map +1 -1
  181. package/dist/index.d.cts +1 -0
  182. package/dist/index.d.ts +1 -0
  183. package/dist/index.js +8 -8
  184. package/dist/index.js.map +1 -1
  185. package/dist/styles/styles.css +2 -2
  186. package/dist/styles/styles.css.map +1 -1
  187. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/tailwind.ts","../../src/utils/index.ts","../../src/components/Pressable.tsx","../../src/components/Text.tsx","../../src/hooks/useToast.tsx","../../src/utils/responsive.ts","../../src/components/Icon.tsx","../../src/components/Button.tsx","../../src/components/Toast.tsx","../../src/hooks/useMediaQuery.ts","../../src/hooks/useIsomorphicLayoutEffect.tsx","../../src/components/Collapsible.tsx"],"names":["focusRingStyles","cn","inputs","twMerge","clsx","Pressable","React","children","type","className","disabled","props","ref","HEADING_ELEMENT_MAP","getElementFromVariant","variant","category","size","fontWeight","processVariants","variants","breakpoint","typographyClass","Text","color","as","weight","typographyClasses","colorClasses","suggestedElement","baseVariant","BASE_SIZES","RESPONSIVE_SIZES","getSizeKey","getResponsiveSize","baseSize","classes","styles","key","baseKey","responsiveClasses","s","valueStr","value","valueKey","COLOR_MAP","Icon","name","title","style","IconComponent","IconMap","responsiveSizeClasses","responsiveSizeStyles","filled","outlined","Button","g","isLoading","end","Toast","message","action","secondaryAction","duration","onOpenChange","allowOutsideClick","onClose","variantConfig","handleOpenChange","open","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","Collapsible","maxHeight","setOpen","contentRef","useRef","contentHeight","setContentHeight","useState","resizeObserver","entries","entry","shouldShowTrigger"],"mappings":"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","file":"Collapsible.js","sourcesContent":["import { Colors, Typography } from \"../types/tailwind\";\n\n// Generate safelist patterns for all color utilities so you can use any theme color variable in your code\nexport const generateSafelist = (colors: Colors, typography: Typography) => {\n const colorNames = Object.keys(colors) as (keyof Colors)[];\n const utilities = [\"bg\", \"text\", \"border\", \"ring\", \"divide\", \"outline\"];\n const variants = [\"hover:\", \"focus:\", \"active:\", \"disabled:\"];\n const breakpoints = [\"sm\", \"md\", \"lg\", \"xl\", \"2xl\"];\n const sizes = [\"24\", \"42\", \"48\", \"64\", \"72\"]; // Add all the sizes you need\n\n const safelist: (string | { pattern: RegExp; variants: string[] })[] = [];\n\n colorNames.forEach((colorName) => {\n if (typeof colors[colorName] === \"object\") {\n // Handle nested color objects (with number keys)\n Object.keys(colors[colorName]).forEach((shade) => {\n utilities.forEach((utility) => {\n // Base utility\n safelist.push(`${utility}-${colorName}-${shade}`);\n\n // Variant utilities\n variants.forEach((variant) => {\n safelist.push(`${variant}${utility}-${colorName}-${shade}`);\n });\n });\n });\n } else {\n // Handle direct color values\n utilities.forEach((utility) => {\n safelist.push(`${utility}-${colorName}`);\n\n variants.forEach((variant) => {\n safelist.push(`${variant}${utility}-${colorName}`);\n });\n });\n }\n });\n\n // Generate typography classes\n Object.entries(typography).forEach(([family, sizes]) => {\n Object.keys(sizes).forEach((size) => {\n // Base typography classes\n safelist.push(`text-${family}-${size}`);\n\n // Add variants\n variants.forEach((variant) => {\n safelist.push(`${variant}text-${family}-${size}`);\n });\n });\n });\n\n const typographyClasses = Object.entries(typography).flatMap(\n ([category, sizes]) =>\n Object.keys(sizes).map((size) => `text-${category}-${size}`)\n );\n\n // Generate responsive variants\n const responsiveTypographyClasses = typographyClasses.flatMap((className) =>\n breakpoints.map((breakpoint) => `${breakpoint}:${className}`)\n );\n\n // Generate size classes with responsive variants\n const sizeClasses = sizes.flatMap((size) => [\n `h-[${size}px]`,\n `w-[${size}px]`,\n ...breakpoints.flatMap((bp) => [\n `${bp}:h-[${size}px]`,\n `${bp}:w-[${size}px]`\n ])\n ]);\n\n return [...typographyClasses, ...responsiveTypographyClasses, ...sizeClasses];\n};\n\nexport const focusRingStyles =\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-100\";\nexport const focusRingWithinStyles =\n \"focus-within:outline-none focus-within:ring-2 focus-within:ring-primary-100\";\nexport const focusRingStylesCoerced = \"ring-2 ring-primary-100\";\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport const noopFn = () => {};\n","import React, { ButtonHTMLAttributes } from \"react\";\nimport { focusRingStyles } from \"../utils/tailwind\";\nimport { cn } from \"../utils\";\n\nexport type PressableProps = ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const Pressable = React.forwardRef<HTMLButtonElement, PressableProps>(\n ({ children, type = \"button\", className, disabled, ...props }, ref) => (\n <button\n ref={ref}\n type={type}\n disabled={disabled}\n className={cn(\n \"appearance-none hover:opacity-80 transition-all active:scale-95\",\n focusRingStyles,\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n {...props}\n >\n {children}\n </button>\n )\n);\n\nPressable.displayName = \"Pressable\";\n","import React from \"react\";\nimport { Typography } from \"../types/tailwind\";\nimport { Breakpoint } from \"../utils/responsive\";\n\ntype TextElement =\n | \"p\"\n | \"span\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"strong\"\n | \"em\"\n | \"blockquote\"\n | \"pre\"\n | \"code\"\n | \"small\"\n | \"label\"\n | \"a\";\n\n// HTML element mapping type\ntype HTMLElementByTag = {\n p: HTMLParagraphElement;\n span: HTMLSpanElement;\n h1: HTMLHeadingElement;\n h2: HTMLHeadingElement;\n h3: HTMLHeadingElement;\n h4: HTMLHeadingElement;\n h5: HTMLHeadingElement;\n h6: HTMLHeadingElement;\n strong: HTMLElement;\n em: HTMLElement;\n blockquote: HTMLQuoteElement;\n pre: HTMLPreElement;\n code: HTMLElement;\n small: HTMLElement;\n label: HTMLLabelElement;\n a: HTMLAnchorElement;\n};\n\n// HTML props mapping type\ntype HTMLPropsMap = {\n p: React.HTMLAttributes<HTMLParagraphElement>;\n span: React.HTMLAttributes<HTMLSpanElement>;\n h1: React.HTMLAttributes<HTMLHeadingElement>;\n h2: React.HTMLAttributes<HTMLHeadingElement>;\n h3: React.HTMLAttributes<HTMLHeadingElement>;\n h4: React.HTMLAttributes<HTMLHeadingElement>;\n h5: React.HTMLAttributes<HTMLHeadingElement>;\n h6: React.HTMLAttributes<HTMLHeadingElement>;\n strong: React.HTMLAttributes<HTMLElement>;\n em: React.HTMLAttributes<HTMLElement>;\n blockquote: React.HTMLAttributes<HTMLQuoteElement>;\n pre: React.HTMLAttributes<HTMLPreElement>;\n code: React.HTMLAttributes<HTMLElement>;\n small: React.HTMLAttributes<HTMLElement>;\n label: React.LabelHTMLAttributes<HTMLLabelElement>;\n a: Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"color\">;\n};\n\ntype TextColor =\n | \"primary\"\n | \"secondary\"\n | \"white\"\n | \"primary-blue\"\n | \"disabled\"\n | \"danger\"\n | \"inherit\"\n | \"primary-100\";\n\nconst HEADING_ELEMENT_MAP: Record<string, TextElement> = {\n xl: \"h1\",\n lg: \"h1\",\n md: \"h2\",\n sm: \"h3\",\n xs: \"h4\"\n};\n\nconst getElementFromVariant = (variant: TypographyKey): TextElement => {\n const [category, size] = variant.split(\"-\");\n\n if (category === \"heading\") {\n return HEADING_ELEMENT_MAP[size] || \"p\";\n }\n\n if (category === \"label\") {\n return \"label\";\n }\n\n return \"p\";\n};\n\ntype Weight = \"light\" | \"regular\" | \"semibold\" | \"bold\";\n\nconst fontWeight: Record<Weight, string> = {\n light: \"font-light\",\n regular: \"font-regular\",\n semibold: \"font-semibold\",\n bold: \"font-bold\"\n};\n\ntype ResponsiveVariant = TypographyKey | `${Breakpoint}:${TypographyKey}`;\n\ntype TypographyCategory = keyof Typography;\ntype TypographyValue<T extends TypographyCategory> = Extract<\n keyof Typography[T],\n string | number | bigint | boolean | null | undefined\n>;\ntype TypographyKey = {\n [T in TypographyCategory]: `${T}-${TypographyValue<T>}`;\n}[TypographyCategory];\n\n// Update TextProps to use ResponsiveVariant\nexport type TextProps<T extends TextElement = \"p\"> = {\n variant?: ResponsiveVariant | ResponsiveVariant[];\n color?: TextColor;\n as?: T;\n className?: string;\n children: React.ReactNode;\n weight?: Weight;\n} & HTMLPropsMap[T];\n\n// Add helper function to process variants\nconst processVariants = (\n variants: ResponsiveVariant | ResponsiveVariant[] | undefined\n): string => {\n if (!variants) return \"text-body-default\";\n\n const variantArray = Array.isArray(variants) ? variants : [variants];\n\n return variantArray\n .map((variant) => {\n if (variant.includes(\":\")) {\n const [breakpoint, typographyClass] = variant.split(\":\");\n return `${breakpoint}:text-${typographyClass}`;\n }\n return `text-${variant}`;\n })\n .join(\" \");\n};\n\nexport const Text = React.forwardRef(\n <T extends TextElement = \"p\">(\n {\n variant = \"body-default\",\n color = \"primary\",\n as,\n className,\n children,\n weight,\n ...props\n }: TextProps<T>,\n ref: React.ForwardedRef<HTMLElementByTag[T]>\n ) => {\n // Process typography classes with breakpoints\n const typographyClasses = processVariants(variant);\n\n // Get color styles\n const colorClasses = color === \"inherit\" ? \"text-inherit\" : `text-${color}`;\n\n const suggestedElement = React.useMemo(() => {\n const baseVariant =\n typeof variant === \"string\"\n ? variant.split(\":\").pop()!\n : Array.isArray(variant)\n ? variant[0].split(\":\").pop()!\n : \"body-default\";\n return getElementFromVariant(baseVariant as TypographyKey);\n }, [variant]);\n\n const Component = (as || suggestedElement) as T;\n\n return (\n // @ts-expect-error TODO: figure this out\n <Component\n ref={ref}\n className={`\n font-sans antialiased\n ${typographyClasses}\n ${colorClasses}\n ${weight && `!${fontWeight[weight]}`}\n ${className}\n `}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nText.displayName = \"Text\";\n","import * as React from \"react\";\nimport * as ToastPrimitive from \"@radix-ui/react-toast\";\nimport { Toast, ToastProps } from \"../components/Toast\";\n\ntype ToastOptions = Omit<ToastProps, keyof ToastPrimitive.ToastProps>;\n\nexport const useToast = () => {\n const [toasts, setToasts] = React.useState<\n Array<ToastOptions & { id: string; open: boolean }>\n >([]);\n\n const show = React.useCallback((options: ToastOptions) => {\n const id = Math.random().toString(36).slice(2);\n setToasts((prev) => [...prev, { ...options, id, open: true }]);\n return id;\n }, []);\n\n const dismiss = React.useCallback((id: string) => {\n setToasts((prev) =>\n prev.map((toast) => (toast.id === id ? { ...toast, open: false } : toast))\n );\n }, []);\n\n const onOpenChange = React.useCallback(\n (id: string, open: boolean) => {\n if (!open) {\n dismiss(id);\n // Remove the toast after animation completes\n setTimeout(() => {\n setToasts((prev) => prev.filter((toast) => toast.id !== id));\n }, 300);\n }\n },\n [dismiss]\n );\n\n const toastElements = toasts.map((toast) => (\n <Toast\n key={toast.id}\n {...toast}\n onOpenChange={(open) => onOpenChange(toast.id, open)}\n />\n ));\n\n return { show, dismiss, toasts: toastElements };\n};\n","export type Breakpoint = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\nexport type ResponsiveSize = number | `${Breakpoint}:${number}`;\n\ntype SizeKey =\n | \"12\"\n | \"16\"\n | \"18\"\n | \"20\"\n | \"24\"\n | \"32\"\n | \"36\"\n | \"40\"\n | \"42\"\n | \"48\"\n | \"64\"\n | \"72\";\n\n// These constants help Tailwind identify the classes during compilation\nconst BASE_SIZES: Record<SizeKey, string> = {\n \"12\": \"h-[12px] w-[12px]\",\n \"16\": \"h-[16px] w-[16px]\",\n \"18\": \"h-[18px] w-[18px]\",\n \"20\": \"h-[20px] w-[20px]\",\n \"24\": \"h-[24px] w-[24px]\",\n \"32\": \"h-[32px] w-[32px]\",\n \"36\": \"h-[36px] w-[36px]\",\n \"40\": \"h-[40px] w-[40px]\",\n \"42\": \"h-[42px] w-[42px]\",\n \"48\": \"h-[48px] w-[48px]\",\n \"64\": \"h-[64px] w-[64px]\",\n \"72\": \"h-[72px] w-[72px]\"\n};\n\nconst RESPONSIVE_SIZES: Record<Breakpoint, Record<SizeKey, string>> = {\n sm: {\n \"12\": \"sm:h-[12px] sm:w-[12px]\",\n \"16\": \"sm:h-[16px] sm:w-[16px]\",\n \"18\": \"sm:h-[18px] sm:w-[18px]\",\n \"20\": \"sm:h-[20px] sm:w-[20px]\",\n \"24\": \"sm:h-[24px] sm:w-[24px]\",\n \"32\": \"sm:h-[32px] sm:w-[32px]\",\n \"36\": \"sm:h-[36px] sm:w-[36px]\",\n \"40\": \"sm:h-[40px] sm:w-[40px]\",\n \"42\": \"sm:h-[42px] sm:w-[42px]\",\n \"48\": \"sm:h-[48px] sm:w-[48px]\",\n \"64\": \"sm:h-[64px] sm:w-[64px]\",\n \"72\": \"sm:h-[72px] sm:w-[72px]\"\n },\n md: {\n \"12\": \"md:h-[12px] md:w-[12px]\",\n \"16\": \"md:h-[16px] md:w-[16px]\",\n \"18\": \"md:h-[18px] md:w-[18px]\",\n \"20\": \"md:h-[20px] md:w-[20px]\",\n \"24\": \"md:h-[24px] md:w-[24px]\",\n \"32\": \"md:h-[32px] md:w-[32px]\",\n \"36\": \"md:h-[36px] md:w-[36px]\",\n \"40\": \"md:h-[40px] md:w-[40px]\",\n \"42\": \"md:h-[42px] md:w-[42px]\",\n \"48\": \"md:h-[48px] md:w-[48px]\",\n \"64\": \"md:h-[64px] md:w-[64px]\",\n \"72\": \"md:h-[72px] md:w-[72px]\"\n },\n lg: {\n \"12\": \"lg:h-[12px] lg:w-[12px]\",\n \"16\": \"lg:h-[16px] lg:w-[16px]\",\n \"18\": \"lg:h-[18px] lg:w-[18px]\",\n \"20\": \"lg:h-[20px] lg:w-[20px]\",\n \"24\": \"lg:h-[24px] lg:w-[24px]\",\n \"32\": \"lg:h-[32px] lg:w-[32px]\",\n \"36\": \"lg:h-[36px] lg:w-[36px]\",\n \"40\": \"lg:h-[40px] lg:w-[40px]\",\n \"42\": \"lg:h-[42px] lg:w-[42px]\",\n \"48\": \"lg:h-[48px] lg:w-[48px]\",\n \"64\": \"lg:h-[64px] lg:w-[64px]\",\n \"72\": \"lg:h-[72px] lg:w-[72px]\"\n },\n xl: {\n \"12\": \"xl:h-[12px] xl:w-[12px]\",\n \"16\": \"xl:h-[16px] xl:w-[16px]\",\n \"18\": \"xl:h-[18px] xl:w-[18px]\",\n \"20\": \"xl:h-[20px] xl:w-[20px]\",\n \"24\": \"xl:h-[24px] xl:w-[24px]\",\n \"32\": \"xl:h-[32px] xl:w-[32px]\",\n \"36\": \"xl:h-[36px] xl:w-[36px]\",\n \"40\": \"xl:h-[40px] xl:w-[40px]\",\n \"42\": \"xl:h-[42px] xl:w-[42px]\",\n \"48\": \"xl:h-[48px] xl:w-[48px]\",\n \"64\": \"xl:h-[64px] xl:w-[64px]\",\n \"72\": \"xl:h-[72px] xl:w-[72px]\"\n },\n \"2xl\": {\n \"12\": \"2xl:h-[12px] 2xl:w-[12px]\",\n \"16\": \"2xl:h-[16px] 2xl:w-[16px]\",\n \"18\": \"2xl:h-[18px] 2xl:w-[18px]\",\n \"20\": \"2xl:h-[20px] 2xl:w-[20px]\",\n \"24\": \"2xl:h-[24px] 2xl:w-[24px]\",\n \"32\": \"2xl:h-[32px] 2xl:w-[32px]\",\n \"36\": \"2xl:h-[36px] 2xl:w-[36px]\",\n \"40\": \"2xl:h-[40px] 2xl:w-[40px]\",\n \"42\": \"2xl:h-[42px] 2xl:w-[42px]\",\n \"48\": \"2xl:h-[48px] 2xl:w-[48px]\",\n \"64\": \"2xl:h-[64px] 2xl:w-[64px]\",\n \"72\": \"2xl:h-[72px] 2xl:w-[72px]\"\n }\n};\n\nconst getSizeKey = (size: number): SizeKey | undefined => {\n return String(size) as SizeKey;\n};\n\nexport const getResponsiveSize = (\n size: ResponsiveSize | ResponsiveSize[] | undefined,\n baseSize: number = 24\n): {\n responsiveSizeClasses: string;\n responsiveSizeStyles: Record<string, string>;\n} => {\n const classes: string[] = [];\n const styles: Record<string, string> = {};\n\n // If no size provided, use baseSize\n if (size === undefined) {\n const key = getSizeKey(baseSize);\n if (key) {\n classes.push(BASE_SIZES[key]);\n } else {\n styles.height = `${baseSize}px`;\n styles.width = `${baseSize}px`;\n }\n }\n\n // If size is a number, use that directly\n if (typeof size === \"number\") {\n const key = getSizeKey(size);\n if (key) {\n classes.push(BASE_SIZES[key]);\n } else {\n styles.height = `${size}px`;\n styles.width = `${size}px`;\n }\n }\n\n // If array of responsive sizes, generate responsive classes\n if (Array.isArray(size)) {\n const baseKey = getSizeKey(baseSize);\n const responsiveClasses = [\n (baseKey && BASE_SIZES[baseKey]) || `h-[${baseSize}px] w-[${baseSize}px]`\n ];\n\n size.forEach((s) => {\n if (typeof s === \"string\") {\n const [breakpoint, valueStr] = s.split(\":\") as [Breakpoint, string];\n const value = parseInt(valueStr, 10);\n const key = getSizeKey(value);\n classes.push(\n (key && RESPONSIVE_SIZES[breakpoint]?.[key]) ||\n `${breakpoint}:h-[${value}px] ${breakpoint}:w-[${value}px]`\n );\n }\n });\n\n classes.push(...responsiveClasses);\n }\n\n if (typeof size === \"string\") {\n const [breakpoint, valueStr] = size.split(\":\") as [Breakpoint, string];\n const value = parseInt(valueStr, 10);\n const valueKey = getSizeKey(value);\n classes.push(\n (valueKey && RESPONSIVE_SIZES[breakpoint]?.[valueKey]) ||\n `${breakpoint}:h-[${value}px] ${breakpoint}:w-[${value}px]`\n );\n }\n\n return {\n responsiveSizeClasses: classes.join(\" \"),\n responsiveSizeStyles: styles\n };\n};\n","import { IconMap, IconName } from \"@deckai/icons\";\nimport React, { SVGProps } from \"react\";\nimport { IconColors } from \"../types/tailwind\";\nimport { cn } from \"../utils\";\nimport { ResponsiveSize, getResponsiveSize } from \"../utils/responsive\";\n\nexport type IconProps = {\n name: IconName;\n /** @default 24 */\n size?: ResponsiveSize | ResponsiveSize[];\n /** @default primary */\n color?: IconColors;\n title?: string;\n className?: string;\n style?: React.CSSProperties;\n} & Omit<SVGProps<SVGSVGElement>, \"aria-hidden\" | \"aria-label\">;\n\nconst COLOR_MAP: Record<IconColors, string> = {\n primary: \"#080808\",\n secondary: \"#666666\",\n white: \"#ffffff\",\n primaryBlue: \"#089CCB\",\n disabled: \"#888888\",\n danger: \"#FF0000\"\n};\n\nexport const Icon = React.forwardRef<SVGSVGElement, IconProps>(\n (\n {\n name,\n size = 24,\n color = \"primary\",\n title,\n className,\n style = {},\n ...props\n },\n ref\n ) => {\n const IconComponent = IconMap[name];\n const { responsiveSizeClasses, responsiveSizeStyles } = getResponsiveSize(\n size,\n 24\n );\n\n return (\n <div\n className={cn(\n \"flex justify-center items-center\",\n responsiveSizeClasses,\n className\n )}\n style={{\n [\"--icon-stroke\" as string]: COLOR_MAP[color],\n ...responsiveSizeStyles,\n ...style\n }}\n >\n <IconComponent\n ref={ref}\n aria-hidden={!title}\n aria-label={title}\n stroke={name.includes(\"filled\") ? undefined : COLOR_MAP[color]}\n {...props}\n />\n </div>\n );\n }\n);\n\nIcon.displayName = \"Icon\";\n","import * as React from \"react\";\nimport { Text } from \"./Text\";\nimport { focusRingStyles } from \"../utils/tailwind\";\nimport { cn } from \"../utils\";\n\nexport type ButtonProps = {\n /** @default filled */\n variant?: \"filled\" | \"outlined\" | \"transparent\";\n /** @default primary */\n color?: \"black\" | \"accent\" | \"secondary\";\n isLoading?: boolean;\n children: React.ReactNode;\n className?: string;\n disabled?: boolean;\n start?: React.ReactNode;\n end?: React.ReactNode;\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const filled = {\n black: \"bg-primary text-white\",\n // fade it slightly\n accent: \"bg-primary-100 text-white\",\n secondary: \"bg-secondary-100 text-secondary\"\n};\n\nexport const outlined = {\n black: \"border border-text text-primary\",\n accent: \"border border-primary-100 text-primary-100\",\n secondary: \"border border-text-secondary text-secondary\"\n};\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"filled\",\n color = \"black\",\n isLoading = false,\n children,\n disabled,\n end,\n ...props\n },\n ref\n ) => (\n <button\n ref={ref}\n className={cn(\n `\n sm:px-7 px-4\n py-2\n inline-flex items-center justify-center\n rounded-lg \n transition-colors duration-200\n disabled:opacity-50 disabled:pointer-events-none\n hover:opacity-80 active:scale-95 \n truncate`,\n focusRingStyles,\n variant === \"filled\"\n ? filled[color]\n : variant === \"transparent\"\n ? \"bg-transparent text-text\"\n : outlined[color],\n className\n )}\n disabled={disabled || isLoading}\n type=\"button\"\n {...props}\n >\n {typeof children === \"string\" ? (\n <Text\n variant={[\"sm:body-default-bold\", \"body-xxs-semibold\"]}\n color=\"inherit\"\n >\n {children}\n </Text>\n ) : (\n children\n )}\n {end}\n </button>\n )\n);\n\nButton.displayName = \"Button\";\n","import * as React from \"react\";\nimport * as ToastPrimitive from \"@radix-ui/react-toast\";\nimport { cn } from \"../utils\";\nimport { Icon } from \"./Icon\";\nimport { Text } from \"./Text\";\nimport { Button, ButtonProps } from \"./Button\";\nimport { IconName } from \"@deckai/icons\";\n\ntype ToastAction = {\n label: string;\n onClick: () => void;\n variant?: ButtonProps[\"variant\"];\n};\n\nexport type ToastProps = Omit<ToastPrimitive.ToastProps, \"action\"> & {\n /** Optional title for the toast */\n title?: string;\n /** Main message content */\n message: string;\n /** Primary action button configuration */\n action?: ToastAction;\n /** Secondary action button configuration */\n secondaryAction?: ToastAction;\n /** Optional variant to change the visual style */\n variant?: \"default\" | \"success\" | \"error\" | \"warning\";\n /** Whether to allow dismissing by clicking outside */\n allowOutsideClick?: boolean;\n /** Optional className for custom styling */\n className?: string;\n /** Optional callback when toast is closed */\n onClose?: () => void;\n};\n\nconst variants: Record<\n NonNullable<ToastProps[\"variant\"]>,\n {\n icon: IconName;\n className: string;\n }\n> = {\n default: {\n icon: \"information\",\n className: \"bg-gray-900 text-white\"\n },\n success: {\n icon: \"check\",\n className: \"bg-green-600 text-white\"\n },\n error: {\n icon: \"danger\",\n className: \"bg-tertiary-10 text-white\"\n },\n warning: {\n icon: \"warning-2\",\n className: \"bg-tertiary-20 text-white\"\n }\n} as const;\n\nexport const Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Root>,\n ToastProps\n>(\n (\n {\n title,\n message,\n action,\n secondaryAction,\n variant = \"default\",\n duration = 5000,\n className,\n onOpenChange,\n allowOutsideClick = true,\n onClose,\n ...props\n },\n ref\n ) => {\n const variantConfig = variants[variant];\n\n const handleOpenChange = React.useCallback(\n (open: boolean) => {\n // Only allow programmatic close or close button click if outside click is disabled\n if (!allowOutsideClick && open === false) {\n return;\n }\n onOpenChange?.(open);\n if (!open) {\n onClose?.();\n }\n },\n [onOpenChange, allowOutsideClick, onClose]\n );\n\n return (\n <ToastPrimitive.Root\n ref={ref}\n onOpenChange={handleOpenChange}\n duration={duration}\n className={cn(\n \"group pointer-events-auto relative flex w-full flex-col gap-4 rounded-lg p-4 items-center\",\n \"shadow-lg\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-right-full\",\n variantConfig.className,\n className\n )}\n {...props}\n >\n <ToastPrimitive.Close\n className=\"absolute right-1 top-1 h-[40px] w-[40px] p-1 hover:bg-white/10 flex items-center justify-center rounded-lg\"\n aria-label=\"Close\"\n onClick={onClose}\n >\n <Icon name=\"close\" size={16} color=\"white\" />\n </ToastPrimitive.Close>\n\n <div className=\"flex gap-4\">\n <Icon\n name={variantConfig.icon}\n className=\"h-5 w-5 shrink-0\"\n color=\"white\"\n />\n\n <div className=\"flex flex-col flex-1 gap-2\">\n {title && (\n <ToastPrimitive.Title asChild>\n <Text variant=\"body-default-bold\" color=\"inherit\">\n {title}\n </Text>\n </ToastPrimitive.Title>\n )}\n <ToastPrimitive.Description asChild>\n <Text variant=\"body-xs-medium\" color=\"inherit\">\n {message}\n </Text>\n </ToastPrimitive.Description>\n </div>\n </div>\n\n {(action || secondaryAction) && (\n <div className=\"flex gap-2 justify-end mt-2\">\n {secondaryAction && (\n <ToastPrimitive.Action asChild altText={secondaryAction.label}>\n <div className=\"min-h-[40px] flex items-center\">\n <Button\n variant={secondaryAction.variant || \"outlined\"}\n color=\"black\"\n className=\"border-white text-white hover:bg-white/10\"\n onClick={secondaryAction.onClick}\n >\n {secondaryAction.label}\n </Button>\n </div>\n </ToastPrimitive.Action>\n )}\n {action && (\n <ToastPrimitive.Action asChild altText={action.label}>\n <div className=\"flex items-center\">\n <Button\n variant={action.variant || \"outlined\"}\n color=\"black\"\n className=\"border-white text-white hover:bg-white/10\"\n onClick={action.onClick}\n >\n {action.label}\n </Button>\n </div>\n </ToastPrimitive.Action>\n )}\n </div>\n )}\n </ToastPrimitive.Root>\n );\n }\n);\n\nToast.displayName = \"Toast\";\n","import { useCallback, useEffect, useState } from \"react\";\n\nconst useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? useEffect : () => {};\n\nexport const useMediaQuery = (query: string): boolean => {\n // Initialize with null to prevent hydration mismatch\n const [matches, setMatches] = useState<boolean | null>(null);\n\n const getMatches = useCallback((query: string): boolean => {\n if (typeof window !== \"undefined\") {\n return window.matchMedia(query).matches;\n }\n return false;\n }, []);\n\n // Update matches after mount to prevent hydration mismatch\n useIsomorphicLayoutEffect(() => {\n setMatches(getMatches(query));\n }, [query, getMatches]);\n\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const mediaQuery = window.matchMedia(query);\n\n const handleChange = () => {\n setMatches(getMatches(query));\n };\n\n mediaQuery.addEventListener(\"change\", handleChange);\n\n return () => {\n mediaQuery.removeEventListener(\"change\", handleChange);\n };\n }\n }, [query, getMatches]);\n\n // Return false during SSR, actual value after hydration\n return matches ?? false;\n};\n","import { useEffect, useLayoutEffect } from \"react\";\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n","import React, { useRef, useState } from \"react\";\nimport * as RadixCollapsible from \"@radix-ui/react-collapsible\";\nimport { Pressable } from \"./Pressable\";\nimport { Text } from \"./Text\";\nimport { cn } from \"../utils\";\nimport { useIsomorphicLayoutEffect } from \"../hooks\";\n\nexport type CollapsibleProps = {\n children: React.ReactNode;\n maxHeight?: number;\n};\n\nexport const Collapsible = ({\n children,\n maxHeight = 100\n}: CollapsibleProps) => {\n const [open, setOpen] = React.useState(false);\n const contentRef = useRef<HTMLDivElement>(null);\n const [contentHeight, setContentHeight] = useState<number>(maxHeight);\n\n // Measure content height on mount and resize\n useIsomorphicLayoutEffect(() => {\n if (!contentRef.current) return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContentHeight(entry.target.scrollHeight);\n }\n });\n\n resizeObserver.observe(contentRef.current);\n return () => resizeObserver.disconnect();\n }, []);\n\n const shouldShowTrigger = contentHeight > maxHeight;\n\n return (\n <RadixCollapsible.Root open={open} onOpenChange={setOpen}>\n <div className=\"relative\">\n <div\n className=\"overflow-hidden transition-[height] duration-300 ease-in-out\"\n style={{\n height: open ? `${contentHeight}px` : `${maxHeight}px`\n }}\n >\n <div ref={contentRef} className=\"w-full\">\n {children}\n </div>\n </div>\n\n {shouldShowTrigger && (\n <RadixCollapsible.Trigger asChild>\n <Pressable\n className={cn(\n \"absolute -bottom-8 left-0 right-0\",\n \"flex items-end justify-center\",\n \"h-16 pt-8 pb-2\",\n !open && \"bg-gradient-to-b from-transparent via-white to-white\",\n \"hover:opacity-100 transition-opacity\"\n )}\n >\n <Text variant=\"label-default\" color=\"secondary\">\n {open ? \"See less\" : \"See more\"}\n </Text>\n </Pressable>\n </RadixCollapsible.Trigger>\n )}\n </div>\n </RadixCollapsible.Root>\n );\n};\n\nCollapsible.displayName = \"Collapsible\";\n"]}
1
+ {"version":3,"sources":["../../src/utils/index.ts","../../src/components/Text.tsx","../../src/utils/tailwind.ts","../../src/components/Button.tsx","../../src/utils/responsive.ts","../../src/components/Icon.tsx","../../src/components/Toast.tsx","../../src/hooks/useIsomorphicLayoutEffect.tsx","../../src/components/Pressable.tsx","../../src/components/Collapsible.tsx"],"names":["cn","inputs","twMerge","clsx","HEADING_ELEMENT_MAP","getElementFromVariant","variant","category","size","fontWeight","processVariants","variants","breakpoint","typographyClass","Text","React","color","as","className","children","weight","props","ref","typographyClasses","colorClasses","suggestedElement","baseVariant","focusRingStyles","filled","outlined","Button","g","isLoading","disabled","end","BASE_SIZES","RESPONSIVE_SIZES","getSizeKey","getResponsiveSize","baseSize","classes","styles","key","baseKey","responsiveClasses","s","valueStr","value","valueKey","COLOR_MAP","Icon","name","title","style","IconComponent","IconMap","responsiveSizeClasses","responsiveSizeStyles","Toast","message","action","secondaryAction","duration","onOpenChange","allowOutsideClick","onClose","variantConfig","handleOpenChange","open","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","Pressable","type","Collapsible","maxHeight","setOpen","contentRef","useRef","contentHeight","setContentHeight","useState","resizeObserver","entries","entry","shouldShowTrigger"],"mappings":"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","file":"Collapsible.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport const noopFn = () => {};\n","import React from \"react\";\nimport { Typography } from \"../types/tailwind\";\nimport { Breakpoint } from \"../utils/responsive\";\n\ntype TextElement =\n | \"p\"\n | \"span\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"strong\"\n | \"em\"\n | \"blockquote\"\n | \"pre\"\n | \"code\"\n | \"small\"\n | \"label\"\n | \"a\";\n\n// HTML element mapping type\ntype HTMLElementByTag = {\n p: HTMLParagraphElement;\n span: HTMLSpanElement;\n h1: HTMLHeadingElement;\n h2: HTMLHeadingElement;\n h3: HTMLHeadingElement;\n h4: HTMLHeadingElement;\n h5: HTMLHeadingElement;\n h6: HTMLHeadingElement;\n strong: HTMLElement;\n em: HTMLElement;\n blockquote: HTMLQuoteElement;\n pre: HTMLPreElement;\n code: HTMLElement;\n small: HTMLElement;\n label: HTMLLabelElement;\n a: HTMLAnchorElement;\n};\n\n// HTML props mapping type\ntype HTMLPropsMap = {\n p: React.HTMLAttributes<HTMLParagraphElement>;\n span: React.HTMLAttributes<HTMLSpanElement>;\n h1: React.HTMLAttributes<HTMLHeadingElement>;\n h2: React.HTMLAttributes<HTMLHeadingElement>;\n h3: React.HTMLAttributes<HTMLHeadingElement>;\n h4: React.HTMLAttributes<HTMLHeadingElement>;\n h5: React.HTMLAttributes<HTMLHeadingElement>;\n h6: React.HTMLAttributes<HTMLHeadingElement>;\n strong: React.HTMLAttributes<HTMLElement>;\n em: React.HTMLAttributes<HTMLElement>;\n blockquote: React.HTMLAttributes<HTMLQuoteElement>;\n pre: React.HTMLAttributes<HTMLPreElement>;\n code: React.HTMLAttributes<HTMLElement>;\n small: React.HTMLAttributes<HTMLElement>;\n label: React.LabelHTMLAttributes<HTMLLabelElement>;\n a: Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"color\">;\n};\n\ntype TextColor =\n | \"primary\"\n | \"secondary\"\n | \"white\"\n | \"primary-blue\"\n | \"disabled\"\n | \"danger\"\n | \"inherit\"\n | \"primary-100\";\n\nconst HEADING_ELEMENT_MAP: Record<string, TextElement> = {\n xl: \"h1\",\n lg: \"h1\",\n md: \"h2\",\n sm: \"h3\",\n xs: \"h4\"\n};\n\nconst getElementFromVariant = (variant: TypographyKey): TextElement => {\n const [category, size] = variant.split(\"-\");\n\n if (category === \"heading\") {\n return HEADING_ELEMENT_MAP[size] || \"p\";\n }\n\n if (category === \"label\") {\n return \"label\";\n }\n\n return \"p\";\n};\n\ntype Weight = \"light\" | \"regular\" | \"semibold\" | \"bold\";\n\nconst fontWeight: Record<Weight, string> = {\n light: \"font-light\",\n regular: \"font-regular\",\n semibold: \"font-semibold\",\n bold: \"font-bold\"\n};\n\ntype ResponsiveVariant = TypographyKey | `${Breakpoint}:${TypographyKey}`;\n\ntype TypographyCategory = keyof Typography;\ntype TypographyValue<T extends TypographyCategory> = Extract<\n keyof Typography[T],\n string | number | bigint | boolean | null | undefined\n>;\ntype TypographyKey = {\n [T in TypographyCategory]: `${T}-${TypographyValue<T>}`;\n}[TypographyCategory];\n\n// Update TextProps to use ResponsiveVariant\nexport type TextProps<T extends TextElement = \"p\"> = {\n variant?: ResponsiveVariant | ResponsiveVariant[];\n color?: TextColor;\n as?: T;\n className?: string;\n children: React.ReactNode;\n weight?: Weight;\n} & HTMLPropsMap[T];\n\n// Add helper function to process variants\nconst processVariants = (\n variants: ResponsiveVariant | ResponsiveVariant[] | undefined\n): string => {\n if (!variants) return \"text-body-default\";\n\n const variantArray = Array.isArray(variants) ? variants : [variants];\n\n return variantArray\n .map((variant) => {\n if (variant.includes(\":\")) {\n const [breakpoint, typographyClass] = variant.split(\":\");\n return `${breakpoint}:text-${typographyClass}`;\n }\n return `text-${variant}`;\n })\n .join(\" \");\n};\n\nexport const Text = React.forwardRef(\n <T extends TextElement = \"p\">(\n {\n variant = \"body-default\",\n color = \"primary\",\n as,\n className,\n children,\n weight,\n ...props\n }: TextProps<T>,\n ref: React.ForwardedRef<HTMLElementByTag[T]>\n ) => {\n // Process typography classes with breakpoints\n const typographyClasses = processVariants(variant);\n\n // Get color styles using Tailwind classes that reference CSS variables\n const colorClasses = color === \"inherit\" ? \"text-inherit\" : `text-${color}`;\n\n const suggestedElement = React.useMemo(() => {\n const baseVariant =\n typeof variant === \"string\"\n ? variant.split(\":\").pop()!\n : Array.isArray(variant)\n ? variant[0].split(\":\").pop()!\n : \"body-default\";\n return getElementFromVariant(baseVariant as TypographyKey);\n }, [variant]);\n\n const Component = (as || suggestedElement) as T;\n\n return (\n // @ts-expect-error TODO: figure this out\n <Component\n ref={ref}\n className={`\n font-sans antialiased\n ${typographyClasses}\n ${colorClasses}\n ${weight && `!${fontWeight[weight]}`}\n ${className}\n `}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nText.displayName = \"Text\";\n","import { Colors, Typography } from \"../types/tailwind\";\n\n// Generate safelist patterns for all color utilities so you can use any theme color variable in your code\nexport const generateSafelist = (colors: Colors, typography: Typography) => {\n const colorNames = Object.keys(colors) as (keyof Colors)[];\n const utilities = [\"bg\", \"text\", \"border\", \"ring\", \"divide\", \"outline\"];\n const variants = [\"hover:\", \"focus:\", \"active:\", \"disabled:\"];\n const breakpoints = [\"sm\", \"md\", \"lg\", \"xl\", \"2xl\"];\n const sizes = [\"24\", \"42\", \"48\", \"64\", \"72\"]; // Add all the sizes you need\n\n const safelist: (string | { pattern: RegExp; variants: string[] })[] = [];\n\n colorNames.forEach((colorName) => {\n if (typeof colors[colorName] === \"object\") {\n // Handle nested color objects (with number keys)\n Object.keys(colors[colorName]).forEach((shade) => {\n utilities.forEach((utility) => {\n // Base utility\n safelist.push(`${utility}-${colorName}-${shade}`);\n\n // Variant utilities\n variants.forEach((variant) => {\n safelist.push(`${variant}${utility}-${colorName}-${shade}`);\n });\n });\n });\n } else {\n // Handle direct color values\n utilities.forEach((utility) => {\n safelist.push(`${utility}-${colorName}`);\n\n variants.forEach((variant) => {\n safelist.push(`${variant}${utility}-${colorName}`);\n });\n });\n }\n });\n\n // Generate typography classes\n Object.entries(typography).forEach(([family, sizes]) => {\n Object.keys(sizes).forEach((size) => {\n // Base typography classes\n safelist.push(`text-${family}-${size}`);\n\n // Add variants\n variants.forEach((variant) => {\n safelist.push(`${variant}text-${family}-${size}`);\n });\n });\n });\n\n const typographyClasses = Object.entries(typography).flatMap(\n ([category, sizes]) =>\n Object.keys(sizes).map((size) => `text-${category}-${size}`)\n );\n\n // Generate responsive variants\n const responsiveTypographyClasses = typographyClasses.flatMap((className) =>\n breakpoints.map((breakpoint) => `${breakpoint}:${className}`)\n );\n\n // Generate size classes with responsive variants\n const sizeClasses = sizes.flatMap((size) => [\n `h-[${size}px]`,\n `w-[${size}px]`,\n ...breakpoints.flatMap((bp) => [\n `${bp}:h-[${size}px]`,\n `${bp}:w-[${size}px]`\n ])\n ]);\n\n return [...typographyClasses, ...responsiveTypographyClasses, ...sizeClasses];\n};\n\nexport const focusRingStyles =\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-100\";\nexport const focusRingWithinStyles =\n \"focus-within:outline-none focus-within:ring-2 focus-within:ring-primary-100\";\nexport const focusRingStylesCoerced = \"ring-2 ring-primary-100\";\n","import * as React from \"react\";\nimport { Text } from \"./Text\";\nimport { focusRingStyles } from \"../utils/tailwind\";\nimport { cn } from \"../utils\";\n\nexport type ButtonProps = {\n /** @default filled */\n variant?: \"filled\" | \"outlined\" | \"transparent\";\n /** @default primary */\n color?: \"black\" | \"accent\" | \"secondary\";\n isLoading?: boolean;\n children: React.ReactNode;\n className?: string;\n disabled?: boolean;\n start?: React.ReactNode;\n end?: React.ReactNode;\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const filled = {\n black: \"bg-primary text-white\",\n // fade it slightly\n accent: \"bg-primary-100 text-white\",\n secondary: \"bg-secondary-100 text-secondary\"\n};\n\nexport const outlined = {\n black: \"border border-text text-primary\",\n accent: \"border border-primary-100 text-primary-100\",\n secondary: \"border border-text-secondary text-secondary\"\n};\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"filled\",\n color = \"black\",\n isLoading = false,\n children,\n disabled,\n end,\n ...props\n },\n ref\n ) => (\n <button\n ref={ref}\n className={cn(\n `\n sm:px-7 px-4\n py-2\n inline-flex items-center justify-center\n rounded-lg \n transition-colors duration-200\n disabled:opacity-50 disabled:pointer-events-none\n hover:opacity-80 active:scale-95 \n truncate`,\n focusRingStyles,\n variant === \"filled\"\n ? filled[color]\n : variant === \"transparent\"\n ? \"bg-transparent text-text\"\n : outlined[color],\n className\n )}\n disabled={disabled || isLoading}\n type=\"button\"\n {...props}\n >\n {typeof children === \"string\" ? (\n <Text\n variant={[\"sm:body-default-bold\", \"body-xxs-semibold\"]}\n color=\"inherit\"\n >\n {children}\n </Text>\n ) : (\n children\n )}\n {end}\n </button>\n )\n);\n\nButton.displayName = \"Button\";\n","export type Breakpoint = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\nexport type ResponsiveSize = number | `${Breakpoint}:${number}`;\n\ntype SizeKey =\n | \"12\"\n | \"16\"\n | \"18\"\n | \"20\"\n | \"24\"\n | \"32\"\n | \"36\"\n | \"40\"\n | \"42\"\n | \"48\"\n | \"64\"\n | \"72\";\n\n// These constants help Tailwind identify the classes during compilation\nconst BASE_SIZES: Record<SizeKey, string> = {\n \"12\": \"h-[12px] w-[12px]\",\n \"16\": \"h-[16px] w-[16px]\",\n \"18\": \"h-[18px] w-[18px]\",\n \"20\": \"h-[20px] w-[20px]\",\n \"24\": \"h-[24px] w-[24px]\",\n \"32\": \"h-[32px] w-[32px]\",\n \"36\": \"h-[36px] w-[36px]\",\n \"40\": \"h-[40px] w-[40px]\",\n \"42\": \"h-[42px] w-[42px]\",\n \"48\": \"h-[48px] w-[48px]\",\n \"64\": \"h-[64px] w-[64px]\",\n \"72\": \"h-[72px] w-[72px]\"\n};\n\nconst RESPONSIVE_SIZES: Record<Breakpoint, Record<SizeKey, string>> = {\n sm: {\n \"12\": \"sm:h-[12px] sm:w-[12px]\",\n \"16\": \"sm:h-[16px] sm:w-[16px]\",\n \"18\": \"sm:h-[18px] sm:w-[18px]\",\n \"20\": \"sm:h-[20px] sm:w-[20px]\",\n \"24\": \"sm:h-[24px] sm:w-[24px]\",\n \"32\": \"sm:h-[32px] sm:w-[32px]\",\n \"36\": \"sm:h-[36px] sm:w-[36px]\",\n \"40\": \"sm:h-[40px] sm:w-[40px]\",\n \"42\": \"sm:h-[42px] sm:w-[42px]\",\n \"48\": \"sm:h-[48px] sm:w-[48px]\",\n \"64\": \"sm:h-[64px] sm:w-[64px]\",\n \"72\": \"sm:h-[72px] sm:w-[72px]\"\n },\n md: {\n \"12\": \"md:h-[12px] md:w-[12px]\",\n \"16\": \"md:h-[16px] md:w-[16px]\",\n \"18\": \"md:h-[18px] md:w-[18px]\",\n \"20\": \"md:h-[20px] md:w-[20px]\",\n \"24\": \"md:h-[24px] md:w-[24px]\",\n \"32\": \"md:h-[32px] md:w-[32px]\",\n \"36\": \"md:h-[36px] md:w-[36px]\",\n \"40\": \"md:h-[40px] md:w-[40px]\",\n \"42\": \"md:h-[42px] md:w-[42px]\",\n \"48\": \"md:h-[48px] md:w-[48px]\",\n \"64\": \"md:h-[64px] md:w-[64px]\",\n \"72\": \"md:h-[72px] md:w-[72px]\"\n },\n lg: {\n \"12\": \"lg:h-[12px] lg:w-[12px]\",\n \"16\": \"lg:h-[16px] lg:w-[16px]\",\n \"18\": \"lg:h-[18px] lg:w-[18px]\",\n \"20\": \"lg:h-[20px] lg:w-[20px]\",\n \"24\": \"lg:h-[24px] lg:w-[24px]\",\n \"32\": \"lg:h-[32px] lg:w-[32px]\",\n \"36\": \"lg:h-[36px] lg:w-[36px]\",\n \"40\": \"lg:h-[40px] lg:w-[40px]\",\n \"42\": \"lg:h-[42px] lg:w-[42px]\",\n \"48\": \"lg:h-[48px] lg:w-[48px]\",\n \"64\": \"lg:h-[64px] lg:w-[64px]\",\n \"72\": \"lg:h-[72px] lg:w-[72px]\"\n },\n xl: {\n \"12\": \"xl:h-[12px] xl:w-[12px]\",\n \"16\": \"xl:h-[16px] xl:w-[16px]\",\n \"18\": \"xl:h-[18px] xl:w-[18px]\",\n \"20\": \"xl:h-[20px] xl:w-[20px]\",\n \"24\": \"xl:h-[24px] xl:w-[24px]\",\n \"32\": \"xl:h-[32px] xl:w-[32px]\",\n \"36\": \"xl:h-[36px] xl:w-[36px]\",\n \"40\": \"xl:h-[40px] xl:w-[40px]\",\n \"42\": \"xl:h-[42px] xl:w-[42px]\",\n \"48\": \"xl:h-[48px] xl:w-[48px]\",\n \"64\": \"xl:h-[64px] xl:w-[64px]\",\n \"72\": \"xl:h-[72px] xl:w-[72px]\"\n },\n \"2xl\": {\n \"12\": \"2xl:h-[12px] 2xl:w-[12px]\",\n \"16\": \"2xl:h-[16px] 2xl:w-[16px]\",\n \"18\": \"2xl:h-[18px] 2xl:w-[18px]\",\n \"20\": \"2xl:h-[20px] 2xl:w-[20px]\",\n \"24\": \"2xl:h-[24px] 2xl:w-[24px]\",\n \"32\": \"2xl:h-[32px] 2xl:w-[32px]\",\n \"36\": \"2xl:h-[36px] 2xl:w-[36px]\",\n \"40\": \"2xl:h-[40px] 2xl:w-[40px]\",\n \"42\": \"2xl:h-[42px] 2xl:w-[42px]\",\n \"48\": \"2xl:h-[48px] 2xl:w-[48px]\",\n \"64\": \"2xl:h-[64px] 2xl:w-[64px]\",\n \"72\": \"2xl:h-[72px] 2xl:w-[72px]\"\n }\n};\n\nconst getSizeKey = (size: number): SizeKey | undefined => {\n return String(size) as SizeKey;\n};\n\nexport const getResponsiveSize = (\n size: ResponsiveSize | ResponsiveSize[] | undefined,\n baseSize: number = 24\n): {\n responsiveSizeClasses: string;\n responsiveSizeStyles: Record<string, string>;\n} => {\n const classes: string[] = [];\n const styles: Record<string, string> = {};\n\n // If no size provided, use baseSize\n if (size === undefined) {\n const key = getSizeKey(baseSize);\n if (key) {\n classes.push(BASE_SIZES[key]);\n } else {\n styles.height = `${baseSize}px`;\n styles.width = `${baseSize}px`;\n }\n }\n\n // If size is a number, use that directly\n if (typeof size === \"number\") {\n const key = getSizeKey(size);\n if (key) {\n classes.push(BASE_SIZES[key]);\n } else {\n styles.height = `${size}px`;\n styles.width = `${size}px`;\n }\n }\n\n // If array of responsive sizes, generate responsive classes\n if (Array.isArray(size)) {\n const baseKey = getSizeKey(baseSize);\n const responsiveClasses = [\n (baseKey && BASE_SIZES[baseKey]) || `h-[${baseSize}px] w-[${baseSize}px]`\n ];\n\n size.forEach((s) => {\n if (typeof s === \"string\") {\n const [breakpoint, valueStr] = s.split(\":\") as [Breakpoint, string];\n const value = parseInt(valueStr, 10);\n const key = getSizeKey(value);\n classes.push(\n (key && RESPONSIVE_SIZES[breakpoint]?.[key]) ||\n `${breakpoint}:h-[${value}px] ${breakpoint}:w-[${value}px]`\n );\n }\n });\n\n classes.push(...responsiveClasses);\n }\n\n if (typeof size === \"string\") {\n const [breakpoint, valueStr] = size.split(\":\") as [Breakpoint, string];\n const value = parseInt(valueStr, 10);\n const valueKey = getSizeKey(value);\n classes.push(\n (valueKey && RESPONSIVE_SIZES[breakpoint]?.[valueKey]) ||\n `${breakpoint}:h-[${value}px] ${breakpoint}:w-[${value}px]`\n );\n }\n\n return {\n responsiveSizeClasses: classes.join(\" \"),\n responsiveSizeStyles: styles\n };\n};\n","import { IconMap, IconName } from \"@deckai/icons\";\nimport React, { SVGProps } from \"react\";\nimport { IconColors } from \"../types/tailwind\";\nimport { cn } from \"../utils\";\nimport { ResponsiveSize, getResponsiveSize } from \"../utils/responsive\";\n\nexport type IconProps = {\n name: IconName;\n /** @default 24 */\n size?: ResponsiveSize | ResponsiveSize[];\n /** @default primary */\n color?: IconColors;\n title?: string;\n className?: string;\n style?: React.CSSProperties;\n} & Omit<SVGProps<SVGSVGElement>, \"aria-hidden\" | \"aria-label\">;\n\n// Using CSS variables to support dark mode\nconst COLOR_MAP: Record<IconColors, string> = {\n primary: \"var(--color-primary)\",\n secondary: \"var(--color-secondary)\",\n white: \"var(--color-white)\",\n primaryBlue: \"var(--color-primary-100)\",\n disabled: \"var(--color-disabled)\",\n danger: \"var(--color-danger)\"\n};\n\nexport const Icon = React.forwardRef<SVGSVGElement, IconProps>(\n (\n {\n name,\n size = 24,\n color = \"primary\",\n title,\n className,\n style = {},\n ...props\n },\n ref\n ) => {\n const IconComponent = IconMap[name];\n const { responsiveSizeClasses, responsiveSizeStyles } = getResponsiveSize(\n size,\n 24\n );\n\n return (\n <div\n className={cn(\n \"flex justify-center items-center\",\n responsiveSizeClasses,\n className\n )}\n style={{\n [\"--icon-stroke\" as string]: COLOR_MAP[color],\n ...responsiveSizeStyles,\n ...style\n }}\n >\n <IconComponent\n ref={ref}\n aria-hidden={!title}\n aria-label={title}\n stroke={name.includes(\"filled\") ? undefined : COLOR_MAP[color]}\n {...props}\n />\n </div>\n );\n }\n);\n\nIcon.displayName = \"Icon\";\n","import { IconName } from \"@deckai/icons\";\nimport * as ToastPrimitive from \"@radix-ui/react-toast\";\nimport * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { Button, ButtonProps } from \"./Button\";\nimport { Icon } from \"./Icon\";\nimport { Text } from \"./Text\";\n\ntype ToastAction = {\n label: string;\n onClick?: () => void;\n variant?: ButtonProps[\"variant\"];\n};\n\nexport type ToastProps = Omit<ToastPrimitive.ToastProps, \"action\"> & {\n /** Optional title for the toast */\n title?: string;\n /** Main message content */\n message: string;\n /** Primary action button configuration */\n action?: ToastAction;\n /** Secondary action button configuration */\n secondaryAction?: ToastAction;\n /** Optional variant to change the visual style */\n variant?: \"default\" | \"success\" | \"error\" | \"warning\";\n /** Whether to allow dismissing by clicking outside */\n allowOutsideClick?: boolean;\n /** Optional className for custom styling */\n className?: string;\n /** Optional callback when toast is closed */\n onClose?: () => void;\n};\n\nconst variants: Record<\n NonNullable<ToastProps[\"variant\"]>,\n {\n icon: IconName;\n className: string;\n }\n> = {\n default: {\n icon: \"information\",\n className: \"bg-gray-900 text-white\"\n },\n success: {\n icon: \"check\",\n className: \"bg-green-600 text-white\"\n },\n error: {\n icon: \"danger\",\n className: \"bg-tertiary-10 text-white\"\n },\n warning: {\n icon: \"warning-2\",\n className: \"bg-tertiary-20 text-white\"\n }\n} as const;\n\nexport const Toast = React.forwardRef<\n React.ElementRef<typeof ToastPrimitive.Root>,\n ToastProps\n>(\n (\n {\n title,\n message,\n action,\n secondaryAction,\n variant = \"default\",\n duration = 5000,\n className,\n onOpenChange,\n allowOutsideClick = true,\n onClose,\n ...props\n },\n ref\n ) => {\n const variantConfig = variants[variant];\n\n const handleOpenChange = React.useCallback(\n (open: boolean) => {\n // Only allow programmatic close or close button click if outside click is disabled\n if (!allowOutsideClick && open === false) {\n return;\n }\n onOpenChange?.(open);\n if (!open) {\n onClose?.();\n }\n },\n [onOpenChange, allowOutsideClick, onClose]\n );\n\n return (\n <ToastPrimitive.Root\n ref={ref}\n onOpenChange={handleOpenChange}\n duration={duration}\n className={cn(\n \"group pointer-events-auto relative flex w-full flex-col gap-4 rounded-lg p-4 items-center\",\n \"shadow-lg\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-right-full\",\n variantConfig.className,\n className\n )}\n {...props}\n >\n <ToastPrimitive.Close\n className=\"absolute right-1 top-1 h-[40px] w-[40px] p-1 hover:bg-background-0/10 flex items-center justify-center rounded-lg\"\n aria-label=\"Close\"\n onClick={onClose}\n >\n <Icon name=\"close\" size={16} color=\"white\" />\n </ToastPrimitive.Close>\n\n <div className=\"flex gap-4\">\n <Icon\n name={variantConfig.icon}\n className=\"h-5 w-5 shrink-0\"\n color=\"white\"\n />\n\n <div className=\"flex flex-col flex-1 gap-2\">\n {title && (\n <ToastPrimitive.Title asChild>\n <Text variant=\"body-default-bold\" color=\"inherit\">\n {title}\n </Text>\n </ToastPrimitive.Title>\n )}\n <ToastPrimitive.Description asChild>\n <Text variant=\"body-xs-medium\" color=\"inherit\">\n {message}\n </Text>\n </ToastPrimitive.Description>\n </div>\n </div>\n\n {(action || secondaryAction) && (\n <div className=\"flex gap-2 justify-end mt-2\">\n {secondaryAction && (\n <ToastPrimitive.Action asChild altText={secondaryAction.label}>\n <div className=\"min-h-[40px] flex items-center\">\n <Button\n variant={secondaryAction.variant || \"outlined\"}\n color=\"black\"\n className=\"border-white text-white hover:bg-background-0/10\"\n onClick={secondaryAction.onClick}\n >\n {secondaryAction.label}\n </Button>\n </div>\n </ToastPrimitive.Action>\n )}\n {action && (\n <ToastPrimitive.Action asChild altText={action.label}>\n <div className=\"flex items-center\">\n <Button\n variant={action.variant || \"outlined\"}\n color=\"black\"\n className=\"border-white text-white hover:bg-background-0/10\"\n onClick={action.onClick}\n >\n {action.label}\n </Button>\n </div>\n </ToastPrimitive.Action>\n )}\n </div>\n )}\n </ToastPrimitive.Root>\n );\n }\n);\n\nToast.displayName = \"Toast\";\n","import { useEffect, useLayoutEffect } from \"react\";\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n","import React, { ButtonHTMLAttributes } from \"react\";\nimport { focusRingStyles } from \"../utils/tailwind\";\nimport { cn } from \"../utils\";\n\nexport type PressableProps = ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const Pressable = React.forwardRef<HTMLButtonElement, PressableProps>(\n ({ children, type = \"button\", className, disabled, ...props }, ref) => (\n <button\n ref={ref}\n type={type}\n disabled={disabled}\n className={cn(\n \"appearance-none hover:opacity-80 transition-all active:scale-95\",\n focusRingStyles,\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n {...props}\n >\n {children}\n </button>\n )\n);\n\nPressable.displayName = \"Pressable\";\n","import * as RadixCollapsible from \"@radix-ui/react-collapsible\";\nimport React, { useRef, useState } from \"react\";\nimport { useIsomorphicLayoutEffect } from \"../hooks\";\nimport { cn } from \"../utils\";\nimport { Pressable } from \"./Pressable\";\nimport { Text } from \"./Text\";\n\nexport type CollapsibleProps = {\n children: React.ReactNode;\n maxHeight?: number;\n};\n\nexport const Collapsible = ({\n children,\n maxHeight = 100\n}: CollapsibleProps) => {\n const [open, setOpen] = React.useState(false);\n const contentRef = useRef<HTMLDivElement>(null);\n const [contentHeight, setContentHeight] = useState<number>(maxHeight);\n\n // Measure content height on mount and resize\n useIsomorphicLayoutEffect(() => {\n if (!contentRef.current) return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContentHeight(entry.target.scrollHeight);\n }\n });\n\n resizeObserver.observe(contentRef.current);\n return () => resizeObserver.disconnect();\n }, []);\n\n const shouldShowTrigger = contentHeight > maxHeight;\n\n return (\n <RadixCollapsible.Root open={open} onOpenChange={setOpen}>\n <div className=\"relative\">\n <div\n className=\"overflow-hidden transition-[height] duration-300 ease-in-out\"\n style={{\n height: open ? `${contentHeight}px` : `${maxHeight}px`\n }}\n >\n <div ref={contentRef} className=\"w-full\">\n {children}\n </div>\n </div>\n\n {shouldShowTrigger && (\n <RadixCollapsible.Trigger asChild>\n <Pressable\n className={cn(\n \"absolute -bottom-8 left-0 right-0\",\n \"flex items-end justify-center\",\n \"h-16 pt-8 pb-2\",\n !open &&\n \"bg-gradient-to-b from-transparent via-background-0 to-background-0\",\n \"hover:opacity-100 transition-opacity\"\n )}\n >\n <Text variant=\"label-default\" color=\"secondary\">\n {open ? \"See less\" : \"See more\"}\n </Text>\n </Pressable>\n </RadixCollapsible.Trigger>\n )}\n </div>\n </RadixCollapsible.Root>\n );\n};\n\nCollapsible.displayName = \"Collapsible\";\n"]}
@@ -1,8 +1,8 @@
1
- 'use strict';var G=require('@radix-ui/react-collapsible'),O=require('@radix-ui/react-popover'),w=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),icons=require('@deckai/icons'),H=require('@radix-ui/react-tooltip');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var G__namespace=/*#__PURE__*/_interopNamespace(G);var O__namespace=/*#__PURE__*/_interopNamespace(O);var w__namespace=/*#__PURE__*/_interopNamespace(w);var H__namespace=/*#__PURE__*/_interopNamespace(H);function T(...t){return tailwindMerge.twMerge(clsx.clsx(t))}var pe="ring-2 ring-primary-100";var X={12:"h-[12px] w-[12px]",16:"h-[16px] w-[16px]",18:"h-[18px] w-[18px]",20:"h-[20px] w-[20px]",24:"h-[24px] w-[24px]",32:"h-[32px] w-[32px]",36:"h-[36px] w-[36px]",40:"h-[40px] w-[40px]",42:"h-[42px] w-[42px]",48:"h-[48px] w-[48px]",64:"h-[64px] w-[64px]",72:"h-[72px] w-[72px]"},ce={sm:{12:"sm:h-[12px] sm:w-[12px]",16:"sm:h-[16px] sm:w-[16px]",18:"sm:h-[18px] sm:w-[18px]",20:"sm:h-[20px] sm:w-[20px]",24:"sm:h-[24px] sm:w-[24px]",32:"sm:h-[32px] sm:w-[32px]",36:"sm:h-[36px] sm:w-[36px]",40:"sm:h-[40px] sm:w-[40px]",42:"sm:h-[42px] sm:w-[42px]",48:"sm:h-[48px] sm:w-[48px]",64:"sm:h-[64px] sm:w-[64px]",72:"sm:h-[72px] sm:w-[72px]"},md:{12:"md:h-[12px] md:w-[12px]",16:"md:h-[16px] md:w-[16px]",18:"md:h-[18px] md:w-[18px]",20:"md:h-[20px] md:w-[20px]",24:"md:h-[24px] md:w-[24px]",32:"md:h-[32px] md:w-[32px]",36:"md:h-[36px] md:w-[36px]",40:"md:h-[40px] md:w-[40px]",42:"md:h-[42px] md:w-[42px]",48:"md:h-[48px] md:w-[48px]",64:"md:h-[64px] md:w-[64px]",72:"md:h-[72px] md:w-[72px]"},lg:{12:"lg:h-[12px] lg:w-[12px]",16:"lg:h-[16px] lg:w-[16px]",18:"lg:h-[18px] lg:w-[18px]",20:"lg:h-[20px] lg:w-[20px]",24:"lg:h-[24px] lg:w-[24px]",32:"lg:h-[32px] lg:w-[32px]",36:"lg:h-[36px] lg:w-[36px]",40:"lg:h-[40px] lg:w-[40px]",42:"lg:h-[42px] lg:w-[42px]",48:"lg:h-[48px] lg:w-[48px]",64:"lg:h-[64px] lg:w-[64px]",72:"lg:h-[72px] lg:w-[72px]"},xl:{12:"xl:h-[12px] xl:w-[12px]",16:"xl:h-[16px] xl:w-[16px]",18:"xl:h-[18px] xl:w-[18px]",20:"xl:h-[20px] xl:w-[20px]",24:"xl:h-[24px] xl:w-[24px]",32:"xl:h-[32px] xl:w-[32px]",36:"xl:h-[36px] xl:w-[36px]",40:"xl:h-[40px] xl:w-[40px]",42:"xl:h-[42px] xl:w-[42px]",48:"xl:h-[48px] xl:w-[48px]",64:"xl:h-[64px] xl:w-[64px]",72:"xl:h-[72px] xl:w-[72px]"},"2xl":{12:"2xl:h-[12px] 2xl:w-[12px]",16:"2xl:h-[16px] 2xl:w-[16px]",18:"2xl:h-[18px] 2xl:w-[18px]",20:"2xl:h-[20px] 2xl:w-[20px]",24:"2xl:h-[24px] 2xl:w-[24px]",32:"2xl:h-[32px] 2xl:w-[32px]",36:"2xl:h-[36px] 2xl:w-[36px]",40:"2xl:h-[40px] 2xl:w-[40px]",42:"2xl:h-[42px] 2xl:w-[42px]",48:"2xl:h-[48px] 2xl:w-[48px]",64:"2xl:h-[64px] 2xl:w-[64px]",72:"2xl:h-[72px] 2xl:w-[72px]"}},j=t=>String(t),me=(t,n=24)=>{let r=[],i={};if(t===undefined){let s=j(n);s?r.push(X[s]):(i.height=`${n}px`,i.width=`${n}px`);}if(typeof t=="number"){let s=j(t);s?r.push(X[s]):(i.height=`${t}px`,i.width=`${t}px`);}if(Array.isArray(t)){let s=j(n),d=[s&&X[s]||`h-[${n}px] w-[${n}px]`];t.forEach(c=>{if(typeof c=="string"){let[x,m]=c.split(":"),u=parseInt(m,10),v=j(u);r.push(v&&ce[x]?.[v]||`${x}:h-[${u}px] ${x}:w-[${u}px]`);}}),r.push(...d);}if(typeof t=="string"){let[s,d]=t.split(":"),c=parseInt(d,10),x=j(c);r.push(x&&ce[s]?.[x]||`${s}:h-[${c}px] ${s}:w-[${c}px]`);}return {responsiveSizeClasses:r.join(" "),responsiveSizeStyles:i}};var de={primary:"#080808",secondary:"#666666",white:"#ffffff",primaryBlue:"#089CCB",disabled:"#888888",danger:"#FF0000"},K=w__namespace.default.forwardRef(({name:t,size:n=24,color:r="primary",title:i,className:s,style:d={},...c},x)=>{let m=icons.IconMap[t],{responsiveSizeClasses:u,responsiveSizeStyles:v}=me(n,24);return w__namespace.default.createElement("div",{className:T("flex justify-center items-center",u,s),style:{"--icon-stroke":de[r],...v,...d}},w__namespace.default.createElement(m,{ref:x,"aria-hidden":!i,"aria-label":i,stroke:t.includes("filled")?undefined:de[r],...c}))});K.displayName="Icon";var Ce={xl:"h1",lg:"h1",md:"h2",sm:"h3",xs:"h4"},Me=t=>{let[n,r]=t.split("-");return n==="heading"?Ce[r]||"p":n==="label"?"label":"p"},Le={light:"font-light",regular:"font-regular",semibold:"font-semibold",bold:"font-bold"},He=t=>t?(Array.isArray(t)?t:[t]).map(r=>{if(r.includes(":")){let[i,s]=r.split(":");return `${i}:text-${s}`}return `text-${r}`}).join(" "):"text-body-default",C=w__namespace.default.forwardRef(({variant:t="body-default",color:n="primary",as:r,className:i,children:s,weight:d,...c},x)=>{let m=He(t),u=n==="inherit"?"text-inherit":`text-${n}`,v=w__namespace.default.useMemo(()=>{let E=typeof t=="string"?t.split(":").pop():Array.isArray(t)?t[0].split(":").pop():"body-default";return Me(E)},[t]);return w__namespace.default.createElement(r||v,{ref:x,className:`
1
+ 'use strict';var D=require('@radix-ui/react-popover'),T=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),$=require('@radix-ui/react-accordion'),icons=require('@deckai/icons'),H=require('@radix-ui/react-tooltip');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var D__namespace=/*#__PURE__*/_interopNamespace(D);var T__namespace=/*#__PURE__*/_interopNamespace(T);var $__namespace=/*#__PURE__*/_interopNamespace($);var H__namespace=/*#__PURE__*/_interopNamespace(H);function f(...t){return tailwindMerge.twMerge(clsx.clsx(t))}var J={12:"h-[12px] w-[12px]",16:"h-[16px] w-[16px]",18:"h-[18px] w-[18px]",20:"h-[20px] w-[20px]",24:"h-[24px] w-[24px]",32:"h-[32px] w-[32px]",36:"h-[36px] w-[36px]",40:"h-[40px] w-[40px]",42:"h-[42px] w-[42px]",48:"h-[48px] w-[48px]",64:"h-[64px] w-[64px]",72:"h-[72px] w-[72px]"},ue={sm:{12:"sm:h-[12px] sm:w-[12px]",16:"sm:h-[16px] sm:w-[16px]",18:"sm:h-[18px] sm:w-[18px]",20:"sm:h-[20px] sm:w-[20px]",24:"sm:h-[24px] sm:w-[24px]",32:"sm:h-[32px] sm:w-[32px]",36:"sm:h-[36px] sm:w-[36px]",40:"sm:h-[40px] sm:w-[40px]",42:"sm:h-[42px] sm:w-[42px]",48:"sm:h-[48px] sm:w-[48px]",64:"sm:h-[64px] sm:w-[64px]",72:"sm:h-[72px] sm:w-[72px]"},md:{12:"md:h-[12px] md:w-[12px]",16:"md:h-[16px] md:w-[16px]",18:"md:h-[18px] md:w-[18px]",20:"md:h-[20px] md:w-[20px]",24:"md:h-[24px] md:w-[24px]",32:"md:h-[32px] md:w-[32px]",36:"md:h-[36px] md:w-[36px]",40:"md:h-[40px] md:w-[40px]",42:"md:h-[42px] md:w-[42px]",48:"md:h-[48px] md:w-[48px]",64:"md:h-[64px] md:w-[64px]",72:"md:h-[72px] md:w-[72px]"},lg:{12:"lg:h-[12px] lg:w-[12px]",16:"lg:h-[16px] lg:w-[16px]",18:"lg:h-[18px] lg:w-[18px]",20:"lg:h-[20px] lg:w-[20px]",24:"lg:h-[24px] lg:w-[24px]",32:"lg:h-[32px] lg:w-[32px]",36:"lg:h-[36px] lg:w-[36px]",40:"lg:h-[40px] lg:w-[40px]",42:"lg:h-[42px] lg:w-[42px]",48:"lg:h-[48px] lg:w-[48px]",64:"lg:h-[64px] lg:w-[64px]",72:"lg:h-[72px] lg:w-[72px]"},xl:{12:"xl:h-[12px] xl:w-[12px]",16:"xl:h-[16px] xl:w-[16px]",18:"xl:h-[18px] xl:w-[18px]",20:"xl:h-[20px] xl:w-[20px]",24:"xl:h-[24px] xl:w-[24px]",32:"xl:h-[32px] xl:w-[32px]",36:"xl:h-[36px] xl:w-[36px]",40:"xl:h-[40px] xl:w-[40px]",42:"xl:h-[42px] xl:w-[42px]",48:"xl:h-[48px] xl:w-[48px]",64:"xl:h-[64px] xl:w-[64px]",72:"xl:h-[72px] xl:w-[72px]"},"2xl":{12:"2xl:h-[12px] 2xl:w-[12px]",16:"2xl:h-[16px] 2xl:w-[16px]",18:"2xl:h-[18px] 2xl:w-[18px]",20:"2xl:h-[20px] 2xl:w-[20px]",24:"2xl:h-[24px] 2xl:w-[24px]",32:"2xl:h-[32px] 2xl:w-[32px]",36:"2xl:h-[36px] 2xl:w-[36px]",40:"2xl:h-[40px] 2xl:w-[40px]",42:"2xl:h-[42px] 2xl:w-[42px]",48:"2xl:h-[48px] 2xl:w-[48px]",64:"2xl:h-[64px] 2xl:w-[64px]",72:"2xl:h-[72px] 2xl:w-[72px]"}},_=t=>String(t),xe=(t,r=24)=>{let n=[],s={};if(t===undefined){let i=_(r);i?n.push(J[i]):(s.height=`${r}px`,s.width=`${r}px`);}if(typeof t=="number"){let i=_(t);i?n.push(J[i]):(s.height=`${t}px`,s.width=`${t}px`);}if(Array.isArray(t)){let i=_(r),m=[i&&J[i]||`h-[${r}px] w-[${r}px]`];t.forEach(p=>{if(typeof p=="string"){let[u,l]=p.split(":"),g=parseInt(l,10),x=_(g);n.push(x&&ue[u]?.[x]||`${u}:h-[${g}px] ${u}:w-[${g}px]`);}}),n.push(...m);}if(typeof t=="string"){let[i,m]=t.split(":"),p=parseInt(m,10),u=_(p);n.push(u&&ue[i]?.[u]||`${i}:h-[${p}px] ${i}:w-[${p}px]`);}return {responsiveSizeClasses:n.join(" "),responsiveSizeStyles:s}};var ge={primary:"var(--color-primary)",secondary:"var(--color-secondary)",white:"var(--color-white)",primaryBlue:"var(--color-primary-100)",disabled:"var(--color-disabled)",danger:"var(--color-danger)"},K=T__namespace.default.forwardRef(({name:t,size:r=24,color:n="primary",title:s,className:i,style:m={},...p},u)=>{let l=icons.IconMap[t],{responsiveSizeClasses:g,responsiveSizeStyles:x}=xe(r,24);return T__namespace.default.createElement("div",{className:f("flex justify-center items-center",g,i),style:{"--icon-stroke":ge[n],...x,...m}},T__namespace.default.createElement(l,{ref:u,"aria-hidden":!s,"aria-label":s,stroke:t.includes("filled")?undefined:ge[n],...p}))});K.displayName="Icon";var Ee={xl:"h1",lg:"h1",md:"h2",sm:"h3",xs:"h4"},Pe=t=>{let[r,n]=t.split("-");return r==="heading"?Ee[n]||"p":r==="label"?"label":"p"},Me={light:"font-light",regular:"font-regular",semibold:"font-semibold",bold:"font-bold"},Ce=t=>t?(Array.isArray(t)?t:[t]).map(n=>{if(n.includes(":")){let[s,i]=n.split(":");return `${s}:text-${i}`}return `text-${n}`}).join(" "):"text-body-default",M=T__namespace.default.forwardRef(({variant:t="body-default",color:r="primary",as:n,className:s,children:i,weight:m,...p},u)=>{let l=Ce(t),g=r==="inherit"?"text-inherit":`text-${r}`,x=T__namespace.default.useMemo(()=>{let E=typeof t=="string"?t.split(":").pop():Array.isArray(t)?t[0].split(":").pop():"body-default";return Pe(E)},[t]);return T__namespace.default.createElement(n||x,{ref:u,className:`
2
2
  font-sans antialiased
3
- ${m}
4
- ${u}
5
- ${d&&`!${Le[d]}`}
6
- ${i}
7
- `,...c},s)});C.displayName="Text";var U=w__namespace.forwardRef(({className:t,end:n,iconName:r,color:i,size:s,title:d,label:c,labelClassName:x,id:m,children:u,forceShowFocusRing:v,error:g,errorMessage:E,helperText:k,showCharacterCount:L,maxLength:P,value:a,defaultValue:h,onChange:f,disabled:S,..._},q)=>{let[l,b]=w__namespace.useState(a?.toString()||h?.toString()||"");w__namespace.useEffect(()=>{a!==undefined&&b(a.toString());},[a]);let z=w__namespace.useCallback(D=>{let p=D.target.value;b(p),f?.(D);},[f]),A=l.length,N=L||!!P;return w__namespace.createElement("div",{className:"gap-1 flex flex-col"},c&&w__namespace.createElement(C,{variant:"label-default",htmlFor:m,as:"label",color:g?"danger":"primary",className:T(x)},c),w__namespace.createElement("div",{className:T("relative flex flex-col gap-2 w-full rounded-lg border bg-background-0 px-3 md:py-3 py-2 text-secondary transition-colors duration-150",!g&&!v&&"border-secondary-50",g&&"border-tertiary-10",S&&"cursor-not-allowed opacity-50","focus-within:ring-2 focus-within:ring-primary-100",v&&pe)},w__namespace.createElement("div",{className:"flex relative"},w__namespace.createElement("input",{ref:q,id:m,className:T("font-sans text-sm flex w-full file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-secondary text-primary disabled:cursor-not-allowed focus:outline-none rounded-lg",n&&"pr-10",t),value:l,maxLength:P,onChange:z,"aria-invalid":g,disabled:S,..._}),(n||r)&&w__namespace.createElement("div",{className:"absolute inset-y-0 right-0 flex items-center"},r?w__namespace.createElement(K,{name:r,color:g?"danger":"secondary",size:s,title:d}):n)),u),w__namespace.createElement("div",{className:"flex justify-between gap-2"},g&&E||k?w__namespace.createElement(C,{variant:"body-xxs",color:g?"danger":"secondary",className:"mt-1"},g?E:k):null,N&&w__namespace.createElement(C,{variant:"body-xxs",color:g?"danger":"secondary",className:"text-right mt-1"},w__namespace.createElement(C,{variant:"body-xxs",as:"span",color:"primary-100",className:"font-bold"},A),P&&`/${P}`," characters")))});var oe=w.forwardRef(({value:t,suggestion:n,onChange:r,onKeyDown:i,className:s,"aria-controls":d,"aria-activedescendant":c,"aria-autocomplete":x,...m},u)=>w__namespace.default.createElement("div",{className:"relative w-full"},w__namespace.default.createElement(U,{ref:u,value:t,onChange:v=>r(v.target.value),onKeyDown:i,className:T("bg-transparent",s),"aria-controls":d,"aria-activedescendant":c,"aria-autocomplete":x,...m}),n&&w__namespace.default.createElement("div",{className:"absolute inset-0 top-6 flex items-center px-3 md:py-3 py-2 text-secondary opacity-40 pointer-events-none text-sm"},t,n.slice(t.length))));oe.displayName="AutocompleteInput";var xe={pink:"bg-tertiary-5",orange:"bg-tertiary-15",green:"bg-tertiary-25",purple:"bg-secondary-300"},Pe=t=>{let n=Object.keys(xe),r=t.split("").reduce((d,c)=>c.charCodeAt(0)+((d<<5)-d),0),i=Math.abs(r)%n.length;return n[i]},ne=w__namespace.forwardRef(({className:t,variant:n,iconName:r,children:i,...s},d)=>{let c=n||(typeof i=="string"?Pe(i):"pink");return w__namespace.createElement("span",{ref:d,className:T("inline-flex items-center gap-2","rounded px-2 py-1.5","text-sm font-medium",xe[c],t),...s},r&&w__namespace.createElement(K,{size:16,name:r}),w__namespace.createElement(C,{variant:"body-xxs-semibold",className:"mt-0.5"},i))});ne.displayName="Badge";var ue=({content:t,children:n,side:r="bottom",align:i="center",className:s,delayDuration:d=200,defaultOpen:c,open:x,onOpenChange:m,longPressDuration:u=500})=>{let[v,g]=w.useState(c||false),E=null,k=x??v,L=w.useCallback(h=>{x||g(h),m?.(h);},[x,m]),P=w.useCallback(()=>{E=setTimeout(()=>{L(true);},u);},[L,u]),a=w.useCallback(()=>{E&&(clearTimeout(E),E=null),setTimeout(()=>L(false),1500);},[E,L]);return w__namespace.createElement(H__namespace.Provider,{delayDuration:d},w__namespace.createElement(H__namespace.Root,{open:k,onOpenChange:L},w__namespace.createElement(H__namespace.Trigger,{asChild:true},w__namespace.createElement("span",{tabIndex:0,onTouchStart:P,onTouchEnd:a,onTouchCancel:a},n)),w__namespace.createElement(H__namespace.Portal,null,w__namespace.createElement(H__namespace.Content,{side:r,align:i,sideOffset:4,className:T("z-50 overflow-hidden rounded-lg","bg-black px-3 py-1.5","text-xs text-white","animate-in fade-in-0 zoom-in-95","data-[state=closed]:animate-out data-[state=closed]:fade-out-0","data-[side=bottom]:slide-in-from-top-2","data-[side=top]:slide-in-from-bottom-2","select-none","max-w-60","touch-none",s)},typeof t=="string"?w__namespace.createElement(C,{variant:"body-default-medium",color:"white"},t):t,w__namespace.createElement(H__namespace.Arrow,{className:"fill-text-primary",width:10,height:5})))))};var Re=({text:t,highlight:n})=>{if(!n)return w__namespace.default.createElement(w__namespace.default.Fragment,null,t);let r=t.split(new RegExp(`(${n})`,"i"));return w__namespace.default.createElement(w__namespace.default.Fragment,null,r.map((i,s)=>i.toLowerCase()===n.toLowerCase()?w__namespace.default.createElement("span",{key:s,className:"font-bold"},i):i))},fe=w__namespace.default.forwardRef(({value:t,label:n,onChange:r,onKeyDown:i,onMouseEnter:s,onMouseLeave:d,selected:c,color:x,disabled:m,className:u,id:v,role:g,"aria-selected":E,searchValue:k="",tooltip:L,onClick:P,badge:a},h)=>{let f=w__namespace.default.createElement("button",{ref:h,type:"button",id:v,role:g,"aria-selected":E,disabled:m,className:T("relative w-full text-left px-2 py-1.5 text-sm rounded outline-none","cursor-pointer hover:bg-gray-100","disabled:opacity-50 disabled:cursor-not-allowed",c&&"bg-gray-100","flex items-center gap-2",u),onClick:()=>{r?.(t),P?.();},onKeyDown:i,onMouseEnter:s,onMouseLeave:d},w__namespace.default.createElement(C,{variant:"body-default-medium",color:x==="danger"?"danger":"inherit"},typeof n=="string"?w__namespace.default.createElement(Re,{text:n,highlight:k}):n),a&&w__namespace.default.createElement(ne,null,a));return L?w__namespace.default.createElement(ue,{content:L},f):f});var Pt=({options:t,placeholder:n="Select an item...",value:r,onChange:i,end:s,className:d,label:c,labelClassName:x,id:m,disabled:u,container:v,autocomplete:g=false,loading:E=false,error:k=false,errorMessage:L,noOptionsMessage:P})=>{let[a,h]=w.useState(false),[f,S]=w.useState(""),[_,q]=w.useState({}),[l,b]=w.useState(-1),z=w.useRef(null),A=w.useRef(null),N=w.useMemo(()=>t.length>0&&"options"in t[0],[t]),D=w.useMemo(()=>t.length?N?t.reduce((e,o)=>[...e,...o.options],[]):t:[],[N,t]),p=w.useMemo(()=>D.filter(e=>f&&typeof e.label=="string"?e.label.toLowerCase().includes(f.toLowerCase()):true),[D,f]),he=w.useMemo(()=>N?t.map(e=>({...e,options:e.options.filter(o=>f&&typeof o.label=="string"?o.label.toLowerCase().includes(f.toLowerCase()):true)})).filter(e=>e.options.length>0):p.length>0?[{label:"",options:p}]:[],[N,t,f,p]),Z=w.useMemo(()=>D.find(e=>e.value===r),[r,D]),ae=w.useMemo(()=>a?f:Z&&Z.label?.toString()||"",[a,f,Z]),J=w.useMemo(()=>!g||!f||!a?"":p.find(o=>typeof o.label=="string"&&o.label.toLowerCase().startsWith(f.toLowerCase())&&o.label.toLowerCase()!==f.toLowerCase())?.label?.toString()||"",[g,f,p,a]),I=w.useCallback(e=>{i(e),h(false),S(""),b(-1);},[i]),ye=w.useCallback(e=>{q(o=>({...o,[e]:!o[e]}));},[]);w.useEffect(()=>{if(N){let e=t.reduce((o,M)=>({...o,[M.label]:true}),{});q(e);}},[N,t]);let se=w.useCallback(e=>{switch(e.key){case "ArrowDown":e.preventDefault(),e.altKey?h(true):a?b(o=>o<p.length-1?o+1:0):(h(true),b(0));break;case "ArrowUp":e.preventDefault(),e.altKey?h(false):a?b(o=>o>0?o-1:p.length-1):(h(true),b(p.length-1));break;case "PageUp":e.preventDefault(),a&&b(o=>Math.max(0,o-10));break;case "PageDown":e.preventDefault(),a&&b(o=>Math.min(p.length-1,o+10));break;case "Home":e.preventDefault(),a&&b(0);break;case "End":e.preventDefault(),a&&b(p.length-1);break;case "Enter":if(e.preventDefault(),l>=0&&p[l])I(p[l].value);else if(g&&J){let o=p.find(M=>typeof M.label=="string"&&M.label.toLowerCase().startsWith(f.toLowerCase()));o&&I(o.value);}break;case "Tab":a?l>=0&&p[l]&&(e.preventDefault(),I(p[l].value)):(e.preventDefault(),h(true),b(0));break;case "Escape":e.preventDefault(),h(false),S("");break}},[a,l,p,J,f,I,g]),be=w.useCallback(e=>{switch(e.key){case "ArrowDown":e.preventDefault(),b(o=>o<p.length-1?o+1:0);break;case "ArrowUp":e.preventDefault(),b(o=>o>0?o-1:p.length-1);break;case "Enter":case "Space":e.preventDefault(),l>=0&&p[l]&&I(p[l].value);break;case "Escape":e.preventDefault(),h(false),A.current?.focus();break;case "Tab":e.preventDefault(),l>=0&&p[l]&&I(p[l].value);break}},[l,p,I]);w.useEffect(()=>{if(a){let e=A.current;if(e){e.focus({preventScroll:true});let o=e.value.length;e.setSelectionRange(o,o);}}},[a]),w.useEffect(()=>{a||b(-1);},[a]),w.useEffect(()=>{if(a&&l>=0&&z.current){let e=z.current.querySelector(`[id="${m}-option-${l}"]`);e&&e.scrollIntoView({block:"nearest",behavior:"smooth"});}},[l,a,m]);let Te=w.useCallback(e=>{if(!a)return r===e.value;let o=p.findIndex(M=>M.value===e.value);return l>=0?o===l:l===-1?o===0:false},[a,r,l,p]);return w.useEffect(()=>{a&&l===-1&&b(0);},[a,l]),w__namespace.default.createElement(O__namespace.Root,{open:a&&!u,onOpenChange:e=>{if(!u)if(h(e),!e)S(""),b(-1);else {let o=A.current;if(o){o.focus({preventScroll:true});let M=o.value.length;o.setSelectionRange(M,M);}}}},w__namespace.default.createElement("div",{className:`relative w-full font-sans text-secondary ${d}`,role:"combobox","aria-expanded":a,"aria-haspopup":"listbox","aria-controls":`${m}-listbox`},w__namespace.default.createElement(O__namespace.Trigger,{asChild:true},w__namespace.default.createElement("button",{type:"button",className:"w-full text-left",disabled:u},g?w__namespace.default.createElement(oe,{ref:A,id:m,label:c,labelClassName:x,placeholder:n,value:ae,suggestion:J,onChange:e=>{S(e),a||h(true);},onKeyDown:se,end:s,className:T("flex-1",d),forceShowFocusRing:a,disabled:u,"aria-autocomplete":"list","aria-controls":`${m}-listbox`,"aria-activedescendant":l>=0?`${m}-option-${l}`:undefined}):w__namespace.default.createElement(U,{ref:A,id:m,label:c,labelClassName:x,placeholder:n,value:ae,onChange:e=>{S(e.target.value),a||h(true);},onKeyDown:se,end:s,className:T("flex-1",d),forceShowFocusRing:a,disabled:u,"aria-controls":`${m}-listbox`,"aria-activedescendant":l>=0?`${m}-option-${l}`:undefined}))),w__namespace.default.createElement(O__namespace.Portal,{container:v},w__namespace.default.createElement(O__namespace.Content,{className:"w-[--radix-popover-trigger-width] p-1 bg-white rounded-md shadow-lg border z-[9999] data-[state=open]:animate-fade-in data-[state=closed]:animate-fade-out outline-none",side:"bottom",align:"start",sideOffset:4,onOpenAutoFocus:e=>e.preventDefault(),onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:e=>e.preventDefault(),onInteractOutside:e=>{e.preventDefault(),h(false),S(""),b(-1);}},w__namespace.default.createElement("div",{ref:z,className:"max-h-60 overflow-y-auto flex flex-col items-start outline-none",role:"listbox",id:`${m}-listbox`,"aria-label":c,"aria-busy":E},k?w__namespace.default.createElement("div",{className:"px-2 py-1.5 text-sm text-red-500"},L||"Failed to load options"):E?w__namespace.default.createElement("div",{className:"px-2 py-1.5 text-sm text-gray-500"},"Loading..."):p.length>0?he.map((e,o)=>w__namespace.default.createElement(G__namespace.Root,{key:e.label||o,className:"w-full",open:_[e.label]??true,onOpenChange:()=>e.label&&ye(e.label)},e.label&&w__namespace.default.createElement(G__namespace.Trigger,{asChild:true},w__namespace.default.createElement("div",{className:"w-full flex items-center justify-between px-2 py-1.5 hover:bg-gray-50",tabIndex:-1},w__namespace.default.createElement(C,{variant:"body-default-bold",color:"secondary"},e.label),w__namespace.default.createElement(K,{name:"arrow-down",className:T("transition-transform",_[e.label]&&"rotate-180"),size:16}))),w__namespace.default.createElement(G__namespace.Content,{className:"data-[state=open]:animate-accordion-down data-[state=closed]:animate-accordion-up"},e.options.map((M,ie)=>{let le=Te(M);return w__namespace.default.createElement(fe,{key:`${o}-${ie}`,onChange:I,onKeyDown:be,value:M.value,label:M.label,className:T("pl-4"),selected:le,id:`${m}-option-${ie}`,role:"option","aria-selected":le,searchValue:f})})))):w__namespace.default.createElement("div",{className:"px-2 py-1.5 text-sm text-gray-500"},P||"No results found"))))))};exports.Combobox=Pt;//# sourceMappingURL=Combobox.cjs.map
3
+ ${l}
4
+ ${g}
5
+ ${m&&`!${Me[m]}`}
6
+ ${s}
7
+ `,...p},i)});M.displayName="Text";var ee=T__namespace.forwardRef(({items:t,type:r="single",defaultValue:n,value:s,onValueChange:i,className:m,contentClassName:p,triggerClassName:u,...l},g)=>T__namespace.createElement($__namespace.Root,{ref:g,type:r,defaultValue:n,value:s,onValueChange:i,className:f("w-full gap-1 flex flex-col",m),...l},t.map(x=>T__namespace.createElement($__namespace.Item,{key:x.value,value:x.value,disabled:x.disabled,className:"w-full"},T__namespace.createElement($__namespace.Header,null,T__namespace.createElement($__namespace.Trigger,{className:f("flex w-full items-center gap-2 justify-between px-3 py-2 rounded bg-background-50 hover:bg-background-100 select-none cursor-pointer","disabled:cursor-not-allowed","focus-visible:outline-none focus-visible:ring-2",u)},T__namespace.createElement("div",{className:"flex items-center gap-3"},T__namespace.createElement(M,{variant:"body-default-semibold",className:x.disabled?"text-disabled":""},x.title)),T__namespace.createElement(K,{name:"arrow-down",size:18,"aria-hidden":true,color:x.disabled?"disabled":"primary",className:"transition-transform duration-200 data-[state=open]:rotate-180"}))),T__namespace.createElement($__namespace.Content,{className:f("overflow-hidden will-change-[height] data-[state=open]:animate-accordion-down data-[state=closed]:animate-accordion-up",p)},T__namespace.createElement("div",{className:"py-2 px-3"},x.content))))));ee.displayName="Accordion";var fe="ring-2 ring-primary-100";var q=T__namespace.forwardRef(({className:t,end:r,iconName:n,color:s,size:i,title:m,label:p,labelClassName:u,id:l,children:g,forceShowFocusRing:x,error:y,errorMessage:E,helperText:I,showCharacterCount:C,maxLength:R,value:a,defaultValue:b,onChange:h,disabled:S,...c},w)=>{let[z,O]=T__namespace.useState(a?.toString()||b?.toString()||"");T__namespace.useEffect(()=>{a!==undefined&&O(a.toString());},[a]);let V=T__namespace.useCallback(F=>{let W=F.target.value;O(W),h?.(F);},[h]),j=z.length,d=C||!!R;return T__namespace.createElement("div",{className:"gap-1 flex flex-col"},p&&T__namespace.createElement(M,{variant:"label-default",htmlFor:l,as:"label",color:y?"danger":"primary",className:f(u)},p),T__namespace.createElement("div",{className:f("relative flex flex-col gap-2 w-full rounded-lg border bg-background-0 px-3 md:py-3 py-2 text-secondary transition-colors duration-150",!y&&!x&&"border-secondary-50",y&&"border-tertiary-10",S&&"cursor-not-allowed opacity-50","focus-within:ring-2 focus-within:ring-primary-100",x&&fe)},T__namespace.createElement("div",{className:"flex relative"},T__namespace.createElement("input",{ref:w,id:l,className:f("font-sans text-sm flex w-full bg-background-0 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-secondary text-primary disabled:cursor-not-allowed focus:outline-none rounded-lg",r&&"pr-10",t),value:z,maxLength:R,onChange:V,"aria-invalid":y,disabled:S,...c}),(r||n)&&T__namespace.createElement("div",{className:"absolute inset-y-0 right-0 flex items-center"},n?T__namespace.createElement(K,{name:n,color:y?"danger":"secondary",size:i,title:m}):r)),g),T__namespace.createElement("div",{className:"flex justify-between gap-2"},y&&E||I?T__namespace.createElement(M,{variant:"body-xxs",color:y?"danger":"secondary",className:"mt-1"},y?E:I):null,d&&T__namespace.createElement(M,{variant:"body-xxs",color:y?"danger":"secondary",className:"text-right mt-1"},T__namespace.createElement(M,{variant:"body-xxs",as:"span",color:"primary-100",className:"font-bold"},j),R&&`/${R}`," characters")))});var oe=T.forwardRef(({value:t,suggestion:r,onChange:n,onKeyDown:s,className:i,"aria-controls":m,"aria-activedescendant":p,"aria-autocomplete":u,...l},g)=>T__namespace.default.createElement("div",{className:"relative w-full"},T__namespace.default.createElement(q,{ref:g,value:t,onChange:x=>n(x.target.value),onKeyDown:s,className:f("bg-transparent",i),"aria-controls":m,"aria-activedescendant":p,"aria-autocomplete":u,...l}),r&&T__namespace.default.createElement("div",{className:"absolute inset-0 top-6 flex items-center px-3 md:py-3 py-2 text-secondary opacity-40 pointer-events-none text-sm"},t,r.slice(t.length))));oe.displayName="AutocompleteInput";var he={pink:"bg-tertiary-5",orange:"bg-tertiary-15",green:"bg-tertiary-25",purple:"bg-secondary-300"},He=t=>{let r=Object.keys(he),n=t.split("").reduce((m,p)=>p.charCodeAt(0)+((m<<5)-m),0),s=Math.abs(n)%r.length;return r[s]},re=T__namespace.forwardRef(({className:t,variant:r,iconName:n,children:s,...i},m)=>{let p=r||(typeof s=="string"?He(s):"pink");return T__namespace.createElement("span",{ref:m,className:f("inline-flex items-center gap-2","rounded px-2 py-1.5","text-sm font-medium",he[p],t),...i},n&&T__namespace.createElement(K,{size:16,name:n}),T__namespace.createElement(M,{variant:"body-xxs-semibold",className:"mt-0.5"},s))});re.displayName="Badge";var ye=({content:t,children:r,side:n="bottom",align:s="center",className:i,delayDuration:m=200,defaultOpen:p,open:u,onOpenChange:l,longPressDuration:g=500})=>{let[x,y]=T.useState(p||false),E=null,I=u??x,C=T.useCallback(b=>{u||y(b),l?.(b);},[u,l]),R=T.useCallback(()=>{E=setTimeout(()=>{C(true);},g);},[C,g]),a=T.useCallback(()=>{E&&(clearTimeout(E),E=null),setTimeout(()=>C(false),1500);},[E,C]);return T__namespace.createElement(H__namespace.Provider,{delayDuration:m},T__namespace.createElement(H__namespace.Root,{open:I,onOpenChange:C},T__namespace.createElement(H__namespace.Trigger,{asChild:true},T__namespace.createElement("span",{tabIndex:0,onTouchStart:R,onTouchEnd:a,onTouchCancel:a},r)),T__namespace.createElement(H__namespace.Portal,null,T__namespace.createElement(H__namespace.Content,{side:n,align:s,sideOffset:4,className:f("z-50 overflow-hidden rounded-lg","bg-primary px-3 py-1.5","text-xs text-white","animate-in fade-in-0 zoom-in-95","data-[state=closed]:animate-out data-[state=closed]:fade-out-0","data-[side=bottom]:slide-in-from-top-2","data-[side=top]:slide-in-from-bottom-2","select-none","max-w-60","touch-none",i)},typeof t=="string"?T__namespace.createElement(M,{variant:"body-default-medium",color:"white"},t):t,T__namespace.createElement(H__namespace.Arrow,{className:"fill-text-primary",width:10,height:5})))))};var Re=({text:t,highlight:r})=>{if(!r)return T__namespace.default.createElement(T__namespace.default.Fragment,null,t);let n=t.split(new RegExp(`(${r})`,"i"));return T__namespace.default.createElement(T__namespace.default.Fragment,null,n.map((s,i)=>s.toLowerCase()===r.toLowerCase()?T__namespace.default.createElement("span",{key:i,className:"font-bold"},s):s))},ae=T__namespace.default.forwardRef(({value:t,label:r,onChange:n,onKeyDown:s,onMouseEnter:i,onMouseLeave:m,selected:p,color:u,disabled:l,className:g,id:x,role:y,"aria-selected":E,searchValue:I="",tooltip:C,onClick:R,badge:a},b)=>{let h=T__namespace.default.createElement("button",{ref:b,type:"button",id:x,role:y,"aria-selected":E,disabled:l,className:f("relative w-full text-left px-2 py-1.5 text-sm rounded outline-none","cursor-pointer hover:bg-gray-100","disabled:opacity-50 disabled:cursor-not-allowed",p&&"bg-gray-100","flex items-center gap-2",g),onClick:()=>{n?.(t),R?.();},onKeyDown:s,onMouseEnter:i,onMouseLeave:m},T__namespace.default.createElement(M,{variant:"body-default-medium",color:u==="danger"?"danger":"inherit"},typeof r=="string"?T__namespace.default.createElement(Re,{text:r,highlight:I}):r),a&&T__namespace.default.createElement(re,null,a));return C?T__namespace.default.createElement(ye,{content:C},h):h});var Rt=({options:t,placeholder:r="Select an item...",value:n,onChange:s,end:i,className:m,label:p,labelClassName:u,id:l,disabled:g,container:x,autocomplete:y=false,loading:E=false,error:I=false,errorMessage:C,noOptionsMessage:R})=>{let[a,b]=T.useState(false),[h,S]=T.useState(""),[c,w]=T.useState(-1),z=T.useRef(null),O=T.useRef(null),V=T.useMemo(()=>t.length>0&&"options"in t[0],[t]),j=T.useMemo(()=>t.length?V?t.reduce((e,o)=>[...e,...o.options],[]):t:[],[V,t]),d=T.useMemo(()=>j.filter(e=>h&&typeof e.label=="string"?e.label.toLowerCase().includes(h.toLowerCase()):true),[j,h]),F=T.useMemo(()=>V?t.map(e=>({...e,options:e.options.filter(o=>h&&typeof o.label=="string"?o.label.toLowerCase().includes(h.toLowerCase()):true)})).filter(e=>e.options.length>0):d.length>0?[{label:"",options:d}]:[],[V,t,h,d]),W=T.useMemo(()=>j.find(e=>e.value===n),[n,j]),se=T.useMemo(()=>a?h:W&&W.label?.toString()||"",[a,h,W]),Z=T.useMemo(()=>!y||!h||!a?"":d.find(o=>typeof o.label=="string"&&o.label.toLowerCase().startsWith(h.toLowerCase())&&o.label.toLowerCase()!==h.toLowerCase())?.label?.toString()||"",[y,h,d,a]),N=T.useCallback(e=>{s(e),b(false),S(""),w(-1);},[s]),le=T.useCallback(e=>{switch(e.key){case "ArrowDown":e.preventDefault(),e.altKey?b(true):a?w(o=>o<d.length-1?o+1:0):(b(true),w(0));break;case "ArrowUp":e.preventDefault(),e.altKey?b(false):a?w(o=>o>0?o-1:d.length-1):(b(true),w(d.length-1));break;case "PageUp":e.preventDefault(),a&&w(o=>Math.max(0,o-10));break;case "PageDown":e.preventDefault(),a&&w(o=>Math.min(d.length-1,o+10));break;case "Home":e.preventDefault(),a&&w(0);break;case "End":e.preventDefault(),a&&w(d.length-1);break;case "Enter":if(e.preventDefault(),c>=0&&d[c])N(d[c].value);else if(y&&Z){let o=d.find(P=>typeof P.label=="string"&&P.label.toLowerCase().startsWith(h.toLowerCase()));o&&N(o.value);}break;case "Tab":a?c>=0&&d[c]&&(e.preventDefault(),N(d[c].value)):(e.preventDefault(),b(true),w(0));break;case "Escape":e.preventDefault(),b(false),S("");break}},[a,c,d,Z,h,N,y]),pe=T.useCallback(e=>{switch(e.key){case "ArrowDown":e.preventDefault(),w(o=>o<d.length-1?o+1:0);break;case "ArrowUp":e.preventDefault(),w(o=>o>0?o-1:d.length-1);break;case "Enter":case "Space":e.preventDefault(),c>=0&&d[c]&&N(d[c].value);break;case "Escape":e.preventDefault(),b(false),O.current?.focus();break;case "Tab":e.preventDefault(),c>=0&&d[c]&&N(d[c].value);break}},[c,d,N]);T.useEffect(()=>{if(a){let e=O.current;if(e){e.focus({preventScroll:true});let o=e.value.length;e.setSelectionRange(o,o);}}},[a]),T.useEffect(()=>{a||w(-1);},[a]),T.useEffect(()=>{if(a&&c>=0&&z.current){let e=z.current.querySelector(`[id="${l}-option-${c}"]`);e&&e.scrollIntoView({block:"nearest",behavior:"smooth"});}},[c,a,l]);let ce=T.useCallback(e=>{if(!a)return n===e.value;let o=d.findIndex(P=>P.value===e.value);return c>=0?o===c:c===-1?o===0:false},[a,n,c,d]);return T.useEffect(()=>{a&&c===-1&&w(0);},[a,c]),T__namespace.default.createElement(D__namespace.Root,{open:a&&!g,onOpenChange:e=>{if(!g)if(b(e),!e)S(""),w(-1);else {let o=O.current;if(o){o.focus({preventScroll:true});let P=o.value.length;o.setSelectionRange(P,P);}}}},T__namespace.default.createElement("div",{className:`relative w-full font-sans text-secondary ${m}`,role:"combobox","aria-expanded":a,"aria-haspopup":"listbox","aria-controls":`${l}-listbox`},T__namespace.default.createElement(D__namespace.Trigger,{asChild:true},T__namespace.default.createElement("button",{type:"button",className:"w-full text-left",disabled:g},y?T__namespace.default.createElement(oe,{ref:O,id:l,label:p,labelClassName:u,placeholder:r,value:se,suggestion:Z,onChange:e=>{S(e),a||b(true);},onKeyDown:le,end:i,className:f("flex-1",m),forceShowFocusRing:a,disabled:g,"aria-autocomplete":"list","aria-controls":`${l}-listbox`,"aria-activedescendant":c>=0?`${l}-option-${c}`:undefined}):T__namespace.default.createElement(q,{ref:O,id:l,label:p,labelClassName:u,placeholder:r,value:se,onChange:e=>{S(e.target.value),a||b(true);},onKeyDown:le,end:i,className:f("flex-1",m),forceShowFocusRing:a,disabled:g,"aria-controls":`${l}-listbox`,"aria-activedescendant":c>=0?`${l}-option-${c}`:undefined}))),T__namespace.default.createElement(D__namespace.Portal,{container:x},T__namespace.default.createElement(D__namespace.Content,{className:"w-[--radix-popover-trigger-width] bg-background-0 rounded-md shadow-lg border z-[9999] data-[state=open]:animate-fade-in data-[state=closed]:animate-fade-out outline-none",side:"bottom",align:"start",sideOffset:4,onOpenAutoFocus:e=>e.preventDefault(),onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:e=>e.preventDefault(),onInteractOutside:e=>{e.preventDefault(),b(false),S(""),w(-1);}},T__namespace.default.createElement("div",{ref:z,className:"max-h-60 overflow-y-auto flex flex-col items-start outline-none",role:"listbox",id:`${l}-listbox`,"aria-label":p,"aria-busy":E},I?T__namespace.default.createElement("div",{className:"px-2 py-1.5 text-sm text-red-500"},C||"Failed to load options"):E?T__namespace.default.createElement("div",{className:"px-2 py-1.5 text-sm text-gray-500"},"Loading..."):d.length>0&&V?T__namespace.default.createElement(ee,{type:"multiple",className:"gap-0",defaultValue:F.map(e=>e.label),items:F.map((e,o)=>({title:e.label,value:e.label,content:T__namespace.default.createElement("div",null,e.options.map((P,de)=>{let me=ce(P);return T__namespace.default.createElement(ae,{key:`${o}-${de}`,onChange:N,onKeyDown:pe,value:P.value,label:P.label,className:f("pl-4"),selected:me,id:`${l}-option-${de}`,role:"option","aria-selected":me,searchValue:h})}))}))}):d.length>0&&!V?t.map((e,o)=>{let P=ce(e);return T__namespace.default.createElement(ae,{key:o,onChange:N,onKeyDown:pe,value:e.value,label:e.label,className:f("pl-4"),selected:P,id:`${l}-option-${o}`,role:"option","aria-selected":P,searchValue:h})}):T__namespace.default.createElement("div",{className:"px-2 py-1.5 text-sm text-gray-500"},R||"No results found"))))))};exports.Combobox=Rt;//# sourceMappingURL=Combobox.cjs.map
8
8
  //# sourceMappingURL=Combobox.cjs.map