asterui 0.12.49 → 0.12.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/dist/components/Alert.js +18 -18
  2. package/dist/components/Alert.js.map +1 -1
  3. package/dist/components/Autocomplete.js +115 -114
  4. package/dist/components/Autocomplete.js.map +1 -1
  5. package/dist/components/Avatar.js +33 -32
  6. package/dist/components/Avatar.js.map +1 -1
  7. package/dist/components/Badge.js +99 -99
  8. package/dist/components/Badge.js.map +1 -1
  9. package/dist/components/Breadcrumb.js +12 -11
  10. package/dist/components/Breadcrumb.js.map +1 -1
  11. package/dist/components/Browser.js +10 -10
  12. package/dist/components/Browser.js.map +1 -1
  13. package/dist/components/Button.js +80 -79
  14. package/dist/components/Button.js.map +1 -1
  15. package/dist/components/Card.d.ts +2 -0
  16. package/dist/components/Card.js +111 -110
  17. package/dist/components/Card.js.map +1 -1
  18. package/dist/components/Carousel.js +59 -59
  19. package/dist/components/Carousel.js.map +1 -1
  20. package/dist/components/Cascader.js +175 -174
  21. package/dist/components/Cascader.js.map +1 -1
  22. package/dist/components/Chat.js +27 -27
  23. package/dist/components/Chat.js.map +1 -1
  24. package/dist/components/Checkbox.js +98 -97
  25. package/dist/components/Checkbox.js.map +1 -1
  26. package/dist/components/Code.js +11 -11
  27. package/dist/components/Code.js.map +1 -1
  28. package/dist/components/Collapse.js +46 -46
  29. package/dist/components/Collapse.js.map +1 -1
  30. package/dist/components/ColorPicker.d.ts +1 -1
  31. package/dist/components/ColorPicker.js +93 -91
  32. package/dist/components/ColorPicker.js.map +1 -1
  33. package/dist/components/Command.js +120 -120
  34. package/dist/components/Command.js.map +1 -1
  35. package/dist/components/ConfigProvider.d.ts +1 -1
  36. package/dist/components/ConfigProvider.js +9 -9
  37. package/dist/components/ConfigProvider.js.map +1 -1
  38. package/dist/components/ContextMenu.js +33 -33
  39. package/dist/components/ContextMenu.js.map +1 -1
  40. package/dist/components/CopyButton.js +74 -73
  41. package/dist/components/CopyButton.js.map +1 -1
  42. package/dist/components/Countdown.js +60 -59
  43. package/dist/components/Countdown.js.map +1 -1
  44. package/dist/components/DatePicker.d.ts +1 -1
  45. package/dist/components/DatePicker.js +54 -53
  46. package/dist/components/DatePicker.js.map +1 -1
  47. package/dist/components/Diff.js +10 -10
  48. package/dist/components/Diff.js.map +1 -1
  49. package/dist/components/Divider.js +21 -20
  50. package/dist/components/Divider.js.map +1 -1
  51. package/dist/components/Dock.js +28 -27
  52. package/dist/components/Dock.js.map +1 -1
  53. package/dist/components/Drawer.js +43 -43
  54. package/dist/components/Drawer.js.map +1 -1
  55. package/dist/components/Dropdown.js +127 -127
  56. package/dist/components/Dropdown.js.map +1 -1
  57. package/dist/components/Empty.js +16 -15
  58. package/dist/components/Empty.js.map +1 -1
  59. package/dist/components/Fieldset.js +11 -10
  60. package/dist/components/Fieldset.js.map +1 -1
  61. package/dist/components/FileInput.js +30 -29
  62. package/dist/components/FileInput.js.map +1 -1
  63. package/dist/components/Filter.d.ts +1 -1
  64. package/dist/components/Filter.js +32 -30
  65. package/dist/components/Filter.js.map +1 -1
  66. package/dist/components/FloatButton.js +83 -83
  67. package/dist/components/FloatButton.js.map +1 -1
  68. package/dist/components/Footer.js +14 -13
  69. package/dist/components/Footer.js.map +1 -1
  70. package/dist/components/Form.js +133 -132
  71. package/dist/components/Form.js.map +1 -1
  72. package/dist/components/Hero.js +12 -11
  73. package/dist/components/Hero.js.map +1 -1
  74. package/dist/components/HoverGallery.js +7 -7
  75. package/dist/components/HoverGallery.js.map +1 -1
  76. package/dist/components/Image.js +40 -40
  77. package/dist/components/Image.js.map +1 -1
  78. package/dist/components/Input.js +171 -169
  79. package/dist/components/Input.js.map +1 -1
  80. package/dist/components/InputNumber.js +84 -83
  81. package/dist/components/InputNumber.js.map +1 -1
  82. package/dist/components/Join.js +11 -10
  83. package/dist/components/Join.js.map +1 -1
  84. package/dist/components/Kbd.js +15 -15
  85. package/dist/components/Kbd.js.map +1 -1
  86. package/dist/components/List.d.ts +1 -1
  87. package/dist/components/List.js +75 -72
  88. package/dist/components/List.js.map +1 -1
  89. package/dist/components/Loading.d.ts +1 -1
  90. package/dist/components/Loading.js +31 -29
  91. package/dist/components/Loading.js.map +1 -1
  92. package/dist/components/Mask.js +31 -31
  93. package/dist/components/Mask.js.map +1 -1
  94. package/dist/components/Mention.js +61 -61
  95. package/dist/components/Mention.js.map +1 -1
  96. package/dist/components/Menu.js +84 -84
  97. package/dist/components/Menu.js.map +1 -1
  98. package/dist/components/Message.js +30 -29
  99. package/dist/components/Message.js.map +1 -1
  100. package/dist/components/Modal.js +117 -116
  101. package/dist/components/Modal.js.map +1 -1
  102. package/dist/components/MonthCalendar.d.ts +31 -0
  103. package/dist/components/MonthCalendar.js +205 -0
  104. package/dist/components/MonthCalendar.js.map +1 -0
  105. package/dist/components/Navbar.js +25 -25
  106. package/dist/components/Navbar.js.map +1 -1
  107. package/dist/components/Notification.js +56 -55
  108. package/dist/components/Notification.js.map +1 -1
  109. package/dist/components/OTPInput.js +69 -68
  110. package/dist/components/OTPInput.js.map +1 -1
  111. package/dist/components/Pagination.d.ts +1 -1
  112. package/dist/components/Pagination.js +60 -58
  113. package/dist/components/Pagination.js.map +1 -1
  114. package/dist/components/Phone.js +10 -10
  115. package/dist/components/Phone.js.map +1 -1
  116. package/dist/components/Popconfirm.js +60 -60
  117. package/dist/components/Popconfirm.js.map +1 -1
  118. package/dist/components/Progress.js +17 -17
  119. package/dist/components/Progress.js.map +1 -1
  120. package/dist/components/QRCode.js +23 -23
  121. package/dist/components/QRCode.js.map +1 -1
  122. package/dist/components/RadialProgress.js +17 -17
  123. package/dist/components/RadialProgress.js.map +1 -1
  124. package/dist/components/Radio.js +41 -40
  125. package/dist/components/Radio.js.map +1 -1
  126. package/dist/components/Range.d.ts +1 -1
  127. package/dist/components/Range.js +39 -37
  128. package/dist/components/Range.js.map +1 -1
  129. package/dist/components/Rating.js +79 -78
  130. package/dist/components/Rating.js.map +1 -1
  131. package/dist/components/ResponsiveDrawer.js +27 -27
  132. package/dist/components/ResponsiveDrawer.js.map +1 -1
  133. package/dist/components/RichTextEditor.d.ts +32 -0
  134. package/dist/components/RichTextEditor.js +335 -0
  135. package/dist/components/RichTextEditor.js.map +1 -0
  136. package/dist/components/Segmented.d.ts +1 -1
  137. package/dist/components/Segmented.js +48 -46
  138. package/dist/components/Segmented.js.map +1 -1
  139. package/dist/components/Select.js +55 -54
  140. package/dist/components/Select.js.map +1 -1
  141. package/dist/components/Skeleton.js +9 -9
  142. package/dist/components/Skeleton.js.map +1 -1
  143. package/dist/components/Splitter.js +1 -3
  144. package/dist/components/Splitter.js.map +1 -1
  145. package/dist/components/Stat.js +17 -16
  146. package/dist/components/Stat.js.map +1 -1
  147. package/dist/components/Status.js +29 -29
  148. package/dist/components/Status.js.map +1 -1
  149. package/dist/components/Steps.js +61 -61
  150. package/dist/components/Steps.js.map +1 -1
  151. package/dist/components/Table.js +256 -256
  152. package/dist/components/Table.js.map +1 -1
  153. package/dist/components/Tabs.js +65 -65
  154. package/dist/components/Tabs.js.map +1 -1
  155. package/dist/components/Tag.js +147 -147
  156. package/dist/components/Tag.js.map +1 -1
  157. package/dist/components/TextRotate.js +6 -6
  158. package/dist/components/TextRotate.js.map +1 -1
  159. package/dist/components/Textarea.js +35 -34
  160. package/dist/components/Textarea.js.map +1 -1
  161. package/dist/components/ThemeController.d.ts +1 -1
  162. package/dist/components/ThemeController.js +71 -68
  163. package/dist/components/ThemeController.js.map +1 -1
  164. package/dist/components/TimePicker.d.ts +1 -1
  165. package/dist/components/TimePicker.js +133 -129
  166. package/dist/components/TimePicker.js.map +1 -1
  167. package/dist/components/Timeline.js +79 -79
  168. package/dist/components/Timeline.js.map +1 -1
  169. package/dist/components/Toggle.js +33 -32
  170. package/dist/components/Toggle.js.map +1 -1
  171. package/dist/components/Tooltip.js +25 -25
  172. package/dist/components/Tooltip.js.map +1 -1
  173. package/dist/components/Tour.js +126 -126
  174. package/dist/components/Tour.js.map +1 -1
  175. package/dist/components/Transfer.js +93 -92
  176. package/dist/components/Transfer.js.map +1 -1
  177. package/dist/components/Tree.js +200 -200
  178. package/dist/components/Tree.js.map +1 -1
  179. package/dist/components/TreeSelect.js +255 -254
  180. package/dist/components/TreeSelect.js.map +1 -1
  181. package/dist/components/Typography.js +71 -70
  182. package/dist/components/Typography.js.map +1 -1
  183. package/dist/components/Upload.js +81 -81
  184. package/dist/components/Upload.js.map +1 -1
  185. package/dist/components/WeekCalendar.d.ts +35 -0
  186. package/dist/components/WeekCalendar.js +204 -0
  187. package/dist/components/WeekCalendar.js.map +1 -0
  188. package/dist/components/Window.js +7 -7
  189. package/dist/components/Window.js.map +1 -1
  190. package/dist/editor.d.ts +1 -0
  191. package/dist/editor.js +5 -0
  192. package/dist/editor.js.map +1 -0
  193. package/dist/index.d.ts +4 -0
  194. package/dist/index.js +211 -207
  195. package/dist/index.js.map +1 -1
  196. package/package.json +30 -1
