erp-pro-ui 0.1.0
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/LICENSE +21 -0
- package/README.md +271 -0
- package/dist/components/Button.d.ts +8 -0
- package/dist/components/Button.d.ts.map +1 -0
- package/dist/components/basics/Button/Button.d.ts +3 -0
- package/dist/components/basics/Button/Button.d.ts.map +1 -0
- package/dist/components/basics/Button/index.d.ts +3 -0
- package/dist/components/basics/Button/index.d.ts.map +1 -0
- package/dist/components/basics/accordion/Accordion.d.ts +3 -0
- package/dist/components/basics/accordion/Accordion.d.ts.map +1 -0
- package/dist/components/basics/accordion/index.d.ts +3 -0
- package/dist/components/basics/accordion/index.d.ts.map +1 -0
- package/dist/components/basics/alert/Alert.d.ts +3 -0
- package/dist/components/basics/alert/Alert.d.ts.map +1 -0
- package/dist/components/basics/alert/index.d.ts +3 -0
- package/dist/components/basics/alert/index.d.ts.map +1 -0
- package/dist/components/basics/animated-content/AnimatedContent.d.ts +3 -0
- package/dist/components/basics/animated-content/AnimatedContent.d.ts.map +1 -0
- package/dist/components/basics/animated-content/index.d.ts +3 -0
- package/dist/components/basics/animated-content/index.d.ts.map +1 -0
- package/dist/components/basics/background-gradient-animation/BackgroundGradientAnimation.d.ts +18 -0
- package/dist/components/basics/background-gradient-animation/BackgroundGradientAnimation.d.ts.map +1 -0
- package/dist/components/basics/background-gradient-animation/BackgroundGradientAnimationDemo.d.ts +2 -0
- package/dist/components/basics/background-gradient-animation/BackgroundGradientAnimationDemo.d.ts.map +1 -0
- package/dist/components/basics/background-gradient-animation/index.d.ts +4 -0
- package/dist/components/basics/background-gradient-animation/index.d.ts.map +1 -0
- package/dist/components/basics/button-hover-border-gradient/ButtonHoverBorderGradient.d.ts +6 -0
- package/dist/components/basics/button-hover-border-gradient/ButtonHoverBorderGradient.d.ts.map +1 -0
- package/dist/components/basics/button-hover-border-gradient/index.d.ts +2 -0
- package/dist/components/basics/button-hover-border-gradient/index.d.ts.map +1 -0
- package/dist/components/basics/calendar/Calendar.d.ts +3 -0
- package/dist/components/basics/calendar/Calendar.d.ts.map +1 -0
- package/dist/components/basics/calendar/index.d.ts +3 -0
- package/dist/components/basics/calendar/index.d.ts.map +1 -0
- package/dist/components/basics/card/Card.d.ts +3 -0
- package/dist/components/basics/card/Card.d.ts.map +1 -0
- package/dist/components/basics/card/index.d.ts +3 -0
- package/dist/components/basics/card/index.d.ts.map +1 -0
- package/dist/components/basics/carousel/Carousel.d.ts +7 -0
- package/dist/components/basics/carousel/Carousel.d.ts.map +1 -0
- package/dist/components/basics/carousel/index.d.ts +3 -0
- package/dist/components/basics/carousel/index.d.ts.map +1 -0
- package/dist/components/basics/charts/AreaChart.d.ts +18 -0
- package/dist/components/basics/charts/AreaChart.d.ts.map +1 -0
- package/dist/components/basics/charts/BarChart.d.ts +18 -0
- package/dist/components/basics/charts/BarChart.d.ts.map +1 -0
- package/dist/components/basics/charts/NeonLineChart.d.ts +16 -0
- package/dist/components/basics/charts/NeonLineChart.d.ts.map +1 -0
- package/dist/components/basics/charts/PieChart.d.ts +15 -0
- package/dist/components/basics/charts/PieChart.d.ts.map +1 -0
- package/dist/components/basics/charts/StackedBarChart.d.ts +19 -0
- package/dist/components/basics/charts/StackedBarChart.d.ts.map +1 -0
- package/dist/components/basics/charts/ThinBreakdownBar.d.ts +15 -0
- package/dist/components/basics/charts/ThinBreakdownBar.d.ts.map +1 -0
- package/dist/components/basics/checkbox/Checkbox.d.ts +3 -0
- package/dist/components/basics/checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/basics/checkbox/index.d.ts +3 -0
- package/dist/components/basics/checkbox/index.d.ts.map +1 -0
- package/dist/components/basics/chip/Chip.d.ts +35 -0
- package/dist/components/basics/chip/Chip.d.ts.map +1 -0
- package/dist/components/basics/chip/index.d.ts +3 -0
- package/dist/components/basics/chip/index.d.ts.map +1 -0
- package/dist/components/basics/chroma-grid/ChromaGrid.d.ts +7 -0
- package/dist/components/basics/chroma-grid/ChromaGrid.d.ts.map +1 -0
- package/dist/components/basics/chroma-grid/index.d.ts +3 -0
- package/dist/components/basics/chroma-grid/index.d.ts.map +1 -0
- package/dist/components/basics/colo-palette/ColorPalette.d.ts +23 -0
- package/dist/components/basics/colo-palette/ColorPalette.d.ts.map +1 -0
- package/dist/components/basics/colo-palette/index.d.ts +3 -0
- package/dist/components/basics/colo-palette/index.d.ts.map +1 -0
- package/dist/components/basics/combobox/Combobox.d.ts +18 -0
- package/dist/components/basics/combobox/Combobox.d.ts.map +1 -0
- package/dist/components/basics/combobox/index.d.ts +3 -0
- package/dist/components/basics/combobox/index.d.ts.map +1 -0
- package/dist/components/basics/data-table/DataTable.d.ts +82 -0
- package/dist/components/basics/data-table/DataTable.d.ts.map +1 -0
- package/dist/components/basics/data-table/index.d.ts +4 -0
- package/dist/components/basics/data-table/index.d.ts.map +1 -0
- package/dist/components/basics/date-picker/DatePicker.d.ts +3 -0
- package/dist/components/basics/date-picker/DatePicker.d.ts.map +1 -0
- package/dist/components/basics/date-picker/index.d.ts +3 -0
- package/dist/components/basics/date-picker/index.d.ts.map +1 -0
- package/dist/components/basics/dialog/Dialog.d.ts +4 -0
- package/dist/components/basics/dialog/Dialog.d.ts.map +1 -0
- package/dist/components/basics/dialog/types.d.ts +90 -0
- package/dist/components/basics/dialog/types.d.ts.map +1 -0
- package/dist/components/basics/drawer/Drawer.d.ts +3 -0
- package/dist/components/basics/drawer/Drawer.d.ts.map +1 -0
- package/dist/components/basics/drawer/index.d.ts +3 -0
- package/dist/components/basics/drawer/index.d.ts.map +1 -0
- package/dist/components/basics/form/Form.d.ts +9 -0
- package/dist/components/basics/form/Form.d.ts.map +1 -0
- package/dist/components/basics/form/index.d.ts +3 -0
- package/dist/components/basics/form/index.d.ts.map +1 -0
- package/dist/components/basics/gradual-blur/GradualBlur.d.ts +3 -0
- package/dist/components/basics/gradual-blur/GradualBlur.d.ts.map +1 -0
- package/dist/components/basics/gradual-blur/index.d.ts +3 -0
- package/dist/components/basics/gradual-blur/index.d.ts.map +1 -0
- package/dist/components/basics/hover-border-gradient/HoverBorderGradient.d.ts +10 -0
- package/dist/components/basics/hover-border-gradient/HoverBorderGradient.d.ts.map +1 -0
- package/dist/components/basics/hover-border-gradient/index.d.ts +2 -0
- package/dist/components/basics/hover-border-gradient/index.d.ts.map +1 -0
- package/dist/components/basics/hover-card/HoverCard.d.ts +32 -0
- package/dist/components/basics/hover-card/HoverCard.d.ts.map +1 -0
- package/dist/components/basics/hover-card/index.d.ts +3 -0
- package/dist/components/basics/hover-card/index.d.ts.map +1 -0
- package/dist/components/basics/input/Input.d.ts +3 -0
- package/dist/components/basics/input/Input.d.ts.map +1 -0
- package/dist/components/basics/input/index.d.ts +3 -0
- package/dist/components/basics/input/index.d.ts.map +1 -0
- package/dist/components/basics/input/types.d.ts +21 -0
- package/dist/components/basics/input/types.d.ts.map +1 -0
- package/dist/components/basics/label/Label.d.ts +3 -0
- package/dist/components/basics/label/Label.d.ts.map +1 -0
- package/dist/components/basics/label/index.d.ts +3 -0
- package/dist/components/basics/label/index.d.ts.map +1 -0
- package/dist/components/basics/loading/Loading.d.ts +62 -0
- package/dist/components/basics/loading/Loading.d.ts.map +1 -0
- package/dist/components/basics/loading/index.d.ts +4 -0
- package/dist/components/basics/loading/index.d.ts.map +1 -0
- package/dist/components/basics/multi-select-combobox/MultiSelectCombobox.d.ts +16 -0
- package/dist/components/basics/multi-select-combobox/MultiSelectCombobox.d.ts.map +1 -0
- package/dist/components/basics/multi-select-combobox/index.d.ts +3 -0
- package/dist/components/basics/multi-select-combobox/index.d.ts.map +1 -0
- package/dist/components/basics/otp-Input/OTPInput.d.ts +46 -0
- package/dist/components/basics/otp-Input/OTPInput.d.ts.map +1 -0
- package/dist/components/basics/otp-Input/index.d.ts +3 -0
- package/dist/components/basics/otp-Input/index.d.ts.map +1 -0
- package/dist/components/basics/password-strength-meter/PasswordCriteria.d.ts +6 -0
- package/dist/components/basics/password-strength-meter/PasswordCriteria.d.ts.map +1 -0
- package/dist/components/basics/password-strength-meter/PasswordStrengthMeter.d.ts +6 -0
- package/dist/components/basics/password-strength-meter/PasswordStrengthMeter.d.ts.map +1 -0
- package/dist/components/basics/preview/Preview.d.ts +2 -0
- package/dist/components/basics/preview/Preview.d.ts.map +1 -0
- package/dist/components/basics/preview/index.d.ts +2 -0
- package/dist/components/basics/preview/index.d.ts.map +1 -0
- package/dist/components/basics/radio/Radio.d.ts +3 -0
- package/dist/components/basics/radio/Radio.d.ts.map +1 -0
- package/dist/components/basics/radio/index.d.ts +3 -0
- package/dist/components/basics/radio/index.d.ts.map +1 -0
- package/dist/components/basics/select/Select.d.ts +3 -0
- package/dist/components/basics/select/Select.d.ts.map +1 -0
- package/dist/components/basics/select/index.d.ts +3 -0
- package/dist/components/basics/select/index.d.ts.map +1 -0
- package/dist/components/basics/skeleton/Skeleton.d.ts +69 -0
- package/dist/components/basics/skeleton/Skeleton.d.ts.map +1 -0
- package/dist/components/basics/skeleton/index.d.ts +3 -0
- package/dist/components/basics/skeleton/index.d.ts.map +1 -0
- package/dist/components/basics/splashCursor/SplashCursor.d.ts +7 -0
- package/dist/components/basics/splashCursor/SplashCursor.d.ts.map +1 -0
- package/dist/components/basics/splashCursor/index.d.ts +3 -0
- package/dist/components/basics/splashCursor/index.d.ts.map +1 -0
- package/dist/components/basics/spotlight-card/SpotlightCard.d.ts +7 -0
- package/dist/components/basics/spotlight-card/SpotlightCard.d.ts.map +1 -0
- package/dist/components/basics/spotlight-card/index.d.ts +3 -0
- package/dist/components/basics/spotlight-card/index.d.ts.map +1 -0
- package/dist/components/basics/stepper/Stepper.d.ts +7 -0
- package/dist/components/basics/stepper/Stepper.d.ts.map +1 -0
- package/dist/components/basics/stepper/index.d.ts +3 -0
- package/dist/components/basics/stepper/index.d.ts.map +1 -0
- package/dist/components/basics/sun-to-moon-button/SunToMoonButton.d.ts +4 -0
- package/dist/components/basics/sun-to-moon-button/SunToMoonButton.d.ts.map +1 -0
- package/dist/components/basics/sun-to-moon-button/index.d.ts +3 -0
- package/dist/components/basics/sun-to-moon-button/index.d.ts.map +1 -0
- package/dist/components/basics/switch/Switch.d.ts +3 -0
- package/dist/components/basics/switch/Switch.d.ts.map +1 -0
- package/dist/components/basics/switch/index.d.ts +3 -0
- package/dist/components/basics/switch/index.d.ts.map +1 -0
- package/dist/components/basics/textarea/Textarea.d.ts +3 -0
- package/dist/components/basics/textarea/Textarea.d.ts.map +1 -0
- package/dist/components/basics/textarea/index.d.ts +3 -0
- package/dist/components/basics/textarea/index.d.ts.map +1 -0
- package/dist/components/basics/toast/Toast.d.ts +93 -0
- package/dist/components/basics/toast/Toast.d.ts.map +1 -0
- package/dist/components/basics/toast/index.d.ts +3 -0
- package/dist/components/basics/toast/index.d.ts.map +1 -0
- package/dist/components/basics/tooltip/Tooltip.d.ts +31 -0
- package/dist/components/basics/tooltip/Tooltip.d.ts.map +1 -0
- package/dist/components/basics/tooltip/index.d.ts +3 -0
- package/dist/components/basics/tooltip/index.d.ts.map +1 -0
- package/dist/components/basics/typography/Typography.d.ts +20 -0
- package/dist/components/basics/typography/Typography.d.ts.map +1 -0
- package/dist/components/icons/ActivityIcon.d.ts +10 -0
- package/dist/components/icons/ActivityIcon.d.ts.map +1 -0
- package/dist/components/icons/ArrowDownIcon.d.ts +9 -0
- package/dist/components/icons/ArrowDownIcon.d.ts.map +1 -0
- package/dist/components/icons/ArrowLeftIcon.d.ts +9 -0
- package/dist/components/icons/ArrowLeftIcon.d.ts.map +1 -0
- package/dist/components/icons/ArrowRightIcon.d.ts +9 -0
- package/dist/components/icons/ArrowRightIcon.d.ts.map +1 -0
- package/dist/components/icons/ArrowUpDownIcon.d.ts +9 -0
- package/dist/components/icons/ArrowUpDownIcon.d.ts.map +1 -0
- package/dist/components/icons/ArrowUpIcon.d.ts +9 -0
- package/dist/components/icons/ArrowUpIcon.d.ts.map +1 -0
- package/dist/components/icons/BellIcon.d.ts +9 -0
- package/dist/components/icons/BellIcon.d.ts.map +1 -0
- package/dist/components/icons/BriefcaseBusinessIcon.d.ts +9 -0
- package/dist/components/icons/BriefcaseBusinessIcon.d.ts.map +1 -0
- package/dist/components/icons/CheckIcon.d.ts +9 -0
- package/dist/components/icons/CheckIcon.d.ts.map +1 -0
- package/dist/components/icons/ChevronDownIcon.d.ts +12 -0
- package/dist/components/icons/ChevronDownIcon.d.ts.map +1 -0
- package/dist/components/icons/ChevronLeftIcon.d.ts +9 -0
- package/dist/components/icons/ChevronLeftIcon.d.ts.map +1 -0
- package/dist/components/icons/ChevronRightIcon.d.ts +9 -0
- package/dist/components/icons/ChevronRightIcon.d.ts.map +1 -0
- package/dist/components/icons/ChevronUpIcon.d.ts +9 -0
- package/dist/components/icons/ChevronUpIcon.d.ts.map +1 -0
- package/dist/components/icons/ChevronsLeftIcon.d.ts +9 -0
- package/dist/components/icons/ChevronsLeftIcon.d.ts.map +1 -0
- package/dist/components/icons/ChevronsRightIcon.d.ts +9 -0
- package/dist/components/icons/ChevronsRightIcon.d.ts.map +1 -0
- package/dist/components/icons/CircleIcon.d.ts +3 -0
- package/dist/components/icons/CircleIcon.d.ts.map +1 -0
- package/dist/components/icons/CloseIcon.d.ts +9 -0
- package/dist/components/icons/CloseIcon.d.ts.map +1 -0
- package/dist/components/icons/DragIcon.d.ts +10 -0
- package/dist/components/icons/DragIcon.d.ts.map +1 -0
- package/dist/components/icons/EllipsisIcon.d.ts +9 -0
- package/dist/components/icons/EllipsisIcon.d.ts.map +1 -0
- package/dist/components/icons/EllipsisVerticalIcon.d.ts +9 -0
- package/dist/components/icons/EllipsisVerticalIcon.d.ts.map +1 -0
- package/dist/components/icons/EyeIcon.d.ts +9 -0
- package/dist/components/icons/EyeIcon.d.ts.map +1 -0
- package/dist/components/icons/EyeOffIcon.d.ts +9 -0
- package/dist/components/icons/EyeOffIcon.d.ts.map +1 -0
- package/dist/components/icons/FullScreenIcon.d.ts +10 -0
- package/dist/components/icons/FullScreenIcon.d.ts.map +1 -0
- package/dist/components/icons/HomeIcon.d.ts +9 -0
- package/dist/components/icons/HomeIcon.d.ts.map +1 -0
- package/dist/components/icons/PackageIcon.d.ts +9 -0
- package/dist/components/icons/PackageIcon.d.ts.map +1 -0
- package/dist/components/icons/SearchIcon.d.ts +9 -0
- package/dist/components/icons/SearchIcon.d.ts.map +1 -0
- package/dist/components/icons/SettingsIcon.d.ts +9 -0
- package/dist/components/icons/SettingsIcon.d.ts.map +1 -0
- package/dist/components/icons/ShoppingCartIcon.d.ts +9 -0
- package/dist/components/icons/ShoppingCartIcon.d.ts.map +1 -0
- package/dist/components/icons/TrashIcon.d.ts +9 -0
- package/dist/components/icons/TrashIcon.d.ts.map +1 -0
- package/dist/components/icons/UserIcon.d.ts +9 -0
- package/dist/components/icons/UserIcon.d.ts.map +1 -0
- package/dist/components/icons/index.d.ts +31 -0
- package/dist/components/icons/index.d.ts.map +1 -0
- package/dist/components/shared/overlay.d.ts +9 -0
- package/dist/components/shared/overlay.d.ts.map +1 -0
- package/dist/components/spinners/Audio.d.ts +6 -0
- package/dist/components/spinners/Audio.d.ts.map +1 -0
- package/dist/components/text-animations/ASCIIText/ASCIIText.d.ts +14 -0
- package/dist/components/text-animations/ASCIIText/ASCIIText.d.ts.map +1 -0
- package/dist/components/text-animations/ASCIIText/index.d.ts +3 -0
- package/dist/components/text-animations/ASCIIText/index.d.ts.map +1 -0
- package/dist/components/text-animations/BlurText/BlurText.d.ts +18 -0
- package/dist/components/text-animations/BlurText/BlurText.d.ts.map +1 -0
- package/dist/components/text-animations/BlurText/index.d.ts +3 -0
- package/dist/components/text-animations/BlurText/index.d.ts.map +1 -0
- package/dist/contexts/ThemeContext.d.ts +16 -0
- package/dist/contexts/ThemeContext.d.ts.map +1 -0
- package/dist/contexts/index.d.ts +3 -0
- package/dist/contexts/index.d.ts.map +1 -0
- package/dist/index.cjs +12518 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +79 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +12501 -0
- package/dist/index.mjs.map +1 -0
- package/dist/utils/generateUniqueKey.d.ts +8 -0
- package/dist/utils/generateUniqueKey.d.ts.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/mergeClassNames.d.ts +10 -0
- package/dist/utils/mergeClassNames.d.ts.map +1 -0
- package/dist/utils/validateEmail.d.ts +3 -0
- package/dist/utils/validateEmail.d.ts.map +1 -0
- package/package.json +228 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/contexts/ThemeContext.tsx","../src/utils/generateUniqueKey.ts","../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/utils/mergeClassNames.ts","../src/utils/validateEmail.ts","../src/components/basics/charts/NeonLineChart.tsx","../src/components/basics/charts/StackedBarChart.tsx","../src/components/basics/charts/ThinBreakdownBar.tsx","../src/components/basics/charts/AreaChart.tsx","../src/components/basics/charts/BarChart.tsx","../src/components/basics/charts/PieChart.tsx","../src/components/basics/accordion/Accordion.tsx","../src/components/basics/alert/Alert.tsx","../src/components/basics/animated-content/AnimatedContent.tsx","../src/components/basics/background-gradient-animation/BackgroundGradientAnimation.tsx","../src/components/basics/Button/Button.tsx","../src/components/basics/hover-border-gradient/HoverBorderGradient.tsx","../src/components/basics/button-hover-border-gradient/ButtonHoverBorderGradient.tsx","../src/components/basics/calendar/Calendar.tsx","../src/components/basics/card/Card.tsx","../src/components/basics/carousel/Carousel.tsx","../src/components/basics/checkbox/Checkbox.tsx","../src/components/basics/chip/Chip.tsx","../src/components/basics/chroma-grid/ChromaGrid.tsx","../src/components/basics/colo-palette/ColorPalette.tsx","../src/components/icons/CheckIcon.tsx","../src/components/icons/CloseIcon.tsx","../src/components/icons/HomeIcon.tsx","../src/components/icons/ShoppingCartIcon.tsx","../src/components/icons/SettingsIcon.tsx","../src/components/icons/PackageIcon.tsx","../src/components/icons/SearchIcon.tsx","../src/components/icons/UserIcon.tsx","../src/components/icons/BriefcaseBusinessIcon.tsx","../src/components/icons/ActivityIcon.tsx","../src/components/icons/TrashIcon.tsx","../src/components/icons/ArrowDownIcon.tsx","../src/components/icons/ArrowUpIcon.tsx","../src/components/icons/ArrowLeftIcon.tsx","../src/components/icons/ArrowRightIcon.tsx","../src/components/icons/ChevronDownIcon.tsx","../src/components/icons/ChevronLeftIcon.tsx","../src/components/icons/ChevronRightIcon.tsx","../src/components/icons/ChevronUpIcon.tsx","../src/components/icons/ChevronsLeftIcon.tsx","../src/components/icons/ChevronsRightIcon.tsx","../src/components/icons/ArrowUpDownIcon.tsx","../src/components/icons/EllipsisIcon.tsx","../src/components/icons/EllipsisVerticalIcon.tsx","../src/components/icons/EyeIcon.tsx","../src/components/icons/EyeOffIcon.tsx","../src/components/icons/BellIcon.tsx","../src/components/icons/FullScreenIcon.tsx","../src/components/icons/DragIcon.tsx","../src/components/icons/CircleIcon.tsx","../src/components/basics/combobox/Combobox.tsx","../src/components/basics/multi-select-combobox/MultiSelectCombobox.tsx","../src/components/basics/input/types.ts","../src/components/basics/input/Input.tsx","../src/components/basics/select/Select.tsx","../src/components/basics/switch/Switch.tsx","../src/components/basics/date-picker/DatePicker.tsx","../src/components/basics/data-table/DataTable.tsx","../src/components/shared/overlay.ts","../src/components/basics/dialog/Dialog.tsx","../src/components/basics/drawer/Drawer.tsx","../src/components/basics/form/Form.tsx","../src/components/basics/gradual-blur/GradualBlur.tsx","../src/components/basics/hover-card/HoverCard.tsx","../src/components/basics/label/Label.tsx","../src/components/basics/loading/Loading.tsx","../src/components/basics/otp-Input/OTPInput.tsx","../src/components/basics/password-strength-meter/PasswordCriteria.tsx","../src/components/basics/password-strength-meter/PasswordStrengthMeter.tsx","../src/components/basics/preview/Preview.tsx","../src/components/basics/radio/Radio.tsx","../src/components/basics/skeleton/Skeleton.tsx","../src/components/basics/splashCursor/SplashCursor.tsx","../src/components/basics/spotlight-card/SpotlightCard.tsx","../src/components/basics/stepper/Stepper.tsx","../src/components/basics/sun-to-moon-button/SunToMoonButton.tsx","../src/components/basics/textarea/Textarea.tsx","../src/components/basics/toast/Toast.tsx","../src/components/basics/tooltip/Tooltip.tsx","../src/components/basics/typography/Typography.tsx","../src/components/text-animations/ASCIIText/ASCIIText.tsx","../src/components/spinners/Audio.tsx"],"sourcesContent":["import { createContext, useContext, useEffect, useState } from \"react\";\nimport type { ReactNode } from \"react\";\n\nexport type ThemeModeType = \"light\" | \"dark\";\nexport type ThemeColorType = \"purple\" | \"teal\" | \"yellow\" | \"green\";\n\nexport interface UseThemeType {\n mode: ThemeModeType;\n theme: ThemeColorType;\n colorScheme: `${ThemeColorType}-${ThemeModeType}`;\n setMode: (mode: ThemeModeType) => void;\n toggleMode: () => void;\n setTheme: (theme: ThemeColorType) => void;\n}\n\nconst ThemeContext = createContext<UseThemeType | null>(null);\n\nexport function ThemeProvider({ children }: { children: ReactNode }) {\n const [mode, setMode] = useState<ThemeModeType>(\"dark\");\n const [theme, setTheme] = useState<ThemeColorType>(\"purple\");\n\n useEffect(() => {\n const storedMode = localStorage.getItem(\"mode\") as ThemeModeType | null;\n const storedTheme = localStorage.getItem(\"theme\") as ThemeColorType | null;\n if (storedMode && storedMode !== mode) {\n setMode(storedMode);\n }\n if (storedTheme && storedTheme !== theme) {\n setTheme(storedTheme);\n }\n }, []);\n\n useEffect(() => {\n const colorScheme = `${theme}-${mode}`;\n document.documentElement.setAttribute(\"data-theme\", colorScheme);\n localStorage.setItem(\"mode\", mode);\n localStorage.setItem(\"theme\", theme);\n\n // Toggle dark class for Tailwind\n if (mode === \"dark\") {\n document.documentElement.classList.add(\"dark\");\n } else {\n document.documentElement.classList.remove(\"dark\");\n }\n }, [mode, theme]);\n\n const toggleMode = () =>\n setMode((prev) => (prev === \"light\" ? \"dark\" : \"light\"));\n\n const value: UseThemeType = {\n mode,\n theme,\n colorScheme: `${theme}-${mode}` as const,\n setMode,\n toggleMode,\n setTheme,\n };\n\n return (\n <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>\n );\n}\n\nexport function useThemeContext() {\n const ctx = useContext(ThemeContext);\n if (!ctx) {\n throw new Error(\"useThemeContext must be used within a ThemeProvider\");\n }\n return ctx;\n}\n","export interface UniqueKeyOptions {\n prefix?: string;\n length?: number;\n entropy?: \"high\" | \"normal\";\n}\n\nconst generateUniqueKey = ({\n prefix = \"\",\n length = 21,\n entropy = \"high\",\n}: UniqueKeyOptions = {}): string => {\n const byteLength = Math.ceil(length / 2);\n\n const bytes =\n entropy === \"high\" && typeof crypto !== \"undefined\"\n ? crypto.getRandomValues(new Uint8Array(byteLength))\n : Array.from({ length: byteLength }, () => Math.floor(Math.random() * 256));\n\n const hex = (Array.from(bytes) as number[])\n .map(b => b.toString(16).padStart(2, \"0\"))\n .join(\"\")\n .slice(0, length);\n\n return `${prefix}${hex}`;\n};\n\nexport default generateUniqueKey;\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import type { ClassValue } from \"clsx\";\nimport { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Merges multiple class names with Tailwind's merging behavior.\n *\n * @param classNames - An array of class names or conditional class values.\n * @returns A single string of merged class names.\n */\nconst mergeClassNames = (...classNames: ClassValue[]) => {\n return twMerge(clsx(classNames));\n};\n\nexport default mergeClassNames;\n","const validateEmail = (email: string) => {\n // Regular expression for email validation\n const regex: RegExp = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\n return email.match(regex);\n};\n\nexport default validateEmail;\n","\"use client\";\n\nimport React from \"react\";\nimport {\n LineChart,\n Line,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\n\ninterface DataPoint {\n name: string;\n value: number;\n}\n\ninterface NeonLineChartProps {\n data: DataPoint[];\n height?: number | string;\n lineColorStop1?: string;\n lineColorStop2?: string;\n className?: string;\n glowColor?: string;\n}\n\nexport const NeonLineChart: React.FC<NeonLineChartProps> = ({\n data,\n height = 300,\n lineColorStop1 = \"#00f0ff\",\n lineColorStop2 = \"#ff00e5\",\n glowColor = \"rgba(255, 0, 229, 0.4)\",\n className = \"\",\n}) => {\n return (\n <div className={`w-full relative ${className}`} style={{ height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <LineChart\n data={data}\n margin={{ top: 20, right: 30, left: 10, bottom: 20 }}\n >\n <defs>\n {/* Linear Gradient for the Line */}\n <linearGradient id=\"neonGradient\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\">\n <stop offset=\"0%\" stopColor={lineColorStop1} />\n <stop offset=\"100%\" stopColor={lineColorStop2} />\n </linearGradient>\n\n {/* Glowing Drop Shadow Filter */}\n <filter id=\"neonGlow\" x=\"-20%\" y=\"-20%\" width=\"140%\" height=\"140%\">\n <feDropShadow\n dx=\"0\"\n dy=\"6\"\n stdDeviation=\"8\"\n floodColor={glowColor}\n floodOpacity=\"0.8\"\n />\n <feDropShadow\n dx=\"0\"\n dy=\"0\"\n stdDeviation=\"15\"\n floodColor={lineColorStop1}\n floodOpacity=\"0.3\"\n />\n </filter>\n </defs>\n\n {/* Minimal Grid */}\n <CartesianGrid\n strokeDasharray=\"3 3\"\n vertical={false}\n stroke=\"var(--color-neutral-800, #262626)\"\n opacity={0.5}\n />\n\n <XAxis\n dataKey=\"name\"\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--color-neutral-400, #a3a3a3)\", fontSize: 12 }}\n dy={10}\n />\n\n <YAxis\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--color-neutral-400, #a3a3a3)\", fontSize: 12 }}\n dx={-10}\n />\n\n <Tooltip\n contentStyle={{\n backgroundColor: \"rgba(10, 10, 10, 0.8)\",\n border: \"1px solid rgba(255,255,255,0.1)\",\n borderRadius: \"8px\",\n backdropFilter: \"blur(8px)\",\n color: \"#fff\",\n }}\n itemStyle={{ color: \"#fff\" }}\n />\n\n {/* The Neon Line */}\n <Line\n type=\"monotone\"\n dataKey=\"value\"\n stroke=\"url(#neonGradient)\"\n strokeWidth={3}\n dot={false}\n activeDot={{ r: 6, fill: \"#fff\", stroke: lineColorStop2, strokeWidth: 2 }}\n filter=\"url(#neonGlow)\"\n />\n </LineChart>\n </ResponsiveContainer>\n </div>\n );\n};\n","\"use client\";\n\nimport React from \"react\";\nimport {\n BarChart as RechartsBarChart,\n Bar,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from \"recharts\";\n\nexport interface StackedBarData {\n name: string;\n [key: string]: string | number;\n}\n\ninterface StackedBarChartProps {\n data: StackedBarData[];\n categories: { key: string; color: string; label: string }[];\n height?: number | string;\n yAxisDomain?: [number, number];\n className?: string;\n}\n\nexport const StackedBarChart: React.FC<StackedBarChartProps> = ({\n data,\n categories,\n height = 300,\n yAxisDomain,\n className = \"\",\n}) => {\n return (\n <div className={`w-full ${className}`} style={{ height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsBarChart\n data={data}\n margin={{ top: 20, right: 30, left: 20, bottom: 5 }}\n >\n <CartesianGrid\n strokeDasharray=\"3 3\"\n vertical={false}\n stroke=\"var(--color-neutral-800, #262626)\"\n opacity={0.4}\n />\n <XAxis\n dataKey=\"name\"\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--color-neutral-400, #a3a3a3)\", fontSize: 12 }}\n dy={10}\n />\n <YAxis\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--color-neutral-400, #a3a3a3)\", fontSize: 12 }}\n dx={-10}\n domain={yAxisDomain}\n />\n <Tooltip\n cursor={{ fill: \"var(--color-neutral-800, rgba(38, 38, 38, 0.4))\" }}\n contentStyle={{\n backgroundColor: \"rgba(10, 10, 10, 0.9)\",\n border: \"1px solid rgba(255,255,255,0.1)\",\n borderRadius: \"8px\",\n backdropFilter: \"blur(8px)\",\n color: \"#fff\",\n }}\n />\n <Legend\n iconType=\"circle\"\n wrapperStyle={{ paddingTop: \"20px\", fontSize: \"12px\", color: \"var(--color-neutral-300)\" }}\n />\n\n {categories.map((cat, index) => {\n // Apply rounded radius only to the top bar in the stack\n const isTop = index === categories.length - 1;\n const radius: [number, number, number, number] = isTop ? [6, 6, 0, 0] : [0, 0, 0, 0];\n\n return (\n <Bar\n key={cat.key}\n dataKey={cat.key}\n name={cat.label}\n stackId=\"a\"\n fill={cat.color}\n radius={radius}\n barSize={32}\n />\n );\n })}\n </RechartsBarChart>\n </ResponsiveContainer>\n </div>\n );\n};\n","\"use client\";\n\nimport React from \"react\";\n\nexport interface BreakdownSegment {\n id?: string;\n label: string;\n value: number; // The absolute value or percentage\n color: string;\n}\n\ninterface ThinBreakdownBarProps {\n data: BreakdownSegment[];\n className?: string;\n showLabels?: boolean;\n}\n\nexport const ThinBreakdownBar: React.FC<ThinBreakdownBarProps> = ({\n data: segments,\n className = \"\",\n showLabels = true,\n}) => {\n // Calculate total to determine percentage widths\n const total = segments.reduce((sum, item) => sum + item.value, 0);\n\n return (\n <div className={`w-full flex flex-col gap-3 ${className}`}>\n {/* The Bar Track */}\n <div className=\"flex w-full h-3 rounded-full overflow-hidden gap-1 bg-neutral-900/50\">\n {segments.map((segment, index) => {\n const widthPercent = total > 0 ? (segment.value / total) * 100 : 0;\n return (\n <div\n key={segment.id || `segment-${index}`}\n className=\"h-full rounded-full transition-all duration-500 ease-out\"\n style={{\n width: `${widthPercent}%`,\n backgroundColor: segment.color,\n // Add a very subtle inner shadow/glow to match the 'pill' aesthetic\n boxShadow: `inset 0 1px 1px rgba(255,255,255,0.2), 0 0 8px ${segment.color}40`,\n }}\n title={`${segment.label}: ${segment.value}`}\n />\n );\n })}\n </div>\n\n {/* The Labels */}\n {showLabels && (\n <div className=\"flex w-full justify-between items-center px-1\">\n {segments.map((segment, index) => (\n <div\n key={`label-${segment.id || index}`}\n className=\"flex items-center gap-1.5 min-w-0\"\n >\n <span className=\"text-xs text-neutral-400 font-medium truncate\">\n {segment.label}\n </span>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n","\"use client\";\n\nimport React from \"react\";\nimport {\n AreaChart as RechartsAreaChart,\n Area,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\n\nexport interface AreaChartData {\n name: string;\n [key: string]: string | number;\n}\n\ninterface AreaChartProps {\n data: AreaChartData[];\n categories: { key: string; color: string }[];\n height?: number | string;\n className?: string;\n showGrid?: boolean;\n}\n\nexport const AreaChart: React.FC<AreaChartProps> = ({\n data,\n categories,\n height = 300,\n className = \"\",\n showGrid = true,\n}) => {\n return (\n <div className={`w-full ${className}`} style={{ height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsAreaChart\n data={data}\n margin={{ top: 10, right: 30, left: 0, bottom: 0 }}\n >\n <defs>\n {categories.map((cat) => (\n <linearGradient\n key={`gradient-${cat.key}`}\n id={`color-${cat.key}`}\n x1=\"0\"\n y1=\"0\"\n x2=\"0\"\n y2=\"1\"\n >\n <stop offset=\"5%\" stopColor={cat.color} stopOpacity={0.3} />\n <stop offset=\"95%\" stopColor={cat.color} stopOpacity={0} />\n </linearGradient>\n ))}\n </defs>\n\n {showGrid && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n vertical={false}\n stroke=\"var(--color-neutral-800, #262626)\"\n opacity={0.5}\n />\n )}\n\n <XAxis\n dataKey=\"name\"\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--color-neutral-400, #a3a3a3)\", fontSize: 12 }}\n dy={10}\n />\n\n <YAxis\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--color-neutral-400, #a3a3a3)\", fontSize: 12 }}\n dx={-10}\n />\n\n <Tooltip\n contentStyle={{\n backgroundColor: \"rgba(10, 10, 10, 0.9)\",\n border: \"1px solid rgba(255,255,255,0.1)\",\n borderRadius: \"8px\",\n backdropFilter: \"blur(8px)\",\n color: \"#fff\",\n }}\n itemStyle={{ color: \"#fff\" }}\n />\n\n {categories.map((cat) => (\n <Area\n key={cat.key}\n type=\"monotone\"\n dataKey={cat.key}\n stroke={cat.color}\n strokeWidth={2}\n fillOpacity={1}\n fill={`url(#color-${cat.key})`}\n />\n ))}\n </RechartsAreaChart>\n </ResponsiveContainer>\n </div>\n );\n};\n","\"use client\";\n\nimport React from \"react\";\nimport {\n BarChart as RechartsBarChart,\n Bar,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\n\nexport interface BarChartData {\n name: string;\n [key: string]: string | number;\n}\n\ninterface BarChartProps {\n data: BarChartData[];\n categories: { key: string; color: string }[];\n height?: number | string;\n className?: string;\n layout?: \"horizontal\" | \"vertical\";\n}\n\nexport const BarChart: React.FC<BarChartProps> = ({\n data,\n categories,\n height = 300,\n className = \"\",\n layout = \"horizontal\",\n}) => {\n return (\n <div className={`w-full ${className}`} style={{ height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsBarChart\n data={data}\n layout={layout}\n margin={{ top: 20, right: 30, left: 20, bottom: 5 }}\n >\n <CartesianGrid\n strokeDasharray=\"3 3\"\n horizontal={layout === \"horizontal\"}\n vertical={layout === \"vertical\"}\n stroke=\"var(--color-neutral-800, #262626)\"\n opacity={0.4}\n />\n\n {layout === \"horizontal\" ? (\n <>\n <XAxis\n dataKey=\"name\"\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--color-neutral-400, #a3a3a3)\", fontSize: 12 }}\n dy={10}\n />\n <YAxis\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--color-neutral-400, #a3a3a3)\", fontSize: 12 }}\n dx={-10}\n />\n </>\n ) : (\n <>\n <XAxis\n type=\"number\"\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--color-neutral-400, #a3a3a3)\", fontSize: 12 }}\n dy={10}\n />\n <YAxis\n dataKey=\"name\"\n type=\"category\"\n axisLine={false}\n tickLine={false}\n tick={{ fill: \"var(--color-neutral-400, #a3a3a3)\", fontSize: 12 }}\n dx={-10}\n />\n </>\n )}\n\n <Tooltip\n cursor={{ fill: \"var(--color-neutral-800, rgba(38, 38, 38, 0.4))\" }}\n contentStyle={{\n backgroundColor: \"rgba(10, 10, 10, 0.9)\",\n border: \"1px solid rgba(255,255,255,0.1)\",\n borderRadius: \"8px\",\n backdropFilter: \"blur(8px)\",\n color: \"#fff\",\n }}\n />\n\n {categories.map((cat) => (\n <Bar\n key={cat.key}\n dataKey={cat.key}\n fill={cat.color}\n radius={layout === \"horizontal\" ? [4, 4, 0, 0] : [0, 4, 4, 0]}\n />\n ))}\n </RechartsBarChart>\n </ResponsiveContainer>\n </div>\n );\n};\n","\"use client\";\n\nimport React from \"react\";\nimport {\n PieChart as RechartsPieChart,\n Pie,\n Cell,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from \"recharts\";\n\nexport interface PieChartData {\n name: string;\n value: number;\n}\n\ninterface PieChartProps {\n data: PieChartData[];\n colors: string[];\n height?: number | string;\n className?: string;\n variant?: \"pie\" | \"donut\";\n}\n\nexport const PieChart: React.FC<PieChartProps> = ({\n data,\n colors,\n height = 300,\n className = \"\",\n variant = \"donut\",\n}) => {\n const innerRadius = variant === \"donut\" ? \"60%\" : 0;\n\n return (\n <div className={`w-full ${className}`} style={{ height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <RechartsPieChart>\n <Pie\n data={data}\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={innerRadius}\n outerRadius=\"80%\"\n paddingAngle={variant === \"donut\" ? 2 : 0}\n dataKey=\"value\"\n stroke=\"none\"\n >\n {data.map((entry, index) => (\n <Cell\n key={`cell-${index}`}\n fill={colors[index % colors.length]}\n />\n ))}\n </Pie>\n\n <Tooltip\n contentStyle={{\n backgroundColor: \"rgba(10, 10, 10, 0.9)\",\n border: \"1px solid rgba(255,255,255,0.1)\",\n borderRadius: \"8px\",\n backdropFilter: \"blur(8px)\",\n color: \"#fff\",\n }}\n itemStyle={{ color: \"#fff\" }}\n />\n\n <Legend\n iconType=\"circle\"\n wrapperStyle={{ fontSize: \"12px\", color: \"var(--color-neutral-300)\" }}\n />\n </RechartsPieChart>\n </ResponsiveContainer>\n </div>\n );\n};\n","import { useState } from \"react\";\nimport type { AccordionProps } from \"./types.d\";\n\nconst cx = (...classes: Array<string | false | undefined>) =>\n classes.filter(Boolean).join(\" \").replace(/\\s+/g, \" \").trim();\n\nconst caret = (\n <svg\n className=\"h-5 w-5 transition-transform duration-300\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M6 9l6 6 6-6\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport const Accordion = ({\n items,\n type = \"single\",\n defaultOpenIds = type === \"single\" && items.length ? [items[0].id] : [],\n value,\n onValueChange,\n className = \"\",\n separated = false,\n}: AccordionProps) => {\n const [internalOpen, setInternalOpen] = useState<string[]>(defaultOpenIds);\n const controlled = Array.isArray(value);\n const openItems = controlled ? value! : internalOpen;\n\n const toggleItem = (id: string) => {\n let next: string[];\n const isOpen = openItems.includes(id);\n\n if (type === \"single\") {\n next = isOpen ? [] : [id];\n } else {\n next = isOpen\n ? openItems.filter((openId) => openId !== id)\n : [...openItems, id];\n }\n\n if (!controlled) {\n setInternalOpen(next);\n }\n onValueChange?.(next);\n };\n\n return (\n <div className={cx(\"space-y-3\", className)}>\n {items.map((item) => {\n const open = openItems.includes(item.id);\n return (\n <div\n key={item.id}\n className={cx(\n // Glass effect base\n \"rounded-xl backdrop-blur-2xl transition-all duration-300\",\n // Light mode glass\n \"bg-white/60 border border-white/40 shadow-lg shadow-neutral-200/50\",\n // Dark mode glass\n \"dark:bg-neutral-900/50 dark:border-white/10 dark:shadow-neutral-950/50\",\n // Hover effects\n \"hover:bg-white/80 hover:shadow-xl hover:border-white/60\",\n \"dark:hover:bg-neutral-800/60 dark:hover:border-white/20\",\n // Ring highlight on open\n open && \"ring-2 ring-primary/30 dark:ring-primary/20\",\n separated ? \"p-0\" : \"\"\n )}\n >\n <button\n type=\"button\"\n className={cx(\n \"flex w-full items-center justify-between gap-4 px-5 py-4 rounded-xl transition-colors duration-200\",\n // Text colors\n \"text-neutral-700 dark:text-neutral-200\",\n // Hover state\n \"hover:bg-white/40 dark:hover:bg-white/5\",\n separated ? \"border-b border-neutral-200/50 dark:border-white/10\" : \"\",\n item.disabled ? \"opacity-50 cursor-not-allowed\" : \"cursor-pointer\"\n )}\n aria-expanded={open}\n aria-controls={`${item.id}-content`}\n id={`${item.id}-trigger`}\n onClick={() => !item.disabled && toggleItem(item.id)}\n disabled={item.disabled}\n >\n <div className=\"text-left flex-1\">\n <p className=\"text-base font-semibold text-neutral-900 dark:text-white\">\n {item.title}\n </p>\n {item.description && (\n <p className=\"text-sm text-neutral-500 dark:text-neutral-400 mt-0.5\">\n {item.description}\n </p>\n )}\n </div>\n <span\n className={cx(\n \"p-1.5 rounded-lg transition-all duration-300\",\n \"bg-neutral-100/80 dark:bg-white/10\",\n \"text-neutral-600 dark:text-neutral-300\",\n open && \"rotate-180 bg-primary/20 text-primary dark:bg-primary/30 dark:text-primary-400\"\n )}\n >\n {caret}\n </span>\n </button>\n <div\n id={`${item.id}-content`}\n role=\"region\"\n aria-labelledby={`${item.id}-trigger`}\n className={cx(\n \"overflow-hidden transition-all duration-300 ease-in-out\",\n open\n ? \"max-h-[1000px] opacity-100\"\n : \"max-h-0 opacity-0\"\n )}\n >\n <div className=\"px-5 pb-5 pt-2 text-sm text-neutral-600 dark:text-neutral-300 leading-relaxed\">\n {item.content}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n","import type { AlertProps } from \"./types\";\n\nconst variantClasses: Record<NonNullable<AlertProps[\"variant\"]>, string> = {\n info: \"border-ring bg-ring/10\",\n success: \"border-emerald-500 bg-emerald-500/10\",\n warning: \"border-amber-500 bg-amber-500/10\",\n destructive: \"border-destructive bg-destructive/10\",\n};\n\nconst defaultIcon = (\n <svg className=\"h-5 w-5\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n fill=\"none\"\n />\n <path\n d=\"M12 8v5m0 4h.01\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n);\n\nexport const Alert = ({\n title,\n description,\n icon = defaultIcon,\n variant = \"info\",\n className = \"\",\n children,\n}: AlertProps) => {\n const classes =\n `flex gap-3 rounded-lg border p-4 text-sm text-foreground ${variantClasses[variant]}`\n .concat(\" \", className)\n .trim();\n\n return (\n <div\n className={classes}\n role={variant === \"destructive\" ? \"alert\" : \"status\"}\n >\n <span className=\"text-heading\">{icon}</span>\n <div className=\"space-y-1\">\n {title && (\n <p className=\"text-base font-medium text-heading\">{title}</p>\n )}\n {description && (\n <p className=\"text-muted-foreground\">{description}</p>\n )}\n {children}\n </div>\n </div>\n );\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport { motion, useInView, type TargetAndTransition } from \"framer-motion\";\nimport type { AnimatedContentProps, AnimationPreset, AnimationEase } from \"./types\";\n\n// Easing function mappings\nconst easingMap: Record<AnimationEase, number[] | string> = {\n linear: [0, 0, 1, 1],\n easeIn: [0.4, 0, 1, 1],\n easeOut: [0, 0, 0.2, 1],\n easeInOut: [0.4, 0, 0.2, 1],\n circIn: [0.55, 0, 1, 0.45],\n circOut: [0, 0.55, 0.45, 1],\n circInOut: [0.85, 0, 0.15, 1],\n backIn: [0.36, 0, 0.66, -0.56],\n backOut: [0.34, 1.56, 0.64, 1],\n backInOut: [0.68, -0.6, 0.32, 1.6],\n anticipate: \"anticipate\",\n bounce: \"easeOut\",\n elastic: \"easeOut\",\n};\n\n// Get spring config for bouncy/elastic animations\nconst getSpringConfig = (ease: AnimationEase) => {\n switch (ease) {\n case \"bounce\":\n return { type: \"spring\" as const, damping: 8, stiffness: 200, bounce: 0.5 };\n case \"elastic\":\n return { type: \"spring\" as const, damping: 10, stiffness: 100 };\n default:\n return null;\n }\n};\n\n// Preset animation configurations\nconst getPresetAnimation = (\n preset: AnimationPreset,\n distance: number,\n initialOpacity: number,\n initialScale: number,\n reverse: boolean\n): { initial: TargetAndTransition; animate: TargetAndTransition; exit: TargetAndTransition } => {\n const dir = reverse ? -1 : 1;\n\n const presets: Record<AnimationPreset, { initial: TargetAndTransition; animate: TargetAndTransition; exit: TargetAndTransition }> = {\n fade: {\n initial: { opacity: initialOpacity },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n },\n scale: {\n initial: { opacity: initialOpacity, scale: initialScale },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: initialScale },\n },\n slideUp: {\n initial: { opacity: initialOpacity, y: distance * dir },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: (distance / 2) * dir },\n },\n slideDown: {\n initial: { opacity: initialOpacity, y: -distance * dir },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: (-distance / 2) * dir },\n },\n slideLeft: {\n initial: { opacity: initialOpacity, x: distance * dir },\n animate: { opacity: 1, x: 0 },\n exit: { opacity: 0, x: (distance / 2) * dir },\n },\n slideRight: {\n initial: { opacity: initialOpacity, x: -distance * dir },\n animate: { opacity: 1, x: 0 },\n exit: { opacity: 0, x: (-distance / 2) * dir },\n },\n elastic: {\n initial: { opacity: initialOpacity, scale: initialScale, y: distance / 2 },\n animate: { opacity: 1, scale: 1, y: 0 },\n exit: { opacity: 0, scale: 0.8, y: distance / 4 },\n },\n bounce: {\n initial: { opacity: initialOpacity, scale: initialScale, y: -distance },\n animate: { opacity: 1, scale: 1, y: 0 },\n exit: { opacity: 0, scale: 0.5, y: -distance / 2 },\n },\n flip: {\n initial: { opacity: initialOpacity, rotateX: -90 * dir, scale: 0.9 },\n animate: { opacity: 1, rotateX: 0, scale: 1 },\n exit: { opacity: 0, rotateX: 90 * dir, scale: 0.9 },\n },\n zoom: {\n initial: { opacity: initialOpacity, scale: 0, rotate: -10 * dir },\n animate: { opacity: 1, scale: 1, rotate: 0 },\n exit: { opacity: 0, scale: 0.5, rotate: 5 * dir },\n },\n custom: {\n initial: { opacity: initialOpacity },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n },\n };\n\n return presets[preset];\n};\n\nexport const AnimatedContent = ({\n children,\n preset = \"fade\",\n direction = \"vertical\",\n ease = \"easeOut\",\n exitEase,\n reverse = false,\n animateOpacity = true,\n distance = 50,\n duration = 0.5,\n delay = 0,\n initialOpacity = 0,\n initialScale = 0.9,\n threshold = 0.1,\n disappearAfter = 0,\n disappearDuration = 0.3,\n triggerOnView = false,\n triggerOnce = true,\n className = \"\",\n as = \"div\",\n}: AnimatedContentProps) => {\n const ref = useRef<HTMLDivElement>(null);\n const isInView = useInView(ref, {\n once: triggerOnce,\n amount: threshold\n });\n const [isVisible, setIsVisible] = useState(!triggerOnView);\n const [hasDisappeared, setHasDisappeared] = useState(false);\n\n // Handle view-triggered animation\n useEffect(() => {\n if (triggerOnView && isInView && !isVisible) {\n setIsVisible(true);\n }\n }, [isInView, triggerOnView, isVisible]);\n\n // Handle disappear after timeout\n useEffect(() => {\n if (disappearAfter > 0 && isVisible && !hasDisappeared) {\n const timer = setTimeout(() => {\n setHasDisappeared(true);\n }, disappearAfter * 1000);\n return () => clearTimeout(timer);\n }\n }, [disappearAfter, isVisible, hasDisappeared]);\n\n // Get animation config\n const opacity = animateOpacity ? initialOpacity : 1;\n const animation = getPresetAnimation(preset, distance, opacity, initialScale, reverse);\n\n // Get transition config\n const springConfig = getSpringConfig(ease);\n const easingValue = easingMap[ease];\n\n const transition = springConfig || {\n duration,\n delay,\n ease: (typeof easingValue === \"string\" ? easingValue : easingValue) as any,\n };\n\n const exitTransition = exitEase\n ? { duration: disappearDuration, ease: easingMap[exitEase] }\n : { duration: disappearDuration };\n\n // Determine current animation state\n const shouldAnimate = triggerOnView ? isVisible : true;\n const currentState = hasDisappeared ? \"exit\" : shouldAnimate ? \"animate\" : \"initial\";\n\n const MotionComponent = (motion as any)[as] || motion.div;\n\n return (\n <MotionComponent\n ref={ref as any}\n className={className}\n initial={animation.initial}\n animate={currentState === \"animate\" ? animation.animate : currentState === \"exit\" ? animation.exit : animation.initial}\n transition={(currentState === \"exit\" ? exitTransition : transition) as any}\n style={{ perspective: preset === \"flip\" ? 1000 : undefined }}\n >\n {children}\n </MotionComponent>\n );\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport { mergeClassNames } from \"../../../utils\";\n\n\nexport interface BackgroundGradientAnimationProps {\n gradientBackgroundStart?: string;\n gradientBackgroundEnd?: string;\n firstColor?: string;\n secondColor?: string;\n thirdColor?: string;\n fourthColor?: string;\n fifthColor?: string;\n pointerColor?: string;\n size?: string;\n blendingValue?: string;\n children?: React.ReactNode;\n className?: string;\n interactive?: boolean;\n containerClassName?: string;\n}\n\nexport const BackgroundGradientAnimation = ({\n gradientBackgroundStart = \"rgb(108, 0, 162)\",\n gradientBackgroundEnd = \"rgb(0, 17, 82)\",\n firstColor = \"18, 113, 255\",\n secondColor = \"221, 74, 255\",\n thirdColor = \"100, 220, 255\",\n fourthColor = \"200, 50, 50\",\n fifthColor = \"180, 180, 50\",\n pointerColor = \"140, 100, 255\",\n size = \"80%\",\n blendingValue = \"hard-light\",\n children,\n className,\n interactive = true,\n containerClassName,\n}: BackgroundGradientAnimationProps) => {\n const interactiveRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const [curX, setCurX] = useState(0);\n const [curY, setCurY] = useState(0);\n const [tgX, setTgX] = useState(0);\n const [tgY, setTgY] = useState(0);\n\n useEffect(() => {\n function move() {\n if (!interactiveRef.current) {\n return;\n }\n setCurX(curX + (tgX - curX) / 20);\n setCurY(curY + (tgY - curY) / 20);\n interactiveRef.current.style.transform = `translate(${Math.round(\n curX\n )}px, ${Math.round(curY)}px)`;\n }\n\n move();\n }, [tgX, tgY, curX, curY]);\n\n const handleMouseMove = (event: React.MouseEvent<HTMLDivElement>) => {\n if (interactiveRef.current) {\n const rect = interactiveRef.current.getBoundingClientRect();\n setTgX(event.clientX - rect.left);\n setTgY(event.clientY - rect.top);\n }\n };\n\n const [isSafari] = useState(() =>\n typeof navigator !== \"undefined\"\n ? /^((?!chrome|android).)*safari/i.test(navigator.userAgent)\n : false\n );\n\n const blobStyle = (\n color: string,\n _animationClass: string,\n transformOrigin: string,\n opacity: number = 1\n ): React.CSSProperties => ({\n position: \"absolute\",\n width: size,\n height: size,\n top: `calc(50% - ${size} / 2)`,\n left: `calc(50% - ${size} / 2)`,\n background: `radial-gradient(circle at center, rgba(${color}, 0.8) 0, rgba(${color}, 0) 50%) no-repeat`,\n mixBlendMode: blendingValue as React.CSSProperties[\"mixBlendMode\"],\n transformOrigin,\n opacity,\n });\n\n return (\n <div\n ref={containerRef}\n className={mergeClassNames(\n \"h-screen w-screen relative overflow-hidden top-0 left-0\",\n containerClassName\n )}\n style={{\n background: `linear-gradient(40deg, ${gradientBackgroundStart}, ${gradientBackgroundEnd})`,\n }}\n >\n <svg className=\"hidden\">\n <defs>\n <filter id=\"blurMe\">\n <feGaussianBlur\n in=\"SourceGraphic\"\n stdDeviation=\"10\"\n result=\"blur\"\n />\n <feColorMatrix\n in=\"blur\"\n mode=\"matrix\"\n values=\"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 18 -8\"\n result=\"goo\"\n />\n <feBlend in=\"SourceGraphic\" in2=\"goo\" />\n </filter>\n </defs>\n </svg>\n <div className={mergeClassNames(\"\", className)}>{children}</div>\n <div\n className=\"h-full w-full\"\n style={{\n filter: isSafari ? \"blur(24px)\" : \"url(#blurMe) blur(40px)\",\n }}\n >\n {/* First blob */}\n <div\n className=\"ui:animate-gradient-first\"\n style={blobStyle(\n firstColor,\n \"animate-gradient-first\",\n \"center center\"\n )}\n />\n {/* Second blob */}\n <div\n className=\"ui:animate-gradient-second\"\n style={blobStyle(\n secondColor,\n \"animate-gradient-second\",\n \"calc(50% - 400px)\"\n )}\n />\n {/* Third blob */}\n <div\n className=\"ui:animate-gradient-third\"\n style={blobStyle(\n thirdColor,\n \"animate-gradient-third\",\n \"calc(50% + 400px)\"\n )}\n />\n {/* Fourth blob */}\n <div\n className=\"ui:animate-gradient-fourth\"\n style={blobStyle(\n fourthColor,\n \"animate-gradient-fourth\",\n \"calc(50% - 200px)\",\n 0.7\n )}\n />\n {/* Fifth blob */}\n <div\n className=\"ui:animate-gradient-fifth\"\n style={blobStyle(\n fifthColor,\n \"animate-gradient-fifth\",\n \"calc(50% - 800px) calc(50% + 800px)\"\n )}\n />\n\n {interactive && (\n <div\n ref={interactiveRef}\n onMouseMove={handleMouseMove}\n className=\"absolute w-full h-full\"\n style={{\n top: \"-50%\",\n left: \"-50%\",\n opacity: 0.7,\n background: `radial-gradient(circle at center, rgba(${pointerColor}, 0.8) 0, rgba(${pointerColor}, 0) 50%) no-repeat`,\n mixBlendMode:\n blendingValue as React.CSSProperties[\"mixBlendMode\"],\n }}\n />\n )}\n </div>\n </div>\n );\n};\n","import type { ButtonProps } from \"./types.d\";\n\nconst baseClasses = `\n inline-flex\n items-center\n justify-center\n gap-2\n cursor-pointer\n rounded-lg\n font-semibold\n leading-none\n transition-all\n duration-200\n ease-in-out\n active:scale-95\n hover:opacity-90\n disabled:opacity-50\n disabled:cursor-not-allowed\n`;\nconst variantClassMap = {\n primary:\n \"bg-button-primary-background hover:bg-button-primary-background-hover text-white shadow-md\",\n secondary:\n \"bg-neutral-200 dark:bg-neutral-700 border border-neutral-300 dark:border-neutral-600 text-neutral-800 dark:text-white shadow-sm hover:bg-neutral-300 dark:hover:bg-neutral-600\",\n};\nconst sizeClassMap = {\n small: \"py-2 px-3 text-xs\",\n medium: \"py-2.5 px-4 text-sm\",\n large: \"py-3 px-6 text-base\",\n};\n\nexport const Button = ({\n primary = false,\n size = \"medium\",\n backgroundColor,\n label,\n children,\n type = \"button\",\n className = \"\",\n ...props\n}: ButtonProps) => {\n const variantClasses = variantClassMap[primary ? \"primary\" : \"secondary\"];\n const sizeClasses =\n sizeClassMap[size as keyof typeof sizeClassMap] || sizeClassMap.medium;\n\n return (\n <button\n type={type}\n className={`${baseClasses} ${variantClasses} ${sizeClasses} ${className}`.trim()}\n style={backgroundColor ? { backgroundColor } : undefined}\n {...props}\n >\n {children}\n {label && <span>{label}</span>}\n </button>\n );\n};\n","import { mergeClassNames } from \"../../../utils\";\nimport { motion } from \"framer-motion\";\nimport { useCallback, useEffect, useState } from \"react\";\n\ntype Direction = \"TOP\" | \"LEFT\" | \"BOTTOM\" | \"RIGHT\";\n\ntype HoverBorderGradientProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n containerClassName?: string;\n className?: string;\n duration?: number;\n clockwise?: boolean;\n children?: React.ReactNode;\n};\n\nconst movingMap: Record<Direction, string> = {\n TOP: \"radial-gradient(50.7% 50% at 50% 0%, var(--color-hover-gradient) 0%, transparent 100%)\",\n LEFT: \"radial-gradient(25.6% 43.1% at 0% 50%, var(--color-hover-gradient) 0%, transparent 100%)\",\n BOTTOM:\n \"radial-gradient(50.7% 50% at 50% 100%, var(--color-hover-gradient) 0%, transparent 100%)\",\n RIGHT:\n \"radial-gradient(25.2% 41% at 100% 50%, var(--color-hover-gradient) 0%, transparent 100%)\",\n};\n\nconst highlight = `radial-gradient(85% 181% at 50% 50%, var(--color-hover-gradient) 0%, transparent 100%)`;\n\nexport function HoverBorderGradient({\n containerClassName,\n className,\n duration = 1,\n clockwise = true,\n children,\n ...props\n}: HoverBorderGradientProps) {\n const [hovered, setHovered] = useState(false);\n const [direction, setDirection] = useState<Direction>(\"TOP\");\n\n const rotateDirection = useCallback(\n (current: Direction): Direction => {\n const directions: Direction[] = [\"TOP\", \"LEFT\", \"BOTTOM\", \"RIGHT\"];\n const index = directions.indexOf(current);\n const nextIndex = clockwise\n ? (index - 1 + directions.length) % directions.length\n : (index + 1) % directions.length;\n return directions[nextIndex];\n },\n [clockwise]\n );\n\n useEffect(() => {\n if (!hovered) {\n const interval = setInterval(() => {\n setDirection((prevState) => rotateDirection(prevState));\n }, duration * 1000);\n return () => clearInterval(interval);\n }\n }, [hovered, duration, rotateDirection]);\n\n const handleMouseEnter = () => setHovered(true);\n const handleMouseLeave = () => setHovered(false);\n\n return (\n <button\n type=\"button\"\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n className={mergeClassNames(\n \"relative flex h-min w-fit flex-col flex-nowrap content-center items-center justify-center gap-10 overflow-visible rounded-lg border border-neutral-300 dark:border-white/10 p-px transition duration-500\",\n containerClassName\n )}\n {...props}\n >\n <div\n className={mergeClassNames(\n \"bg-white dark:bg-neutral-900 text-neutral-900 dark:text-white z-10 w-auto rounded-[inherit] px-4 py-2\",\n className\n )}\n >\n {children}\n </div>\n <motion.div\n className={mergeClassNames(\n \"absolute inset-0 z-0 flex-none overflow-hidden rounded-[inherit]\"\n )}\n style={{\n filter: \"blur(2px)\",\n position: \"absolute\",\n width: \"100%\",\n height: \"100%\",\n }}\n initial={{ background: movingMap[direction] }}\n animate={{\n background: hovered\n ? [movingMap[direction], highlight]\n : movingMap[direction],\n }}\n transition={{ ease: \"linear\", duration: duration ?? 1 }}\n />\n </button>\n );\n}\n","import { HoverBorderGradient } from \"../hover-border-gradient/HoverBorderGradient\";\n\ninterface ButtonHoverBorderGradientProps {\n children?: React.ReactNode;\n}\n\nexport const ButtonHoverBorderGradient: React.FC<\n ButtonHoverBorderGradientProps\n> = ({ children, ...props }) => {\n return (\n <div className=\"m-40 flex justify-center text-center\" {...props}>\n <HoverBorderGradient\n containerClassName=\"rounded\"\n className=\"flex items-center space-x-2 bg-white text-black dark:bg-black dark:text-white\"\n >\n {children}\n </HoverBorderGradient>\n </div>\n );\n};\n","import { useMemo, useState } from \"react\";\nimport type { CalendarProps } from \"./types\";\n\nconst dayNames = [\"SUN\", \"MON\", \"TUE\", \"WED\", \"THU\", \"FRI\", \"SAT\"];\n\nconst getDaysInMonth = (month: number, year: number) => {\n const firstDay = new Date(year, month, 1);\n const lastDay = new Date(year, month + 1, 0);\n const startWeekday = firstDay.getDay();\n const daysInMonth = lastDay.getDate();\n const days: Array<Date | null> = [];\n\n for (let i = 0; i < startWeekday; i += 1) {\n days.push(null);\n }\n for (let day = 1; day <= daysInMonth; day += 1) {\n days.push(new Date(year, month, day));\n }\n while (days.length % 7 !== 0) {\n days.push(null);\n }\n return days;\n};\n\nconst normalizeRange = (range?: { start: Date | null; end: Date | null }) => ({\n start: range?.start ?? null,\n end: range?.end ?? null,\n});\n\nexport const Calendar = ({\n value = null,\n range,\n selectionMode = \"single\",\n onSelect,\n onRangeSelect,\n month,\n year,\n onMonthChange,\n footer,\n className = \"\",\n}: CalendarProps) => {\n const today = new Date();\n const [internalMonth, setInternalMonth] = useState(month ?? today.getMonth());\n const [internalYear, setInternalYear] = useState(year ?? today.getFullYear());\n const [internalRange, setInternalRange] = useState(normalizeRange(range));\n\n const currentMonth = month ?? internalMonth;\n const currentYear = year ?? internalYear;\n\n const updateMonth = (offset: number) => {\n const nextDate = new Date(currentYear, currentMonth + offset, 1);\n if (month === undefined) {\n setInternalMonth(nextDate.getMonth());\n setInternalYear(nextDate.getFullYear());\n }\n onMonthChange?.(nextDate.getMonth(), nextDate.getFullYear());\n };\n\n const days = useMemo(\n () => getDaysInMonth(currentMonth, currentYear),\n [currentMonth, currentYear]\n );\n\n const currentRange = range ? normalizeRange(range) : internalRange;\n\n const isSameDay = (a: Date | null, b: Date | null) => {\n if (!a || !b) return false;\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n };\n\n const isInRange = (date: Date | null) => {\n if (!date || !currentRange.start || !currentRange.end) return false;\n const time = date.getTime();\n const start = currentRange.start.getTime();\n const end = currentRange.end.getTime();\n return time >= Math.min(start, end) && time <= Math.max(start, end);\n };\n\n const handleSelect = (date: Date) => {\n if (selectionMode === \"range\") {\n const existing = currentRange;\n let nextRange = existing;\n if (!existing.start || (existing.start && existing.end)) {\n nextRange = { start: date, end: null };\n } else if (!existing.end) {\n if (date.getTime() < existing.start.getTime()) {\n nextRange = { start: date, end: existing.start };\n } else {\n nextRange = { start: existing.start, end: date };\n }\n }\n\n if (!range) {\n setInternalRange(nextRange);\n }\n\n onRangeSelect?.(nextRange);\n return;\n }\n\n onSelect?.(date);\n };\n\n return (\n <div\n className={`w-[320px] rounded-lg border border-white/20 dark:border-white/10 backdrop-blur-xl bg-white/70 dark:bg-neutral-900/70 p-4 shadow-xl ${className}`.trim()}\n >\n <div className=\"flex items-center justify-between mb-4\">\n <button\n type=\"button\"\n className=\"text-sm text-muted-foreground\"\n onClick={() => updateMonth(-1)}\n aria-label=\"Previous month\"\n >\n ←\n </button>\n <p className=\"text-sm font-medium text-heading\">\n {new Date(currentYear, currentMonth).toLocaleString(undefined, {\n month: \"long\",\n year: \"numeric\",\n })}\n </p>\n <button\n type=\"button\"\n className=\"text-sm text-muted-foreground\"\n onClick={() => updateMonth(1)}\n aria-label=\"Next month\"\n >\n →\n </button>\n </div>\n <div className=\"grid grid-cols-7 gap-2 text-center\">\n {dayNames.map((day) => (\n <span\n key={day}\n className=\"text-xs font-medium text-muted-foreground\"\n >\n {day}\n </span>\n ))}\n {days.map((date, index) => {\n const isSelected =\n selectionMode === \"single\" && isSameDay(date, value);\n const isToday = isSameDay(date, today);\n const inRange = selectionMode === \"range\" && isInRange(date);\n const isRangeStart =\n selectionMode === \"range\" && isSameDay(date, currentRange.start);\n const isRangeEnd =\n selectionMode === \"range\" && isSameDay(date, currentRange.end);\n\n return date ? (\n <button\n type=\"button\"\n key={date.toISOString()}\n className={`rounded-md px-0 py-2 text-sm transition-colors ${isSelected || isRangeStart || isRangeEnd\n ? \"bg-ring text-white\"\n : inRange\n ? \"bg-ring/10 text-heading\"\n : isToday\n ? \"border border-ring text-heading\"\n : \"text-muted-foreground\"\n }`}\n onClick={() => handleSelect(date)}\n >\n {date.getDate()}\n </button>\n ) : (\n <span key={`empty-${index}`} />\n );\n })}\n </div>\n {footer && <div className=\"mt-4\">{footer}</div>}\n </div>\n );\n};\n","import type { CardProps } from \"./types\";\n\nexport const Card = ({ title, description }: CardProps) => {\n return (\n <div className=\"ui\">\n <div className=\"backdrop-blur-xl bg-white/70 dark:bg-neutral-900/70 border border-neutral-200 dark:border-neutral-700 rounded-lg shadow-lg overflow-hidden sm:max-w-xs lg:max-w-sm xl:max-w-md transition-all duration-300 hover:-translate-y-1 hover:shadow-xl\">\n <div className=\"px-6 py-4\">\n <h2 className=\"text-neutral-900 dark:text-white font-bold text-xl mb-2\">\n {title}\n </h2>\n <p className=\"text-neutral-700 dark:text-neutral-300 bg-transparent border-none rounded-none font-sans text-base\">\n {description}\n </p>\n </div>\n </div>\n </div>\n );\n};\n","import { useState, useEffect, useCallback, useRef } from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type { CarouselProps, CarouselAnimation } from \"./types\";\n\nconst ChevronLeft = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M15 19l-7-7 7-7\" />\n </svg>\n);\n\nconst ChevronRight = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9 5l7 7-7 7\" />\n </svg>\n);\n\nconst variantStyles = {\n default: \"ui:bg-white ui:dark:bg-neutral-900 ui:shadow-xl\",\n glass: \"ui:bg-white/60 ui:dark:bg-neutral-900/50 ui:backdrop-blur-2xl ui:border ui:border-white/40 ui:dark:border-white/10\",\n minimal: \"ui:bg-transparent\",\n};\n\n// Animation variants for different carousel transitions\nconst getAnimationVariants = (animation: CarouselAnimation) => {\n const variants = {\n slide: {\n enter: (direction: number) => ({\n x: direction > 0 ? \"100%\" : \"-100%\",\n opacity: 0,\n }),\n center: { x: 0, opacity: 1 },\n exit: (direction: number) => ({\n x: direction < 0 ? \"100%\" : \"-100%\",\n opacity: 0,\n }),\n },\n fade: {\n enter: () => ({ opacity: 0 }),\n center: { opacity: 1 },\n exit: () => ({ opacity: 0 }),\n },\n scale: {\n enter: (direction: number) => ({\n scale: 0.8,\n opacity: 0,\n x: direction > 0 ? 50 : -50,\n }),\n center: { scale: 1, opacity: 1, x: 0 },\n exit: (direction: number) => ({\n scale: 0.8,\n opacity: 0,\n x: direction < 0 ? 50 : -50,\n }),\n },\n flip: {\n enter: (direction: number) => ({\n rotateY: direction > 0 ? 90 : -90,\n opacity: 0,\n }),\n center: { rotateY: 0, opacity: 1 },\n exit: (direction: number) => ({\n rotateY: direction < 0 ? 90 : -90,\n opacity: 0,\n }),\n },\n cube: {\n enter: (direction: number) => ({\n rotateY: direction > 0 ? 90 : -90,\n x: direction > 0 ? \"50%\" : \"-50%\",\n opacity: 0,\n scale: 0.8,\n }),\n center: { rotateY: 0, x: 0, opacity: 1, scale: 1 },\n exit: (direction: number) => ({\n rotateY: direction < 0 ? 90 : -90,\n x: direction < 0 ? \"50%\" : \"-50%\",\n opacity: 0,\n scale: 0.8,\n }),\n },\n cards: {\n enter: (direction: number) => ({\n scale: 0.9,\n opacity: 0,\n y: direction > 0 ? 100 : -100,\n rotateZ: direction > 0 ? 5 : -5,\n }),\n center: { scale: 1, opacity: 1, y: 0, rotateZ: 0 },\n exit: (direction: number) => ({\n scale: 0.9,\n opacity: 0,\n y: direction < 0 ? 100 : -100,\n rotateZ: direction < 0 ? 5 : -5,\n }),\n },\n };\n return variants[animation];\n};\n\n// Transition configs for each animation\nconst getTransitionConfig = (animation: CarouselAnimation, duration: number) => {\n const durationSec = duration / 1000;\n const configs: Record<CarouselAnimation, object> = {\n slide: {\n x: { type: \"spring\", stiffness: 300, damping: 30 },\n opacity: { duration: durationSec },\n },\n fade: {\n opacity: { duration: durationSec, ease: \"easeInOut\" },\n },\n scale: {\n type: \"spring\",\n stiffness: 200,\n damping: 25,\n opacity: { duration: durationSec },\n },\n flip: {\n type: \"spring\",\n stiffness: 100,\n damping: 20,\n opacity: { duration: durationSec * 0.5 },\n },\n cube: {\n type: \"spring\",\n stiffness: 100,\n damping: 20,\n opacity: { duration: durationSec * 0.5 },\n },\n cards: {\n type: \"spring\",\n stiffness: 150,\n damping: 20,\n opacity: { duration: durationSec },\n },\n };\n return configs[animation];\n};\n\nexport const Carousel = ({\n items,\n className,\n autoPlay = 0,\n showArrows = true,\n showDots = true,\n infinite = true,\n pauseOnHover = true,\n animationDuration = 500,\n // gap and slidesPerView reserved for future multi-slide support\n gap: _gap = 0,\n slidesPerView: _slidesPerView = 1,\n renderArrow,\n renderDot,\n onSlideChange,\n variant = \"glass\",\n height = 400,\n style,\n initialSlide = 0,\n draggable = true,\n animation = \"slide\",\n}: CarouselProps) => {\n const animationVariants = getAnimationVariants(animation);\n const transitionConfig = getTransitionConfig(animation, animationDuration);\n const [[currentIndex, direction], setSlide] = useState([initialSlide, 0]);\n const [isPaused, setIsPaused] = useState(false);\n const intervalRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const totalSlides = items.length;\n\n const goToSlide = useCallback(\n (index: number, dir?: number) => {\n let newIndex = index;\n if (infinite) {\n if (index < 0) newIndex = totalSlides - 1;\n else if (index >= totalSlides) newIndex = 0;\n } else {\n if (index < 0) newIndex = 0;\n else if (index >= totalSlides) newIndex = totalSlides - 1;\n }\n const newDirection = dir ?? (newIndex > currentIndex ? 1 : -1);\n setSlide([newIndex, newDirection]);\n onSlideChange?.(newIndex);\n },\n [currentIndex, infinite, totalSlides, onSlideChange]\n );\n\n const goNext = useCallback(() => goToSlide(currentIndex + 1, 1), [currentIndex, goToSlide]);\n const goPrev = useCallback(() => goToSlide(currentIndex - 1, -1), [currentIndex, goToSlide]);\n\n // Auto-play\n useEffect(() => {\n if (autoPlay > 0 && !isPaused) {\n intervalRef.current = setInterval(goNext, autoPlay);\n }\n return () => {\n if (intervalRef.current) clearInterval(intervalRef.current);\n };\n }, [autoPlay, isPaused, goNext]);\n\n // Keyboard navigation\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"ArrowLeft\") goPrev();\n if (e.key === \"ArrowRight\") goNext();\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [goNext, goPrev]);\n\n // Drag handling\n const handleDragEnd = (\n _event: MouseEvent | TouchEvent | PointerEvent,\n info: { offset: { x: number; y: number }; velocity: { x: number; y: number } }\n ) => {\n const threshold = 50;\n if (info.offset.x < -threshold) goNext();\n else if (info.offset.x > threshold) goPrev();\n };\n\n const currentItem = items[currentIndex];\n\n return (\n <div\n className={mergeClassNames(\n \"ui:relative ui:overflow-hidden ui:rounded-2xl ui:w-full\",\n variantStyles[variant],\n className\n )}\n style={{ height: typeof height === \"number\" ? `${height}px` : height, ...style }}\n onMouseEnter={() => pauseOnHover && setIsPaused(true)}\n onMouseLeave={() => pauseOnHover && setIsPaused(false)}\n >\n {/* Slides */}\n <AnimatePresence initial={false} custom={direction} mode=\"wait\">\n <motion.div\n key={currentIndex}\n custom={direction}\n variants={animationVariants}\n initial=\"enter\"\n animate=\"center\"\n exit=\"exit\"\n transition={transitionConfig}\n drag={draggable ? \"x\" : false}\n dragConstraints={{ left: 0, right: 0 }}\n dragElastic={0.2}\n onDragEnd={handleDragEnd}\n className=\"ui:absolute ui:inset-0 ui:flex ui:items-center ui:justify-center ui:cursor-grab active:ui:cursor-grabbing\"\n style={{ perspective: animation === \"flip\" || animation === \"cube\" ? 1000 : undefined }}\n >\n {currentItem.image ? (\n <div className=\"ui:relative ui:w-full ui:h-full\">\n <img\n src={currentItem.image}\n alt={currentItem.alt || currentItem.title || \"Carousel slide\"}\n className=\"ui:w-full ui:h-full ui:object-cover\"\n />\n {(currentItem.title || currentItem.description) && (\n <div className=\"ui:absolute ui:bottom-0 ui:left-0 ui:right-0 ui:p-6 ui:bg-gradient-to-t ui:from-black/70 ui:to-transparent\">\n {currentItem.title && (\n <h3 className=\"ui:text-2xl ui:font-bold ui:text-white ui:mb-2\">\n {currentItem.title}\n </h3>\n )}\n {currentItem.description && (\n <p className=\"ui:text-white/80\">{currentItem.description}</p>\n )}\n </div>\n )}\n </div>\n ) : (\n <div className=\"ui:w-full ui:h-full ui:flex ui:items-center ui:justify-center ui:p-6\">\n {currentItem.content}\n </div>\n )}\n </motion.div>\n </AnimatePresence>\n\n {/* Navigation Arrows */}\n {showArrows && totalSlides > 1 && (\n <>\n {renderArrow ? (\n <>\n {renderArrow({ direction: \"prev\", onClick: goPrev })}\n {renderArrow({ direction: \"next\", onClick: goNext })}\n </>\n ) : (\n <>\n <motion.button\n type=\"button\"\n onClick={goPrev}\n className=\"ui:absolute ui:left-4 ui:top-1/2 ui:-translate-y-1/2 ui:z-20 ui:p-2 ui:rounded-full ui:bg-white/80 ui:dark:bg-neutral-800/80 ui:backdrop-blur-sm ui:text-neutral-800 ui:dark:text-white ui:shadow-lg ui:transition-all hover:ui:bg-white ui:dark:hover:bg-neutral-700\"\n whileHover={{ scale: 1.1 }}\n whileTap={{ scale: 0.9 }}\n aria-label=\"Previous slide\"\n >\n <ChevronLeft className=\"ui:w-6 ui:h-6\" />\n </motion.button>\n <motion.button\n type=\"button\"\n onClick={goNext}\n className=\"ui:absolute ui:right-4 ui:top-1/2 ui:-translate-y-1/2 ui:z-20 ui:p-2 ui:rounded-full ui:bg-white/80 ui:dark:bg-neutral-800/80 ui:backdrop-blur-sm ui:text-neutral-800 ui:dark:text-white ui:shadow-lg ui:transition-all hover:ui:bg-white ui:dark:hover:bg-neutral-700\"\n whileHover={{ scale: 1.1 }}\n whileTap={{ scale: 0.9 }}\n aria-label=\"Next slide\"\n >\n <ChevronRight className=\"ui:w-6 ui:h-6\" />\n </motion.button>\n </>\n )}\n </>\n )}\n\n {/* Dot Indicators */}\n {showDots && totalSlides > 1 && (\n <div className=\"ui:absolute ui:bottom-4 ui:left-1/2 ui:-translate-x-1/2 ui:z-20 ui:flex ui:gap-2 ui:p-2 ui:rounded-full ui:bg-black/20 ui:dark:bg-white/10 ui:backdrop-blur-sm\">\n {items.map((_, index) =>\n renderDot ? (\n renderDot({\n index,\n active: index === currentIndex,\n onClick: () => goToSlide(index),\n })\n ) : (\n <motion.button\n key={index}\n type=\"button\"\n onClick={() => goToSlide(index)}\n className={mergeClassNames(\n \"ui:rounded-full ui:transition-all ui:duration-300\",\n index === currentIndex\n ? \"ui:w-8 ui:h-2.5 ui:bg-white ui:shadow-lg\"\n : \"ui:w-2.5 ui:h-2.5 ui:bg-white/60 hover:ui:bg-white/90\"\n )}\n whileHover={{ scale: 1.2 }}\n whileTap={{ scale: 0.9 }}\n aria-label={`Go to slide ${index + 1}`}\n aria-current={index === currentIndex ? \"true\" : undefined}\n />\n )\n )}\n </div>\n )}\n\n {/* Progress indicator */}\n {autoPlay > 0 && !isPaused && (\n <motion.div\n className=\"ui:absolute ui:bottom-0 ui:left-0 ui:h-1 ui:bg-primary/80 ui:rounded-full\"\n initial={{ width: \"0%\" }}\n animate={{ width: \"100%\" }}\n transition={{ duration: autoPlay / 1000, ease: \"linear\" }}\n key={currentIndex}\n />\n )}\n </div>\n );\n};\n\nCarousel.displayName = \"Carousel\";\n\nexport default Carousel;\n","import type { CheckboxProps } from \"./types\";\nimport { forwardRef, useId } from \"react\";\n\nconst sanitizeId = (value: string) => value.replace(/[^a-zA-Z0-9_-]/g, \"-\");\n\nconst colorClasses: Record<NonNullable<CheckboxProps[\"color\"]>, string> = {\n red: \"checked:bg-red-500 dark:checked:bg-red-400\",\n blue: \"checked:bg-blue-500 dark:checked:bg-blue-400\",\n green: \"checked:bg-green-500 dark:checked:bg-green-400\",\n yellow: \"checked:bg-yellow-500 dark:checked:bg-yellow-400\",\n teal: \"checked:bg-teal-500 dark:checked:bg-teal-400\",\n primary: \"checked:bg-primary dark:checked:bg-primary\",\n};\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className = \"\", label, error, id, extra = \"\", color = \"primary\", ...props }, ref) => {\n const generatedId = useId();\n const checkboxId = id || `checkbox-${sanitizeId(generatedId)}`;\n\n // Custom CheckIcon SVG (stroke-based design)\n const checkmarkIcon = `url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M5 13l4 4L19 7'/%3e%3c/svg%3e\")`;\n\n // Check if color is a predefined color name or a custom value\n const isPredefinedColor = color in colorClasses;\n const customColorStyle = !isPredefinedColor ? color : undefined;\n\n return (\n <>\n <style>{`\n .checkbox-custom-${checkboxId}:checked {\n background-image: ${checkmarkIcon};\n background-size: 70%;\n background-position: center;\n background-repeat: no-repeat;\n ${customColorStyle ? `background-color: ${customColorStyle} !important;` : ''}\n }\n `}</style>\n <div className=\"flex items-center space-x-2\">\n <input\n ref={ref}\n type=\"checkbox\"\n id={checkboxId}\n className={`checkbox-custom-${checkboxId} peer relative flex h-5 min-h-[20px] w-5 min-w-[20px] appearance-none items-center justify-center rounded-md border border-gray-300 transition duration-200 outline-none checked:border-none checked:text-white hover:cursor-pointer dark:border-white/30 ${isPredefinedColor ? colorClasses[color as keyof typeof colorClasses] : \"\"\n } ${error ? \"border-red-500 dark:border-red-400\" : \"\"} ${extra} ${className}`}\n {...props}\n />\n {label && (\n <label\n htmlFor={checkboxId}\n className=\"text-sm font-medium leading-none text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer\"\n >\n {label}\n </label>\n )}\n {error && (\n <p className=\"text-sm font-medium text-destructive mt-1\">\n {error}\n </p>\n )}\n </div>\n </>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n","import { forwardRef } from \"react\";\n\nexport type ChipVariant = \"filled\" | \"outlined\" | \"soft\" | \"glass\";\nexport type ChipColor =\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"info\";\nexport type ChipSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ChipProps {\n /** The content of the chip */\n children: React.ReactNode;\n /** The variant style of the chip */\n variant?: ChipVariant;\n /** The color scheme of the chip */\n color?: ChipColor;\n /** The size of the chip */\n size?: ChipSize;\n /** Icon or element to display at the start */\n startIcon?: React.ReactNode;\n /** Icon or element to display at the end */\n endIcon?: React.ReactNode;\n /** Makes the chip removable with an X button */\n onRemove?: () => void;\n /** Makes the chip clickable */\n onClick?: () => void;\n /** Whether the chip is disabled */\n disabled?: boolean;\n /** Custom className */\n className?: string;\n /** Whether the chip should have a dot indicator */\n dot?: boolean;\n /** Dot color (uses chip color by default) */\n dotColor?: string;\n /** Maximum width for the chip - text will truncate with ellipsis if exceeded */\n maxWidth?: number | string;\n}\n\nconst sizeStyles: Record<ChipSize, string> = {\n sm: \"px-2.5 py-1 text-xs gap-1.5\",\n md: \"px-3 py-1.5 text-sm gap-2\",\n lg: \"px-4 py-2 text-base gap-2.5\",\n};\n\nconst dotSizeStyles: Record<ChipSize, string> = {\n sm: \"w-1.5 h-1.5\",\n md: \"w-2 h-2\",\n lg: \"w-2.5 h-2.5\",\n};\n\nconst iconSizeStyles: Record<ChipSize, string> = {\n sm: \"w-3.5 h-3.5\",\n md: \"w-4 h-4\",\n lg: \"w-5 h-5\",\n};\n\nconst colorStyles: Record<ChipVariant, Record<ChipColor, string>> = {\n filled: {\n default:\n \"bg-gradient-to-br from-neutral-100 to-neutral-200 text-neutral-800 shadow-sm dark:from-neutral-700 dark:to-neutral-800 dark:text-neutral-100 border border-neutral-200 dark:border-neutral-600\",\n primary:\n \"bg-gradient-to-br from-primary-500 to-primary-600 text-white shadow-md shadow-primary-500/30 dark:shadow-primary-500/20\",\n secondary:\n \"bg-gradient-to-br from-purple-500 to-purple-600 text-white shadow-md shadow-purple-500/30 dark:shadow-purple-500/20\",\n success:\n \"bg-gradient-to-br from-green-500 to-green-600 text-white shadow-md shadow-green-500/30 dark:shadow-green-500/20\",\n warning:\n \"bg-gradient-to-br from-amber-500 to-amber-600 text-white shadow-md shadow-amber-500/30 dark:shadow-amber-500/20\",\n error:\n \"bg-gradient-to-br from-red-500 to-red-600 text-white shadow-md shadow-red-500/30 dark:shadow-red-500/20\",\n info: \"bg-gradient-to-br from-blue-500 to-blue-600 text-white shadow-md shadow-blue-500/30 dark:shadow-blue-500/20\",\n },\n outlined: {\n default:\n \"border-2 border-neutral-300 text-neutral-700 bg-transparent dark:border-neutral-600 dark:text-neutral-200 hover:bg-neutral-50 dark:hover:bg-neutral-800/50\",\n primary:\n \"border-2 border-primary-500 text-primary-600 bg-transparent dark:text-primary-400 hover:bg-primary-50 dark:hover:bg-primary-900/20\",\n secondary:\n \"border-2 border-purple-500 text-purple-600 bg-transparent dark:text-purple-400 hover:bg-purple-50 dark:hover:bg-purple-900/20\",\n success:\n \"border-2 border-green-500 text-green-600 bg-transparent dark:text-green-400 hover:bg-green-50 dark:hover:bg-green-900/20\",\n warning:\n \"border-2 border-amber-500 text-amber-600 bg-transparent dark:text-amber-400 hover:bg-amber-50 dark:hover:bg-amber-900/20\",\n error:\n \"border-2 border-red-500 text-red-600 bg-transparent dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/20\",\n info: \"border-2 border-blue-500 text-blue-600 bg-transparent dark:text-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/20\",\n },\n soft: {\n default:\n \"bg-neutral-100 text-neutral-800 dark:bg-neutral-800/60 dark:text-neutral-200 backdrop-blur-sm border border-neutral-200/50 dark:border-neutral-700/50\",\n primary:\n \"bg-primary-100 text-primary-700 dark:bg-primary-900/40 dark:text-primary-300 backdrop-blur-sm border border-primary-200/50 dark:border-primary-800/50\",\n secondary:\n \"bg-purple-100 text-purple-700 dark:bg-purple-900/40 dark:text-purple-300 backdrop-blur-sm border border-purple-200/50 dark:border-purple-800/50\",\n success:\n \"bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300 backdrop-blur-sm border border-green-200/50 dark:border-green-800/50\",\n warning:\n \"bg-amber-100 text-amber-700 dark:bg-amber-900/40 dark:text-amber-300 backdrop-blur-sm border border-amber-200/50 dark:border-amber-800/50\",\n error:\n \"bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-300 backdrop-blur-sm border border-red-200/50 dark:border-red-800/50\",\n info: \"bg-blue-100 text-blue-700 dark:bg-blue-900/40 dark:text-blue-300 backdrop-blur-sm border border-blue-200/50 dark:border-blue-800/50\",\n },\n glass: {\n default:\n \"bg-white/70 text-neutral-800 dark:bg-neutral-800/70 dark:text-neutral-100 backdrop-blur-xl border border-white/20 dark:border-white/10 shadow-lg\",\n primary:\n \"bg-primary-500/20 text-primary-700 dark:bg-primary-500/30 dark:text-primary-200 backdrop-blur-xl border border-primary-300/30 dark:border-primary-400/20 shadow-lg shadow-primary-500/10\",\n secondary:\n \"bg-purple-500/20 text-purple-700 dark:bg-purple-500/30 dark:text-purple-200 backdrop-blur-xl border border-purple-300/30 dark:border-purple-400/20 shadow-lg shadow-purple-500/10\",\n success:\n \"bg-green-500/20 text-green-700 dark:bg-green-500/30 dark:text-green-200 backdrop-blur-xl border border-green-300/30 dark:border-green-400/20 shadow-lg shadow-green-500/10\",\n warning:\n \"bg-amber-500/20 text-amber-700 dark:bg-amber-500/30 dark:text-amber-200 backdrop-blur-xl border border-amber-300/30 dark:border-amber-400/20 shadow-lg shadow-amber-500/10\",\n error:\n \"bg-red-500/20 text-red-700 dark:bg-red-500/30 dark:text-red-200 backdrop-blur-xl border border-red-300/30 dark:border-red-400/20 shadow-lg shadow-red-500/10\",\n info: \"bg-blue-500/20 text-blue-700 dark:bg-blue-500/30 dark:text-blue-200 backdrop-blur-xl border border-blue-300/30 dark:border-blue-400/20 shadow-lg shadow-blue-500/10\",\n },\n};\n\nconst dotColorStyles: Record<ChipColor, string> = {\n default: \"bg-neutral-500 dark:bg-neutral-400\",\n primary: \"bg-primary-500\",\n secondary: \"bg-purple-500\",\n success: \"bg-green-500\",\n warning: \"bg-amber-500\",\n error: \"bg-red-500\",\n info: \"bg-blue-500\",\n};\n\nconst Chip = forwardRef<HTMLSpanElement, ChipProps>(\n (\n {\n children,\n variant = \"soft\",\n color = \"default\",\n size = \"md\",\n startIcon,\n endIcon,\n onRemove,\n onClick,\n disabled = false,\n className = \"\",\n dot = false,\n dotColor,\n maxWidth,\n },\n ref\n ) => {\n const isClickable = onClick !== undefined;\n const isRemovable = onRemove !== undefined;\n\n const baseStyles = `\n inline-flex items-center font-medium rounded-full transition-all duration-200\n ${sizeStyles[size]}\n ${colorStyles[variant][color]}\n ${isClickable && !disabled\n ? \"cursor-pointer hover:scale-105 hover:shadow-lg active:scale-95\"\n : \"\"\n }\n ${disabled ? \"opacity-50 cursor-not-allowed grayscale\" : \"\"}\n ${maxWidth ? \"max-w-full\" : \"\"}\n ${className}\n `;\n\n const handleClick = () => {\n if (!disabled && onClick) {\n onClick();\n }\n };\n\n const handleRemove = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!disabled && onRemove) {\n onRemove();\n }\n };\n\n return (\n <span\n ref={ref}\n className={baseStyles}\n onClick={handleClick}\n role={isClickable ? \"button\" : undefined}\n tabIndex={isClickable && !disabled ? 0 : undefined}\n style={\n maxWidth\n ? {\n maxWidth:\n typeof maxWidth === \"number\" ? `${maxWidth}px` : maxWidth,\n }\n : undefined\n }\n onKeyDown={(e) => {\n if (\n isClickable &&\n !disabled &&\n (e.key === \"Enter\" || e.key === \" \")\n ) {\n e.preventDefault();\n onClick?.();\n }\n }}\n >\n {dot && (\n <span\n className={`rounded-full flex-shrink-0 animate-pulse ${dotSizeStyles[size]\n } ${dotColor ? \"\" : dotColorStyles[color]}`}\n style={dotColor ? { backgroundColor: dotColor } : undefined}\n />\n )}\n {startIcon && (\n <span className={`flex-shrink-0 ${iconSizeStyles[size]}`}>\n {startIcon}\n </span>\n )}\n <span className=\"truncate font-semibold\">{children}</span>\n {endIcon && !isRemovable && (\n <span className={`flex-shrink-0 ${iconSizeStyles[size]}`}>\n {endIcon}\n </span>\n )}\n {isRemovable && (\n <button\n type=\"button\"\n onClick={handleRemove}\n disabled={disabled}\n className={`\n flex-shrink-0 rounded-full p-0.5 ml-1 transition-all duration-200\n hover:bg-black/20 dark:hover:bg-white/20 hover:scale-110\n focus:outline-none focus:ring-2 focus:ring-current focus:ring-offset-1\n ${disabled ? \"cursor-not-allowed\" : \"cursor-pointer\"}\n `}\n aria-label=\"Remove\"\n >\n <svg\n className={iconSizeStyles[size]}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n )}\n </span>\n );\n }\n);\n\nChip.displayName = \"Chip\";\n\nexport default Chip;\nexport { Chip };\n\n","import { useState, useRef } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type { ChromaGridProps, ChromaGridItem } from \"./types\";\n\nconst borderRadiusMap = {\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n \"2xl\": \"rounded-2xl\",\n};\n\nconst defaultColors = [\n \"linear-gradient(135deg, #667eea 0%, #764ba2 100%)\",\n \"linear-gradient(135deg, #f093fb 0%, #f5576c 100%)\",\n \"linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)\",\n \"linear-gradient(135deg, #43e97b 0%, #38f9d7 100%)\",\n \"linear-gradient(135deg, #fa709a 0%, #fee140 100%)\",\n \"linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)\",\n \"linear-gradient(135deg, #ff9a9e 0%, #fecfef 100%)\",\n \"linear-gradient(135deg, #ffecd2 0%, #fcb69f 100%)\",\n];\n\nconst getAnimation = (animation: string, index: number, staggerDelay: number) => {\n const delay = index * staggerDelay / 1000;\n\n switch (animation) {\n case \"wave\":\n return {\n initial: { opacity: 0, y: 30, rotateX: -15 },\n animate: { opacity: 1, y: 0, rotateX: 0 },\n transition: { delay, duration: 0.6, ease: [0.23, 1, 0.32, 1] as const },\n };\n case \"pulse\":\n return {\n initial: { scale: 0.8, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: { delay, duration: 0.5, type: \"spring\" as const, stiffness: 200 },\n };\n case \"fadeIn\":\n return {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n transition: { delay, duration: 0.4 },\n };\n case \"scale\":\n return {\n initial: { scale: 0, opacity: 0 },\n animate: { scale: 1, opacity: 1 },\n transition: { delay, duration: 0.5, type: \"spring\" as const, stiffness: 300, damping: 20 },\n };\n default:\n return {};\n }\n};\n\nconst getHoverEffect = (effect: string) => {\n switch (effect) {\n case \"lift\":\n return { y: -8, transition: { duration: 0.3 } };\n case \"glow\":\n return { boxShadow: \"0 0 30px rgba(115, 103, 240, 0.5)\", transition: { duration: 0.3 } };\n case \"scale\":\n return { scale: 1.05, transition: { duration: 0.3 } };\n case \"tilt\":\n return { rotateY: 5, rotateX: 5, transition: { duration: 0.3 } };\n default:\n return {};\n }\n};\n\ninterface GridItemProps {\n item: ChromaGridItem;\n index: number;\n animation: string;\n staggerDelay: number;\n hoverEffect: string;\n variant: string;\n borderRadius: string;\n minHeight: number;\n spotlight: boolean;\n}\n\nconst GridItem = ({\n item,\n index,\n animation,\n staggerDelay,\n hoverEffect,\n variant,\n borderRadius,\n minHeight,\n spotlight,\n}: GridItemProps) => {\n const itemRef = useRef<HTMLDivElement>(null);\n const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 });\n const [isHovered, setIsHovered] = useState(false);\n\n const color = item.color || defaultColors[index % defaultColors.length];\n const animationProps = getAnimation(animation, index, staggerDelay);\n const hoverProps = getHoverEffect(hoverEffect);\n\n const handleMouseMove = (e: React.MouseEvent) => {\n if (!itemRef.current || !spotlight) return;\n const rect = itemRef.current.getBoundingClientRect();\n setMousePosition({\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n });\n };\n\n const gridSpan = item.size && item.size > 1\n ? { gridColumn: `span ${item.size}`, gridRow: `span ${item.size}` }\n : {};\n\n const variantStyles = {\n glass: {\n backgroundColor: \"rgba(255, 255, 255, 0.1)\",\n backdropFilter: \"blur(20px)\",\n WebkitBackdropFilter: \"blur(20px)\",\n },\n solid: {},\n gradient: { background: color },\n };\n\n return (\n <motion.div\n ref={itemRef}\n className={mergeClassNames(\n \"relative overflow-hidden cursor-pointer transition-shadow\",\n borderRadiusMap[borderRadius as keyof typeof borderRadiusMap],\n variant === \"glass\" && \"border border-white/20 dark:border-white/10\",\n item.className\n )}\n style={{\n minHeight: item.size && item.size > 1 ? minHeight * item.size : minHeight,\n ...gridSpan,\n ...variantStyles[variant as keyof typeof variantStyles],\n ...(variant !== \"glass\" && { background: color }),\n }}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onClick={item.onClick}\n {...animationProps}\n whileHover={hoverProps}\n >\n {/* Spotlight effect */}\n {spotlight && isHovered && (\n <motion.div\n className=\"pointer-events-none absolute inset-0 z-0\"\n style={{\n background: `radial-gradient(300px circle at ${mousePosition.x}px ${mousePosition.y}px, rgba(255,255,255,0.2), transparent 70%)`,\n }}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.2 }}\n />\n )}\n\n {/* Glass overlay for gradient variant */}\n {variant === \"gradient\" && (\n <div className=\"absolute inset-0 bg-black/10 dark:bg-black/20\" />\n )}\n\n {/* Content */}\n <div className=\"relative z-10 h-full flex flex-col justify-center items-center p-6 text-center\">\n {item.icon && (\n <div className=\"text-4xl text-white mb-3 drop-shadow-lg\">\n {item.icon}\n </div>\n )}\n {item.title && (\n <h3 className=\"text-lg font-bold text-white mb-1 drop-shadow-md\">\n {item.title}\n </h3>\n )}\n {item.description && (\n <p className=\"text-sm text-white/80 drop-shadow-sm\">\n {item.description}\n </p>\n )}\n {item.content}\n </div>\n </motion.div>\n );\n};\n\nexport const ChromaGrid = ({\n items,\n className,\n columns = 3,\n gap = 16,\n minHeight = 200,\n animation = \"wave\",\n staggerDelay = 100,\n hoverEffect = \"lift\",\n variant = \"gradient\",\n borderRadius = \"xl\",\n spotlight = true,\n style,\n}: ChromaGridProps) => {\n return (\n <div\n className={mergeClassNames(\"grid w-full\", className)}\n style={{\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n gap: `${gap}px`,\n ...style,\n }}\n >\n {items.map((item, index) => (\n <GridItem\n key={item.id}\n item={item}\n index={index}\n animation={animation}\n staggerDelay={staggerDelay}\n hoverEffect={hoverEffect}\n variant={variant}\n borderRadius={borderRadius}\n minHeight={minHeight}\n spotlight={spotlight}\n />\n ))}\n </div>\n );\n};\n\nChromaGrid.displayName = \"ChromaGrid\";\n\nexport default ChromaGrid;\n","export interface ColorSwatch {\n name: string;\n value: string;\n textColor?: \"light\" | \"dark\";\n}\n\nexport interface ColorGroup {\n name: string;\n colors: ColorSwatch[];\n}\n\nexport interface ColorPaletteProps {\n groups?: ColorGroup[];\n theme?: \"light\" | \"dark\" | \"all\";\n showGradients?: boolean;\n showUsageExamples?: boolean;\n className?: string;\n}\n\n// ============================================================================\n// LIGHT THEME COLORS\n// ============================================================================\nconst lightThemeGroups: ColorGroup[] = [\n {\n name: \"Primary\",\n colors: [\n { name: \"primary-50\", value: \"#f5f4fe\", textColor: \"dark\" },\n { name: \"primary-100\", value: \"#ebe9fd\", textColor: \"dark\" },\n { name: \"primary-200\", value: \"#dad6fb\", textColor: \"dark\" },\n { name: \"primary-300\", value: \"#bfb8f8\", textColor: \"dark\" },\n { name: \"primary-400\", value: \"#9d91f3\", textColor: \"dark\" },\n { name: \"primary-500\", value: \"#7367f0\", textColor: \"light\" },\n { name: \"primary-600\", value: \"#5a4de6\", textColor: \"light\" },\n { name: \"primary-700\", value: \"#4a3dd2\", textColor: \"light\" },\n { name: \"primary-800\", value: \"#3e33af\", textColor: \"light\" },\n { name: \"primary-900\", value: \"#352d8e\", textColor: \"light\" },\n { name: \"primary-950\", value: \"#201b54\", textColor: \"light\" },\n ],\n },\n {\n name: \"Secondary\",\n colors: [\n { name: \"secondary-50\", value: \"#f8fafc\", textColor: \"dark\" },\n { name: \"secondary-100\", value: \"#f1f5f9\", textColor: \"dark\" },\n { name: \"secondary-200\", value: \"#e2e8f0\", textColor: \"dark\" },\n { name: \"secondary-300\", value: \"#cbd5e1\", textColor: \"dark\" },\n { name: \"secondary-400\", value: \"#94a3b8\", textColor: \"dark\" },\n { name: \"secondary-500\", value: \"#64748b\", textColor: \"light\" },\n { name: \"secondary-600\", value: \"#475569\", textColor: \"light\" },\n { name: \"secondary-700\", value: \"#334155\", textColor: \"light\" },\n { name: \"secondary-800\", value: \"#1e293b\", textColor: \"light\" },\n { name: \"secondary-900\", value: \"#0f172a\", textColor: \"light\" },\n { name: \"secondary-950\", value: \"#020617\", textColor: \"light\" },\n ],\n },\n {\n name: \"Success\",\n colors: [\n { name: \"success-50\", value: \"#f0fdf4\", textColor: \"dark\" },\n { name: \"success-100\", value: \"#dcfce7\", textColor: \"dark\" },\n { name: \"success-200\", value: \"#bbf7d0\", textColor: \"dark\" },\n { name: \"success-300\", value: \"#86efac\", textColor: \"dark\" },\n { name: \"success-400\", value: \"#4ade80\", textColor: \"dark\" },\n { name: \"success-500\", value: \"#22c55e\", textColor: \"light\" },\n { name: \"success-600\", value: \"#16a34a\", textColor: \"light\" },\n { name: \"success-700\", value: \"#15803d\", textColor: \"light\" },\n { name: \"success-800\", value: \"#166534\", textColor: \"light\" },\n { name: \"success-900\", value: \"#14532d\", textColor: \"light\" },\n { name: \"success-950\", value: \"#052e16\", textColor: \"light\" },\n ],\n },\n {\n name: \"Warning\",\n colors: [\n { name: \"warning-50\", value: \"#fffbeb\", textColor: \"dark\" },\n { name: \"warning-100\", value: \"#fef3c7\", textColor: \"dark\" },\n { name: \"warning-200\", value: \"#fde68a\", textColor: \"dark\" },\n { name: \"warning-300\", value: \"#fcd34d\", textColor: \"dark\" },\n { name: \"warning-400\", value: \"#fbbf24\", textColor: \"dark\" },\n { name: \"warning-500\", value: \"#f59e0b\", textColor: \"dark\" },\n { name: \"warning-600\", value: \"#d97706\", textColor: \"light\" },\n { name: \"warning-700\", value: \"#b45309\", textColor: \"light\" },\n { name: \"warning-800\", value: \"#92400e\", textColor: \"light\" },\n { name: \"warning-900\", value: \"#78350f\", textColor: \"light\" },\n { name: \"warning-950\", value: \"#451a03\", textColor: \"light\" },\n ],\n },\n {\n name: \"Error / Destructive\",\n colors: [\n { name: \"error-50\", value: \"#fef2f2\", textColor: \"dark\" },\n { name: \"error-100\", value: \"#fee2e2\", textColor: \"dark\" },\n { name: \"error-200\", value: \"#fecaca\", textColor: \"dark\" },\n { name: \"error-300\", value: \"#fca5a5\", textColor: \"dark\" },\n { name: \"error-400\", value: \"#f87171\", textColor: \"dark\" },\n { name: \"error-500\", value: \"#ef4444\", textColor: \"light\" },\n { name: \"error-600\", value: \"#dc2626\", textColor: \"light\" },\n { name: \"error-700\", value: \"#b91c1c\", textColor: \"light\" },\n { name: \"error-800\", value: \"#991b1b\", textColor: \"light\" },\n { name: \"error-900\", value: \"#7f1d1d\", textColor: \"light\" },\n { name: \"error-950\", value: \"#450a0a\", textColor: \"light\" },\n ],\n },\n {\n name: \"Info\",\n colors: [\n { name: \"info-50\", value: \"#eff6ff\", textColor: \"dark\" },\n { name: \"info-100\", value: \"#dbeafe\", textColor: \"dark\" },\n { name: \"info-200\", value: \"#bfdbfe\", textColor: \"dark\" },\n { name: \"info-300\", value: \"#93c5fd\", textColor: \"dark\" },\n { name: \"info-400\", value: \"#60a5fa\", textColor: \"dark\" },\n { name: \"info-500\", value: \"#3b82f6\", textColor: \"light\" },\n { name: \"info-600\", value: \"#2563eb\", textColor: \"light\" },\n { name: \"info-700\", value: \"#1d4ed8\", textColor: \"light\" },\n { name: \"info-800\", value: \"#1e40af\", textColor: \"light\" },\n { name: \"info-900\", value: \"#1e3a8a\", textColor: \"light\" },\n { name: \"info-950\", value: \"#172554\", textColor: \"light\" },\n ],\n },\n {\n name: \"Gray / Neutral\",\n colors: [\n { name: \"gray-50\", value: \"#fafafa\", textColor: \"dark\" },\n { name: \"gray-100\", value: \"#f4f4f5\", textColor: \"dark\" },\n { name: \"gray-200\", value: \"#e4e4e7\", textColor: \"dark\" },\n { name: \"gray-300\", value: \"#d4d4d8\", textColor: \"dark\" },\n { name: \"gray-400\", value: \"#a1a1aa\", textColor: \"dark\" },\n { name: \"gray-500\", value: \"#71717a\", textColor: \"light\" },\n { name: \"gray-600\", value: \"#52525b\", textColor: \"light\" },\n { name: \"gray-700\", value: \"#3f3f46\", textColor: \"light\" },\n { name: \"gray-800\", value: \"#27272a\", textColor: \"light\" },\n { name: \"gray-900\", value: \"#18181b\", textColor: \"light\" },\n { name: \"gray-950\", value: \"#09090b\", textColor: \"light\" },\n ],\n },\n {\n name: \"Background (Light Theme)\",\n colors: [\n { name: \"background\", value: \"#ffffff\", textColor: \"dark\" },\n { name: \"background-subtle\", value: \"#f8fafc\", textColor: \"dark\" },\n { name: \"background-muted\", value: \"#f1f5f9\", textColor: \"dark\" },\n { name: \"surface\", value: \"#ffffff\", textColor: \"dark\" },\n { name: \"surface-raised\", value: \"#f8fafc\", textColor: \"dark\" },\n { name: \"card\", value: \"#ffffff\", textColor: \"dark\" },\n { name: \"popover\", value: \"#ffffff\", textColor: \"dark\" },\n ],\n },\n {\n name: \"Text (Light Theme)\",\n colors: [\n { name: \"text-primary\", value: \"#0f172a\", textColor: \"light\" },\n { name: \"text-secondary\", value: \"#475569\", textColor: \"light\" },\n { name: \"text-muted\", value: \"#64748b\", textColor: \"light\" },\n { name: \"text-disabled\", value: \"#94a3b8\", textColor: \"dark\" },\n { name: \"text-placeholder\", value: \"#a1a1aa\", textColor: \"dark\" },\n { name: \"text-inverse\", value: \"#ffffff\", textColor: \"dark\" },\n ],\n },\n {\n name: \"Border (Light Theme)\",\n colors: [\n { name: \"border\", value: \"#e2e8f0\", textColor: \"dark\" },\n { name: \"border-muted\", value: \"#f1f5f9\", textColor: \"dark\" },\n { name: \"border-strong\", value: \"#cbd5e1\", textColor: \"dark\" },\n { name: \"ring\", value: \"#7367f0\", textColor: \"light\" },\n { name: \"input\", value: \"#e2e8f0\", textColor: \"dark\" },\n ],\n },\n];\n\n// ============================================================================\n// DARK THEME COLORS\n// ============================================================================\nconst darkThemeGroups: ColorGroup[] = [\n {\n name: \"Primary (Dark)\",\n colors: [\n { name: \"primary-50\", value: \"#201b54\", textColor: \"light\" },\n { name: \"primary-100\", value: \"#352d8e\", textColor: \"light\" },\n { name: \"primary-200\", value: \"#3e33af\", textColor: \"light\" },\n { name: \"primary-300\", value: \"#4a3dd2\", textColor: \"light\" },\n { name: \"primary-400\", value: \"#5a4de6\", textColor: \"light\" },\n { name: \"primary-500\", value: \"#7367f0\", textColor: \"light\" },\n { name: \"primary-600\", value: \"#9d91f3\", textColor: \"dark\" },\n { name: \"primary-700\", value: \"#bfb8f8\", textColor: \"dark\" },\n { name: \"primary-800\", value: \"#dad6fb\", textColor: \"dark\" },\n { name: \"primary-900\", value: \"#ebe9fd\", textColor: \"dark\" },\n { name: \"primary-950\", value: \"#f5f4fe\", textColor: \"dark\" },\n ],\n },\n {\n name: \"Secondary (Dark)\",\n colors: [\n { name: \"secondary-50\", value: \"#020617\", textColor: \"light\" },\n { name: \"secondary-100\", value: \"#0f172a\", textColor: \"light\" },\n { name: \"secondary-200\", value: \"#1e293b\", textColor: \"light\" },\n { name: \"secondary-300\", value: \"#334155\", textColor: \"light\" },\n { name: \"secondary-400\", value: \"#475569\", textColor: \"light\" },\n { name: \"secondary-500\", value: \"#64748b\", textColor: \"light\" },\n { name: \"secondary-600\", value: \"#94a3b8\", textColor: \"dark\" },\n { name: \"secondary-700\", value: \"#cbd5e1\", textColor: \"dark\" },\n { name: \"secondary-800\", value: \"#e2e8f0\", textColor: \"dark\" },\n { name: \"secondary-900\", value: \"#f1f5f9\", textColor: \"dark\" },\n { name: \"secondary-950\", value: \"#f8fafc\", textColor: \"dark\" },\n ],\n },\n {\n name: \"Background (Dark Theme)\",\n colors: [\n { name: \"background\", value: \"#09090b\", textColor: \"light\" },\n { name: \"background-subtle\", value: \"#18181b\", textColor: \"light\" },\n { name: \"background-muted\", value: \"#27272a\", textColor: \"light\" },\n { name: \"surface\", value: \"#18181b\", textColor: \"light\" },\n { name: \"surface-raised\", value: \"#27272a\", textColor: \"light\" },\n { name: \"card\", value: \"#18181b\", textColor: \"light\" },\n { name: \"popover\", value: \"#27272a\", textColor: \"light\" },\n ],\n },\n {\n name: \"Text (Dark Theme)\",\n colors: [\n { name: \"text-primary\", value: \"#fafafa\", textColor: \"dark\" },\n { name: \"text-secondary\", value: \"#a1a1aa\", textColor: \"dark\" },\n { name: \"text-muted\", value: \"#71717a\", textColor: \"light\" },\n { name: \"text-disabled\", value: \"#52525b\", textColor: \"light\" },\n { name: \"text-placeholder\", value: \"#71717a\", textColor: \"light\" },\n { name: \"text-inverse\", value: \"#09090b\", textColor: \"light\" },\n ],\n },\n {\n name: \"Border (Dark Theme)\",\n colors: [\n { name: \"border\", value: \"#27272a\", textColor: \"light\" },\n { name: \"border-muted\", value: \"#18181b\", textColor: \"light\" },\n { name: \"border-strong\", value: \"#3f3f46\", textColor: \"light\" },\n { name: \"ring\", value: \"#7367f0\", textColor: \"light\" },\n { name: \"input\", value: \"#27272a\", textColor: \"light\" },\n ],\n },\n];\n\n// ============================================================================\n// GRADIENTS\n// ============================================================================\nconst gradientGroups: ColorGroup[] = [\n {\n name: \"Primary Gradients\",\n colors: [\n { name: \"primary-gradient-start\", value: \"#7367f0\", textColor: \"light\" },\n { name: \"primary-gradient-end\", value: \"#9d91f3\", textColor: \"light\" },\n ],\n },\n {\n name: \"Accent Gradients\",\n colors: [\n { name: \"accent-gradient-start\", value: \"#7367f0\", textColor: \"light\" },\n { name: \"accent-gradient-end\", value: \"#3b82f6\", textColor: \"light\" },\n ],\n },\n {\n name: \"Success Gradients\",\n colors: [\n { name: \"success-gradient-start\", value: \"#22c55e\", textColor: \"light\" },\n { name: \"success-gradient-end\", value: \"#16a34a\", textColor: \"light\" },\n ],\n },\n {\n name: \"Warning Gradients\",\n colors: [\n { name: \"warning-gradient-start\", value: \"#f59e0b\", textColor: \"dark\" },\n { name: \"warning-gradient-end\", value: \"#d97706\", textColor: \"light\" },\n ],\n },\n {\n name: \"Error Gradients\",\n colors: [\n { name: \"error-gradient-start\", value: \"#ef4444\", textColor: \"light\" },\n { name: \"error-gradient-end\", value: \"#dc2626\", textColor: \"light\" },\n ],\n },\n {\n name: \"Glass / Opacity\",\n colors: [\n {\n name: \"glass-white-90\",\n value: \"rgba(255,255,255,0.9)\",\n textColor: \"dark\",\n },\n {\n name: \"glass-white-70\",\n value: \"rgba(255,255,255,0.7)\",\n textColor: \"dark\",\n },\n {\n name: \"glass-white-50\",\n value: \"rgba(255,255,255,0.5)\",\n textColor: \"dark\",\n },\n {\n name: \"glass-white-20\",\n value: \"rgba(255,255,255,0.2)\",\n textColor: \"dark\",\n },\n {\n name: \"glass-white-10\",\n value: \"rgba(255,255,255,0.1)\",\n textColor: \"dark\",\n },\n { name: \"glass-black-90\", value: \"rgba(0,0,0,0.9)\", textColor: \"light\" },\n { name: \"glass-black-70\", value: \"rgba(0,0,0,0.7)\", textColor: \"light\" },\n { name: \"glass-black-50\", value: \"rgba(0,0,0,0.5)\", textColor: \"light\" },\n { name: \"glass-black-20\", value: \"rgba(0,0,0,0.2)\", textColor: \"light\" },\n { name: \"glass-black-10\", value: \"rgba(0,0,0,0.1)\", textColor: \"light\" },\n ],\n },\n];\n\n// Default groups (backwards compatibility)\nconst defaultGroups: ColorGroup[] = lightThemeGroups;\n\nfunction ColorSwatchItem({ color }: { color: ColorSwatch }) {\n const copyToClipboard = () => {\n navigator.clipboard.writeText(color.value);\n };\n\n return (\n <div\n className=\"flex flex-col items-center gap-2 cursor-pointer transition-transform hover:scale-105\"\n onClick={copyToClipboard}\n title=\"Click to copy\"\n >\n <div\n className=\"w-20 h-20 rounded-lg shadow-md border border-neutral-200 dark:border-neutral-700 flex items-center justify-center text-xs font-mono\"\n style={{ backgroundColor: color.value }}\n >\n <span\n className={\n color.textColor === \"light\"\n ? \"text-white\"\n : \"text-neutral-900\"\n }\n >\n {color.value.length <= 9 ? color.value.toUpperCase() : \"RGBA\"}\n </span>\n </div>\n <span className=\"text-xs font-medium text-neutral-700 dark:text-neutral-300 text-center max-w-20\">\n {color.name}\n </span>\n </div>\n );\n}\n\nfunction GradientPreview() {\n return (\n <div className=\"mt-8\">\n <h3 className=\"text-lg font-semibold text-neutral-900 dark:text-white mb-4\">\n Gradient Examples\n </h3>\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n {/* Primary Gradient */}\n <div className=\"flex flex-col gap-2\">\n <div\n className=\"h-24 rounded-lg flex items-center justify-center text-white font-medium\"\n style={{\n background: \"linear-gradient(135deg, #7367f0, #9d91f3)\",\n }}\n >\n Primary Gradient\n </div>\n <code className=\"text-xs text-neutral-500\">\n linear-gradient(135deg, #7367f0, #9d91f3)\n </code>\n </div>\n\n {/* Primary to Info */}\n <div className=\"flex flex-col gap-2\">\n <div\n className=\"h-24 rounded-lg flex items-center justify-center text-white font-medium\"\n style={{\n background: \"linear-gradient(135deg, #7367f0, #3b82f6)\",\n }}\n >\n Primary to Info\n </div>\n <code className=\"text-xs text-neutral-500\">\n linear-gradient(135deg, #7367f0, #3b82f6)\n </code>\n </div>\n\n {/* Success Gradient */}\n <div className=\"flex flex-col gap-2\">\n <div\n className=\"h-24 rounded-lg flex items-center justify-center text-white font-medium\"\n style={{\n background: \"linear-gradient(135deg, #22c55e, #16a34a)\",\n }}\n >\n Success Gradient\n </div>\n <code className=\"text-xs text-neutral-500\">\n linear-gradient(135deg, #22c55e, #16a34a)\n </code>\n </div>\n\n {/* Warning Gradient */}\n <div className=\"flex flex-col gap-2\">\n <div\n className=\"h-24 rounded-lg flex items-center justify-center text-neutral-900 font-medium\"\n style={{\n background: \"linear-gradient(135deg, #fbbf24, #f59e0b)\",\n }}\n >\n Warning Gradient\n </div>\n <code className=\"text-xs text-neutral-500\">\n linear-gradient(135deg, #fbbf24, #f59e0b)\n </code>\n </div>\n\n {/* Error Gradient */}\n <div className=\"flex flex-col gap-2\">\n <div\n className=\"h-24 rounded-lg flex items-center justify-center text-white font-medium\"\n style={{\n background: \"linear-gradient(135deg, #ef4444, #dc2626)\",\n }}\n >\n Error Gradient\n </div>\n <code className=\"text-xs text-neutral-500\">\n linear-gradient(135deg, #ef4444, #dc2626)\n </code>\n </div>\n\n {/* Glass Effect */}\n <div className=\"flex flex-col gap-2\">\n <div\n className=\"h-24 rounded-lg flex items-center justify-center text-white font-medium backdrop-blur-xl border border-white/20\"\n style={{\n background: \"rgba(115, 103, 240, 0.7)\",\n }}\n >\n Glass Effect\n </div>\n <code className=\"text-xs text-neutral-500\">\n rgba(115, 103, 240, 0.7) + backdrop-blur\n </code>\n </div>\n\n {/* Mesh Gradient */}\n <div className=\"flex flex-col gap-2\">\n <div\n className=\"h-24 rounded-lg flex items-center justify-center text-white font-medium\"\n style={{\n background:\n \"radial-gradient(at 40% 20%, #7367f0 0px, transparent 50%), radial-gradient(at 80% 0%, #3b82f6 0px, transparent 50%), radial-gradient(at 0% 50%, #22c55e 0px, transparent 50%), radial-gradient(at 80% 50%, #9d91f3 0px, transparent 50%), radial-gradient(at 0% 100%, #7367f0 0px, transparent 50%)\",\n backgroundColor: \"#1e293b\",\n }}\n >\n Mesh Gradient\n </div>\n <code className=\"text-xs text-neutral-500\">\n radial-gradient mesh\n </code>\n </div>\n\n {/* Navigation Active */}\n <div className=\"flex flex-col gap-2\">\n <div\n className=\"h-24 rounded-lg flex items-center justify-center text-white font-medium\"\n style={{\n background:\n \"linear-gradient(270deg, rgba(115, 103, 240, 0.7), rgb(115, 103, 240))\",\n boxShadow: \"0 2px 6px rgba(115, 103, 240, 0.3)\",\n }}\n >\n Nav Active State\n </div>\n <code className=\"text-xs text-neutral-500\">\n 270deg with opacity\n </code>\n </div>\n\n {/* Dark Surface */}\n <div className=\"flex flex-col gap-2\">\n <div\n className=\"h-24 rounded-lg flex items-center justify-center text-white font-medium border border-white/10\"\n style={{\n background: \"linear-gradient(180deg, #27272a, #18181b)\",\n }}\n >\n Dark Surface\n </div>\n <code className=\"text-xs text-neutral-500\">\n linear-gradient(180deg, #27272a, #18181b)\n </code>\n </div>\n </div>\n </div>\n );\n}\n\nfunction UsageExamples() {\n return (\n <div className=\"mt-8 p-6 bg-neutral-50 dark:bg-neutral-800/50 rounded-xl\">\n <h3 className=\"text-lg font-semibold text-neutral-900 dark:text-white mb-4\">\n CSS Variables Usage\n </h3>\n <div className=\"space-y-4\">\n <div className=\"p-4 bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-700\">\n <h4 className=\"font-medium text-neutral-900 dark:text-white mb-2\">\n Tailwind Config\n </h4>\n <pre className=\"text-xs font-mono text-neutral-600 dark:text-neutral-400 overflow-x-auto\">\n {`// tailwind.config.js\nmodule.exports = {\n theme: {\n extend: {\n colors: {\n primary: {\n 50: '#f5f4fe',\n 500: '#7367f0',\n 600: '#5a4de6',\n },\n success: {\n 500: '#22c55e',\n },\n warning: {\n 500: '#f59e0b',\n },\n error: {\n 500: '#ef4444',\n },\n info: {\n 500: '#3b82f6',\n },\n },\n },\n },\n}`}\n </pre>\n </div>\n\n <div className=\"p-4 bg-white dark:bg-neutral-900 rounded-lg border border-neutral-200 dark:border-neutral-700\">\n <h4 className=\"font-medium text-neutral-900 dark:text-white mb-2\">\n CSS Variables\n </h4>\n <pre className=\"text-xs font-mono text-neutral-600 dark:text-neutral-400 overflow-x-auto\">\n {`:root {\n --color-primary: #7367f0;\n --color-secondary: #64748b;\n --color-success: #22c55e;\n --color-warning: #f59e0b;\n --color-error: #ef4444;\n --color-info: #3b82f6;\n \n /* Light theme */\n --color-background: #ffffff;\n --color-foreground: #0f172a;\n --color-muted: #64748b;\n --color-border: #e2e8f0;\n}\n\n.dark {\n --color-background: #09090b;\n --color-foreground: #fafafa;\n --color-muted: #71717a;\n --color-border: #27272a;\n}`}\n </pre>\n </div>\n </div>\n </div>\n );\n}\n\nexport default function ColorPalette({\n groups,\n theme = \"all\",\n showGradients = true,\n showUsageExamples = true,\n className,\n}: ColorPaletteProps) {\n // Determine which groups to show\n let displayGroups: ColorGroup[];\n if (groups) {\n displayGroups = groups;\n } else if (theme === \"light\") {\n displayGroups = lightThemeGroups;\n } else if (theme === \"dark\") {\n displayGroups = darkThemeGroups;\n } else {\n // Show all\n displayGroups = [...lightThemeGroups, ...darkThemeGroups];\n }\n\n // Add gradients if requested and no custom groups\n if (showGradients && !groups) {\n displayGroups = [...displayGroups, ...gradientGroups];\n }\n\n return (\n <div\n className={`p-6 bg-white dark:bg-neutral-900 rounded-xl ${className || \"\"\n }`}\n >\n <h2 className=\"text-2xl font-bold text-neutral-900 dark:text-white mb-2\">\n Color Palette\n </h2>\n <p className=\"text-sm text-neutral-600 dark:text-neutral-400 mb-6\">\n Primary color:{\" \"}\n <code className=\"font-mono bg-neutral-100 dark:bg-neutral-800 px-2 py-1 rounded\">\n #7367f0\n </code>{\" \"}\n • Click any swatch to copy the color value.\n </p>\n\n {/* Theme Toggle Info */}\n <div className=\"mb-6 flex flex-wrap gap-2\">\n <span\n className={`px-3 py-1 rounded-full text-xs font-medium ${theme === \"light\" || theme === \"all\"\n ? \"bg-primary-100 text-primary-700\"\n : \"bg-neutral-100 text-neutral-500\"\n }`}\n >\n Light Theme\n </span>\n <span\n className={`px-3 py-1 rounded-full text-xs font-medium ${theme === \"dark\" || theme === \"all\"\n ? \"bg-primary-100 text-primary-700\"\n : \"bg-neutral-100 text-neutral-500\"\n }`}\n >\n Dark Theme\n </span>\n {showGradients && (\n <span className=\"px-3 py-1 rounded-full text-xs font-medium bg-primary-100 text-primary-700\">\n Gradients\n </span>\n )}\n </div>\n\n {displayGroups.map((group) => (\n <div key={group.name} className=\"mb-8\">\n <h3 className=\"text-lg font-semibold text-neutral-900 dark:text-white mb-4\">\n {group.name}\n </h3>\n <div className=\"flex flex-wrap gap-4\">\n {group.colors.map((color) => (\n <ColorSwatchItem key={color.name} color={color} />\n ))}\n </div>\n </div>\n ))}\n\n {showGradients && <GradientPreview />}\n {showUsageExamples && <UsageExamples />}\n </div>\n );\n}\n\n// Export color groups for external use\nexport { lightThemeGroups, darkThemeGroups, gradientGroups, defaultGroups };\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Supports Tailwind CSS or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title (optional)\n};\n\nexport const CheckIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined} // Adds accessibility support\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M5 13l4 4L19 7\"\n />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const CloseIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const HomeIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <path\n d=\"M9 22V12H15V22M3 9L12 2L21 9V20C21 20.5304 20.7893 21.0391 20.4142 21.4142C20.0391 21.7893 19.5304 22 19 22H5C4.46957 22 3.96086 21.7893 3.58579 21.4142C3.21071 21.0391 3 20.5304 3 20V9Z\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const ShoppingCartIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <path\n d=\"M2.0498 2.05005H4.0498L6.7098 14.47C6.80738 14.9249 7.06048 15.3315 7.42552 15.6199C7.79056 15.9083 8.24471 16.0604 8.7098 16.05H18.4898C18.945 16.0493 19.3863 15.8933 19.7408 15.6079C20.0954 15.3224 20.3419 14.9246 20.4398 14.48L22.0898 7.05005H5.1198M9 21C9 21.5523 8.55228 22 8 22C7.44772 22 7 21.5523 7 21C7 20.4477 7.44772 20 8 20C8.55228 20 9 20.4477 9 21ZM20 21C20 21.5523 19.5523 22 19 22C18.4477 22 18 21.5523 18 21C18 20.4477 18.4477 20 19 20C19.5523 20 20 20.4477 20 21Z\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const SettingsIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <g id=\"Icon / Settings\">\n <g id=\"Vector\">\n <path\n d=\"M12.22 2H11.78C11.2496 2 10.7409 2.21071 10.3658 2.58579C9.99072 2.96086 9.78 3.46957 9.78 4V4.18C9.77964 4.53073 9.68706 4.87519 9.51154 5.17884C9.33602 5.48248 9.08374 5.73464 8.78 5.91L8.35 6.16C8.04596 6.33554 7.70108 6.42795 7.35 6.42795C6.99893 6.42795 6.65404 6.33554 6.35 6.16L6.2 6.08C5.74107 5.81526 5.19584 5.74344 4.684 5.88031C4.17217 6.01717 3.73555 6.35154 3.47 6.81L3.25 7.19C2.98526 7.64893 2.91345 8.19416 3.05031 8.706C3.18717 9.21783 3.52154 9.65445 3.98 9.92L4.13 10.02C4.43228 10.1945 4.68362 10.4451 4.85905 10.7468C5.03448 11.0486 5.1279 11.391 5.13 11.74V12.25C5.1314 12.6024 5.03965 12.949 4.86405 13.2545C4.68844 13.5601 4.43521 13.8138 4.13 13.99L3.98 14.08C3.52154 14.3456 3.18717 14.7822 3.05031 15.294C2.91345 15.8058 2.98526 16.3511 3.25 16.81L3.47 17.19C3.73555 17.6485 4.17217 17.9828 4.684 18.1197C5.19584 18.2566 5.74107 18.1847 6.2 17.92L6.35 17.84C6.65404 17.6645 6.99893 17.5721 7.35 17.5721C7.70108 17.5721 8.04596 17.6645 8.35 17.84L8.78 18.09C9.08374 18.2654 9.33602 18.5175 9.51154 18.8212C9.68706 19.1248 9.77964 19.4693 9.78 19.82V20C9.78 20.5304 9.99072 21.0391 10.3658 21.4142C10.7409 21.7893 11.2496 22 11.78 22H12.22C12.7504 22 13.2591 21.7893 13.6342 21.4142C14.0093 21.0391 14.22 20.5304 14.22 20V19.82C14.2204 19.4693 14.3129 19.1248 14.4885 18.8212C14.664 18.5175 14.9163 18.2654 15.22 18.09L15.65 17.84C15.954 17.6645 16.2989 17.5721 16.65 17.5721C17.0011 17.5721 17.346 17.6645 17.65 17.84L17.8 17.92C18.2589 18.1847 18.8042 18.2566 19.316 18.1197C19.8278 17.9828 20.2645 17.6485 20.53 17.19L20.75 16.8C21.0147 16.3411 21.0866 15.7958 20.9497 15.284C20.8128 14.7722 20.4785 14.3356 20.02 14.07L19.87 13.99C19.5648 13.8138 19.3116 13.5601 19.136 13.2545C18.9604 12.949 18.8686 12.6024 18.87 12.25V11.75C18.8686 11.3976 18.9604 11.051 19.136 10.7455C19.3116 10.4399 19.5648 10.1862 19.87 10.01L20.02 9.92C20.4785 9.65445 20.8128 9.21783 20.9497 8.706C21.0866 8.19416 21.0147 7.64893 20.75 7.19L20.53 6.81C20.2645 6.35154 19.8278 6.01717 19.316 5.88031C18.8042 5.74344 18.2589 5.81526 17.8 6.08L17.65 6.16C17.346 6.33554 17.0011 6.42795 16.65 6.42795C16.2989 6.42795 15.954 6.33554 15.65 6.16L15.22 5.91C14.9163 5.73464 14.664 5.48248 14.4885 5.17884C14.3129 4.87519 14.2204 4.53073 14.22 4.18V4C14.22 3.46957 14.0093 2.96086 13.6342 2.58579C13.2591 2.21071 12.7504 2 12.22 2Z\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </g>\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const PackageIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <g id=\"Icon / Package\">\n <path\n id=\"Vector\"\n d=\"M7.5 4.27002L16.5 9.42002M3.30005 7L12 12M12 12L20.7001 7M12 12L12 22M21 7.9999C20.9996 7.64918 20.9071 7.30471 20.7315 7.00106C20.556 6.69742 20.3037 6.44526 20 6.2699L13 2.2699C12.696 2.09437 12.3511 2.00195 12 2.00195C11.6489 2.00195 11.304 2.09437 11 2.2699L4 6.2699C3.69626 6.44526 3.44398 6.69742 3.26846 7.00106C3.09294 7.30471 3.00036 7.64918 3 7.9999V15.9999C3.00036 16.3506 3.09294 16.6951 3.26846 16.9987C3.44398 17.3024 3.69626 17.5545 4 17.7299L11 21.7299C11.304 21.9054 11.6489 21.9979 12 21.9979C12.3511 21.9979 12.696 21.9054 13 21.7299L20 17.7299C20.3037 17.5545 20.556 17.3024 20.7315 16.9987C20.9071 16.6951 20.9996 16.3506 21 15.9999V7.9999Z\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const SearchIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <path\n d=\"M21.0002 21L16.7002 16.7M19 11C19 15.4183 15.4183 19 11 19C6.58172 19 3 15.4183 3 11C3 6.58172 6.58172 3 11 3C15.4183 3 19 6.58172 19 11Z\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const UserIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <g id=\"Icon / User\">\n <path\n id=\"Vector\"\n d=\"M19 21V19C19 17.9391 18.5786 16.9217 17.8284 16.1716C17.0783 15.4214 16.0609 15 15 15H9C7.93913 15 6.92172 15.4214 6.17157 16.1716C5.42143 16.9217 5 17.9391 5 19V21M16 7C16 9.20914 14.2091 11 12 11C9.79086 11 8 9.20914 8 7C8 4.79086 9.79086 3 12 3C14.2091 3 16 4.79086 16 7Z\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const BriefcaseBusinessIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <g id=\"Icon / BriefcaseBusiness\">\n <path\n id=\"Vector\"\n d=\"M12 12H12.01M16 6V4C16 3.46957 15.7893 2.96086 15.4142 2.58579C15.0391 2.21071 14.5304 2 14 2H10C9.46957 2 8.96086 2.21071 8.58579 2.58579C8.21071 2.96086 8 3.46957 8 4V6M22 13C19.0328 14.959 15.5555 16.0033 12 16.0033C8.44445 16.0033 4.96721 14.959 2 13M4 6H20C21.1046 6 22 6.89543 22 8V18C22 19.1046 21.1046 20 20 20H4C2.89543 20 2 19.1046 2 18V8C2 6.89543 2.89543 6 4 6Z\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n color?: string; // Custom color for the icon\n};\n\nexport const ActivityIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n color = \"currentColor\",\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke={color}\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <g id=\"Icon / Activity\">\n <path\n id=\"Vector\"\n d=\"M22 12H19.52C19.083 11.9991 18.6577 12.1413 18.3091 12.405C17.9606 12.6686 17.708 13.0392 17.59 13.46L15.24 21.82C15.2249 21.8719 15.1933 21.9175 15.15 21.95C15.1067 21.9825 15.0541 22 15 22C14.9459 22 14.8933 21.9825 14.85 21.95C14.8067 21.9175 14.7751 21.8719 14.76 21.82L9.24 2.18C9.22485 2.12807 9.19327 2.08246 9.15 2.05C9.10673 2.01754 9.05409 2 9 2C8.94591 2 8.89327 2.01754 8.85 2.05C8.80673 2.08246 8.77515 2.12807 8.76 2.18L6.41 10.54C6.29246 10.9592 6.04138 11.3285 5.69486 11.592C5.34835 11.8555 4.92532 11.9988 4.49 12H2\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const TrashIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <g id=\"Icon / Trash\">\n <path\n id=\"Vector\"\n d=\"M3 6H21M19 6V20C19 21 18 22 17 22H7C6 22 5 21 5 20V6M8 6V4C8 3 9 2 10 2H14C15 2 16 3 16 4V6\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const ArrowDownIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <path\n d=\"M12 5V19M12 19L19 12M12 19L5 12\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const ArrowUpIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <path\n d=\"M2.0498 2.05005H4.0498L6.7098 14.47C6.80738 14.9249 7.06048 15.3315 7.42552 15.6199C7.79056 15.9083 8.24471 16.0604 8.7098 16.05H18.4898C18.945 16.0493 19.3863 15.8933 19.7408 15.6079C20.0954 15.3224 20.3419 14.9246 20.4398 14.48L22.0898 7.05005H5.1198M9 21C9 21.5523 8.55228 22 8 22C7.44772 22 7 21.5523 7 21C7 20.4477 7.44772 20 8 20C8.55228 20 9 20.4477 9 21ZM20 21C20 21.5523 19.5523 22 19 22C18.4477 22 18 21.5523 18 21C18 20.4477 18.4477 20 19 20C19.5523 20 20 20.4477 20 21Z\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const ArrowLeftIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <path\n d=\"M2.0498 2.05005H4.0498L6.7098 14.47C6.80738 14.9249 7.06048 15.3315 7.42552 15.6199C7.79056 15.9083 8.24471 16.0604 8.7098 16.05H18.4898C18.945 16.0493 19.3863 15.8933 19.7408 15.6079C20.0954 15.3224 20.3419 14.9246 20.4398 14.48L22.0898 7.05005H5.1198M9 21C9 21.5523 8.55228 22 8 22C7.44772 22 7 21.5523 7 21C7 20.4477 7.44772 20 8 20C8.55228 20 9 20.4477 9 21ZM20 21C20 21.5523 19.5523 22 19 22C18.4477 22 18 21.5523 18 21C18 20.4477 18.4477 20 19 20C19.5523 20 20 20.4477 20 21Z\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const ArrowRightIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <path\n d=\"M5 12H19M19 12L12 5M19 12L12 19\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n color?: string; // Custom color for the icon\n};\n\nexport const ChevronDownIcon: FC<IconProps & { color?: string }> = ({\n className,\n title,\n titleId,\n color = \"currentColor\",\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n fill=\"none\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n viewBox=\"0 0 24 24\"\n stroke={color}\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <path\n d=\"M6 9L12 15L18 9\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const ChevronLeftIcon: FC<IconProps> = ({\n className = \"text-text-primary\",\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n\n <path\n d=\"M15 18L9 12L15 6\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const ChevronRightIcon: FC<IconProps> = ({\n className = \"text-text-primary\",\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <path\n d=\"M9 18L15 12L9 6\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const ChevronUpIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <path\n d=\"M6 9L12 15L18 9\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const ChevronsLeftIcon: FC<IconProps> = ({\n className = \"text-text-primary\",\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n\n <path\n d=\"M11 17L6 12L11 7M18 17L13 12L18 7\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const ChevronsRightIcon: FC<IconProps> = ({\n className = \"text-text-primary\",\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <path\n d=\"M6 17L11 12L6 7M13 17L18 12L13 7\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const ArrowUpDownIcon: FC<IconProps> = ({\n className = \"text-text-primary\",\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n\n <path\n d=\"M21 16L17 20M17 20L13 16M17 20V4M3 8L7 4M7 4L11 8M7 4V20\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const EllipsisIcon: FC<IconProps> = ({\n className = \"text-text-primary\",\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n\n <path\n d=\"M12 13C12.5523 13 13 12.5523 13 12C13 11.4477 12.5523 11 12 11C11.4477 11 11 11.4477 11 12C11 12.5523 11.4477 13 12 13Z\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M19 13C19.5523 13 20 12.5523 20 12C20 11.4477 19.5523 11 19 11C18.4477 11 18 11.4477 18 12C18 12.5523 18.4477 13 19 13Z\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M5 13C5.55228 13 6 12.5523 6 12C6 11.4477 5.55228 11 5 11C4.44772 11 4 11.4477 4 12C4 12.5523 4.44772 13 5 13Z\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const EllipsisVerticalIcon: FC<IconProps> = ({\n className = \"text-text-primary\",\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n\n <path\n d=\"M12 13C12.5523 13 13 12.5523 13 12C13 11.4477 12.5523 11 12 11C11.4477 11 11 11.4477 11 12C11 12.5523 11.4477 13 12 13Z\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12 6C12.5523 6 13 5.55228 13 5C13 4.44772 12.5523 4 12 4C11.4477 4 11 4.44772 11 5C11 5.55228 11.4477 6 12 6Z\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12 20C12.5523 20 13 19.5523 13 19C13 18.4477 12.5523 18 12 18C11.4477 18 11 18.4477 11 19C11 19.5523 11.4477 20 12 20Z\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const EyeIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <path\n d=\"M12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15Z\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const EyeOffIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <g id=\"Icon / User\">\n <path\n id=\"Vector\"\n d=\"M19 21V19C19 17.9391 18.5786 16.9217 17.8284 16.1716C17.0783 15.4214 16.0609 15 15 15H9C7.93913 15 6.92172 15.4214 6.17157 16.1716C5.42143 16.9217 5 17.9391 5 19V21M16 7C16 9.20914 14.2091 11 12 11C9.79086 11 8 9.20914 8 7C8 4.79086 9.79086 3 12 3C14.2091 3 16 4.79086 16 7Z\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n};\n\nexport const BellIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n fill=\"none\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n strokeWidth=\"2\"\n strokeLinejoin=\"round\"\n strokeLinecap=\"round\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <path d=\"M10.268 21a2 2 0 0 0 3.464 0\" />\n <path d=\"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326\" />\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n color?: string; // Custom color for the icon\n};\n\nexport const FullScreenIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n color = \"currentColor\",\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke={color}\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <g id=\"Icon / User\">\n <path\n xmlns=\"http://www.w3.org/2000/svg\"\n d=\"M3 7V5C3 4.46957 3.21071 3.96086 3.58579 3.58579C3.96086 3.21071 4.46957 3 5 3H7M17 3H19C19.5304 3 20.0391 3.21071 20.4142 3.58579C20.7893 3.96086 21 4.46957 21 5V7M21 17V19C21 19.5304 20.7893 20.0391 20.4142 20.4142C20.0391 20.7893 19.5304 21 19 21H17M7 21H5C4.46957 21 3.96086 20.7893 3.58579 20.4142C3.21071 20.0391 3 19.5304 3 19V17M8 8H16C16.5523 8 17 8.44772 17 9V15C17 15.5523 16.5523 16 16 16H8C7.44772 16 7 15.5523 7 15V9C7 8.44772 7.44772 8 8 8Z\"\n stroke={color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n);\n","import type { FC, SVGProps } from 'react';\n\ntype IconProps = SVGProps<SVGSVGElement> & {\n className?: string; // Allows passing Tailwind or custom class names\n title?: string; // Accessible title for screen readers\n titleId?: string; // ID for the title\n color?: string; // Allows setting a custom color\n};\n\nexport const DragIcon: FC<IconProps> = ({\n className,\n title,\n titleId,\n color = \"#transparent\",\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n width=\"24\"\n height=\"24\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n aria-labelledby={title ? titleId : undefined}\n role=\"img\"\n {...props}\n >\n {title && <title id={titleId}>{title}</title>}\n <path\n d=\"M9 13C9.55228 13 10 12.5523 10 12C10 11.4477 9.55228 11 9 11C8.44772 11 8 11.4477 8 12C8 12.5523 8.44772 13 9 13Z\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M9 6C9.55228 6 10 5.55228 10 5C10 4.44772 9.55228 4 9 4C8.44772 4 8 4.44772 8 5C8 5.55228 8.44772 6 9 6Z\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M9 20C9.55228 20 10 19.5523 10 19C10 18.4477 9.55228 18 9 18C8.44772 18 8 18.4477 8 19C8 19.5523 8.44772 20 9 20Z\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M15 13C15.5523 13 16 12.5523 16 12C16 11.4477 15.5523 11 15 11C14.4477 11 14 11.4477 14 12C14 12.5523 14.4477 13 15 13Z\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M15 6C15.5523 6 16 5.55228 16 5C16 4.44772 15.5523 4 15 4C14.4477 4 14 4.44772 14 5C14 5.55228 14.4477 6 15 6Z\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M15 20C15.5523 20 16 19.5523 16 19C16 18.4477 15.5523 18 15 18C14.4477 18 14 18.4477 14 19C14 19.5523 14.4477 20 15 20Z\"\n stroke={color}\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import type { SVGProps } from 'react';\n\nexport const CircleIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <circle cx={12} cy={12} r={10} />\n </svg>\n);\n","import { CheckIcon, ChevronDownIcon } from \"../../icons\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { mergeClassNames } from \"../../../utils\"\n\nexport interface ComboboxOption {\n label: string;\n value: string;\n}\n\ninterface ComboboxProps {\n options: ComboboxOption[];\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n className?: string;\n bgClassName?: string;\n createOptionLabel?: string;\n onCreateOption?: () => void;\n}\n\nconst Combobox: React.FC<ComboboxProps> = ({\n options,\n value,\n onChange,\n placeholder = \"Select...\",\n className,\n bgClassName = \"bg-white/40 dark:bg-zinc-950/40 backdrop-blur-xl\",\n createOptionLabel,\n onCreateOption,\n}) => {\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState(\"\");\n const ref = useRef<HTMLDivElement>(null);\n\n // Filter options by search\n const filteredOptions = options.filter((opt) =>\n opt.label.toLowerCase().includes(search.toLowerCase())\n );\n\n // Close dropdown on outside click\n useEffect(() => {\n const handleClick = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) {\n setOpen(false);\n setSearch(\"\");\n }\n };\n if (open) {\n document.addEventListener(\"mousedown\", handleClick);\n }\n return () => document.removeEventListener(\"mousedown\", handleClick);\n }, [open]);\n\n return (\n <div\n ref={ref}\n className={mergeClassNames(\"relative w-full\", className)}\n tabIndex={0}\n >\n <div\n className={mergeClassNames(\n \"flex h-10 w-full cursor-pointer items-center justify-between rounded-md border border-black/5 dark:border-white/10 px-3 py-2 text-sm text-foreground transition focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 shadow-sm\",\n bgClassName,\n \"hover:bg-white/60 dark:hover:bg-white/10\"\n )}\n onClick={() => {\n setOpen((o) => {\n if (o) setSearch(\"\"); // Reset search when closing\n return !o;\n });\n }}\n >\n {value ? (\n <span className=\"text-foreground dark:text-white flex-1 truncate\">\n {options.find((opt) => opt.value === value)?.label}\n </span>\n ) : (\n <span className=\"text-muted-foreground flex-1\">\n {placeholder}\n </span>\n )}\n <span\n className={mergeClassNames(\n \"ml-2 transition-transform duration-300\",\n open ? \"rotate-180\" : \"rotate-0\"\n )}\n >\n <ChevronDownIcon width={24} height={24} color=\"#a1a1a1\" />\n </span>\n </div>\n {open && (\n <div className=\"absolute right-0 left-0 z-20 mt-1 flex max-h-60 flex-col rounded-md border border-white/20 dark:border-white/10 bg-white/80 dark:bg-neutral-900/80 backdrop-blur-xl shadow-xl transition\">\n {/* Sticky search input */}\n <div className=\"sticky top-0 z-10 bg-white/50 dark:bg-neutral-900/50 backdrop-blur-sm rounded-t-md\">\n <input\n autoFocus\n className=\"w-full border-b border-white/20 dark:border-white/10 bg-transparent px-3 py-2 text-sm text-foreground dark:text-white outline-none placeholder:text-muted-foreground\"\n placeholder=\"Type to search...\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n {/* Scrollable options */}\n <div className=\"max-h-80 flex-1 overflow-auto\">\n {filteredOptions.length === 0 && !createOptionLabel && (\n <div className=\"px-3 py-2 text-muted-foreground\">\n No options\n </div>\n )}\n {filteredOptions.map((opt) => (\n <div\n key={opt.value}\n className={mergeClassNames(\n \"mx-1 my-1 flex cursor-pointer items-center gap-2 rounded-md px-3 py-2 text-sm text-foreground dark:text-white transition\",\n opt.value === value\n ? \"bg-primary/20 font-semibold\"\n : \"\",\n \"hover:bg-primary hover:text-white\"\n )}\n onClick={() => {\n onChange(opt.value);\n setSearch(\"\");\n setOpen(false);\n }}\n >\n <span className=\"flex w-5 items-center justify-center\">\n {opt.value === value && (\n <CheckIcon\n className=\"text-primary\"\n width={18}\n height={18}\n />\n )}\n </span>\n <span className=\"min-w-0 flex-1 truncate\">\n {opt.label}\n </span>\n </div>\n ))}\n </div>\n {/* Sticky create option */}\n {createOptionLabel && onCreateOption && (\n <div className=\"sticky bottom-0 z-10 border-t border-white/20 dark:border-white/10 bg-white/50 dark:bg-neutral-900/50 backdrop-blur-sm rounded-b-md\">\n <div\n className=\"mx-1 my-1 flex cursor-pointer items-center gap-2 rounded-md px-3 py-2 text-sm font-semibold text-foreground dark:text-white transition hover:bg-primary hover:text-white\"\n onClick={() => {\n onCreateOption();\n setSearch(\"\");\n setOpen(false);\n }}\n >\n <span className=\"flex w-5 items-center justify-center\">\n {/* Optionally add an icon here */}\n </span>\n <span className=\"min-w-0 flex-1 truncate\">\n {createOptionLabel}\n </span>\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default Combobox;\n","import { CheckIcon, ChevronDownIcon } from \"../../icons\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { mergeClassNames } from \"../../../utils\";\n\nexport interface MultiSelectOption {\n label: string;\n value: string;\n}\n\ninterface MultiSelectComboboxProps {\n options: MultiSelectOption[];\n value: string[];\n onChange: (values: string[]) => void;\n placeholder?: string;\n className?: string;\n bgClassName?: string;\n}\n\nconst MultiSelectCombobox: React.FC<MultiSelectComboboxProps> = ({\n options,\n value = [],\n onChange,\n placeholder = \"Select...\",\n className,\n bgClassName = \"bg-white/40 dark:bg-zinc-950/40 backdrop-blur-xl\",\n}) => {\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState(\"\");\n const ref = useRef<HTMLDivElement>(null);\n\n // Filter options by search\n const filteredOptions = options.filter((opt) =>\n opt.label.toLowerCase().includes(search.toLowerCase())\n );\n\n // Close dropdown on outside click\n useEffect(() => {\n const handleClick = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) {\n setOpen(false);\n setSearch(\"\");\n }\n };\n if (open) {\n document.addEventListener(\"mousedown\", handleClick);\n }\n return () => document.removeEventListener(\"mousedown\", handleClick);\n }, [open]);\n\n const handleOptionClick = (optionValue: string) => {\n if (value.includes(optionValue)) {\n onChange(value.filter((v) => v !== optionValue));\n } else {\n onChange([...value, optionValue]);\n }\n };\n\n const handleRemoveTag = (optionValue: string, e: React.MouseEvent) => {\n e.stopPropagation();\n onChange(value.filter((v) => v !== optionValue));\n };\n\n const selectedLabels = value\n .map((v) => options.find((opt) => opt.value === v)?.label)\n .filter(Boolean);\n\n return (\n <div\n ref={ref}\n className={mergeClassNames(\"relative w-full\", className)}\n tabIndex={0}\n >\n <div\n className={mergeClassNames(\n \"flex min-h-10 w-full cursor-pointer items-center justify-between rounded-md border border-black/5 dark:border-white/10 px-3 py-2 text-sm text-foreground transition focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 shadow-sm\",\n bgClassName,\n \"hover:bg-white/60 dark:hover:bg-white/10\"\n )}\n onClick={() => {\n setOpen((o) => {\n if (o) setSearch(\"\");\n return !o;\n });\n }}\n >\n <div className=\"flex flex-1 flex-wrap gap-1\">\n {selectedLabels.length > 0 ? (\n selectedLabels.map((label, index) => (\n <span\n key={value[index]}\n className=\"inline-flex items-center gap-1 rounded-md bg-primary-100 dark:bg-primary-900/40 px-2 py-0.5 text-xs font-medium text-primary-700 dark:text-primary-300\"\n >\n {label}\n <button\n type=\"button\"\n onClick={(e) => handleRemoveTag(value[index], e)}\n className=\"ml-0.5 rounded-full p-0.5 hover:bg-primary-200 dark:hover:bg-primary-800 transition-colors\"\n >\n <svg\n className=\"w-3 h-3\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n </span>\n ))\n ) : (\n <span className=\"text-muted-foreground\">{placeholder}</span>\n )}\n </div>\n <span\n className={mergeClassNames(\n \"ml-2 transition-transform duration-300 flex-shrink-0\",\n open ? \"rotate-180\" : \"rotate-0\"\n )}\n >\n <ChevronDownIcon width={24} height={24} color=\"#a1a1a1\" />\n </span>\n </div>\n {open && (\n <div className=\"absolute right-0 left-0 z-20 mt-1 flex max-h-60 flex-col rounded-md border border-white/20 dark:border-white/10 bg-white/80 dark:bg-neutral-900/80 backdrop-blur-xl shadow-xl transition\">\n {/* Sticky search input */}\n <div className=\"sticky top-0 z-10 bg-white/50 dark:bg-neutral-900/50 backdrop-blur-sm rounded-t-md\">\n <input\n autoFocus\n className=\"w-full border-b border-white/20 dark:border-white/10 bg-transparent px-3 py-2 text-sm text-foreground dark:text-white outline-none placeholder:text-muted-foreground\"\n placeholder=\"Type to search...\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n {/* Scrollable options */}\n <div className=\"max-h-80 flex-1 overflow-auto\">\n {filteredOptions.length === 0 && (\n <div className=\"p-3 text-center text-muted-foreground text-sm\">\n No options found\n </div>\n )}\n {filteredOptions.map((option) => {\n const isSelected = value.includes(option.value);\n return (\n <div\n key={option.value}\n className={mergeClassNames(\n \"flex cursor-pointer items-center gap-2 px-3 py-2 text-sm transition\",\n isSelected\n ? \"bg-primary-50 dark:bg-primary-900/30 text-primary-700 dark:text-primary-300\"\n : \"text-foreground dark:text-white hover:bg-neutral-100 dark:hover:bg-white/10\"\n )}\n onClick={() => handleOptionClick(option.value)}\n >\n <span\n className={mergeClassNames(\n \"flex h-4 w-4 items-center justify-center rounded border transition\",\n isSelected\n ? \"border-primary-500 bg-primary-500 text-white\"\n : \"border-neutral-300 dark:border-neutral-600\"\n )}\n >\n {isSelected && <CheckIcon width={12} height={12} />}\n </span>\n <span className=\"flex-1\">{option.label}</span>\n </div>\n );\n })}\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default MultiSelectCombobox;\n","import type { InputHTMLAttributes, ReactNode } from 'react';\n\nexport enum InputState {\n DEFAULT = 'default',\n DISABLED = 'disabled',\n ERROR = 'error',\n SUCCESS = 'success',\n}\n\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n error?: string;\n helperText?: string;\n id?: string;\n extra?: string;\n state?: InputState;\n message?: string;\n icon?: ReactNode;\n iconClassName?: string;\n /** Custom background classes for light/dark mode (e.g. \"ui:bg-white ui:dark:bg-zinc-900\") */\n bgClassName?: string;\n}\n","import { forwardRef, useState } from \"react\";\nimport { type InputProps, InputState } from \"./types\";\nimport { motion, useMotionTemplate, useMotionValue } from \"framer-motion\";\nimport { mergeClassNames } from \"../../../utils\";\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className = \"\",\n label,\n error,\n helperText,\n id,\n extra,\n placeholder,\n state = InputState.DEFAULT,\n disabled,\n message,\n icon,\n iconClassName,\n // bgClassName = \"bg-zinc-950/40\",\n bgClassName = \"bg-secondary\",\n // bgClassName = \"bg-white/40 dark:bg-zinc-950/40 backdrop-blur-xl\",\n ...props\n },\n ref\n ) => {\n const radius = 100; // Radius for the hover effect\n const [visible, setVisible] = useState(false);\n const mouseX = useMotionValue(0);\n const mouseY = useMotionValue(0);\n\n const handleMouseMove = (event: React.MouseEvent<HTMLDivElement>) => {\n const { left, top } = event.currentTarget.getBoundingClientRect();\n mouseX.set(event.clientX - left);\n mouseY.set(event.clientY - top);\n };\n\n const wrapperStateStyles: Record<InputState, string> = {\n [InputState.DISABLED]: \"bg-muted border-none\",\n [InputState.ERROR]: \"border-destructive \",\n [InputState.SUCCESS]: \"border-green-500 dark:border-green-400 \",\n [InputState.DEFAULT]: \"border-border \",\n };\n\n const inputStateStyles: Record<InputState, string> = {\n [InputState.DISABLED]: \"placeholder:!text-muted-foreground\",\n [InputState.ERROR]:\n \"text-destructive placeholder:text-destructive\",\n [InputState.SUCCESS]:\n \"text-green-500 placeholder:text-green-500 dark:text-green-400 dark:placeholder:text-green-400\",\n [InputState.DEFAULT]: \"text-foreground\",\n };\n\n return (\n <div className=\"w-full\">\n {label && (\n <label className=\"text-sm font-medium text-foreground leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 mb-2 block\">\n {label}\n </label>\n )}\n\n <motion.div\n style={{\n backgroundImage: disabled\n ? \"none\"\n : useMotionTemplate`\n radial-gradient(\n ${visible ? `${radius}px` : \"0px\"\n } circle at ${mouseX}px ${mouseY}px,\n #3b82f6,\n transparent 70%\n )\n `,\n }}\n onMouseMove={!disabled ? handleMouseMove : undefined}\n onMouseEnter={!disabled ? () => setVisible(true) : undefined}\n onMouseLeave={!disabled ? () => setVisible(false) : undefined}\n className={mergeClassNames(\n \"group/input rounded-lg p-[2px] transition duration-300 hover:border-blue-500 dark:hover:border-blue-500\",\n wrapperStateStyles[state],\n extra\n )}\n >\n <div className=\"relative flex items-center \">\n {icon && (\n <div className={mergeClassNames(\"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3\", iconClassName)}>\n {icon}\n </div>\n )}\n <input\n ref={ref}\n id={id}\n placeholder={placeholder}\n disabled={disabled}\n className={mergeClassNames(\n \"shadow-input flex h-10 w-full rounded-md border border-input px-3 py-2 text-sm text-foreground transition duration-400 ease-in-out group-hover/input:shadow-none file:border-0 file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:ring-[2px] focus-visible:ring-ring focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50\",\n bgClassName,\n inputStateStyles[state],\n className\n )}\n {...props}\n autoComplete=\"off\"\n />\n </div>\n </motion.div>\n\n {(error || message) && (\n <p\n className={mergeClassNames(\n \"text-sm font-medium mt-1\",\n error\n ? \"text-destructive\"\n : \"text-muted-foreground\"\n )}\n >\n {error || message}\n </p>\n )}\n {helperText && !error && !message && (\n <p className=\"text-sm text-neutral-500 dark:text-neutral-400 mt-1\">\n {helperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n","import type { SelectProps } from \"./types\";\nimport { forwardRef, useState, useRef, useEffect } from \"react\";\nimport { CheckIcon, ChevronDownIcon } from \"../../icons\";\nimport { mergeClassNames } from \"../../../utils\";\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n className = \"\",\n label,\n error,\n helperText,\n options,\n value,\n onChange,\n placeholder = \"Select...\",\n disabled,\n bgClassName = \"bg-white/40 dark:bg-zinc-950/40 backdrop-blur-xl\",\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const hiddenSelectRef = useRef<HTMLSelectElement>(null);\n\n // Combine refs\n useEffect(() => {\n if (ref && typeof ref === \"function\") {\n ref(hiddenSelectRef.current);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLSelectElement | null>).current =\n hiddenSelectRef.current;\n }\n }, [ref]);\n\n // Close dropdown on outside click\n useEffect(() => {\n const handleClick = (e: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.target as Node)\n ) {\n setOpen(false);\n }\n };\n if (open) {\n document.addEventListener(\"mousedown\", handleClick);\n }\n return () => document.removeEventListener(\"mousedown\", handleClick);\n }, [open]);\n\n const selectedOption = options.find((opt) => opt.value === value);\n\n const handleSelect = (optValue: string) => {\n // Trigger onChange with a synthetic event\n if (onChange && hiddenSelectRef.current) {\n const event = {\n target: { value: optValue, name: props.name },\n currentTarget: { value: optValue, name: props.name },\n } as React.ChangeEvent<HTMLSelectElement>;\n onChange(event);\n }\n setOpen(false);\n };\n\n return (\n <div className=\"w-full min-w-48\">\n {label && (\n <label className=\"text-sm font-medium text-neutral-900 dark:text-white leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 mb-2 block\">\n {label}\n </label>\n )}\n\n {/* Hidden native select for form compatibility */}\n <select\n ref={hiddenSelectRef}\n className=\"sr-only\"\n value={value}\n onChange={onChange}\n disabled={disabled}\n {...props}\n >\n <option value=\"\">{placeholder}</option>\n {options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n\n {/* Custom styled dropdown */}\n <div\n ref={containerRef}\n className={mergeClassNames(\"relative w-full\", className)}\n >\n <div\n className={mergeClassNames(\n \"flex h-10 w-full cursor-pointer items-center justify-between rounded-md border px-3 py-2 text-sm text-neutral-900 dark:text-white transition shadow-sm\",\n error\n ? \"border-red-500 focus:ring-red-500\"\n : \"border-neutral-300 dark:border-neutral-600\",\n disabled\n ? \"cursor-not-allowed opacity-50\"\n : `${bgClassName} hover:bg-white/60 dark:hover:bg-white/10`\n )}\n onClick={() => {\n if (!disabled) {\n setOpen((o) => !o);\n }\n }}\n >\n {selectedOption ? (\n <span className=\"text-neutral-900 dark:text-white flex-1 truncate\">\n {selectedOption.label}\n </span>\n ) : (\n <span className=\"text-neutral-500 dark:text-neutral-400 flex-1\">\n {placeholder}\n </span>\n )}\n <span\n className={mergeClassNames(\n \"ml-2 transition-transform duration-300\",\n open ? \"rotate-180\" : \"rotate-0\"\n )}\n >\n <ChevronDownIcon width={24} height={24} color=\"#a1a1a1\" />\n </span>\n </div>\n\n {open && !disabled && (\n <div className={mergeClassNames(\n \"absolute right-0 left-0 z-20 mt-1 flex max-h-60 flex-col rounded-md border border-neutral-200 dark:border-neutral-600 shadow-xl transition overflow-auto\",\n bgClassName\n )}>\n {options.length === 0 && (\n <div className=\"px-3 py-2 text-neutral-500 dark:text-neutral-400\">\n No options\n </div>\n )}\n {options.map((opt) => (\n <div\n key={opt.value}\n className={mergeClassNames(\n \"mx-1 my-1 flex cursor-pointer items-center gap-2 rounded-md px-3 py-2 text-sm text-neutral-900 dark:text-white transition\",\n opt.value === value\n ? \"bg-primary/20 font-semibold\"\n : \"\",\n \"hover:bg-primary hover:text-white\"\n )}\n onClick={() => handleSelect(opt.value)}\n >\n <span className=\"flex w-5 items-center justify-center\">\n {opt.value === value && (\n <CheckIcon\n className=\"text-primary\"\n width={18}\n height={18}\n />\n )}\n </span>\n <span className=\"min-w-0 flex-1 truncate\">\n {opt.label}\n </span>\n </div>\n ))}\n </div>\n )}\n </div>\n\n {error && (\n <p className=\"text-sm font-medium text-red-500 dark:text-red-400 mt-1\">\n {error}\n </p>\n )}\n {helperText && !error && (\n <p className=\"text-sm text-neutral-500 dark:text-neutral-400 mt-1\">\n {helperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n","import { forwardRef, useId } from \"react\";\n\nimport type { SwitchProps } from \"./types\";\n\nconst sanitizeId = (value: string) => value.replace(/[^a-zA-Z0-9_-]/g, \"-\");\n\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n ({ className = \"\", label, error, id, checked, ...props }, ref) => {\n const generatedId = useId();\n const switchId = id || `switch-${sanitizeId(generatedId)}`;\n const containerClasses = `flex items-center space-x-2 ${className}`\n .trim()\n .replace(/\\s+/g, \" \");\n\n return (\n <div className={containerClasses}>\n <label\n htmlFor={switchId}\n className={`\n relative inline-flex h-6 w-11 cursor-pointer items-center rounded-full transition-colors duration-200\n focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\n disabled:cursor-not-allowed disabled:opacity-50\n ${checked ? \"bg-primary\" : \"bg-zinc-300 dark:bg-zinc-600\"}\n `\n .trim()\n .replace(/\\s+/g, \" \")}\n >\n <input\n ref={ref}\n type=\"checkbox\"\n id={switchId}\n className=\"sr-only\"\n checked={checked}\n {...props}\n />\n <span\n className={`\n pointer-events-none\n inline-block\n h-4\n w-4\n transform\n rounded-full\n bg-white\n shadow-lg\n ring-0\n transition-transform\n duration-300\n ease-in-out\n ${checked ? \"translate-x-6\" : \"translate-x-1\"}\n `\n .trim()\n .replace(/\\s+/g, \" \")}\n />\n </label>\n {label && (\n <label\n htmlFor={switchId}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer\"\n >\n {label}\n </label>\n )}\n {error && (\n <p className=\"text-sm font-medium text-destructive mt-1\">\n {error}\n </p>\n )}\n </div>\n );\n }\n);\n\nSwitch.displayName = \"Switch\";\n","import { useMemo, useState, useRef, useEffect } from \"react\";\nimport { Calendar } from \"../calendar\";\nimport type {\n DatePickerProps,\n DatePickerValue,\n DateRangeValue,\n} from \"./types\";\n\nconst formatDate = (date: Date | null) =>\n date?.toLocaleDateString(undefined, {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n }) ?? \"\";\n\nconst isRangeValue = (value: DatePickerValue): value is DateRangeValue =>\n typeof value === \"object\" &&\n value !== null &&\n \"start\" in value &&\n \"end\" in value;\n\nconst emptyRange: DateRangeValue = { start: null, end: null };\n\nexport const DatePicker = ({\n mode = \"single\",\n value,\n onChange,\n label,\n placeholder = \"Pick a date\",\n helperText,\n disabled = false,\n className = \"\",\n presets,\n}: DatePickerProps) => {\n const [open, setOpen] = useState(false);\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<DatePickerValue>(\n value ?? (mode === \"range\" ? emptyRange : null)\n );\n\n const currentValue = isControlled ? value : internalValue;\n const singleValue = mode === \"range\" ? null : (currentValue as Date | null);\n const rangeValue =\n mode === \"range\" && isRangeValue(currentValue)\n ? currentValue\n : mode === \"range\"\n ? { ...emptyRange }\n : emptyRange;\n\n const displayValue = useMemo(() => {\n if (mode === \"range\") {\n if (rangeValue.start && rangeValue.end) {\n return `${formatDate(rangeValue.start)} — ${formatDate(\n rangeValue.end\n )}`;\n }\n if (rangeValue.start) {\n return `${formatDate(rangeValue.start)} — …`;\n }\n return \"\";\n }\n return formatDate(singleValue);\n }, [mode, rangeValue.end, rangeValue.start, singleValue]);\n\n const updateValue = (next: DatePickerValue) => {\n if (!isControlled) {\n setInternalValue(next);\n }\n onChange?.(next);\n };\n\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n }\n };\n\n if (open) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [open]);\n\n const handlePresetClick = (getValue: () => DatePickerValue) => {\n const next = getValue();\n updateValue(next);\n setOpen(false);\n };\n\n return (\n <div\n ref={containerRef}\n className={`w-full space-y-2 ${className}`.trim()}\n >\n {label && (\n <p className=\"text-sm font-medium text-heading\">{label}</p>\n )}\n <div className=\"relative\">\n <button\n type=\"button\"\n className={`flex w-full items-center justify-between rounded-md border border-black/5 dark:border-white/10 backdrop-blur-xl bg-white/40 dark:bg-zinc-950/40 px-3 py-2 text-sm shadow-sm ${disabled ? \"opacity-50 cursor-not-allowed\" : \"\"\n }`}\n onClick={() => !disabled && setOpen((prev) => !prev)}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n disabled={disabled}\n >\n <span\n className={\n displayValue ? \"text-foreground\" : \"text-muted-foreground\"\n }\n >\n {displayValue || placeholder}\n </span>\n <span aria-hidden=\"true\">📅</span>\n </button>\n {open && !disabled && (\n <div className=\"absolute left-0 top-12 z-40 dropdown-panel\">\n <Calendar\n value={mode === \"single\" ? singleValue ?? null : undefined}\n selectionMode={mode}\n range={mode === \"range\" ? rangeValue : undefined}\n onSelect={\n mode === \"single\"\n ? (date) => {\n updateValue(date);\n setOpen(false);\n }\n : undefined\n }\n onRangeSelect={\n mode === \"range\"\n ? (nextRange) => {\n updateValue(nextRange);\n if (nextRange.start && nextRange.end) {\n setOpen(false);\n }\n }\n : undefined\n }\n />\n {presets?.length ? (\n <div className=\"mt-3 flex flex-wrap gap-2\">\n {presets.map((preset) => (\n <button\n key={preset.label}\n type=\"button\"\n className=\"rounded-full border border-input px-3 py-1 text-xs text-muted-foreground transition-colors hover:border-ring hover:text-heading\"\n onClick={() => handlePresetClick(preset.value)}\n >\n {preset.label}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n )}\n </div>\n {helperText && (\n <p className=\"text-xs text-muted-foreground\">{helperText}</p>\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport {\n useReactTable,\n getCoreRowModel,\n getPaginationRowModel,\n getFilteredRowModel,\n flexRender,\n type ColumnDef,\n type PaginationState,\n} from \"@tanstack/react-table\";\nimport Combobox from \"../combobox/Combobox\";\nimport MultiSelectCombobox from \"../multi-select-combobox/MultiSelectCombobox\";\nimport { Input } from \"../input/Input\";\nimport { Select } from \"../select/Select\";\nimport { Switch } from \"../switch/Switch\";\nimport { DatePicker } from \"../date-picker/DatePicker\";\nimport { type DatePickerValue, type DateRangeValue } from \"../date-picker/types\";\n\n// Filter option type - can be static or async\nexport interface FilterOption {\n id: string;\n label: string;\n type?: \"text\" | \"select\" | \"combobox\" | \"checkbox\" | \"switch\" | \"date\" | \"date-range\" | \"number-range\";\n placeholder?: string;\n options?: string[]; // Static options\n // Async options support\n queryKey?: string | string[]; // React Query key for caching\n fetchOptions?: () => Promise<string[]>; // Async function to fetch options\n isLoading?: boolean; // Loading state (managed externally)\n multiple?: boolean; // Enable multi-select\n /* Crystal UI Unification */\n /*\n ### Automated Browser Testing\n The filters were verified using the browser subagent, confirming that each filter type correctly updates the table data in real-time and adheres to our new unified \"Crystal\" aesthetic.\n\n ````carousel\n \n <!-- slide -->\n \n <!-- slide -->\n \n ````\n\n ### Key Successes:\n - **Unified Aesthetic**: All components now share a consistent `backdrop-blur-xl` and semi-transparent background.\n - **Improved Visual Hierarchy**: The crystal effect makes the components feel integrated with the page while still being clearly interactive.\n - **Robust Logic**: Maintained all advanced filtering logic (date ranges, numeric ranges, partial matches) while upgrading the visual layer.\n */\n}\n\n// Filter value can be single string, array of strings, or range objects\nexport type FilterValue = string | string[] | boolean | DatePickerValue | { min?: number; max?: number };\nexport type FilterValues = Record<string, FilterValue>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface DataTableProps<T = Record<string, any>> {\n columns: {\n id: string;\n label: string;\n visible?: boolean;\n filterable?: boolean; // Enable filtering for this column\n multiFilter?: boolean; // Enable multi-select filter for this column\n /** Priority for responsive display (1 = always visible, higher = hidden earlier on small screens) */\n priority?: number;\n }[];\n data: T[];\n isLoading?: boolean; // Table data loading state\n onColumnToggle?: (columnId: string) => void;\n /** Number of items per page */\n pageSize?: number;\n /** Maximum height for the scrollable table area */\n maxHeight?: string;\n onSearch?: (query: string) => void;\n onExport?: () => void;\n onRowAction?: (action: string, row: T) => void;\n onFilterChange?: (filters: FilterValues) => void;\n // Filter options - can include async filters\n filterOptions?: FilterOption[];\n // Called when filters are applied (for server-side filtering)\n onFiltersApply?: (filters: FilterValues) => void;\n // Enable server-side filtering mode\n serverSideFiltering?: boolean;\n searchPlaceholder?: string;\n children?: React.ReactNode;\n /** Total row count for server-side pagination */\n totalCount?: number;\n /** Callback when pagination changes (for server-side pagination) */\n onPaginationChange?: (pageIndex: number, pageSize: number) => void;\n}\n\ninterface FilterDropdownProps {\n isOpen: boolean;\n onClose: () => void;\n children: React.ReactNode;\n}\n\nexport const FilterDropdown: React.FC<FilterDropdownProps> = ({\n isOpen,\n onClose,\n children,\n}) => {\n if (!isOpen) return null;\n\n return (\n <>\n <div\n className=\"fixed inset-0 z-40\"\n onClick={onClose}\n aria-hidden=\"true\"\n />\n <div className=\"absolute top-full right-0 mt-2 bg-white dark:bg-neutral-800 rounded-lg shadow-lg border border-neutral-200 dark:border-neutral-700 z-50 min-w-64\">\n {children}\n </div>\n </>\n );\n};\n\ninterface FilterButtonProps {\n icon: React.ReactNode;\n label: string;\n onClick: () => void;\n hasActive?: boolean;\n}\n\nexport const FilterButton: React.FC<FilterButtonProps> = ({\n icon,\n label,\n onClick,\n hasActive,\n}) => (\n <button\n onClick={onClick}\n title={label}\n className={`p-2 rounded-lg transition-colors ${hasActive\n ? \"bg-primary-100 dark:bg-primary-900 text-primary-600 dark:text-primary-400\"\n : \"text-neutral-600 dark:text-neutral-400 hover:bg-neutral-100 dark:hover:bg-neutral-700\"\n }`}\n >\n {icon}\n </button>\n);\n\ninterface ColumnToggleProps {\n columns: {\n id: string;\n label: string;\n visible?: boolean;\n }[];\n onToggle: (columnId: string) => void;\n onShowAll?: () => void;\n onHideAll?: () => void;\n}\n\nexport const ColumnToggle: React.FC<ColumnToggleProps> = ({\n columns,\n onToggle,\n onShowAll,\n onHideAll,\n}) => (\n <div className=\"p-4 space-y-3\">\n <div className=\"flex items-center justify-between mb-3\">\n <span className=\"text-sm font-semibold text-neutral-900 dark:text-white\">\n COLUMNS\n </span>\n </div>\n\n <div className=\"space-y-2 max-h-64 overflow-y-auto\">\n {columns.map((col) => (\n <label\n key={col.id}\n className=\"flex items-center gap-2 cursor-pointer px-2 py-1 hover:bg-neutral-50 dark:hover:bg-neutral-700 rounded\"\n >\n <input\n type=\"checkbox\"\n checked={col.visible !== false}\n onChange={() => onToggle(col.id)}\n className=\"w-4 h-4 rounded cursor-pointer accent-primary-500\"\n />\n <span className=\"text-sm text-neutral-700 dark:text-neutral-300\">\n {col.label}\n </span>\n </label>\n ))}\n </div>\n\n {(onShowAll || onHideAll) && (\n <div className=\"flex gap-2 pt-2 border-t border-neutral-200 dark:border-neutral-700\">\n {onShowAll && (\n <button\n onClick={onShowAll}\n className=\"flex-1 text-xs font-semibold text-primary-500 hover:text-primary-600 py-1\"\n >\n SHOW ALL\n </button>\n )}\n {onHideAll && (\n <button\n onClick={onHideAll}\n className=\"flex-1 text-xs font-semibold text-neutral-500 hover:text-neutral-600 py-1\"\n >\n HIDE ALL\n </button>\n )}\n </div>\n )}\n </div>\n);\n\ninterface FilterProfileProps {\n isOpen: boolean;\n onClose: () => void;\n onSaveProfile: (name: string) => void;\n}\n\nexport const FilterProfile: React.FC<FilterProfileProps> = ({\n isOpen,\n onClose,\n onSaveProfile,\n}) => {\n const [profileName, setProfileName] = React.useState(\"\");\n\n const handleSave = () => {\n if (profileName.trim()) {\n onSaveProfile(profileName);\n setProfileName(\"\");\n onClose();\n }\n };\n\n if (!isOpen) return null;\n\n return (\n <div\n className=\"fixed inset-0 bg-black/50 flex items-center justify-center z-50\"\n onClick={onClose}\n >\n <div\n className=\"bg-white dark:bg-neutral-800 rounded-xl p-6 max-w-md w-full mx-4\"\n onClick={(e) => e.stopPropagation()}\n >\n <h2 className=\"text-2xl font-bold text-neutral-900 dark:text-white mb-4\">\n Add new profile\n </h2>\n\n <label className=\"block text-sm font-medium text-primary-500 mb-2\">\n Enter filter profile name:\n </label>\n <input\n type=\"text\"\n value={profileName}\n onChange={(e) => setProfileName(e.target.value)}\n placeholder=\"Enter value\"\n className=\"w-full px-4 py-3 border-2 border-primary-500 rounded-lg bg-white dark:bg-neutral-700 text-neutral-900 dark:text-white placeholder:text-neutral-400 dark:placeholder:text-neutral-500 mb-6 focus:outline-none focus:ring-2 focus:ring-primary-300\"\n onKeyPress={(e) => e.key === \"Enter\" && handleSave()}\n />\n\n <div className=\"flex gap-4\">\n <button\n onClick={onClose}\n className=\"flex-1 px-4 py-3 rounded-lg border-2 border-neutral-300 dark:border-neutral-600 text-neutral-700 dark:text-neutral-200 font-semibold hover:bg-neutral-100 dark:hover:bg-neutral-700 transition-colors flex items-center justify-center gap-2\"\n >\n <span>🗑️</span>\n CANCEL\n </button>\n <button\n onClick={handleSave}\n disabled={!profileName.trim()}\n className=\"flex-1 px-4 py-3 rounded-lg bg-neutral-900 dark:bg-white text-white dark:text-neutral-900 font-semibold hover:bg-neutral-800 dark:hover:bg-neutral-100 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n >\n SAVE\n </button>\n </div>\n </div>\n </div>\n );\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport default function DataTable<T = Record<string, any>>({\n columns,\n data,\n isLoading = false,\n onColumnToggle,\n pageSize = 10,\n maxHeight = \"500px\",\n onExport,\n onRowAction,\n onFilterChange,\n onFiltersApply,\n serverSideFiltering = false,\n filterOptions: externalFilterOptions,\n totalCount,\n onPaginationChange,\n}: DataTableProps<T>) {\n // Pagination state\n const [pagination, setPagination] = React.useState<PaginationState>({\n pageIndex: 0,\n pageSize: pageSize,\n });\n\n // State for async filter options\n const [asyncFilterOptions, setAsyncFilterOptions] = React.useState<\n Record<string, { options: string[]; isLoading: boolean }>\n >({});\n\n // Fetch async filter options when filter selector opens\n const fetchAsyncOptions = React.useCallback(\n async (filter: FilterOption) => {\n if (!filter.fetchOptions || asyncFilterOptions[filter.id]?.options) {\n return; // Already fetched or no fetch function\n }\n\n setAsyncFilterOptions((prev) => ({\n ...prev,\n [filter.id]: { options: [], isLoading: true },\n }));\n\n try {\n const options = await filter.fetchOptions();\n setAsyncFilterOptions((prev) => ({\n ...prev,\n [filter.id]: { options, isLoading: false },\n }));\n } catch (error) {\n console.error(`Failed to fetch options for ${filter.id}:`, error);\n setAsyncFilterOptions((prev) => ({\n ...prev,\n [filter.id]: { options: [], isLoading: false },\n }));\n }\n },\n [asyncFilterOptions]\n );\n\n // Auto-generate filter options from columns that are filterable\n const filterOptions: FilterOption[] = React.useMemo(() => {\n if (externalFilterOptions && externalFilterOptions.length > 0) {\n // Merge external options with async loaded options\n return externalFilterOptions.map((filter) => {\n const asyncData = asyncFilterOptions[filter.id];\n if (asyncData) {\n return {\n ...filter,\n options: asyncData.options,\n isLoading: asyncData.isLoading,\n };\n }\n return filter;\n });\n }\n\n // Generate filter options from filterable columns\n return columns\n .filter((col) => col.filterable !== false)\n .map((col) => {\n // Get unique values from data for this column\n const uniqueValues = new Set<string>();\n data.forEach((row) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const value = (row as any)[col.id];\n if (value !== undefined && value !== null && value !== \"\") {\n uniqueValues.add(String(value));\n }\n });\n\n return {\n id: col.id,\n label: col.label,\n options: Array.from(uniqueValues).sort(),\n multiple: col.multiFilter, // Enable multi-select from column config\n };\n });\n }, [columns, data, externalFilterOptions, asyncFilterOptions]);\n\n const [columnMenuOpen, setColumnMenuOpen] = React.useState(false);\n const [profileMenuOpen, setProfileMenuOpen] = React.useState(false);\n const [profileOpen, setProfileOpen] = React.useState(false);\n const [filterSelectorOpen, setFilterSelectorOpen] = React.useState(false);\n const [visibleFilters, setVisibleFilters] = React.useState<string[]>([]);\n const [activeFilters, setActiveFilters] = React.useState<FilterValues>({});\n const [rowMenuOpen, setRowMenuOpen] = React.useState<number | null>(null);\n const [searchQuery, setSearchQuery] = React.useState(\"\");\n\n // Fetch async options when filter selector opens\n React.useEffect(() => {\n if (filterSelectorOpen && externalFilterOptions) {\n externalFilterOptions.forEach((filter) => {\n if (filter.fetchOptions) {\n fetchAsyncOptions(filter);\n }\n });\n }\n }, [filterSelectorOpen, externalFilterOptions, fetchAsyncOptions]);\n\n const visibleColumns = columns.filter((col) => col.visible !== false);\n\n // Filter data based on search query and active filters (client-side only)\n const filteredData = React.useMemo(() => {\n // If server-side filtering is enabled, don't filter on client\n if (serverSideFiltering) {\n return data;\n }\n\n return data.filter((row) => {\n // First check search query (searches across all string fields)\n if (searchQuery.trim()) {\n const query = searchQuery.toLowerCase();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const rowValues = Object.values(row as any);\n const matchesSearch = rowValues.some((value) => {\n if (value === null || value === undefined) return false;\n return String(value).toLowerCase().includes(query);\n });\n if (!matchesSearch) return false;\n }\n\n // Then check each active filter\n for (const [filterId, filterValue] of Object.entries(activeFilters)) {\n if (filterValue === undefined || filterValue === null || filterValue === \"\") continue;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const rowValue = (row as any)[filterId];\n const filterOption = filterOptions.find(f => f.id === filterId);\n\n if (filterOption?.type === \"text\") {\n if (!String(rowValue).toLowerCase().includes(String(filterValue).toLowerCase())) return false;\n continue;\n }\n\n if (filterOption?.type === \"number-range\") {\n const range = filterValue as { min?: number; max?: number };\n const val = Number(rowValue);\n if (range.min !== undefined && val < range.min) return false;\n if (range.max !== undefined && val > range.max) return false;\n continue;\n }\n\n if (filterOption?.type === \"date-range\") {\n const range = filterValue as unknown as DateRangeValue;\n if (!range.start) continue;\n const val = new Date(rowValue).getTime();\n if (val < range.start.getTime()) return false;\n if (range.end && val > range.end.getTime()) return false;\n continue;\n }\n\n if (filterOption?.type === \"date\") {\n const filterDate = filterValue as unknown as Date;\n const rowDate = new Date(rowValue);\n if (filterDate.toDateString() !== rowDate.toDateString()) return false;\n continue;\n }\n\n if (filterOption?.type === \"switch\" || filterOption?.type === \"checkbox\") {\n if (Boolean(rowValue) !== Boolean(filterValue)) return false;\n continue;\n }\n\n // Default exact match / multi-select behavior\n const rowValueStr = String(rowValue).toLowerCase();\n if (Array.isArray(filterValue)) {\n if (filterValue.length === 0) continue;\n const matchesAny = filterValue.some(\n (val) => String(val).toLowerCase() === rowValueStr\n );\n if (!matchesAny) return false;\n } else if (typeof filterValue === \"string\") {\n const filterValueStr = filterValue.toLowerCase();\n if (rowValueStr !== filterValueStr) return false;\n }\n }\n return true;\n });\n }, [data, activeFilters, searchQuery, serverSideFiltering, filterOptions]);\n\n // TanStack Table columns definition\n const tableColumns = React.useMemo<ColumnDef<T>[]>(\n () =>\n visibleColumns.map((col) => ({\n id: col.id,\n accessorKey: col.id,\n header: col.label,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n cell: (info: any) => info.getValue() || \"-\",\n })),\n [visibleColumns]\n );\n\n // TanStack Table instance\n const table = useReactTable({\n data: filteredData,\n columns: tableColumns,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n state: {\n pagination,\n globalFilter: searchQuery,\n },\n onPaginationChange: (updater) => {\n const newPagination =\n typeof updater === \"function\" ? updater(pagination) : updater;\n setPagination(newPagination);\n onPaginationChange?.(newPagination.pageIndex, newPagination.pageSize);\n },\n manualPagination: !!totalCount, // Enable manual pagination for server-side\n pageCount: totalCount\n ? Math.ceil(totalCount / pagination.pageSize)\n : undefined,\n });\n\n // Reset pagination when filters change\n React.useEffect(() => {\n setPagination((prev) => ({ ...prev, pageIndex: 0 }));\n }, [activeFilters, searchQuery]);\n\n const handleFilterChange = (filterId: string, value: FilterValue) => {\n const newFilters = {\n ...activeFilters,\n [filterId]: value,\n };\n setActiveFilters(newFilters);\n onFilterChange?.(newFilters);\n\n // For server-side filtering, call the apply handler\n if (serverSideFiltering) {\n onFiltersApply?.(newFilters);\n }\n };\n\n const handleResetFilters = () => {\n setActiveFilters({});\n onFilterChange?.({});\n\n // For server-side filtering, call the apply handler with empty filters\n if (serverSideFiltering) {\n onFiltersApply?.({});\n }\n };\n\n const hasActiveFilters = Object.values(activeFilters).some((v) => v !== \"\");\n\n const handleSaveProfile = (profileName: string) => {\n const filterState = {\n name: profileName,\n filters: activeFilters,\n timestamp: new Date().toISOString(),\n };\n console.log(\"Filter profile saved:\", filterState);\n };\n\n return (\n <div className=\"space-y-0\">\n {/* Row 1: Filters Row - Separated with border */}\n <div className=\"flex items-center justify-between gap-4 py-4 px-4 bg-white dark:bg-neutral-900 border border-neutral-200 dark:border-neutral-700 rounded-lg mb-4\">\n {/* Filter Dropdowns - horizontal layout */}\n <div className=\"flex items-center gap-3 flex-wrap\">\n {filterOptions\n .filter((filter) => visibleFilters.includes(filter.id))\n .map((filter, index) => {\n const isActive = activeFilters[filter.id] !== undefined && activeFilters[filter.id] !== \"\" &&\n (!Array.isArray(activeFilters[filter.id]) || (activeFilters[filter.id] as string[]).length > 0);\n\n return (\n <div\n key={filter.id}\n className={`min-w-[200px] ${index > 0\n ? \"pl-3 border-l border-neutral-200 dark:border-neutral-600\"\n : \"\"\n }`}\n >\n {filter.isLoading ? (\n <div className=\"h-10 flex items-center justify-center bg-neutral-100 dark:bg-neutral-800 rounded-md px-3\">\n <svg\n className=\"w-4 h-4 animate-spin text-neutral-400\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n <span className=\"ml-2 text-sm text-neutral-500\">\n {filter.label}\n </span>\n </div>\n ) : filter.type === \"text\" ? (\n <Input\n value={(activeFilters[filter.id] as string) || \"\"}\n onChange={(e) => handleFilterChange(filter.id, e.target.value)}\n placeholder={filter.placeholder || filter.label}\n className={isActive ? \"border-primary-500\" : \"\"}\n />\n ) : filter.type === \"select\" ? (\n <Select\n value={(activeFilters[filter.id] as string) || \"\"}\n onChange={(e) => handleFilterChange(filter.id, e.target.value)}\n placeholder={filter.placeholder || filter.label}\n options={(filter.options || []).map((opt) => ({\n value: opt,\n label: opt,\n }))}\n className={isActive ? \"border-primary-500\" : \"\"}\n />\n ) : filter.type === \"switch\" ? (\n <Switch\n checked={Boolean(activeFilters[filter.id])}\n onChange={(e) => handleFilterChange(filter.id, e.target.checked)}\n label={filter.label}\n />\n ) : filter.type === \"date-range\" ? (\n <DatePicker\n mode=\"range\"\n value={(activeFilters[filter.id] as unknown as DateRangeValue) || { start: null, end: null }}\n onChange={(val) => handleFilterChange(filter.id, val)}\n placeholder={filter.placeholder || filter.label}\n />\n ) : filter.type === \"number-range\" ? (\n <div className=\"flex items-center gap-1\">\n <Input\n type=\"number\"\n placeholder=\"Min\"\n value={(activeFilters[filter.id] as { min?: number })?.min ?? \"\"}\n onChange={(e) => {\n const val = e.target.value === \"\" ? undefined : Number(e.target.value);\n const current = (activeFilters[filter.id] as { min?: number; max?: number }) || {};\n handleFilterChange(filter.id, { ...current, min: val });\n }}\n className=\"h-9 px-2 text-xs\"\n />\n <span className=\"text-neutral-400\">-</span>\n <Input\n type=\"number\"\n placeholder=\"Max\"\n value={(activeFilters[filter.id] as { max?: number })?.max ?? \"\"}\n onChange={(e) => {\n const val = e.target.value === \"\" ? undefined : Number(e.target.value);\n const current = (activeFilters[filter.id] as { min?: number; max?: number }) || {};\n handleFilterChange(filter.id, { ...current, max: val });\n }}\n className=\"h-9 px-2 text-xs\"\n />\n </div>\n ) : filter.multiple ? (\n <MultiSelectCombobox\n value={\n Array.isArray(activeFilters[filter.id])\n ? (activeFilters[filter.id] as string[])\n : activeFilters[filter.id]\n ? [activeFilters[filter.id] as string]\n : []\n }\n onChange={(values) => handleFilterChange(filter.id, values)}\n placeholder={filter.placeholder || filter.label}\n options={(filter.options || []).map((opt) => ({\n value: opt,\n label: opt,\n }))}\n className={isActive ? \"border-primary-500 border-2\" : \"\"}\n />\n ) : (\n <Combobox\n value={\n Array.isArray(activeFilters[filter.id])\n ? (activeFilters[filter.id] as string[])[0] || \"\"\n : (activeFilters[filter.id] as string) || \"\"\n }\n onChange={(value) => handleFilterChange(filter.id, value)}\n placeholder={filter.placeholder || filter.label}\n options={(filter.options || []).map((opt) => ({\n value: opt,\n label: opt,\n }))}\n className={isActive ? \"border-primary-500 border-2\" : \"\"}\n />\n )}\n </div>\n );\n })}\n </div>\n\n {/* Right side icons */}\n <div className=\"flex items-center gap-1 ml-auto\">\n {/* Add Filter Selector - Funnel icon */}\n <div className=\"relative\">\n <button\n onClick={() => setFilterSelectorOpen(!filterSelectorOpen)}\n title=\"Add filter\"\n className=\"p-2 rounded-lg text-neutral-400 hover:text-neutral-600 hover:bg-neutral-100 dark:hover:bg-neutral-700 transition-colors\"\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3 4h18l-7 8v6l-4 2v-8L3 4z\"\n />\n </svg>\n </button>\n <FilterDropdown\n isOpen={filterSelectorOpen}\n onClose={() => setFilterSelectorOpen(false)}\n >\n <div className=\"p-2 min-w-48 space-y-1\">\n <div className=\"text-xs font-semibold text-neutral-500 px-2 pb-2\">\n Show filters\n </div>\n {filterOptions.map((filter) => (\n <label\n key={filter.id}\n className=\"flex items-center gap-2 px-2 py-1.5 rounded-lg cursor-pointer hover:bg-neutral-50 dark:hover:bg-neutral-700\"\n >\n <input\n type=\"checkbox\"\n checked={visibleFilters.includes(filter.id)}\n onChange={(e) => {\n if (e.target.checked) {\n setVisibleFilters([...visibleFilters, filter.id]);\n } else {\n setVisibleFilters(\n visibleFilters.filter((id) => id !== filter.id)\n );\n // Also clear the filter value when hiding\n setActiveFilters((prev) => {\n const newFilters = { ...prev };\n delete newFilters[filter.id];\n return newFilters;\n });\n }\n }}\n className=\"w-4 h-4 rounded cursor-pointer accent-primary-500\"\n />\n <span className=\"text-sm text-neutral-700 dark:text-neutral-300\">\n {filter.label}\n </span>\n </label>\n ))}\n <div className=\"flex gap-2 pt-2 border-t border-neutral-200 dark:border-neutral-700\">\n <button\n onClick={() =>\n setVisibleFilters(filterOptions.map((f) => f.id))\n }\n className=\"flex-1 text-xs font-semibold text-primary-500 hover:text-primary-600 py-1\"\n >\n SHOW ALL\n </button>\n <button\n onClick={() => {\n setVisibleFilters([]);\n setActiveFilters({});\n }}\n className=\"flex-1 text-xs font-semibold text-neutral-500 hover:text-neutral-600 py-1\"\n >\n HIDE ALL\n </button>\n </div>\n </div>\n </FilterDropdown>\n </div>\n\n {/* Reset Filters - Funnel with X icon */}\n <button\n onClick={handleResetFilters}\n disabled={!hasActiveFilters}\n title=\"Clear filters\"\n className=\"p-2 rounded-lg text-neutral-400 hover:text-neutral-600 hover:bg-neutral-100 dark:hover:bg-neutral-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors\"\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3 4h18l-7 8v6l-4 2v-8L3 4z\"\n />\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M17 17l4 4m0-4l-4 4\"\n />\n </svg>\n </button>\n\n {/* Save Profile - Person with funnel icon */}\n <div className=\"relative\">\n <button\n onClick={() => setProfileMenuOpen(!profileMenuOpen)}\n title=\"Filter profiles\"\n className=\"p-2 rounded-lg text-neutral-400 hover:text-neutral-600 hover:bg-neutral-100 dark:hover:bg-neutral-700 transition-colors\"\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n viewBox=\"0 0 24 24\"\n >\n {/* Person head */}\n <circle cx=\"9\" cy=\"7\" r=\"3\" />\n {/* Person body */}\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M3 21v-2a4 4 0 014-4h4\"\n />\n {/* Small funnel */}\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M15 12h6l-3 3.5v2.5l-1.5 1v-3.5L15 12z\"\n />\n </svg>\n </button>\n <FilterDropdown\n isOpen={profileMenuOpen}\n onClose={() => setProfileMenuOpen(false)}\n >\n <div className=\"p-2 min-w-48\">\n <button\n onClick={() => {\n setProfileOpen(true);\n setProfileMenuOpen(false);\n }}\n className=\"w-full text-left px-4 py-3 text-primary-500 font-medium hover:bg-neutral-50 dark:hover:bg-neutral-700 rounded-lg border-2 border-dashed border-primary-300\"\n >\n Save new filter profile\n </button>\n </div>\n </FilterDropdown>\n </div>\n </div>\n </div>\n\n {/* Table */}\n <div className=\"bg-white dark:bg-neutral-800 rounded-lg border border-neutral-200 dark:border-neutral-700 overflow-hidden\">\n {/* Search Bar + Actions Row inside table card */}\n <div className=\"flex items-center justify-between gap-3 px-4 py-3 border-b border-neutral-200 dark:border-neutral-700\">\n {/* Search - Left side */}\n <div className=\"relative w-[300px]\">\n <svg\n className=\"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-neutral-400\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"\n />\n </svg>\n <input\n type=\"text\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n placeholder=\"Search ...\"\n className=\"w-full pl-9 pr-3 py-2 text-sm bg-neutral-100 dark:bg-neutral-800 border-0 rounded-lg text-neutral-900 dark:text-white placeholder:text-neutral-400 focus:outline-none focus:ring-2 focus:ring-primary-500\"\n />\n </div>\n\n {/* Right side: Refresh + Columns */}\n <div className=\"flex items-center gap-1\">\n {/* Refresh */}\n <button\n onClick={onExport}\n title=\"Refresh\"\n className=\"p-2 rounded-lg text-neutral-400 hover:text-neutral-600 hover:bg-neutral-100 dark:hover:bg-neutral-700 transition-colors\"\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15\"\n />\n </svg>\n </button>\n\n {/* Table/Grid Toggle */}\n <div className=\"relative\">\n <button\n onClick={() => setColumnMenuOpen(!columnMenuOpen)}\n title=\"Column settings\"\n className=\"p-2 rounded-lg text-neutral-400 hover:text-neutral-600 hover:bg-neutral-100 dark:hover:bg-neutral-700 transition-colors\"\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M4 6h16M4 10h16M4 14h16M4 18h16\"\n />\n </svg>\n </button>\n <FilterDropdown\n isOpen={columnMenuOpen}\n onClose={() => setColumnMenuOpen(false)}\n >\n <ColumnToggle\n columns={columns}\n onToggle={(id) => {\n onColumnToggle?.(id);\n }}\n onShowAll={() => {\n columns.forEach((col) => {\n if (col.visible === false) onColumnToggle?.(col.id);\n });\n }}\n onHideAll={() => {\n columns.forEach((col) => {\n if (col.visible !== false) onColumnToggle?.(col.id);\n });\n }}\n />\n </FilterDropdown>\n </div>\n </div>\n </div>\n\n {/* Table Container */}\n <div className=\"overflow-auto\" style={{ maxHeight }}>\n <table className=\"w-full min-w-[600px]\">\n <thead className=\"sticky top-0 bg-white dark:bg-neutral-800 z-10\">\n {table.getHeaderGroups().map((headerGroup) => (\n <tr\n key={headerGroup.id}\n className=\"border-b border-neutral-200 dark:border-neutral-700\"\n >\n {headerGroup.headers.map((header) => (\n <th\n key={header.id}\n className=\"px-4 py-3 text-left text-sm font-semibold text-neutral-900 dark:text-white whitespace-nowrap bg-white dark:bg-neutral-800\"\n >\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </th>\n ))}\n <th className=\"w-12 bg-white dark:bg-neutral-800\"></th>\n </tr>\n ))}\n </thead>\n <tbody>\n {isLoading ? (\n <tr>\n <td\n colSpan={table.getVisibleLeafColumns().length + 1}\n className=\"px-4 py-12 text-center\"\n >\n <div className=\"flex flex-col items-center gap-3\">\n <svg\n className=\"w-8 h-8 animate-spin text-primary-500\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n <span className=\"text-neutral-500\">\n Loading data...\n </span>\n </div>\n </td>\n </tr>\n ) : table.getRowModel().rows.length > 0 ? (\n <>\n {table.getRowModel().rows.map((row) => (\n <tr\n key={row.id}\n className=\"border-b border-neutral-100 dark:border-neutral-700 hover:bg-neutral-50 dark:hover:bg-neutral-700/50 transition-colors\"\n >\n {row.getVisibleCells().map((cell) => (\n <td\n key={cell.id}\n className=\"px-4 py-3 text-sm text-neutral-700 dark:text-neutral-300\"\n >\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </td>\n ))}\n {/* Row Action Menu */}\n <td className=\"px-2 py-3 text-right relative\">\n <button\n onClick={() =>\n setRowMenuOpen(\n rowMenuOpen === row.index ? null : row.index\n )\n }\n className=\"p-1 rounded hover:bg-neutral-100 dark:hover:bg-neutral-600 text-neutral-500\"\n >\n <svg\n className=\"w-5 h-5\"\n fill=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </svg>\n </button>\n {rowMenuOpen === row.index && (\n <>\n <div\n className=\"fixed inset-0 z-40\"\n onClick={() => setRowMenuOpen(null)}\n />\n <div className=\"absolute right-0 top-full mt-1 bg-white dark:bg-neutral-800 rounded-lg shadow-lg border border-neutral-200 dark:border-neutral-700 z-50 min-w-32 py-1\">\n <button\n onClick={() => {\n onRowAction?.(\"edit\", row.original);\n setRowMenuOpen(null);\n }}\n className=\"w-full text-left px-4 py-2 text-sm hover:bg-neutral-50 dark:hover:bg-neutral-700\"\n >\n Edit\n </button>\n <button\n onClick={() => {\n onRowAction?.(\"delete\", row.original);\n setRowMenuOpen(null);\n }}\n className=\"w-full text-left px-4 py-2 text-sm text-error hover:bg-neutral-50 dark:hover:bg-neutral-700\"\n >\n Delete\n </button>\n </div>\n </>\n )}\n </td>\n </tr>\n ))}\n </>\n ) : (\n <tr>\n <td\n colSpan={table.getVisibleLeafColumns().length + 1}\n className=\"px-4 py-12 text-center text-neutral-500\"\n >\n <div className=\"flex flex-col items-center gap-2\">\n <span className=\"text-4xl\">🔍</span>\n <p className=\"font-medium\">No results found</p>\n <p className=\"text-sm\">Try adjusting the filter</p>\n </div>\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n\n {/* Pagination Footer */}\n <div className=\"flex items-center justify-between px-4 py-3 border-t border-neutral-200 dark:border-neutral-700 bg-neutral-50 dark:bg-neutral-800/50\">\n {/* Left side: Page info */}\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-neutral-600 dark:text-neutral-400\">\n Showing{\" \"}\n {table.getState().pagination.pageIndex *\n table.getState().pagination.pageSize +\n 1}{\" \"}\n to{\" \"}\n {Math.min(\n (table.getState().pagination.pageIndex + 1) *\n table.getState().pagination.pageSize,\n totalCount ?? filteredData.length\n )}{\" \"}\n of {totalCount ?? filteredData.length} items\n </span>\n </div>\n\n {/* Right side: Pagination controls */}\n <div className=\"flex items-center gap-2\">\n {/* Page size selector */}\n <select\n value={table.getState().pagination.pageSize}\n onChange={(e) => table.setPageSize(Number(e.target.value))}\n className=\"px-2 py-1 text-sm border border-neutral-200 dark:border-neutral-600 rounded-lg bg-white dark:bg-neutral-700 text-neutral-700 dark:text-neutral-300\"\n >\n {[10, 20, 30, 50, 100].map((size) => (\n <option key={size} value={size}>\n {size} / page\n </option>\n ))}\n </select>\n\n {/* First page */}\n <button\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n className=\"p-1.5 rounded-lg text-neutral-500 dark:text-neutral-400 hover:bg-neutral-100 dark:hover:bg-neutral-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors\"\n title=\"First page\"\n >\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M11 19l-7-7 7-7m8 14l-7-7 7-7\"\n />\n </svg>\n </button>\n\n {/* Previous page */}\n <button\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n className=\"p-1.5 rounded-lg text-neutral-500 dark:text-neutral-400 hover:bg-neutral-100 dark:hover:bg-neutral-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors\"\n title=\"Previous page\"\n >\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15 19l-7-7 7-7\"\n />\n </svg>\n </button>\n\n {/* Page indicator */}\n <span className=\"px-3 py-1 text-sm text-neutral-700 dark:text-neutral-300\">\n Page {table.getState().pagination.pageIndex + 1} of{\" \"}\n {table.getPageCount()}\n </span>\n\n {/* Next page */}\n <button\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n className=\"p-1.5 rounded-lg text-neutral-500 dark:text-neutral-400 hover:bg-neutral-100 dark:hover:bg-neutral-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors\"\n title=\"Next page\"\n >\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n </button>\n\n {/* Last page */}\n <button\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n className=\"p-1.5 rounded-lg text-neutral-500 dark:text-neutral-400 hover:bg-neutral-100 dark:hover:bg-neutral-700 disabled:opacity-40 disabled:cursor-not-allowed transition-colors\"\n title=\"Last page\"\n >\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M13 5l7 7-7 7M5 5l7 7-7 7\"\n />\n </svg>\n </button>\n </div>\n </div>\n </div>\n\n {/* Profile Modal */}\n <FilterProfile\n isOpen={profileOpen}\n onClose={() => setProfileOpen(false)}\n onSaveProfile={(name) => {\n handleSaveProfile(name);\n setProfileOpen(false);\n }}\n />\n </div>\n );\n}\n","import { useEffect, useState } from 'react';\nimport type { RefObject } from 'react';\n\nconst focusableSelectors = [\n 'a[href]',\n 'button:not([disabled])',\n 'textarea:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n];\n\nconst scheduleMicrotask = (callback: () => void) => {\n if (typeof queueMicrotask === 'function') {\n queueMicrotask(callback);\n return;\n }\n Promise.resolve()\n .then(callback)\n .catch(() => {\n callback();\n });\n};\n\nexport const useBodyScrollLock = (active: boolean) => {\n useEffect(() => {\n if (!active || typeof window === 'undefined') return;\n const { overflow } = document.body.style;\n document.body.style.overflow = 'hidden';\n return () => {\n document.body.style.overflow = overflow;\n };\n }, [active]);\n};\n\nexport const useFocusTrap = (\n containerRef: RefObject<HTMLElement | null>,\n active: boolean,\n) => {\n useEffect(() => {\n if (!active || typeof window === 'undefined') return;\n const container = containerRef.current;\n if (!container) return;\n\n const getFocusable = () =>\n Array.from(\n container.querySelectorAll<HTMLElement>(focusableSelectors.join(',')),\n ).filter(\n (el) => !el.hasAttribute('disabled') && !el.getAttribute('aria-hidden'),\n );\n\n const focusable = getFocusable();\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n first?.focus();\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== 'Tab' || focusable.length === 0) return;\n if (event.shiftKey) {\n if (document.activeElement === first) {\n event.preventDefault();\n (last || first)?.focus();\n }\n } else if (document.activeElement === last) {\n event.preventDefault();\n (first || last)?.focus();\n }\n };\n\n container.addEventListener('keydown', handleKeyDown);\n return () => container.removeEventListener('keydown', handleKeyDown);\n }, [containerRef, active]);\n};\n\nexport const useOverlayEffects = (\n containerRef: RefObject<HTMLElement | null>,\n active: boolean,\n) => {\n useBodyScrollLock(active);\n useFocusTrap(containerRef, active);\n};\n\nexport const useOverlayTransition = (open: boolean, duration = 200) => {\n const [closing, setClosing] = useState(false);\n\n useEffect(() => {\n if (open) {\n return undefined;\n }\n\n scheduleMicrotask(() => setClosing(true));\n const timer = setTimeout(() => setClosing(false), duration);\n\n return () => {\n clearTimeout(timer);\n scheduleMicrotask(() => setClosing(false));\n };\n }, [open, duration]);\n\n const shouldRender = open || closing;\n const transitionState: 'open' | 'closing' | 'closed' = open\n ? 'open'\n : closing\n ? 'closing'\n : 'closed';\n\n return { shouldRender, transitionState };\n};\n","import { useEffect, useRef, type ReactElement } from \"react\";\nimport { motion, AnimatePresence, type TargetAndTransition } from \"framer-motion\";\nimport type { DialogProps, DialogVariant, DialogAnimation, DialogPreset } from \"./types\";\nexport type { DialogProps, DialogVariant, DialogAnimation, DialogPreset };\nimport { useOverlayEffects } from \"../../shared/overlay\";\n\n// Animation preset type\ninterface AnimationPreset {\n initial: TargetAndTransition;\n animate: TargetAndTransition;\n exit: TargetAndTransition;\n}\n\n// Animation presets for different entrance/exit effects\nconst animationVariants: Record<DialogAnimation, AnimationPreset> = {\n fade: {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n },\n scale: {\n initial: { opacity: 0, scale: 0.9, y: 20 },\n animate: { opacity: 1, scale: 1, y: 0 },\n exit: { opacity: 0, scale: 0.95, y: 10 },\n },\n slideUp: {\n initial: { opacity: 0, y: 100 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: 50 },\n },\n slideDown: {\n initial: { opacity: 0, y: -100 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: -50 },\n },\n slideLeft: {\n initial: { opacity: 0, x: 100 },\n animate: { opacity: 1, x: 0 },\n exit: { opacity: 0, x: 50 },\n },\n slideRight: {\n initial: { opacity: 0, x: -100 },\n animate: { opacity: 1, x: 0 },\n exit: { opacity: 0, x: -50 },\n },\n elastic: {\n initial: { opacity: 0, scale: 0.5, y: 50 },\n animate: { opacity: 1, scale: 1, y: 0 },\n exit: { opacity: 0, scale: 0.8, y: 20 },\n },\n bounce: {\n initial: { opacity: 0, scale: 0.3, y: -100 },\n animate: { opacity: 1, scale: 1, y: 0 },\n exit: { opacity: 0, scale: 0.5, y: -50 },\n },\n flip: {\n initial: { opacity: 0, rotateX: -90, scale: 0.9 },\n animate: { opacity: 1, rotateX: 0, scale: 1 },\n exit: { opacity: 0, rotateX: 90, scale: 0.9 },\n },\n zoom: {\n initial: { opacity: 0, scale: 0, rotate: -10 },\n animate: { opacity: 1, scale: 1, rotate: 0 },\n exit: { opacity: 0, scale: 0.5, rotate: 5 },\n },\n};\n\n// Transition configs for each animation type\nconst animationTransitions: Record<DialogAnimation, object> = {\n fade: { duration: 0.2 },\n scale: { type: \"spring\", damping: 25, stiffness: 300 },\n slideUp: { type: \"spring\", damping: 25, stiffness: 300 },\n slideDown: { type: \"spring\", damping: 25, stiffness: 300 },\n slideLeft: { type: \"spring\", damping: 25, stiffness: 300 },\n slideRight: { type: \"spring\", damping: 25, stiffness: 300 },\n elastic: { type: \"spring\", damping: 10, stiffness: 100 },\n bounce: { type: \"spring\", damping: 8, stiffness: 200, bounce: 0.5 },\n flip: { type: \"spring\", damping: 15, stiffness: 150 },\n zoom: { type: \"spring\", damping: 20, stiffness: 200 },\n};\n\n// Crystal glass panel base styling\nconst basePanel = `\n relative w-full max-w-lg rounded-2xl overflow-hidden\n border border-white/30 dark:border-white/10\n backdrop-blur-2xl backdrop-saturate-150\n bg-gradient-to-br from-white/80 via-white/70 to-white/60\n dark:from-neutral-900/90 dark:via-neutral-900/80 dark:to-neutral-800/70\n p-6\n shadow-[0_8px_32px_rgba(0,0,0,0.12),0_2px_8px_rgba(0,0,0,0.08)]\n dark:shadow-[0_8px_32px_rgba(0,0,0,0.5),0_2px_8px_rgba(0,0,0,0.3)]\n ring-1 ring-inset ring-white/20 dark:ring-white/5\n`;\n\n// Variant accent colors for icons and confirm buttons\nconst variantStyles: Record<DialogVariant, { icon: string; button: string; iconColor: string }> = {\n default: {\n icon: \"bg-primary-100 dark:bg-primary-900/30\",\n button: \"bg-primary hover:bg-primary-600 text-white\",\n iconColor: \"text-primary dark:text-primary-400\",\n },\n destructive: {\n icon: \"bg-red-100 dark:bg-red-900/30\",\n button: \"bg-red-500 hover:bg-red-600 text-white\",\n iconColor: \"text-red-500 dark:text-red-400\",\n },\n success: {\n icon: \"bg-green-100 dark:bg-green-900/30\",\n button: \"bg-green-500 hover:bg-green-600 text-white\",\n iconColor: \"text-green-500 dark:text-green-400\",\n },\n warning: {\n icon: \"bg-amber-100 dark:bg-amber-900/30\",\n button: \"bg-amber-500 hover:bg-amber-600 text-white\",\n iconColor: \"text-amber-500 dark:text-amber-400\",\n },\n info: {\n icon: \"bg-blue-100 dark:bg-blue-900/30\",\n button: \"bg-blue-500 hover:bg-blue-600 text-white\",\n iconColor: \"text-blue-500 dark:text-blue-400\",\n },\n};\n\n// Default icons per variant\nconst VariantIcon = ({ variant }: { variant: DialogVariant }): ReactElement => {\n const icons: Record<DialogVariant, ReactElement> = {\n default: (\n <svg className=\"w-6 h-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9 5.25h.008v.008H12v-.008z\" />\n </svg>\n ),\n destructive: (\n <svg className=\"w-6 h-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z\" />\n </svg>\n ),\n success: (\n <svg className=\"w-6 h-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n ),\n warning: (\n <svg className=\"w-6 h-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z\" />\n </svg>\n ),\n info: (\n <svg className=\"w-6 h-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z\" />\n </svg>\n ),\n };\n return icons[variant];\n};\n\n// Loading spinner\nconst Spinner = () => (\n <svg className=\"animate-spin w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\" />\n </svg>\n);\n\nexport const Dialog = ({\n open,\n onOpenChange,\n title,\n description,\n children,\n footer,\n closeOnOverlay = true,\n showClose = true,\n className = \"\",\n widthClassName = \"\",\n variant = \"default\",\n preset = \"custom\",\n confirmLabel = \"OK\",\n cancelLabel = \"Cancel\",\n onConfirm,\n onCancel,\n loading = false,\n icon,\n animation = \"scale\",\n}: DialogProps) => {\n const currentAnimation = animationVariants[animation];\n const currentTransition = animationTransitions[animation];\n const panelRef = useRef<HTMLDivElement | null>(null);\n useOverlayEffects(panelRef, open);\n\n useEffect(() => {\n if (!open || typeof window === \"undefined\") return;\n const handleKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onOpenChange?.(false);\n }\n };\n window.addEventListener(\"keydown\", handleKey);\n return () => window.removeEventListener(\"keydown\", handleKey);\n }, [open, onOpenChange]);\n\n const handleOverlayClick = () => {\n if (closeOnOverlay) {\n onOpenChange?.(false);\n }\n };\n\n const handleCancel = () => {\n onCancel?.();\n onOpenChange?.(false);\n };\n\n const handleConfirm = () => {\n onConfirm?.();\n if (!loading) {\n onOpenChange?.(false);\n }\n };\n\n const styles = variantStyles[variant];\n const showPresetButtons = preset !== \"custom\" && !footer;\n const showCancelButton = preset === \"confirm\";\n\n // Render preset buttons\n const renderFooter = () => {\n if (footer) return footer;\n if (!showPresetButtons) return null;\n\n return (\n <div className=\"flex gap-3 justify-end w-full\">\n {showCancelButton && (\n <button\n type=\"button\"\n onClick={handleCancel}\n disabled={loading}\n className=\"inline-flex items-center justify-center gap-2 cursor-pointer\n py-2.5 px-4 text-sm font-semibold leading-none\n rounded-lg transition-all duration-200\n bg-neutral-200 dark:bg-neutral-700\n border border-neutral-300 dark:border-neutral-600\n text-neutral-800 dark:text-white\n shadow-sm hover:bg-neutral-300 dark:hover:bg-neutral-600\n active:scale-95 hover:opacity-90\n disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n {cancelLabel}\n </button>\n )}\n <button\n type=\"button\"\n onClick={handleConfirm}\n disabled={loading}\n className={`inline-flex items-center justify-center gap-2 cursor-pointer\n py-2.5 px-4 text-sm font-semibold leading-none\n rounded-lg transition-all duration-200\n shadow-md hover:shadow-lg\n active:scale-95 hover:opacity-90\n disabled:opacity-50 disabled:cursor-not-allowed ${styles.button}`}\n >\n {loading && <Spinner />}\n {confirmLabel}\n </button>\n </div>\n );\n };\n\n return (\n <AnimatePresence>\n {open && (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center px-4 overlay-backdrop\"\n role=\"presentation\"\n >\n {/* Backdrop with blur */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.2 }}\n className=\"fixed inset-0 bg-black/30 backdrop-blur-sm\"\n onClick={handleOverlayClick}\n />\n\n {/* Crystal panel */}\n <motion.div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n className={`${basePanel} overlay-panel ${className} ${widthClassName}`.trim()}\n tabIndex={-1}\n ref={panelRef}\n onClick={(event) => event.stopPropagation()}\n initial={currentAnimation.initial}\n animate={currentAnimation.animate}\n exit={currentAnimation.exit}\n transition={currentTransition}\n >\n {/* Subtle gradient overlay for crystal effect */}\n <div className=\"absolute inset-0 bg-gradient-to-tr from-white/10 via-transparent to-white/5 dark:from-white/5 dark:to-transparent pointer-events-none rounded-2xl\" />\n\n {/* Close button */}\n {showClose && (\n <button\n type=\"button\"\n className=\"absolute right-4 top-4 w-8 h-8 flex items-center justify-center\n rounded-full transition-all duration-200\n text-neutral-400 dark:text-neutral-500\n hover:text-neutral-600 dark:hover:text-neutral-300\n hover:bg-neutral-100/50 dark:hover:bg-white/10\"\n aria-label=\"Close dialog\"\n onClick={() => onOpenChange?.(false)}\n >\n <svg className=\"w-4 h-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n\n {/* Content */}\n <div className=\"relative flex gap-4\">\n {/* Icon */}\n {preset !== \"custom\" && (\n <div className={`flex-shrink-0 w-10 h-10 rounded-full flex items-center justify-center ${styles.icon}`}>\n <span className={styles.iconColor}>\n {icon || <VariantIcon variant={variant} />}\n </span>\n </div>\n )}\n\n {/* Text content */}\n <div className=\"flex-1 min-w-0\">\n {title && (\n <h2 className=\"text-lg font-semibold text-neutral-900 dark:text-white pr-8\">\n {title}\n </h2>\n )}\n {description && (\n <p className=\"mt-1 text-sm text-neutral-600 dark:text-neutral-400 leading-relaxed\">\n {description}\n </p>\n )}\n </div>\n </div>\n\n {/* Children content */}\n {children && <div className=\"mt-4 space-y-4 relative\">{children}</div>}\n\n {/* Footer */}\n {(footer || showPresetButtons) && (\n <footer className=\"mt-6 flex justify-end gap-3 relative\">\n {renderFooter()}\n </footer>\n )}\n </motion.div>\n </div>\n )}\n </AnimatePresence>\n );\n};\n","import { useEffect, useRef } from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport type { DrawerProps, DrawerPosition } from \"./types\";\nimport { useOverlayEffects } from \"../../shared/overlay\";\n\nconst basePanel =\n \"relative flex flex-col backdrop-blur-xl bg-white/70 dark:bg-neutral-900/70 p-6 shadow-2xl border-white/20 dark:border-white/10 rounded-sm\";\n\nconst positionClasses: Record<DrawerPosition, string> = {\n right:\n \"h-[calc(100%-8px)] my-1 mr-1 w-full max-w-md ml-auto border\",\n left: \"h-[calc(100%-8px)] my-1 ml-1 w-full max-w-md mr-auto border\",\n top: \"w-[calc(100%-8px)] mx-1 mt-1 max-h-[80vh] border\",\n bottom:\n \"w-[calc(100%-8px)] mx-1 mb-1 max-h-[80vh] mt-auto border\",\n};\n\nconst getVariants = (position: DrawerPosition) => {\n switch (position) {\n case \"left\":\n return { hidden: { x: \"-100%\" }, visible: { x: 0 } };\n case \"right\":\n return { hidden: { x: \"100%\" }, visible: { x: 0 } };\n case \"top\":\n return { hidden: { y: \"-100%\" }, visible: { y: 0 } };\n case \"bottom\":\n return { hidden: { y: \"100%\" }, visible: { y: 0 } };\n }\n};\n\nexport const Drawer = ({\n open,\n onOpenChange,\n title,\n description,\n position = \"right\",\n children,\n footer,\n}: DrawerProps) => {\n const panelRef = useRef<HTMLDivElement | null>(null);\n useOverlayEffects(panelRef, open);\n\n useEffect(() => {\n if (!open || typeof window === \"undefined\") return;\n const handleKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onOpenChange?.(false);\n }\n };\n window.addEventListener(\"keydown\", handleKey);\n return () => window.removeEventListener(\"keydown\", handleKey);\n }, [open, onOpenChange]);\n\n const variants = getVariants(position);\n\n return (\n <AnimatePresence>\n {open && (\n <div\n className=\"fixed inset-0 z-40 flex overlay-backdrop\"\n role=\"presentation\"\n >\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.3 }}\n className=\"fixed inset-0 bg-black/40\"\n onClick={() => onOpenChange?.(false)}\n />\n <motion.div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n className={`${basePanel} ${positionClasses[position]}`}\n tabIndex={-1}\n ref={panelRef}\n onClick={(event) => event.stopPropagation()}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"hidden\"\n variants={variants}\n transition={{ type: \"spring\", damping: 25, stiffness: 200 }}\n >\n <button\n type=\"button\"\n className=\"absolute right-4 top-4 text-neutral-500 dark:text-neutral-400 transition-colors hover:text-neutral-900 dark:hover:text-white text-xl font-light\"\n aria-label=\"Close drawer\"\n onClick={() => onOpenChange?.(false)}\n >\n ×\n </button>\n {(title || description) && (\n <header className=\"space-y-1 pr-6\">\n {title && (\n <h2 className=\"text-lg font-semibold text-neutral-900 dark:text-white\">\n {title}\n </h2>\n )}\n {description && (\n <p className=\"text-sm text-neutral-600 dark:text-neutral-400\">\n {description}\n </p>\n )}\n </header>\n )}\n {children && (\n <div className=\"mt-4 flex-1 overflow-auto space-y-4\">\n {children}\n </div>\n )}\n {footer && <footer className=\"mt-6\">{footer}</footer>}\n </motion.div>\n </div>\n )}\n </AnimatePresence>\n );\n};\n","import { Children, cloneElement, isValidElement, useId } from \"react\";\nimport type { ReactElement } from \"react\";\n\nimport type {\n FormProps,\n FormSectionProps,\n FormFieldProps,\n FormActionsProps,\n InputGroupProps,\n FormDescriptionProps,\n FormMessageProps,\n} from \"./types\";\n\nconst cx = (...classes: Array<string | false | undefined>) =>\n classes.filter(Boolean).join(\" \").replace(/\\s+/g, \" \").trim();\n\nconst gapClassMap: Record<NonNullable<FormProps[\"gap\"]>, string> = {\n sm: \"space-y-4\",\n md: \"space-y-6\",\n lg: \"space-y-8\",\n};\n\nconst sectionColumnsMap: Record<\n NonNullable<FormSectionProps[\"columns\"]>,\n string\n> = {\n 1: \"space-y-4\",\n 2: \"grid grid-cols-2 gap-4\",\n 3: \"grid grid-cols-3 gap-4\",\n};\n\nconst inputGroupMap: Record<NonNullable<InputGroupProps[\"columns\"]>, string> = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n};\n\nconst actionsAlignMap: Record<\n NonNullable<FormActionsProps[\"align\"]>,\n string\n> = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n};\n\nconst messageIntentMap: Record<\n NonNullable<FormMessageProps[\"intent\"]>,\n string\n> = {\n default: \"text-neutral-500 dark:text-neutral-400\",\n error: \"text-red-500 dark:text-red-400\",\n success: \"text-emerald-600 dark:text-emerald-400\",\n};\n\nconst sanitizeId = (value: string) => value.replace(/[^a-zA-Z0-9_-]/g, \"-\");\n\nexport const Form = ({\n title,\n description,\n gap = \"lg\",\n children,\n className = \"\",\n ...props\n}: FormProps) => {\n return (\n <form\n className={cx(\n \"w-full space-y-6 rounded-lg border border-neutral-200 dark:border-neutral-700 bg-white dark:bg-neutral-800 p-6\",\n className\n )}\n {...props}\n >\n {(title || description) && (\n <div className=\"space-y-2\">\n {title && (\n <h2 className=\"text-xl font-semibold text-neutral-900 dark:text-white\">\n {title}\n </h2>\n )}\n {description && (\n <p className=\"text-sm text-neutral-500 dark:text-neutral-400\">\n {description}\n </p>\n )}\n </div>\n )}\n <div className={gapClassMap[gap]}>{children}</div>\n </form>\n );\n};\n\nexport const FormSection = ({\n title,\n description,\n columns = 1,\n children,\n className = \"\",\n}: FormSectionProps) => {\n return (\n <section className={cx(\"space-y-4\", className)}>\n {(title || description) && (\n <header className=\"space-y-1\">\n {title && (\n <h3 className=\"text-base font-medium text-neutral-900 dark:text-white\">\n {title}\n </h3>\n )}\n {description && (\n <p className=\"text-sm text-neutral-500 dark:text-neutral-400\">\n {description}\n </p>\n )}\n </header>\n )}\n <div className={sectionColumnsMap[columns] || sectionColumnsMap[1]}>\n {children}\n </div>\n </section>\n );\n};\n\nexport const FormDescription = ({\n children,\n className = \"\",\n id,\n}: FormDescriptionProps) => (\n <p\n id={id}\n className={cx(\n \"text-sm text-neutral-500 dark:text-neutral-400\",\n className\n )}\n >\n {children}\n </p>\n);\n\nexport const FormMessage = ({\n children,\n intent = \"default\",\n className = \"\",\n id,\n}: FormMessageProps) => (\n <p\n id={id}\n role={intent === \"error\" ? \"alert\" : \"status\"}\n className={cx(\"text-sm\", messageIntentMap[intent], className)}\n >\n {children}\n </p>\n);\n\nexport const FormField = ({\n label,\n description,\n error,\n required,\n htmlFor,\n helperAction,\n layout = \"stacked\",\n children,\n className = \"\",\n}: FormFieldProps) => {\n const autoId = useId();\n const fieldId = sanitizeId(htmlFor ?? autoId);\n const descriptionId = description ? `${fieldId}-description` : undefined;\n const errorId = error ? `${fieldId}-error` : undefined;\n\n const controls = Children.map(children, (child) => {\n if (!isValidElement(child)) {\n return child;\n }\n\n const element = child as ReactElement<Record<string, unknown>>;\n const currentDescribedBy = element.props?.[\"aria-describedby\"] as\n | string\n | undefined;\n const describedBy = [currentDescribedBy, descriptionId, errorId]\n .filter(Boolean)\n .join(\" \")\n .trim();\n\n return cloneElement(element, {\n id: element.props?.id ?? fieldId,\n \"aria-describedby\": describedBy || undefined,\n \"aria-invalid\": element.props?.[\"aria-invalid\"] ?? Boolean(error),\n });\n });\n\n const labelNode = (\n <div className=\"flex items-center justify-between gap-2\">\n <label\n htmlFor={fieldId}\n className=\"text-sm font-medium text-neutral-900 dark:text-white\"\n >\n {label}\n {required && <span className=\"text-red-500 ml-1\">*</span>}\n </label>\n {helperAction && (\n <div className=\"text-xs text-neutral-500 dark:text-neutral-400\">\n {helperAction}\n </div>\n )}\n </div>\n );\n\n if (layout === \"inline\") {\n return (\n <div\n className={cx(\n \"flex flex-wrap items-start gap-6\",\n className\n )}\n >\n <div className=\"min-w-[200px] space-y-1\">\n {labelNode}\n {description && (\n <FormDescription id={descriptionId}>{description}</FormDescription>\n )}\n </div>\n <div className=\"flex-1 space-y-2\">\n {controls}\n {error && (\n <FormMessage id={errorId} intent=\"error\">\n {error}\n </FormMessage>\n )}\n </div>\n </div>\n );\n }\n\n return (\n <div className={cx(\"space-y-2\", className)}>\n {labelNode}\n {description && (\n <FormDescription id={descriptionId}>{description}</FormDescription>\n )}\n <div className=\"space-y-2\">\n {controls}\n {error && (\n <FormMessage id={errorId} intent=\"error\">\n {error}\n </FormMessage>\n )}\n </div>\n </div>\n );\n};\n\nexport const FormActions = ({\n children,\n align = \"end\",\n className = \"\",\n}: FormActionsProps) => (\n <div\n className={cx(\n \"flex flex-wrap gap-3\",\n actionsAlignMap[align],\n className\n )}\n >\n {children}\n </div>\n);\n\nexport const InputGroup = ({\n columns = 2,\n children,\n className = \"\",\n}: InputGroupProps) => (\n <div className={cx(\"grid gap-4\", inputGroupMap[columns], className)}>\n {children}\n </div>\n);\n","import { useRef, type ComponentType } from \"react\";\nimport { motion, type HTMLMotionProps } from \"framer-motion\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type { GradualBlurProps } from \"./types.d\";\n\nexport const GradualBlur = ({\n children,\n duration = 0.5,\n delay = 0,\n blur = 8,\n triggerOnView = true,\n triggerOnce = true,\n threshold = 0.05,\n visible = false,\n direction = \"none\",\n distance = 20,\n className,\n as = \"div\",\n}: GradualBlurProps) => {\n const ref = useRef<HTMLDivElement>(null);\n\n const getInitialPosition = () => {\n switch (direction) {\n case \"top\": return { y: -distance };\n case \"bottom\": return { y: distance };\n case \"left\": return { x: -distance };\n case \"right\": return { x: distance };\n default: return { x: 0, y: 0 };\n }\n };\n\n const initialPosition = getInitialPosition();\n\n const variants = {\n hidden: {\n opacity: 0,\n filter: `blur(${blur}px)`,\n ...initialPosition\n },\n visible: {\n opacity: 1,\n filter: \"blur(0px)\",\n x: 0,\n y: 0\n }\n };\n\n const MotionComponent = motion.create(as as string) as ComponentType<HTMLMotionProps<\"div\">>;\n\n return (\n <MotionComponent\n ref={ref}\n variants={variants}\n initial=\"hidden\"\n animate={!triggerOnView ? (visible ? \"visible\" : \"hidden\") : undefined}\n whileInView={triggerOnView ? \"visible\" : undefined}\n viewport={{\n once: triggerOnce,\n amount: threshold,\n margin: \"0px 0px -50px 0px\" // Slight bottom margin to trigger earlier\n }}\n transition={{\n duration,\n delay,\n ease: \"easeOut\",\n filter: { duration: duration },\n opacity: { duration: duration }\n }}\n className={mergeClassNames(\"relative\", className)}\n >\n {children}\n </MotionComponent>\n );\n};\n","import { forwardRef, useState, useCallback, useRef, useEffect } from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\n\nexport type HoverCardPosition = \"top\" | \"bottom\" | \"left\" | \"right\";\nexport type HoverCardAlign = \"start\" | \"center\" | \"end\";\n\nexport interface HoverCardProps {\n /** The trigger element */\n children: React.ReactNode;\n /** The content to display in the hover card */\n content: React.ReactNode;\n /** Position of the hover card relative to trigger */\n position?: HoverCardPosition;\n /** Alignment of the hover card */\n align?: HoverCardAlign;\n /** Delay before showing the card (ms) */\n openDelay?: number;\n /** Delay before hiding the card (ms) */\n closeDelay?: number;\n /** Whether the hover card is disabled */\n disabled?: boolean;\n /** Custom className for the card */\n className?: string;\n /** Custom className for the trigger wrapper */\n triggerClassName?: string;\n /** Whether to show an arrow */\n arrow?: boolean;\n /** Custom width for the card */\n width?: number | string;\n /** Max width for the card */\n maxWidth?: number | string;\n}\n\nconst positionStyles: Record<\n HoverCardPosition,\n Record<HoverCardAlign, string>\n> = {\n top: {\n start: \"bottom-full left-0 mb-2\",\n center: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\n end: \"bottom-full right-0 mb-2\",\n },\n bottom: {\n start: \"top-full left-0 mt-2\",\n center: \"top-full left-1/2 -translate-x-1/2 mt-2\",\n end: \"top-full right-0 mt-2\",\n },\n left: {\n start: \"right-full top-0 mr-2\",\n center: \"right-full top-1/2 -translate-y-1/2 mr-2\",\n end: \"right-full bottom-0 mr-2\",\n },\n right: {\n start: \"left-full top-0 ml-2\",\n center: \"left-full top-1/2 -translate-y-1/2 ml-2\",\n end: \"left-full bottom-0 ml-2\",\n },\n};\n\nconst arrowStyles: Record<HoverCardPosition, string> = {\n top: \"bottom-[-6px] left-1/2 -translate-x-1/2 border-l-transparent border-r-transparent border-b-transparent border-t-white/70 dark:border-t-neutral-900/70\",\n bottom:\n \"top-[-6px] left-1/2 -translate-x-1/2 border-l-transparent border-r-transparent border-t-transparent border-b-white/70 dark:border-b-neutral-900/70\",\n left: \"right-[-6px] top-1/2 -translate-y-1/2 border-t-transparent border-b-transparent border-r-transparent border-l-white/70 dark:border-l-neutral-900/70\",\n right:\n \"left-[-6px] top-1/2 -translate-y-1/2 border-t-transparent border-b-transparent border-l-transparent border-r-white/70 dark:border-r-neutral-900/70\",\n};\n\nconst motionVariants = {\n top: {\n initial: { opacity: 0, y: 5, scale: 0.98 },\n animate: { opacity: 1, y: 0, scale: 1 },\n exit: { opacity: 0, y: 5, scale: 0.98 },\n },\n bottom: {\n initial: { opacity: 0, y: -5, scale: 0.98 },\n animate: { opacity: 1, y: 0, scale: 1 },\n exit: { opacity: 0, y: -5, scale: 0.98 },\n },\n left: {\n initial: { opacity: 0, x: 5, scale: 0.98 },\n animate: { opacity: 1, x: 0, scale: 1 },\n exit: { opacity: 0, x: 5, scale: 0.98 },\n },\n right: {\n initial: { opacity: 0, x: -5, scale: 0.98 },\n animate: { opacity: 1, x: 0, scale: 1 },\n exit: { opacity: 0, x: -5, scale: 0.98 },\n },\n} as const;\n\nconst HoverCard = forwardRef<HTMLDivElement, HoverCardProps>(\n (\n {\n children,\n content,\n position = \"bottom\",\n align = \"center\",\n openDelay = 200,\n closeDelay = 150,\n disabled = false,\n className = \"\",\n triggerClassName = \"\",\n arrow = true,\n width,\n maxWidth = 320,\n },\n ref\n ) => {\n const [isOpen, setIsOpen] = useState(false);\n const openTimeoutRef = useRef<any>(null);\n const closeTimeoutRef = useRef<any>(null);\n\n const clearTimeouts = useCallback(() => {\n if (openTimeoutRef.current) {\n clearTimeout(openTimeoutRef.current);\n openTimeoutRef.current = null;\n }\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = null;\n }\n }, []);\n\n const handleMouseEnter = useCallback(() => {\n if (disabled) return;\n clearTimeouts();\n openTimeoutRef.current = setTimeout(() => {\n setIsOpen(true);\n }, openDelay);\n }, [disabled, openDelay, clearTimeouts]);\n\n const handleMouseLeave = useCallback(() => {\n clearTimeouts();\n closeTimeoutRef.current = setTimeout(() => {\n setIsOpen(false);\n }, closeDelay);\n }, [closeDelay, clearTimeouts]);\n\n useEffect(() => {\n return () => clearTimeouts();\n }, [clearTimeouts]);\n\n const cardStyle: React.CSSProperties = {\n width: width\n ? typeof width === \"number\"\n ? `${width}px`\n : width\n : undefined,\n maxWidth: typeof maxWidth === \"number\" ? `${maxWidth}px` : maxWidth,\n };\n\n return (\n <div\n ref={ref}\n className={`relative inline-block ${triggerClassName}`}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {children}\n <AnimatePresence>\n {isOpen && (\n <motion.div\n className={`\n absolute z-50\n ${positionStyles[position][align]}\n `}\n initial={motionVariants[position].initial}\n animate={motionVariants[position].animate}\n exit={motionVariants[position].exit}\n transition={{ duration: 0.15, ease: \"easeOut\" }}\n >\n <div\n className={`\n bg-white/70 dark:bg-neutral-900/70\n backdrop-blur-xl\n rounded-xl shadow-2xl dark:shadow-neutral-950/50\n border border-white/40 dark:border-white/10\n p-4\n ${className}\n `}\n style={cardStyle}\n >\n {content}\n </div>\n {arrow && (\n <span\n className={`\n absolute w-0 h-0 border-[6px]\n ${arrowStyles[position]}\n `}\n />\n )}\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n );\n }\n);\n\nHoverCard.displayName = \"HoverCard\";\n\nexport default HoverCard;\nexport { HoverCard };\n","import type { LabelProps } from './types';\nimport { forwardRef } from 'react';\n\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(\n ({ className = '', children, required, ...props }, ref) => {\n return (\n <label\n ref={ref}\n className={`\n text-sm\n font-medium\n leading-none\n peer-disabled:cursor-not-allowed\n peer-disabled:opacity-70\n ${className}\n `.trim().replace(/\\s+/g, ' ')}\n {...props}\n >\n {children}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </label>\n );\n }\n);\n\nLabel.displayName = 'Label';\n\n","export type LoadingVariant =\n | \"spinner\"\n | \"dots\"\n | \"pulse\"\n | \"bars\"\n | \"ring\"\n | \"bounce\"\n | \"wave\"\n | \"skeleton\";\n\nexport type LoadingSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface LoadingProps {\n /** The variant/style of the loading indicator */\n variant?: LoadingVariant;\n /** Size of the loading indicator */\n size?: LoadingSize;\n /** Custom color for the loading indicator */\n color?: string;\n /** Text to display alongside the loading indicator */\n text?: string;\n /** Position of the text relative to the indicator */\n textPosition?: \"right\" | \"bottom\";\n /** Whether to show as a full-screen overlay */\n fullScreen?: boolean;\n /** Whether to show as an overlay within parent container */\n overlay?: boolean;\n /** Custom className */\n className?: string;\n /** Skeleton specific: width */\n skeletonWidth?: string;\n /** Skeleton specific: height */\n skeletonHeight?: string;\n /** Skeleton specific: rounded style */\n skeletonRounded?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n}\n\nconst sizeMap: Record<LoadingSize, { container: string; text: string }> = {\n xs: { container: \"w-4 h-4\", text: \"text-xs\" },\n sm: { container: \"w-6 h-6\", text: \"text-sm\" },\n md: { container: \"w-8 h-8\", text: \"text-sm\" },\n lg: { container: \"w-12 h-12\", text: \"text-base\" },\n xl: { container: \"w-16 h-16\", text: \"text-lg\" },\n};\n\n// Spinner - Classic rotating circle\nfunction Spinner({ size = \"md\", color = \"currentColor\" }: { size?: LoadingSize; color?: string }) {\n return (\n <svg\n className={`animate-spin ${sizeMap[size].container}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke={color}\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill={color}\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n );\n}\n\n// Dots - Three bouncing dots\nfunction Dots({ size = \"md\", color = \"currentColor\" }: { size?: LoadingSize; color?: string }) {\n const dotSize = {\n xs: \"w-1.5 h-1.5\",\n sm: \"w-2 h-2\",\n md: \"w-2.5 h-2.5\",\n lg: \"w-3 h-3\",\n xl: \"w-4 h-4\",\n };\n\n return (\n <div className=\"flex items-center gap-1\">\n {[0, 1, 2].map((i) => (\n <div\n key={i}\n className={`${dotSize[size]} rounded-full animate-bounce`}\n style={{\n backgroundColor: color,\n animationDelay: `${i * 0.15}s`,\n animationDuration: \"0.6s\",\n }}\n />\n ))}\n </div>\n );\n}\n\n// Pulse - Pulsing circle\nfunction Pulse({ size = \"md\", color = \"currentColor\" }: { size?: LoadingSize; color?: string }) {\n return (\n <div className={`relative ${sizeMap[size].container}`}>\n <div\n className=\"absolute inset-0 rounded-full animate-ping opacity-75\"\n style={{ backgroundColor: color }}\n />\n <div\n className=\"absolute inset-2 rounded-full\"\n style={{ backgroundColor: color }}\n />\n </div>\n );\n}\n\n// Bars - Audio-style animated bars\nfunction Bars({ size = \"md\", color = \"currentColor\" }: { size?: LoadingSize; color?: string }) {\n const barWidth = {\n xs: \"w-0.5\",\n sm: \"w-1\",\n md: \"w-1.5\",\n lg: \"w-2\",\n xl: \"w-2.5\",\n };\n\n return (\n <div\n className={`flex items-end gap-0.5 ${sizeMap[size].container}`}\n >\n {[0, 1, 2, 3, 4].map((i) => (\n <div\n key={i}\n className={`${barWidth[size]} rounded-sm`}\n style={{\n backgroundColor: color,\n animation: \"loading-bars 1s ease-in-out infinite\",\n animationDelay: `${i * 0.1}s`,\n height: \"40%\",\n }}\n />\n ))}\n <style>{`\n @keyframes loading-bars {\n 0%, 100% { height: 40%; }\n 50% { height: 100%; }\n }\n `}</style>\n </div>\n );\n}\n\n// Ring - Rotating ring with gradient\nfunction Ring({ size = \"md\", color = \"currentColor\" }: { size?: LoadingSize; color?: string }) {\n const strokeWidth = {\n xs: 3,\n sm: 3,\n md: 4,\n lg: 4,\n xl: 5,\n };\n\n return (\n <svg\n className={`animate-spin ${sizeMap[size].container}`}\n viewBox=\"0 0 50 50\"\n >\n <circle\n className=\"opacity-20\"\n cx=\"25\"\n cy=\"25\"\n r=\"20\"\n fill=\"none\"\n stroke={color}\n strokeWidth={strokeWidth[size]}\n />\n <circle\n cx=\"25\"\n cy=\"25\"\n r=\"20\"\n fill=\"none\"\n stroke={color}\n strokeWidth={strokeWidth[size]}\n strokeLinecap=\"round\"\n strokeDasharray=\"80, 200\"\n strokeDashoffset=\"0\"\n />\n </svg>\n );\n}\n\n// Bounce - Three bouncing circles\nfunction Bounce({ size = \"md\", color = \"currentColor\" }: { size?: LoadingSize; color?: string }) {\n const dotSize = {\n xs: \"w-2 h-2\",\n sm: \"w-3 h-3\",\n md: \"w-4 h-4\",\n lg: \"w-5 h-5\",\n xl: \"w-6 h-6\",\n };\n\n return (\n <div className=\"flex items-center gap-1\">\n {[0, 1, 2].map((i) => (\n <div\n key={i}\n className={`${dotSize[size]} rounded-full`}\n style={{\n backgroundColor: color,\n animation: \"loading-bounce 1.4s ease-in-out infinite both\",\n animationDelay: `${i * 0.16}s`,\n }}\n />\n ))}\n <style>{`\n @keyframes loading-bounce {\n 0%, 80%, 100% { transform: scale(0); }\n 40% { transform: scale(1); }\n }\n `}</style>\n </div>\n );\n}\n\n// Wave - Wave animation\nfunction Wave({ size = \"md\", color = \"currentColor\" }: { size?: LoadingSize; color?: string }) {\n const barHeight = {\n xs: \"h-3\",\n sm: \"h-4\",\n md: \"h-6\",\n lg: \"h-8\",\n xl: \"h-10\",\n };\n const barWidth = {\n xs: \"w-0.5\",\n sm: \"w-1\",\n md: \"w-1\",\n lg: \"w-1.5\",\n xl: \"w-2\",\n };\n\n return (\n <div className=\"flex items-center gap-0.5\">\n {[0, 1, 2, 3, 4].map((i) => (\n <div\n key={i}\n className={`${barWidth[size]} ${barHeight[size]} rounded-full`}\n style={{\n backgroundColor: color,\n animation: \"loading-wave 1.2s ease-in-out infinite\",\n animationDelay: `${i * 0.1}s`,\n }}\n />\n ))}\n <style>{`\n @keyframes loading-wave {\n 0%, 40%, 100% { transform: scaleY(0.4); }\n 20% { transform: scaleY(1); }\n }\n `}</style>\n </div>\n );\n}\n\n// Skeleton - Loading placeholder\nfunction Skeleton({\n width = \"100%\",\n height = \"1rem\",\n rounded = \"md\",\n}: {\n width?: string;\n height?: string;\n rounded?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\n}) {\n const roundedMap = {\n none: \"\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n full: \"rounded-full\",\n };\n\n return (\n <div\n className={`animate-pulse bg-neutral-200 dark:bg-neutral-700 ${roundedMap[rounded]}`}\n style={{ width, height }}\n />\n );\n}\n\nexport default function Loading({\n variant = \"spinner\",\n size = \"md\",\n color = \"#7367f0\",\n text,\n textPosition = \"right\",\n fullScreen = false,\n overlay = false,\n className = \"\",\n skeletonWidth,\n skeletonHeight,\n skeletonRounded = \"md\",\n}: LoadingProps) {\n const renderLoader = () => {\n switch (variant) {\n case \"spinner\":\n return <Spinner size={size} color={color} />;\n case \"dots\":\n return <Dots size={size} color={color} />;\n case \"pulse\":\n return <Pulse size={size} color={color} />;\n case \"bars\":\n return <Bars size={size} color={color} />;\n case \"ring\":\n return <Ring size={size} color={color} />;\n case \"bounce\":\n return <Bounce size={size} color={color} />;\n case \"wave\":\n return <Wave size={size} color={color} />;\n case \"skeleton\":\n return (\n <Skeleton\n width={skeletonWidth}\n height={skeletonHeight}\n rounded={skeletonRounded}\n />\n );\n default:\n return <Spinner size={size} color={color} />;\n }\n };\n\n const content = (\n <div\n className={`inline-flex items-center ${textPosition === \"bottom\"\n ? \"flex-col gap-2\"\n : \"flex-row gap-3\"\n } ${className}`}\n >\n {renderLoader()}\n {text && (\n <span\n className={`${sizeMap[size].text} text-neutral-600 dark:text-neutral-400 font-medium`}\n >\n {text}\n </span>\n )}\n </div>\n );\n\n if (fullScreen) {\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-white/80 dark:bg-neutral-950/80 backdrop-blur-sm\">\n {content}\n </div>\n );\n }\n\n if (overlay) {\n return (\n <div className=\"absolute inset-0 z-10 flex items-center justify-center bg-white/70 dark:bg-neutral-900/70 backdrop-blur-sm rounded-inherit\">\n {content}\n </div>\n );\n }\n\n return content;\n}\n\n// Export individual components for direct use\nexport { Spinner, Dots, Pulse, Bars, Ring, Bounce, Wave, Skeleton };\n","import {\n forwardRef,\n useState,\n useRef,\n useCallback,\n useEffect,\n type KeyboardEvent,\n type ClipboardEvent,\n type ChangeEvent,\n} from \"react\";\n\nexport type OTPInputSize = \"sm\" | \"md\" | \"lg\";\nexport type OTPInputVariant = \"outlined\" | \"filled\" | \"underlined\";\n\nexport interface OTPInputProps {\n /** Number of OTP digits */\n length?: number;\n /** Callback when OTP value changes */\n onChange?: (value: string) => void;\n /** Callback when all digits are filled */\n onComplete?: (value: string) => void;\n /** The current value (controlled) */\n value?: string;\n /** Default value (uncontrolled) */\n defaultValue?: string;\n /** Size of the input boxes */\n size?: OTPInputSize;\n /** Visual variant */\n variant?: OTPInputVariant;\n /** Whether the input is disabled */\n disabled?: boolean;\n /** Whether there's an error */\n error?: boolean;\n /** Error message to display */\n errorMessage?: string;\n /** Placeholder character */\n placeholder?: string;\n /** Whether to mask the input (like password) */\n mask?: boolean;\n /** Whether to auto-focus the first input */\n autoFocus?: boolean;\n /** Input type - number only or alphanumeric */\n type?: \"number\" | \"text\";\n /** Custom className for the container */\n className?: string;\n /** Custom className for each input box */\n inputClassName?: string;\n /** Separator to show between groups of digits */\n separator?: React.ReactNode;\n /** Position(s) to show separator (e.g., [3] means after 3rd digit) */\n separatorPositions?: number[];\n /** Accessible label */\n \"aria-label\"?: string;\n}\n\nconst sizeStyles: Record<OTPInputSize, string> = {\n sm: \"w-9 h-10 text-base\",\n md: \"w-12 h-14 text-xl\",\n lg: \"w-14 h-16 text-2xl\",\n};\n\nconst variantStyles: Record<\n OTPInputVariant,\n { base: string; focus: string; error: string }\n> = {\n outlined: {\n base: \"border border-neutral-300 dark:border-neutral-600 bg-transparent rounded-lg\",\n focus:\n \"focus:border-primary-500 focus:ring-2 focus:ring-primary-500/20\",\n error: \"border-red-500 dark:border-red-500\",\n },\n filled: {\n base: \"border border-transparent bg-neutral-100 dark:bg-neutral-800 rounded-lg\",\n focus:\n \"focus:border-primary-500 focus:bg-transparent focus:ring-2 focus:ring-primary-500/20\",\n error: \"bg-red-50 dark:bg-red-900/20 border-red-500\",\n },\n underlined: {\n base: \"border-b-2 border-neutral-300 dark:border-neutral-600 bg-transparent rounded-none\",\n focus: \"focus:border-primary-500\",\n error: \"border-red-500 dark:border-red-500\",\n },\n};\n\nconst OTPInput = forwardRef<HTMLDivElement, OTPInputProps>(\n (\n {\n length = 6,\n onChange,\n onComplete,\n value: controlledValue,\n defaultValue = \"\",\n size = \"md\",\n variant = \"outlined\",\n disabled = false,\n error = false,\n errorMessage,\n placeholder = \"\",\n mask = false,\n autoFocus = false,\n type = \"number\",\n className = \"\",\n inputClassName = \"\",\n separator = (\n <span className=\"text-neutral-400 text-2xl mx-2\">—</span>\n ),\n separatorPositions = [],\n \"aria-label\": ariaLabel = \"One-time password\",\n },\n ref\n ) => {\n const [values, setValues] = useState<string[]>(() => {\n const initial = controlledValue ?? defaultValue;\n return initial\n .split(\"\")\n .slice(0, length)\n .concat(Array(length).fill(\"\"))\n .slice(0, length);\n });\n\n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\n\n // Sync with controlled value\n useEffect(() => {\n if (controlledValue !== undefined) {\n const newValues = controlledValue\n .split(\"\")\n .slice(0, length)\n .concat(Array(length).fill(\"\"))\n .slice(0, length);\n setValues(newValues);\n }\n }, [controlledValue, length]);\n\n // Auto-focus first input\n useEffect(() => {\n if (autoFocus && inputRefs.current[0]) {\n inputRefs.current[0].focus();\n }\n }, [autoFocus]);\n\n const focusInput = useCallback(\n (index: number) => {\n if (index >= 0 && index < length && inputRefs.current[index]) {\n inputRefs.current[index]?.focus();\n inputRefs.current[index]?.select();\n }\n },\n [length]\n );\n\n const handleChange = useCallback(\n (index: number, e: ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n const char = inputValue.slice(-1);\n\n // Validate input based on type\n if (type === \"number\" && char && !/^\\d$/.test(char)) {\n return;\n }\n\n const newValues = [...values];\n newValues[index] = char;\n setValues(newValues);\n\n const otpValue = newValues.join(\"\");\n onChange?.(otpValue);\n\n // Move to next input if value entered\n if (char && index < length - 1) {\n focusInput(index + 1);\n }\n\n // Check if complete\n if (newValues.every((v) => v !== \"\") && newValues.length === length) {\n onComplete?.(otpValue);\n }\n },\n [values, onChange, onComplete, length, type, focusInput]\n );\n\n const handleKeyDown = useCallback(\n (index: number, e: KeyboardEvent<HTMLInputElement>) => {\n switch (e.key) {\n case \"Backspace\":\n e.preventDefault();\n const newValues = [...values];\n if (values[index]) {\n // Clear current value\n newValues[index] = \"\";\n setValues(newValues);\n onChange?.(newValues.join(\"\"));\n } else if (index > 0) {\n // Move to previous and clear\n newValues[index - 1] = \"\";\n setValues(newValues);\n onChange?.(newValues.join(\"\"));\n focusInput(index - 1);\n }\n break;\n case \"ArrowLeft\":\n e.preventDefault();\n focusInput(index - 1);\n break;\n case \"ArrowRight\":\n e.preventDefault();\n focusInput(index + 1);\n break;\n case \"Delete\":\n e.preventDefault();\n const deleteValues = [...values];\n deleteValues[index] = \"\";\n setValues(deleteValues);\n onChange?.(deleteValues.join(\"\"));\n break;\n }\n },\n [values, onChange, focusInput]\n );\n\n const handlePaste = useCallback(\n (e: ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const pastedData = e.clipboardData.getData(\"text\").slice(0, length);\n\n // Validate pasted content\n if (type === \"number\" && !/^\\d*$/.test(pastedData)) {\n return;\n }\n\n const newValues = pastedData\n .split(\"\")\n .slice(0, length)\n .concat(Array(length).fill(\"\"))\n .slice(0, length);\n\n setValues(newValues);\n const otpValue = newValues.join(\"\");\n onChange?.(otpValue);\n\n // Focus last filled input or last input\n const lastFilledIndex = newValues.findLastIndex((v) => v !== \"\");\n focusInput(Math.min(lastFilledIndex + 1, length - 1));\n\n // Check if complete\n if (newValues.every((v) => v !== \"\") && pastedData.length >= length) {\n onComplete?.(otpValue);\n }\n },\n [length, type, onChange, onComplete, focusInput]\n );\n\n const handleFocus = useCallback((e: React.FocusEvent<HTMLInputElement>) => {\n e.target.select();\n }, []);\n\n const renderInputs = () => {\n const inputs: React.ReactNode[] = [];\n\n for (let i = 0; i < length; i++) {\n // Add separator if needed\n if (separatorPositions.includes(i) && i > 0) {\n inputs.push(\n <div key={`separator-${i}`} className=\"flex items-center\">\n {separator}\n </div>\n );\n }\n\n inputs.push(\n <input\n key={i}\n ref={(el) => {\n inputRefs.current[i] = el;\n // React 19: Return cleanup function\n return () => {\n inputRefs.current[i] = null;\n };\n }}\n type={mask ? \"password\" : \"text\"}\n inputMode={type === \"number\" ? \"numeric\" : \"text\"}\n pattern={type === \"number\" ? \"\\\\d*\" : undefined}\n maxLength={1}\n value={values[i] || \"\"}\n placeholder={placeholder}\n disabled={disabled}\n onChange={(e) => handleChange(i, e)}\n onKeyDown={(e) => handleKeyDown(i, e)}\n onPaste={handlePaste}\n onFocus={handleFocus}\n aria-label={`${ariaLabel} digit ${i + 1}`}\n className={`\n text-center font-semibold outline-none transition-all\n text-neutral-900 dark:text-white\n placeholder:text-neutral-300 dark:placeholder:text-neutral-600\n ${sizeStyles[size]}\n ${variantStyles[variant].base}\n ${!error ? variantStyles[variant].focus : \"\"}\n ${error ? variantStyles[variant].error : \"\"}\n ${disabled\n ? \"opacity-50 cursor-not-allowed bg-neutral-100 dark:bg-neutral-800\"\n : \"\"\n }\n ${inputClassName}\n `}\n />\n );\n }\n\n return inputs;\n };\n\n return (\n <div ref={ref} className={`flex flex-col gap-2 ${className}`}>\n <div\n className=\"flex items-center gap-2\"\n role=\"group\"\n aria-label={ariaLabel}\n >\n {renderInputs()}\n </div>\n {error && errorMessage && (\n <span className=\"text-sm text-red-500 dark:text-red-400\">\n {errorMessage}\n </span>\n )}\n </div>\n );\n }\n);\n\nOTPInput.displayName = \"OTPInput\";\n\nexport default OTPInput;\nexport { OTPInput };\n","import { CheckIcon, CloseIcon } from \"../../icons\";\n\ninterface PasswordCriteriaProps {\n password: string;\n}\n\nexport const PasswordCriteria = ({ password }: PasswordCriteriaProps) => {\n const criteria = [\n { label: \"At least 6 characters\", met: password.length >= 6 },\n { label: \"Contains uppercase letter\", met: /[A-Z]/.test(password) },\n { label: \"Contains lowercase letter\", met: /[a-z]/.test(password) },\n { label: \"Contains a number\", met: /\\d/.test(password) },\n { label: \"Contains special character\", met: /[^A-Za-z0-9]/.test(password) },\n ];\n\n return (\n <div className=\"mt-2 space-y-1\">\n {criteria.map((item) => (\n <div key={item.label} className=\"flex items-center text-xs\">\n {item.met ? (\n <CheckIcon\n className=\"mr-2 size-4 text-green-500\"\n title=\"CheckIcon\"\n />\n ) : (\n <CloseIcon\n className=\"mr-2 size-4 text-neutral-400 dark:text-neutral-500\"\n title=\"CloseIcon\"\n />\n )}\n <span\n className={\n item.met\n ? \"text-green-500\"\n : \"text-neutral-500 dark:text-neutral-400\"\n }\n >\n {item.label}\n </span>\n </div>\n ))}\n </div>\n );\n};\n","import { useMemo } from \"react\";\nimport { PasswordCriteria } from \"./PasswordCriteria\";\n\n// Define the props type\ninterface PasswordStrengthMeterProps {\n password: string;\n}\n\nexport const PasswordStrengthMeter: React.FC<PasswordStrengthMeterProps> = ({\n password,\n}) => {\n // Calculate password strength using an object mapping approach\n const getStrength = (pass: string): number => {\n const criteria = {\n minLength: pass.length >= 6,\n hasMixedCase: /[a-z]/.test(pass) && /[A-Z]/.test(pass),\n hasNumber: /\\d/.test(pass),\n hasSpecialChar: /[^a-zA-Z\\d]/.test(pass),\n };\n\n // Count the number of criteria that pass\n return Object.values(criteria).filter(Boolean).length;\n };\n\n // Memoize the strength calculation to avoid unnecessary recalculations\n const strength = useMemo(() => getStrength(password), [password]);\n\n // Determine strength color based on the calculated strength\n const getColor = (strength: number): string => {\n const colors = [\n \"bg-red-500\",\n \"bg-red-400\",\n \"bg-yellow-500\",\n \"bg-yellow-400\",\n \"bg-green-500\",\n ];\n return colors[strength] || \"bg-gray-600\";\n };\n\n // Get a text label corresponding to the password strength\n const getStrengthText = (strength: number): string => {\n const strengthLevels = [\"Very Weak\", \"Weak\", \"Fair\", \"Good\", \"Strong\"];\n return strengthLevels[strength] || \"Very Weak\";\n };\n\n return (\n <div className=\"mt-2\">\n {/* Strength Label */}\n <div className=\"mb-1 flex items-center justify-between\">\n <span className=\"text-xs text-neutral-500 dark:text-neutral-400\">\n Password strength\n </span>\n <span className=\"text-xs text-neutral-500 dark:text-neutral-400\">\n {getStrengthText(strength)}\n </span>\n </div>\n\n {/* Strength Meter */}\n <div className=\"flex space-x-1\">\n {Array.from({ length: 4 }, (_, index) => (\n <div\n key={index}\n className={`h-1 w-1/4 rounded-full transition-colors duration-300 ${index < strength\n ? getColor(strength)\n : \"bg-neutral-300 dark:bg-neutral-600\"\n }`}\n />\n ))}\n </div>\n\n <PasswordCriteria password={password} />\n </div>\n );\n};\n","import { useState } from \"react\";\nimport { Carousel } from \"../carousel\";\nimport { AnimatedContent } from \"../animated-content\";\nimport { GradualBlur } from \"../gradual-blur/GradualBlur\";\nimport { Button } from \"../Button\";\nimport { Dialog } from \"../dialog/Dialog\";\n\nexport const Preview = () => {\n const [open, setOpen] = useState(false);\n\n const carouselItems = [\n {\n id: \"1\",\n image: \"https://picsum.photos/1200/600?random=1\",\n title: \"Crystal Clear Design\",\n description: \"Experience the next level of UI clarity with our glassmorphism effects.\",\n },\n {\n id: \"2\",\n image: \"https://picsum.photos/1200/600?random=2\",\n title: \"Fluid Animations\",\n description: \"Smooth, spring-based transitions that feel natural and responsive.\",\n },\n {\n id: \"3\",\n image: \"https://picsum.photos/1200/600?random=3\",\n title: \"Interactive Components\",\n description: \"Engage your users with rich, interactive elements.\",\n },\n ];\n\n return (\n <div className=\"w-full min-h-screen bg-neutral-50 dark:bg-neutral-950 p-8 space-y-16\">\n {/* Hero Section */}\n <section className=\"max-w-5xl mx-auto space-y-8\">\n <GradualBlur duration={1} blur={10} direction=\"bottom\">\n <h1 className=\"text-5xl font-bold text-center bg-clip-text text-transparent bg-gradient-to-r from-blue-600 to-purple-600 mb-4\">\n Design System Showcase\n </h1>\n <p className=\"text-xl text-center text-neutral-600 dark:text-neutral-400 max-w-2xl mx-auto\">\n Explore our latest components featuring advanced animations and crystal glass aesthetics.\n </p>\n </GradualBlur>\n\n <AnimatedContent preset=\"scale\" delay={0.3} duration={0.8}>\n <Carousel\n items={carouselItems}\n animation=\"cube\"\n height={500}\n autoPlay={5000}\n showArrows\n showDots\n variant=\"glass\"\n className=\"shadow-2xl\"\n />\n </AnimatedContent>\n </section>\n\n {/* Features Grid */}\n <section className=\"max-w-5xl mx-auto\">\n <GradualBlur triggerOnView threshold={0.2} blur={5}>\n <h2 className=\"text-3xl font-bold mb-8 text-neutral-900 dark:text-white\">\n New Capabilities\n </h2>\n </GradualBlur>\n\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-6\">\n {[\n { title: \"Fluid Motion\", icon: \"🌊\", delay: 0 },\n { title: \"Glass Depth\", icon: \"💎\", delay: 0.1 },\n { title: \"Smart Layouts\", icon: \"📐\", delay: 0.2 },\n ].map((item, i) => (\n <AnimatedContent\n key={i}\n preset=\"slideUp\"\n delay={item.delay}\n triggerOnView\n threshold={0.2}\n className=\"h-full\"\n >\n <div className=\"bg-white dark:bg-neutral-900/50 border border-neutral-200 dark:border-white/10 p-8 rounded-2xl h-full hover:shadow-lg transition-shadow\">\n <div className=\"text-4xl mb-4\">{item.icon}</div>\n <h3 className=\"text-xl font-semibold mb-2 text-neutral-900 dark:text-white\">{item.title}</h3>\n <p className=\"text-neutral-600 dark:text-neutral-400\">\n Built with Framer Motion for buttery smooth 60fps animations that delight users.\n </p>\n </div>\n </AnimatedContent>\n ))}\n </div>\n </section>\n\n {/* Button Showcase */}\n <section className=\"max-w-5xl mx-auto\">\n <GradualBlur triggerOnView threshold={0.2} blur={5}>\n <h2 className=\"text-3xl font-bold mb-8 text-neutral-900 dark:text-white\">\n Interactive Elements\n </h2>\n </GradualBlur>\n\n <div className=\"bg-white dark:bg-neutral-900/50 border border-neutral-200 dark:border-white/10 rounded-2xl p-8 overflow-hidden relative\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-12 relative z-10\">\n {/* Primary Buttons */}\n <div className=\"space-y-6\">\n <h3 className=\"text-lg font-semibold text-neutral-900 dark:text-white mb-4\">Primary Actions</h3>\n <div className=\"flex flex-wrap items-end gap-4\">\n <AnimatedContent preset=\"scale\" delay={0.1} triggerOnView>\n <Button label=\"Small\" primary size=\"small\" />\n </AnimatedContent>\n <AnimatedContent preset=\"scale\" delay={0.2} triggerOnView>\n <Button label=\"Medium\" primary size=\"medium\" />\n </AnimatedContent>\n <AnimatedContent preset=\"scale\" delay={0.3} triggerOnView>\n <Button label=\"Large\" primary size=\"large\" />\n </AnimatedContent>\n </div>\n <p className=\"text-sm text-neutral-500 mt-2\">\n High-emphasis actions with shadow and hover effects.\n </p>\n </div>\n\n {/* Secondary Buttons */}\n <div className=\"space-y-6\">\n <h3 className=\"text-lg font-semibold text-neutral-900 dark:text-white mb-4\">Secondary Actions</h3>\n <div className=\"flex flex-wrap items-end gap-4\">\n <AnimatedContent preset=\"scale\" delay={0.4} triggerOnView>\n <Button label=\"Small\" size=\"small\" />\n </AnimatedContent>\n <AnimatedContent preset=\"scale\" delay={0.5} triggerOnView>\n <Button label=\"Medium\" size=\"medium\" />\n </AnimatedContent>\n <AnimatedContent preset=\"scale\" delay={0.6} triggerOnView>\n <Button label=\"Large\" size=\"large\" />\n </AnimatedContent>\n </div>\n <p className=\"text-sm text-neutral-500 mt-2\">\n Alternative actions for lower priority tasks.\n </p>\n </div>\n </div>\n\n {/* Decorative background element */}\n <div className=\"absolute top-0 right-0 w-64 h-64 bg-gradient-to-br from-blue-500/5 to-purple-500/5 rounded-full blur-3xl -translate-y-1/2 translate-x-1/2 pointer-events-none\" />\n </div>\n </section>\n\n {/* Interactive Demo */}\n <section className=\"max-w-5xl mx-auto bg-gradient-to-br from-blue-50 to-purple-50 dark:from-blue-900/20 dark:to-purple-900/20 rounded-3xl p-12 text-center\">\n <AnimatedContent preset=\"zoom\" triggerOnView>\n <h2 className=\"text-3xl font-bold mb-4 text-neutral-900 dark:text-white\">\n Try the Crystal Dialog\n </h2>\n <p className=\"text-lg text-neutral-600 dark:text-neutral-300 mb-8 max-w-xl mx-auto\">\n Experience the new frosted glass effect with spring-loaded entrance animations.\n </p>\n <Button\n label=\"Open Crystal Dialog\"\n primary\n size=\"large\"\n onClick={() => setOpen(true)}\n />\n </AnimatedContent>\n </section>\n\n <Dialog\n open={open}\n onOpenChange={setOpen}\n title=\"Crystal Dialog\"\n description=\"This dialog features a beautiful backdrop blur, gradient borders, and elastic spring animation.\"\n variant=\"info\"\n preset=\"confirm\"\n animation=\"elastic\"\n confirmLabel=\"Awesome\"\n onConfirm={() => setOpen(false)}\n />\n </div>\n );\n};\n","import type { RadioProps, RadioColor } from \"./types\";\nimport { forwardRef, useId } from \"react\";\n\nimport { mergeClassNames } from \"../../../utils\";\n\nconst sanitizeId = (value: string) => value.replace(/[^a-zA-Z0-9_-]/g, \"-\");\n\nconst colorValues: Record<RadioColor, string> = {\n red: \"#ef4444\",\n blue: \"#3b82f6\",\n green: \"#22c55e\",\n yellow: \"#eab308\",\n teal: \"#14b8a6\",\n primary: \"var(--color-primary)\",\n};\n\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(\n (\n {\n className = \"\",\n label,\n error,\n id,\n color = \"blue\",\n bgClassName = \"\",\n ...props\n },\n ref\n ) => {\n const generatedId = useId();\n const radioId = id || `radio-${sanitizeId(generatedId)}`;\n\n return (\n <div className=\"flex items-center space-x-2\">\n <input\n ref={ref}\n type=\"radio\"\n id={radioId}\n style={{ accentColor: colorValues[color] }}\n className={mergeClassNames(\n \"h-5 w-5 cursor-pointer disabled:cursor-not-allowed disabled:opacity-50\",\n bgClassName,\n className\n )}\n {...props}\n />\n {label && (\n <label\n htmlFor={radioId}\n className=\"text-sm font-medium leading-none cursor-pointer text-neutral-900 dark:text-white\"\n >\n {label}\n </label>\n )}\n {error && (\n <p className=\"text-sm font-medium text-red-500 mt-1\">\n {error}\n </p>\n )}\n </div>\n );\n }\n);\n\nRadio.displayName = \"Radio\";\n","import { forwardRef } from \"react\";\n\nexport type SkeletonVariant = \"text\" | \"circular\" | \"rectangular\" | \"rounded\";\nexport type SkeletonAnimation = \"pulse\" | \"wave\" | \"none\";\n\nexport interface SkeletonProps {\n /** The variant shape of the skeleton */\n variant?: SkeletonVariant;\n /** The animation type */\n animation?: SkeletonAnimation;\n /** Width of the skeleton */\n width?: number | string;\n /** Height of the skeleton */\n height?: number | string;\n /** Border radius for rounded variant */\n borderRadius?: number | string;\n /** Custom className */\n className?: string;\n /** Number of lines for text variant */\n lines?: number;\n /** Gap between lines */\n lineGap?: number | string;\n /** Whether the last line should be shorter */\n lastLineWidth?: number | string;\n}\n\nexport interface SkeletonTextProps extends Omit<SkeletonProps, \"variant\"> {\n /** Number of text lines */\n lines?: number;\n}\n\nexport interface SkeletonAvatarProps\n extends Omit<SkeletonProps, \"variant\" | \"width\" | \"height\"> {\n /** Size of the avatar */\n size?: number | string;\n}\n\nexport interface SkeletonCardProps {\n /** Whether to show image placeholder */\n showImage?: boolean;\n /** Image height */\n imageHeight?: number | string;\n /** Number of text lines */\n lines?: number;\n /** Whether to show avatar */\n showAvatar?: boolean;\n /** Whether to show action buttons */\n showActions?: boolean;\n /** Custom className */\n className?: string;\n /** Animation type */\n animation?: SkeletonAnimation;\n}\n\nconst animationStyles: Record<SkeletonAnimation, string> = {\n pulse: \"animate-pulse\",\n wave: \"animate-shimmer bg-gradient-to-r from-neutral-200 via-neutral-100 to-neutral-200 dark:from-neutral-700 dark:via-neutral-600 dark:to-neutral-700 bg-[length:200%_100%]\",\n none: \"\",\n};\n\nconst variantStyles: Record<SkeletonVariant, string> = {\n text: \"rounded\",\n circular: \"rounded-full\",\n rectangular: \"rounded-none\",\n rounded: \"rounded-lg\",\n};\n\n// Base Skeleton Component\nconst Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n variant = \"text\",\n animation = \"pulse\",\n width,\n height,\n borderRadius,\n className = \"\",\n lines = 1,\n lineGap = 8,\n lastLineWidth = \"80%\",\n },\n ref\n ) => {\n const baseStyles = `\n bg-neutral-200 dark:bg-neutral-700\n ${animation !== \"wave\" ? animationStyles[animation] : \"\"}\n ${animation === \"wave\" ? animationStyles.wave : \"\"}\n ${variantStyles[variant]}\n `;\n\n const getSize = () => {\n const style: React.CSSProperties = {};\n\n if (width) {\n style.width = typeof width === \"number\" ? `${width}px` : width;\n } else if (variant === \"text\") {\n style.width = \"100%\";\n }\n\n if (height) {\n style.height = typeof height === \"number\" ? `${height}px` : height;\n } else if (variant === \"text\") {\n style.height = \"1em\";\n } else if (variant === \"circular\") {\n style.width = style.width || \"40px\";\n style.height = style.width;\n }\n\n if (borderRadius) {\n style.borderRadius =\n typeof borderRadius === \"number\" ? `${borderRadius}px` : borderRadius;\n }\n\n return style;\n };\n\n // Render multiple lines for text variant\n if (variant === \"text\" && lines > 1) {\n return (\n <div\n ref={ref}\n className={`flex flex-col ${className}`}\n style={{\n gap: typeof lineGap === \"number\" ? `${lineGap}px` : lineGap,\n }}\n >\n {Array.from({ length: lines }).map((_, index) => (\n <div\n key={index}\n className={baseStyles}\n style={{\n ...getSize(),\n width: index === lines - 1 ? lastLineWidth : width || \"100%\",\n }}\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={`${baseStyles} ${className}`}\n style={getSize()}\n />\n );\n }\n);\n\nSkeleton.displayName = \"Skeleton\";\n\n// Skeleton Text Component\nconst SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n ({ lines = 3, ...props }, ref) => {\n return <Skeleton ref={ref} variant=\"text\" lines={lines} {...props} />;\n }\n);\n\nSkeletonText.displayName = \"SkeletonText\";\n\n// Skeleton Avatar Component\nconst SkeletonAvatar = forwardRef<HTMLDivElement, SkeletonAvatarProps>(\n ({ size = 40, animation = \"pulse\", className = \"\", ...props }, ref) => {\n const sizeValue = typeof size === \"number\" ? `${size}px` : size;\n\n return (\n <Skeleton\n ref={ref}\n variant=\"circular\"\n width={sizeValue}\n height={sizeValue}\n animation={animation}\n className={className}\n {...props}\n />\n );\n }\n);\n\nSkeletonAvatar.displayName = \"SkeletonAvatar\";\n\n// Skeleton Button Component\nconst SkeletonButton = forwardRef<\n HTMLDivElement,\n Omit<SkeletonProps, \"variant\"> & { size?: \"sm\" | \"md\" | \"lg\" }\n>(({ size = \"md\", animation = \"pulse\", className = \"\", ...props }, ref) => {\n const sizeStyles = {\n sm: { width: 80, height: 32 },\n md: { width: 100, height: 40 },\n lg: { width: 120, height: 48 },\n };\n\n return (\n <Skeleton\n ref={ref}\n variant=\"rounded\"\n width={sizeStyles[size].width}\n height={sizeStyles[size].height}\n animation={animation}\n className={className}\n {...props}\n />\n );\n});\n\nSkeletonButton.displayName = \"SkeletonButton\";\n\n// Skeleton Image Component\nconst SkeletonImage = forwardRef<\n HTMLDivElement,\n Omit<SkeletonProps, \"variant\">\n>(\n (\n {\n width = \"100%\",\n height = 200,\n animation = \"pulse\",\n className = \"\",\n ...props\n },\n ref\n ) => {\n return (\n <Skeleton\n ref={ref}\n variant=\"rounded\"\n width={width}\n height={height}\n animation={animation}\n className={className}\n {...props}\n />\n );\n }\n);\n\nSkeletonImage.displayName = \"SkeletonImage\";\n\n// Skeleton Card Component\nconst SkeletonCard = forwardRef<HTMLDivElement, SkeletonCardProps>(\n (\n {\n showImage = true,\n imageHeight = 200,\n lines = 3,\n showAvatar = false,\n showActions = false,\n className = \"\",\n animation = \"pulse\",\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={`bg-white dark:bg-neutral-800 rounded-xl overflow-hidden shadow-sm border border-neutral-200 dark:border-neutral-700 ${className}`}\n >\n {showImage && (\n <SkeletonImage\n height={imageHeight}\n animation={animation}\n borderRadius={0}\n />\n )}\n\n <div className=\"p-4 flex flex-col gap-4\">\n {showAvatar && (\n <div className=\"flex items-center gap-3\">\n <SkeletonAvatar size={40} animation={animation} />\n <div className=\"flex-1\">\n <Skeleton\n variant=\"text\"\n width=\"60%\"\n height={14}\n animation={animation}\n />\n <Skeleton\n variant=\"text\"\n width=\"40%\"\n height={12}\n animation={animation}\n className=\"mt-2\"\n />\n </div>\n </div>\n )}\n\n <SkeletonText\n lines={lines}\n animation={animation}\n height={14}\n lineGap={10}\n />\n\n {showActions && (\n <div className=\"flex gap-3 mt-2\">\n <SkeletonButton size=\"sm\" animation={animation} />\n <SkeletonButton size=\"sm\" animation={animation} />\n </div>\n )}\n </div>\n </div>\n );\n }\n);\n\nSkeletonCard.displayName = \"SkeletonCard\";\n\n// Skeleton Table Row Component\nconst SkeletonTableRow = forwardRef<\n HTMLDivElement,\n { columns?: number; animation?: SkeletonAnimation; className?: string }\n>(({ columns = 4, animation = \"pulse\", className = \"\" }, ref) => {\n return (\n <div\n ref={ref}\n className={`flex items-center gap-4 py-3 ${className}`}\n >\n {Array.from({ length: columns }).map((_, index) => (\n <Skeleton\n key={index}\n variant=\"text\"\n width={index === 0 ? \"20%\" : `${Math.floor(80 / (columns - 1))}%`}\n height={16}\n animation={animation}\n />\n ))}\n </div>\n );\n});\n\nSkeletonTableRow.displayName = \"SkeletonTableRow\";\n\n// Skeleton List Item Component\nconst SkeletonListItem = forwardRef<\n HTMLDivElement,\n {\n showAvatar?: boolean;\n showSecondaryText?: boolean;\n showAction?: boolean;\n animation?: SkeletonAnimation;\n className?: string;\n }\n>(\n (\n {\n showAvatar = true,\n showSecondaryText = true,\n showAction = false,\n animation = \"pulse\",\n className = \"\",\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={`flex items-center gap-3 py-3 ${className}`}\n >\n {showAvatar && <SkeletonAvatar size={48} animation={animation} />}\n <div className=\"flex-1\">\n <Skeleton\n variant=\"text\"\n width=\"70%\"\n height={16}\n animation={animation}\n />\n {showSecondaryText && (\n <Skeleton\n variant=\"text\"\n width=\"50%\"\n height={14}\n animation={animation}\n className=\"mt-2\"\n />\n )}\n </div>\n {showAction && <SkeletonButton size=\"sm\" animation={animation} />}\n </div>\n );\n }\n);\n\nSkeletonListItem.displayName = \"SkeletonListItem\";\n\nexport default Skeleton;\nexport {\n Skeleton,\n SkeletonText,\n SkeletonAvatar,\n SkeletonButton,\n SkeletonImage,\n SkeletonCard,\n SkeletonTableRow,\n SkeletonListItem,\n};\n","import { useState, useEffect, useRef, useCallback } from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type { SplashCursorProps, Particle } from \"./types\";\n\nconst sizeConfig = {\n sm: { base: 20, variance: 10 },\n md: { base: 40, variance: 20 },\n lg: { base: 60, variance: 30 },\n xl: { base: 100, variance: 50 },\n};\n\nconst defaultColors = [\n \"#7367f0\",\n \"#9b87f5\",\n \"#6366f1\",\n \"#8b5cf6\",\n \"#a78bfa\",\n \"#c4b5fd\",\n];\n\nexport const SplashCursor = ({\n className,\n color,\n secondaryColor,\n size = \"md\",\n particleCount = 12,\n enabled = true,\n blur = 0,\n opacity = 0.6,\n duration = 800,\n smooth = true,\n smoothFactor = 0.15,\n style,\n children,\n variant = \"splash\",\n}: SplashCursorProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [particles, setParticles] = useState<Particle[]>([]);\n const [mousePos, setMousePos] = useState({ x: 0, y: 0 });\n const [smoothPos, setSmoothPos] = useState({ x: 0, y: 0 });\n const [isInside, setIsInside] = useState(false);\n const particleIdRef = useRef<number>(0);\n const animationFrameRef = useRef<number | undefined>(undefined);\n\n // Smooth cursor following\n useEffect(() => {\n if (!smooth || !enabled) return;\n\n const animate = () => {\n setSmoothPos((prev) => ({\n x: prev.x + (mousePos.x - prev.x) * smoothFactor,\n y: prev.y + (mousePos.y - prev.y) * smoothFactor,\n }));\n animationFrameRef.current = requestAnimationFrame(animate);\n };\n\n animationFrameRef.current = requestAnimationFrame(animate);\n return () => {\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n }\n };\n }, [mousePos, smooth, smoothFactor, enabled]);\n\n const getRandomColor = useCallback(() => {\n if (color && secondaryColor) {\n return Math.random() > 0.5 ? color : secondaryColor;\n }\n if (color) return color;\n return defaultColors[Math.floor(Math.random() * defaultColors.length)];\n }, [color, secondaryColor]);\n\n const createParticles = useCallback(\n (x: number, y: number) => {\n const config = sizeConfig[size];\n const newParticles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = (Math.PI * 2 * i) / particleCount;\n const distance = variant === \"ripple\" ? config.base : Math.random() * config.variance;\n\n newParticles.push({\n id: particleIdRef.current++,\n x: x + Math.cos(angle) * distance * (variant === \"ripple\" ? 0 : 1),\n y: y + Math.sin(angle) * distance * (variant === \"ripple\" ? 0 : 1),\n size: config.base * 0.3 + Math.random() * config.base * 0.4,\n opacity: opacity * (0.5 + Math.random() * 0.5),\n color: getRandomColor(),\n });\n }\n\n setParticles((prev) => [...prev.slice(-50), ...newParticles]);\n\n // Remove particles after animation\n setTimeout(() => {\n setParticles((prev) =>\n prev.filter((p) => !newParticles.find((np) => np.id === p.id))\n );\n }, duration);\n },\n [size, particleCount, opacity, duration, getRandomColor, variant]\n );\n\n const handleMouseMove = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (!enabled || !containerRef.current) return;\n\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n\n setMousePos({ x, y });\n\n // Create splash effect on movement\n if (variant === \"splash\" || variant === \"trail\") {\n if (Math.random() > (variant === \"trail\" ? 0.7 : 0.85)) {\n createParticles(x, y);\n }\n }\n },\n [enabled, createParticles, variant]\n );\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (!enabled || !containerRef.current) return;\n\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n\n // Create burst effect on click\n createParticles(x, y);\n if (variant === \"ripple\") {\n setTimeout(() => createParticles(x, y), 100);\n setTimeout(() => createParticles(x, y), 200);\n }\n },\n [enabled, createParticles, variant]\n );\n\n const getParticleAnimation = (particle: Particle) => {\n const config = sizeConfig[size];\n\n switch (variant) {\n case \"glow\":\n return {\n initial: { scale: 0, opacity: particle.opacity },\n animate: { scale: 2, opacity: 0 },\n exit: { scale: 3, opacity: 0 },\n };\n case \"trail\":\n return {\n initial: { scale: 1, opacity: particle.opacity, y: 0 },\n animate: { scale: 0.5, opacity: 0, y: 20 },\n exit: { scale: 0, opacity: 0 },\n };\n case \"ripple\":\n return {\n initial: { scale: 0, opacity: particle.opacity },\n animate: { scale: 4, opacity: 0 },\n exit: { scale: 5, opacity: 0 },\n };\n default: // splash\n const angle = Math.random() * Math.PI * 2;\n const distance = config.base + Math.random() * config.variance;\n return {\n initial: { scale: 0, opacity: particle.opacity, x: 0, y: 0 },\n animate: {\n scale: [0, 1.2, 0.8],\n opacity: [particle.opacity, particle.opacity * 0.8, 0],\n x: Math.cos(angle) * distance,\n y: Math.sin(angle) * distance,\n },\n exit: { scale: 0, opacity: 0 },\n };\n }\n };\n\n const cursorPos = smooth ? smoothPos : mousePos;\n\n return (\n <div\n ref={containerRef}\n className={mergeClassNames(\n \"relative overflow-hidden\",\n className\n )}\n style={style}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setIsInside(true)}\n onMouseLeave={() => setIsInside(false)}\n onClick={handleClick}\n >\n {/* Cursor glow effect */}\n {enabled && isInside && variant === \"glow\" && (\n <motion.div\n className=\"pointer-events-none absolute z-10\"\n style={{\n left: cursorPos.x,\n top: cursorPos.y,\n width: sizeConfig[size].base * 2,\n height: sizeConfig[size].base * 2,\n transform: \"translate(-50%, -50%)\",\n background: `radial-gradient(circle, ${color || defaultColors[0]}40 0%, transparent 70%)`,\n filter: blur ? `blur(${blur}px)` : undefined,\n }}\n initial={{ scale: 0, opacity: 0 }}\n animate={{ scale: 1, opacity: 1 }}\n exit={{ scale: 0, opacity: 0 }}\n />\n )}\n\n {/* Particles */}\n <AnimatePresence>\n {enabled &&\n particles.map((particle) => {\n const animation = getParticleAnimation(particle);\n return (\n <motion.div\n key={particle.id}\n className=\"pointer-events-none absolute rounded-full z-20\"\n style={{\n left: particle.x,\n top: particle.y,\n width: particle.size,\n height: particle.size,\n backgroundColor: particle.color,\n transform: \"translate(-50%, -50%)\",\n filter: blur ? `blur(${blur}px)` : undefined,\n }}\n {...animation}\n transition={{\n duration: duration / 1000,\n ease: \"easeOut\",\n }}\n />\n );\n })}\n </AnimatePresence>\n\n {/* Children content */}\n <div className=\"relative z-0\">{children}</div>\n </div>\n );\n};\n\nSplashCursor.displayName = \"SplashCursor\";\n\nexport default SplashCursor;\n","import { useState, useRef } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type { SpotlightCardProps } from \"./types\";\n\nconst borderRadiusMap = {\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n \"2xl\": \"rounded-2xl\",\n full: \"rounded-full\",\n};\n\nconst paddingMap = {\n none: \"\",\n sm: \"p-3\",\n md: \"p-5\",\n lg: \"p-7\",\n xl: \"p-10\",\n};\n\nconst variantStyles = {\n glass: `\n bg-white/60 dark:bg-neutral-900/50\n backdrop-blur-2xl\n border border-white/40 dark:border-white/10\n shadow-xl shadow-neutral-200/30 dark:shadow-neutral-950/50\n `,\n solid: `\n bg-white dark:bg-neutral-900\n border border-neutral-200 dark:border-neutral-800\n shadow-lg shadow-neutral-200/50 dark:shadow-neutral-950/50\n `,\n outlined: `\n bg-transparent\n border-2 border-neutral-200 dark:border-neutral-700\n `,\n};\n\nexport const SpotlightCard = ({\n children,\n className,\n spotlightColor = \"rgba(115, 103, 240, 0.15)\",\n spotlightSize = 350,\n spotlightEnabled = true,\n variant = \"glass\",\n borderRadius = \"xl\",\n padding = \"md\",\n hoverScale = true,\n style,\n onClick,\n}: SpotlightCardProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 });\n const [isHovered, setIsHovered] = useState(false);\n\n const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!containerRef.current || !spotlightEnabled) return;\n const rect = containerRef.current.getBoundingClientRect();\n setMousePosition({\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n });\n };\n\n const handleMouseEnter = () => {\n setIsHovered(true);\n };\n\n const handleMouseLeave = () => {\n setIsHovered(false);\n };\n\n const spotlightStyle = spotlightEnabled && isHovered\n ? {\n background: `radial-gradient(${spotlightSize}px circle at ${mousePosition.x}px ${mousePosition.y}px, ${spotlightColor}, transparent 80%)`,\n }\n : {};\n\n return (\n <motion.div\n ref={containerRef}\n className={mergeClassNames(\n \"relative overflow-hidden transition-all duration-300\",\n borderRadiusMap[borderRadius],\n paddingMap[padding],\n variantStyles[variant],\n onClick && \"cursor-pointer\",\n className\n )}\n style={style}\n onMouseMove={handleMouseMove}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={onClick}\n whileHover={hoverScale ? { scale: 1.02 } : undefined}\n whileTap={onClick ? { scale: 0.98 } : undefined}\n transition={{ type: \"spring\", stiffness: 400, damping: 25 }}\n >\n {/* Spotlight overlay */}\n {spotlightEnabled && (\n <motion.div\n className=\"pointer-events-none absolute inset-0 z-0\"\n style={spotlightStyle}\n initial={{ opacity: 0 }}\n animate={{ opacity: isHovered ? 1 : 0 }}\n transition={{ duration: 0.3 }}\n />\n )}\n\n {/* Border glow effect */}\n {spotlightEnabled && isHovered && (\n <motion.div\n className={mergeClassNames(\n \"pointer-events-none absolute inset-0 z-0\",\n borderRadiusMap[borderRadius]\n )}\n style={{\n background: `radial-gradient(${spotlightSize * 0.6}px circle at ${mousePosition.x}px ${mousePosition.y}px, ${spotlightColor.replace(\"0.15\", \"0.3\")}, transparent 70%)`,\n filter: \"blur(20px)\",\n }}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.2 }}\n />\n )}\n\n {/* Content */}\n <div className=\"relative z-10\">{children}</div>\n </motion.div>\n );\n};\n\nSpotlightCard.displayName = \"SpotlightCard\";\n\nexport default SpotlightCard;\n","import { motion, AnimatePresence } from \"framer-motion\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type {\n StepperProps,\n StepIndicatorProps,\n StepStatus,\n StepperSize,\n StepperVariant,\n} from \"./types\";\n\n// Size configurations for indicators and icons\nconst sizeConfig: Record<StepperSize, { indicator: string; icon: string; text: string; connectorThickness: string }> = {\n sm: {\n indicator: \"w-8 h-8\",\n icon: \"w-4 h-4\",\n text: \"text-xs\",\n connectorThickness: \"2px\",\n },\n md: {\n indicator: \"w-10 h-10\",\n icon: \"w-5 h-5\",\n text: \"text-sm\",\n connectorThickness: \"2px\",\n },\n lg: {\n indicator: \"w-12 h-12\",\n icon: \"w-6 h-6\",\n text: \"text-base\",\n connectorThickness: \"4px\",\n },\n};\n\n// Variant styles for the indicator\nconst getVariantStyles = (variant: StepperVariant, status: StepStatus) => {\n const baseStyles = {\n default: {\n completed: \"bg-primary text-white shadow-md shadow-primary/30\",\n current: \"bg-primary text-white ring-4 ring-primary/30 shadow-lg shadow-primary/40\",\n upcoming: \"bg-neutral-200 text-neutral-500 dark:bg-neutral-700 dark:text-neutral-400\",\n error: \"bg-red-500 text-white ring-4 ring-red-500/30\",\n },\n glass: {\n completed: \"bg-primary/80 text-white backdrop-blur-xl border border-primary/30 shadow-lg shadow-primary/20\",\n current: \"bg-primary/90 text-white backdrop-blur-xl border-2 border-primary ring-4 ring-primary/20 shadow-xl shadow-primary/30\",\n upcoming: \"bg-white/60 text-neutral-500 backdrop-blur-xl border border-white/40 dark:bg-neutral-800/60 dark:text-neutral-400 dark:border-white/10\",\n error: \"bg-red-500/80 text-white backdrop-blur-xl border border-red-400/30 ring-4 ring-red-500/20\",\n },\n minimal: {\n completed: \"bg-primary/10 text-primary dark:bg-primary/20\",\n current: \"bg-primary text-white shadow-sm\",\n upcoming: \"bg-transparent text-neutral-400 border-2 border-neutral-300 dark:border-neutral-600\",\n error: \"bg-red-100 text-red-500 dark:bg-red-900/30\",\n },\n outlined: {\n completed: \"bg-transparent text-primary border-2 border-primary\",\n current: \"bg-primary text-white border-2 border-primary shadow-lg\",\n upcoming: \"bg-transparent text-neutral-400 border-2 border-neutral-300 dark:border-neutral-600\",\n error: \"bg-transparent text-red-500 border-2 border-red-500\",\n },\n };\n\n return baseStyles[variant][status];\n};\n\n// Check icon SVG\nconst CheckIcon = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={3}>\n <motion.path\n initial={{ pathLength: 0 }}\n animate={{ pathLength: 1 }}\n transition={{ duration: 0.3, ease: \"easeOut\" }}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M5 13l4 4L19 7\"\n />\n </svg>\n);\n\n// Error icon SVG\nconst ErrorIcon = ({ className }: { className?: string }) => (\n <svg className={className} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={2.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n);\n\n// Step Indicator Component\nconst StepIndicator = ({\n step,\n index,\n status,\n size,\n variant,\n showNumbers,\n animated,\n colors,\n}: StepIndicatorProps) => {\n const config = sizeConfig[size];\n const variantStyles = getVariantStyles(variant, status);\n\n // Custom color overrides\n const customColorStyle = colors?.[status]\n ? { backgroundColor: colors[status], borderColor: colors[status] }\n : undefined;\n\n const renderContent = () => {\n if (step.icon) {\n return <span className={config.icon}>{step.icon}</span>;\n }\n\n if (status === \"completed\") {\n return <CheckIcon className={config.icon} />;\n }\n\n if (status === \"error\") {\n return <ErrorIcon className={config.icon} />;\n }\n\n if (showNumbers) {\n return <span className=\"font-semibold\">{index + 1}</span>;\n }\n\n return <span className={mergeClassNames(\"rounded-full bg-current\", size === \"sm\" ? \"w-2 h-2\" : \"w-3 h-3\")} />;\n };\n\n return (\n <motion.div\n className={mergeClassNames(\n \"rounded-full flex items-center justify-center transition-all duration-300\",\n config.indicator,\n variantStyles\n )}\n style={customColorStyle}\n initial={animated ? { scale: 0.8, opacity: 0 } : undefined}\n animate={animated ? { scale: 1, opacity: 1 } : undefined}\n whileHover={{ scale: 1.05 }}\n whileTap={{ scale: 0.95 }}\n transition={{ type: \"spring\", stiffness: 400, damping: 17 }}\n >\n <AnimatePresence mode=\"wait\">\n <motion.span\n key={status}\n initial={animated ? { scale: 0, rotate: -180 } : undefined}\n animate={animated ? { scale: 1, rotate: 0 } : undefined}\n exit={animated ? { scale: 0, rotate: 180 } : undefined}\n transition={{ duration: 0.2 }}\n >\n {renderContent()}\n </motion.span>\n </AnimatePresence>\n </motion.div>\n );\n};\n\n// Main Stepper Component\nexport const Stepper = ({\n steps,\n currentStep,\n onStepClick,\n orientation = \"horizontal\",\n size = \"md\",\n variant = \"glass\",\n showNumbers = true,\n clickable = true,\n showConnector = true,\n className,\n connectorClassName,\n stepClassName,\n showErrors = false,\n errorSteps = [],\n completedSteps,\n animated = true,\n colors,\n}: StepperProps) => {\n const isVertical = orientation === \"vertical\";\n const config = sizeConfig[size];\n\n const getStepStatus = (index: number): StepStatus => {\n if (showErrors && errorSteps.includes(index)) return \"error\";\n if (completedSteps) {\n if (completedSteps.includes(index)) return \"completed\";\n if (index === currentStep) return \"current\";\n return \"upcoming\";\n }\n if (index < currentStep) return \"completed\";\n if (index === currentStep) return \"current\";\n return \"upcoming\";\n };\n\n const handleStepClick = (index: number) => {\n if (!clickable || !onStepClick) return;\n const step = steps[index];\n if (step.disabled) return;\n\n // Allow clicking on completed or current steps\n const status = getStepStatus(index);\n if (status === \"completed\" || status === \"current\") {\n onStepClick(index);\n }\n };\n\n return (\n <div\n className={mergeClassNames(\n \"w-full relative\",\n isVertical ? \"flex flex-col\" : \"flex items-start justify-between\",\n className\n )}\n >\n {/* Global Background Continuous Connector */}\n {showConnector && (() => {\n const paddingValue = variant === \"glass\" || variant === \"outlined\" || variant === \"minimal\" ? 4 : 2;\n return (\n <div\n className={mergeClassNames(\n \"absolute rounded-full\",\n variant === \"glass\" ? \"bg-white/30 dark:bg-white/10 backdrop-blur-sm\" : \"bg-neutral-200 dark:bg-neutral-700\",\n connectorClassName\n )}\n style={{\n ...(isVertical ? {\n // Vertical background line\n top: '0',\n bottom: '0',\n left: `calc(${paddingValue}px + 1px + ${config.indicator.split(' ')[0].replace('w-', '')} * 0.125rem - ${config.connectorThickness} / 2)`,\n width: config.connectorThickness,\n } : {\n // Horizontal background line\n left: '0',\n right: '0',\n top: `calc(${paddingValue}px + 1px + ${config.indicator.split(' ')[1].replace('h-', '')} * 0.125rem - ${config.connectorThickness} / 2)`,\n height: config.connectorThickness,\n })\n }}\n >\n {/* Animated fill connector */}\n {animated ? (\n <motion.div\n className=\"absolute top-0 left-0 bg-primary rounded-full\"\n initial={{ [isVertical ? 'height' : 'width']: 0 }}\n animate={{\n [isVertical ? 'height' : 'width']: `${steps.length > 1 ? (Math.min(currentStep, steps.length - 1) / (steps.length - 1)) * 100 : 0}%`\n }}\n transition={{ duration: 0.4, ease: \"easeOut\" }}\n style={{\n ...(isVertical ? { width: '100%' } : { height: '100%' }),\n backgroundColor: colors?.connector || colors?.completed,\n }}\n />\n ) : (\n <div\n className=\"absolute top-0 left-0 bg-primary rounded-full\"\n style={{\n ...(isVertical ? { width: '100%', height: `${steps.length > 1 ? (Math.min(currentStep, steps.length - 1) / (steps.length - 1)) * 100 : 0}%` } : { height: '100%', width: `${steps.length > 1 ? (Math.min(currentStep, steps.length - 1) / (steps.length - 1)) * 100 : 0}%` }),\n backgroundColor: colors?.connector || colors?.completed,\n }}\n />\n )}\n </div>\n );\n })()}\n\n {steps.map((step, index) => {\n const status = getStepStatus(index);\n const isLast = index === steps.length - 1;\n const isClickable = clickable && !step.disabled; // Keep steps clickable unconditionally for navigation\n const paddingValue = variant === \"glass\" || variant === \"outlined\" || variant === \"minimal\" ? 4 : 2;\n\n return (\n <div\n key={step.id}\n className={mergeClassNames(\n \"relative z-10\",\n isVertical\n ? \"flex gap-4 pb-8\" // spacing between vertical elements\n : \"flex flex-1 flex-col items-center\",\n !isLast && isVertical && \"mb-2\",\n isVertical && isLast && \"pb-0\",\n stepClassName\n )}\n style={{\n // Ensure perfect horizontal distribution\n ...(!isVertical ? {\n flexBasis: 0,\n flexGrow: 1,\n // Keep first item aligned left, last aligned right, others centered \n alignItems: index === 0 ? 'flex-start' : (isLast ? 'flex-end' : 'center')\n } : {})\n }}\n >\n {/* Step Indicator */}\n <button\n type=\"button\"\n onClick={() => handleStepClick(index)}\n disabled={!isClickable}\n className={mergeClassNames(\n \"relative z-10 flex-shrink-0 flex items-center justify-center bg-white dark:bg-neutral-900 rounded-full\", // Mask background line\n isClickable ? \"cursor-pointer\" : \"cursor-default\",\n // Horizontal offset logic for end items to align with text\n !isVertical && index === 0 && \"mx-0\",\n !isVertical && isLast && \"mx-0\",\n )}\n style={{\n // Adjust the background masking size depending on variant so the line doesn't peek through the edges\n padding: `${paddingValue}px`\n }}\n aria-current={status === \"current\" ? \"step\" : undefined}\n >\n <StepIndicator\n step={step}\n index={index}\n status={status}\n size={size}\n variant={variant}\n showNumbers={showNumbers}\n animated={animated}\n colors={colors}\n />\n </button>\n\n {/* Step text content */}\n <motion.div\n className={mergeClassNames(\n \"mt-2\",\n isVertical ? \"flex-1 pb-6\" : \"text-center px-2\",\n !isVertical && index === 0 && \"text-left px-0\",\n !isVertical && isLast && \"text-right px-0\",\n isVertical && isLast && \"pb-0\"\n )}\n style={isVertical ? { marginTop: '-4px' } : undefined}\n initial={animated ? { opacity: 0, y: 10 } : undefined}\n animate={animated ? { opacity: 1, y: 0 } : undefined}\n transition={{ delay: index * 0.1 }}\n >\n <p\n className={mergeClassNames(\n \"font-medium transition-colors duration-200\",\n config.text,\n status === \"current\"\n ? \"text-primary dark:text-primary-400\"\n : status === \"completed\"\n ? \"text-neutral-700 dark:text-neutral-200\"\n : status === \"error\"\n ? \"text-red-500\"\n : \"text-neutral-500 dark:text-neutral-400\"\n )}\n >\n {step.title}\n {step.optional && (\n <span className=\"ml-1 text-neutral-400 dark:text-neutral-500 font-normal\">\n (Optional)\n </span>\n )}\n </p>\n {step.description && (\n <p\n className={mergeClassNames(\n \"mt-0.5 text-neutral-500 dark:text-neutral-400\",\n size === \"sm\" ? \"text-xs\" : \"text-xs\"\n )}\n >\n {step.description}\n </p>\n )}\n </motion.div>\n\n {/* Step content (for vertical with content) */}\n {isVertical && step.content && status === \"current\" && (\n <motion.div\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: \"auto\" }}\n exit={{ opacity: 0, height: 0 }}\n className=\"pl-14 pb-4 w-full\"\n >\n {step.content}\n </motion.div>\n )}\n </div>\n );\n })}\n </div>\n );\n};\n\nStepper.displayName = \"Stepper\";\n\nexport default Stepper;\n","import { useThemeContext } from \"../../../contexts\";\nimport { motion } from \"framer-motion\";\n\nexport default function SunToMoonButton({\n showLabelAndImage = true,\n}: {\n showLabelAndImage?: boolean;\n}) {\n const { mode, toggleMode } = useThemeContext();\n\n const raysVariants = {\n hidden: {\n strokeOpacity: 0,\n transition: {\n staggerChildren: 0.05,\n staggerDirection: -1,\n },\n },\n visible: {\n strokeOpacity: 1,\n transition: {\n staggerChildren: 0.05,\n },\n },\n };\n\n const rayVariant = {\n hidden: {\n pathLength: 0,\n opacity: 0,\n // Start from center of the circle\n scale: 0,\n },\n visible: {\n pathLength: 1,\n opacity: 1,\n scale: 1,\n transition: {\n duration: 0.5,\n pathLength: { duration: 0.3 },\n opacity: { duration: 0.2 },\n scale: { duration: 0.3 },\n },\n },\n };\n\n const shineVariant = {\n hidden: {\n opacity: 0,\n scale: 2,\n strokeDasharray: \"20, 1000\",\n strokeDashoffset: 0,\n filter: \"blur(0px)\",\n },\n visible: {\n opacity: [0, 1, 0],\n strokeDashoffset: [0, -50, -100],\n filter: [\"blur(2px)\", \"blur(2px)\", \"blur(0px)\"],\n transition: {\n duration: 0.75,\n },\n },\n };\n\n const sunPath =\n \"M70 49.5C70 60.8218 60.8218 70 49.5 70C38.1782 70 29 60.8218 29 49.5C29 38.1782 38.1782 29 49.5 29C60 29 69.5 38 70 49.5Z\";\n const moonPath =\n \"M70 49.5C70 60.8218 60.8218 70 49.5 70C38.1782 70 29 60.8218 29 49.5C29 38.1782 38.1782 29 49.5 29C39 45 49.5 59.5 70 49.5Z\";\n const fallbackPath = sunPath;\n\n // Ensure we have valid paths at all times\n // Light mode = sun, Dark mode = moon\n const currentPath = mode === \"light\" ? sunPath : moonPath;\n const safeCurrentPath = currentPath || fallbackPath;\n\n return (\n <button\n type=\"button\"\n className=\"flex w-full cursor-pointer flex-col items-center justify-center rounded-xl py-3 text-base font-medium transition duration-200\"\n onClick={() => toggleMode()}\n >\n <span className=\"flex items-center\">\n {showLabelAndImage && (\n <span className=\"mr-2 text-neutral-900 dark:text-white\">\n {mode === \"light\" ? \"Light\" : \"Dark\"}\n </span>\n )}\n\n <motion.svg\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n width={20}\n height={20}\n viewBox=\"0 0 100 100\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"relative\"\n >\n {/* Shine effect for moon in dark mode */}\n {moonPath && (\n <motion.path\n variants={shineVariant}\n d={moonPath}\n className=\"absolute top-0 left-0 stroke-blue-100\"\n initial=\"hidden\"\n animate={mode === \"light\" ? \"hidden\" : \"visible\"}\n />\n )}\n\n {/* Sun rays - visible in light mode */}\n <motion.g\n variants={raysVariants}\n initial=\"hidden\"\n animate={mode === \"dark\" ? \"hidden\" : \"visible\"}\n style={{\n strokeLinecap: \"round\",\n strokeWidth: 6,\n stroke: \"var(--color-yellow-500)\",\n }}\n >\n <motion.path\n className=\"origin-center\"\n variants={rayVariant}\n d=\"M50 2V11\"\n />\n <motion.path variants={rayVariant} d=\"M85 15L78 22\" />\n <motion.path variants={rayVariant} d=\"M98 50H89\" />\n <motion.path variants={rayVariant} d=\"M85 85L78 78\" />\n <motion.path variants={rayVariant} d=\"M50 98V89\" />\n <motion.path variants={rayVariant} d=\"M23 78L16 84\" />\n <motion.path variants={rayVariant} d=\"M11 50H2\" />\n <motion.path variants={rayVariant} d=\"M23 23L16 16\" />\n </motion.g>\n\n {/* Main path - Light=Sun(yellow), Dark=Moon(blue) */}\n <motion.path\n d={safeCurrentPath}\n fill=\"transparent\"\n transition={{ duration: 1, type: \"spring\" }}\n initial={false}\n animate={\n mode === \"light\"\n ? {\n d: sunPath || fallbackPath,\n rotate: 0,\n scale: 1,\n stroke: \"var(--color-yellow-500)\",\n fill: \"var(--color-yellow-500)\",\n fillOpacity: 0.5,\n strokeOpacity: 1,\n }\n : {\n d: moonPath || fallbackPath,\n rotate: -360,\n scale: 2,\n stroke: \"var(--color-blue-400)\",\n fill: \"var(--color-blue-400)\",\n fillOpacity: 0.35,\n strokeOpacity: 1,\n }\n }\n />\n </motion.svg>\n </span>\n {showLabelAndImage && (\n <span className=\"mt-2 flex h-[90px] w-[180px] flex-col items-center justify-center rounded-md bg-neutral-100 dark:bg-neutral-800\">\n <span className=\"my-4 flex w-[150px] flex-col rounded-md\">\n <span className=\"mb-1 w-[80px] rounded-full bg-neutral-300 p-1 dark:bg-neutral-600\"></span>\n <span className=\"mb-1 w-[100px] rounded-full bg-neutral-300 p-1 dark:bg-neutral-600\"></span>\n <span className=\"w-[150px] rounded-full bg-neutral-300 p-1 dark:bg-neutral-600\"></span>\n </span>\n <span className=\"my-1 flex w-[150px] justify-between\">\n <span className=\"mb-1 w-[80px] rounded-full bg-neutral-300 p-1 dark:bg-neutral-600\"></span>\n <span className=\"mb-1 w-[30px] rounded-full bg-primary p-1\"></span>\n </span>\n </span>\n )}\n </button>\n );\n}\n","import type { TextareaProps } from \"./types\";\nimport { forwardRef } from \"react\";\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className = \"\", label, error, helperText, ...props }, ref) => {\n const textareaClasses = `\n flex\n min-h-[80px]\n w-full\n rounded-md\n border\n border-neutral-300\n dark:border-neutral-600\n bg-white\n dark:bg-neutral-700\n px-3\n py-2\n text-sm\n text-neutral-900\n dark:text-white\n transition-all\n duration-200\n placeholder:text-neutral-500\n dark:placeholder:text-neutral-400\n focus-visible:outline-none\n focus-visible:ring-2\n focus-visible:ring-primary\n disabled:cursor-not-allowed\n disabled:opacity-50\n resize-none\n ${error ? \"border-red-500 focus-visible:ring-red-500\" : \"\"}\n ${className}\n `\n .trim()\n .replace(/\\s+/g, \" \");\n\n return (\n <div className=\"w-full\">\n {label && (\n <label className=\"text-sm font-medium text-neutral-700 dark:text-neutral-200 leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 mb-2 block\">\n {label}\n </label>\n )}\n <textarea ref={ref} className={textareaClasses} {...props} />\n {error && (\n <p className=\"text-sm font-medium text-red-500 dark:text-red-400 mt-1\">\n {error}\n </p>\n )}\n {helperText && !error && (\n <p className=\"text-sm text-neutral-500 dark:text-neutral-400 mt-1\">\n {helperText}\n </p>\n )}\n </div>\n );\n }\n);\n\nTextarea.displayName = \"Textarea\";\n","import {\n createContext,\n useContext,\n useState,\n useCallback,\n useRef,\n useEffect,\n forwardRef,\n} from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type ToastType =\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"info\"\n | \"default\"\n | \"loading\";\nexport type ToastPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\nexport interface ToastAction {\n label: string;\n onClick: () => void;\n}\n\nexport interface Toast {\n id: string;\n type: ToastType;\n title?: string;\n description?: string;\n duration?: number;\n icon?: React.ReactNode;\n action?: ToastAction;\n dismissible?: boolean;\n onDismiss?: () => void;\n onAutoClose?: () => void;\n promise?: {\n loading: string;\n success: string | ((data: unknown) => string);\n error: string | ((error: unknown) => string);\n };\n}\n\nexport interface ToastOptions {\n type?: ToastType;\n title?: string;\n description?: string;\n duration?: number;\n icon?: React.ReactNode;\n action?: ToastAction;\n dismissible?: boolean;\n onDismiss?: () => void;\n onAutoClose?: () => void;\n}\n\nexport interface ToastContextValue {\n toasts: Toast[];\n toast: (options: ToastOptions | string) => string;\n success: (options: ToastOptions | string) => string;\n error: (options: ToastOptions | string) => string;\n warning: (options: ToastOptions | string) => string;\n info: (options: ToastOptions | string) => string;\n loading: (options: ToastOptions | string) => string;\n promise: <T>(\n promise: Promise<T>,\n options: {\n loading: string;\n success: string | ((data: T) => string);\n error: string | ((error: unknown) => string);\n }\n ) => Promise<T>;\n dismiss: (id: string) => void;\n dismissAll: () => void;\n update: (id: string, options: Partial<ToastOptions>) => void;\n}\n\nexport interface ToastProviderProps {\n children: React.ReactNode;\n /** Default position for toasts */\n position?: ToastPosition;\n /** Default duration in milliseconds */\n duration?: number;\n /** Maximum number of visible toasts */\n maxToasts?: number;\n /** Gap between toasts */\n gap?: number;\n /** Whether toasts are dismissible by default */\n dismissible?: boolean;\n /** Custom className for the toast container */\n containerClassName?: string;\n}\n\nexport interface ToastItemProps {\n toast: Toast;\n onDismiss: (id: string) => void;\n position: ToastPosition;\n}\n\n// ============================================================================\n// Context\n// ============================================================================\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\nexport const useToast = (): ToastContextValue => {\n const context = useContext(ToastContext);\n if (!context) {\n throw new Error(\"useToast must be used within a ToastProvider\");\n }\n return context;\n};\n\n// ============================================================================\n// Icons\n// ============================================================================\n\nconst SuccessIcon = () => (\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 13l4 4L19 7\" />\n </svg>\n);\n\nconst ErrorIcon = () => (\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n);\n\nconst WarningIcon = () => (\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n);\n\nconst InfoIcon = () => (\n <svg\n className=\"w-5 h-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n);\n\nconst LoadingIcon = () => (\n <svg\n className=\"w-5 h-5 animate-spin\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n);\n\nconst CloseIcon = () => (\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n);\n\n// ============================================================================\n// Styles\n// ============================================================================\n\nconst typeStyles: Record<\n ToastType,\n { bg: string; icon: string; iconBg: string }\n> = {\n success: {\n bg: \"bg-white dark:bg-neutral-800 border-green-200 dark:border-green-800\",\n icon: \"text-green-500\",\n iconBg: \"bg-green-100 dark:bg-green-900/30\",\n },\n error: {\n bg: \"bg-white dark:bg-neutral-800 border-red-200 dark:border-red-800\",\n icon: \"text-red-500\",\n iconBg: \"bg-red-100 dark:bg-red-900/30\",\n },\n warning: {\n bg: \"bg-white dark:bg-neutral-800 border-amber-200 dark:border-amber-800\",\n icon: \"text-amber-500\",\n iconBg: \"bg-amber-100 dark:bg-amber-900/30\",\n },\n info: {\n bg: \"bg-white dark:bg-neutral-800 border-blue-200 dark:border-blue-800\",\n icon: \"text-blue-500\",\n iconBg: \"bg-blue-100 dark:bg-blue-900/30\",\n },\n default: {\n bg: \"bg-white dark:bg-neutral-800 border-neutral-200 dark:border-neutral-700\",\n icon: \"text-neutral-500\",\n iconBg: \"bg-neutral-100 dark:bg-neutral-700\",\n },\n loading: {\n bg: \"bg-white dark:bg-neutral-800 border-neutral-200 dark:border-neutral-700\",\n icon: \"text-primary-500\",\n iconBg: \"bg-primary-100 dark:bg-primary-900/30\",\n },\n};\n\nconst positionStyles: Record<ToastPosition, string> = {\n \"top-left\": \"top-4 left-4\",\n \"top-center\": \"top-4 left-1/2 -translate-x-1/2\",\n \"top-right\": \"top-4 right-4\",\n \"bottom-left\": \"bottom-4 left-4\",\n \"bottom-center\": \"bottom-4 left-1/2 -translate-x-1/2\",\n \"bottom-right\": \"bottom-4 right-4\",\n};\n\nconst getMotionVariants = (position: ToastPosition) => {\n const isTop = position.startsWith(\"top\");\n const isCenter = position.includes(\"center\");\n const isLeft = position.includes(\"left\");\n\n return {\n initial: {\n opacity: 0,\n y: isTop ? -20 : 20,\n x: isCenter ? 0 : isLeft ? -20 : 20,\n scale: 0.95,\n },\n animate: {\n opacity: 1,\n y: 0,\n x: 0,\n scale: 1,\n },\n exit: {\n opacity: 0,\n y: isTop ? -20 : 20,\n scale: 0.95,\n transition: { duration: 0.15 },\n },\n };\n};\n\n// ============================================================================\n// Toast Item Component\n// ============================================================================\n\nconst ToastItem = forwardRef<HTMLDivElement, ToastItemProps>(\n ({ toast, onDismiss, position }, ref) => {\n const {\n type,\n title,\n description,\n icon,\n action,\n dismissible = true,\n duration,\n } = toast;\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const [progress, setProgress] = useState(100);\n const [isPaused, setIsPaused] = useState(false);\n\n const defaultIcons: Record<ToastType, React.ReactNode> = {\n success: <SuccessIcon />,\n error: <ErrorIcon />,\n warning: <WarningIcon />,\n info: <InfoIcon />,\n loading: <LoadingIcon />,\n default: null,\n };\n\n // Auto-dismiss timer with progress\n useEffect(() => {\n if (duration && duration > 0 && type !== \"loading\") {\n const startTime = Date.now();\n const interval = 50;\n\n const updateProgress = () => {\n if (isPaused) return;\n\n const elapsed = Date.now() - startTime;\n const remaining = Math.max(0, 100 - (elapsed / duration) * 100);\n setProgress(remaining);\n\n if (remaining <= 0) {\n toast.onAutoClose?.();\n onDismiss(toast.id);\n }\n };\n\n timerRef.current = setInterval(updateProgress, interval);\n\n return () => {\n if (timerRef.current) {\n clearInterval(timerRef.current);\n }\n };\n }\n }, [duration, toast.id, type, isPaused, onDismiss, toast]);\n\n const handleMouseEnter = () => setIsPaused(true);\n const handleMouseLeave = () => setIsPaused(false);\n\n const styles = typeStyles[type];\n const displayIcon = icon ?? defaultIcons[type];\n const variants = getMotionVariants(position);\n\n return (\n <motion.div\n ref={ref}\n layout\n initial={variants.initial}\n animate={variants.animate}\n exit={variants.exit}\n transition={{ type: \"spring\", stiffness: 400, damping: 30 }}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n className={`\n relative flex items-start gap-3 p-4 pr-10\n rounded-lg shadow-lg border min-w-[320px] max-w-[420px]\n overflow-hidden\n ${styles.bg}\n `}\n role=\"alert\"\n aria-live=\"polite\"\n >\n {/* Progress bar */}\n {duration && duration > 0 && type !== \"loading\" && (\n <div className=\"absolute bottom-0 left-0 right-0 h-1 bg-neutral-100 dark:bg-neutral-700\">\n <motion.div\n className={`h-full ${type === \"success\"\n ? \"bg-green-500\"\n : type === \"error\"\n ? \"bg-red-500\"\n : type === \"warning\"\n ? \"bg-amber-500\"\n : type === \"info\"\n ? \"bg-blue-500\"\n : \"bg-neutral-400\"\n }`}\n style={{ width: `${progress}%` }}\n transition={{ duration: 0.05 }}\n />\n </div>\n )}\n\n {/* Icon */}\n {displayIcon && (\n <div\n className={`flex-shrink-0 p-1.5 rounded-full ${styles.iconBg} ${styles.icon}`}\n >\n {displayIcon}\n </div>\n )}\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n {title && (\n <p className=\"font-semibold text-neutral-900 dark:text-white text-sm\">\n {title}\n </p>\n )}\n {description && (\n <p\n className={`text-sm text-neutral-600 dark:text-neutral-300 ${title ? \"mt-1\" : \"\"\n }`}\n >\n {description}\n </p>\n )}\n {action && (\n <button\n onClick={() => {\n action.onClick();\n onDismiss(toast.id);\n }}\n className=\"mt-2 text-sm font-medium text-primary-600 dark:text-primary-400 hover:underline\"\n >\n {action.label}\n </button>\n )}\n </div>\n\n {/* Dismiss button */}\n {dismissible && (\n <button\n onClick={() => {\n toast.onDismiss?.();\n onDismiss(toast.id);\n }}\n className=\"absolute top-3 right-3 p-1 rounded-full text-neutral-400 hover:text-neutral-600 dark:text-neutral-500 dark:hover:text-neutral-300 hover:bg-neutral-100 dark:hover:bg-neutral-700 transition-colors\"\n aria-label=\"Dismiss\"\n >\n <CloseIcon />\n </button>\n )}\n </motion.div>\n );\n }\n);\n\nToastItem.displayName = \"ToastItem\";\n\n// ============================================================================\n// Toast Provider Component\n// ============================================================================\n\nexport const ToastProvider: React.FC<ToastProviderProps> = ({\n children,\n position = \"bottom-right\",\n duration = 5000,\n maxToasts = 5,\n gap = 12,\n dismissible = true,\n containerClassName = \"\",\n}) => {\n const [toasts, setToasts] = useState<Toast[]>([]);\n const toastIdCounter = useRef(0);\n\n const generateId = () => {\n toastIdCounter.current += 1;\n return `toast-${toastIdCounter.current}-${Date.now()}`;\n };\n\n const addToast = useCallback(\n (options: ToastOptions | string, type: ToastType = \"default\"): string => {\n const id = generateId();\n const toastOptions: ToastOptions =\n typeof options === \"string\" ? { description: options } : options;\n\n const newToast: Toast = {\n id,\n type: toastOptions.type ?? type,\n title: toastOptions.title,\n description: toastOptions.description,\n duration: toastOptions.duration ?? duration,\n icon: toastOptions.icon,\n action: toastOptions.action,\n dismissible: toastOptions.dismissible ?? dismissible,\n onDismiss: toastOptions.onDismiss,\n onAutoClose: toastOptions.onAutoClose,\n };\n\n setToasts((prev) => {\n const updated = [...prev, newToast];\n // Keep only the last maxToasts\n return updated.slice(-maxToasts);\n });\n\n return id;\n },\n [duration, dismissible, maxToasts]\n );\n\n const dismiss = useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n }, []);\n\n const dismissAll = useCallback(() => {\n setToasts([]);\n }, []);\n\n const update = useCallback((id: string, options: Partial<ToastOptions>) => {\n setToasts((prev) =>\n prev.map((t) =>\n t.id === id\n ? {\n ...t,\n ...options,\n type: options.type ?? t.type,\n }\n : t\n )\n );\n }, []);\n\n const toast = useCallback(\n (options: ToastOptions | string) => addToast(options, \"default\"),\n [addToast]\n );\n\n const success = useCallback(\n (options: ToastOptions | string) => addToast(options, \"success\"),\n [addToast]\n );\n\n const error = useCallback(\n (options: ToastOptions | string) => addToast(options, \"error\"),\n [addToast]\n );\n\n const warning = useCallback(\n (options: ToastOptions | string) => addToast(options, \"warning\"),\n [addToast]\n );\n\n const info = useCallback(\n (options: ToastOptions | string) => addToast(options, \"info\"),\n [addToast]\n );\n\n const loading = useCallback(\n (options: ToastOptions | string) => {\n const toastOptions: ToastOptions =\n typeof options === \"string\" ? { description: options } : options;\n return addToast(\n { ...toastOptions, duration: 0, dismissible: false },\n \"loading\"\n );\n },\n [addToast]\n );\n\n const promise = useCallback(\n async <T,>(\n promiseToResolve: Promise<T>,\n options: {\n loading: string;\n success: string | ((data: T) => string);\n error: string | ((error: unknown) => string);\n }\n ): Promise<T> => {\n const id = loading(options.loading);\n\n try {\n const result = await promiseToResolve;\n const successMessage =\n typeof options.success === \"function\"\n ? options.success(result)\n : options.success;\n update(id, {\n type: \"success\",\n description: successMessage,\n duration,\n dismissible: true,\n });\n return result;\n } catch (err) {\n const errorMessage =\n typeof options.error === \"function\"\n ? options.error(err)\n : options.error;\n update(id, {\n type: \"error\",\n description: errorMessage,\n duration,\n dismissible: true,\n });\n throw err;\n }\n },\n [loading, update, duration]\n );\n\n const contextValue: ToastContextValue = {\n toasts,\n toast,\n success,\n error,\n warning,\n info,\n loading,\n promise,\n dismiss,\n dismissAll,\n update,\n };\n\n const isTop = position.startsWith(\"top\");\n\n return (\n <ToastContext.Provider value={contextValue}>\n {children}\n <div\n className={`fixed z-[100] flex flex-col pointer-events-none ${positionStyles[position]} ${containerClassName}`}\n style={{ gap: `${gap}px` }}\n >\n <AnimatePresence mode=\"popLayout\">\n {(isTop ? toasts : [...toasts].reverse()).map((t) => (\n <div key={t.id} className=\"pointer-events-auto\">\n <ToastItem toast={t} onDismiss={dismiss} position={position} />\n </div>\n ))}\n </AnimatePresence>\n </div>\n </ToastContext.Provider>\n );\n};\n\n// ============================================================================\n// Standalone toast function (for use without hooks)\n// ============================================================================\n\nlet globalToast: ToastContextValue | null = null;\n\nexport const setGlobalToast = (toastContext: ToastContextValue) => {\n globalToast = toastContext;\n};\n\nexport const toastStandalone = {\n show: (options: ToastOptions | string) => globalToast?.toast(options),\n success: (options: ToastOptions | string) => globalToast?.success(options),\n error: (options: ToastOptions | string) => globalToast?.error(options),\n warning: (options: ToastOptions | string) => globalToast?.warning(options),\n info: (options: ToastOptions | string) => globalToast?.info(options),\n loading: (options: ToastOptions | string) => globalToast?.loading(options),\n promise: <T,>(\n promise: Promise<T>,\n options: {\n loading: string;\n success: string | ((data: T) => string);\n error: string | ((error: unknown) => string);\n }\n ) => globalToast?.promise(promise, options),\n dismiss: (id: string) => globalToast?.dismiss(id),\n dismissAll: () => globalToast?.dismissAll(),\n};\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport default ToastProvider;\nexport { ToastItem };\n","import { useState, useRef, useEffect, useCallback } from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\n\nexport type TooltipPosition = \"top\" | \"bottom\" | \"left\" | \"right\";\nexport type TooltipTrigger = \"hover\" | \"click\" | \"focus\";\n\nexport interface TooltipProps {\n /** The content to display in the tooltip */\n content: React.ReactNode;\n /** The element that triggers the tooltip */\n children: React.ReactElement;\n /** Position of the tooltip relative to the trigger */\n position?: TooltipPosition;\n /** How the tooltip is triggered */\n trigger?: TooltipTrigger;\n /** Delay before showing tooltip (ms) */\n delayShow?: number;\n /** Delay before hiding tooltip (ms) */\n delayHide?: number;\n /** Whether the tooltip is disabled */\n disabled?: boolean;\n /** Custom className for the tooltip */\n className?: string;\n /** Whether to show an arrow pointing to the trigger */\n arrow?: boolean;\n /** Maximum width of the tooltip */\n maxWidth?: number;\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n}\n\nconst positionStyles: Record<TooltipPosition, string> = {\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\n};\n\nconst arrowStyles: Record<TooltipPosition, string> = {\n top: \"top-full left-1/2 -translate-x-1/2 border-t-neutral-800 dark:border-t-neutral-700 border-x-transparent border-b-transparent border-t-[6px] border-x-[6px] border-b-0\",\n bottom:\n \"bottom-full left-1/2 -translate-x-1/2 border-b-neutral-800 dark:border-b-neutral-700 border-x-transparent border-t-transparent border-b-[6px] border-x-[6px] border-t-0\",\n left: \"left-full top-1/2 -translate-y-1/2 border-l-neutral-800 dark:border-l-neutral-700 border-y-transparent border-r-transparent border-l-[6px] border-y-[6px] border-r-0\",\n right:\n \"right-full top-1/2 -translate-y-1/2 border-r-neutral-800 dark:border-r-neutral-700 border-y-transparent border-l-transparent border-r-[6px] border-y-[6px] border-l-0\",\n};\n\nconst motionVariants = {\n top: {\n initial: { opacity: 0, y: 4, scale: 0.95 },\n animate: { opacity: 1, y: 0, scale: 1 },\n exit: { opacity: 0, y: 4, scale: 0.95 },\n },\n bottom: {\n initial: { opacity: 0, y: -4, scale: 0.95 },\n animate: { opacity: 1, y: 0, scale: 1 },\n exit: { opacity: 0, y: -4, scale: 0.95 },\n },\n left: {\n initial: { opacity: 0, x: 4, scale: 0.95 },\n animate: { opacity: 1, x: 0, scale: 1 },\n exit: { opacity: 0, x: 4, scale: 0.95 },\n },\n right: {\n initial: { opacity: 0, x: -4, scale: 0.95 },\n animate: { opacity: 1, x: 0, scale: 1 },\n exit: { opacity: 0, x: -4, scale: 0.95 },\n },\n} as const;\n\nexport default function Tooltip({\n content,\n children,\n position = \"top\",\n trigger = \"hover\",\n delayShow = 200,\n delayHide = 0,\n disabled = false,\n className = \"\",\n arrow = true,\n maxWidth = 250,\n open: controlledOpen,\n onOpenChange,\n}: TooltipProps) {\n const [internalOpen, setInternalOpen] = useState(false);\n const showTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const hideTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : internalOpen;\n\n const setOpen = useCallback(\n (value: boolean) => {\n if (isControlled) {\n onOpenChange?.(value);\n } else {\n setInternalOpen(value);\n }\n },\n [isControlled, onOpenChange]\n );\n\n const clearTimeouts = useCallback(() => {\n if (showTimeoutRef.current) {\n clearTimeout(showTimeoutRef.current);\n showTimeoutRef.current = null;\n }\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n }, []);\n\n const showTooltip = useCallback(() => {\n if (disabled) return;\n clearTimeouts();\n if (delayShow > 0) {\n showTimeoutRef.current = setTimeout(() => setOpen(true), delayShow);\n } else {\n setOpen(true);\n }\n }, [disabled, delayShow, setOpen, clearTimeouts]);\n\n const hideTooltip = useCallback(() => {\n clearTimeouts();\n if (delayHide > 0) {\n hideTimeoutRef.current = setTimeout(() => setOpen(false), delayHide);\n } else {\n setOpen(false);\n }\n }, [delayHide, setOpen, clearTimeouts]);\n\n const toggleTooltip = useCallback(() => {\n if (disabled) return;\n setOpen(!isOpen);\n }, [disabled, isOpen, setOpen]);\n\n useEffect(() => {\n return () => clearTimeouts();\n }, [clearTimeouts]);\n\n // Close on click outside for click trigger\n useEffect(() => {\n if (trigger !== \"click\" || !isOpen) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [trigger, isOpen, setOpen]);\n\n // Close on Escape\n useEffect(() => {\n if (!isOpen) return;\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [isOpen, setOpen]);\n\n const triggerProps = {\n ...(trigger === \"hover\" && {\n onMouseEnter: showTooltip,\n onMouseLeave: hideTooltip,\n }),\n ...(trigger === \"click\" && {\n onClick: toggleTooltip,\n }),\n ...(trigger === \"focus\" && {\n onFocus: showTooltip,\n onBlur: hideTooltip,\n }),\n };\n\n return (\n <div\n ref={triggerRef}\n className=\"relative inline-flex\"\n {...triggerProps}\n >\n {children}\n <AnimatePresence>\n {isOpen && !disabled && (\n <motion.div\n role=\"tooltip\"\n initial={motionVariants[position].initial}\n animate={motionVariants[position].animate}\n exit={motionVariants[position].exit}\n transition={{ duration: 0.15, ease: \"easeOut\" }}\n className={`\n absolute z-50 ${positionStyles[position]}\n px-3 py-2 text-sm font-medium\n bg-neutral-800 dark:bg-neutral-700\n text-white rounded-lg shadow-lg\n whitespace-normal break-words\n ${className}\n `}\n style={{ maxWidth }}\n >\n {content}\n {arrow && (\n <span\n className={`absolute w-0 h-0 ${arrowStyles[position]}`}\n aria-hidden=\"true\"\n />\n )}\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n );\n}\n\nexport { Tooltip };\n","import React, { type ReactNode, type ElementType } from 'react';\nimport { mergeClassNames } from '../../../utils';\n\nexport type TypographyVariant =\n | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\n | 'body1' | 'body2' | 'caption' | 'overline';\n\nexport type TypographyAlign = 'left' | 'center' | 'right' | 'justify';\nexport type TypographyWeight = 'thin' | 'extralight' | 'light' | 'normal' | 'medium' | 'semibold' | 'bold' | 'extrabold' | 'black';\nexport type TypographyTracking = 'tighter' | 'tight' | 'normal' | 'wide' | 'wider' | 'widest';\nexport type TypographyGradient = boolean | 'primary' | 'ocean' | 'sunset' | 'aurora' | 'neon' | 'forest' | 'galaxy';\n\nexport interface TypographyProps {\n children: ReactNode;\n variant?: TypographyVariant;\n align?: TypographyAlign;\n weight?: TypographyWeight;\n tracking?: TypographyTracking;\n italic?: boolean;\n as?: ElementType;\n className?: string;\n gradient?: TypographyGradient;\n style?: React.CSSProperties;\n}\n\nconst variantMapping: Record<TypographyVariant, ElementType> = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n body1: 'p',\n body2: 'p',\n caption: 'span',\n overline: 'span',\n};\n\nconst variantStyles: Record<TypographyVariant, string> = {\n h1: 'text-4xl md:text-6xl font-black tracking-tighter uppercase italic leading-tight',\n h2: 'text-3xl md:text-5xl font-black tracking-tight uppercase italic leading-snug',\n h3: 'text-2xl md:text-4xl font-extrabold tracking-tight italic',\n h4: 'text-xl md:text-2xl font-bold tracking-tight',\n h5: 'text-lg md:text-xl font-bold',\n h6: 'text-base md:text-lg font-semibold uppercase tracking-widest text-[#888]',\n body1: 'text-base font-medium leading-relaxed',\n body2: 'text-sm font-medium leading-relaxed text-neutral-500',\n caption: 'text-xs font-semibold uppercase tracking-wider text-neutral-400',\n overline: 'text-[10px] font-black uppercase tracking-[0.2em] text-neutral-500',\n};\n\nconst alignStyles: Record<TypographyAlign, string> = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right',\n justify: 'text-justify',\n};\n\nconst weightStyles: Record<TypographyWeight, string> = {\n thin: 'font-thin',\n extralight: 'font-extralight',\n light: 'font-light',\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n extrabold: 'font-extrabold',\n black: 'font-black',\n};\n\nconst trackingStyles: Record<TypographyTracking, string> = {\n tighter: 'tracking-tighter',\n tight: 'tracking-tight',\n normal: 'tracking-normal',\n wide: 'tracking-wide',\n wider: 'tracking-wider',\n widest: 'tracking-widest',\n};\n\nconst gradientStyles: Record<string, string> = {\n primary: 'bg-linear-to-r from-blue-500 to-purple-500 bg-clip-text text-transparent',\n ocean: 'bg-linear-to-r from-cyan-500 to-blue-600 bg-clip-text text-transparent',\n sunset: 'bg-linear-to-r from-orange-500 to-rose-600 bg-clip-text text-transparent',\n aurora: 'bg-linear-to-r from-emerald-400 to-cyan-500 bg-clip-text text-transparent',\n neon: 'bg-linear-to-r from-fuchsia-500 to-purple-600 bg-clip-text text-transparent',\n forest: 'bg-linear-to-r from-lime-500 to-emerald-600 bg-clip-text text-transparent',\n galaxy: 'bg-linear-to-r from-indigo-500 via-purple-500 to-pink-500 bg-clip-text text-transparent',\n};\n\nexport const Typography = ({\n children,\n variant = 'body1',\n align,\n weight,\n tracking,\n italic,\n as,\n className,\n gradient = false,\n style,\n}: TypographyProps) => {\n const Component = as || variantMapping[variant];\n\n const getGradientClass = () => {\n if (!gradient) return '';\n if (gradient === true) return gradientStyles.primary;\n return gradientStyles[gradient] || gradientStyles.primary;\n };\n\n return (\n <Component\n style={style}\n className={mergeClassNames(\n variantStyles[variant],\n align && alignStyles[align],\n weight && weightStyles[weight],\n tracking && trackingStyles[tracking],\n italic && 'italic',\n getGradientClass(),\n className\n )}\n >\n {children}\n </Component>\n );\n};\n","import React, { useRef, useEffect } from 'react';\nimport * as THREE from 'three';\n\nconst vertexShader = `\nvarying vec2 vUv;\nuniform float uTime;\nuniform float mouse;\nuniform float uEnableWaves;\n\nvoid main() {\n vUv = uv;\n float time = uTime * 5.;\n\n float waveFactor = uEnableWaves;\n\n vec3 transformed = position;\n\n transformed.x += sin(time + position.y) * 0.5 * waveFactor;\n transformed.y += cos(time + position.z) * 0.15 * waveFactor;\n transformed.z += sin(time + position.x) * waveFactor;\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4(transformed, 1.0);\n}\n`;\n\nconst fragmentShader = `\nvarying vec2 vUv;\nuniform float mouse;\nuniform float uTime;\nuniform sampler2D uTexture;\n\nvoid main() {\n float time = uTime;\n vec2 pos = vUv;\n \n float move = sin(time + mouse) * 0.01;\n float r = texture2D(uTexture, pos + cos(time * 2. - time + pos.x) * .01).r;\n float g = texture2D(uTexture, pos + tan(time * .5 + pos.x - time) * .01).g;\n float b = texture2D(uTexture, pos - cos(time * 2. + time + pos.y) * .01).b;\n float a = texture2D(uTexture, pos).a;\n gl_FragColor = vec4(r, g, b, a);\n}\n`;\n\nconst PX_RATIO = typeof window !== 'undefined' ? window.devicePixelRatio : 1;\n\ninterface AsciiFilterOptions {\n fontSize?: number;\n fontFamily?: string;\n charset?: string;\n invert?: boolean;\n}\n\nclass AsciiFilter {\n renderer: THREE.WebGLRenderer;\n domElement: HTMLDivElement;\n pre: HTMLPreElement;\n canvas: HTMLCanvasElement;\n context: CanvasRenderingContext2D;\n deg: number;\n invert: boolean;\n fontSize: number;\n fontFamily: string;\n charset: string;\n width: number = 0;\n height: number = 0;\n cols: number = 0;\n rows: number = 0;\n center: { x: number, y: number } = { x: 0, y: 0 };\n mouse: { x: number, y: number } = { x: 0, y: 0 };\n\n constructor(renderer: THREE.WebGLRenderer, { fontSize, fontFamily, charset, invert }: AsciiFilterOptions = {}) {\n this.renderer = renderer;\n this.domElement = document.createElement('div');\n this.domElement.style.position = 'absolute';\n this.domElement.style.top = '0';\n this.domElement.style.left = '0';\n this.domElement.style.width = '100%';\n this.domElement.style.height = '100%';\n\n this.pre = document.createElement('pre');\n this.domElement.appendChild(this.pre);\n\n this.canvas = document.createElement('canvas');\n const ctx = this.canvas.getContext('2d');\n if (!ctx) throw new Error('Could not get 2d context');\n this.context = ctx;\n this.domElement.appendChild(this.canvas);\n\n this.deg = 0;\n this.invert = invert ?? true;\n this.fontSize = fontSize ?? 12;\n this.fontFamily = fontFamily ?? \"'Courier New', monospace\";\n this.charset = charset ?? ' .\\'`^\",:;Il!i~+_-?][}{1)(|/tfjrxnuvczXYUJCLQ0OZmwqpdbkhao*#MW&8%B@$';\n\n this.context.imageSmoothingEnabled = false;\n\n this.onMouseMove = this.onMouseMove.bind(this);\n document.addEventListener('mousemove', this.onMouseMove);\n }\n\n setSize(width: number, height: number) {\n this.width = width;\n this.height = height;\n this.renderer.setSize(width, height);\n this.reset();\n\n this.center = { x: width / 2, y: height / 2 };\n this.mouse = { x: this.center.x, y: this.center.y };\n }\n\n reset() {\n this.context.font = `${this.fontSize}px ${this.fontFamily}`;\n const charWidth = this.context.measureText('A').width;\n\n this.cols = Math.floor(this.width / (this.fontSize * (charWidth / this.fontSize)));\n this.rows = Math.floor(this.height / this.fontSize);\n\n this.canvas.width = this.cols;\n this.canvas.height = this.rows;\n this.pre.style.fontFamily = this.fontFamily;\n this.pre.style.fontSize = `${this.fontSize}px`;\n this.pre.style.margin = '0';\n this.pre.style.padding = '0';\n this.pre.style.lineHeight = '1em';\n this.pre.style.position = 'absolute';\n this.pre.style.left = '0';\n this.pre.style.top = '0';\n this.pre.style.zIndex = '9';\n this.pre.style.backgroundAttachment = 'fixed';\n this.pre.style.mixBlendMode = 'difference';\n }\n\n render(scene: THREE.Scene, camera: THREE.Camera) {\n this.renderer.render(scene, camera);\n\n const w = this.canvas.width;\n const h = this.canvas.height;\n this.context.clearRect(0, 0, w, h);\n if (this.context && w && h) {\n this.context.drawImage(this.renderer.domElement, 0, 0, w, h);\n }\n\n this.asciify(this.context, w, h);\n this.hue();\n }\n\n onMouseMove(e: MouseEvent) {\n this.mouse = { x: e.clientX * PX_RATIO, y: e.clientY * PX_RATIO };\n }\n\n get dx() {\n return this.mouse.x - this.center.x;\n }\n\n get dy() {\n return this.mouse.y - this.center.y;\n }\n\n hue() {\n const deg = (Math.atan2(this.dy, this.dx) * 180) / Math.PI;\n this.deg += (deg - this.deg) * 0.075;\n this.domElement.style.filter = `hue-rotate(${this.deg.toFixed(1)}deg)`;\n }\n\n asciify(ctx: CanvasRenderingContext2D, w: number, h: number) {\n if (w && h) {\n const imgData = ctx.getImageData(0, 0, w, h).data;\n let str = '';\n for (let y = 0; y < h; y++) {\n for (let x = 0; x < w; x++) {\n const i = x * 4 + y * 4 * w;\n const [r, g, b, a] = [imgData[i], imgData[i + 1], imgData[i + 2], imgData[i + 3]];\n\n if (a === 0) {\n str += ' ';\n continue;\n }\n\n const gray = (0.3 * r + 0.6 * g + 0.1 * b) / 255;\n let idx = Math.floor((1 - gray) * (this.charset.length - 1));\n if (this.invert) idx = this.charset.length - idx - 1;\n str += this.charset[idx];\n }\n str += '\\n';\n }\n this.pre.innerHTML = str;\n }\n }\n\n dispose() {\n document.removeEventListener('mousemove', this.onMouseMove);\n }\n}\n\ninterface CanvasTxtOptions {\n fontSize?: number;\n fontFamily?: string;\n color?: string;\n}\n\nclass CanvasTxt {\n canvas: HTMLCanvasElement;\n context: CanvasRenderingContext2D;\n txt: string;\n fontSize: number;\n fontFamily: string;\n color: string;\n font: string;\n\n constructor(txt: string, { fontSize = 200, fontFamily = 'Arial', color = '#fdf9f3' }: CanvasTxtOptions = {}) {\n this.canvas = document.createElement('canvas');\n const ctx = this.canvas.getContext('2d');\n if (!ctx) throw new Error('Could not get 2d context');\n this.context = ctx;\n this.txt = txt;\n this.fontSize = fontSize;\n this.fontFamily = fontFamily;\n this.color = color;\n\n this.font = `600 ${this.fontSize}px ${this.fontFamily}`;\n }\n\n resize() {\n this.context.font = this.font;\n const metrics = this.context.measureText(this.txt);\n\n const textWidth = Math.ceil(metrics.width) + 20;\n const textHeight = Math.ceil(metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent) + 20;\n\n this.canvas.width = textWidth;\n this.canvas.height = textHeight;\n }\n\n render() {\n this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.context.fillStyle = this.color;\n this.context.font = this.font;\n\n const metrics = this.context.measureText(this.txt);\n const yPos = 10 + metrics.actualBoundingBoxAscent;\n\n this.context.fillText(this.txt, 10, yPos);\n }\n\n get width() {\n return this.canvas.width;\n }\n\n get height() {\n return this.canvas.height;\n }\n\n get texture() {\n return this.canvas;\n }\n}\n\ninterface CanvAsciiOptions {\n text: string;\n asciiFontSize: number;\n textFontSize: number;\n textColor: string;\n planeBaseHeight: number;\n enableWaves: boolean;\n}\n\nclass CanvAscii {\n textString: string;\n asciiFontSize: number;\n textFontSize: number;\n textColor: string;\n planeBaseHeight: number;\n container: HTMLElement;\n width: number;\n height: number;\n enableWaves: boolean;\n camera: THREE.PerspectiveCamera;\n scene: THREE.Scene;\n mouse: { x: number, y: number };\n textCanvas!: CanvasTxt;\n texture!: THREE.CanvasTexture;\n geometry!: THREE.PlaneGeometry;\n material!: THREE.ShaderMaterial;\n mesh!: THREE.Mesh;\n renderer!: THREE.WebGLRenderer;\n filter!: AsciiFilter;\n center: { x: number, y: number } = { x: 0, y: 0 };\n animationFrameId: number = 0;\n\n constructor(\n { text, asciiFontSize, textFontSize, textColor, planeBaseHeight, enableWaves }: CanvAsciiOptions,\n containerElem: HTMLElement,\n width: number,\n height: number\n ) {\n this.textString = text;\n this.asciiFontSize = asciiFontSize;\n this.textFontSize = textFontSize;\n this.textColor = textColor;\n this.planeBaseHeight = planeBaseHeight;\n this.container = containerElem;\n this.width = width;\n this.height = height;\n this.enableWaves = enableWaves;\n\n this.camera = new THREE.PerspectiveCamera(45, this.width / this.height, 1, 1000);\n this.camera.position.z = 30;\n\n this.scene = new THREE.Scene();\n this.mouse = { x: 0, y: 0 };\n\n this.onMouseMove = this.onMouseMove.bind(this);\n\n this.setMesh();\n this.setRenderer();\n }\n\n setMesh() {\n this.textCanvas = new CanvasTxt(this.textString, {\n fontSize: this.textFontSize,\n fontFamily: 'IBM Plex Mono',\n color: this.textColor\n });\n this.textCanvas.resize();\n this.textCanvas.render();\n\n this.texture = new THREE.CanvasTexture(this.textCanvas.texture);\n this.texture.minFilter = THREE.NearestFilter;\n\n const textAspect = this.textCanvas.width / this.textCanvas.height;\n const baseH = this.planeBaseHeight;\n const planeW = baseH * textAspect;\n const planeH = baseH;\n\n this.geometry = new THREE.PlaneGeometry(planeW, planeH, 36, 36);\n this.material = new THREE.ShaderMaterial({\n vertexShader,\n fragmentShader,\n transparent: true,\n uniforms: {\n uTime: { value: 0 },\n mouse: { value: 1.0 },\n uTexture: { value: this.texture },\n uEnableWaves: { value: this.enableWaves ? 1.0 : 0.0 }\n }\n });\n\n this.mesh = new THREE.Mesh(this.geometry, this.material);\n this.scene.add(this.mesh);\n }\n\n setRenderer() {\n this.renderer = new THREE.WebGLRenderer({ antialias: false, alpha: true });\n this.renderer.setPixelRatio(1);\n this.renderer.setClearColor(0x000000, 0);\n\n this.filter = new AsciiFilter(this.renderer, {\n fontFamily: 'IBM Plex Mono',\n fontSize: this.asciiFontSize,\n invert: true\n });\n\n this.container.appendChild(this.filter.domElement);\n this.setSize(this.width, this.height);\n\n this.container.addEventListener('mousemove', this.onMouseMove);\n this.container.addEventListener('touchmove', this.onMouseMove);\n }\n\n setSize(w: number, h: number) {\n this.width = w;\n this.height = h;\n\n this.camera.aspect = w / h;\n this.camera.updateProjectionMatrix();\n\n this.filter.setSize(w, h);\n\n this.center = { x: w / 2, y: h / 2 };\n }\n\n load() {\n this.animate();\n }\n\n onMouseMove(evt: any) {\n const e = evt.touches ? evt.touches[0] : evt;\n const bounds = this.container.getBoundingClientRect();\n const x = e.clientX - bounds.left;\n const y = e.clientY - bounds.top;\n this.mouse = { x, y };\n }\n\n animate() {\n const animateFrame = () => {\n this.animationFrameId = requestAnimationFrame(animateFrame);\n this.render();\n };\n animateFrame();\n }\n\n render() {\n const time = new Date().getTime() * 0.001;\n\n this.textCanvas.render();\n this.texture.needsUpdate = true;\n\n (this.mesh.material as any).uniforms.uTime.value = Math.sin(time);\n\n this.updateRotation();\n this.filter.render(this.scene, this.camera);\n }\n\n updateRotation() {\n const map = (n: number, start: number, stop: number, start2: number, stop2: number) => {\n return ((n - start) / (stop - start)) * (stop2 - start2) + start2;\n };\n\n const x = map(this.mouse.y, 0, this.height, 0.5, -0.5);\n const y = map(this.mouse.x, 0, this.width, -0.5, 0.5);\n\n this.mesh.rotation.x += (x - this.mesh.rotation.x) * 0.05;\n this.mesh.rotation.y += (y - this.mesh.rotation.y) * 0.05;\n }\n\n clear() {\n this.scene.traverse((obj: THREE.Object3D) => {\n if (obj instanceof THREE.Mesh) {\n if (Array.isArray(obj.material)) {\n obj.material.forEach((m: THREE.Material) => m.dispose());\n } else if (obj.material instanceof THREE.Material) {\n obj.material.dispose();\n }\n obj.geometry.dispose();\n }\n });\n this.scene.clear();\n }\n\n dispose() {\n cancelAnimationFrame(this.animationFrameId);\n this.filter.dispose();\n if (this.filter.domElement.parentNode === this.container) {\n this.container.removeChild(this.filter.domElement);\n }\n this.container.removeEventListener('mousemove', this.onMouseMove);\n this.container.removeEventListener('touchmove', this.onMouseMove);\n this.clear();\n this.renderer.dispose();\n }\n}\n\nexport interface ASCIITextProps {\n text?: string;\n asciiFontSize?: number;\n textFontSize?: number;\n textColor?: string;\n planeBaseHeight?: number;\n enableWaves?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport const ASCIIText: React.FC<ASCIITextProps> = ({\n text = 'David!',\n asciiFontSize = 8,\n textFontSize = 200,\n textColor = '#fdf9f3',\n planeBaseHeight = 8,\n enableWaves = true,\n className = '',\n style = {}\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const asciiRef = useRef<CanvAscii | null>(null);\n\n useEffect(() => {\n if (!containerRef.current) return;\n\n const { width, height } = containerRef.current.getBoundingClientRect();\n\n const initAscii = (w: number, h: number) => {\n if (asciiRef.current) asciiRef.current.dispose();\n asciiRef.current = new CanvAscii(\n { text, asciiFontSize, textFontSize, textColor, planeBaseHeight, enableWaves },\n containerRef.current!,\n w,\n h\n );\n asciiRef.current.load();\n };\n\n if (width === 0 || height === 0) {\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting && entry.boundingClientRect.width > 0 && entry.boundingClientRect.height > 0) {\n initAscii(entry.boundingClientRect.width, entry.boundingClientRect.height);\n observer.disconnect();\n }\n },\n { threshold: 0.1 }\n );\n\n observer.observe(containerRef.current);\n\n return () => {\n observer.disconnect();\n if (asciiRef.current) {\n asciiRef.current.dispose();\n }\n };\n }\n\n initAscii(width, height);\n\n const ro = new ResizeObserver(entries => {\n if (!entries[0] || !asciiRef.current) return;\n const { width: w, height: h } = entries[0].contentRect;\n if (w > 0 && h > 0) {\n asciiRef.current.setSize(w, h);\n }\n });\n ro.observe(containerRef.current);\n\n return () => {\n ro.disconnect();\n if (asciiRef.current) {\n asciiRef.current.dispose();\n }\n };\n }, [text, asciiFontSize, textFontSize, textColor, planeBaseHeight, enableWaves]);\n\n return (\n <div\n ref={containerRef}\n className={`ascii-text-container ${className}`}\n style={{\n position: 'absolute',\n width: '100%',\n height: '100%',\n ...style\n }}\n >\n <style>{`\n @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@500&display=swap');\n\n .ascii-text-container canvas {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n image-rendering: optimizeSpeed;\n image-rendering: -moz-crisp-edges;\n image-rendering: -o-crisp-edges;\n image-rendering: -webkit-optimize-contrast;\n image-rendering: optimize-contrast;\n image-rendering: crisp-edges;\n image-rendering: pixelated;\n }\n\n .ascii-text-container pre {\n margin: 0;\n user-select: none;\n padding: 0;\n line-height: 1em;\n text-align: left;\n position: absolute;\n left: 0;\n top: 0;\n background-image: radial-gradient(circle, #ff6188 0%, #fc9867 50%, #ffd866 100%);\n background-attachment: fixed;\n -webkit-text-fill-color: transparent;\n -webkit-background-clip: text;\n background-clip: text;\n z-index: 9;\n mix-blend-mode: difference;\n }\n `}</style>\n </div>\n );\n};\n\nexport default ASCIIText;\n","const Audio = ({\n className = undefined, // String\n ...props\n}) => (\n <svg\n width={55}\n height={80}\n fill=\"#FFF\"\n viewBox=\"0 0 55 80\"\n className={`svg-loaders-svg${className ? ` ${className}` : \"\"}`}\n {...props}\n >\n <g transform=\"matrix(1 0 0 -1 0 80)\">\n <rect width={10} height={20} rx={3}>\n <animate\n attributeName=\"height\"\n begin=\"0s\"\n dur=\"4.3s\"\n values=\"20;45;57;80;64;32;66;45;64;23;66;13;64;56;34;34;2;23;76;79;20\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\"\n />\n </rect>\n <rect x={15} width={10} height={80} rx={3}>\n <animate\n attributeName=\"height\"\n begin=\"0s\"\n dur=\"2s\"\n values=\"80;55;33;5;75;23;73;33;12;14;60;80\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\"\n />\n </rect>\n <rect x={30} width={10} height={50} rx={3}>\n <animate\n attributeName=\"height\"\n begin=\"0s\"\n dur=\"1.4s\"\n values=\"50;34;78;23;56;23;34;76;80;54;21;50\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\"\n />\n </rect>\n <rect x={45} width={10} height={30} rx={3}>\n <animate\n attributeName=\"height\"\n begin=\"0s\"\n dur=\"2s\"\n values=\"30;45;13;80;56;72;45;76;34;23;67;30\"\n calcMode=\"linear\"\n repeatCount=\"indefinite\"\n />\n </rect>\n </g>\n </svg>\n);\n\nexport { Audio };\n"],"names":["createContext","useState","useEffect","jsx","useContext","ResponsiveContainer","jsxs","LineChart","CartesianGrid","XAxis","YAxis","Tooltip","Line","RechartsBarChart","Legend","Bar","RechartsAreaChart","Area","Fragment","RechartsPieChart","Pie","Cell","cx","useRef","useInView","motion","variantClasses","useCallback","useMemo","variantStyles","animationVariants","AnimatePresence","sanitizeId","forwardRef","useId","sizeStyles","borderRadiusMap","defaultColors","CheckIcon","CloseIcon","InputState","useMotionValue","useMotionTemplate","useReactTable","getCoreRowModel","getPaginationRowModel","getFilteredRowModel","flexRender","basePanel","Spinner","positionStyles","arrowStyles","motionVariants","Skeleton","strength","sizeConfig","ErrorIcon","r","THREE"],"mappings":"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","x_google_ignoreList":[2,3]}
|