@aster-ui/prefixed 0.12.50
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 +15 -0
- package/README.md +40 -0
- package/dist/chart.d.ts +2 -0
- package/dist/chart.js +5 -0
- package/dist/chart.js.map +1 -0
- package/dist/components/Affix.d.ts +14 -0
- package/dist/components/Affix.js +57 -0
- package/dist/components/Affix.js.map +1 -0
- package/dist/components/Alert.d.ts +10 -0
- package/dist/components/Alert.js +31 -0
- package/dist/components/Alert.js.map +1 -0
- package/dist/components/Anchor.d.ts +55 -0
- package/dist/components/Anchor.js +116 -0
- package/dist/components/Anchor.js.map +1 -0
- package/dist/components/Autocomplete.d.ts +38 -0
- package/dist/components/Autocomplete.js +186 -0
- package/dist/components/Autocomplete.js.map +1 -0
- package/dist/components/Avatar.d.ts +28 -0
- package/dist/components/Avatar.js +65 -0
- package/dist/components/Avatar.js.map +1 -0
- package/dist/components/Badge.d.ts +39 -0
- package/dist/components/Badge.js +220 -0
- package/dist/components/Badge.js.map +1 -0
- package/dist/components/Breadcrumb.d.ts +32 -0
- package/dist/components/Breadcrumb.js +39 -0
- package/dist/components/Breadcrumb.js.map +1 -0
- package/dist/components/Browser.d.ts +7 -0
- package/dist/components/Browser.js +15 -0
- package/dist/components/Browser.js.map +1 -0
- package/dist/components/Button.d.ts +38 -0
- package/dist/components/Button.js +114 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/Card.d.ts +57 -0
- package/dist/components/Card.js +202 -0
- package/dist/components/Card.js.map +1 -0
- package/dist/components/Carousel.d.ts +55 -0
- package/dist/components/Carousel.js +205 -0
- package/dist/components/Carousel.js.map +1 -0
- package/dist/components/Cascader.d.ts +71 -0
- package/dist/components/Cascader.js +416 -0
- package/dist/components/Cascader.js.map +1 -0
- package/dist/components/Chart.d.ts +19 -0
- package/dist/components/Chart.js +153 -0
- package/dist/components/Chart.js.map +1 -0
- package/dist/components/Chat.d.ts +11 -0
- package/dist/components/Chat.js +33 -0
- package/dist/components/Chat.js.map +1 -0
- package/dist/components/Checkbox.d.ts +42 -0
- package/dist/components/Checkbox.js +156 -0
- package/dist/components/Checkbox.js.map +1 -0
- package/dist/components/Code.d.ts +16 -0
- package/dist/components/Code.js +60 -0
- package/dist/components/Code.js.map +1 -0
- package/dist/components/Collapse.d.ts +45 -0
- package/dist/components/Collapse.js +115 -0
- package/dist/components/Collapse.js.map +1 -0
- package/dist/components/ColorPicker.d.ts +16 -0
- package/dist/components/ColorPicker.js +368 -0
- package/dist/components/ColorPicker.js.map +1 -0
- package/dist/components/Command.d.ts +65 -0
- package/dist/components/Command.js +422 -0
- package/dist/components/Command.js.map +1 -0
- package/dist/components/ConfigProvider.d.ts +59 -0
- package/dist/components/ConfigProvider.js +46 -0
- package/dist/components/ConfigProvider.js.map +1 -0
- package/dist/components/Container.d.ts +12 -0
- package/dist/components/Container.js +28 -0
- package/dist/components/Container.js.map +1 -0
- package/dist/components/ContextMenu.d.ts +59 -0
- package/dist/components/ContextMenu.js +206 -0
- package/dist/components/ContextMenu.js.map +1 -0
- package/dist/components/CopyButton.d.ts +37 -0
- package/dist/components/CopyButton.js +123 -0
- package/dist/components/CopyButton.js.map +1 -0
- package/dist/components/Countdown.d.ts +27 -0
- package/dist/components/Countdown.js +118 -0
- package/dist/components/Countdown.js.map +1 -0
- package/dist/components/DatePicker.d.ts +11 -0
- package/dist/components/DatePicker.js +188 -0
- package/dist/components/DatePicker.js.map +1 -0
- package/dist/components/Descriptions.d.ts +84 -0
- package/dist/components/Descriptions.js +234 -0
- package/dist/components/Descriptions.js.map +1 -0
- package/dist/components/Diff.d.ts +12 -0
- package/dist/components/Diff.js +22 -0
- package/dist/components/Diff.js.map +1 -0
- package/dist/components/Divider.d.ts +8 -0
- package/dist/components/Divider.js +36 -0
- package/dist/components/Divider.js.map +1 -0
- package/dist/components/Dock.d.ts +38 -0
- package/dist/components/Dock.js +47 -0
- package/dist/components/Dock.js.map +1 -0
- package/dist/components/Drawer.d.ts +81 -0
- package/dist/components/Drawer.js +246 -0
- package/dist/components/Drawer.js.map +1 -0
- package/dist/components/Dropdown.d.ts +104 -0
- package/dist/components/Dropdown.js +407 -0
- package/dist/components/Dropdown.js.map +1 -0
- package/dist/components/Empty.d.ts +17 -0
- package/dist/components/Empty.js +145 -0
- package/dist/components/Empty.js.map +1 -0
- package/dist/components/Fieldset.d.ts +21 -0
- package/dist/components/Fieldset.js +21 -0
- package/dist/components/Fieldset.js.map +1 -0
- package/dist/components/FileInput.d.ts +9 -0
- package/dist/components/FileInput.js +38 -0
- package/dist/components/FileInput.js.map +1 -0
- package/dist/components/Filter.d.ts +27 -0
- package/dist/components/Filter.js +57 -0
- package/dist/components/Filter.js.map +1 -0
- package/dist/components/Flex.d.ts +14 -0
- package/dist/components/Flex.js +66 -0
- package/dist/components/Flex.js.map +1 -0
- package/dist/components/FloatButton.d.ts +73 -0
- package/dist/components/FloatButton.js +187 -0
- package/dist/components/FloatButton.js.map +1 -0
- package/dist/components/Footer.d.ts +16 -0
- package/dist/components/Footer.js +22 -0
- package/dist/components/Footer.js.map +1 -0
- package/dist/components/Form.d.ts +107 -0
- package/dist/components/Form.js +277 -0
- package/dist/components/Form.js.map +1 -0
- package/dist/components/Grid.d.ts +26 -0
- package/dist/components/Grid.js +1090 -0
- package/dist/components/Grid.js.map +1 -0
- package/dist/components/Hero.d.ts +11 -0
- package/dist/components/Hero.js +21 -0
- package/dist/components/Hero.js.map +1 -0
- package/dist/components/HoverGallery.d.ts +10 -0
- package/dist/components/HoverGallery.js +20 -0
- package/dist/components/HoverGallery.js.map +1 -0
- package/dist/components/Image.d.ts +26 -0
- package/dist/components/Image.js +172 -0
- package/dist/components/Image.js.map +1 -0
- package/dist/components/Input.d.ts +36 -0
- package/dist/components/Input.js +263 -0
- package/dist/components/Input.js.map +1 -0
- package/dist/components/InputNumber.d.ts +19 -0
- package/dist/components/InputNumber.js +158 -0
- package/dist/components/InputNumber.js.map +1 -0
- package/dist/components/Join.d.ts +6 -0
- package/dist/components/Join.js +19 -0
- package/dist/components/Join.js.map +1 -0
- package/dist/components/Kbd.d.ts +9 -0
- package/dist/components/Kbd.js +20 -0
- package/dist/components/Kbd.js.map +1 -0
- package/dist/components/Layout.d.ts +67 -0
- package/dist/components/Layout.js +188 -0
- package/dist/components/Layout.js.map +1 -0
- package/dist/components/List.d.ts +79 -0
- package/dist/components/List.js +128 -0
- package/dist/components/List.js.map +1 -0
- package/dist/components/Loading.d.ts +9 -0
- package/dist/components/Loading.js +40 -0
- package/dist/components/Loading.js.map +1 -0
- package/dist/components/Mask.d.ts +14 -0
- package/dist/components/Mask.js +37 -0
- package/dist/components/Mask.js.map +1 -0
- package/dist/components/Masonry.d.ts +15 -0
- package/dist/components/Masonry.js +84 -0
- package/dist/components/Masonry.js.map +1 -0
- package/dist/components/Mention.d.ts +30 -0
- package/dist/components/Mention.js +179 -0
- package/dist/components/Mention.js.map +1 -0
- package/dist/components/Menu.d.ts +72 -0
- package/dist/components/Menu.js +163 -0
- package/dist/components/Menu.js.map +1 -0
- package/dist/components/Message.d.ts +20 -0
- package/dist/components/Message.js +57 -0
- package/dist/components/Message.js.map +1 -0
- package/dist/components/Modal.d.ts +57 -0
- package/dist/components/Modal.js +338 -0
- package/dist/components/Modal.js.map +1 -0
- package/dist/components/MonthCalendar.d.ts +31 -0
- package/dist/components/MonthCalendar.js +205 -0
- package/dist/components/MonthCalendar.js.map +1 -0
- package/dist/components/Navbar.d.ts +22 -0
- package/dist/components/Navbar.js +50 -0
- package/dist/components/Navbar.js.map +1 -0
- package/dist/components/Notification.d.ts +50 -0
- package/dist/components/Notification.js +150 -0
- package/dist/components/Notification.js.map +1 -0
- package/dist/components/OTPInput.d.ts +32 -0
- package/dist/components/OTPInput.js +114 -0
- package/dist/components/OTPInput.js.map +1 -0
- package/dist/components/Pagination.d.ts +18 -0
- package/dist/components/Pagination.js +175 -0
- package/dist/components/Pagination.js.map +1 -0
- package/dist/components/Phone.d.ts +8 -0
- package/dist/components/Phone.js +17 -0
- package/dist/components/Phone.js.map +1 -0
- package/dist/components/Popconfirm.d.ts +17 -0
- package/dist/components/Popconfirm.js +125 -0
- package/dist/components/Popconfirm.js.map +1 -0
- package/dist/components/Popover.d.ts +15 -0
- package/dist/components/Popover.js +89 -0
- package/dist/components/Popover.js.map +1 -0
- package/dist/components/Progress.d.ts +5 -0
- package/dist/components/Progress.js +23 -0
- package/dist/components/Progress.js.map +1 -0
- package/dist/components/QRCode.d.ts +19 -0
- package/dist/components/QRCode.js +75 -0
- package/dist/components/QRCode.js.map +1 -0
- package/dist/components/RadialProgress.d.ts +10 -0
- package/dist/components/RadialProgress.js +48 -0
- package/dist/components/RadialProgress.js.map +1 -0
- package/dist/components/Radio.d.ts +26 -0
- package/dist/components/Radio.js +61 -0
- package/dist/components/Radio.js.map +1 -0
- package/dist/components/Range.d.ts +16 -0
- package/dist/components/Range.js +57 -0
- package/dist/components/Range.js.map +1 -0
- package/dist/components/Rating.d.ts +30 -0
- package/dist/components/Rating.js +127 -0
- package/dist/components/Rating.js.map +1 -0
- package/dist/components/Responsive.d.ts +18 -0
- package/dist/components/Responsive.js +17 -0
- package/dist/components/Responsive.js.map +1 -0
- package/dist/components/ResponsiveDrawer.d.ts +34 -0
- package/dist/components/ResponsiveDrawer.js +75 -0
- package/dist/components/ResponsiveDrawer.js.map +1 -0
- package/dist/components/Result.d.ts +12 -0
- package/dist/components/Result.js +110 -0
- package/dist/components/Result.js.map +1 -0
- package/dist/components/RichTextEditor.d.ts +32 -0
- package/dist/components/RichTextEditor.js +335 -0
- package/dist/components/RichTextEditor.js.map +1 -0
- package/dist/components/Segmented.d.ts +37 -0
- package/dist/components/Segmented.js +73 -0
- package/dist/components/Segmented.js.map +1 -0
- package/dist/components/Select.d.ts +18 -0
- package/dist/components/Select.js +78 -0
- package/dist/components/Select.js.map +1 -0
- package/dist/components/Skeleton.d.ts +9 -0
- package/dist/components/Skeleton.js +24 -0
- package/dist/components/Skeleton.js.map +1 -0
- package/dist/components/Space.d.ts +11 -0
- package/dist/components/Space.js +61 -0
- package/dist/components/Space.js.map +1 -0
- package/dist/components/Splitter.d.ts +29 -0
- package/dist/components/Splitter.js +257 -0
- package/dist/components/Splitter.js.map +1 -0
- package/dist/components/Stat.d.ts +18 -0
- package/dist/components/Stat.js +26 -0
- package/dist/components/Stat.js.map +1 -0
- package/dist/components/Status.d.ts +18 -0
- package/dist/components/Status.js +34 -0
- package/dist/components/Status.js.map +1 -0
- package/dist/components/Steps.d.ts +52 -0
- package/dist/components/Steps.js +97 -0
- package/dist/components/Steps.js.map +1 -0
- package/dist/components/Table.d.ts +105 -0
- package/dist/components/Table.js +637 -0
- package/dist/components/Table.js.map +1 -0
- package/dist/components/Tabs.d.ts +45 -0
- package/dist/components/Tabs.js +86 -0
- package/dist/components/Tabs.js.map +1 -0
- package/dist/components/Tag.d.ts +34 -0
- package/dist/components/Tag.js +210 -0
- package/dist/components/Tag.js.map +1 -0
- package/dist/components/TextRotate.d.ts +13 -0
- package/dist/components/TextRotate.js +26 -0
- package/dist/components/TextRotate.js.map +1 -0
- package/dist/components/Textarea.d.ts +9 -0
- package/dist/components/Textarea.js +44 -0
- package/dist/components/Textarea.js.map +1 -0
- package/dist/components/ThemeController.d.ts +28 -0
- package/dist/components/ThemeController.js +162 -0
- package/dist/components/ThemeController.js.map +1 -0
- package/dist/components/TimePicker.d.ts +20 -0
- package/dist/components/TimePicker.js +304 -0
- package/dist/components/TimePicker.js.map +1 -0
- package/dist/components/Timeline.d.ts +79 -0
- package/dist/components/Timeline.js +151 -0
- package/dist/components/Timeline.js.map +1 -0
- package/dist/components/Toggle.d.ts +7 -0
- package/dist/components/Toggle.js +39 -0
- package/dist/components/Toggle.js.map +1 -0
- package/dist/components/Tooltip.d.ts +9 -0
- package/dist/components/Tooltip.js +37 -0
- package/dist/components/Tooltip.js.map +1 -0
- package/dist/components/Tour.d.ts +123 -0
- package/dist/components/Tour.js +400 -0
- package/dist/components/Tour.js.map +1 -0
- package/dist/components/Transfer.d.ts +22 -0
- package/dist/components/Transfer.js +214 -0
- package/dist/components/Transfer.js.map +1 -0
- package/dist/components/Tree.d.ts +118 -0
- package/dist/components/Tree.js +444 -0
- package/dist/components/Tree.js.map +1 -0
- package/dist/components/TreeSelect.d.ts +84 -0
- package/dist/components/TreeSelect.js +755 -0
- package/dist/components/TreeSelect.js.map +1 -0
- package/dist/components/Typography.d.ts +53 -0
- package/dist/components/Typography.js +182 -0
- package/dist/components/Typography.js.map +1 -0
- package/dist/components/Upload.d.ts +38 -0
- package/dist/components/Upload.js +261 -0
- package/dist/components/Upload.js.map +1 -0
- package/dist/components/VirtualList.d.ts +29 -0
- package/dist/components/VirtualList.js +69 -0
- package/dist/components/VirtualList.js.map +1 -0
- package/dist/components/Watermark.d.ts +40 -0
- package/dist/components/Watermark.js +129 -0
- package/dist/components/Watermark.js.map +1 -0
- package/dist/components/WeekCalendar.d.ts +35 -0
- package/dist/components/WeekCalendar.js +204 -0
- package/dist/components/WeekCalendar.js.map +1 -0
- package/dist/components/Window.d.ts +7 -0
- package/dist/components/Window.js +10 -0
- package/dist/components/Window.js.map +1 -0
- package/dist/contexts/IconSizeContext.d.ts +2 -0
- package/dist/contexts/IconSizeContext.js +6 -0
- package/dist/contexts/IconSizeContext.js.map +1 -0
- package/dist/editor.d.ts +1 -0
- package/dist/editor.js +5 -0
- package/dist/editor.js.map +1 -0
- package/dist/hooks/useBreakpoint.d.ts +10 -0
- package/dist/hooks/useBreakpoint.js +36 -0
- package/dist/hooks/useBreakpoint.js.map +1 -0
- package/dist/hooks/useClickOutside.d.ts +17 -0
- package/dist/hooks/useClickOutside.js +18 -0
- package/dist/hooks/useClickOutside.js.map +1 -0
- package/dist/hooks/useClipboard.d.ts +20 -0
- package/dist/hooks/useClipboard.js +17 -0
- package/dist/hooks/useClipboard.js.map +1 -0
- package/dist/hooks/useDebounce.d.ts +18 -0
- package/dist/hooks/useDebounce.js +16 -0
- package/dist/hooks/useDebounce.js.map +1 -0
- package/dist/hooks/useDisclosure.d.ts +20 -0
- package/dist/hooks/useDisclosure.js +9 -0
- package/dist/hooks/useDisclosure.js.map +1 -0
- package/dist/hooks/useHover.d.ts +18 -0
- package/dist/hooks/useHover.js +16 -0
- package/dist/hooks/useHover.js.map +1 -0
- package/dist/hooks/useKeyPress.d.ts +40 -0
- package/dist/hooks/useKeyPress.js +34 -0
- package/dist/hooks/useKeyPress.js.map +1 -0
- package/dist/hooks/useLocalStorage.d.ts +12 -0
- package/dist/hooks/useLocalStorage.js +49 -0
- package/dist/hooks/useLocalStorage.js.map +1 -0
- package/dist/hooks/usePrevious.d.ts +15 -0
- package/dist/hooks/usePrevious.js +11 -0
- package/dist/hooks/usePrevious.js.map +1 -0
- package/dist/hooks/useWindowSize.d.ts +21 -0
- package/dist/hooks/useWindowSize.js +21 -0
- package/dist/hooks/useWindowSize.js.map +1 -0
- package/dist/index.d.ts +216 -0
- package/dist/index.js +256 -0
- package/dist/index.js.map +1 -0
- package/dist/locale/de-DE.d.ts +3 -0
- package/dist/locale/de-DE.js +100 -0
- package/dist/locale/de-DE.js.map +1 -0
- package/dist/locale/en-CA.d.ts +3 -0
- package/dist/locale/en-CA.js +11 -0
- package/dist/locale/en-CA.js.map +1 -0
- package/dist/locale/en-GB.d.ts +3 -0
- package/dist/locale/en-GB.js +11 -0
- package/dist/locale/en-GB.js.map +1 -0
- package/dist/locale/en-US.d.ts +3 -0
- package/dist/locale/en-US.js +100 -0
- package/dist/locale/en-US.js.map +1 -0
- package/dist/locale/es-ES.d.ts +3 -0
- package/dist/locale/es-ES.js +100 -0
- package/dist/locale/es-ES.js.map +1 -0
- package/dist/locale/fr-FR.d.ts +3 -0
- package/dist/locale/fr-FR.js +100 -0
- package/dist/locale/fr-FR.js.map +1 -0
- package/dist/locale/index.d.ts +107 -0
- package/dist/locale/ja-JP.d.ts +3 -0
- package/dist/locale/ja-JP.js +100 -0
- package/dist/locale/ja-JP.js.map +1 -0
- package/dist/locale/ko-KR.d.ts +3 -0
- package/dist/locale/ko-KR.js +100 -0
- package/dist/locale/ko-KR.js.map +1 -0
- package/dist/locale/pt-BR.d.ts +3 -0
- package/dist/locale/pt-BR.js +100 -0
- package/dist/locale/pt-BR.js.map +1 -0
- package/dist/locale/zh-CN.d.ts +3 -0
- package/dist/locale/zh-CN.js +100 -0
- package/dist/locale/zh-CN.js.map +1 -0
- package/dist/qrcode.d.ts +2 -0
- package/dist/qrcode.js +5 -0
- package/dist/qrcode.js.map +1 -0
- package/dist/virtuallist.d.ts +2 -0
- package/dist/virtuallist.js +5 -0
- package/dist/virtuallist.js.map +1 -0
- package/package.json +130 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextRotate.js","sources":["../../src/components/TextRotate.tsx"],"sourcesContent":["import React from 'react'\n\n// DaisyUI classes\nconst dTextRotate = 'd-text-rotate'\n\nexport type TextRotateDuration = 6000 | 9000 | 12000 | 15000 | 18000\n\nconst durationClasses: Record<TextRotateDuration, string> = {\n 6000: 'duration-6000',\n 9000: 'duration-9000',\n 12000: 'duration-12000',\n 15000: 'duration-15000',\n 18000: 'duration-18000',\n}\n\nexport interface TextRotateProps {\n /** Text items to rotate through (max 6) */\n items: React.ReactNode[]\n /** Animation duration in ms (default 10000) */\n duration?: TextRotateDuration\n /** Center text horizontally */\n centered?: boolean\n /** Additional CSS classes */\n className?: string\n}\n\nexport const TextRotate: React.FC<TextRotateProps> = ({\n items,\n duration,\n centered = false,\n className = '',\n}) => {\n const durationClass = duration ? durationClasses[duration] : ''\n\n return (\n <span\n className={`${dTextRotate} ${durationClass} ${centered ? 'justify-items-center' : ''} ${className}`.trim()}\n >\n <span>\n {items.slice(0, 6).map((item, index) => (\n <span key={index}>{item}</span>\n ))}\n </span>\n </span>\n )\n}\n"],"names":["dTextRotate","durationClasses","TextRotate","items","duration","centered","className","durationClass","jsx","item","index"],"mappings":";AAGA,MAAMA,IAAc,iBAIdC,IAAsD;AAAA,EAC1D,KAAM;AAAA,EACN,KAAM;AAAA,EACN,MAAO;AAAA,EACP,MAAO;AAAA,EACP,MAAO;AACT,GAaaC,IAAwC,CAAC;AAAA,EACpD,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AACd,MAAM;AACJ,QAAMC,IAAgBH,IAAWH,EAAgBG,CAAQ,IAAI;AAE7D,SACE,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,GAAGR,CAAW,IAAIO,CAAa,IAAIF,IAAW,yBAAyB,EAAE,IAAIC,CAAS,GAAG,KAAA;AAAA,MAEpG,4BAAC,QAAA,EACE,UAAAH,EAAM,MAAM,GAAG,CAAC,EAAE,IAAI,CAACM,GAAMC,MAC5B,gBAAAF,EAAC,QAAA,EAAkB,UAAAC,EAAA,GAARC,CAAa,CACzB,EAAA,CACH;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {
|
|
3
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
4
|
+
color?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';
|
|
5
|
+
ghost?: boolean;
|
|
6
|
+
bordered?: boolean;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { jsx as m } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as T } from "react";
|
|
3
|
+
import { useConfig as f } from "./ConfigProvider.js";
|
|
4
|
+
const u = "d-textarea", g = "d-textarea-bordered", p = "d-textarea-ghost", y = "d-textarea-xs", S = "d-textarea-sm", w = "d-textarea-md", C = "d-textarea-lg", z = "d-textarea-xl", N = "d-textarea-neutral", h = "d-textarea-primary", j = "d-textarea-secondary", B = "d-textarea-accent", X = "d-textarea-info", b = "d-textarea-success", v = "d-textarea-warning", A = "d-textarea-error", E = T(
|
|
5
|
+
({
|
|
6
|
+
size: t,
|
|
7
|
+
color: e,
|
|
8
|
+
ghost: r = !1,
|
|
9
|
+
bordered: s = !0,
|
|
10
|
+
className: o = "",
|
|
11
|
+
...d
|
|
12
|
+
}, n) => {
|
|
13
|
+
const { componentSize: x } = f(), a = t ?? x ?? "md", c = {
|
|
14
|
+
xs: y,
|
|
15
|
+
sm: S,
|
|
16
|
+
md: w,
|
|
17
|
+
lg: C,
|
|
18
|
+
xl: z
|
|
19
|
+
}, i = {
|
|
20
|
+
neutral: N,
|
|
21
|
+
primary: h,
|
|
22
|
+
secondary: j,
|
|
23
|
+
accent: B,
|
|
24
|
+
info: X,
|
|
25
|
+
success: b,
|
|
26
|
+
warning: v,
|
|
27
|
+
error: A
|
|
28
|
+
}, l = [
|
|
29
|
+
u,
|
|
30
|
+
"w-full",
|
|
31
|
+
s && g,
|
|
32
|
+
r && p,
|
|
33
|
+
a && c[a],
|
|
34
|
+
e && i[e],
|
|
35
|
+
o
|
|
36
|
+
].filter(Boolean).join(" ");
|
|
37
|
+
return /* @__PURE__ */ m("textarea", { ref: n, className: l, ...d });
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
E.displayName = "Textarea";
|
|
41
|
+
export {
|
|
42
|
+
E as Textarea
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=Textarea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Textarea.js","sources":["../../src/components/Textarea.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\nimport { useConfig } from './ConfigProvider'\n\n// DaisyUI classes\nconst dTextarea = 'd-textarea'\nconst dTextareaBordered = 'd-textarea-bordered'\nconst dTextareaGhost = 'd-textarea-ghost'\nconst dTextareaXs = 'd-textarea-xs'\nconst dTextareaSm = 'd-textarea-sm'\nconst dTextareaMd = 'd-textarea-md'\nconst dTextareaLg = 'd-textarea-lg'\nconst dTextareaXl = 'd-textarea-xl'\nconst dTextareaNeutral = 'd-textarea-neutral'\nconst dTextareaPrimary = 'd-textarea-primary'\nconst dTextareaSecondary = 'd-textarea-secondary'\nconst dTextareaAccent = 'd-textarea-accent'\nconst dTextareaInfo = 'd-textarea-info'\nconst dTextareaSuccess = 'd-textarea-success'\nconst dTextareaWarning = 'd-textarea-warning'\nconst dTextareaError = 'd-textarea-error'\n\nexport interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n color?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\n ghost?: boolean\n bordered?: boolean\n className?: string\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n {\n size,\n color,\n ghost = false,\n bordered = true,\n className = '',\n ...props\n },\n ref\n ) => {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n\n const sizeClasses = {\n xs: dTextareaXs,\n sm: dTextareaSm,\n md: dTextareaMd,\n lg: dTextareaLg,\n xl: dTextareaXl,\n }\n\n const colorClasses = {\n neutral: dTextareaNeutral,\n primary: dTextareaPrimary,\n secondary: dTextareaSecondary,\n accent: dTextareaAccent,\n info: dTextareaInfo,\n success: dTextareaSuccess,\n warning: dTextareaWarning,\n error: dTextareaError,\n }\n\n const textareaClasses = [\n dTextarea,\n 'w-full',\n bordered && dTextareaBordered,\n ghost && dTextareaGhost,\n effectiveSize && sizeClasses[effectiveSize],\n color && colorClasses[color],\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return <textarea ref={ref} className={textareaClasses} {...props} />\n }\n)\n\nTextarea.displayName = 'Textarea'\n"],"names":["dTextarea","dTextareaBordered","dTextareaGhost","dTextareaXs","dTextareaSm","dTextareaMd","dTextareaLg","dTextareaXl","dTextareaNeutral","dTextareaPrimary","dTextareaSecondary","dTextareaAccent","dTextareaInfo","dTextareaSuccess","dTextareaWarning","dTextareaError","Textarea","forwardRef","size","color","ghost","bordered","className","props","ref","componentSize","useConfig","effectiveSize","sizeClasses","colorClasses","textareaClasses"],"mappings":";;;AAIA,MAAMA,IAAY,cACZC,IAAoB,uBACpBC,IAAiB,oBACjBC,IAAc,iBACdC,IAAc,iBACdC,IAAc,iBACdC,IAAc,iBACdC,IAAc,iBACdC,IAAmB,sBACnBC,IAAmB,sBACnBC,IAAqB,wBACrBC,IAAkB,qBAClBC,IAAgB,mBAChBC,IAAmB,sBACnBC,IAAmB,sBACnBC,IAAiB,oBAUVC,IAAWC;AAAA,EACtB,CACE;AAAA,IACE,MAAAC;AAAA,IACA,OAAAC;AAAA,IACA,OAAAC,IAAQ;AAAA,IACR,UAAAC,IAAW;AAAA,IACX,WAAAC,IAAY;AAAA,IACZ,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAM,EAAE,eAAAC,EAAA,IAAkBC,EAAA,GACpBC,IAAgBT,KAAQO,KAAiB,MAEzCG,IAAc;AAAA,MAClB,IAAIzB;AAAA,MACJ,IAAIC;AAAA,MACJ,IAAIC;AAAA,MACJ,IAAIC;AAAA,MACJ,IAAIC;AAAA,IAAA,GAGAsB,IAAe;AAAA,MACnB,SAASrB;AAAA,MACT,SAASC;AAAA,MACT,WAAWC;AAAA,MACX,QAAQC;AAAA,MACR,MAAMC;AAAA,MACN,SAASC;AAAA,MACT,SAASC;AAAA,MACT,OAAOC;AAAA,IAAA,GAGHe,IAAkB;AAAA,MACtB9B;AAAA,MACA;AAAA,MACAqB,KAAYpB;AAAA,MACZmB,KAASlB;AAAA,MACTyB,KAAiBC,EAAYD,CAAa;AAAA,MAC1CR,KAASU,EAAaV,CAAK;AAAA,MAC3BG;AAAA,IAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,6BAAQ,YAAA,EAAS,KAAAE,GAAU,WAAWM,GAAkB,GAAGP,GAAO;AAAA,EACpE;AACF;AAEAP,EAAS,cAAc;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface ThemeControllerSwapProps {
|
|
2
|
+
lightTheme?: string;
|
|
3
|
+
darkTheme?: string;
|
|
4
|
+
onChange?: (theme: string) => void;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ThemeControllerDropdownProps {
|
|
8
|
+
themes: string[];
|
|
9
|
+
defaultTheme?: string;
|
|
10
|
+
onChange?: (theme: string) => void;
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ThemeControllerToggleProps {
|
|
14
|
+
lightTheme?: string;
|
|
15
|
+
darkTheme?: string;
|
|
16
|
+
onChange?: (theme: string) => void;
|
|
17
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
18
|
+
className?: string;
|
|
19
|
+
}
|
|
20
|
+
declare function ThemeControllerSwap({ lightTheme, darkTheme, onChange, className, }: ThemeControllerSwapProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
declare function ThemeControllerDropdown({ themes, defaultTheme, onChange, className, }: ThemeControllerDropdownProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
declare function ThemeControllerToggle({ lightTheme, darkTheme, onChange, size, className, }: ThemeControllerToggleProps): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export declare const ThemeController: {
|
|
24
|
+
Swap: typeof ThemeControllerSwap;
|
|
25
|
+
Dropdown: typeof ThemeControllerDropdown;
|
|
26
|
+
Toggle: typeof ThemeControllerToggle;
|
|
27
|
+
};
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { jsx as o, jsxs as m } from "react/jsx-runtime";
|
|
2
|
+
import { useState as h, useEffect as w, useId as x } from "react";
|
|
3
|
+
import { useConfig as A } from "./ConfigProvider.js";
|
|
4
|
+
const $ = "d-swap", k = "d-swap-rotate", C = "d-swap-off", M = "d-swap-on", S = "d-dropdown", T = "d-dropdown-end", Z = "d-dropdown-content", f = "d-btn", N = "d-btn-sm", D = "d-btn-block", B = "d-btn-ghost", E = "d-toggle", y = "d-toggle-xs", O = "d-toggle-sm", z = "d-toggle-md", I = "d-toggle-lg", j = "d-toggle-xl";
|
|
5
|
+
function a() {
|
|
6
|
+
return document.documentElement.getAttribute("data-theme");
|
|
7
|
+
}
|
|
8
|
+
function p(t) {
|
|
9
|
+
document.documentElement.setAttribute("data-theme", t);
|
|
10
|
+
}
|
|
11
|
+
function F({
|
|
12
|
+
lightTheme: t = "light",
|
|
13
|
+
darkTheme: n = "dark",
|
|
14
|
+
onChange: d,
|
|
15
|
+
className: l = ""
|
|
16
|
+
}) {
|
|
17
|
+
const [i, u] = h(() => a() === n);
|
|
18
|
+
w(() => {
|
|
19
|
+
const c = new MutationObserver(() => {
|
|
20
|
+
const e = a();
|
|
21
|
+
u(e === n);
|
|
22
|
+
});
|
|
23
|
+
return c.observe(document.documentElement, { attributes: !0, attributeFilter: ["data-theme"] }), () => c.disconnect();
|
|
24
|
+
}, [n]);
|
|
25
|
+
const s = (c) => {
|
|
26
|
+
const r = c.target.checked ? n : t;
|
|
27
|
+
p(r), d?.(r);
|
|
28
|
+
};
|
|
29
|
+
return /* @__PURE__ */ m("label", { className: `${$} ${k} ${l}`, children: [
|
|
30
|
+
/* @__PURE__ */ o(
|
|
31
|
+
"input",
|
|
32
|
+
{
|
|
33
|
+
type: "checkbox",
|
|
34
|
+
checked: i,
|
|
35
|
+
onChange: s
|
|
36
|
+
}
|
|
37
|
+
),
|
|
38
|
+
/* @__PURE__ */ o(
|
|
39
|
+
"svg",
|
|
40
|
+
{
|
|
41
|
+
className: `${C} h-8 w-8 fill-current`,
|
|
42
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
43
|
+
viewBox: "0 0 24 24",
|
|
44
|
+
children: /* @__PURE__ */ o("path", { d: "M5.64,17l-.71.71a1,1,0,0,0,0,1.41,1,1,0,0,0,1.41,0l.71-.71A1,1,0,0,0,5.64,17ZM5,12a1,1,0,0,0-1-1H3a1,1,0,0,0,0,2H4A1,1,0,0,0,5,12Zm7-7a1,1,0,0,0,1-1V3a1,1,0,0,0-2,0V4A1,1,0,0,0,12,5ZM5.64,7.05a1,1,0,0,0,.7.29,1,1,0,0,0,.71-.29,1,1,0,0,0,0-1.41l-.71-.71A1,1,0,0,0,4.93,6.34Zm12,.29a1,1,0,0,0,.7-.29l.71-.71a1,1,0,1,0-1.41-1.41L17,5.64a1,1,0,0,0,0,1.41A1,1,0,0,0,17.66,7.34ZM21,11H20a1,1,0,0,0,0,2h1a1,1,0,0,0,0-2Zm-9,8a1,1,0,0,0-1,1v1a1,1,0,0,0,2,0V20A1,1,0,0,0,12,19ZM18.36,17A1,1,0,0,0,17,18.36l.71.71a1,1,0,0,0,1.41,0,1,1,0,0,0,0-1.41ZM12,6.5A5.5,5.5,0,1,0,17.5,12,5.51,5.51,0,0,0,12,6.5Zm0,9A3.5,3.5,0,1,1,15.5,12,3.5,3.5,0,0,1,12,15.5Z" })
|
|
45
|
+
}
|
|
46
|
+
),
|
|
47
|
+
/* @__PURE__ */ o(
|
|
48
|
+
"svg",
|
|
49
|
+
{
|
|
50
|
+
className: `${M} h-8 w-8 fill-current`,
|
|
51
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
52
|
+
viewBox: "0 0 24 24",
|
|
53
|
+
children: /* @__PURE__ */ o("path", { d: "M21.64,13a1,1,0,0,0-1.05-.14,8.05,8.05,0,0,1-3.37.73A8.15,8.15,0,0,1,9.08,5.49a8.59,8.59,0,0,1,.25-2A1,1,0,0,0,8,2.36,10.14,10.14,0,1,0,22,14.05,1,1,0,0,0,21.64,13Zm-9.5,6.69A8.14,8.14,0,0,1,7.08,5.22v.27A10.15,10.15,0,0,0,17.22,15.63a9.79,9.79,0,0,0,2.1-.22A8.11,8.11,0,0,1,12.14,19.73Z" })
|
|
54
|
+
}
|
|
55
|
+
)
|
|
56
|
+
] });
|
|
57
|
+
}
|
|
58
|
+
function H({
|
|
59
|
+
themes: t,
|
|
60
|
+
defaultTheme: n,
|
|
61
|
+
onChange: d,
|
|
62
|
+
className: l = ""
|
|
63
|
+
}) {
|
|
64
|
+
const i = x(), [u, s] = h(() => {
|
|
65
|
+
const e = a();
|
|
66
|
+
return e && t.includes(e) ? e : n || t[0] || "light";
|
|
67
|
+
});
|
|
68
|
+
w(() => {
|
|
69
|
+
const e = new MutationObserver(() => {
|
|
70
|
+
const r = a();
|
|
71
|
+
r && t.includes(r) && s(r);
|
|
72
|
+
});
|
|
73
|
+
return e.observe(document.documentElement, { attributes: !0, attributeFilter: ["data-theme"] }), () => e.disconnect();
|
|
74
|
+
}, [t]);
|
|
75
|
+
const c = (e) => {
|
|
76
|
+
s(e), p(e), d?.(e);
|
|
77
|
+
};
|
|
78
|
+
return /* @__PURE__ */ m("div", { className: `${S} ${T} ${l}`, children: [
|
|
79
|
+
/* @__PURE__ */ m("div", { tabIndex: 0, role: "button", className: f, children: [
|
|
80
|
+
"Theme",
|
|
81
|
+
/* @__PURE__ */ o(
|
|
82
|
+
"svg",
|
|
83
|
+
{
|
|
84
|
+
width: "12px",
|
|
85
|
+
height: "12px",
|
|
86
|
+
className: "inline-block h-2 w-2 fill-current opacity-60",
|
|
87
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
88
|
+
viewBox: "0 0 2048 2048",
|
|
89
|
+
children: /* @__PURE__ */ o("path", { d: "M1799 349l242 241-1017 1017L7 590l242-241 775 775 775-775z" })
|
|
90
|
+
}
|
|
91
|
+
)
|
|
92
|
+
] }),
|
|
93
|
+
/* @__PURE__ */ o(
|
|
94
|
+
"ul",
|
|
95
|
+
{
|
|
96
|
+
tabIndex: 0,
|
|
97
|
+
className: `${Z} bg-base-300 rounded-box z-[1] w-52 p-2 shadow-2xl max-h-96 overflow-y-auto`,
|
|
98
|
+
children: t.map((e) => /* @__PURE__ */ o("li", { children: /* @__PURE__ */ o(
|
|
99
|
+
"input",
|
|
100
|
+
{
|
|
101
|
+
type: "radio",
|
|
102
|
+
name: i,
|
|
103
|
+
className: `${f} ${N} ${D} ${B} justify-start`,
|
|
104
|
+
"aria-label": e,
|
|
105
|
+
value: e,
|
|
106
|
+
checked: u === e,
|
|
107
|
+
onChange: () => c(e)
|
|
108
|
+
}
|
|
109
|
+
) }, e))
|
|
110
|
+
}
|
|
111
|
+
)
|
|
112
|
+
] });
|
|
113
|
+
}
|
|
114
|
+
const L = {
|
|
115
|
+
xs: y,
|
|
116
|
+
sm: O,
|
|
117
|
+
md: z,
|
|
118
|
+
lg: I,
|
|
119
|
+
xl: j
|
|
120
|
+
};
|
|
121
|
+
function V({
|
|
122
|
+
lightTheme: t = "light",
|
|
123
|
+
darkTheme: n = "dark",
|
|
124
|
+
onChange: d,
|
|
125
|
+
size: l,
|
|
126
|
+
className: i = ""
|
|
127
|
+
}) {
|
|
128
|
+
const { componentSize: u } = A(), s = l ?? u ?? "md", [c, e] = h(() => a() === n);
|
|
129
|
+
w(() => {
|
|
130
|
+
const g = new MutationObserver(() => {
|
|
131
|
+
const b = a();
|
|
132
|
+
e(b === n);
|
|
133
|
+
});
|
|
134
|
+
return g.observe(document.documentElement, { attributes: !0, attributeFilter: ["data-theme"] }), () => g.disconnect();
|
|
135
|
+
}, [n]);
|
|
136
|
+
const r = (g) => {
|
|
137
|
+
const v = g.target.checked ? n : t;
|
|
138
|
+
p(v), d?.(v);
|
|
139
|
+
};
|
|
140
|
+
return /* @__PURE__ */ o(
|
|
141
|
+
"input",
|
|
142
|
+
{
|
|
143
|
+
type: "checkbox",
|
|
144
|
+
className: `${E} ${L[s]} ${i}`,
|
|
145
|
+
checked: c,
|
|
146
|
+
onChange: r,
|
|
147
|
+
"aria-label": "Toggle theme"
|
|
148
|
+
}
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
const q = Object.assign(
|
|
152
|
+
{},
|
|
153
|
+
{
|
|
154
|
+
Swap: F,
|
|
155
|
+
Dropdown: H,
|
|
156
|
+
Toggle: V
|
|
157
|
+
}
|
|
158
|
+
);
|
|
159
|
+
export {
|
|
160
|
+
q as ThemeController
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=ThemeController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeController.js","sources":["../../src/components/ThemeController.tsx"],"sourcesContent":["import React, { useState, useEffect, useId } from 'react'\nimport { useConfig } from './ConfigProvider'\n\n// DaisyUI classes\nconst dSwap = 'd-swap'\nconst dSwapRotate = 'd-swap-rotate'\nconst dSwapOff = 'd-swap-off'\nconst dSwapOn = 'd-swap-on'\nconst dDropdown = 'd-dropdown'\nconst dDropdownEnd = 'd-dropdown-end'\nconst dDropdownContent = 'd-dropdown-content'\nconst dBtn = 'd-btn'\nconst dBtnSm = 'd-btn-sm'\nconst dBtnBlock = 'd-btn-block'\nconst dBtnGhost = 'd-btn-ghost'\nconst dToggle = 'd-toggle'\nconst dToggleXs = 'd-toggle-xs'\nconst dToggleSm = 'd-toggle-sm'\nconst dToggleMd = 'd-toggle-md'\nconst dToggleLg = 'd-toggle-lg'\nconst dToggleXl = 'd-toggle-xl'\n\nexport interface ThemeControllerSwapProps {\n lightTheme?: string\n darkTheme?: string\n onChange?: (theme: string) => void\n className?: string\n}\n\nexport interface ThemeControllerDropdownProps {\n themes: string[]\n defaultTheme?: string\n onChange?: (theme: string) => void\n className?: string\n}\n\nexport interface ThemeControllerToggleProps {\n lightTheme?: string\n darkTheme?: string\n onChange?: (theme: string) => void\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n className?: string\n}\n\n// Get current theme from document\nfunction getCurrentTheme(): string | null {\n return document.documentElement.getAttribute('data-theme')\n}\n\n// Set theme on document\nfunction setTheme(theme: string) {\n document.documentElement.setAttribute('data-theme', theme)\n}\n\nfunction ThemeControllerSwap({\n lightTheme = 'light',\n darkTheme = 'dark',\n onChange,\n className = '',\n}: ThemeControllerSwapProps) {\n const [isDark, setIsDark] = useState(() => {\n const current = getCurrentTheme()\n return current === darkTheme\n })\n\n // Sync with external theme changes\n useEffect(() => {\n const observer = new MutationObserver(() => {\n const current = getCurrentTheme()\n setIsDark(current === darkTheme)\n })\n observer.observe(document.documentElement, { attributes: true, attributeFilter: ['data-theme'] })\n return () => observer.disconnect()\n }, [darkTheme])\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const checked = e.target.checked\n const theme = checked ? darkTheme : lightTheme\n setTheme(theme)\n onChange?.(theme)\n }\n\n return (\n <label className={`${dSwap} ${dSwapRotate} ${className}`}>\n <input\n type=\"checkbox\"\n checked={isDark}\n onChange={handleChange}\n />\n {/* sun icon */}\n <svg\n className={`${dSwapOff} h-8 w-8 fill-current`}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M5.64,17l-.71.71a1,1,0,0,0,0,1.41,1,1,0,0,0,1.41,0l.71-.71A1,1,0,0,0,5.64,17ZM5,12a1,1,0,0,0-1-1H3a1,1,0,0,0,0,2H4A1,1,0,0,0,5,12Zm7-7a1,1,0,0,0,1-1V3a1,1,0,0,0-2,0V4A1,1,0,0,0,12,5ZM5.64,7.05a1,1,0,0,0,.7.29,1,1,0,0,0,.71-.29,1,1,0,0,0,0-1.41l-.71-.71A1,1,0,0,0,4.93,6.34Zm12,.29a1,1,0,0,0,.7-.29l.71-.71a1,1,0,1,0-1.41-1.41L17,5.64a1,1,0,0,0,0,1.41A1,1,0,0,0,17.66,7.34ZM21,11H20a1,1,0,0,0,0,2h1a1,1,0,0,0,0-2Zm-9,8a1,1,0,0,0-1,1v1a1,1,0,0,0,2,0V20A1,1,0,0,0,12,19ZM18.36,17A1,1,0,0,0,17,18.36l.71.71a1,1,0,0,0,1.41,0,1,1,0,0,0,0-1.41ZM12,6.5A5.5,5.5,0,1,0,17.5,12,5.51,5.51,0,0,0,12,6.5Zm0,9A3.5,3.5,0,1,1,15.5,12,3.5,3.5,0,0,1,12,15.5Z\" />\n </svg>\n {/* moon icon */}\n <svg\n className={`${dSwapOn} h-8 w-8 fill-current`}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n >\n <path d=\"M21.64,13a1,1,0,0,0-1.05-.14,8.05,8.05,0,0,1-3.37.73A8.15,8.15,0,0,1,9.08,5.49a8.59,8.59,0,0,1,.25-2A1,1,0,0,0,8,2.36,10.14,10.14,0,1,0,22,14.05,1,1,0,0,0,21.64,13Zm-9.5,6.69A8.14,8.14,0,0,1,7.08,5.22v.27A10.15,10.15,0,0,0,17.22,15.63a9.79,9.79,0,0,0,2.1-.22A8.11,8.11,0,0,1,12.14,19.73Z\" />\n </svg>\n </label>\n )\n}\n\nfunction ThemeControllerDropdown({\n themes,\n defaultTheme,\n onChange,\n className = '',\n}: ThemeControllerDropdownProps) {\n const radioName = useId()\n const [selectedTheme, setSelectedTheme] = useState(() => {\n const current = getCurrentTheme()\n if (current && themes.includes(current)) return current\n return defaultTheme || themes[0] || 'light'\n })\n\n // Sync with external theme changes\n useEffect(() => {\n const observer = new MutationObserver(() => {\n const current = getCurrentTheme()\n if (current && themes.includes(current)) {\n setSelectedTheme(current)\n }\n })\n observer.observe(document.documentElement, { attributes: true, attributeFilter: ['data-theme'] })\n return () => observer.disconnect()\n }, [themes])\n\n const handleChange = (theme: string) => {\n setSelectedTheme(theme)\n setTheme(theme)\n onChange?.(theme)\n }\n\n return (\n <div className={`${dDropdown} ${dDropdownEnd} ${className}`}>\n <div tabIndex={0} role=\"button\" className={dBtn}>\n Theme\n <svg\n width=\"12px\"\n height=\"12px\"\n className=\"inline-block h-2 w-2 fill-current opacity-60\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 2048 2048\"\n >\n <path d=\"M1799 349l242 241-1017 1017L7 590l242-241 775 775 775-775z\"></path>\n </svg>\n </div>\n <ul\n tabIndex={0}\n className={`${dDropdownContent} bg-base-300 rounded-box z-[1] w-52 p-2 shadow-2xl max-h-96 overflow-y-auto`}\n >\n {themes.map((theme) => (\n <li key={theme}>\n <input\n type=\"radio\"\n name={radioName}\n className={`${dBtn} ${dBtnSm} ${dBtnBlock} ${dBtnGhost} justify-start`}\n aria-label={theme}\n value={theme}\n checked={selectedTheme === theme}\n onChange={() => handleChange(theme)}\n />\n </li>\n ))}\n </ul>\n </div>\n )\n}\n\nconst sizeClasses: Record<string, string> = {\n xs: dToggleXs,\n sm: dToggleSm,\n md: dToggleMd,\n lg: dToggleLg,\n xl: dToggleXl,\n}\n\nfunction ThemeControllerToggle({\n lightTheme = 'light',\n darkTheme = 'dark',\n onChange,\n size,\n className = '',\n}: ThemeControllerToggleProps) {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n\n const [isDark, setIsDark] = useState(() => {\n const current = getCurrentTheme()\n return current === darkTheme\n })\n\n // Sync with external theme changes\n useEffect(() => {\n const observer = new MutationObserver(() => {\n const current = getCurrentTheme()\n setIsDark(current === darkTheme)\n })\n observer.observe(document.documentElement, { attributes: true, attributeFilter: ['data-theme'] })\n return () => observer.disconnect()\n }, [darkTheme])\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const checked = e.target.checked\n const theme = checked ? darkTheme : lightTheme\n setTheme(theme)\n onChange?.(theme)\n }\n\n return (\n <input\n type=\"checkbox\"\n className={`${dToggle} ${sizeClasses[effectiveSize]} ${className}`}\n checked={isDark}\n onChange={handleChange}\n aria-label=\"Toggle theme\"\n />\n )\n}\n\nexport const ThemeController = Object.assign(\n {},\n {\n Swap: ThemeControllerSwap,\n Dropdown: ThemeControllerDropdown,\n Toggle: ThemeControllerToggle,\n }\n)\n"],"names":["dSwap","dSwapRotate","dSwapOff","dSwapOn","dDropdown","dDropdownEnd","dDropdownContent","dBtn","dBtnSm","dBtnBlock","dBtnGhost","dToggle","dToggleXs","dToggleSm","dToggleMd","dToggleLg","dToggleXl","getCurrentTheme","setTheme","theme","ThemeControllerSwap","lightTheme","darkTheme","onChange","className","isDark","setIsDark","useState","useEffect","observer","current","handleChange","e","jsxs","jsx","ThemeControllerDropdown","themes","defaultTheme","radioName","useId","selectedTheme","setSelectedTheme","sizeClasses","ThemeControllerToggle","size","componentSize","useConfig","effectiveSize","ThemeController"],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface TimePickerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {
|
|
3
|
+
value?: Date | null;
|
|
4
|
+
defaultValue?: Date | null;
|
|
5
|
+
onChange?: (date: Date | null) => void;
|
|
6
|
+
format?: '12' | '24';
|
|
7
|
+
placeholder?: string;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
10
|
+
showSeconds?: boolean;
|
|
11
|
+
allowClear?: boolean;
|
|
12
|
+
open?: boolean;
|
|
13
|
+
onOpenChange?: (open: boolean) => void;
|
|
14
|
+
hourStep?: number;
|
|
15
|
+
minuteStep?: number;
|
|
16
|
+
secondStep?: number;
|
|
17
|
+
status?: 'error' | 'warning';
|
|
18
|
+
'data-testid'?: string;
|
|
19
|
+
}
|
|
20
|
+
export declare const TimePicker: React.ForwardRefExoticComponent<TimePickerProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
import { jsxs as m, jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as $e, useState as $, useRef as ne, useId as xe, useEffect as Y, useCallback as oe } from "react";
|
|
3
|
+
import { Input as Me } from "./Input.js";
|
|
4
|
+
import { useConfig as we } from "./ConfigProvider.js";
|
|
5
|
+
const S = "d-btn", D = "d-btn-ghost", J = "d-btn-primary", ke = "d-btn-xs", E = "d-btn-sm", ye = "d-btn-circle", ve = "d-input-error", Ce = "d-input-warning";
|
|
6
|
+
function Ne(s, T = "24", x = !1) {
|
|
7
|
+
if (!s) return "";
|
|
8
|
+
let o = s.getHours();
|
|
9
|
+
const M = String(s.getMinutes()).padStart(2, "0"), w = String(s.getSeconds()).padStart(2, "0");
|
|
10
|
+
if (T === "12") {
|
|
11
|
+
const P = o >= 12 ? "PM" : "AM";
|
|
12
|
+
return o = o % 12 || 12, x ? `${o}:${M}:${w} ${P}` : `${o}:${M} ${P}`;
|
|
13
|
+
}
|
|
14
|
+
const A = String(o).padStart(2, "0");
|
|
15
|
+
return x ? `${A}:${M}:${w}` : `${A}:${M}`;
|
|
16
|
+
}
|
|
17
|
+
const Se = $e(({
|
|
18
|
+
value: s,
|
|
19
|
+
defaultValue: T,
|
|
20
|
+
onChange: x,
|
|
21
|
+
format: o = "24",
|
|
22
|
+
placeholder: M = "Select time",
|
|
23
|
+
disabled: w = !1,
|
|
24
|
+
className: A,
|
|
25
|
+
size: P,
|
|
26
|
+
showSeconds: v = !1,
|
|
27
|
+
allowClear: se = !0,
|
|
28
|
+
open: H,
|
|
29
|
+
onOpenChange: Q,
|
|
30
|
+
hourStep: F = 1,
|
|
31
|
+
minuteStep: R = 1,
|
|
32
|
+
secondStep: z = 1,
|
|
33
|
+
status: V,
|
|
34
|
+
"data-testid": ie,
|
|
35
|
+
...re
|
|
36
|
+
}, I) => {
|
|
37
|
+
const { componentSize: ae } = we(), de = P ?? ae ?? "md", [c, O] = $(
|
|
38
|
+
s !== void 0 ? s : T || null
|
|
39
|
+
), [ce, le] = $(!1), l = H !== void 0 ? H : ce, [p, C] = $(c ? c.getHours() : 0), [k, B] = $(c ? c.getMinutes() : 0), [y, L] = $(c ? c.getSeconds() : 0), [g, j] = $(
|
|
40
|
+
c && c.getHours() >= 12 ? "PM" : "AM"
|
|
41
|
+
), [h, K] = $("hour"), U = ne(null), ue = ne(null), W = xe(), d = ie || "timepicker";
|
|
42
|
+
Y(() => {
|
|
43
|
+
s !== void 0 && (O(s), s && (C(s.getHours()), B(s.getMinutes()), L(s.getSeconds()), j(s.getHours() >= 12 ? "PM" : "AM")));
|
|
44
|
+
}, [s]);
|
|
45
|
+
const b = oe((e) => {
|
|
46
|
+
H === void 0 && le(e), Q?.(e);
|
|
47
|
+
}, [H, Q]);
|
|
48
|
+
Y(() => {
|
|
49
|
+
function e(t) {
|
|
50
|
+
U.current && !U.current.contains(t.target) && b(!1);
|
|
51
|
+
}
|
|
52
|
+
if (l)
|
|
53
|
+
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
54
|
+
}, [l, b]), Y(() => {
|
|
55
|
+
if (!l) return;
|
|
56
|
+
const e = (t) => {
|
|
57
|
+
if (t.key === "Escape") {
|
|
58
|
+
b(!1);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (t.key !== "Tab") {
|
|
62
|
+
if (t.key === "ArrowUp" || t.key === "ArrowDown") {
|
|
63
|
+
t.preventDefault();
|
|
64
|
+
const i = t.key === "ArrowUp" ? -1 : 1;
|
|
65
|
+
if (h === "hour") {
|
|
66
|
+
const n = o === "12" ? 12 : 23, u = o === "12" ? 1 : 0;
|
|
67
|
+
let r = p + i * F;
|
|
68
|
+
r > n && (r = u), r < u && (r = n), Z(r);
|
|
69
|
+
} else if (h === "minute") {
|
|
70
|
+
let n = k + i * R;
|
|
71
|
+
n > 59 && (n = 0), n < 0 && (n = 59), _(n);
|
|
72
|
+
} else if (h === "second") {
|
|
73
|
+
let n = y + i * z;
|
|
74
|
+
n > 59 && (n = 0), n < 0 && (n = 59), ee(n);
|
|
75
|
+
} else h === "period" && q(g === "AM" ? "PM" : "AM");
|
|
76
|
+
}
|
|
77
|
+
if (t.key === "ArrowLeft" || t.key === "ArrowRight") {
|
|
78
|
+
t.preventDefault();
|
|
79
|
+
const i = ["hour", "minute"];
|
|
80
|
+
v && i.push("second"), o === "12" && i.push("period");
|
|
81
|
+
const n = i.indexOf(h), u = t.key === "ArrowLeft" ? -1 : 1;
|
|
82
|
+
let r = n + u;
|
|
83
|
+
r < 0 && (r = i.length - 1), r >= i.length && (r = 0), K(i[r]);
|
|
84
|
+
}
|
|
85
|
+
t.key === "Enter" && b(!1);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
|
|
89
|
+
}, [l, h, p, k, y, g, o, v, F, R, z, b]);
|
|
90
|
+
const fe = oe((e) => {
|
|
91
|
+
e.stopPropagation(), O(null), C(0), B(0), L(0), j("AM"), x?.(null);
|
|
92
|
+
}, [x]), N = (e, t, i) => {
|
|
93
|
+
const n = /* @__PURE__ */ new Date(), u = new Date(
|
|
94
|
+
n.getFullYear(),
|
|
95
|
+
n.getMonth(),
|
|
96
|
+
n.getDate(),
|
|
97
|
+
e,
|
|
98
|
+
t,
|
|
99
|
+
i
|
|
100
|
+
);
|
|
101
|
+
O(u), x?.(u);
|
|
102
|
+
}, Z = (e) => {
|
|
103
|
+
let t = e;
|
|
104
|
+
o === "12" && (t = g === "PM" ? e % 12 + 12 : e % 12), C(t), N(t, k, y);
|
|
105
|
+
}, _ = (e) => {
|
|
106
|
+
B(e), N(p, e, y);
|
|
107
|
+
}, ee = (e) => {
|
|
108
|
+
L(e), N(p, k, e);
|
|
109
|
+
}, q = (e) => {
|
|
110
|
+
j(e);
|
|
111
|
+
const t = e === "PM" ? p % 12 + 12 : p % 12;
|
|
112
|
+
C(t), N(t, k, y);
|
|
113
|
+
}, G = (e, t, i, n, u, r = 1, ge = 0) => {
|
|
114
|
+
const te = [];
|
|
115
|
+
for (let f = ge; f <= i; f += r)
|
|
116
|
+
te.push(f);
|
|
117
|
+
const he = `${W}-${e}-listbox`, be = h === e;
|
|
118
|
+
return /* @__PURE__ */ m(
|
|
119
|
+
"div",
|
|
120
|
+
{
|
|
121
|
+
className: "flex flex-col w-16",
|
|
122
|
+
role: "listbox",
|
|
123
|
+
"aria-label": `Select ${t.toLowerCase()}`,
|
|
124
|
+
id: he,
|
|
125
|
+
"data-testid": `${d}-${e}-column`,
|
|
126
|
+
tabIndex: 0,
|
|
127
|
+
onFocus: () => K(e),
|
|
128
|
+
children: [
|
|
129
|
+
/* @__PURE__ */ a("div", { className: "text-xs font-semibold text-center text-base-content/60 py-2", "aria-hidden": "true", children: t }),
|
|
130
|
+
/* @__PURE__ */ a("div", { className: "overflow-y-auto max-h-48", children: te.map((f) => {
|
|
131
|
+
const X = n === f;
|
|
132
|
+
return /* @__PURE__ */ a(
|
|
133
|
+
"button",
|
|
134
|
+
{
|
|
135
|
+
type: "button",
|
|
136
|
+
role: "option",
|
|
137
|
+
"aria-selected": X,
|
|
138
|
+
onClick: () => u(f),
|
|
139
|
+
"data-testid": `${d}-${e}-${f}`,
|
|
140
|
+
className: [
|
|
141
|
+
"w-full px-4 py-2 text-center hover:bg-base-200 transition-colors",
|
|
142
|
+
X ? "bg-primary text-primary-content" : "",
|
|
143
|
+
be && X ? "ring-2 ring-primary ring-offset-1" : ""
|
|
144
|
+
].filter(Boolean).join(" "),
|
|
145
|
+
children: String(f).padStart(2, "0")
|
|
146
|
+
},
|
|
147
|
+
f
|
|
148
|
+
);
|
|
149
|
+
}) })
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
);
|
|
153
|
+
}, pe = o === "12" ? p % 12 || 12 : p, me = {
|
|
154
|
+
error: ve,
|
|
155
|
+
warning: Ce
|
|
156
|
+
};
|
|
157
|
+
return /* @__PURE__ */ m(
|
|
158
|
+
"div",
|
|
159
|
+
{
|
|
160
|
+
ref: (e) => {
|
|
161
|
+
U.current = e, typeof I == "function" ? I(e) : I && (I.current = e);
|
|
162
|
+
},
|
|
163
|
+
className: ["relative", A].filter(Boolean).join(" "),
|
|
164
|
+
"data-testid": d,
|
|
165
|
+
"data-state": l ? "open" : "closed",
|
|
166
|
+
...re,
|
|
167
|
+
children: [
|
|
168
|
+
/* @__PURE__ */ m("div", { className: "relative", children: [
|
|
169
|
+
/* @__PURE__ */ a(
|
|
170
|
+
Me,
|
|
171
|
+
{
|
|
172
|
+
value: Ne(c, o, v),
|
|
173
|
+
placeholder: M,
|
|
174
|
+
disabled: w,
|
|
175
|
+
size: de,
|
|
176
|
+
readOnly: !0,
|
|
177
|
+
onClick: () => !w && b(!l),
|
|
178
|
+
className: ["cursor-pointer pr-8", V ? me[V] : ""].filter(Boolean).join(" "),
|
|
179
|
+
"aria-haspopup": "listbox",
|
|
180
|
+
"aria-expanded": l,
|
|
181
|
+
"aria-controls": l ? `${W}-dropdown` : void 0,
|
|
182
|
+
"data-testid": `${d}-input`
|
|
183
|
+
}
|
|
184
|
+
),
|
|
185
|
+
se && c && !w && /* @__PURE__ */ a(
|
|
186
|
+
"button",
|
|
187
|
+
{
|
|
188
|
+
type: "button",
|
|
189
|
+
onClick: fe,
|
|
190
|
+
className: `absolute right-2 top-1/2 -translate-y-1/2 ${S} ${D} ${ke} ${ye}`,
|
|
191
|
+
"aria-label": "Clear time",
|
|
192
|
+
"data-testid": `${d}-clear`,
|
|
193
|
+
children: /* @__PURE__ */ a("svg", { className: "w-3 h-3", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ a("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
|
|
194
|
+
}
|
|
195
|
+
)
|
|
196
|
+
] }),
|
|
197
|
+
l && /* @__PURE__ */ m(
|
|
198
|
+
"div",
|
|
199
|
+
{
|
|
200
|
+
ref: ue,
|
|
201
|
+
id: `${W}-dropdown`,
|
|
202
|
+
className: "absolute top-full left-0 mt-2 bg-base-100 border border-base-300 rounded-lg shadow-xl z-[9999] w-fit",
|
|
203
|
+
role: "dialog",
|
|
204
|
+
"aria-label": "Time picker",
|
|
205
|
+
"data-testid": `${d}-dropdown`,
|
|
206
|
+
children: [
|
|
207
|
+
/* @__PURE__ */ m("div", { className: "flex divide-x divide-base-300", children: [
|
|
208
|
+
G(
|
|
209
|
+
"hour",
|
|
210
|
+
"Hour",
|
|
211
|
+
o === "12" ? 12 : 23,
|
|
212
|
+
pe,
|
|
213
|
+
Z,
|
|
214
|
+
F,
|
|
215
|
+
o === "12" ? 1 : 0
|
|
216
|
+
),
|
|
217
|
+
G("minute", "Min", 59, k, _, R),
|
|
218
|
+
v && G("second", "Sec", 59, y, ee, z),
|
|
219
|
+
o === "12" && /* @__PURE__ */ m(
|
|
220
|
+
"div",
|
|
221
|
+
{
|
|
222
|
+
className: "flex flex-col w-16",
|
|
223
|
+
role: "listbox",
|
|
224
|
+
"aria-label": "Select period",
|
|
225
|
+
"data-testid": `${d}-period-column`,
|
|
226
|
+
tabIndex: 0,
|
|
227
|
+
onFocus: () => K("period"),
|
|
228
|
+
children: [
|
|
229
|
+
/* @__PURE__ */ a("div", { className: "text-xs font-semibold text-center text-base-content/60 py-2", "aria-hidden": "true", children: "Period" }),
|
|
230
|
+
/* @__PURE__ */ m("div", { className: "flex flex-col p-2 gap-2", children: [
|
|
231
|
+
/* @__PURE__ */ a(
|
|
232
|
+
"button",
|
|
233
|
+
{
|
|
234
|
+
type: "button",
|
|
235
|
+
role: "option",
|
|
236
|
+
"aria-selected": g === "AM",
|
|
237
|
+
onClick: () => q("AM"),
|
|
238
|
+
"data-testid": `${d}-period-am`,
|
|
239
|
+
className: [
|
|
240
|
+
S,
|
|
241
|
+
E,
|
|
242
|
+
g === "AM" ? J : D
|
|
243
|
+
].join(" "),
|
|
244
|
+
children: "AM"
|
|
245
|
+
}
|
|
246
|
+
),
|
|
247
|
+
/* @__PURE__ */ a(
|
|
248
|
+
"button",
|
|
249
|
+
{
|
|
250
|
+
type: "button",
|
|
251
|
+
role: "option",
|
|
252
|
+
"aria-selected": g === "PM",
|
|
253
|
+
onClick: () => q("PM"),
|
|
254
|
+
"data-testid": `${d}-period-pm`,
|
|
255
|
+
className: [
|
|
256
|
+
S,
|
|
257
|
+
E,
|
|
258
|
+
g === "PM" ? J : D
|
|
259
|
+
].join(" "),
|
|
260
|
+
children: "PM"
|
|
261
|
+
}
|
|
262
|
+
)
|
|
263
|
+
] })
|
|
264
|
+
]
|
|
265
|
+
}
|
|
266
|
+
)
|
|
267
|
+
] }),
|
|
268
|
+
/* @__PURE__ */ m("div", { className: "flex justify-end gap-2 p-3 border-t border-base-300", children: [
|
|
269
|
+
/* @__PURE__ */ a(
|
|
270
|
+
"button",
|
|
271
|
+
{
|
|
272
|
+
type: "button",
|
|
273
|
+
onClick: () => {
|
|
274
|
+
const e = /* @__PURE__ */ new Date();
|
|
275
|
+
C(e.getHours()), B(e.getMinutes()), L(e.getSeconds()), j(e.getHours() >= 12 ? "PM" : "AM"), N(e.getHours(), e.getMinutes(), e.getSeconds());
|
|
276
|
+
},
|
|
277
|
+
className: `${S} ${D} ${E}`,
|
|
278
|
+
"data-testid": `${d}-now`,
|
|
279
|
+
children: "Now"
|
|
280
|
+
}
|
|
281
|
+
),
|
|
282
|
+
/* @__PURE__ */ a(
|
|
283
|
+
"button",
|
|
284
|
+
{
|
|
285
|
+
type: "button",
|
|
286
|
+
onClick: () => b(!1),
|
|
287
|
+
className: `${S} ${J} ${E}`,
|
|
288
|
+
"data-testid": `${d}-ok`,
|
|
289
|
+
children: "OK"
|
|
290
|
+
}
|
|
291
|
+
)
|
|
292
|
+
] })
|
|
293
|
+
]
|
|
294
|
+
}
|
|
295
|
+
)
|
|
296
|
+
]
|
|
297
|
+
}
|
|
298
|
+
);
|
|
299
|
+
});
|
|
300
|
+
Se.displayName = "TimePicker";
|
|
301
|
+
export {
|
|
302
|
+
Se as TimePicker
|
|
303
|
+
};
|
|
304
|
+
//# sourceMappingURL=TimePicker.js.map
|