@deckai/deck-ui 0.0.22 → 0.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -1
- package/dist/components/AboutCard.cjs +3 -3
- package/dist/components/AboutCard.cjs.map +1 -1
- package/dist/components/AboutCard.d.cts +1 -1
- package/dist/components/AboutCard.d.ts +1 -1
- package/dist/components/AboutCard.js +3 -3
- package/dist/components/AboutCard.js.map +1 -1
- package/dist/components/Accordion.cjs +2 -2
- package/dist/components/Accordion.cjs.map +1 -1
- package/dist/components/Accordion.js +2 -2
- package/dist/components/Accordion.js.map +1 -1
- package/dist/components/AddWorkCard.cjs +4 -4
- package/dist/components/AddWorkCard.cjs.map +1 -1
- package/dist/components/AddWorkCard.d.cts +1 -1
- package/dist/components/AddWorkCard.d.ts +1 -1
- package/dist/components/AddWorkCard.js +4 -4
- package/dist/components/AddWorkCard.js.map +1 -1
- package/dist/components/AutocompleteInput.cjs +4 -4
- package/dist/components/AutocompleteInput.cjs.map +1 -1
- package/dist/components/AutocompleteInput.d.cts +6 -6
- package/dist/components/AutocompleteInput.d.ts +6 -6
- package/dist/components/AutocompleteInput.js +4 -4
- package/dist/components/AutocompleteInput.js.map +1 -1
- package/dist/components/Avatar.cjs +1 -1
- package/dist/components/Avatar.cjs.map +1 -1
- package/dist/components/Avatar.d.cts +2 -2
- package/dist/components/Avatar.d.ts +2 -2
- package/dist/components/Avatar.js +1 -1
- package/dist/components/Avatar.js.map +1 -1
- package/dist/components/Badge.cjs +4 -4
- package/dist/components/Badge.cjs.map +1 -1
- package/dist/components/Badge.d.cts +2 -2
- package/dist/components/Badge.d.ts +2 -2
- package/dist/components/Badge.js +4 -4
- package/dist/components/Badge.js.map +1 -1
- package/dist/components/Breadcrumbs.cjs +2 -2
- package/dist/components/Breadcrumbs.cjs.map +1 -1
- package/dist/components/Breadcrumbs.js +2 -2
- package/dist/components/Breadcrumbs.js.map +1 -1
- package/dist/components/Button.cjs +5 -5
- package/dist/components/Button.cjs.map +1 -1
- package/dist/components/Button.d.cts +5 -5
- package/dist/components/Button.d.ts +5 -5
- package/dist/components/Button.js +5 -5
- package/dist/components/Button.js.map +1 -1
- package/dist/components/Carousel.cjs +1 -1
- package/dist/components/Carousel.cjs.map +1 -1
- package/dist/components/Carousel.d.cts +1 -1
- package/dist/components/Carousel.d.ts +1 -1
- package/dist/components/Carousel.js +1 -1
- package/dist/components/Carousel.js.map +1 -1
- package/dist/components/Collapsible.cjs +2 -2
- package/dist/components/Collapsible.cjs.map +1 -1
- package/dist/components/Collapsible.d.cts +4 -4
- package/dist/components/Collapsible.d.ts +4 -4
- package/dist/components/Collapsible.js +2 -2
- package/dist/components/Collapsible.js.map +1 -1
- package/dist/components/Combobox.cjs +4 -4
- package/dist/components/Combobox.cjs.map +1 -1
- package/dist/components/Combobox.d.cts +5 -2
- package/dist/components/Combobox.d.ts +5 -2
- package/dist/components/Combobox.js +4 -4
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/ContactItem.cjs +3 -3
- package/dist/components/ContactItem.cjs.map +1 -1
- package/dist/components/ContactItem.d.cts +1 -1
- package/dist/components/ContactItem.d.ts +1 -1
- package/dist/components/ContactItem.js +3 -3
- package/dist/components/ContactItem.js.map +1 -1
- package/dist/components/Dropdown.cjs +3 -3
- package/dist/components/Dropdown.cjs.map +1 -1
- package/dist/components/Dropdown.js +3 -3
- package/dist/components/Dropdown.js.map +1 -1
- package/dist/components/EditButton.cjs +5 -5
- package/dist/components/EditButton.cjs.map +1 -1
- package/dist/components/EditButton.d.cts +4 -4
- package/dist/components/EditButton.d.ts +4 -4
- package/dist/components/EditButton.js +5 -5
- package/dist/components/EditButton.js.map +1 -1
- package/dist/components/Fallback.cjs +1 -1
- package/dist/components/Fallback.cjs.map +1 -1
- package/dist/components/Fallback.js +1 -1
- package/dist/components/Fallback.js.map +1 -1
- package/dist/components/Icon.cjs +1 -1
- package/dist/components/Icon.cjs.map +1 -1
- package/dist/components/Icon.js +1 -1
- package/dist/components/Icon.js.map +1 -1
- package/dist/components/IconRenderer.cjs +1 -1
- package/dist/components/IconRenderer.cjs.map +1 -1
- package/dist/components/IconRenderer.d.cts +4 -4
- package/dist/components/IconRenderer.d.ts +4 -4
- package/dist/components/IconRenderer.js +1 -1
- package/dist/components/IconRenderer.js.map +1 -1
- package/dist/components/Input.cjs +3 -3
- package/dist/components/Input.cjs.map +1 -1
- package/dist/components/Input.d.cts +11 -11
- package/dist/components/Input.d.ts +11 -11
- package/dist/components/Input.js +3 -3
- package/dist/components/Input.js.map +1 -1
- package/dist/components/Link.cjs +4 -4
- package/dist/components/Link.cjs.map +1 -1
- package/dist/components/Link.d.cts +1 -1
- package/dist/components/Link.d.ts +1 -1
- package/dist/components/Link.js +4 -4
- package/dist/components/Link.js.map +1 -1
- package/dist/components/Logo.cjs +1 -1
- package/dist/components/Logo.cjs.map +1 -1
- package/dist/components/Logo.d.cts +1 -1
- package/dist/components/Logo.d.ts +1 -1
- package/dist/components/Logo.js +1 -1
- package/dist/components/Logo.js.map +1 -1
- package/dist/components/Modal.cjs +1 -1
- package/dist/components/Modal.cjs.map +1 -1
- package/dist/components/Modal.d.cts +4 -4
- package/dist/components/Modal.d.ts +4 -4
- package/dist/components/Modal.js +1 -1
- package/dist/components/Modal.js.map +1 -1
- package/dist/components/MultiSelectCombobox.cjs +2 -2
- package/dist/components/MultiSelectCombobox.cjs.map +1 -1
- package/dist/components/MultiSelectCombobox.d.cts +1 -1
- package/dist/components/MultiSelectCombobox.d.ts +1 -1
- package/dist/components/MultiSelectCombobox.js +2 -2
- package/dist/components/MultiSelectCombobox.js.map +1 -1
- package/dist/components/Navbar.cjs +7 -7
- package/dist/components/Navbar.cjs.map +1 -1
- package/dist/components/Navbar.d.cts +1 -1
- package/dist/components/Navbar.d.ts +1 -1
- package/dist/components/Navbar.js +7 -7
- package/dist/components/Navbar.js.map +1 -1
- package/dist/components/NavbarItem.cjs +4 -4
- package/dist/components/NavbarItem.cjs.map +1 -1
- package/dist/components/NavbarItem.d.cts +1 -1
- package/dist/components/NavbarItem.d.ts +1 -1
- package/dist/components/NavbarItem.js +4 -4
- package/dist/components/NavbarItem.js.map +1 -1
- package/dist/components/Option.cjs +2 -2
- package/dist/components/Option.cjs.map +1 -1
- package/dist/components/Option.js +2 -2
- package/dist/components/Option.js.map +1 -1
- package/dist/components/Pressable.cjs +1 -1
- package/dist/components/Pressable.cjs.map +1 -1
- package/dist/components/Pressable.js +1 -1
- package/dist/components/Pressable.js.map +1 -1
- package/dist/components/ProfileCard.cjs +2 -2
- package/dist/components/ProfileCard.cjs.map +1 -1
- package/dist/components/ProfileCard.d.cts +1 -1
- package/dist/components/ProfileCard.d.ts +1 -1
- package/dist/components/ProfileCard.js +2 -2
- package/dist/components/ProfileCard.js.map +1 -1
- package/dist/components/ProgressBar.cjs +3 -3
- package/dist/components/ProgressBar.cjs.map +1 -1
- package/dist/components/ProgressBar.js +3 -3
- package/dist/components/ProgressBar.js.map +1 -1
- package/dist/components/RadioGroup.cjs +3 -3
- package/dist/components/RadioGroup.cjs.map +1 -1
- package/dist/components/RadioGroup.js +3 -3
- package/dist/components/RadioGroup.js.map +1 -1
- package/dist/components/SegmentedTabs.cjs +4 -4
- package/dist/components/SegmentedTabs.cjs.map +1 -1
- package/dist/components/SegmentedTabs.js +4 -4
- package/dist/components/SegmentedTabs.js.map +1 -1
- package/dist/components/Sidebar.cjs +1 -1
- package/dist/components/Sidebar.cjs.map +1 -1
- package/dist/components/Sidebar.d.cts +1 -1
- package/dist/components/Sidebar.d.ts +1 -1
- package/dist/components/Sidebar.js +1 -1
- package/dist/components/Sidebar.js.map +1 -1
- package/dist/components/SlideButton.cjs +1 -1
- package/dist/components/SlideButton.cjs.map +1 -1
- package/dist/components/SlideButton.js +1 -1
- package/dist/components/SlideButton.js.map +1 -1
- package/dist/components/Slider.cjs.map +1 -1
- package/dist/components/Slider.js.map +1 -1
- package/dist/components/SocialCard.cjs +4 -4
- package/dist/components/SocialCard.cjs.map +1 -1
- package/dist/components/SocialCard.d.cts +1 -1
- package/dist/components/SocialCard.d.ts +1 -1
- package/dist/components/SocialCard.js +4 -4
- package/dist/components/SocialCard.js.map +1 -1
- package/dist/components/Spinner.cjs +1 -1
- package/dist/components/Spinner.cjs.map +1 -1
- package/dist/components/Spinner.d.cts +2 -2
- package/dist/components/Spinner.d.ts +2 -2
- package/dist/components/Spinner.js +1 -1
- package/dist/components/Spinner.js.map +1 -1
- package/dist/components/Switch.cjs.map +1 -1
- package/dist/components/Switch.d.cts +2 -2
- package/dist/components/Switch.d.ts +2 -2
- package/dist/components/Switch.js.map +1 -1
- package/dist/components/Tabs.cjs +3 -3
- package/dist/components/Tabs.cjs.map +1 -1
- package/dist/components/Tabs.js +3 -3
- package/dist/components/Tabs.js.map +1 -1
- package/dist/components/Tag.cjs +3 -3
- package/dist/components/Tag.cjs.map +1 -1
- package/dist/components/Tag.d.cts +1 -1
- package/dist/components/Tag.d.ts +1 -1
- package/dist/components/Tag.js +3 -3
- package/dist/components/Tag.js.map +1 -1
- package/dist/components/Text.cjs +1 -1
- package/dist/components/Text.cjs.map +1 -1
- package/dist/components/Text.d.cts +1 -1
- package/dist/components/Text.d.ts +1 -1
- package/dist/components/Text.js +1 -1
- package/dist/components/Text.js.map +1 -1
- package/dist/components/TextArea.cjs +4 -4
- package/dist/components/TextArea.cjs.map +1 -1
- package/dist/components/TextArea.d.cts +1 -1
- package/dist/components/TextArea.d.ts +1 -1
- package/dist/components/TextArea.js +4 -4
- package/dist/components/TextArea.js.map +1 -1
- package/dist/components/Toast.cjs +3 -3
- package/dist/components/Toast.cjs.map +1 -1
- package/dist/components/Toast.d.cts +7 -7
- package/dist/components/Toast.d.ts +7 -7
- package/dist/components/Toast.js +3 -3
- package/dist/components/Toast.js.map +1 -1
- package/dist/components/ToastProvider.cjs +1 -1
- package/dist/components/ToastProvider.cjs.map +1 -1
- package/dist/components/ToastProvider.d.cts +1 -1
- package/dist/components/ToastProvider.d.ts +1 -1
- package/dist/components/ToastProvider.js +1 -1
- package/dist/components/ToastProvider.js.map +1 -1
- package/dist/components/Tooltip.cjs +3 -3
- package/dist/components/Tooltip.cjs.map +1 -1
- package/dist/components/Tooltip.d.cts +1 -1
- package/dist/components/Tooltip.d.ts +1 -1
- package/dist/components/Tooltip.js +3 -3
- package/dist/components/Tooltip.js.map +1 -1
- package/dist/components/VideoPlayer.cjs +2 -2
- package/dist/components/VideoPlayer.cjs.map +1 -1
- package/dist/components/VideoPlayer.d.cts +4 -4
- package/dist/components/VideoPlayer.d.ts +4 -4
- package/dist/components/VideoPlayer.js +2 -2
- package/dist/components/VideoPlayer.js.map +1 -1
- package/dist/components/WorkCard.cjs +3 -3
- package/dist/components/WorkCard.cjs.map +1 -1
- package/dist/components/WorkCard.d.cts +1 -1
- package/dist/components/WorkCard.d.ts +1 -1
- package/dist/components/WorkCard.js +3 -3
- package/dist/components/WorkCard.js.map +1 -1
- package/dist/index.cjs +8 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +39 -39
- package/dist/index.d.ts +39 -39
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/styles/styles.css +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/index.ts","../../src/utils/responsive.ts","../../src/components/Fallback.tsx","../../src/utils/tailwind.ts","../../src/components/Pressable.tsx","../../src/components/Avatar.tsx","../../src/components/Icon.tsx","../../src/components/Text.tsx","../../src/components/Accordion.tsx","../../src/components/AutocompleteInput.tsx","../../src/components/Input.tsx","../../src/components/Badge.tsx","../../src/components/Tooltip.tsx","../../src/components/Option.tsx","../../src/components/Combobox.tsx","../../src/components/Dropdown.tsx","../../src/components/Logo.tsx","../../src/components/NavbarItem.tsx","../../src/components/Navbar.tsx"],"names":["cn","inputs","twMerge","clsx","BASE_SIZES","RESPONSIVE_SIZES","getSizeKey","size","getResponsiveSize","baseSize","classes","styles","key","baseKey","responsiveClasses","breakpoint","valueStr","value","valueKey","sizeMap","widthMap","avatarSizeMap","Fallback","React","variant","lines","className","animate","ref","baseClasses","animationClasses","customStyle","renderContent","_","index","focusRingStyles","focusRingStylesCoerced","Pressable","children","type","disabled","props","Avatar","src","onClick","alt","fallback","isLoading","responsiveSizeClasses","responsiveSizeStyles","content","COLOR_MAP","Icon","name","color","title","style","IconComponent","IconMap","HEADING_ELEMENT_MAP","getElementFromVariant","category","fontWeight","processVariants","variants","typographyClass","Text","as","weight","typographyClasses","colorClasses","suggestedElement","baseVariant","Accordion","H","items","defaultValue","onValueChange","contentClassName","triggerClassName","item","Input","v","end","iconName","label","labelClassName","id","forceShowFocusRing","error","errorMessage","helperText","showCharacterCount","maxLength","onChange","currentValue","setCurrentValue","handleChange","e","newValue","characterCount","showCount","AutocompleteInput","forwardRef","suggestion","onKeyDown","ariaControls","ariaActiveDescendant","ariaAutocomplete","stringToVariant","str","variantKeys","hash","acc","char","Badge","q","finalVariant","Tooltip","side","align","delayDuration","defaultOpen","controlledOpen","onOpenChange","longPressDuration","isOpen","setIsOpen","useState","longPressTimer","open","handleOpenChange","useCallback","newOpen","handleTouchStart","handleTouchEnd","B","HighlightedText","text","highlight","parts","part","i","Option","onMouseEnter","onMouseLeave","selected","role","ariaSelected","searchValue","tooltip","badge","Combobox","options","placeholder","container","autocomplete","loading","noOptionsMessage","setOpen","setSearchValue","highlightedIndex","setHighlightedIndex","listRef","useRef","inputRef","isGrouped","useMemo","flatOptions","group","visibleOptions","option","filteredGroups","selectedOption","opt","displayValue","handleOptionChange","optionValue","handleKeyDown","event","prev","matchingOption","handleOptionKeyDown","useEffect","input","length","highlightedOption","getSelectedOption","groupIndex","optionIndex","isSelected","Dropdown","$","trigger","onSelect","handleSelect","Logo","NavbarItem","hasNotification","Navbar","searchOptions","onSearchChange","navbarItems","onLogoClick","profileMenuItems","onProfileMenuSelect","avatarImage"],"mappings":"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","file":"Navbar.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","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 React from \"react\";\nimport { cn } from \"../utils\";\n\nexport type FallbackVariant = \"text\" | \"image\" | \"button\" | \"card\" | \"avatar\";\nexport type FallbackSize = \"sm\" | \"md\" | \"lg\" | number;\n\nexport type FallbackProps = {\n /**\n * The type of content being loaded\n */\n variant?: FallbackVariant;\n /**\n * The size of the fallback element\n * Can be a predefined size ('sm' | 'md' | 'lg') or a custom pixel value\n */\n size?: FallbackSize;\n /**\n * Whether to show multiple lines (only applies to text variant)\n */\n lines?: number;\n /**\n * Additional classes to apply to the fallback\n */\n className?: string;\n /**\n * Whether to show the loading animation\n */\n animate?: boolean;\n};\n\n// Updated to match existing component sizes\nconst sizeMap = {\n sm: \"h-4\", // 16px\n md: \"h-6\", // 24px\n lg: \"h-8\" // 32px\n};\n\n// Updated to match existing component sizes\nconst widthMap = {\n sm: \"w-20\", // 80px\n md: \"w-32\", // 128px\n lg: \"w-48\" // 192px\n};\n\n// Updated to match Avatar sizes\nconst avatarSizeMap = {\n sm: \"w-8 h-8\", // 32px\n md: \"w-12 h-12\", // 48px\n lg: \"w-16 h-16\" // 64px\n};\n\nexport const Fallback = React.forwardRef<HTMLDivElement, FallbackProps>(\n (\n { variant = \"text\", size = \"md\", lines = 1, className, animate = true },\n ref\n ) => {\n const baseClasses = \"bg-secondary-50 rounded-lg overflow-hidden\";\n const animationClasses = animate ? \"animate-pulse\" : \"\";\n\n const getCustomSizeStyle = (size: number) => ({\n height: `${size}px`,\n width:\n variant === \"avatar\" || variant === \"image\" ? `${size}px` : undefined\n });\n\n const customStyle =\n typeof size === \"number\" ? getCustomSizeStyle(size) : undefined;\n\n const renderContent = () => {\n switch (variant) {\n case \"text\":\n return (\n <div className=\"flex flex-col gap-2\">\n {Array.from({ length: lines }).map((_, index) => (\n <div\n key={index}\n style={customStyle}\n className={cn(\n baseClasses,\n animationClasses,\n typeof size === \"string\" ? sizeMap[size] : undefined,\n index === lines - 1 && lines > 1 ? \"w-3/4\" : \"w-full\",\n className\n )}\n />\n ))}\n </div>\n );\n\n case \"image\":\n return (\n <div\n style={customStyle}\n className={cn(\n baseClasses,\n animationClasses,\n (!customStyle || !className) &&\n \"aspect-square w-full max-w-[300px]\",\n className\n )}\n />\n );\n\n case \"button\":\n return (\n <div\n style={customStyle}\n className={cn(\n baseClasses,\n animationClasses,\n typeof size === \"string\" && [sizeMap[size], widthMap[size]],\n className\n )}\n />\n );\n\n case \"card\":\n return (\n <div\n className={cn(\n \"flex flex-col gap-4 p-6 border border-stroke rounded-xl\",\n className\n )}\n >\n <div\n className={cn(\n baseClasses,\n animationClasses,\n \"w-16 h-16 rounded-full\"\n )}\n />\n <div className=\"space-y-2\">\n <div\n className={cn(baseClasses, animationClasses, \"h-6 w-3/4\")}\n />\n <div\n className={cn(baseClasses, animationClasses, \"h-4 w-1/2\")}\n />\n </div>\n <div className=\"space-y-2\">\n <div\n className={cn(baseClasses, animationClasses, \"h-4 w-full\")}\n />\n <div\n className={cn(baseClasses, animationClasses, \"h-4 w-full\")}\n />\n <div\n className={cn(baseClasses, animationClasses, \"h-4 w-2/3\")}\n />\n </div>\n </div>\n );\n\n case \"avatar\":\n return (\n <div\n style={customStyle}\n className={cn(\n baseClasses,\n animationClasses,\n \"rounded-full\",\n {\n [avatarSizeMap.sm]: size === \"sm\",\n [avatarSizeMap.md]: size === \"md\",\n [avatarSizeMap.lg]: size === \"lg\"\n },\n className\n )}\n />\n );\n\n default:\n return null;\n }\n };\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)}>\n {renderContent()}\n </div>\n );\n }\n);\n\nFallback.displayName = \"Fallback\";\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 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 { cn } from \"../utils\";\nimport { getResponsiveSize, ResponsiveSize } from \"../utils/responsive\";\nimport { Fallback } from \"./Fallback\";\nimport { Pressable } from \"./Pressable\";\n\nexport type AvatarProps = {\n src?: string;\n size?: ResponsiveSize | ResponsiveSize[];\n alt?: string;\n className?: string;\n fallback?: React.ReactNode;\n isLoading?: boolean;\n} & Pick<React.ComponentProps<typeof Pressable>, \"onClick\">;\n\nexport const Avatar = ({\n src,\n size = 48,\n onClick,\n alt = \"avatar\",\n className,\n fallback,\n isLoading,\n ...props\n}: AvatarProps) => {\n const { responsiveSizeClasses, responsiveSizeStyles } = getResponsiveSize(\n size,\n 48\n );\n\n if (isLoading) {\n return (\n <Fallback\n variant=\"avatar\"\n size={typeof size === \"number\" ? size : \"md\"}\n />\n );\n }\n\n const content = src ? (\n <img\n src={src}\n alt={alt}\n className={cn(\n \"rounded-full object-cover\",\n responsiveSizeClasses,\n className\n )}\n style={responsiveSizeStyles}\n {...props}\n />\n ) : (\n <div\n className={cn(\n \"rounded-full bg-secondary-50\",\n responsiveSizeClasses,\n className\n )}\n style={responsiveSizeStyles}\n >\n {fallback}\n </div>\n );\n\n return onClick ? (\n <Pressable onClick={onClick} {...props}>\n {content}\n </Pressable>\n ) : (\n content\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 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 * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { Icon } from \"./Icon\";\nimport { Text } from \"./Text\";\n\nexport type AccordionItem = {\n value: string;\n title: React.ReactNode;\n content: React.ReactNode;\n disabled?: boolean;\n};\n\nexport type AccordionProps = {\n /** Array of items to show in the accordion */\n items: AccordionItem[];\n /** Type of accordion (single item open or multiple) */\n type?:\n | AccordionPrimitive.AccordionSingleProps[\"type\"]\n | AccordionPrimitive.AccordionMultipleProps[\"type\"];\n /** Default value(s) to be expanded */\n defaultValue?:\n | AccordionPrimitive.AccordionSingleProps[\"defaultValue\"]\n | AccordionPrimitive.AccordionMultipleProps[\"defaultValue\"];\n /** Current value(s) for controlled component */\n value?:\n | AccordionPrimitive.AccordionSingleProps[\"value\"]\n | AccordionPrimitive.AccordionMultipleProps[\"value\"];\n /** Callback when value changes */\n onValueChange?:\n | AccordionPrimitive.AccordionSingleProps[\"onValueChange\"]\n | AccordionPrimitive.AccordionMultipleProps[\"onValueChange\"];\n /** Optional className for custom styling */\n className?: string;\n /** Optional className for content */\n contentClassName?: string;\n /** Optional className for trigger */\n triggerClassName?: string;\n};\n\nexport const Accordion = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Root>,\n AccordionProps\n>(\n (\n {\n items,\n type = \"single\",\n defaultValue,\n value,\n onValueChange,\n className,\n contentClassName,\n triggerClassName,\n ...props\n },\n ref\n ) => {\n return (\n // @ts-expect-error TODO: Fix this\n <AccordionPrimitive.Root\n ref={ref}\n type={type}\n defaultValue={defaultValue}\n value={value}\n onValueChange={onValueChange}\n className={cn(\"w-full gap-1 flex flex-col\", className)}\n {...props}\n >\n {items.map((item) => (\n <AccordionPrimitive.Item\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n className=\"w-full\"\n >\n <AccordionPrimitive.Header>\n <AccordionPrimitive.Trigger\n className={cn(\n \"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\",\n \"disabled:cursor-not-allowed\",\n \"focus-visible:outline-none focus-visible:ring-2\",\n triggerClassName\n )}\n >\n <div className=\"flex items-center gap-3\">\n <Text\n variant=\"body-default-semibold\"\n className={item.disabled ? \"text-disabled\" : \"\"}\n >\n {item.title}\n </Text>\n </div>\n <Icon\n name=\"arrow-down\"\n size={18}\n aria-hidden\n color={item.disabled ? \"disabled\" : \"primary\"}\n className=\"transition-transform duration-200 data-[state=open]:rotate-180\"\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n <AccordionPrimitive.Content\n className={cn(\n \"overflow-hidden will-change-[height] data-[state=open]:animate-accordion-down data-[state=closed]:animate-accordion-up\",\n contentClassName\n )}\n >\n <div className=\"py-2 px-3\">{item.content}</div>\n </AccordionPrimitive.Content>\n </AccordionPrimitive.Item>\n ))}\n </AccordionPrimitive.Root>\n );\n }\n);\n\nAccordion.displayName = \"Accordion\";\n","import React, { forwardRef, KeyboardEvent } from \"react\";\nimport { cn } from \"../utils\";\nimport { Input } from \"./Input\";\nimport type { InputProps } from \"./Input\";\n\nexport type AutocompleteInputProps = {\n value: string;\n suggestion: string;\n onChange: (value: string) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;\n \"aria-controls\"?: string;\n \"aria-activedescendant\"?: string;\n \"aria-autocomplete\"?: \"none\" | \"inline\" | \"list\" | \"both\";\n} & Omit<InputProps, \"value\" | \"onChange\" | \"onKeyDown\">;\n\nexport const AutocompleteInput = forwardRef<\n HTMLInputElement,\n AutocompleteInputProps\n>(\n (\n {\n value,\n suggestion,\n onChange,\n onKeyDown,\n className,\n \"aria-controls\": ariaControls,\n \"aria-activedescendant\": ariaActiveDescendant,\n \"aria-autocomplete\": ariaAutocomplete,\n ...props\n },\n ref\n ) => {\n return (\n <div className=\"relative w-full\">\n <Input\n ref={ref}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={onKeyDown}\n className={cn(\"bg-transparent\", className)}\n aria-controls={ariaControls}\n aria-activedescendant={ariaActiveDescendant}\n aria-autocomplete={ariaAutocomplete}\n {...props}\n />\n {suggestion && (\n <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\">\n {value}\n {suggestion.slice(value.length)}\n </div>\n )}\n </div>\n );\n }\n);\n\nAutocompleteInput.displayName = \"AutocompleteInput\";\n","import { IconName } from \"@deckai/icons\";\nimport * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { focusRingStylesCoerced } from \"../utils/tailwind\";\nimport { Icon, IconProps } from \"./Icon\";\nimport { Text } from \"./Text\";\n\nexport type InputProps = {\n className?: string;\n end?: React.ReactNode;\n /** renders an icon in the end slot */\n iconName?: IconName;\n /** Label text for the input */\n label?: string;\n /** Additional classes for the label */\n labelClassName?: string;\n /** Forces the focus ring to show regardless of focus state */\n forceShowFocusRing?: boolean;\n /** Error state for the input */\n error?: boolean;\n /** Error message to display below the input */\n errorMessage?: string;\n /** Helper text displayed below the input */\n helperText?: string;\n /** Character count display */\n showCharacterCount?: boolean;\n /** Maximum number of characters */\n maxLength?: number;\n} & React.InputHTMLAttributes<HTMLInputElement> &\n Pick<IconProps, \"color\" | \"size\" | \"title\">;\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n end,\n iconName,\n color,\n size,\n title,\n label,\n labelClassName,\n id,\n children,\n forceShowFocusRing,\n error,\n errorMessage,\n helperText,\n showCharacterCount,\n maxLength,\n value,\n defaultValue,\n onChange,\n disabled,\n ...props\n },\n ref\n ) => {\n const [currentValue, setCurrentValue] = React.useState(\n value?.toString() || defaultValue?.toString() || \"\"\n );\n\n // Update internal value when prop changes\n React.useEffect(() => {\n if (value !== undefined) {\n setCurrentValue(value.toString());\n }\n }, [value]);\n\n const handleChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setCurrentValue(newValue);\n onChange?.(e);\n },\n [onChange]\n );\n\n const characterCount = currentValue.length;\n const showCount = showCharacterCount || !!maxLength;\n\n return (\n <div className=\"gap-1 flex flex-col\">\n {label && (\n <Text\n variant=\"label-default\"\n htmlFor={id}\n as=\"label\"\n color={error ? \"danger\" : \"primary\"}\n className={cn(labelClassName)}\n >\n {label}\n </Text>\n )}\n <div\n className={cn(\n \"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\",\n !error && !forceShowFocusRing && \"border-secondary-50\",\n error && \"border-tertiary-10\",\n disabled && \"cursor-not-allowed opacity-50\",\n \"focus-within:ring-2 focus-within:ring-primary-100\",\n forceShowFocusRing && focusRingStylesCoerced\n )}\n >\n <div className=\"flex relative\">\n <input\n ref={ref}\n id={id}\n className={cn(\n \"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\",\n end && \"pr-10\",\n className\n )}\n value={currentValue}\n maxLength={maxLength}\n onChange={handleChange}\n aria-invalid={error}\n disabled={disabled}\n {...props}\n />\n {(end || iconName) && (\n <div className=\"absolute inset-y-0 right-0 flex items-center\">\n {iconName ? (\n <Icon\n name={iconName}\n color={error ? \"danger\" : \"secondary\"}\n size={size}\n title={title}\n />\n ) : (\n end\n )}\n </div>\n )}\n </div>\n {children}\n </div>\n <div className=\"flex justify-between gap-2\">\n {(error && errorMessage) || helperText ? (\n <Text\n variant=\"body-xxs\"\n color={error ? \"danger\" : \"secondary\"}\n className=\"mt-1\"\n >\n {error ? errorMessage : helperText}\n </Text>\n ) : null}\n {showCount && (\n <Text\n variant=\"body-xxs\"\n color={error ? \"danger\" : \"secondary\"}\n className=\"text-right mt-1\"\n >\n <Text\n variant=\"body-xxs\"\n as=\"span\"\n color=\"primary-100\"\n className=\"font-bold\"\n >\n {characterCount}\n </Text>\n {maxLength && `/${maxLength}`} characters\n </Text>\n )}\n </div>\n </div>\n );\n }\n);\n","import { IconName } from \"@deckai/icons\";\nimport * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { Icon } from \"./Icon\";\nimport { Text } from \"./Text\";\n\nexport type BadgeProps = {\n variant?: \"pink\" | \"orange\" | \"green\" | \"purple\";\n iconName?: IconName;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\nconst variants = {\n pink: \"bg-tertiary-5\",\n orange: \"bg-tertiary-15\",\n green: \"bg-tertiary-25\",\n purple: \"bg-secondary-300\"\n};\n\nconst stringToVariant = (str: string): keyof typeof variants => {\n const variantKeys = Object.keys(variants) as Array<keyof typeof variants>;\n // Let's log some values to understand what's happening\n const hash = str\n .split(\"\")\n .reduce((acc, char) => char.charCodeAt(0) + ((acc << 5) - acc), 0);\n\n const index = Math.abs(hash) % variantKeys.length;\n const selectedVariant = variantKeys[index];\n\n return selectedVariant;\n};\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, iconName, children, ...props }, ref) => {\n const finalVariant =\n variant ||\n (typeof children === \"string\" ? stringToVariant(children) : \"pink\");\n return (\n <span\n ref={ref}\n className={cn(\n \"inline-flex items-center gap-2\",\n \"rounded px-2 py-1.5\",\n \"text-sm font-medium\",\n variants[finalVariant],\n className\n )}\n {...props}\n >\n {iconName && <Icon size={16} name={iconName} />}\n <Text variant=\"body-xxs-semibold\" className=\"mt-0.5\">\n {children}\n </Text>\n </span>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n","import * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport * as React from \"react\";\nimport { useCallback, useState } from \"react\";\nimport { cn } from \"../utils\";\nimport { Text } from \"./Text\";\nexport interface TooltipProps {\n content: React.ReactNode;\n children: React.ReactNode;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n align?: \"start\" | \"center\" | \"end\";\n className?: string;\n delayDuration?: number;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Duration in ms for long press on mobile devices */\n longPressDuration?: number;\n}\n\nexport const Tooltip = ({\n content,\n children,\n side = \"bottom\",\n align = \"center\",\n className,\n delayDuration = 200,\n defaultOpen,\n open: controlledOpen,\n onOpenChange,\n longPressDuration = 500\n}: TooltipProps) => {\n const [isOpen, setIsOpen] = useState(defaultOpen || false);\n let longPressTimer: Timer | null = null;\n\n const open = controlledOpen ?? isOpen;\n const handleOpenChange = useCallback(\n (newOpen: boolean) => {\n if (!controlledOpen) {\n setIsOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n },\n [controlledOpen, onOpenChange]\n );\n\n const handleTouchStart = useCallback(() => {\n const timer = setTimeout(() => {\n handleOpenChange(true);\n }, longPressDuration);\n longPressTimer = timer;\n }, [handleOpenChange, longPressDuration]);\n\n const handleTouchEnd = useCallback(() => {\n if (longPressTimer) {\n clearTimeout(longPressTimer);\n longPressTimer = null;\n }\n // Keep tooltip open for a brief moment after touch\n setTimeout(() => handleOpenChange(false), 1500);\n }, [longPressTimer, handleOpenChange]);\n\n return (\n <TooltipPrimitive.Provider delayDuration={delayDuration}>\n <TooltipPrimitive.Root open={open} onOpenChange={handleOpenChange}>\n <TooltipPrimitive.Trigger asChild>\n <span\n tabIndex={0}\n onTouchStart={handleTouchStart}\n onTouchEnd={handleTouchEnd}\n onTouchCancel={handleTouchEnd}\n >\n {children}\n </span>\n </TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n align={align}\n sideOffset={4}\n className={cn(\n \"z-50 overflow-hidden rounded-lg\",\n \"bg-primary px-3 py-1.5\",\n \"text-xs text-white\",\n \"animate-in fade-in-0 zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n \"select-none\",\n \"max-w-60\",\n \"touch-none\", // Prevent touch events from interfering with scrolling\n className\n )}\n >\n {typeof content === \"string\" ? (\n <Text variant=\"body-default-medium\" color=\"white\">\n {content}\n </Text>\n ) : (\n content\n )}\n <TooltipPrimitive.Arrow\n className=\"fill-text-primary\"\n width={10}\n height={5}\n />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n );\n};\n","import React, { KeyboardEvent } from \"react\";\nimport { cn } from \"../utils\";\nimport { Badge } from \"./Badge\";\nimport { Text } from \"./Text\";\nimport { Tooltip } from \"./Tooltip\";\n\nexport type OptionProps = {\n label: React.ReactNode;\n value: string;\n /** Optional color override for specific items like \"Logout\" in red */\n color?: \"default\" | \"danger\";\n /** Optional disabled state */\n disabled?: boolean;\n onChange?: (value: string) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLButtonElement>) => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n selected?: boolean;\n className?: string;\n /** ID for accessibility */\n id?: string;\n /** ARIA role */\n role?: string;\n /** ARIA selected state */\n \"aria-selected\"?: boolean;\n /** Current search value for highlighting matches */\n searchValue?: string;\n /** Optional tooltip content */\n tooltip?: React.ReactNode;\n onClick?: () => void;\n badge?: React.ReactNode;\n};\n\nconst HighlightedText = ({\n text,\n highlight\n}: {\n text: string;\n highlight: string;\n}) => {\n if (!highlight) return <>{text}</>;\n\n const parts = text.split(new RegExp(`(${highlight})`, \"i\"));\n return (\n <>\n {parts.map((part, i) =>\n part.toLowerCase() === highlight.toLowerCase() ? (\n <span key={i} className=\"font-bold\">\n {part}\n </span>\n ) : (\n part\n )\n )}\n </>\n );\n};\n\nexport const Option = React.forwardRef<HTMLButtonElement, OptionProps>(\n (\n {\n value,\n label,\n onChange,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n selected,\n color,\n disabled,\n className,\n id,\n role,\n \"aria-selected\": ariaSelected,\n searchValue = \"\",\n tooltip,\n onClick,\n badge\n },\n ref\n ) => {\n const content = (\n <button\n ref={ref}\n type=\"button\"\n id={id}\n role={role}\n aria-selected={ariaSelected}\n disabled={disabled}\n className={cn(\n \"relative w-full text-left px-2 py-1.5 text-sm rounded outline-none\",\n \"cursor-pointer hover:bg-gray-100\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n selected && \"bg-gray-100\",\n \"flex items-center gap-2\",\n className\n )}\n onClick={() => {\n onChange?.(value);\n onClick?.();\n }}\n onKeyDown={onKeyDown}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <Text\n variant=\"body-default-medium\"\n color={color === \"danger\" ? \"danger\" : \"inherit\"}\n >\n {typeof label === \"string\" ? (\n <HighlightedText text={label} highlight={searchValue} />\n ) : (\n label\n )}\n </Text>\n {badge && <Badge>{badge}</Badge>}\n </button>\n );\n return tooltip ? <Tooltip content={tooltip}>{content}</Tooltip> : content;\n }\n);\n","import * as Popover from \"@radix-ui/react-popover\";\nimport React, {\n KeyboardEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from \"react\";\nimport { cn } from \"../utils\";\nimport { Accordion } from \"./Accordion\";\nimport { AutocompleteInput } from \"./AutocompleteInput\";\nimport { Input } from \"./Input\";\nimport { Option, OptionProps } from \"./Option\";\n\nexport type OptionGroup = {\n label: string;\n options: OptionProps[];\n};\n\nexport type ComboboxProps = {\n /** Options can be either a flat array or grouped */\n options: OptionProps[] | OptionGroup[];\n placeholder?: string;\n value?: string;\n onChange: (value: string) => void;\n end?: React.ReactNode;\n className?: string;\n /** Label text for the combobox */\n label?: string;\n /** Additional classes for the label */\n labelClassName?: string;\n /** ID for accessibility */\n id?: string;\n /** Whether the combobox is disabled */\n disabled?: boolean;\n /** Optional container for the portal */\n container?: HTMLElement | null;\n autocomplete?: boolean;\n /** Loading state for async options */\n loading?: boolean;\n /** Error state for async options */\n error?: boolean;\n /** Error message to display */\n errorMessage?: string;\n /** Message to show when no options are available */\n noOptionsMessage?: string;\n};\n\nexport const Combobox = ({\n options,\n placeholder = \"Select an item...\",\n value,\n onChange,\n end,\n className,\n label,\n labelClassName,\n id,\n disabled,\n container,\n autocomplete = false,\n loading = false,\n error = false,\n errorMessage,\n noOptionsMessage\n}: ComboboxProps) => {\n const [open, setOpen] = useState(false);\n const [searchValue, setSearchValue] = useState(\"\");\n\n const [highlightedIndex, setHighlightedIndex] = useState<number>(-1);\n const listRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const isGrouped = useMemo(\n () => options.length > 0 && \"options\" in options[0],\n [options]\n );\n\n const flatOptions = useMemo(() => {\n if (!options.length) return [];\n if (!isGrouped) return options as OptionProps[];\n return (options as OptionGroup[]).reduce<OptionProps[]>(\n (acc, group) => [...acc, ...group.options],\n []\n );\n }, [isGrouped, options]);\n\n const visibleOptions = useMemo(() => {\n return flatOptions.filter((option) =>\n searchValue && typeof option.label === \"string\"\n ? option.label.toLowerCase().includes(searchValue.toLowerCase())\n : true\n );\n }, [flatOptions, searchValue]);\n\n const filteredGroups = useMemo(() => {\n if (!isGrouped) {\n return visibleOptions.length > 0\n ? [{ label: \"\", options: visibleOptions }]\n : [];\n }\n\n return (options as OptionGroup[])\n .map((group) => ({\n ...group,\n options: group.options.filter((option) =>\n searchValue && typeof option.label === \"string\"\n ? option.label.toLowerCase().includes(searchValue.toLowerCase())\n : true\n )\n }))\n .filter((group) => group.options.length > 0);\n }, [isGrouped, options, searchValue, visibleOptions]);\n\n const selectedOption = useMemo(\n () => flatOptions.find((opt) => opt.value === value),\n [value, flatOptions]\n );\n\n const displayValue = useMemo(() => {\n if (open) return searchValue;\n if (selectedOption) return selectedOption.label?.toString() || \"\";\n return \"\";\n }, [open, searchValue, selectedOption]);\n\n const suggestion = useMemo(() => {\n if (!autocomplete || !searchValue || !open) return \"\";\n const matchingOption = visibleOptions.find(\n (opt) =>\n typeof opt.label === \"string\" &&\n opt.label.toLowerCase().startsWith(searchValue.toLowerCase()) &&\n opt.label.toLowerCase() !== searchValue.toLowerCase()\n );\n return matchingOption?.label?.toString() || \"\";\n }, [autocomplete, searchValue, visibleOptions, open]);\n\n const handleOptionChange = useCallback(\n (optionValue: string) => {\n onChange(optionValue);\n setOpen(false);\n setSearchValue(\"\");\n setHighlightedIndex(-1);\n },\n [onChange]\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n if (event.altKey) {\n setOpen(true);\n } else {\n if (!open) {\n setOpen(true);\n setHighlightedIndex(0);\n } else {\n setHighlightedIndex((prev) =>\n prev < visibleOptions.length - 1 ? prev + 1 : 0\n );\n }\n }\n break;\n\n case \"ArrowUp\":\n event.preventDefault();\n if (event.altKey) {\n setOpen(false);\n } else {\n if (!open) {\n setOpen(true);\n setHighlightedIndex(visibleOptions.length - 1);\n } else {\n setHighlightedIndex((prev) =>\n prev > 0 ? prev - 1 : visibleOptions.length - 1\n );\n }\n }\n break;\n\n case \"PageUp\":\n event.preventDefault();\n if (open) {\n setHighlightedIndex((prev) => Math.max(0, prev - 10));\n }\n break;\n\n case \"PageDown\":\n event.preventDefault();\n if (open) {\n setHighlightedIndex((prev) =>\n Math.min(visibleOptions.length - 1, prev + 10)\n );\n }\n break;\n\n case \"Home\":\n event.preventDefault();\n if (open) {\n setHighlightedIndex(0);\n }\n break;\n\n case \"End\":\n event.preventDefault();\n if (open) {\n setHighlightedIndex(visibleOptions.length - 1);\n }\n break;\n\n case \"Enter\":\n event.preventDefault();\n if (highlightedIndex >= 0 && visibleOptions[highlightedIndex]) {\n handleOptionChange(visibleOptions[highlightedIndex].value);\n } else if (autocomplete && suggestion) {\n const matchingOption = visibleOptions.find(\n (opt) =>\n typeof opt.label === \"string\" &&\n opt.label.toLowerCase().startsWith(searchValue.toLowerCase())\n );\n if (matchingOption) {\n handleOptionChange(matchingOption.value);\n }\n }\n break;\n\n case \"Tab\":\n if (!open) {\n event.preventDefault();\n setOpen(true);\n setHighlightedIndex(0);\n } else if (\n highlightedIndex >= 0 &&\n visibleOptions[highlightedIndex]\n ) {\n event.preventDefault();\n handleOptionChange(visibleOptions[highlightedIndex].value);\n }\n break;\n\n case \"Escape\":\n event.preventDefault();\n setOpen(false);\n setSearchValue(\"\");\n break;\n }\n },\n [\n open,\n highlightedIndex,\n visibleOptions,\n suggestion,\n searchValue,\n handleOptionChange,\n autocomplete\n ]\n );\n\n const handleOptionKeyDown = useCallback(\n (event: KeyboardEvent<HTMLButtonElement>) => {\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n setHighlightedIndex((prev) =>\n prev < visibleOptions.length - 1 ? prev + 1 : 0\n );\n break;\n\n case \"ArrowUp\":\n event.preventDefault();\n setHighlightedIndex((prev) =>\n prev > 0 ? prev - 1 : visibleOptions.length - 1\n );\n break;\n\n case \"Enter\":\n case \"Space\":\n event.preventDefault();\n if (highlightedIndex >= 0 && visibleOptions[highlightedIndex]) {\n handleOptionChange(visibleOptions[highlightedIndex].value);\n }\n break;\n\n case \"Escape\":\n event.preventDefault();\n setOpen(false);\n inputRef.current?.focus();\n break;\n\n case \"Tab\":\n event.preventDefault();\n if (highlightedIndex >= 0 && visibleOptions[highlightedIndex]) {\n handleOptionChange(visibleOptions[highlightedIndex].value);\n }\n break;\n }\n },\n [highlightedIndex, visibleOptions, handleOptionChange]\n );\n\n // Keep input focused when dropdown is open\n useEffect(() => {\n if (open) {\n const input = inputRef.current;\n if (input) {\n input.focus({ preventScroll: true });\n // Move cursor to end of text\n const length = input.value.length;\n input.setSelectionRange(length, length);\n }\n }\n }, [open]);\n\n // Reset highlighted index when dropdown closes\n useEffect(() => {\n if (!open) {\n setHighlightedIndex(-1);\n }\n }, [open]);\n\n // Scroll highlighted option into view\n useEffect(() => {\n if (open && highlightedIndex >= 0 && listRef.current) {\n const highlightedOption = listRef.current.querySelector(\n `[id=\"${id}-option-${highlightedIndex}\"]`\n ) as HTMLElement;\n\n if (highlightedOption) {\n highlightedOption.scrollIntoView({\n block: \"nearest\",\n behavior: \"smooth\"\n });\n }\n }\n }, [highlightedIndex, open, id]);\n\n const getSelectedOption = useCallback(\n (option: OptionProps) => {\n if (!open) return value === option.value;\n\n const index = visibleOptions.findIndex(\n (opt) => opt.value === option.value\n );\n\n // If using keyboard navigation, show that highlight\n if (highlightedIndex >= 0) {\n return index === highlightedIndex;\n }\n\n // If no option is highlighted, highlight the first one\n if (highlightedIndex === -1) {\n return index === 0;\n }\n\n return false;\n },\n [open, value, highlightedIndex, visibleOptions]\n );\n\n // Set initial highlight when opening dropdown\n useEffect(() => {\n if (open && highlightedIndex === -1) {\n setHighlightedIndex(0);\n }\n }, [open, highlightedIndex]);\n\n return (\n <Popover.Root\n open={open && !disabled}\n onOpenChange={(isOpen) => {\n if (!disabled) {\n setOpen(isOpen);\n if (!isOpen) {\n setSearchValue(\"\");\n setHighlightedIndex(-1);\n } else {\n const input = inputRef.current;\n if (input) {\n input.focus({ preventScroll: true });\n const length = input.value.length;\n input.setSelectionRange(length, length);\n }\n }\n }\n }}\n >\n <div\n className={`relative w-full font-sans text-secondary ${className}`}\n role=\"combobox\"\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-controls={`${id}-listbox`}\n >\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n className=\"w-full text-left\"\n disabled={disabled}\n >\n {autocomplete ? (\n <AutocompleteInput\n ref={inputRef}\n id={id}\n label={label}\n labelClassName={labelClassName}\n placeholder={placeholder}\n value={displayValue}\n suggestion={suggestion}\n onChange={(value) => {\n setSearchValue(value);\n if (!open) {\n setOpen(true);\n }\n }}\n onKeyDown={handleKeyDown}\n end={end}\n className={cn(\"flex-1\", className)}\n forceShowFocusRing={open}\n disabled={disabled}\n aria-autocomplete=\"list\"\n aria-controls={`${id}-listbox`}\n aria-activedescendant={\n highlightedIndex >= 0\n ? `${id}-option-${highlightedIndex}`\n : undefined\n }\n />\n ) : (\n <Input\n ref={inputRef}\n id={id}\n label={label}\n labelClassName={labelClassName}\n placeholder={placeholder}\n value={displayValue}\n onChange={(e) => {\n setSearchValue(e.target.value);\n if (!open) {\n setOpen(true);\n }\n }}\n onKeyDown={handleKeyDown}\n end={end}\n className={cn(\"flex-1\", className)}\n forceShowFocusRing={open}\n disabled={disabled}\n aria-controls={`${id}-listbox`}\n aria-activedescendant={\n highlightedIndex >= 0\n ? `${id}-option-${highlightedIndex}`\n : undefined\n }\n />\n )}\n </button>\n </Popover.Trigger>\n\n <Popover.Portal container={container}>\n <Popover.Content\n 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\"\n side=\"bottom\"\n align=\"start\"\n sideOffset={4}\n onOpenAutoFocus={(e) => e.preventDefault()}\n onCloseAutoFocus={(e) => e.preventDefault()}\n onFocusOutside={(e) => e.preventDefault()}\n onInteractOutside={(e) => {\n e.preventDefault();\n setOpen(false);\n setSearchValue(\"\");\n setHighlightedIndex(-1);\n }}\n >\n <div\n ref={listRef}\n className=\"max-h-60 overflow-y-auto flex flex-col items-start outline-none\"\n role=\"listbox\"\n id={`${id}-listbox`}\n aria-label={label}\n aria-busy={loading}\n >\n {error ? (\n <div className=\"px-2 py-1.5 text-sm text-red-500\">\n {errorMessage || \"Failed to load options\"}\n </div>\n ) : loading ? (\n <div className=\"px-2 py-1.5 text-sm text-gray-500\">\n Loading...\n </div>\n ) : visibleOptions.length > 0 && isGrouped ? (\n <Accordion\n type=\"multiple\"\n className=\"gap-0\"\n defaultValue={filteredGroups.map((group) => group.label)}\n items={filteredGroups.map((group, groupIndex) => ({\n title: group.label,\n value: group.label,\n content: (\n <div>\n {group.options.map((option, optionIndex) => {\n const isSelected = getSelectedOption(option);\n return (\n <Option\n key={`${groupIndex}-${optionIndex}`}\n onChange={handleOptionChange}\n onKeyDown={handleOptionKeyDown}\n value={option.value}\n label={option.label}\n className={cn(\"pl-4\")}\n selected={isSelected}\n id={`${id}-option-${optionIndex}`}\n role=\"option\"\n aria-selected={isSelected}\n searchValue={searchValue}\n />\n );\n })}\n </div>\n )\n }))}\n />\n ) : visibleOptions.length > 0 && !isGrouped ? (\n options.map((option, optionIndex) => {\n // @ts-expect-error TODO: Fix this\n const isSelected = getSelectedOption(option);\n return (\n <Option\n key={optionIndex}\n onChange={handleOptionChange}\n onKeyDown={handleOptionKeyDown}\n // @ts-expect-error TODO: Fix this\n value={option.value}\n label={option.label}\n className={cn(\"pl-4\")}\n selected={isSelected}\n id={`${id}-option-${optionIndex}`}\n role=\"option\"\n aria-selected={isSelected}\n searchValue={searchValue}\n />\n );\n })\n ) : (\n <div className=\"px-2 py-1.5 text-sm text-gray-500\">\n {noOptionsMessage || \"No results found\"}\n </div>\n )}\n </div>\n </Popover.Content>\n </Popover.Portal>\n </div>\n </Popover.Root>\n );\n};\n","import * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport * as React from \"react\";\nimport { cn } from \"../utils\";\nimport { Option, type OptionProps } from \"./Option\";\n\nexport type DropdownProps = {\n /** The trigger element that opens the dropdown */\n trigger: React.ReactNode;\n /** Array of items to show in the dropdown */\n items: Omit<OptionProps, \"onChange\" | \"selected\">[];\n /** Optional className for the content */\n className?: string;\n /** Callback when an item is selected */\n onSelect?: (value: string) => void;\n /** Optional side alignment */\n align?: \"start\" | \"center\" | \"end\";\n};\n\nexport const Dropdown = React.forwardRef<HTMLDivElement, DropdownProps>(\n ({ trigger, items, className, onSelect, align = \"end\" }, ref) => {\n const handleSelect = React.useCallback(\n (value: string) => {\n onSelect?.(value);\n },\n [onSelect]\n );\n\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>{trigger}</DropdownMenu.Trigger>\n\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n ref={ref}\n align={align}\n sideOffset={4}\n className={cn(\n \"z-50 min-w-[220px]\",\n \"bg-background-0 rounded-lg p-1\",\n \"shadow-lg border border-gray-100\",\n \"animate-in fade-in-0 zoom-in-95\",\n className\n )}\n >\n {items.map((item) => (\n <DropdownMenu.Item\n key={item.value}\n disabled={item.disabled}\n onSelect={() => handleSelect(item.value)}\n className=\"outline-none\"\n asChild\n >\n <Option\n {...item}\n className=\"py-3 px-6\"\n onChange={handleSelect}\n />\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n }\n);\n\nDropdown.displayName = \"Dropdown\";\n","import React from \"react\";\nimport { cn } from \"../utils\";\n\nexport type LogoProps = {\n className?: string;\n};\n\nexport const Logo = ({ className }: LogoProps) => (\n <div className={cn(\"lg:w-[76px] lg:h-[25px] w-[58px] h-[19px]\", className)}>\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 76 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.8 15.584C0.8 13.9413 1.12 12.4693 1.76 11.168C2.4 9.84533 3.27467 8.8 4.384 8.032C5.49333 7.264 6.77333 6.88 8.224 6.88C9.39733 6.88 10.464 7.168 11.424 7.744C12.384 8.29867 13.1093 9.03467 13.6 9.952V0.639999H18.72V18.304C18.72 18.816 18.8053 19.1787 18.976 19.392C19.1467 19.584 19.424 19.7013 19.808 19.744V24C18.912 24.1707 18.1867 24.256 17.632 24.256C16.7573 24.256 16.0427 24.064 15.488 23.68C14.9547 23.296 14.624 22.7627 14.496 22.08L14.4 21.216C13.8027 22.2613 12.992 23.04 11.968 23.552C10.944 24.064 9.86667 24.32 8.736 24.32C7.584 24.32 6.51733 24.1067 5.536 23.68C4.576 23.232 3.73333 22.6133 3.008 21.824C2.304 21.0347 1.76 20.1067 1.376 19.04C0.992 17.9733 0.8 16.8213 0.8 15.584ZM13.632 17.664V14.144C13.4187 13.568 13.1093 13.0667 12.704 12.64C12.32 12.2133 11.872 11.872 11.36 11.616C10.8693 11.36 10.368 11.232 9.856 11.232C9.30133 11.232 8.78933 11.3493 8.32 11.584C7.872 11.8187 7.47733 12.1493 7.136 12.576C6.79467 12.9813 6.528 13.4507 6.336 13.984C6.16533 14.5173 6.08 15.0827 6.08 15.68C6.08 16.2987 6.176 16.8747 6.368 17.408C6.58133 17.92 6.86933 18.3787 7.232 18.784C7.59467 19.168 8.02133 19.4667 8.512 19.68C9.00267 19.8933 9.536 20 10.112 20C10.4747 20 10.8267 19.9467 11.168 19.84C11.5093 19.712 11.8293 19.552 12.128 19.36C12.448 19.168 12.736 18.9227 12.992 18.624C13.248 18.3253 13.4613 18.0053 13.632 17.664ZM30.0895 24.32C28.6602 24.32 27.3908 24.096 26.2815 23.648C25.1722 23.1787 24.2228 22.5493 23.4335 21.76C22.6655 20.9707 22.0788 20.064 21.6735 19.04C21.2682 17.9947 21.0655 16.9067 21.0655 15.776C21.0655 14.1547 21.4175 12.6827 22.1215 11.36C22.8468 10.016 23.8815 8.93867 25.2255 8.128C26.5695 7.296 28.1908 6.88 30.0895 6.88C31.9882 6.88 33.5988 7.28533 34.9215 8.096C36.2655 8.90667 37.2895 9.97333 37.9935 11.296C38.6975 12.5973 39.0495 14.016 39.0495 15.552C39.0495 15.8507 39.0282 16.1493 38.9855 16.448C38.9642 16.7253 38.9428 16.9707 38.9215 17.184H26.5055C26.5695 17.9307 26.7722 18.56 27.1135 19.072C27.4762 19.584 27.9348 19.9787 28.4895 20.256C29.0442 20.512 29.6308 20.64 30.2495 20.64C31.0175 20.64 31.7322 20.4587 32.3935 20.096C33.0762 19.7333 33.5455 19.2427 33.8015 18.624L38.1535 19.84C37.7268 20.7147 37.1188 21.4933 36.3295 22.176C35.5615 22.8373 34.6442 23.36 33.5775 23.744C32.5322 24.128 31.3695 24.32 30.0895 24.32ZM26.3775 14.048H33.6735C33.5882 13.344 33.3855 12.736 33.0655 12.224C32.7455 11.6907 32.3188 11.2853 31.7855 11.008C31.2522 10.7093 30.6655 10.56 30.0255 10.56C29.3642 10.56 28.7668 10.7093 28.2335 11.008C27.7215 11.2853 27.3055 11.6907 26.9855 12.224C26.6655 12.736 26.4628 13.344 26.3775 14.048ZM48.762 24.32C47.3327 24.32 46.0633 24.0853 44.954 23.616C43.8447 23.1467 42.8953 22.5067 42.106 21.696C41.338 20.8853 40.7513 19.9573 40.346 18.912C39.9407 17.8667 39.738 16.7573 39.738 15.584C39.738 14.048 40.09 12.6187 40.794 11.296C41.5193 9.97333 42.554 8.90667 43.898 8.096C45.242 7.28533 46.8633 6.88 48.762 6.88C50.682 6.88 52.3033 7.296 53.626 8.128C54.97 8.93867 55.9727 10.0053 56.634 11.328L51.642 12.832C51.322 12.32 50.906 11.9253 50.394 11.648C49.9033 11.3707 49.3487 11.232 48.73 11.232C48.026 11.232 47.386 11.4133 46.81 11.776C46.2553 12.1387 45.8073 12.64 45.466 13.28C45.146 13.92 44.986 14.688 44.986 15.584C44.986 16.4587 45.1567 17.2267 45.498 17.888C45.8393 18.5493 46.2873 19.072 46.842 19.456C47.3967 19.8187 48.026 20 48.73 20C49.1567 20 49.5513 19.936 49.914 19.808C50.298 19.6587 50.6393 19.456 50.938 19.2C51.258 18.944 51.5033 18.656 51.674 18.336L56.666 19.872C56.2607 20.7253 55.674 21.4933 54.906 22.176C54.1593 22.8373 53.274 23.36 52.25 23.744C51.226 24.128 50.0633 24.32 48.762 24.32ZM69.636 24L65.252 17.28L63.46 19.104V24H58.34V0.639999H63.46V14.144L69.156 7.2H74.564L68.516 14.432L75.076 24H69.636Z\"\n fill=\"var(--icon-stroke)\"\n />\n </svg>\n </div>\n);\n","import { IconName } from \"@deckai/icons\";\nimport React from \"react\";\nimport { cn } from \"../utils\";\nimport { Badge } from \"./Badge\";\nimport { Icon, IconProps } from \"./Icon\";\nimport { Pressable, PressableProps } from \"./Pressable\";\nimport { Tooltip } from \"./Tooltip\";\n\nexport type NavbarItemProps = {\n iconName: IconName;\n hasNotification?: boolean;\n tooltip?: React.ReactNode;\n disabled?: boolean;\n badge?: React.ReactNode;\n} & Pick<IconProps, \"color\" | \"title\"> &\n PressableProps;\n\nexport const NavbarItem = ({\n iconName,\n hasNotification,\n color,\n title,\n tooltip,\n disabled,\n badge,\n ...props\n}: NavbarItemProps) => {\n const content = (\n <Pressable\n disabled={disabled}\n className={cn(\"relative lg:px-7 md:px-5 py-3\")}\n {...props}\n >\n <Icon name={iconName} color={color} title={title} />\n {hasNotification && (\n <div className=\"w-3 h-3 bg-red-500 rounded-full absolute top-3 right-5\" />\n )}\n {badge && <Badge>{badge}</Badge>}\n </Pressable>\n );\n return tooltip ? <Tooltip content={tooltip}>{content}</Tooltip> : content;\n};\n","import React from \"react\";\nimport { Avatar } from \"./Avatar\";\nimport { Combobox } from \"./Combobox\";\nimport { Dropdown } from \"./Dropdown\";\nimport { Icon } from \"./Icon\";\nimport { Logo } from \"./Logo\";\nimport { NavbarItem, NavbarItemProps } from \"./NavbarItem\";\nimport { OptionProps } from \"./Option\";\nimport { Pressable } from \"./Pressable\";\n\nexport type NavbarProps = {\n searchOptions?: OptionProps[];\n onSearchChange?: (value: string) => void;\n navbarItems?: NavbarItemProps[];\n onLogoClick?: () => void;\n /** Profile menu items */\n profileMenuItems?: OptionProps[];\n /** Callback when a profile menu item is selected */\n onProfileMenuSelect?: (value: string) => void;\n avatarImage?: string;\n};\n\nexport const Navbar = ({\n searchOptions,\n onSearchChange,\n navbarItems,\n onLogoClick,\n profileMenuItems,\n onProfileMenuSelect,\n avatarImage\n}: NavbarProps) => (\n <div className=\"flex py-6 lg:px-10 md:px-5 px-6 justify-between md:gap-6 gap-3 sm:relative sticky top-0\">\n <div className=\"flex flex-1 md:gap-6 gap-3 items-center\">\n <Pressable onClick={onLogoClick} title=\"Deck AI\">\n <Logo />\n </Pressable>\n {searchOptions && onSearchChange && (\n <Combobox\n options={searchOptions}\n placeholder=\"Search for a creator, type of content, or platform...\"\n end={<Icon name=\"search-normal\" size={[\"lg:24\", 18]} />}\n onChange={onSearchChange}\n className=\"flex-1 max-w-lg\"\n />\n )}\n </div>\n <div className=\"flex gap-4\">\n <div className=\"md:flex hidden gap-2 border-b-2 border-stroke items-center\">\n {navbarItems?.map(({ iconName, title, onClick, disabled, tooltip }) => (\n <NavbarItem\n key={title}\n iconName={iconName}\n title={title}\n onClick={onClick}\n disabled={disabled}\n tooltip={tooltip}\n />\n ))}\n </div>\n <div className=\"flex\">\n {profileMenuItems && onProfileMenuSelect ? (\n <Dropdown\n items={profileMenuItems}\n onSelect={onProfileMenuSelect}\n trigger={\n <Pressable>\n <Avatar src={avatarImage} size={[\"sm:48\", 40]} />\n </Pressable>\n }\n />\n ) : (\n <Pressable>\n <Avatar src={avatarImage} size={[\"sm:48\", 40]} />\n </Pressable>\n )}\n </div>\n </div>\n </div>\n);\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/index.ts","../../src/components/Fallback.tsx","../../src/components/Pressable.tsx","../../src/utils/tailwind.ts","../../src/utils/responsive.ts","../../src/components/Avatar.tsx","../../src/components/Icon.tsx","../../src/components/Text.tsx","../../src/components/Accordion.tsx","../../src/components/Input.tsx","../../src/components/AutocompleteInput.tsx","../../src/components/Badge.tsx","../../src/components/Tooltip.tsx","../../src/components/Option.tsx","../../src/components/Combobox.tsx","../../src/components/Dropdown.tsx","../../src/components/Logo.tsx","../../src/components/NavbarItem.tsx","../../src/components/Navbar.tsx"],"names":["cn","inputs","twMerge","clsx","sizeMap","widthMap","avatarSizeMap","Fallback","React","variant","size","lines","className","animate","ref","baseClasses","animationClasses","customStyle","renderContent","_","index","focusRingStyles","focusRingStylesCoerced","Pressable","children","type","disabled","props","BASE_SIZES","RESPONSIVE_SIZES","getSizeKey","getResponsiveSize","baseSize","classes","styles","key","baseKey","responsiveClasses","s","breakpoint","valueStr","value","valueKey","Avatar","src","onClick","alt","fallback","isLoading","responsiveSizeClasses","responsiveSizeStyles","content","COLOR_MAP","Icon","name","color","title","style","IconComponent","IconMap","HEADING_ELEMENT_MAP","getElementFromVariant","category","fontWeight","processVariants","variants","typographyClass","Text","as","weight","typographyClasses","colorClasses","suggestedElement","baseVariant","Accordion","S","items","defaultValue","onValueChange","contentClassName","triggerClassName","item","Input","w","end","iconName","label","labelClassName","id","forceShowFocusRing","error","errorMessage","helperText","showCharacterCount","maxLength","onChange","currentValue","setCurrentValue","handleChange","e","newValue","characterCount","showCount","AutocompleteInput","forwardRef","suggestion","onKeyDown","ariaControls","ariaActiveDescendant","ariaAutocomplete","stringToVariant","str","variantKeys","hash","acc","char","Badge","Q","finalVariant","Tooltip","side","align","delayDuration","defaultOpen","controlledOpen","onOpenChange","longPressDuration","isOpen","setIsOpen","useState","longPressTimer","open","handleOpenChange","useCallback","newOpen","handleTouchStart","handleTouchEnd","z","HighlightedText","text","highlight","parts","part","i","Option","onMouseEnter","onMouseLeave","selected","role","ariaSelected","searchValue","tooltip","badge","Combobox","options","placeholder","onSelected","container","autocomplete","loading","noOptionsMessage","setOpen","selectedValue","setSelectedValue","searchText","setSearchText","highlightedIndex","setHighlightedIndex","listRef","useRef","inputRef","isGrouped","useMemo","flatOptions","group","visibleOptions","option","filteredGroups","selectedOption","opt","displayText","setDefaultSearchText","useEffect","handleOptionSelected","optionValue","handleKeyDown","event","prev","matchingOption","handleOptionKeyDown","input","length","highlightedOption","getSelectedOption","groupIndex","optionIndex","isSelected","Dropdown","I","trigger","onSelect","handleSelect","Logo","NavbarItem","hasNotification","Navbar","searchOptions","onSearchChange","navbarItems","onLogoClick","profileMenuItems","onProfileMenuSelect","avatarImage"],"mappings":"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","file":"Navbar.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\";\n\nimport { cn } from \"../utils\";\n\nexport type FallbackVariant = \"text\" | \"image\" | \"button\" | \"card\" | \"avatar\";\nexport type FallbackSize = \"sm\" | \"md\" | \"lg\" | number;\n\nexport type FallbackProps = {\n /**\n * The type of content being loaded\n */\n variant?: FallbackVariant;\n /**\n * The size of the fallback element\n * Can be a predefined size ('sm' | 'md' | 'lg') or a custom pixel value\n */\n size?: FallbackSize;\n /**\n * Whether to show multiple lines (only applies to text variant)\n */\n lines?: number;\n /**\n * Additional classes to apply to the fallback\n */\n className?: string;\n /**\n * Whether to show the loading animation\n */\n animate?: boolean;\n};\n\n// Updated to match existing component sizes\nconst sizeMap = {\n sm: \"h-4\", // 16px\n md: \"h-6\", // 24px\n lg: \"h-8\" // 32px\n};\n\n// Updated to match existing component sizes\nconst widthMap = {\n sm: \"w-20\", // 80px\n md: \"w-32\", // 128px\n lg: \"w-48\" // 192px\n};\n\n// Updated to match Avatar sizes\nconst avatarSizeMap = {\n sm: \"w-8 h-8\", // 32px\n md: \"w-12 h-12\", // 48px\n lg: \"w-16 h-16\" // 64px\n};\n\nexport const Fallback = React.forwardRef<HTMLDivElement, FallbackProps>(\n (\n { variant = \"text\", size = \"md\", lines = 1, className, animate = true },\n ref\n ) => {\n const baseClasses = \"bg-secondary-50 rounded-lg overflow-hidden\";\n const animationClasses = animate ? \"animate-pulse\" : \"\";\n\n const getCustomSizeStyle = (size: number) => ({\n height: `${size}px`,\n width:\n variant === \"avatar\" || variant === \"image\" ? `${size}px` : undefined\n });\n\n const customStyle =\n typeof size === \"number\" ? getCustomSizeStyle(size) : undefined;\n\n const renderContent = () => {\n switch (variant) {\n case \"text\":\n return (\n <div className=\"flex flex-col gap-2\">\n {Array.from({ length: lines }).map((_, index) => (\n <div\n key={index}\n style={customStyle}\n className={cn(\n baseClasses,\n animationClasses,\n typeof size === \"string\" ? sizeMap[size] : undefined,\n index === lines - 1 && lines > 1 ? \"w-3/4\" : \"w-full\",\n className\n )}\n />\n ))}\n </div>\n );\n\n case \"image\":\n return (\n <div\n style={customStyle}\n className={cn(\n baseClasses,\n animationClasses,\n (!customStyle || !className) &&\n \"aspect-square w-full max-w-[300px]\",\n className\n )}\n />\n );\n\n case \"button\":\n return (\n <div\n style={customStyle}\n className={cn(\n baseClasses,\n animationClasses,\n typeof size === \"string\" && [sizeMap[size], widthMap[size]],\n className\n )}\n />\n );\n\n case \"card\":\n return (\n <div\n className={cn(\n \"flex flex-col gap-4 p-6 border border-stroke rounded-xl\",\n className\n )}\n >\n <div\n className={cn(\n baseClasses,\n animationClasses,\n \"w-16 h-16 rounded-full\"\n )}\n />\n <div className=\"space-y-2\">\n <div\n className={cn(baseClasses, animationClasses, \"h-6 w-3/4\")}\n />\n <div\n className={cn(baseClasses, animationClasses, \"h-4 w-1/2\")}\n />\n </div>\n <div className=\"space-y-2\">\n <div\n className={cn(baseClasses, animationClasses, \"h-4 w-full\")}\n />\n <div\n className={cn(baseClasses, animationClasses, \"h-4 w-full\")}\n />\n <div\n className={cn(baseClasses, animationClasses, \"h-4 w-2/3\")}\n />\n </div>\n </div>\n );\n\n case \"avatar\":\n return (\n <div\n style={customStyle}\n className={cn(\n baseClasses,\n animationClasses,\n \"rounded-full\",\n {\n [avatarSizeMap.sm]: size === \"sm\",\n [avatarSizeMap.md]: size === \"md\",\n [avatarSizeMap.lg]: size === \"lg\"\n },\n className\n )}\n />\n );\n\n default:\n return null;\n }\n };\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)}>\n {renderContent()}\n </div>\n );\n }\n);\n\nFallback.displayName = \"Fallback\";\n","import type { ButtonHTMLAttributes } from \"react\";\nimport React from \"react\";\n\nimport { cn } from \"../utils\";\nimport { focusRingStyles } from \"../utils/tailwind\";\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 type { 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","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 React from \"react\";\n\nimport { cn } from \"../utils\";\nimport { Fallback } from \"./Fallback\";\nimport { Pressable } from \"./Pressable\";\nimport type { ResponsiveSize } from \"../utils/responsive\";\nimport { getResponsiveSize } from \"../utils/responsive\";\n\nexport type AvatarProps = {\n src?: string;\n size?: ResponsiveSize | ResponsiveSize[];\n alt?: string;\n className?: string;\n fallback?: React.ReactNode;\n isLoading?: boolean;\n} & Pick<React.ComponentProps<typeof Pressable>, \"onClick\">;\n\nexport function Avatar({\n src,\n size = 48,\n onClick,\n alt = \"avatar\",\n className,\n fallback,\n isLoading,\n ...props\n}: AvatarProps) {\n const { responsiveSizeClasses, responsiveSizeStyles } = getResponsiveSize(\n size,\n 48\n );\n\n if (isLoading) {\n return (\n <Fallback\n variant=\"avatar\"\n size={typeof size === \"number\" ? size : \"md\"}\n />\n );\n }\n\n const content = src ? (\n <img\n src={src}\n alt={alt}\n className={cn(\n \"rounded-full object-cover\",\n responsiveSizeClasses,\n className\n )}\n style={responsiveSizeStyles}\n {...props}\n />\n ) : (\n <div\n className={cn(\n \"rounded-full bg-secondary-50\",\n responsiveSizeClasses,\n className\n )}\n style={responsiveSizeStyles}\n >\n {fallback}\n </div>\n );\n\n return onClick ? (\n <Pressable onClick={onClick} {...props}>\n {content}\n </Pressable>\n ) : (\n content\n );\n}\n","import type { IconName } from \"@deckai/icons\";\nimport { IconMap } from \"@deckai/icons\";\nimport type { SVGProps } from \"react\";\nimport React from \"react\";\n\nimport type { IconColors } from \"../types/tailwind\";\nimport { cn } from \"../utils\";\nimport type { ResponsiveSize } from \"../utils/responsive\";\nimport { 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 React from \"react\";\n\nimport type { Typography } from \"../types/tailwind\";\nimport type { 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 * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport * as React from \"react\";\n\nimport { cn } from \"../utils\";\nimport { Icon } from \"./Icon\";\nimport { Text } from \"./Text\";\n\nexport type AccordionItem = {\n value: string;\n title: React.ReactNode;\n content: React.ReactNode;\n disabled?: boolean;\n};\n\nexport type AccordionProps = {\n /** Array of items to show in the accordion */\n items: AccordionItem[];\n /** Type of accordion (single item open or multiple) */\n type?:\n | AccordionPrimitive.AccordionSingleProps[\"type\"]\n | AccordionPrimitive.AccordionMultipleProps[\"type\"];\n /** Default value(s) to be expanded */\n defaultValue?:\n | AccordionPrimitive.AccordionSingleProps[\"defaultValue\"]\n | AccordionPrimitive.AccordionMultipleProps[\"defaultValue\"];\n /** Current value(s) for controlled component */\n value?:\n | AccordionPrimitive.AccordionSingleProps[\"value\"]\n | AccordionPrimitive.AccordionMultipleProps[\"value\"];\n /** Callback when value changes */\n onValueChange?:\n | AccordionPrimitive.AccordionSingleProps[\"onValueChange\"]\n | AccordionPrimitive.AccordionMultipleProps[\"onValueChange\"];\n /** Optional className for custom styling */\n className?: string;\n /** Optional className for content */\n contentClassName?: string;\n /** Optional className for trigger */\n triggerClassName?: string;\n};\n\nexport const Accordion = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Root>,\n AccordionProps\n>(\n (\n {\n items,\n type = \"single\",\n defaultValue,\n value,\n onValueChange,\n className,\n contentClassName,\n triggerClassName,\n ...props\n },\n ref\n ) => {\n return (\n // @ts-expect-error TODO: Fix this\n <AccordionPrimitive.Root\n ref={ref}\n type={type}\n defaultValue={defaultValue}\n value={value}\n onValueChange={onValueChange}\n className={cn(\"w-full gap-1 flex flex-col\", className)}\n {...props}\n >\n {items.map((item) => (\n <AccordionPrimitive.Item\n key={item.value}\n value={item.value}\n disabled={item.disabled}\n className=\"w-full\"\n >\n <AccordionPrimitive.Header>\n <AccordionPrimitive.Trigger\n className={cn(\n \"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\",\n \"disabled:cursor-not-allowed\",\n \"focus-visible:outline-none focus-visible:ring-2\",\n triggerClassName\n )}\n >\n <div className=\"flex items-center gap-3\">\n <Text\n variant=\"body-default-semibold\"\n className={item.disabled ? \"text-disabled\" : \"\"}\n >\n {item.title}\n </Text>\n </div>\n <Icon\n name=\"arrow-down\"\n size={18}\n aria-hidden\n color={item.disabled ? \"disabled\" : \"primary\"}\n className=\"transition-transform duration-200 data-[state=open]:rotate-180\"\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n <AccordionPrimitive.Content\n className={cn(\n \"overflow-hidden will-change-[height] data-[state=open]:animate-accordion-down data-[state=closed]:animate-accordion-up\",\n contentClassName\n )}\n >\n <div className=\"py-2 px-3\">{item.content}</div>\n </AccordionPrimitive.Content>\n </AccordionPrimitive.Item>\n ))}\n </AccordionPrimitive.Root>\n );\n }\n);\n\nAccordion.displayName = \"Accordion\";\n","import type { IconName } from \"@deckai/icons\";\nimport * as React from \"react\";\n\nimport { cn } from \"../utils\";\nimport { focusRingStylesCoerced } from \"../utils/tailwind\";\nimport type { IconProps } from \"./Icon\";\nimport { Icon } from \"./Icon\";\nimport { Text } from \"./Text\";\n\nexport type InputProps = {\n className?: string;\n end?: React.ReactNode;\n /** renders an icon in the end slot */\n iconName?: IconName;\n /** Label text for the input */\n label?: string;\n /** Additional classes for the label */\n labelClassName?: string;\n /** Forces the focus ring to show regardless of focus state */\n forceShowFocusRing?: boolean;\n /** Error state for the input */\n error?: boolean;\n /** Error message to display below the input */\n errorMessage?: string;\n /** Helper text displayed below the input */\n helperText?: string;\n /** Character count display */\n showCharacterCount?: boolean;\n /** Maximum number of characters */\n maxLength?: number;\n} & React.InputHTMLAttributes<HTMLInputElement> &\n Pick<IconProps, \"color\" | \"size\" | \"title\">;\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n end,\n iconName,\n color,\n size,\n title,\n label,\n labelClassName,\n id,\n children,\n forceShowFocusRing,\n error,\n errorMessage,\n helperText,\n showCharacterCount,\n maxLength,\n value,\n defaultValue,\n onChange,\n disabled,\n ...props\n },\n ref\n ) => {\n const [currentValue, setCurrentValue] = React.useState(\n value?.toString() || defaultValue?.toString() || \"\"\n );\n\n // Update internal value when prop changes\n React.useEffect(() => {\n if (value !== undefined) {\n setCurrentValue(value?.toString() || \"\");\n }\n }, [value]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setCurrentValue(newValue);\n onChange?.(e);\n };\n\n const characterCount = currentValue.length;\n const showCount = showCharacterCount || !!maxLength;\n\n return (\n <div className=\"gap-1 flex flex-col\">\n {label && (\n <Text\n variant=\"label-default\"\n htmlFor={id}\n as=\"label\"\n color={error ? \"danger\" : \"primary\"}\n className={cn(labelClassName)}\n >\n {label}\n </Text>\n )}\n <div\n className={cn(\n \"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\",\n !error && !forceShowFocusRing && \"border-secondary-50\",\n error && \"border-tertiary-10\",\n disabled && \"cursor-not-allowed opacity-50\",\n \"focus-within:ring-2 focus-within:ring-primary-100\",\n forceShowFocusRing && focusRingStylesCoerced\n )}\n >\n <div className=\"flex relative\">\n <input\n ref={ref}\n id={id}\n className={cn(\n \"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\",\n end && \"pr-10\",\n className\n )}\n value={currentValue}\n maxLength={maxLength}\n onChange={handleChange}\n aria-invalid={error}\n disabled={disabled}\n {...props}\n />\n {(end || iconName) && (\n <div className=\"absolute inset-y-0 right-0 flex items-center\">\n {iconName ? (\n <Icon\n name={iconName}\n color={error ? \"danger\" : \"secondary\"}\n size={size}\n title={title}\n />\n ) : (\n end\n )}\n </div>\n )}\n </div>\n {children}\n </div>\n <div className=\"flex justify-between gap-2\">\n {(error && errorMessage) || helperText ? (\n <Text\n variant=\"body-xxs\"\n color={error ? \"danger\" : \"secondary\"}\n className=\"mt-1\"\n >\n {error ? errorMessage : helperText}\n </Text>\n ) : null}\n {showCount && (\n <Text\n variant=\"body-xxs\"\n color={error ? \"danger\" : \"secondary\"}\n className=\"text-right mt-1\"\n >\n <Text variant=\"body-xxs\" as=\"span\" className=\"font-bold\">\n {characterCount}\n </Text>\n {maxLength && `/${maxLength}`} characters\n </Text>\n )}\n </div>\n </div>\n );\n }\n);\n","import type { KeyboardEvent } from \"react\";\nimport React, { forwardRef } from \"react\";\n\nimport { cn } from \"../utils\";\nimport { Input } from \"./Input\";\nimport type { InputProps } from \"./Input\";\n\nexport type AutocompleteInputProps = {\n value: string | undefined;\n suggestion: string;\n onChange: (value: string) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;\n \"aria-controls\"?: string;\n \"aria-activedescendant\"?: string;\n \"aria-autocomplete\"?: \"none\" | \"inline\" | \"list\" | \"both\";\n} & Omit<InputProps, \"value\" | \"onChange\" | \"onKeyDown\">;\n\nexport const AutocompleteInput = forwardRef<\n HTMLInputElement,\n AutocompleteInputProps\n>(\n (\n {\n value,\n suggestion,\n onChange,\n onKeyDown,\n className,\n \"aria-controls\": ariaControls,\n \"aria-activedescendant\": ariaActiveDescendant,\n \"aria-autocomplete\": ariaAutocomplete,\n ...props\n },\n ref\n ) => {\n return (\n <div className=\"relative w-full\">\n <Input\n ref={ref}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={onKeyDown}\n className={cn(\"bg-transparent\", className)}\n aria-controls={ariaControls}\n aria-activedescendant={ariaActiveDescendant}\n aria-autocomplete={ariaAutocomplete}\n {...props}\n />\n {suggestion && value && (\n <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\">\n {value}\n {suggestion.slice(value.length)}\n </div>\n )}\n </div>\n );\n }\n);\n\nAutocompleteInput.displayName = \"AutocompleteInput\";\n","import type { IconName } from \"@deckai/icons\";\nimport * as React from \"react\";\n\nimport { cn } from \"../utils\";\nimport { Icon } from \"./Icon\";\nimport { Text } from \"./Text\";\n\nexport type BadgeProps = {\n variant?: \"pink\" | \"orange\" | \"green\" | \"purple\";\n iconName?: IconName;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\nconst variants = {\n pink: \"bg-tertiary-5\",\n orange: \"bg-tertiary-15\",\n green: \"bg-tertiary-25\",\n purple: \"bg-secondary-300\"\n};\n\nconst stringToVariant = (str: string): keyof typeof variants => {\n const variantKeys = Object.keys(variants) as Array<keyof typeof variants>;\n // Let's log some values to understand what's happening\n const hash = str\n .split(\"\")\n .reduce((acc, char) => char.charCodeAt(0) + ((acc << 5) - acc), 0);\n\n const index = Math.abs(hash) % variantKeys.length;\n const selectedVariant = variantKeys[index];\n\n return selectedVariant;\n};\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, iconName, children, ...props }, ref) => {\n const finalVariant =\n variant ||\n (typeof children === \"string\" ? stringToVariant(children) : \"pink\");\n return (\n <span\n ref={ref}\n className={cn(\n \"inline-flex items-center gap-2\",\n \"rounded px-2 py-1.5\",\n \"text-sm font-medium\",\n variants[finalVariant],\n className\n )}\n {...props}\n >\n {iconName && <Icon size={16} name={iconName} />}\n <Text variant=\"body-xxs-semibold\" className=\"mt-0.5\">\n {children}\n </Text>\n </span>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n","import * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport * as React from \"react\";\nimport { useCallback, useState } from \"react\";\n\nimport { cn } from \"../utils\";\nimport { Text } from \"./Text\";\nexport interface TooltipProps {\n content: React.ReactNode;\n children: React.ReactNode;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n align?: \"start\" | \"center\" | \"end\";\n className?: string;\n delayDuration?: number;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Duration in ms for long press on mobile devices */\n longPressDuration?: number;\n}\n\nexport function Tooltip({\n content,\n children,\n side = \"bottom\",\n align = \"center\",\n className,\n delayDuration = 200,\n defaultOpen,\n open: controlledOpen,\n onOpenChange,\n longPressDuration = 500\n}: TooltipProps) {\n const [isOpen, setIsOpen] = useState(defaultOpen || false);\n let longPressTimer: Timer | null = null;\n\n const open = controlledOpen ?? isOpen;\n const handleOpenChange = useCallback(\n (newOpen: boolean) => {\n if (!controlledOpen) {\n setIsOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n },\n [controlledOpen, onOpenChange]\n );\n\n const handleTouchStart = useCallback(() => {\n const timer = setTimeout(() => {\n handleOpenChange(true);\n }, longPressDuration);\n longPressTimer = timer;\n }, [handleOpenChange, longPressDuration]);\n\n const handleTouchEnd = useCallback(() => {\n if (longPressTimer) {\n clearTimeout(longPressTimer);\n longPressTimer = null;\n }\n // Keep tooltip open for a brief moment after touch\n setTimeout(() => handleOpenChange(false), 1500);\n }, [longPressTimer, handleOpenChange]);\n\n return (\n <TooltipPrimitive.Provider delayDuration={delayDuration}>\n <TooltipPrimitive.Root open={open} onOpenChange={handleOpenChange}>\n <TooltipPrimitive.Trigger asChild>\n <span\n tabIndex={0}\n onTouchStart={handleTouchStart}\n onTouchEnd={handleTouchEnd}\n onTouchCancel={handleTouchEnd}\n >\n {children}\n </span>\n </TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n align={align}\n sideOffset={4}\n className={cn(\n \"z-50 overflow-hidden rounded-lg\",\n \"bg-primary px-3 py-1.5\",\n \"text-xs text-white\",\n \"animate-in fade-in-0 zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n \"select-none\",\n \"max-w-60\",\n \"touch-none\", // Prevent touch events from interfering with scrolling\n className\n )}\n >\n {typeof content === \"string\" ? (\n <Text variant=\"body-default-medium\" color=\"white\">\n {content}\n </Text>\n ) : (\n content\n )}\n <TooltipPrimitive.Arrow\n className=\"fill-text-primary\"\n width={10}\n height={5}\n />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n );\n}\n","import type { KeyboardEvent } from \"react\";\nimport React from \"react\";\n\nimport { cn } from \"../utils\";\nimport { Badge } from \"./Badge\";\nimport { Text } from \"./Text\";\nimport { Tooltip } from \"./Tooltip\";\n\nexport type OptionProps = {\n label: React.ReactNode;\n value: string;\n /** Optional color override for specific items like \"Logout\" in red */\n color?: \"default\" | \"danger\";\n /** Optional disabled state */\n disabled?: boolean;\n onChange?: (value: string) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLButtonElement>) => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n selected?: boolean;\n className?: string;\n /** ID for accessibility */\n id?: string;\n /** ARIA role */\n role?: string;\n /** ARIA selected state */\n \"aria-selected\"?: boolean;\n /** Current search value for highlighting matches */\n searchValue?: string;\n /** Optional tooltip content */\n tooltip?: React.ReactNode;\n onClick?: () => void;\n badge?: React.ReactNode;\n};\n\nfunction HighlightedText({\n text,\n highlight\n}: {\n text: string;\n highlight: string;\n}) {\n if (!highlight) return <>{text}</>;\n\n const parts = text.split(new RegExp(`(${highlight})`, \"i\"));\n return (\n <>\n {parts.map((part, i) =>\n part.toLowerCase() === highlight.toLowerCase() ? (\n <span key={i} className=\"font-bold\">\n {part}\n </span>\n ) : (\n part\n )\n )}\n </>\n );\n}\n\nexport const Option = React.forwardRef<HTMLButtonElement, OptionProps>(\n (\n {\n value,\n label,\n onChange,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n selected,\n color,\n disabled,\n className,\n id,\n role,\n \"aria-selected\": ariaSelected,\n searchValue = \"\",\n tooltip,\n onClick,\n badge\n },\n ref\n ) => {\n const content = (\n <button\n ref={ref}\n type=\"button\"\n id={id}\n role={role}\n aria-selected={ariaSelected}\n disabled={disabled}\n className={cn(\n \"relative w-full text-left px-2 py-1.5 text-sm rounded outline-none\",\n \"cursor-pointer hover:bg-gray-100\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n selected && \"bg-gray-100\",\n \"flex items-center gap-2\",\n className\n )}\n onClick={() => {\n onChange?.(value);\n onClick?.();\n }}\n onKeyDown={onKeyDown}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <Text\n variant=\"body-default-medium\"\n color={color === \"danger\" ? \"danger\" : \"inherit\"}\n >\n {typeof label === \"string\" ? (\n <HighlightedText text={label} highlight={searchValue} />\n ) : (\n label\n )}\n </Text>\n {badge && <Badge>{badge}</Badge>}\n </button>\n );\n return tooltip ? <Tooltip content={tooltip}>{content}</Tooltip> : content;\n }\n);\n","import * as Popover from \"@radix-ui/react-popover\";\nimport type { KeyboardEvent } from \"react\";\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState\n} from \"react\";\n\nimport { cn } from \"../utils\";\nimport { Accordion } from \"./Accordion\";\nimport { AutocompleteInput } from \"./AutocompleteInput\";\nimport { Input } from \"./Input\";\nimport type { OptionProps } from \"./Option\";\nimport { Option } from \"./Option\";\n\nexport type OptionGroup = {\n label: string;\n options: OptionProps[];\n};\n\nexport type ComboboxProps = {\n /** Options can be either a flat array or grouped */\n options: OptionProps[] | OptionGroup[];\n placeholder?: string;\n value?: string;\n /** Callback on keyboard input, used for auto complete */\n onChange?: (value: string) => void;\n /** Callback when an option is selected from the combobox */\n onSelected: (value: string) => void;\n end?: React.ReactNode;\n className?: string;\n /** Label text for the combobox */\n label?: string;\n /** Additional classes for the label */\n labelClassName?: string;\n /** ID for accessibility */\n id?: string;\n /** Whether the combobox is disabled */\n disabled?: boolean;\n /** Optional container for the portal */\n container?: HTMLElement | null;\n autocomplete?: boolean;\n /** Loading state for async options */\n loading?: boolean;\n /** Error state for async options */\n error?: boolean;\n /** Error message to display */\n errorMessage?: string;\n /** Message to show when no options are available */\n noOptionsMessage?: string;\n};\n\nexport function Combobox({\n options,\n placeholder = \"Select an item...\",\n value,\n onChange,\n onSelected,\n end,\n className,\n label,\n labelClassName,\n id,\n disabled,\n container,\n autocomplete = false,\n loading = false,\n error = false,\n errorMessage,\n noOptionsMessage\n}: ComboboxProps) {\n const [open, setOpen] = useState(false);\n const [selectedValue, setSelectedValue] = useState<string | undefined>(value);\n const [searchText, setSearchText] = useState(\"\");\n\n const [highlightedIndex, setHighlightedIndex] = useState<number>(-1);\n const listRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const isGrouped = useMemo(\n () => options.length > 0 && \"options\" in options[0],\n [options]\n );\n\n const flatOptions = useMemo(() => {\n if (!options.length) return [];\n if (!isGrouped) return options as OptionProps[];\n return (options as OptionGroup[]).reduce<OptionProps[]>(\n (acc, group) => [...acc, ...group.options],\n []\n );\n }, [isGrouped, options]);\n\n const visibleOptions = useMemo(() => {\n return flatOptions.filter((option) =>\n searchText && typeof option.label === \"string\"\n ? option.label.toLowerCase().includes(searchText.toLowerCase())\n : true\n );\n }, [flatOptions, searchText]);\n\n const filteredGroups = useMemo(() => {\n if (!isGrouped) {\n return visibleOptions.length > 0\n ? [{ label: \"\", options: visibleOptions }]\n : [];\n }\n\n return (options as OptionGroup[])\n .map((group) => ({\n ...group,\n options: group.options.filter((option) =>\n searchText && typeof option.label === \"string\"\n ? option.label.toLowerCase().includes(searchText.toLowerCase())\n : true\n )\n }))\n .filter((group) => group.options.length > 0);\n }, [isGrouped, options, searchText, visibleOptions]);\n\n const selectedOption = useMemo(\n () => flatOptions.find((opt) => opt.value === selectedValue),\n [selectedValue, flatOptions]\n );\n\n const displayText = useMemo(() => {\n if (open && searchText) return searchText;\n if (selectedOption) return selectedOption.label?.toString() || \"\";\n return selectedValue || \"\";\n }, [open, searchText, selectedOption]);\n\n const setDefaultSearchText = useCallback(() => {\n setSearchText(selectedOption?.label?.toString() || \"\");\n }, [selectedOption]);\n\n useEffect(() => {\n setDefaultSearchText();\n }, [selectedOption]);\n\n const suggestion = useMemo(() => {\n if (!autocomplete || !searchText || !open) return \"\";\n const matchingOption = visibleOptions.find(\n (opt) =>\n typeof opt.label === \"string\" &&\n opt.label.toLowerCase().startsWith(searchText.toLowerCase()) &&\n opt.label.toLowerCase() !== searchText.toLowerCase()\n );\n return matchingOption?.label?.toString() || \"\";\n }, [autocomplete, searchText, visibleOptions, open]);\n\n const handleOptionSelected = useCallback(\n (optionValue: string) => {\n setSelectedValue(optionValue);\n onChange?.(displayText);\n setSearchText(\"\");\n setOpen(false);\n\n onSelected(optionValue);\n setHighlightedIndex(-1);\n },\n [onSelected]\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n if (event.altKey) {\n setOpen(true);\n } else {\n if (!open) {\n setOpen(true);\n setHighlightedIndex(0);\n } else {\n setHighlightedIndex((prev) =>\n prev < visibleOptions.length - 1 ? prev + 1 : 0\n );\n }\n }\n break;\n\n case \"ArrowUp\":\n event.preventDefault();\n if (event.altKey) {\n setOpen(false);\n } else {\n if (!open) {\n setOpen(true);\n setHighlightedIndex(visibleOptions.length - 1);\n } else {\n setHighlightedIndex((prev) =>\n prev > 0 ? prev - 1 : visibleOptions.length - 1\n );\n }\n }\n break;\n\n case \"PageUp\":\n event.preventDefault();\n if (open) {\n setHighlightedIndex((prev) => Math.max(0, prev - 10));\n }\n break;\n\n case \"PageDown\":\n event.preventDefault();\n if (open) {\n setHighlightedIndex((prev) =>\n Math.min(visibleOptions.length - 1, prev + 10)\n );\n }\n break;\n\n case \"Home\":\n if (event.shiftKey) {\n break;\n }\n event.preventDefault();\n if (open) {\n setHighlightedIndex(0);\n }\n break;\n\n case \"End\":\n if (event.shiftKey) {\n break;\n }\n event.preventDefault();\n if (open) {\n setHighlightedIndex(visibleOptions.length - 1);\n }\n break;\n\n case \"Enter\":\n event.preventDefault();\n if (highlightedIndex >= 0 && visibleOptions[highlightedIndex]) {\n handleOptionSelected(visibleOptions[highlightedIndex].value);\n } else if (autocomplete && suggestion && searchText) {\n const matchingOption = visibleOptions.find(\n (opt) =>\n typeof opt.label === \"string\" &&\n opt.label.toLowerCase().startsWith(searchText.toLowerCase())\n );\n if (matchingOption) {\n handleOptionSelected(matchingOption.value);\n }\n }\n break;\n\n case \"Tab\":\n if (!open) {\n event.preventDefault();\n setOpen(true);\n setHighlightedIndex(0);\n } else if (\n highlightedIndex >= 0 &&\n visibleOptions[highlightedIndex]\n ) {\n event.preventDefault();\n handleOptionSelected(visibleOptions[highlightedIndex].value);\n }\n break;\n\n case \"Escape\":\n event.preventDefault();\n setOpen(false);\n setDefaultSearchText();\n break;\n }\n },\n [\n open,\n highlightedIndex,\n visibleOptions,\n suggestion,\n searchText,\n handleOptionSelected,\n autocomplete\n ]\n );\n\n const handleOptionKeyDown = useCallback(\n (event: KeyboardEvent<HTMLButtonElement>) => {\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n setHighlightedIndex((prev) =>\n prev < visibleOptions.length - 1 ? prev + 1 : 0\n );\n break;\n\n case \"ArrowUp\":\n event.preventDefault();\n setHighlightedIndex((prev) =>\n prev > 0 ? prev - 1 : visibleOptions.length - 1\n );\n break;\n\n case \"Enter\":\n case \"Tab\":\n event.preventDefault();\n if (highlightedIndex >= 0 && visibleOptions[highlightedIndex]) {\n handleOptionSelected(visibleOptions[highlightedIndex].value);\n }\n break;\n\n case \"Escape\":\n event.preventDefault();\n setOpen(false);\n setDefaultSearchText();\n inputRef.current?.focus();\n break;\n }\n },\n [highlightedIndex, visibleOptions, handleOptionSelected]\n );\n\n // Keep input focused when dropdown is open\n useEffect(() => {\n if (open) {\n const input = inputRef.current;\n if (input) {\n input.focus({ preventScroll: true });\n // Move cursor to end of text\n const length = input.value.length;\n input.setSelectionRange(length, length);\n }\n }\n }, [open]);\n\n // Reset highlighted index when dropdown closes\n useEffect(() => {\n if (!open) {\n setHighlightedIndex(-1);\n }\n }, [open]);\n\n // Scroll highlighted option into view\n useEffect(() => {\n if (open && highlightedIndex >= 0 && listRef.current) {\n const highlightedOption = listRef.current.querySelector(\n `[id=\"${id}-option-${highlightedIndex}\"]`\n ) as HTMLElement;\n\n if (highlightedOption) {\n highlightedOption.scrollIntoView({\n block: \"nearest\",\n behavior: \"smooth\"\n });\n }\n }\n }, [highlightedIndex, open, id]);\n\n const getSelectedOption = useCallback(\n (option: OptionProps) => {\n if (!open) return value === option.value;\n\n const index = visibleOptions.findIndex(\n (opt) => opt.value === option.value\n );\n\n // If using keyboard navigation, show that highlight\n if (highlightedIndex >= 0) {\n return index === highlightedIndex;\n }\n\n // If no option is highlighted, highlight the first one\n if (highlightedIndex === -1) {\n return index === 0;\n }\n\n return false;\n },\n [open, selectedValue, highlightedIndex, visibleOptions]\n );\n\n // Set initial highlight when opening dropdown\n useEffect(() => {\n if (open && highlightedIndex === -1) {\n setHighlightedIndex(0);\n }\n }, [open, highlightedIndex]);\n\n return (\n <Popover.Root\n open={open && !disabled}\n onOpenChange={(isOpen) => {\n if (!disabled) {\n setOpen(isOpen);\n if (!isOpen) {\n setDefaultSearchText();\n setHighlightedIndex(-1);\n } else {\n const input = inputRef.current;\n if (input) {\n input.focus({ preventScroll: true });\n const length = input.value.length;\n input.setSelectionRange(length, length);\n }\n }\n }\n }}\n >\n <div\n className={`relative w-full font-sans text-secondary ${className}`}\n role=\"combobox\"\n aria-expanded={open}\n aria-haspopup=\"listbox\"\n aria-controls={`${id}-listbox`}\n >\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n className=\"w-full text-left\"\n disabled={disabled}\n >\n {autocomplete ? (\n <AutocompleteInput\n ref={inputRef}\n id={id}\n label={label}\n labelClassName={labelClassName}\n placeholder={placeholder}\n value={displayText}\n suggestion={suggestion}\n onChange={(value) => {\n setSearchText(value);\n onChange?.(value);\n if (!open) {\n setOpen(true);\n }\n }}\n onKeyDown={handleKeyDown}\n end={end}\n className={cn(\"flex-1\", className)}\n forceShowFocusRing={open}\n disabled={disabled}\n aria-autocomplete=\"list\"\n aria-controls={`${id}-listbox`}\n aria-activedescendant={\n highlightedIndex >= 0\n ? `${id}-option-${highlightedIndex}`\n : undefined\n }\n />\n ) : (\n <Input\n ref={inputRef}\n id={id}\n label={label}\n labelClassName={labelClassName}\n placeholder={placeholder}\n value={displayText}\n onChange={(e) => {\n setSearchText(e.target.value);\n onChange?.(e.target.value);\n if (!open) {\n setOpen(true);\n }\n }}\n onKeyDown={handleKeyDown}\n end={end}\n className={cn(\"flex-1\", className)}\n forceShowFocusRing={open}\n disabled={disabled}\n aria-controls={`${id}-listbox`}\n aria-activedescendant={\n highlightedIndex >= 0\n ? `${id}-option-${highlightedIndex}`\n : undefined\n }\n />\n )}\n </button>\n </Popover.Trigger>\n\n <Popover.Portal container={container}>\n <Popover.Content\n 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\"\n side=\"bottom\"\n align=\"start\"\n sideOffset={4}\n onOpenAutoFocus={(e) => e.preventDefault()}\n onCloseAutoFocus={(e) => e.preventDefault()}\n onFocusOutside={(e) => e.preventDefault()}\n onInteractOutside={(e) => {\n e.preventDefault();\n setOpen(false);\n setDefaultSearchText();\n setHighlightedIndex(-1);\n }}\n >\n <div\n ref={listRef}\n className=\"max-h-60 overflow-y-auto flex flex-col items-start outline-none\"\n role=\"listbox\"\n id={`${id}-listbox`}\n aria-label={label}\n aria-busy={loading}\n >\n {error ? (\n <div className=\"px-2 py-1.5 text-sm text-red-500\">\n {errorMessage || \"Failed to load options\"}\n </div>\n ) : loading ? (\n <div className=\"px-2 py-1.5 text-sm text-gray-500\">\n Loading...\n </div>\n ) : visibleOptions.length > 0 && isGrouped ? (\n <Accordion\n type=\"multiple\"\n className=\"gap-0\"\n defaultValue={filteredGroups.map((group) => group.label)}\n items={filteredGroups.map((group, groupIndex) => ({\n title: group.label,\n value: group.label,\n content: (\n <div>\n {group.options.map((option, optionIndex) => {\n const isSelected = getSelectedOption(option);\n return (\n <Option\n key={`${groupIndex}-${optionIndex}`}\n onChange={handleOptionSelected}\n onKeyDown={handleOptionKeyDown}\n value={option.value}\n label={option.label}\n className={cn(\"pl-4\")}\n selected={isSelected}\n id={`${id}-option-${optionIndex}`}\n role=\"option\"\n aria-selected={isSelected}\n searchValue={searchText}\n />\n );\n })}\n </div>\n )\n }))}\n />\n ) : visibleOptions.length > 0 && !isGrouped ? (\n options.map((option, optionIndex) => {\n // @ts-expect-error TODO: Fix this\n const isSelected = getSelectedOption(option);\n return (\n <Option\n key={optionIndex}\n onChange={handleOptionSelected}\n onKeyDown={handleOptionKeyDown}\n // @ts-expect-error TODO: Fix this\n value={option.value}\n label={option.label}\n className={cn(\"pl-4\")}\n selected={isSelected}\n id={`${id}-option-${optionIndex}`}\n role=\"option\"\n aria-selected={isSelected}\n searchValue={searchText}\n />\n );\n })\n ) : (\n <div className=\"px-2 py-1.5 text-sm text-gray-500\">\n {noOptionsMessage || \"No results found\"}\n </div>\n )}\n </div>\n </Popover.Content>\n </Popover.Portal>\n </div>\n </Popover.Root>\n );\n}\n","import * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport * as React from \"react\";\n\nimport { cn } from \"../utils\";\nimport { Option, type OptionProps } from \"./Option\";\n\nexport type DropdownProps = {\n /** The trigger element that opens the dropdown */\n trigger: React.ReactNode;\n /** Array of items to show in the dropdown */\n items: Omit<OptionProps, \"onChange\" | \"selected\">[];\n /** Optional className for the content */\n className?: string;\n /** Callback when an item is selected */\n onSelect?: (value: string) => void;\n /** Optional side alignment */\n align?: \"start\" | \"center\" | \"end\";\n};\n\nexport const Dropdown = React.forwardRef<HTMLDivElement, DropdownProps>(\n ({ trigger, items, className, onSelect, align = \"end\" }, ref) => {\n const handleSelect = React.useCallback(\n (value: string) => {\n onSelect?.(value);\n },\n [onSelect]\n );\n\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>{trigger}</DropdownMenu.Trigger>\n\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n ref={ref}\n align={align}\n sideOffset={4}\n className={cn(\n \"z-50 min-w-[220px]\",\n \"bg-background-0 rounded-lg p-1\",\n \"shadow-lg border border-gray-100\",\n \"animate-in fade-in-0 zoom-in-95\",\n className\n )}\n >\n {items.map((item) => (\n <DropdownMenu.Item\n key={item.value}\n disabled={item.disabled}\n onSelect={() => handleSelect(item.value)}\n className=\"outline-none\"\n asChild\n >\n <Option\n {...item}\n className=\"py-3 px-6\"\n onChange={handleSelect}\n />\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n }\n);\n\nDropdown.displayName = \"Dropdown\";\n","import React from \"react\";\n\nimport { cn } from \"../utils\";\n\nexport type LogoProps = {\n className?: string;\n};\n\nexport function Logo({ className }: LogoProps) {\n return (\n <div className={cn(\"lg:w-[76px] lg:h-[25px] w-[58px] h-[19px]\", className)}>\n <svg\n width=\"100%\"\n height=\"100%\"\n viewBox=\"0 0 76 25\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0.8 15.584C0.8 13.9413 1.12 12.4693 1.76 11.168C2.4 9.84533 3.27467 8.8 4.384 8.032C5.49333 7.264 6.77333 6.88 8.224 6.88C9.39733 6.88 10.464 7.168 11.424 7.744C12.384 8.29867 13.1093 9.03467 13.6 9.952V0.639999H18.72V18.304C18.72 18.816 18.8053 19.1787 18.976 19.392C19.1467 19.584 19.424 19.7013 19.808 19.744V24C18.912 24.1707 18.1867 24.256 17.632 24.256C16.7573 24.256 16.0427 24.064 15.488 23.68C14.9547 23.296 14.624 22.7627 14.496 22.08L14.4 21.216C13.8027 22.2613 12.992 23.04 11.968 23.552C10.944 24.064 9.86667 24.32 8.736 24.32C7.584 24.32 6.51733 24.1067 5.536 23.68C4.576 23.232 3.73333 22.6133 3.008 21.824C2.304 21.0347 1.76 20.1067 1.376 19.04C0.992 17.9733 0.8 16.8213 0.8 15.584ZM13.632 17.664V14.144C13.4187 13.568 13.1093 13.0667 12.704 12.64C12.32 12.2133 11.872 11.872 11.36 11.616C10.8693 11.36 10.368 11.232 9.856 11.232C9.30133 11.232 8.78933 11.3493 8.32 11.584C7.872 11.8187 7.47733 12.1493 7.136 12.576C6.79467 12.9813 6.528 13.4507 6.336 13.984C6.16533 14.5173 6.08 15.0827 6.08 15.68C6.08 16.2987 6.176 16.8747 6.368 17.408C6.58133 17.92 6.86933 18.3787 7.232 18.784C7.59467 19.168 8.02133 19.4667 8.512 19.68C9.00267 19.8933 9.536 20 10.112 20C10.4747 20 10.8267 19.9467 11.168 19.84C11.5093 19.712 11.8293 19.552 12.128 19.36C12.448 19.168 12.736 18.9227 12.992 18.624C13.248 18.3253 13.4613 18.0053 13.632 17.664ZM30.0895 24.32C28.6602 24.32 27.3908 24.096 26.2815 23.648C25.1722 23.1787 24.2228 22.5493 23.4335 21.76C22.6655 20.9707 22.0788 20.064 21.6735 19.04C21.2682 17.9947 21.0655 16.9067 21.0655 15.776C21.0655 14.1547 21.4175 12.6827 22.1215 11.36C22.8468 10.016 23.8815 8.93867 25.2255 8.128C26.5695 7.296 28.1908 6.88 30.0895 6.88C31.9882 6.88 33.5988 7.28533 34.9215 8.096C36.2655 8.90667 37.2895 9.97333 37.9935 11.296C38.6975 12.5973 39.0495 14.016 39.0495 15.552C39.0495 15.8507 39.0282 16.1493 38.9855 16.448C38.9642 16.7253 38.9428 16.9707 38.9215 17.184H26.5055C26.5695 17.9307 26.7722 18.56 27.1135 19.072C27.4762 19.584 27.9348 19.9787 28.4895 20.256C29.0442 20.512 29.6308 20.64 30.2495 20.64C31.0175 20.64 31.7322 20.4587 32.3935 20.096C33.0762 19.7333 33.5455 19.2427 33.8015 18.624L38.1535 19.84C37.7268 20.7147 37.1188 21.4933 36.3295 22.176C35.5615 22.8373 34.6442 23.36 33.5775 23.744C32.5322 24.128 31.3695 24.32 30.0895 24.32ZM26.3775 14.048H33.6735C33.5882 13.344 33.3855 12.736 33.0655 12.224C32.7455 11.6907 32.3188 11.2853 31.7855 11.008C31.2522 10.7093 30.6655 10.56 30.0255 10.56C29.3642 10.56 28.7668 10.7093 28.2335 11.008C27.7215 11.2853 27.3055 11.6907 26.9855 12.224C26.6655 12.736 26.4628 13.344 26.3775 14.048ZM48.762 24.32C47.3327 24.32 46.0633 24.0853 44.954 23.616C43.8447 23.1467 42.8953 22.5067 42.106 21.696C41.338 20.8853 40.7513 19.9573 40.346 18.912C39.9407 17.8667 39.738 16.7573 39.738 15.584C39.738 14.048 40.09 12.6187 40.794 11.296C41.5193 9.97333 42.554 8.90667 43.898 8.096C45.242 7.28533 46.8633 6.88 48.762 6.88C50.682 6.88 52.3033 7.296 53.626 8.128C54.97 8.93867 55.9727 10.0053 56.634 11.328L51.642 12.832C51.322 12.32 50.906 11.9253 50.394 11.648C49.9033 11.3707 49.3487 11.232 48.73 11.232C48.026 11.232 47.386 11.4133 46.81 11.776C46.2553 12.1387 45.8073 12.64 45.466 13.28C45.146 13.92 44.986 14.688 44.986 15.584C44.986 16.4587 45.1567 17.2267 45.498 17.888C45.8393 18.5493 46.2873 19.072 46.842 19.456C47.3967 19.8187 48.026 20 48.73 20C49.1567 20 49.5513 19.936 49.914 19.808C50.298 19.6587 50.6393 19.456 50.938 19.2C51.258 18.944 51.5033 18.656 51.674 18.336L56.666 19.872C56.2607 20.7253 55.674 21.4933 54.906 22.176C54.1593 22.8373 53.274 23.36 52.25 23.744C51.226 24.128 50.0633 24.32 48.762 24.32ZM69.636 24L65.252 17.28L63.46 19.104V24H58.34V0.639999H63.46V14.144L69.156 7.2H74.564L68.516 14.432L75.076 24H69.636Z\"\n fill=\"var(--icon-stroke)\"\n />\n </svg>\n </div>\n );\n}\n","import type { IconName } from \"@deckai/icons\";\nimport React from \"react\";\n\nimport { cn } from \"../utils\";\nimport { Badge } from \"./Badge\";\nimport type { IconProps } from \"./Icon\";\nimport { Icon } from \"./Icon\";\nimport type { PressableProps } from \"./Pressable\";\nimport { Pressable } from \"./Pressable\";\nimport { Tooltip } from \"./Tooltip\";\n\nexport type NavbarItemProps = {\n iconName: IconName;\n hasNotification?: boolean;\n tooltip?: React.ReactNode;\n disabled?: boolean;\n badge?: React.ReactNode;\n} & Pick<IconProps, \"color\" | \"title\"> &\n PressableProps;\n\nexport function NavbarItem({\n iconName,\n hasNotification,\n color,\n title,\n tooltip,\n disabled,\n badge,\n ...props\n}: NavbarItemProps) {\n const content = (\n <Pressable\n disabled={disabled}\n className={cn(\"relative lg:px-7 md:px-5 py-3\")}\n {...props}\n >\n <Icon name={iconName} color={color} title={title} />\n {hasNotification && (\n <div className=\"w-3 h-3 bg-red-500 rounded-full absolute top-3 right-5\" />\n )}\n {badge && <Badge>{badge}</Badge>}\n </Pressable>\n );\n return tooltip ? <Tooltip content={tooltip}>{content}</Tooltip> : content;\n}\n","import React from \"react\";\n\nimport { Avatar } from \"./Avatar\";\nimport { Combobox } from \"./Combobox\";\nimport { Dropdown } from \"./Dropdown\";\nimport { Icon } from \"./Icon\";\nimport { Logo } from \"./Logo\";\nimport type { NavbarItemProps } from \"./NavbarItem\";\nimport { NavbarItem } from \"./NavbarItem\";\nimport type { OptionProps } from \"./Option\";\nimport { Pressable } from \"./Pressable\";\n\nexport type NavbarProps = {\n searchOptions?: OptionProps[];\n onSearchChange?: (value: string) => void;\n navbarItems?: NavbarItemProps[];\n onLogoClick?: () => void;\n /** Profile menu items */\n profileMenuItems?: OptionProps[];\n /** Callback when a profile menu item is selected */\n onProfileMenuSelect?: (value: string) => void;\n avatarImage?: string;\n};\n\nexport function Navbar({\n searchOptions,\n onSearchChange,\n navbarItems,\n onLogoClick,\n profileMenuItems,\n onProfileMenuSelect,\n avatarImage\n}: NavbarProps) {\n return (\n <div className=\"flex py-6 lg:px-10 md:px-5 px-6 justify-between md:gap-6 gap-3 sm:relative sticky top-0\">\n <div className=\"flex flex-1 md:gap-6 gap-3 items-center\">\n <Pressable onClick={onLogoClick} title=\"Deck AI\">\n <Logo />\n </Pressable>\n {searchOptions && onSearchChange && (\n <Combobox\n options={searchOptions}\n placeholder=\"Search for a creator, type of content, or platform...\"\n end={<Icon name=\"search-normal\" size={[\"lg:24\", 18]} />}\n onSelected={onSearchChange}\n className=\"flex-1 max-w-lg\"\n />\n )}\n </div>\n <div className=\"flex gap-4\">\n <div className=\"md:flex hidden gap-2 border-b-2 border-stroke items-center\">\n {navbarItems?.map(\n ({ iconName, title, onClick, disabled, tooltip }) => (\n <NavbarItem\n key={title}\n iconName={iconName}\n title={title}\n onClick={onClick}\n disabled={disabled}\n tooltip={tooltip}\n />\n )\n )}\n </div>\n <div className=\"flex\">\n {profileMenuItems && onProfileMenuSelect ? (\n <Dropdown\n items={profileMenuItems}\n onSelect={onProfileMenuSelect}\n trigger={\n <Pressable>\n <Avatar src={avatarImage} size={[\"sm:48\", 40]} />\n </Pressable>\n }\n />\n ) : (\n <Pressable>\n <Avatar src={avatarImage} size={[\"sm:48\", 40]} />\n </Pressable>\n )}\n </div>\n </div>\n </div>\n );\n}\n"]}
|