@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,118 @@
|
|
|
1
|
+
import { jsxs as c, jsx as s, Fragment as N } from "react/jsx-runtime";
|
|
2
|
+
import { useState as D, useCallback as k, useEffect as I } from "react";
|
|
3
|
+
import { useConfig as E } from "./ConfigProvider.js";
|
|
4
|
+
const F = "d-countdown", U = "--d-value", V = "--d-digits", T = (t) => {
|
|
5
|
+
const e = t - Date.now();
|
|
6
|
+
return e <= 0 ? { days: 0, hours: 0, minutes: 0, seconds: 0 } : {
|
|
7
|
+
days: Math.floor(e / (1e3 * 60 * 60 * 24)),
|
|
8
|
+
hours: Math.floor(e / (1e3 * 60 * 60) % 24),
|
|
9
|
+
minutes: Math.floor(e / 1e3 / 60 % 60),
|
|
10
|
+
seconds: Math.floor(e / 1e3 % 60)
|
|
11
|
+
};
|
|
12
|
+
}, x = ({ value: t, label: e, size: l, showLabel: i, boxed: h }) => {
|
|
13
|
+
const n = /* @__PURE__ */ s("span", { className: `${F} font-mono ${{
|
|
14
|
+
xs: "text-lg",
|
|
15
|
+
sm: "text-2xl",
|
|
16
|
+
md: "text-4xl",
|
|
17
|
+
lg: "text-5xl",
|
|
18
|
+
xl: "text-6xl"
|
|
19
|
+
}[l || "md"]}`, children: /* @__PURE__ */ s(
|
|
20
|
+
"span",
|
|
21
|
+
{
|
|
22
|
+
style: { [U]: t, [V]: 2 },
|
|
23
|
+
"aria-live": "polite",
|
|
24
|
+
"aria-label": String(t),
|
|
25
|
+
children: String(t).padStart(2, "0")
|
|
26
|
+
}
|
|
27
|
+
) });
|
|
28
|
+
return h ? /* @__PURE__ */ c("div", { className: "flex flex-col items-center bg-neutral text-neutral-content rounded-box p-2", children: [
|
|
29
|
+
n,
|
|
30
|
+
i && e && /* @__PURE__ */ s("span", { className: "text-xs mt-1", children: e })
|
|
31
|
+
] }) : i ? /* @__PURE__ */ c("div", { className: "flex flex-col items-center", children: [
|
|
32
|
+
n,
|
|
33
|
+
e && /* @__PURE__ */ s("span", { className: "text-xs text-base-content/70", children: e })
|
|
34
|
+
] }) : n;
|
|
35
|
+
}, q = ({
|
|
36
|
+
value: t,
|
|
37
|
+
format: e = "HH:MM:SS",
|
|
38
|
+
onFinish: l,
|
|
39
|
+
onChange: i,
|
|
40
|
+
className: h = "",
|
|
41
|
+
size: z,
|
|
42
|
+
showLabels: n = !1,
|
|
43
|
+
labels: r = {},
|
|
44
|
+
boxed: a = !1
|
|
45
|
+
}) => {
|
|
46
|
+
const { componentSize: H } = E(), o = z ?? H ?? "md", d = t instanceof Date ? t.getTime() : t, [u, L] = D(() => T(d)), [C, $] = D(!1), m = {
|
|
47
|
+
days: r.days || "days",
|
|
48
|
+
hours: r.hours || "hours",
|
|
49
|
+
minutes: r.minutes || "min",
|
|
50
|
+
seconds: r.seconds || "sec"
|
|
51
|
+
}, p = k(() => {
|
|
52
|
+
const y = T(d);
|
|
53
|
+
L(y);
|
|
54
|
+
const v = d - Date.now();
|
|
55
|
+
i?.(Math.max(0, v)), v <= 0 && !C && ($(!0), l?.());
|
|
56
|
+
}, [d, i, l, C]);
|
|
57
|
+
I(() => {
|
|
58
|
+
const y = setInterval(p, 1e3);
|
|
59
|
+
return p(), () => clearInterval(y);
|
|
60
|
+
}, [p]);
|
|
61
|
+
const j = e.includes("D"), M = e.includes("H"), g = e.includes("M"), f = e.includes("S"), w = o === "lg" || o === "xl" ? "text-3xl" : o === "md" ? "text-2xl" : "text-xl", S = !n && !a;
|
|
62
|
+
return /* @__PURE__ */ c("div", { className: `flex gap-4 items-center ${h}`, children: [
|
|
63
|
+
j && /* @__PURE__ */ c(N, { children: [
|
|
64
|
+
/* @__PURE__ */ s(
|
|
65
|
+
x,
|
|
66
|
+
{
|
|
67
|
+
value: u.days,
|
|
68
|
+
label: m.days,
|
|
69
|
+
size: o,
|
|
70
|
+
showLabel: n,
|
|
71
|
+
boxed: a
|
|
72
|
+
}
|
|
73
|
+
),
|
|
74
|
+
S && (M || g || f) && /* @__PURE__ */ s("span", { className: w, children: ":" })
|
|
75
|
+
] }),
|
|
76
|
+
M && /* @__PURE__ */ c(N, { children: [
|
|
77
|
+
/* @__PURE__ */ s(
|
|
78
|
+
x,
|
|
79
|
+
{
|
|
80
|
+
value: u.hours,
|
|
81
|
+
label: m.hours,
|
|
82
|
+
size: o,
|
|
83
|
+
showLabel: n,
|
|
84
|
+
boxed: a
|
|
85
|
+
}
|
|
86
|
+
),
|
|
87
|
+
S && (g || f) && /* @__PURE__ */ s("span", { className: w, children: ":" })
|
|
88
|
+
] }),
|
|
89
|
+
g && /* @__PURE__ */ c(N, { children: [
|
|
90
|
+
/* @__PURE__ */ s(
|
|
91
|
+
x,
|
|
92
|
+
{
|
|
93
|
+
value: u.minutes,
|
|
94
|
+
label: m.minutes,
|
|
95
|
+
size: o,
|
|
96
|
+
showLabel: n,
|
|
97
|
+
boxed: a
|
|
98
|
+
}
|
|
99
|
+
),
|
|
100
|
+
S && f && /* @__PURE__ */ s("span", { className: w, children: ":" })
|
|
101
|
+
] }),
|
|
102
|
+
f && /* @__PURE__ */ s(
|
|
103
|
+
x,
|
|
104
|
+
{
|
|
105
|
+
value: u.seconds,
|
|
106
|
+
label: m.seconds,
|
|
107
|
+
size: o,
|
|
108
|
+
showLabel: n,
|
|
109
|
+
boxed: a
|
|
110
|
+
}
|
|
111
|
+
)
|
|
112
|
+
] });
|
|
113
|
+
};
|
|
114
|
+
q.displayName = "Countdown";
|
|
115
|
+
export {
|
|
116
|
+
q as Countdown
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=Countdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Countdown.js","sources":["../../src/components/Countdown.tsx"],"sourcesContent":["import React, { useEffect, useState, useCallback } from 'react'\nimport { useConfig } from './ConfigProvider'\n\n// DaisyUI classes\nconst dCountdown = 'd-countdown'\nconst dCssValue = '--d-value'\nconst dCssDigits = '--d-digits'\n\nexport interface CountdownProps {\n /** Target timestamp in milliseconds or Date object */\n value: number | Date\n /** Format string: 'D' days, 'H' hours, 'M' minutes, 'S' seconds */\n format?: string\n /** Callback when countdown reaches zero */\n onFinish?: () => void\n /** Callback on each tick with remaining time */\n onChange?: (value: number) => void\n /** Additional CSS classes */\n className?: string\n /** Size variant */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Show labels under each unit */\n showLabels?: boolean\n /** Custom labels */\n labels?: {\n days?: string\n hours?: string\n minutes?: string\n seconds?: string\n }\n /** Show box style around each unit */\n boxed?: boolean\n}\n\ninterface TimeLeft {\n days: number\n hours: number\n minutes: number\n seconds: number\n}\n\nconst calculateTimeLeft = (targetTime: number): TimeLeft => {\n const difference = targetTime - Date.now()\n\n if (difference <= 0) {\n return { days: 0, hours: 0, minutes: 0, seconds: 0 }\n }\n\n return {\n days: Math.floor(difference / (1000 * 60 * 60 * 24)),\n hours: Math.floor((difference / (1000 * 60 * 60)) % 24),\n minutes: Math.floor((difference / 1000 / 60) % 60),\n seconds: Math.floor((difference / 1000) % 60),\n }\n}\n\nconst CountdownUnit: React.FC<{\n value: number\n label?: string\n size?: CountdownProps['size']\n showLabel?: boolean\n boxed?: boolean\n}> = ({ value, label, size, showLabel, boxed }) => {\n const sizeClasses = {\n xs: 'text-lg',\n sm: 'text-2xl',\n md: 'text-4xl',\n lg: 'text-5xl',\n xl: 'text-6xl',\n }\n\n const content = (\n <span className={`${dCountdown} font-mono ${sizeClasses[size || 'md']}`}>\n <span\n style={{ [dCssValue]: value, [dCssDigits]: 2 } as React.CSSProperties}\n aria-live=\"polite\"\n aria-label={String(value)}\n >\n {String(value).padStart(2, '0')}\n </span>\n </span>\n )\n\n if (boxed) {\n return (\n <div className=\"flex flex-col items-center bg-neutral text-neutral-content rounded-box p-2\">\n {content}\n {showLabel && label && <span className=\"text-xs mt-1\">{label}</span>}\n </div>\n )\n }\n\n if (showLabel) {\n return (\n <div className=\"flex flex-col items-center\">\n {content}\n {label && <span className=\"text-xs text-base-content/70\">{label}</span>}\n </div>\n )\n }\n\n return content\n}\n\nexport const Countdown: React.FC<CountdownProps> = ({\n value,\n format = 'HH:MM:SS',\n onFinish,\n onChange,\n className = '',\n size,\n showLabels = false,\n labels = {},\n boxed = false,\n}) => {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n const targetTime = value instanceof Date ? value.getTime() : value\n const [timeLeft, setTimeLeft] = useState<TimeLeft>(() => calculateTimeLeft(targetTime))\n const [finished, setFinished] = useState(false)\n\n const defaultLabels = {\n days: labels.days || 'days',\n hours: labels.hours || 'hours',\n minutes: labels.minutes || 'min',\n seconds: labels.seconds || 'sec',\n }\n\n const tick = useCallback(() => {\n const newTimeLeft = calculateTimeLeft(targetTime)\n setTimeLeft(newTimeLeft)\n\n const remaining = targetTime - Date.now()\n onChange?.(Math.max(0, remaining))\n\n if (remaining <= 0 && !finished) {\n setFinished(true)\n onFinish?.()\n }\n }, [targetTime, onChange, onFinish, finished])\n\n useEffect(() => {\n const timer = setInterval(tick, 1000)\n tick() // Initial tick\n\n return () => clearInterval(timer)\n }, [tick])\n\n const showDays = format.includes('D')\n const showHours = format.includes('H')\n const showMinutes = format.includes('M')\n const showSeconds = format.includes('S')\n\n const separatorSize = effectiveSize === 'lg' || effectiveSize === 'xl' ? 'text-3xl' : effectiveSize === 'md' ? 'text-2xl' : 'text-xl'\n const showSeparators = !showLabels && !boxed\n\n return (\n <div className={`flex gap-4 items-center ${className}`}>\n {showDays && (\n <>\n <CountdownUnit\n value={timeLeft.days}\n label={defaultLabels.days}\n size={effectiveSize}\n showLabel={showLabels}\n boxed={boxed}\n />\n {showSeparators && (showHours || showMinutes || showSeconds) && (\n <span className={separatorSize}>:</span>\n )}\n </>\n )}\n {showHours && (\n <>\n <CountdownUnit\n value={timeLeft.hours}\n label={defaultLabels.hours}\n size={effectiveSize}\n showLabel={showLabels}\n boxed={boxed}\n />\n {showSeparators && (showMinutes || showSeconds) && (\n <span className={separatorSize}>:</span>\n )}\n </>\n )}\n {showMinutes && (\n <>\n <CountdownUnit\n value={timeLeft.minutes}\n label={defaultLabels.minutes}\n size={effectiveSize}\n showLabel={showLabels}\n boxed={boxed}\n />\n {showSeparators && showSeconds && <span className={separatorSize}>:</span>}\n </>\n )}\n {showSeconds && (\n <CountdownUnit\n value={timeLeft.seconds}\n label={defaultLabels.seconds}\n size={effectiveSize}\n showLabel={showLabels}\n boxed={boxed}\n />\n )}\n </div>\n )\n}\n\nCountdown.displayName = 'Countdown'\n"],"names":["dCountdown","dCssValue","dCssDigits","calculateTimeLeft","targetTime","difference","CountdownUnit","value","label","size","showLabel","boxed","content","jsx","jsxs","Countdown","format","onFinish","onChange","className","showLabels","labels","componentSize","useConfig","effectiveSize","timeLeft","setTimeLeft","useState","finished","setFinished","defaultLabels","tick","useCallback","newTimeLeft","remaining","useEffect","timer","showDays","showHours","showMinutes","showSeconds","separatorSize","showSeparators","Fragment"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface DatePickerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {
|
|
3
|
+
value?: Date | null;
|
|
4
|
+
defaultValue?: Date | null;
|
|
5
|
+
onChange?: (date: Date | null) => void;
|
|
6
|
+
format?: string;
|
|
7
|
+
placeholder?: string;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
10
|
+
}
|
|
11
|
+
export declare const DatePicker: React.FC<DatePickerProps>;
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { jsxs as m, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { useState as f, useRef as L, useEffect as N } from "react";
|
|
3
|
+
import { Input as q } from "./Input.js";
|
|
4
|
+
import { useConfig as A } from "./ConfigProvider.js";
|
|
5
|
+
const D = "d-btn", M = "d-btn-ghost", y = "d-btn-sm", Y = "d-btn-square", E = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], J = [
|
|
6
|
+
"January",
|
|
7
|
+
"February",
|
|
8
|
+
"March",
|
|
9
|
+
"April",
|
|
10
|
+
"May",
|
|
11
|
+
"June",
|
|
12
|
+
"July",
|
|
13
|
+
"August",
|
|
14
|
+
"September",
|
|
15
|
+
"October",
|
|
16
|
+
"November",
|
|
17
|
+
"December"
|
|
18
|
+
];
|
|
19
|
+
function P(t, l = "MM/DD/YYYY") {
|
|
20
|
+
if (!t) return "";
|
|
21
|
+
const d = t.getFullYear(), h = String(t.getMonth() + 1).padStart(2, "0"), g = String(t.getDate()).padStart(2, "0");
|
|
22
|
+
return l.replace("YYYY", String(d)).replace("MM", h).replace("DD", g);
|
|
23
|
+
}
|
|
24
|
+
function V(t, l) {
|
|
25
|
+
return new Date(t, l + 1, 0).getDate();
|
|
26
|
+
}
|
|
27
|
+
function G(t, l) {
|
|
28
|
+
return new Date(t, l, 1).getDay();
|
|
29
|
+
}
|
|
30
|
+
const U = ({
|
|
31
|
+
value: t,
|
|
32
|
+
defaultValue: l,
|
|
33
|
+
onChange: d,
|
|
34
|
+
format: h,
|
|
35
|
+
placeholder: g = "Select date",
|
|
36
|
+
disabled: S = !1,
|
|
37
|
+
className: $ = "",
|
|
38
|
+
size: F,
|
|
39
|
+
...C
|
|
40
|
+
}) => {
|
|
41
|
+
const { componentSize: O } = A(), k = F ?? O ?? "md", [o, p] = f(
|
|
42
|
+
t || l || null
|
|
43
|
+
), [c, u] = f(!1), [r, i] = f(
|
|
44
|
+
o ? o.getMonth() : (/* @__PURE__ */ new Date()).getMonth()
|
|
45
|
+
), [a, b] = f(
|
|
46
|
+
o ? o.getFullYear() : (/* @__PURE__ */ new Date()).getFullYear()
|
|
47
|
+
), v = L(null);
|
|
48
|
+
N(() => {
|
|
49
|
+
t !== void 0 && p(t);
|
|
50
|
+
}, [t]), N(() => {
|
|
51
|
+
function e(s) {
|
|
52
|
+
v.current && !v.current.contains(s.target) && u(!1);
|
|
53
|
+
}
|
|
54
|
+
if (c)
|
|
55
|
+
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
56
|
+
}, [c]);
|
|
57
|
+
const z = (e) => {
|
|
58
|
+
const s = new Date(a, r, e);
|
|
59
|
+
p(s), d?.(s), u(!1);
|
|
60
|
+
}, B = () => {
|
|
61
|
+
r === 0 ? (i(11), b(a - 1)) : i(r - 1);
|
|
62
|
+
}, R = () => {
|
|
63
|
+
r === 11 ? (i(0), b(a + 1)) : i(r + 1);
|
|
64
|
+
}, j = V(a, r), T = G(a, r), w = [];
|
|
65
|
+
for (let e = 0; e < T; e++)
|
|
66
|
+
w.push(null);
|
|
67
|
+
for (let e = 1; e <= j; e++)
|
|
68
|
+
w.push(e);
|
|
69
|
+
const x = (e) => !e || !o ? !1 : o.getDate() === e && o.getMonth() === r && o.getFullYear() === a, I = (e) => {
|
|
70
|
+
if (!e) return !1;
|
|
71
|
+
const s = /* @__PURE__ */ new Date();
|
|
72
|
+
return s.getDate() === e && s.getMonth() === r && s.getFullYear() === a;
|
|
73
|
+
};
|
|
74
|
+
return /* @__PURE__ */ m("div", { ref: v, className: `relative ${$}`, "data-state": c ? "open" : "closed", ...C, children: [
|
|
75
|
+
/* @__PURE__ */ n(
|
|
76
|
+
q,
|
|
77
|
+
{
|
|
78
|
+
value: P(o, h),
|
|
79
|
+
placeholder: g,
|
|
80
|
+
disabled: S,
|
|
81
|
+
size: k,
|
|
82
|
+
readOnly: !0,
|
|
83
|
+
onClick: () => !S && u(!c),
|
|
84
|
+
className: "cursor-pointer"
|
|
85
|
+
}
|
|
86
|
+
),
|
|
87
|
+
c && /* @__PURE__ */ m("div", { className: "absolute top-full left-0 mt-2 bg-base-100 border border-base-300 rounded-lg shadow-lg p-4 z-50 w-80", children: [
|
|
88
|
+
/* @__PURE__ */ m("div", { className: "flex items-center justify-between mb-4", children: [
|
|
89
|
+
/* @__PURE__ */ n(
|
|
90
|
+
"button",
|
|
91
|
+
{
|
|
92
|
+
type: "button",
|
|
93
|
+
onClick: B,
|
|
94
|
+
className: `${D} ${M} ${y} ${Y}`,
|
|
95
|
+
children: /* @__PURE__ */ n(
|
|
96
|
+
"svg",
|
|
97
|
+
{
|
|
98
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
99
|
+
className: "h-5 w-5",
|
|
100
|
+
viewBox: "0 0 20 20",
|
|
101
|
+
fill: "currentColor",
|
|
102
|
+
children: /* @__PURE__ */ n(
|
|
103
|
+
"path",
|
|
104
|
+
{
|
|
105
|
+
fillRule: "evenodd",
|
|
106
|
+
d: "M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z",
|
|
107
|
+
clipRule: "evenodd"
|
|
108
|
+
}
|
|
109
|
+
)
|
|
110
|
+
}
|
|
111
|
+
)
|
|
112
|
+
}
|
|
113
|
+
),
|
|
114
|
+
/* @__PURE__ */ m("div", { className: "text-base font-semibold", children: [
|
|
115
|
+
J[r],
|
|
116
|
+
" ",
|
|
117
|
+
a
|
|
118
|
+
] }),
|
|
119
|
+
/* @__PURE__ */ n(
|
|
120
|
+
"button",
|
|
121
|
+
{
|
|
122
|
+
type: "button",
|
|
123
|
+
onClick: R,
|
|
124
|
+
className: `${D} ${M} ${y} ${Y}`,
|
|
125
|
+
children: /* @__PURE__ */ n(
|
|
126
|
+
"svg",
|
|
127
|
+
{
|
|
128
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
129
|
+
className: "h-5 w-5",
|
|
130
|
+
viewBox: "0 0 20 20",
|
|
131
|
+
fill: "currentColor",
|
|
132
|
+
children: /* @__PURE__ */ n(
|
|
133
|
+
"path",
|
|
134
|
+
{
|
|
135
|
+
fillRule: "evenodd",
|
|
136
|
+
d: "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z",
|
|
137
|
+
clipRule: "evenodd"
|
|
138
|
+
}
|
|
139
|
+
)
|
|
140
|
+
}
|
|
141
|
+
)
|
|
142
|
+
}
|
|
143
|
+
)
|
|
144
|
+
] }),
|
|
145
|
+
/* @__PURE__ */ n("div", { className: "grid grid-cols-7 gap-1 mb-2", children: E.map((e) => /* @__PURE__ */ n(
|
|
146
|
+
"div",
|
|
147
|
+
{
|
|
148
|
+
className: "text-center text-xs font-semibold text-base-content/60 py-2",
|
|
149
|
+
children: e
|
|
150
|
+
},
|
|
151
|
+
e
|
|
152
|
+
)) }),
|
|
153
|
+
/* @__PURE__ */ n("div", { className: "grid grid-cols-7 gap-1", children: w.map((e, s) => /* @__PURE__ */ n(
|
|
154
|
+
"button",
|
|
155
|
+
{
|
|
156
|
+
type: "button",
|
|
157
|
+
disabled: !e,
|
|
158
|
+
onClick: () => e && z(e),
|
|
159
|
+
className: `
|
|
160
|
+
aspect-square flex items-center justify-center text-sm rounded-lg
|
|
161
|
+
${e ? "hover:bg-base-200" : "invisible"}
|
|
162
|
+
${x(e) ? "bg-primary text-primary-content hover:bg-primary/90" : ""}
|
|
163
|
+
${I(e) && !x(e) ? "border border-primary" : ""}
|
|
164
|
+
${e ? "cursor-pointer" : ""}
|
|
165
|
+
`,
|
|
166
|
+
children: e
|
|
167
|
+
},
|
|
168
|
+
s
|
|
169
|
+
)) }),
|
|
170
|
+
/* @__PURE__ */ n("div", { className: "mt-4 flex justify-end", children: /* @__PURE__ */ n(
|
|
171
|
+
"button",
|
|
172
|
+
{
|
|
173
|
+
type: "button",
|
|
174
|
+
onClick: () => {
|
|
175
|
+
const e = /* @__PURE__ */ new Date();
|
|
176
|
+
p(e), i(e.getMonth()), b(e.getFullYear()), d?.(e), u(!1);
|
|
177
|
+
},
|
|
178
|
+
className: `${D} ${M} ${y}`,
|
|
179
|
+
children: "Today"
|
|
180
|
+
}
|
|
181
|
+
) })
|
|
182
|
+
] })
|
|
183
|
+
] });
|
|
184
|
+
};
|
|
185
|
+
export {
|
|
186
|
+
U as DatePicker
|
|
187
|
+
};
|
|
188
|
+
//# sourceMappingURL=DatePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker.js","sources":["../../src/components/DatePicker.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react'\nimport { Input } from './Input'\nimport { useConfig } from './ConfigProvider'\n\n// DaisyUI classes\nconst dBtn = 'd-btn'\nconst dBtnGhost = 'd-btn-ghost'\nconst dBtnSm = 'd-btn-sm'\nconst dBtnSquare = 'd-btn-square'\n\nexport interface DatePickerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n value?: Date | null\n defaultValue?: Date | null\n onChange?: (date: Date | null) => void\n format?: string\n placeholder?: string\n disabled?: boolean\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n}\n\nconst DAYS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\nconst MONTHS = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n]\n\nfunction formatDate(date: Date | null, format: string = 'MM/DD/YYYY'): string {\n if (!date) return ''\n\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n\n return format\n .replace('YYYY', String(year))\n .replace('MM', month)\n .replace('DD', day)\n}\n\nfunction getDaysInMonth(year: number, month: number): number {\n return new Date(year, month + 1, 0).getDate()\n}\n\nfunction getFirstDayOfMonth(year: number, month: number): number {\n return new Date(year, month, 1).getDay()\n}\n\nexport const DatePicker: React.FC<DatePickerProps> = ({\n value,\n defaultValue,\n onChange,\n format,\n placeholder = 'Select date',\n disabled = false,\n className = '',\n size,\n ...rest\n}) => {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n const [selectedDate, setSelectedDate] = useState<Date | null>(\n value || defaultValue || null\n )\n const [isOpen, setIsOpen] = useState(false)\n const [viewMonth, setViewMonth] = useState(\n selectedDate ? selectedDate.getMonth() : new Date().getMonth()\n )\n const [viewYear, setViewYear] = useState(\n selectedDate ? selectedDate.getFullYear() : new Date().getFullYear()\n )\n\n const containerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (value !== undefined) {\n setSelectedDate(value)\n }\n }, [value])\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false)\n }\n }\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen])\n\n const handleDateSelect = (day: number) => {\n const newDate = new Date(viewYear, viewMonth, day)\n setSelectedDate(newDate)\n onChange?.(newDate)\n setIsOpen(false)\n }\n\n const handlePrevMonth = () => {\n if (viewMonth === 0) {\n setViewMonth(11)\n setViewYear(viewYear - 1)\n } else {\n setViewMonth(viewMonth - 1)\n }\n }\n\n const handleNextMonth = () => {\n if (viewMonth === 11) {\n setViewMonth(0)\n setViewYear(viewYear + 1)\n } else {\n setViewMonth(viewMonth + 1)\n }\n }\n\n const daysInMonth = getDaysInMonth(viewYear, viewMonth)\n const firstDayOfMonth = getFirstDayOfMonth(viewYear, viewMonth)\n\n const calendarDays: (number | null)[] = []\n for (let i = 0; i < firstDayOfMonth; i++) {\n calendarDays.push(null)\n }\n for (let i = 1; i <= daysInMonth; i++) {\n calendarDays.push(i)\n }\n\n const isSelectedDay = (day: number | null): boolean => {\n if (!day || !selectedDate) return false\n return (\n selectedDate.getDate() === day &&\n selectedDate.getMonth() === viewMonth &&\n selectedDate.getFullYear() === viewYear\n )\n }\n\n const isToday = (day: number | null): boolean => {\n if (!day) return false\n const today = new Date()\n return (\n today.getDate() === day &&\n today.getMonth() === viewMonth &&\n today.getFullYear() === viewYear\n )\n }\n\n return (\n <div ref={containerRef} className={`relative ${className}`} data-state={isOpen ? 'open' : 'closed'} {...rest}>\n <Input\n value={formatDate(selectedDate, format)}\n placeholder={placeholder}\n disabled={disabled}\n size={effectiveSize}\n readOnly\n onClick={() => !disabled && setIsOpen(!isOpen)}\n className=\"cursor-pointer\"\n />\n\n {isOpen && (\n <div className=\"absolute top-full left-0 mt-2 bg-base-100 border border-base-300 rounded-lg shadow-lg p-4 z-50 w-80\">\n {/* Header */}\n <div className=\"flex items-center justify-between mb-4\">\n <button\n type=\"button\"\n onClick={handlePrevMonth}\n className={`${dBtn} ${dBtnGhost} ${dBtnSm} ${dBtnSquare}`}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n\n <div className=\"text-base font-semibold\">\n {MONTHS[viewMonth]} {viewYear}\n </div>\n\n <button\n type=\"button\"\n onClick={handleNextMonth}\n className={`${dBtn} ${dBtnGhost} ${dBtnSm} ${dBtnSquare}`}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n </div>\n\n {/* Days of week */}\n <div className=\"grid grid-cols-7 gap-1 mb-2\">\n {DAYS.map((day) => (\n <div\n key={day}\n className=\"text-center text-xs font-semibold text-base-content/60 py-2\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {calendarDays.map((day, index) => (\n <button\n key={index}\n type=\"button\"\n disabled={!day}\n onClick={() => day && handleDateSelect(day)}\n className={`\n aspect-square flex items-center justify-center text-sm rounded-lg\n ${!day ? 'invisible' : 'hover:bg-base-200'}\n ${isSelectedDay(day) ? 'bg-primary text-primary-content hover:bg-primary/90' : ''}\n ${isToday(day) && !isSelectedDay(day) ? 'border border-primary' : ''}\n ${day ? 'cursor-pointer' : ''}\n `}\n >\n {day}\n </button>\n ))}\n </div>\n\n {/* Today button */}\n <div className=\"mt-4 flex justify-end\">\n <button\n type=\"button\"\n onClick={() => {\n const today = new Date()\n setSelectedDate(today)\n setViewMonth(today.getMonth())\n setViewYear(today.getFullYear())\n onChange?.(today)\n setIsOpen(false)\n }}\n className={`${dBtn} ${dBtnGhost} ${dBtnSm}`}\n >\n Today\n </button>\n </div>\n </div>\n )}\n </div>\n )\n}\n"],"names":["dBtn","dBtnGhost","dBtnSm","dBtnSquare","DAYS","MONTHS","formatDate","date","format","year","month","day","getDaysInMonth","getFirstDayOfMonth","DatePicker","value","defaultValue","onChange","placeholder","disabled","className","size","rest","componentSize","useConfig","effectiveSize","selectedDate","setSelectedDate","useState","isOpen","setIsOpen","viewMonth","setViewMonth","viewYear","setViewYear","containerRef","useRef","useEffect","handleClickOutside","event","handleDateSelect","newDate","handlePrevMonth","handleNextMonth","daysInMonth","firstDayOfMonth","calendarDays","i","isSelectedDay","isToday","today","jsxs","jsx","Input","index"],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export type DescriptionsSize = 'sm' | 'md' | 'lg';
|
|
3
|
+
export type DescriptionsLayout = 'horizontal' | 'vertical';
|
|
4
|
+
export interface DescriptionsItemProps {
|
|
5
|
+
/** Unique key for the item */
|
|
6
|
+
itemKey?: string;
|
|
7
|
+
/** Label for the item */
|
|
8
|
+
label?: React.ReactNode;
|
|
9
|
+
/** Number of columns to span, or 'filled' to fill remaining space */
|
|
10
|
+
span?: number | 'filled';
|
|
11
|
+
/** Content of the item */
|
|
12
|
+
children?: React.ReactNode;
|
|
13
|
+
/** Custom label styles */
|
|
14
|
+
labelStyle?: React.CSSProperties;
|
|
15
|
+
/** Custom content styles */
|
|
16
|
+
contentStyle?: React.CSSProperties;
|
|
17
|
+
/** Custom label class */
|
|
18
|
+
labelClassName?: string;
|
|
19
|
+
/** Custom content class */
|
|
20
|
+
contentClassName?: string;
|
|
21
|
+
}
|
|
22
|
+
/** Item configuration for the items prop */
|
|
23
|
+
export interface DescriptionsItemConfig {
|
|
24
|
+
/** Unique key for the item (used for test IDs and React keys) */
|
|
25
|
+
key?: string;
|
|
26
|
+
/** Label for the item */
|
|
27
|
+
label: React.ReactNode;
|
|
28
|
+
/** Content of the item */
|
|
29
|
+
children: React.ReactNode;
|
|
30
|
+
/** Number of columns to span, or 'filled' to fill remaining space */
|
|
31
|
+
span?: number | 'filled';
|
|
32
|
+
/** Custom label styles */
|
|
33
|
+
labelStyle?: React.CSSProperties;
|
|
34
|
+
/** Custom content styles */
|
|
35
|
+
contentStyle?: React.CSSProperties;
|
|
36
|
+
/** Custom label class */
|
|
37
|
+
labelClassName?: string;
|
|
38
|
+
/** Custom content class */
|
|
39
|
+
contentClassName?: string;
|
|
40
|
+
}
|
|
41
|
+
/** Semantic DOM structure for styles/classNames */
|
|
42
|
+
export type DescriptionsSemanticDOM = 'root' | 'header' | 'title' | 'extra' | 'table' | 'label' | 'content';
|
|
43
|
+
export interface DescriptionsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
44
|
+
/** Title of the descriptions block */
|
|
45
|
+
title?: React.ReactNode;
|
|
46
|
+
/** Extra content in the top-right corner */
|
|
47
|
+
extra?: React.ReactNode;
|
|
48
|
+
/** Show borders around cells */
|
|
49
|
+
bordered?: boolean;
|
|
50
|
+
/** Number of columns (or responsive config) */
|
|
51
|
+
column?: number | {
|
|
52
|
+
xs?: number;
|
|
53
|
+
sm?: number;
|
|
54
|
+
md?: number;
|
|
55
|
+
lg?: number;
|
|
56
|
+
xl?: number;
|
|
57
|
+
'2xl'?: number;
|
|
58
|
+
};
|
|
59
|
+
/** Size variant */
|
|
60
|
+
size?: DescriptionsSize;
|
|
61
|
+
/** Layout direction */
|
|
62
|
+
layout?: DescriptionsLayout;
|
|
63
|
+
/** Show colon after labels */
|
|
64
|
+
colon?: boolean;
|
|
65
|
+
/** Default label styles (deprecated, use styles.label) */
|
|
66
|
+
labelStyle?: React.CSSProperties;
|
|
67
|
+
/** Default content styles (deprecated, use styles.content) */
|
|
68
|
+
contentStyle?: React.CSSProperties;
|
|
69
|
+
/** Semantic styles for component parts */
|
|
70
|
+
styles?: Partial<Record<DescriptionsSemanticDOM, React.CSSProperties>>;
|
|
71
|
+
/** Semantic classNames for component parts */
|
|
72
|
+
classNames?: Partial<Record<DescriptionsSemanticDOM, string>>;
|
|
73
|
+
/** Item configurations (alternative to children) */
|
|
74
|
+
items?: DescriptionsItemConfig[];
|
|
75
|
+
/** Children (Descriptions.Item elements) */
|
|
76
|
+
children?: React.ReactNode;
|
|
77
|
+
/** Test ID for the component */
|
|
78
|
+
'data-testid'?: string;
|
|
79
|
+
}
|
|
80
|
+
declare function DescriptionsItem(_props: DescriptionsItemProps): null;
|
|
81
|
+
export declare const Descriptions: React.ForwardRefExoticComponent<DescriptionsProps & React.RefAttributes<HTMLDivElement>> & {
|
|
82
|
+
Item: typeof DescriptionsItem;
|
|
83
|
+
};
|
|
84
|
+
export default Descriptions;
|