@@ -1,31 +1,32 @@
1
1
  import { jsx as t } from "react/jsx-runtime";
2
- import { useContext as f } from "react";
3
- import { useClipboard as M } from "../hooks/useClipboard.js";
4
- import { IconSizeContext as r } from "../contexts/IconSizeContext.js";
5
- const C = {
2
+ import { useContext as B } from "react";
3
+ import { useClipboard as G } from "../hooks/useClipboard.js";
4
+ import { IconSizeContext as c } from "../contexts/IconSizeContext.js";
5
+ import { useConfig as H } from "./ConfigProvider.js";
6
+ const M = "btn", O = "btn-primary", V = "btn-secondary", J = "btn-accent", K = "btn-info", h = "btn-success", Q = "btn-warning", R = "btn-error", U = "btn-neutral", Y = "btn-outline", Z = "btn-dash", _ = "btn-soft", $ = "btn-ghost", T = "btn-link", tt = "btn-xs", nt = "btn-sm", ot = "btn-lg", st = "btn-xl", et = "btn-square", ct = "btn-circle", rt = "tooltip", C = {
6
7
  xs: "w-3.5 h-3.5",
7
8
  sm: "w-3.5 h-3.5",
8
9
  md: "w-4 h-4",
9
10
  lg: "w-5 h-5",
10
11
  xl: "w-6 h-6"
11
- }, P = () => {
12
- const o = f(r) ?? "md";
12
+ }, at = () => {
13
+ const n = B(c) ?? "md";
13
14
  return /* @__PURE__ */ t(
14
15
  "svg",
15
16
  {
16
- className: C[o],
17
+ className: C[n],
17
18
  fill: "none",
18
19
  viewBox: "0 0 24 24",
19
20
  stroke: "currentColor",
20
21
  children: /* @__PURE__ */ t("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" })
21
22
  }
22
23
  );
23
- }, V = () => {
24
- const o = f(r) ?? "md";
24
+ }, it = () => {
25
+ const n = B(c) ?? "md";
25
26
  return /* @__PURE__ */ t(
26
27
  "svg",
27
28
  {
28
- className: C[o],
29
+ className: C[n],
29
30
  fill: "none",
30
31
  viewBox: "0 0 24 24",
31
32
  stroke: "currentColor",
@@ -37,86 +38,86 @@ const C = {
37
38
  "top-left": "absolute top-2 left-2",
38
39
  "bottom-right": "absolute bottom-2 right-2",
39
40
  "bottom-left": "absolute bottom-2 left-2"
40
- }, A = ({
41
- text: o,
41
+ }, lt = ({
42
+ text: n,
42
43
  timeout: g = 2e3,
43
- color: c,
44
+ color: r,
44
45
  variant: a,
45
- size: l = "md",
46
+ size: y,
46
47
  shape: i,
47
- position: s,
48
+ position: o,
48
49
  icon: k,
49
- copiedIcon: y,
50
- children: v,
51
- copiedChildren: w,
52
- onCopy: x,
53
- onError: I,
54
- showTooltip: u = !1,
55
- tooltipText: b = "Copy",
56
- copiedTooltipText: d = "Copied!",
57
- className: B = "",
50
+ copiedIcon: v,
51
+ children: w,
52
+ copiedChildren: x,
53
+ onCopy: S,
54
+ onError: z,
55
+ showTooltip: l = !1,
56
+ tooltipText: d = "Copy",
57
+ copiedTooltipText: u = "Copied!",
58
+ className: I = "",
58
59
  disabled: m,
59
- onClick: j,
60
- ...z
60
+ onClick: L,
61
+ ...N
61
62
  }) => {
62
- const { copy: N, copied: n } = M(g), L = async (e) => {
63
- if (j?.(e), m) return;
64
- await N(o) ? x?.() : I?.(new Error("Failed to copy to clipboard"));
65
- }, q = {
66
- primary: "btn-primary",
67
- secondary: "btn-secondary",
68
- accent: "btn-accent",
69
- info: "btn-info",
70
- success: "btn-success",
71
- warning: "btn-warning",
72
- error: "btn-error",
73
- neutral: "btn-neutral"
74
- }, S = {
63
+ const { componentSize: j } = H(), b = y ?? j ?? "md", { copy: q, copied: s } = G(g), W = async (e) => {
64
+ if (L?.(e), m) return;
65
+ await q(n) ? S?.() : z?.(new Error("Failed to copy to clipboard"));
66
+ }, E = {
67
+ primary: O,
68
+ secondary: V,
69
+ accent: J,
70
+ info: K,
71
+ success: h,
72
+ warning: Q,
73
+ error: R,
74
+ neutral: U
75
+ }, P = {
75
76
  solid: "",
76
- outline: "btn-outline",
77
- dash: "btn-dash",
78
- soft: "btn-soft",
79
- ghost: "btn-ghost",
80
- link: "btn-link"
81
- }, W = {
82
- xs: "btn-xs",
83
- sm: "btn-sm",
77
+ outline: Y,
78
+ dash: Z,
79
+ soft: _,
80
+ ghost: $,
81
+ link: T
82
+ }, X = {
83
+ xs: tt,
84
+ sm: nt,
84
85
  md: "",
85
- lg: "btn-lg",
86
- xl: "btn-xl"
87
- }, E = {
88
- square: "btn-square",
89
- circle: "btn-circle"
90
- }, F = [
91
- "btn",
92
- c && q[c],
93
- n && "btn-success",
94
- a && S[a],
95
- W[l],
96
- i && E[i],
86
+ lg: ot,
87
+ xl: st
88
+ }, A = {
89
+ square: et,
90
+ circle: ct
91
+ }, D = [
92
+ M,
93
+ r && E[r],
94
+ s && h,
95
+ a && P[a],
96
+ X[b],
97
+ i && A[i],
97
98
  // Only add position classes if not using tooltip (tooltip wrapper gets them instead)
98
- !u && s && p[s],
99
- B
100
- ].filter(Boolean).join(" "), H = n ? w ?? (y ?? /* @__PURE__ */ t(V, {})) : v ?? (k ?? /* @__PURE__ */ t(P, {})), h = /* @__PURE__ */ t(
99
+ !l && o && p[o],
100
+ I
101
+ ].filter(Boolean).join(" "), F = s ? x ?? (v ?? /* @__PURE__ */ t(it, {})) : w ?? (k ?? /* @__PURE__ */ t(at, {})), f = /* @__PURE__ */ t(
101
102
  "button",
102
103
  {
103
104
  type: "button",
104
- className: F,
105
- onClick: L,
105
+ className: D,
106
+ onClick: W,
106
107
  disabled: m,
107
- "aria-label": n ? d : b,
108
- ...z,
109
- children: /* @__PURE__ */ t(r.Provider, { value: l, children: H })
108
+ "aria-label": s ? u : d,
109
+ ...N,
110
+ children: /* @__PURE__ */ t(c.Provider, { value: b, children: F })
110
111
  }
111
112
  );
112
- if (u) {
113
- const e = ["tooltip", s && p[s]].filter(Boolean).join(" ");
114
- return /* @__PURE__ */ t("div", { className: e, "data-tip": n ? d : b, children: h });
113
+ if (l) {
114
+ const e = [rt, o && p[o]].filter(Boolean).join(" ");
115
+ return /* @__PURE__ */ t("div", { className: e, "data-tip": s ? u : d, children: f });
115
116
  }
116
- return h;
117
+ return f;
117
118
  };
118
- A.displayName = "CopyButton";
119
+ lt.displayName = "CopyButton";
119
120
  export {
120
- A as CopyButton
121
+ lt as CopyButton
121
122
  };
122
123
  //# sourceMappingURL=CopyButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CopyButton.js","sources":["../../src/components/CopyButton.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport { useClipboard } from '../hooks/useClipboard'\nimport { IconSizeContext } from '../contexts/IconSizeContext'\n\nconst iconSizeClasses = {\n xs: 'w-3.5 h-3.5',\n sm: 'w-3.5 h-3.5',\n md: 'w-4 h-4',\n lg: 'w-5 h-5',\n xl: 'w-6 h-6',\n}\n\nexport type CopyButtonPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'\n\nexport interface CopyButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children' | 'onError'> {\n /** Text to copy to clipboard */\n text: string\n /** Duration in ms to show copied state */\n timeout?: number\n /** Button color */\n color?: 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error' | 'neutral'\n /** Button style variant */\n variant?: 'solid' | 'outline' | 'dash' | 'soft' | 'ghost' | 'link'\n /** Button size */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Button shape */\n shape?: 'square' | 'circle'\n /** Absolute position within parent (parent must have position: relative) */\n position?: CopyButtonPosition\n /** Custom icon for default state */\n icon?: React.ReactNode\n /** Custom icon for copied state */\n copiedIcon?: React.ReactNode\n /** Custom content for default state (overrides icon) */\n children?: React.ReactNode\n /** Custom content for copied state */\n copiedChildren?: React.ReactNode\n /** Callback when copy succeeds */\n onCopy?: () => void\n /** Callback when copy fails */\n onError?: (error: Error) => void\n /** Show tooltip with copy status */\n showTooltip?: boolean\n /** Tooltip text for default state */\n tooltipText?: string\n /** Tooltip text for copied state */\n copiedTooltipText?: string\n}\n\nconst CopyIcon: React.FC = () => {\n const size = useContext(IconSizeContext) ?? 'md'\n return (\n <svg\n className={iconSizeClasses[size]}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\" />\n </svg>\n )\n}\n\nconst CheckIcon: React.FC = () => {\n const size = useContext(IconSizeContext) ?? 'md'\n return (\n <svg\n className={iconSizeClasses[size]}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"m4.5 12.75 6 6 9-13.5\" />\n </svg>\n )\n}\n\nconst positionClasses: Record<CopyButtonPosition, string> = {\n 'top-right': 'absolute top-2 right-2',\n 'top-left': 'absolute top-2 left-2',\n 'bottom-right': 'absolute bottom-2 right-2',\n 'bottom-left': 'absolute bottom-2 left-2',\n}\n\nexport const CopyButton: React.FC<CopyButtonProps> = ({\n text,\n timeout = 2000,\n color,\n variant,\n size = 'md',\n shape,\n position,\n icon,\n copiedIcon,\n children,\n copiedChildren,\n onCopy,\n onError,\n showTooltip = false,\n tooltipText = 'Copy',\n copiedTooltipText = 'Copied!',\n className = '',\n disabled,\n onClick,\n ...rest\n}) => {\n const { copy, copied } = useClipboard(timeout)\n\n const handleClick = async (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e)\n if (disabled) return\n\n const success = await copy(text)\n if (success) {\n onCopy?.()\n } else {\n onError?.(new Error('Failed to copy to clipboard'))\n }\n }\n\n const colorClasses = {\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n accent: 'btn-accent',\n info: 'btn-info',\n success: 'btn-success',\n warning: 'btn-warning',\n error: 'btn-error',\n neutral: 'btn-neutral',\n }\n\n const variantClasses = {\n solid: '',\n outline: 'btn-outline',\n dash: 'btn-dash',\n soft: 'btn-soft',\n ghost: 'btn-ghost',\n link: 'btn-link',\n }\n\n const sizeClasses = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: '',\n lg: 'btn-lg',\n xl: 'btn-xl',\n }\n\n const shapeClasses = {\n square: 'btn-square',\n circle: 'btn-circle',\n }\n\n const classes = [\n 'btn',\n color && colorClasses[color],\n copied && 'btn-success',\n variant && variantClasses[variant],\n sizeClasses[size],\n shape && shapeClasses[shape],\n // Only add position classes if not using tooltip (tooltip wrapper gets them instead)\n !showTooltip && position && positionClasses[position],\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const defaultIcon = icon ?? <CopyIcon />\n const successIcon = copiedIcon ?? <CheckIcon />\n\n const content = copied\n ? (copiedChildren ?? successIcon)\n : (children ?? defaultIcon)\n\n const button = (\n <button\n type=\"button\"\n className={classes}\n onClick={handleClick}\n disabled={disabled}\n aria-label={copied ? copiedTooltipText : tooltipText}\n {...rest}\n >\n <IconSizeContext.Provider value={size}>\n {content}\n </IconSizeContext.Provider>\n </button>\n )\n\n if (showTooltip) {\n const tooltipClasses = ['tooltip', position && positionClasses[position]].filter(Boolean).join(' ')\n return (\n <div className={tooltipClasses} data-tip={copied ? copiedTooltipText : tooltipText}>\n {button}\n </div>\n )\n }\n\n return button\n}\n\nCopyButton.displayName = 'CopyButton'\n"],"names":["iconSizeClasses","CopyIcon","size","useContext","IconSizeContext","jsx","CheckIcon","positionClasses","CopyButton","text","timeout","color","variant","shape","position","icon","copiedIcon","children","copiedChildren","onCopy","onError","showTooltip","tooltipText","copiedTooltipText","className","disabled","onClick","rest","copy","copied","useClipboard","handleClick","colorClasses","variantClasses","sizeClasses","shapeClasses","classes","content","button","tooltipClasses"],"mappings":"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"}
1
+ {"version":3,"file":"CopyButton.js","sources":["../../src/components/CopyButton.tsx"],"sourcesContent":["import React, { useContext } from 'react'\nimport { useClipboard } from '../hooks/useClipboard'\nimport { IconSizeContext } from '../contexts/IconSizeContext'\nimport { useConfig } from './ConfigProvider'\n\n// DaisyUI classes\nconst dBtn = 'btn'\nconst dBtnPrimary = 'btn-primary'\nconst dBtnSecondary = 'btn-secondary'\nconst dBtnAccent = 'btn-accent'\nconst dBtnInfo = 'btn-info'\nconst dBtnSuccess = 'btn-success'\nconst dBtnWarning = 'btn-warning'\nconst dBtnError = 'btn-error'\nconst dBtnNeutral = 'btn-neutral'\nconst dBtnOutline = 'btn-outline'\nconst dBtnDash = 'btn-dash'\nconst dBtnSoft = 'btn-soft'\nconst dBtnGhost = 'btn-ghost'\nconst dBtnLink = 'btn-link'\nconst dBtnXs = 'btn-xs'\nconst dBtnSm = 'btn-sm'\nconst dBtnLg = 'btn-lg'\nconst dBtnXl = 'btn-xl'\nconst dBtnSquare = 'btn-square'\nconst dBtnCircle = 'btn-circle'\nconst dTooltip = 'tooltip'\n\nconst iconSizeClasses = {\n xs: 'w-3.5 h-3.5',\n sm: 'w-3.5 h-3.5',\n md: 'w-4 h-4',\n lg: 'w-5 h-5',\n xl: 'w-6 h-6',\n}\n\nexport type CopyButtonPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'\n\nexport interface CopyButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children' | 'onError'> {\n /** Text to copy to clipboard */\n text: string\n /** Duration in ms to show copied state */\n timeout?: number\n /** Button color */\n color?: 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error' | 'neutral'\n /** Button style variant */\n variant?: 'solid' | 'outline' | 'dash' | 'soft' | 'ghost' | 'link'\n /** Button size */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Button shape */\n shape?: 'square' | 'circle'\n /** Absolute position within parent (parent must have position: relative) */\n position?: CopyButtonPosition\n /** Custom icon for default state */\n icon?: React.ReactNode\n /** Custom icon for copied state */\n copiedIcon?: React.ReactNode\n /** Custom content for default state (overrides icon) */\n children?: React.ReactNode\n /** Custom content for copied state */\n copiedChildren?: React.ReactNode\n /** Callback when copy succeeds */\n onCopy?: () => void\n /** Callback when copy fails */\n onError?: (error: Error) => void\n /** Show tooltip with copy status */\n showTooltip?: boolean\n /** Tooltip text for default state */\n tooltipText?: string\n /** Tooltip text for copied state */\n copiedTooltipText?: string\n}\n\nconst CopyIcon: React.FC = () => {\n const size = useContext(IconSizeContext) ?? 'md'\n return (\n <svg\n className={iconSizeClasses[size]}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z\" />\n </svg>\n )\n}\n\nconst CheckIcon: React.FC = () => {\n const size = useContext(IconSizeContext) ?? 'md'\n return (\n <svg\n className={iconSizeClasses[size]}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"m4.5 12.75 6 6 9-13.5\" />\n </svg>\n )\n}\n\nconst positionClasses: Record<CopyButtonPosition, string> = {\n 'top-right': 'absolute top-2 right-2',\n 'top-left': 'absolute top-2 left-2',\n 'bottom-right': 'absolute bottom-2 right-2',\n 'bottom-left': 'absolute bottom-2 left-2',\n}\n\nexport const CopyButton: React.FC<CopyButtonProps> = ({\n text,\n timeout = 2000,\n color,\n variant,\n size,\n shape,\n position,\n icon,\n copiedIcon,\n children,\n copiedChildren,\n onCopy,\n onError,\n showTooltip = false,\n tooltipText = 'Copy',\n copiedTooltipText = 'Copied!',\n className = '',\n disabled,\n onClick,\n ...rest\n}) => {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n const { copy, copied } = useClipboard(timeout)\n\n const handleClick = async (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e)\n if (disabled) return\n\n const success = await copy(text)\n if (success) {\n onCopy?.()\n } else {\n onError?.(new Error('Failed to copy to clipboard'))\n }\n }\n\n const colorClasses = {\n primary: dBtnPrimary,\n secondary: dBtnSecondary,\n accent: dBtnAccent,\n info: dBtnInfo,\n success: dBtnSuccess,\n warning: dBtnWarning,\n error: dBtnError,\n neutral: dBtnNeutral,\n }\n\n const variantClasses = {\n solid: '',\n outline: dBtnOutline,\n dash: dBtnDash,\n soft: dBtnSoft,\n ghost: dBtnGhost,\n link: dBtnLink,\n }\n\n const sizeClasses = {\n xs: dBtnXs,\n sm: dBtnSm,\n md: '',\n lg: dBtnLg,\n xl: dBtnXl,\n }\n\n const shapeClasses = {\n square: dBtnSquare,\n circle: dBtnCircle,\n }\n\n const classes = [\n dBtn,\n color && colorClasses[color],\n copied && dBtnSuccess,\n variant && variantClasses[variant],\n sizeClasses[effectiveSize],\n shape && shapeClasses[shape],\n // Only add position classes if not using tooltip (tooltip wrapper gets them instead)\n !showTooltip && position && positionClasses[position],\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n const defaultIcon = icon ?? <CopyIcon />\n const successIcon = copiedIcon ?? <CheckIcon />\n\n const content = copied\n ? (copiedChildren ?? successIcon)\n : (children ?? defaultIcon)\n\n const button = (\n <button\n type=\"button\"\n className={classes}\n onClick={handleClick}\n disabled={disabled}\n aria-label={copied ? copiedTooltipText : tooltipText}\n {...rest}\n >\n <IconSizeContext.Provider value={effectiveSize}>\n {content}\n </IconSizeContext.Provider>\n </button>\n )\n\n if (showTooltip) {\n const tooltipClasses = [dTooltip, position && positionClasses[position]].filter(Boolean).join(' ')\n return (\n <div className={tooltipClasses} data-tip={copied ? copiedTooltipText : tooltipText}>\n {button}\n </div>\n )\n }\n\n return button\n}\n\nCopyButton.displayName = 'CopyButton'\n"],"names":["dBtn","dBtnPrimary","dBtnSecondary","dBtnAccent","dBtnInfo","dBtnSuccess","dBtnWarning","dBtnError","dBtnNeutral","dBtnOutline","dBtnDash","dBtnSoft","dBtnGhost","dBtnLink","dBtnXs","dBtnSm","dBtnLg","dBtnXl","dBtnSquare","dBtnCircle","dTooltip","iconSizeClasses","CopyIcon","size","useContext","IconSizeContext","jsx","CheckIcon","positionClasses","CopyButton","text","timeout","color","variant","shape","position","icon","copiedIcon","children","copiedChildren","onCopy","onError","showTooltip","tooltipText","copiedTooltipText","className","disabled","onClick","rest","componentSize","useConfig","effectiveSize","copy","copied","useClipboard","handleClick","colorClasses","variantClasses","sizeClasses","shapeClasses","classes","content","button","tooltipClasses"],"mappings":"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"}
@@ -1,117 +1,118 @@
1
- import { jsxs as c, jsx as t, Fragment as S } from "react/jsx-runtime";
1
+ import { jsxs as c, jsx as s, Fragment as N } from "react/jsx-runtime";
2
2
  import { useState as D, useCallback as k, useEffect as I } from "react";
3
- const T = (s) => {
4
- const e = s - Date.now();
3
+ import { useConfig as E } from "./ConfigProvider.js";
4
+ const F = "countdown", U = "--value", V = "--digits", T = (t) => {
5
+ const e = t - Date.now();
5
6
  return e <= 0 ? { days: 0, hours: 0, minutes: 0, seconds: 0 } : {
6
7
  days: Math.floor(e / (1e3 * 60 * 60 * 24)),
7
8
  hours: Math.floor(e / (1e3 * 60 * 60) % 24),
8
9
  minutes: Math.floor(e / 1e3 / 60 % 60),
9
10
  seconds: Math.floor(e / 1e3 % 60)
10
11
  };
11
- }, h = ({ value: s, label: e, size: r, showLabel: l, boxed: f }) => {
12
- const n = /* @__PURE__ */ t("span", { className: `countdown font-mono ${{
12
+ }, x = ({ value: t, label: e, size: l, showLabel: i, boxed: h }) => {
13
+ const n = /* @__PURE__ */ s("span", { className: `${F} font-mono ${{
13
14
  xs: "text-lg",
14
15
  sm: "text-2xl",
15
16
  md: "text-4xl",
16
17
  lg: "text-5xl",
17
18
  xl: "text-6xl"
18
- }[r || "md"]}`, children: /* @__PURE__ */ t(
19
+ }[l || "md"]}`, children: /* @__PURE__ */ s(
19
20
  "span",
20
21
  {
21
- style: { "--value": s, "--digits": 2 },
22
+ style: { [U]: t, [V]: 2 },
22
23
  "aria-live": "polite",
23
- "aria-label": String(s),
24
- children: String(s).padStart(2, "0")
24
+ "aria-label": String(t),
25
+ children: String(t).padStart(2, "0")
25
26
  }
26
27
  ) });
27
- return f ? /* @__PURE__ */ c("div", { className: "flex flex-col items-center bg-neutral text-neutral-content rounded-box p-2", children: [
28
+ return h ? /* @__PURE__ */ c("div", { className: "flex flex-col items-center bg-neutral text-neutral-content rounded-box p-2", children: [
28
29
  n,
29
- l && e && /* @__PURE__ */ t("span", { className: "text-xs mt-1", children: e })
30
- ] }) : l ? /* @__PURE__ */ c("div", { className: "flex flex-col items-center", children: [
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: [
31
32
  n,
32
- e && /* @__PURE__ */ t("span", { className: "text-xs text-base-content/70", children: e })
33
+ e && /* @__PURE__ */ s("span", { className: "text-xs text-base-content/70", children: e })
33
34
  ] }) : n;
34
- }, $ = ({
35
- value: s,
35
+ }, q = ({
36
+ value: t,
36
37
  format: e = "HH:MM:SS",
37
- onFinish: r,
38
- onChange: l,
39
- className: f = "",
40
- size: a = "md",
38
+ onFinish: l,
39
+ onChange: i,
40
+ className: h = "",
41
+ size: z,
41
42
  showLabels: n = !1,
42
- labels: i = {},
43
- boxed: o = !1
43
+ labels: r = {},
44
+ boxed: a = !1
44
45
  }) => {
45
- const d = s instanceof Date ? s.getTime() : s, [u, H] = D(() => T(d)), [M, L] = D(!1), m = {
46
- days: i.days || "days",
47
- hours: i.hours || "hours",
48
- minutes: i.minutes || "min",
49
- seconds: i.seconds || "sec"
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"
50
51
  }, p = k(() => {
51
- const N = T(d);
52
- H(N);
53
- const C = d - Date.now();
54
- l?.(Math.max(0, C)), C <= 0 && !M && (L(!0), r?.());
55
- }, [d, l, r, M]);
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]);
56
57
  I(() => {
57
- const N = setInterval(p, 1e3);
58
- return p(), () => clearInterval(N);
58
+ const y = setInterval(p, 1e3);
59
+ return p(), () => clearInterval(y);
59
60
  }, [p]);
60
- const j = e.includes("D"), v = e.includes("H"), g = e.includes("M"), x = e.includes("S"), w = a === "lg" || a === "xl" ? "text-3xl" : a === "md" ? "text-2xl" : "text-xl", y = !n && !o;
61
- return /* @__PURE__ */ c("div", { className: `flex gap-4 items-center ${f}`, children: [
62
- j && /* @__PURE__ */ c(S, { children: [
63
- /* @__PURE__ */ t(
64
- h,
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,
65
66
  {
66
67
  value: u.days,
67
68
  label: m.days,
68
- size: a,
69
+ size: o,
69
70
  showLabel: n,
70
- boxed: o
71
+ boxed: a
71
72
  }
72
73
  ),
73
- y && (v || g || x) && /* @__PURE__ */ t("span", { className: w, children: ":" })
74
+ S && (M || g || f) && /* @__PURE__ */ s("span", { className: w, children: ":" })
74
75
  ] }),
75
- v && /* @__PURE__ */ c(S, { children: [
76
- /* @__PURE__ */ t(
77
- h,
76
+ M && /* @__PURE__ */ c(N, { children: [
77
+ /* @__PURE__ */ s(
78
+ x,
78
79
  {
79
80
  value: u.hours,
80
81
  label: m.hours,
81
- size: a,
82
+ size: o,
82
83
  showLabel: n,
83
- boxed: o
84
+ boxed: a
84
85
  }
85
86
  ),
86
- y && (g || x) && /* @__PURE__ */ t("span", { className: w, children: ":" })
87
+ S && (g || f) && /* @__PURE__ */ s("span", { className: w, children: ":" })
87
88
  ] }),
88
- g && /* @__PURE__ */ c(S, { children: [
89
- /* @__PURE__ */ t(
90
- h,
89
+ g && /* @__PURE__ */ c(N, { children: [
90
+ /* @__PURE__ */ s(
91
+ x,
91
92
  {
92
93
  value: u.minutes,
93
94
  label: m.minutes,
94
- size: a,
95
+ size: o,
95
96
  showLabel: n,
96
- boxed: o
97
+ boxed: a
97
98
  }
98
99
  ),
99
- y && x && /* @__PURE__ */ t("span", { className: w, children: ":" })
100
+ S && f && /* @__PURE__ */ s("span", { className: w, children: ":" })
100
101
  ] }),
101
- x && /* @__PURE__ */ t(
102
- h,
102
+ f && /* @__PURE__ */ s(
103
+ x,
103
104
  {
104
105
  value: u.seconds,
105
106
  label: m.seconds,
106
- size: a,
107
+ size: o,
107
108
  showLabel: n,
108
- boxed: o
109
+ boxed: a
109
110
  }
110
111
  )
111
112
  ] });
112
113
  };
113
- $.displayName = "Countdown";
114
+ q.displayName = "Countdown";
114
115
  export {
115
- $ as Countdown
116
+ q as Countdown
116
117
  };
117
118
  //# sourceMappingURL=Countdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Countdown.js","sources":["../../src/components/Countdown.tsx"],"sourcesContent":["import React, { useEffect, useState, useCallback } from 'react'\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={`countdown font-mono ${sizeClasses[size || 'md']}`}>\n <span\n style={{ '--value': value, '--digits': 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 = 'md',\n showLabels = false,\n labels = {},\n boxed = false,\n}) => {\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 = size === 'lg' || size === 'xl' ? 'text-3xl' : size === '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={size}\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={size}\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={size}\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={size}\n showLabel={showLabels}\n boxed={boxed}\n />\n )}\n </div>\n )\n}\n\nCountdown.displayName = 'Countdown'\n"],"names":["calculateTimeLeft","targetTime","difference","CountdownUnit","value","label","size","showLabel","boxed","content","jsx","jsxs","Countdown","format","onFinish","onChange","className","showLabels","labels","timeLeft","setTimeLeft","useState","finished","setFinished","defaultLabels","tick","useCallback","newTimeLeft","remaining","useEffect","timer","showDays","showHours","showMinutes","showSeconds","separatorSize","showSeparators","Fragment"],"mappings":"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"}
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 = 'countdown'\nconst dCssValue = '--value'\nconst dCssDigits = '--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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"}
@@ -6,6 +6,6 @@ export interface DatePickerProps extends Omit<React.HTMLAttributes<HTMLDivElemen
6
6
  format?: string;
7
7
  placeholder?: string;
8
8
  disabled?: boolean;
9
- size?: 'xs' | 'sm' | 'md' | 'lg';
9
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
10
10
  }
11
11
  export declare const DatePicker: React.FC<DatePickerProps>;