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,104 +1,105 @@
1
- import { jsx as v } from "react/jsx-runtime";
2
- import { forwardRef as L, useState as M, useRef as V, useImperativeHandle as Z, useEffect as j, useCallback as i } from "react";
3
- const g = L(
1
+ import { jsx as A } from "react/jsx-runtime";
2
+ import { forwardRef as K, useState as M, useRef as V, useImperativeHandle as Z, useEffect as O, useCallback as l } from "react";
3
+ import { useConfig as B } from "./ConfigProvider.js";
4
+ const F = "input", H = "input-xs", X = "input-sm", q = "input-lg", G = "input-error", J = "input-disabled", Q = K(
4
5
  ({
5
- length: s = 6,
6
+ length: r = 6,
6
7
  value: p = "",
7
- onChange: n,
8
+ onChange: o,
8
9
  onComplete: m,
9
- size: k = "md",
10
- type: f = "number",
11
- mask: y = !1,
10
+ size: j,
11
+ type: u = "number",
12
+ mask: k = !1,
12
13
  disabled: c = !1,
13
- error: P = !1,
14
- autoFocus: A = !1,
15
- placeholder: I = "",
16
- className: R = ""
14
+ error: y = !1,
15
+ autoFocus: $ = !1,
16
+ placeholder: z = "",
17
+ className: P = ""
17
18
  }, b) => {
18
- const [a, o] = M(() => {
19
- const t = p.split("").slice(0, s);
20
- return [...t, ...Array(s - t.length).fill("")];
21
- }), u = V([]), x = {
22
- xs: "input-xs w-8 h-8 text-sm",
23
- sm: "input-sm w-10 h-10 text-base",
19
+ const { componentSize: R } = B(), S = j ?? R ?? "md", [f, a] = M(() => {
20
+ const t = p.split("").slice(0, r);
21
+ return [...t, ...Array(r - t.length).fill("")];
22
+ }), n = V([]), g = {
23
+ xs: `${H} w-8 h-8 text-sm`,
24
+ sm: `${X} w-10 h-10 text-base`,
24
25
  md: "w-12 h-12 text-lg",
25
- lg: "input-lg w-14 h-14 text-xl",
26
+ lg: `${q} w-14 h-14 text-xl`,
26
27
  xl: "w-16 h-16 text-2xl"
27
28
  };
28
29
  Z(b, () => ({
29
30
  focus: () => {
30
- u.current[0]?.focus();
31
+ n.current[0]?.focus();
31
32
  },
32
33
  clear: () => {
33
- o(Array(s).fill("")), u.current[0]?.focus();
34
+ a(Array(r).fill("")), n.current[0]?.focus();
34
35
  }
35
- })), j(() => {
36
- A && u.current[0]?.focus();
37
- }, [A]), j(() => {
38
- const t = p.split("").slice(0, s);
39
- o([...t, ...Array(s - t.length).fill("")]);
40
- }, [p, s]);
41
- const w = i(
36
+ })), O(() => {
37
+ $ && n.current[0]?.focus();
38
+ }, [$]), O(() => {
39
+ const t = p.split("").slice(0, r);
40
+ a([...t, ...Array(r - t.length).fill("")]);
41
+ }, [p, r]);
42
+ const w = l(
42
43
  (t, e) => {
43
- if (c || f === "number" && !/^\d*$/.test(e) || f === "text" && !/^[a-zA-Z0-9]*$/.test(e)) return;
44
- const r = [...a];
44
+ if (c || u === "number" && !/^\d*$/.test(e) || u === "text" && !/^[a-zA-Z0-9]*$/.test(e)) return;
45
+ const s = [...f];
45
46
  if (e.length > 1) {
46
- const O = e.slice(0, s - t).split("");
47
- O.forEach((K, $) => {
48
- t + $ < s && (r[t + $] = K);
49
- }), o(r);
50
- const D = r.join("");
51
- n?.(D);
52
- const E = Math.min(t + O.length, s - 1);
53
- u.current[E]?.focus(), D.length === s && m?.(D);
47
+ const I = e.slice(0, r - t).split("");
48
+ I.forEach((T, v) => {
49
+ t + v < r && (s[t + v] = T);
50
+ }), a(s);
51
+ const D = s.join("");
52
+ o?.(D);
53
+ const N = Math.min(t + I.length, r - 1);
54
+ n.current[N]?.focus(), D.length === r && m?.(D);
54
55
  return;
55
56
  }
56
- r[t] = e, o(r);
57
- const l = r.join("");
58
- n?.(l), e && t < s - 1 && u.current[t + 1]?.focus(), l.length === s && !l.includes("") && m?.(l);
57
+ s[t] = e, a(s);
58
+ const i = s.join("");
59
+ o?.(i), e && t < r - 1 && n.current[t + 1]?.focus(), i.length === r && !i.includes("") && m?.(i);
59
60
  },
60
- [a, s, f, c, n, m]
61
- ), z = i(
61
+ [f, r, u, c, o, m]
62
+ ), x = l(
62
63
  (t, e) => {
63
64
  if (!c)
64
65
  if (e.key === "Backspace") {
65
66
  e.preventDefault();
66
- const r = [...a];
67
- a[t] ? (r[t] = "", o(r), n?.(r.join(""))) : t > 0 && (r[t - 1] = "", o(r), n?.(r.join("")), u.current[t - 1]?.focus());
68
- } else e.key === "ArrowLeft" && t > 0 ? (e.preventDefault(), u.current[t - 1]?.focus()) : e.key === "ArrowRight" && t < s - 1 && (e.preventDefault(), u.current[t + 1]?.focus());
67
+ const s = [...f];
68
+ f[t] ? (s[t] = "", a(s), o?.(s.join(""))) : t > 0 && (s[t - 1] = "", a(s), o?.(s.join("")), n.current[t - 1]?.focus());
69
+ } else e.key === "ArrowLeft" && t > 0 ? (e.preventDefault(), n.current[t - 1]?.focus()) : e.key === "ArrowRight" && t < r - 1 && (e.preventDefault(), n.current[t + 1]?.focus());
69
70
  },
70
- [a, s, c, n]
71
- ), N = i(
71
+ [f, r, c, o]
72
+ ), E = l(
72
73
  (t) => {
73
74
  if (t.preventDefault(), c) return;
74
- const e = t.clipboardData.getData("text"), r = f === "number" ? e.replace(/\D/g, "") : e.replace(/[^a-zA-Z0-9]/g, "");
75
- r && w(0, r);
75
+ const e = t.clipboardData.getData("text"), s = u === "number" ? e.replace(/\D/g, "") : e.replace(/[^a-zA-Z0-9]/g, "");
76
+ s && w(0, s);
76
77
  },
77
- [f, c, w]
78
- ), T = i((t) => {
78
+ [u, c, w]
79
+ ), L = l((t) => {
79
80
  t.target.select();
80
81
  }, []);
81
- return /* @__PURE__ */ v("div", { className: `flex gap-2 ${R}`, children: a.map((t, e) => /* @__PURE__ */ v(
82
+ return /* @__PURE__ */ A("div", { className: `flex gap-2 ${P}`, children: f.map((t, e) => /* @__PURE__ */ A(
82
83
  "input",
83
84
  {
84
- ref: (r) => {
85
- u.current[e] = r;
85
+ ref: (s) => {
86
+ n.current[e] = s;
86
87
  },
87
- type: y ? "password" : f === "number" ? "tel" : "text",
88
- inputMode: f === "number" ? "numeric" : "text",
88
+ type: k ? "password" : u === "number" ? "tel" : "text",
89
+ inputMode: u === "number" ? "numeric" : "text",
89
90
  maxLength: 1,
90
91
  value: t,
91
- placeholder: I,
92
+ placeholder: z,
92
93
  disabled: c,
93
- onChange: (r) => w(e, r.target.value),
94
- onKeyDown: (r) => z(e, r),
95
- onPaste: N,
96
- onFocus: T,
94
+ onChange: (s) => w(e, s.target.value),
95
+ onKeyDown: (s) => x(e, s),
96
+ onPaste: E,
97
+ onFocus: L,
97
98
  className: `
98
- input text-center font-mono
99
- ${x[k]}
100
- ${P ? "input-error" : ""}
101
- ${c ? "input-disabled opacity-50" : ""}
99
+ ${F} text-center font-mono
100
+ ${g[S]}
101
+ ${y ? G : ""}
102
+ ${c ? `${J} opacity-50` : ""}
102
103
  `,
103
104
  "aria-label": `OTP digit ${e + 1}`
104
105
  },
@@ -106,8 +107,8 @@ const g = L(
106
107
  )) });
107
108
  }
108
109
  );
109
- g.displayName = "OTPInput";
110
+ Q.displayName = "OTPInput";
110
111
  export {
111
- g as OTPInput
112
+ Q as OTPInput
112
113
  };
113
114
  //# sourceMappingURL=OTPInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OTPInput.js","sources":["../../src/components/OTPInput.tsx"],"sourcesContent":["import React, { useRef, useState, useEffect, useCallback, forwardRef, useImperativeHandle } from 'react'\n\nexport interface OTPInputProps {\n /** Number of input fields */\n length?: number\n /** Current value */\n value?: string\n /** Callback when value changes */\n onChange?: (value: string) => void\n /** Callback when all fields are filled */\n onComplete?: (value: string) => void\n /** Input size */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Input type - number only or alphanumeric */\n type?: 'number' | 'text'\n /** Mask input (show dots instead of characters) */\n mask?: boolean\n /** Disabled state */\n disabled?: boolean\n /** Error state */\n error?: boolean\n /** Auto focus first input on mount */\n autoFocus?: boolean\n /** Placeholder character */\n placeholder?: string\n /** Additional CSS classes */\n className?: string\n}\n\nexport interface OTPInputRef {\n focus: () => void\n clear: () => void\n}\n\nexport const OTPInput = forwardRef<OTPInputRef, OTPInputProps>(\n (\n {\n length = 6,\n value = '',\n onChange,\n onComplete,\n size = 'md',\n type = 'number',\n mask = false,\n disabled = false,\n error = false,\n autoFocus = false,\n placeholder = '',\n className = '',\n },\n ref\n ) => {\n const [otp, setOtp] = useState<string[]>(() => {\n const initial = value.split('').slice(0, length)\n return [...initial, ...Array(length - initial.length).fill('')]\n })\n\n const inputRefs = useRef<(HTMLInputElement | null)[]>([])\n\n const sizeClasses = {\n xs: 'input-xs w-8 h-8 text-sm',\n sm: 'input-sm w-10 h-10 text-base',\n md: 'w-12 h-12 text-lg',\n lg: 'input-lg w-14 h-14 text-xl',\n xl: 'w-16 h-16 text-2xl',\n }\n\n useImperativeHandle(ref, () => ({\n focus: () => {\n inputRefs.current[0]?.focus()\n },\n clear: () => {\n setOtp(Array(length).fill(''))\n inputRefs.current[0]?.focus()\n },\n }))\n\n useEffect(() => {\n if (autoFocus) {\n inputRefs.current[0]?.focus()\n }\n }, [autoFocus])\n\n useEffect(() => {\n const newOtp = value.split('').slice(0, length)\n setOtp([...newOtp, ...Array(length - newOtp.length).fill('')])\n }, [value, length])\n\n const handleChange = useCallback(\n (index: number, char: string) => {\n if (disabled) return\n\n // Validate input\n if (type === 'number' && !/^\\d*$/.test(char)) return\n if (type === 'text' && !/^[a-zA-Z0-9]*$/.test(char)) return\n\n const newOtp = [...otp]\n\n // Handle paste of multiple characters\n if (char.length > 1) {\n const chars = char.slice(0, length - index).split('')\n chars.forEach((c, i) => {\n if (index + i < length) {\n newOtp[index + i] = c\n }\n })\n setOtp(newOtp)\n\n const newValue = newOtp.join('')\n onChange?.(newValue)\n\n // Focus appropriate field\n const nextIndex = Math.min(index + chars.length, length - 1)\n inputRefs.current[nextIndex]?.focus()\n\n if (newValue.length === length) {\n onComplete?.(newValue)\n }\n return\n }\n\n // Single character\n newOtp[index] = char\n setOtp(newOtp)\n\n const newValue = newOtp.join('')\n onChange?.(newValue)\n\n // Move to next input\n if (char && index < length - 1) {\n inputRefs.current[index + 1]?.focus()\n }\n\n if (newValue.length === length && !newValue.includes('')) {\n onComplete?.(newValue)\n }\n },\n [otp, length, type, disabled, onChange, onComplete]\n )\n\n const handleKeyDown = useCallback(\n (index: number, e: React.KeyboardEvent<HTMLInputElement>) => {\n if (disabled) return\n\n if (e.key === 'Backspace') {\n e.preventDefault()\n const newOtp = [...otp]\n\n if (otp[index]) {\n // Clear current field\n newOtp[index] = ''\n setOtp(newOtp)\n onChange?.(newOtp.join(''))\n } else if (index > 0) {\n // Move to previous field and clear it\n newOtp[index - 1] = ''\n setOtp(newOtp)\n onChange?.(newOtp.join(''))\n inputRefs.current[index - 1]?.focus()\n }\n } else if (e.key === 'ArrowLeft' && index > 0) {\n e.preventDefault()\n inputRefs.current[index - 1]?.focus()\n } else if (e.key === 'ArrowRight' && index < length - 1) {\n e.preventDefault()\n inputRefs.current[index + 1]?.focus()\n }\n },\n [otp, length, disabled, onChange]\n )\n\n const handlePaste = useCallback(\n (e: React.ClipboardEvent) => {\n e.preventDefault()\n if (disabled) return\n\n const pastedData = e.clipboardData.getData('text')\n const filteredData =\n type === 'number'\n ? pastedData.replace(/\\D/g, '')\n : pastedData.replace(/[^a-zA-Z0-9]/g, '')\n\n if (filteredData) {\n handleChange(0, filteredData)\n }\n },\n [type, disabled, handleChange]\n )\n\n const handleFocus = useCallback((e: React.FocusEvent<HTMLInputElement>) => {\n e.target.select()\n }, [])\n\n return (\n <div className={`flex gap-2 ${className}`}>\n {otp.map((digit, index) => (\n <input\n key={index}\n ref={(el) => {\n inputRefs.current[index] = el\n }}\n type={mask ? 'password' : type === 'number' ? 'tel' : 'text'}\n inputMode={type === 'number' ? 'numeric' : 'text'}\n maxLength={1}\n value={digit}\n placeholder={placeholder}\n disabled={disabled}\n onChange={(e) => handleChange(index, e.target.value)}\n onKeyDown={(e) => handleKeyDown(index, e)}\n onPaste={handlePaste}\n onFocus={handleFocus}\n className={`\n input text-center font-mono\n ${sizeClasses[size]}\n ${error ? 'input-error' : ''}\n ${disabled ? 'input-disabled opacity-50' : ''}\n `}\n aria-label={`OTP digit ${index + 1}`}\n />\n ))}\n </div>\n )\n }\n)\n\nOTPInput.displayName = 'OTPInput'\n"],"names":["OTPInput","forwardRef","length","value","onChange","onComplete","size","type","mask","disabled","error","autoFocus","placeholder","className","ref","otp","setOtp","useState","initial","inputRefs","useRef","sizeClasses","useImperativeHandle","useEffect","newOtp","handleChange","useCallback","index","char","chars","c","i","newValue","nextIndex","handleKeyDown","handlePaste","e","pastedData","filteredData","handleFocus","jsx","digit","el"],"mappings":"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"}
1
+ {"version":3,"file":"OTPInput.js","sources":["../../src/components/OTPInput.tsx"],"sourcesContent":["import React, { useRef, useState, useEffect, useCallback, forwardRef, useImperativeHandle } from 'react'\nimport { useConfig } from './ConfigProvider'\n\n// DaisyUI classes\nconst dInput = 'input'\nconst dInputXs = 'input-xs'\nconst dInputSm = 'input-sm'\nconst dInputLg = 'input-lg'\nconst dInputError = 'input-error'\nconst dInputDisabled = 'input-disabled'\n\nexport interface OTPInputProps {\n /** Number of input fields */\n length?: number\n /** Current value */\n value?: string\n /** Callback when value changes */\n onChange?: (value: string) => void\n /** Callback when all fields are filled */\n onComplete?: (value: string) => void\n /** Input size */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Input type - number only or alphanumeric */\n type?: 'number' | 'text'\n /** Mask input (show dots instead of characters) */\n mask?: boolean\n /** Disabled state */\n disabled?: boolean\n /** Error state */\n error?: boolean\n /** Auto focus first input on mount */\n autoFocus?: boolean\n /** Placeholder character */\n placeholder?: string\n /** Additional CSS classes */\n className?: string\n}\n\nexport interface OTPInputRef {\n focus: () => void\n clear: () => void\n}\n\nexport const OTPInput = forwardRef<OTPInputRef, OTPInputProps>(\n (\n {\n length = 6,\n value = '',\n onChange,\n onComplete,\n size,\n type = 'number',\n mask = false,\n disabled = false,\n error = false,\n autoFocus = false,\n placeholder = '',\n className = '',\n },\n ref\n ) => {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n const [otp, setOtp] = useState<string[]>(() => {\n const initial = value.split('').slice(0, length)\n return [...initial, ...Array(length - initial.length).fill('')]\n })\n\n const inputRefs = useRef<(HTMLInputElement | null)[]>([])\n\n const sizeClasses = {\n xs: `${dInputXs} w-8 h-8 text-sm`,\n sm: `${dInputSm} w-10 h-10 text-base`,\n md: 'w-12 h-12 text-lg',\n lg: `${dInputLg} w-14 h-14 text-xl`,\n xl: 'w-16 h-16 text-2xl',\n }\n\n useImperativeHandle(ref, () => ({\n focus: () => {\n inputRefs.current[0]?.focus()\n },\n clear: () => {\n setOtp(Array(length).fill(''))\n inputRefs.current[0]?.focus()\n },\n }))\n\n useEffect(() => {\n if (autoFocus) {\n inputRefs.current[0]?.focus()\n }\n }, [autoFocus])\n\n useEffect(() => {\n const newOtp = value.split('').slice(0, length)\n setOtp([...newOtp, ...Array(length - newOtp.length).fill('')])\n }, [value, length])\n\n const handleChange = useCallback(\n (index: number, char: string) => {\n if (disabled) return\n\n // Validate input\n if (type === 'number' && !/^\\d*$/.test(char)) return\n if (type === 'text' && !/^[a-zA-Z0-9]*$/.test(char)) return\n\n const newOtp = [...otp]\n\n // Handle paste of multiple characters\n if (char.length > 1) {\n const chars = char.slice(0, length - index).split('')\n chars.forEach((c, i) => {\n if (index + i < length) {\n newOtp[index + i] = c\n }\n })\n setOtp(newOtp)\n\n const newValue = newOtp.join('')\n onChange?.(newValue)\n\n // Focus appropriate field\n const nextIndex = Math.min(index + chars.length, length - 1)\n inputRefs.current[nextIndex]?.focus()\n\n if (newValue.length === length) {\n onComplete?.(newValue)\n }\n return\n }\n\n // Single character\n newOtp[index] = char\n setOtp(newOtp)\n\n const newValue = newOtp.join('')\n onChange?.(newValue)\n\n // Move to next input\n if (char && index < length - 1) {\n inputRefs.current[index + 1]?.focus()\n }\n\n if (newValue.length === length && !newValue.includes('')) {\n onComplete?.(newValue)\n }\n },\n [otp, length, type, disabled, onChange, onComplete]\n )\n\n const handleKeyDown = useCallback(\n (index: number, e: React.KeyboardEvent<HTMLInputElement>) => {\n if (disabled) return\n\n if (e.key === 'Backspace') {\n e.preventDefault()\n const newOtp = [...otp]\n\n if (otp[index]) {\n // Clear current field\n newOtp[index] = ''\n setOtp(newOtp)\n onChange?.(newOtp.join(''))\n } else if (index > 0) {\n // Move to previous field and clear it\n newOtp[index - 1] = ''\n setOtp(newOtp)\n onChange?.(newOtp.join(''))\n inputRefs.current[index - 1]?.focus()\n }\n } else if (e.key === 'ArrowLeft' && index > 0) {\n e.preventDefault()\n inputRefs.current[index - 1]?.focus()\n } else if (e.key === 'ArrowRight' && index < length - 1) {\n e.preventDefault()\n inputRefs.current[index + 1]?.focus()\n }\n },\n [otp, length, disabled, onChange]\n )\n\n const handlePaste = useCallback(\n (e: React.ClipboardEvent) => {\n e.preventDefault()\n if (disabled) return\n\n const pastedData = e.clipboardData.getData('text')\n const filteredData =\n type === 'number'\n ? pastedData.replace(/\\D/g, '')\n : pastedData.replace(/[^a-zA-Z0-9]/g, '')\n\n if (filteredData) {\n handleChange(0, filteredData)\n }\n },\n [type, disabled, handleChange]\n )\n\n const handleFocus = useCallback((e: React.FocusEvent<HTMLInputElement>) => {\n e.target.select()\n }, [])\n\n return (\n <div className={`flex gap-2 ${className}`}>\n {otp.map((digit, index) => (\n <input\n key={index}\n ref={(el) => {\n inputRefs.current[index] = el\n }}\n type={mask ? 'password' : type === 'number' ? 'tel' : 'text'}\n inputMode={type === 'number' ? 'numeric' : 'text'}\n maxLength={1}\n value={digit}\n placeholder={placeholder}\n disabled={disabled}\n onChange={(e) => handleChange(index, e.target.value)}\n onKeyDown={(e) => handleKeyDown(index, e)}\n onPaste={handlePaste}\n onFocus={handleFocus}\n className={`\n ${dInput} text-center font-mono\n ${sizeClasses[effectiveSize]}\n ${error ? dInputError : ''}\n ${disabled ? `${dInputDisabled} opacity-50` : ''}\n `}\n aria-label={`OTP digit ${index + 1}`}\n />\n ))}\n </div>\n )\n }\n)\n\nOTPInput.displayName = 'OTPInput'\n"],"names":["dInput","dInputXs","dInputSm","dInputLg","dInputError","dInputDisabled","OTPInput","forwardRef","length","value","onChange","onComplete","size","type","mask","disabled","error","autoFocus","placeholder","className","ref","componentSize","useConfig","effectiveSize","otp","setOtp","useState","initial","inputRefs","useRef","sizeClasses","useImperativeHandle","useEffect","newOtp","handleChange","useCallback","index","char","chars","c","i","newValue","nextIndex","handleKeyDown","handlePaste","e","pastedData","filteredData","handleFocus","jsx","digit","el"],"mappings":"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"}
@@ -12,7 +12,7 @@ export interface PaginationProps extends Omit<React.HTMLAttributes<HTMLDivElemen
12
12
  showQuickJumper?: boolean;
13
13
  showTotal?: boolean | ((total: number, range: [number, number]) => React.ReactNode);
14
14
  simple?: boolean;
15
- size?: 'xs' | 'sm' | 'md' | 'lg';
15
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
16
16
  disabled?: boolean;
17
17
  }
18
18
  export declare const Pagination: React.FC<PaginationProps>;
@@ -1,34 +1,35 @@
1
- import { jsxs as o, jsx as i } from "react/jsx-runtime";
1
+ import { jsxs as m, jsx as i } from "react/jsx-runtime";
2
2
  import g from "react";
3
- const q = ({
3
+ import { useConfig as R } from "./ConfigProvider.js";
4
+ const r = "btn", B = "btn-ghost", q = "btn-active", H = "btn-disabled", O = "btn-xs", Q = "btn-sm", T = "btn-lg", U = "btn-xl", V = "select", W = "select-bordered", Y = "join", u = "join-item", Z = "input", se = ({
4
5
  current: h,
5
- defaultCurrent: P = 1,
6
- total: m,
7
- pageSize: p,
8
- defaultPageSize: C = 10,
6
+ defaultCurrent: S = 1,
7
+ total: p,
8
+ pageSize: $,
9
+ defaultPageSize: k = 10,
9
10
  pageSizeOptions: j = [10, 20, 50, 100],
10
- onChange: b,
11
- onShowSizeChange: k,
11
+ onChange: N,
12
+ onShowSizeChange: I,
12
13
  showSizeChanger: y = !1,
13
- showQuickJumper: S = !1,
14
+ showQuickJumper: J = !1,
14
15
  showTotal: f = !1,
15
- simple: I = !1,
16
- size: M = "md",
16
+ simple: M = !1,
17
+ size: w,
17
18
  disabled: a = !1,
18
- className: d = "",
19
- ...N
19
+ className: b = "",
20
+ ...v
20
21
  }) => {
21
- const [w, v] = g.useState(P), [J, D] = g.useState(C), [x, $] = g.useState(""), t = h !== void 0 ? h : w, u = p !== void 0 ? p : J, n = Math.ceil(m / u), r = (e) => {
22
- e < 1 || e > n || a || (h === void 0 && v(e), b?.(e, u));
22
+ const { componentSize: D } = R(), G = w ?? D ?? "md", [L, x] = g.useState(S), [X, z] = g.useState(k), [C, P] = g.useState(""), t = h !== void 0 ? h : L, d = $ !== void 0 ? $ : X, n = Math.ceil(p / d), o = (e) => {
23
+ e < 1 || e > n || a || (h === void 0 && x(e), N?.(e, d));
24
+ }, A = (e) => {
25
+ const l = Math.ceil(p / e), s = t > l ? l : t;
26
+ $ === void 0 && z(e), h === void 0 && s !== t && x(s), I?.(s, e), N?.(s, e);
23
27
  }, E = (e) => {
24
- const c = Math.ceil(m / e), s = t > c ? c : t;
25
- p === void 0 && D(e), h === void 0 && s !== t && v(s), k?.(s, e), b?.(s, e);
26
- }, F = (e) => {
27
28
  if (e.key === "Enter") {
28
- const c = parseInt(x);
29
- !isNaN(c) && c >= 1 && c <= n && (r(c), $(""));
29
+ const l = parseInt(C);
30
+ !isNaN(l) && l >= 1 && l <= n && (o(l), P(""));
30
31
  }
31
- }, G = () => {
32
+ }, F = () => {
32
33
  const e = [];
33
34
  if (n <= 7)
34
35
  for (let s = 1; s <= n; s++)
@@ -48,26 +49,27 @@ const q = ({
48
49
  e.push("ellipsis"), e.push(n);
49
50
  }
50
51
  return e;
51
- }, l = {
52
- xs: "btn-xs",
53
- sm: "btn-sm",
52
+ }, c = {
53
+ xs: O,
54
+ sm: Q,
54
55
  md: "",
55
- lg: "btn-lg"
56
- }[M], K = [
57
- (t - 1) * u + 1,
58
- Math.min(t * u, m)
56
+ lg: T,
57
+ xl: U
58
+ }[G], K = [
59
+ (t - 1) * d + 1,
60
+ Math.min(t * d, p)
59
61
  ];
60
- return I ? /* @__PURE__ */ o("div", { className: `flex items-center gap-2 ${d}`, ...N, children: [
62
+ return M ? /* @__PURE__ */ m("div", { className: `flex items-center gap-2 ${b}`, ...v, children: [
61
63
  /* @__PURE__ */ i(
62
64
  "button",
63
65
  {
64
- className: `btn btn-ghost ${l}`,
65
- onClick: () => r(t - 1),
66
+ className: `${r} ${B} ${c}`,
67
+ onClick: () => o(t - 1),
66
68
  disabled: a || t === 1,
67
69
  children: "‹"
68
70
  }
69
71
  ),
70
- /* @__PURE__ */ o("span", { className: "text-sm", children: [
72
+ /* @__PURE__ */ m("span", { className: "text-sm", children: [
71
73
  t,
72
74
  " / ",
73
75
  n
@@ -75,33 +77,33 @@ const q = ({
75
77
  /* @__PURE__ */ i(
76
78
  "button",
77
79
  {
78
- className: `btn btn-ghost ${l}`,
79
- onClick: () => r(t + 1),
80
+ className: `${r} ${B} ${c}`,
81
+ onClick: () => o(t + 1),
80
82
  disabled: a || t === n,
81
83
  children: "›"
82
84
  }
83
85
  )
84
- ] }) : /* @__PURE__ */ o("div", { className: `flex flex-wrap items-center gap-4 ${d}`, ...N, children: [
85
- f && /* @__PURE__ */ i("div", { className: "text-sm text-base-content/70", children: typeof f == "function" ? f(m, K) : `Total ${m} items` }),
86
+ ] }) : /* @__PURE__ */ m("div", { className: `flex flex-wrap items-center gap-4 ${b}`, ...v, children: [
87
+ f && /* @__PURE__ */ i("div", { className: "text-sm text-base-content/70", children: typeof f == "function" ? f(p, K) : `Total ${p} items` }),
86
88
  y && /* @__PURE__ */ i(
87
89
  "select",
88
90
  {
89
- className: `select select-bordered ${l}`,
90
- value: u,
91
- onChange: (e) => E(Number(e.target.value)),
91
+ className: `${V} ${W} ${c}`,
92
+ value: d,
93
+ onChange: (e) => A(Number(e.target.value)),
92
94
  disabled: a,
93
- children: j.map((e) => /* @__PURE__ */ o("option", { value: e, children: [
95
+ children: j.map((e) => /* @__PURE__ */ m("option", { value: e, children: [
94
96
  e,
95
97
  " / page"
96
98
  ] }, e))
97
99
  }
98
100
  ),
99
- /* @__PURE__ */ o("div", { className: "join", children: [
101
+ /* @__PURE__ */ m("div", { className: Y, children: [
100
102
  /* @__PURE__ */ i(
101
103
  "button",
102
104
  {
103
- className: `join-item btn ${l}`,
104
- onClick: () => r(1),
105
+ className: `${u} ${r} ${c}`,
106
+ onClick: () => o(1),
105
107
  disabled: a || t === 1,
106
108
  title: "First page",
107
109
  children: "«"
@@ -110,18 +112,18 @@ const q = ({
110
112
  /* @__PURE__ */ i(
111
113
  "button",
112
114
  {
113
- className: `join-item btn ${l}`,
114
- onClick: () => r(t - 1),
115
+ className: `${u} ${r} ${c}`,
116
+ onClick: () => o(t - 1),
115
117
  disabled: a || t === 1,
116
118
  title: "Previous page",
117
119
  children: "‹"
118
120
  }
119
121
  ),
120
- G().map((e, c) => e === "ellipsis" ? /* @__PURE__ */ i("button", { className: `join-item btn btn-disabled ${l}`, children: "..." }, `ellipsis-${c}`) : /* @__PURE__ */ i(
122
+ F().map((e, l) => e === "ellipsis" ? /* @__PURE__ */ i("button", { className: `${u} ${r} ${H} ${c}`, children: "..." }, `ellipsis-${l}`) : /* @__PURE__ */ i(
121
123
  "button",
122
124
  {
123
- className: `join-item btn ${l} ${t === e ? "btn-active" : ""}`,
124
- onClick: () => r(e),
125
+ className: `${u} ${r} ${c} ${t === e ? q : ""}`,
126
+ onClick: () => o(e),
125
127
  disabled: a,
126
128
  children: e
127
129
  },
@@ -130,8 +132,8 @@ const q = ({
130
132
  /* @__PURE__ */ i(
131
133
  "button",
132
134
  {
133
- className: `join-item btn ${l}`,
134
- onClick: () => r(t + 1),
135
+ className: `${u} ${r} ${c}`,
136
+ onClick: () => o(t + 1),
135
137
  disabled: a || t === n,
136
138
  title: "Next page",
137
139
  children: "›"
@@ -140,26 +142,26 @@ const q = ({
140
142
  /* @__PURE__ */ i(
141
143
  "button",
142
144
  {
143
- className: `join-item btn ${l}`,
144
- onClick: () => r(n),
145
+ className: `${u} ${r} ${c}`,
146
+ onClick: () => o(n),
145
147
  disabled: a || t === n,
146
148
  title: "Last page",
147
149
  children: "»"
148
150
  }
149
151
  )
150
152
  ] }),
151
- S && /* @__PURE__ */ o("div", { className: "flex items-center gap-2", children: [
153
+ J && /* @__PURE__ */ m("div", { className: "flex items-center gap-2", children: [
152
154
  /* @__PURE__ */ i("span", { className: "text-sm", children: "Go to" }),
153
155
  /* @__PURE__ */ i(
154
156
  "input",
155
157
  {
156
158
  type: "number",
157
- className: `input w-16 ${l}`,
159
+ className: `${Z} w-16 ${c}`,
158
160
  min: 1,
159
161
  max: n,
160
- value: x,
161
- onChange: (e) => $(e.target.value),
162
- onKeyDown: F,
162
+ value: C,
163
+ onChange: (e) => P(e.target.value),
164
+ onKeyDown: E,
163
165
  disabled: a,
164
166
  placeholder: String(t)
165
167
  }
@@ -168,6 +170,6 @@ const q = ({
168
170
  ] });
169
171
  };
170
172
  export {
171
- q as Pagination
173
+ se as Pagination
172
174
  };
173
175
  //# sourceMappingURL=Pagination.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.js","sources":["../../src/components/Pagination.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface PaginationProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n current?: number\n defaultCurrent?: number\n total: number\n pageSize?: number\n defaultPageSize?: number\n pageSizeOptions?: number[]\n onChange?: (page: number, pageSize: number) => void\n onShowSizeChange?: (current: number, size: number) => void\n showSizeChanger?: boolean\n showQuickJumper?: boolean\n showTotal?: boolean | ((total: number, range: [number, number]) => React.ReactNode)\n simple?: boolean\n size?: 'xs' | 'sm' | 'md' | 'lg'\n disabled?: boolean\n}\n\nexport const Pagination: React.FC<PaginationProps> = ({\n current: controlledCurrent,\n defaultCurrent = 1,\n total,\n pageSize: controlledPageSize,\n defaultPageSize = 10,\n pageSizeOptions = [10, 20, 50, 100],\n onChange,\n onShowSizeChange,\n showSizeChanger = false,\n showQuickJumper = false,\n showTotal = false,\n simple = false,\n size = 'md',\n disabled = false,\n className = '',\n ...rest\n}) => {\n const [internalCurrent, setInternalCurrent] = React.useState(defaultCurrent)\n const [internalPageSize, setInternalPageSize] = React.useState(defaultPageSize)\n const [jumpPage, setJumpPage] = React.useState('')\n\n const current = controlledCurrent !== undefined ? controlledCurrent : internalCurrent\n const pageSize = controlledPageSize !== undefined ? controlledPageSize : internalPageSize\n const totalPages = Math.ceil(total / pageSize)\n\n const handlePageChange = (page: number) => {\n if (page < 1 || page > totalPages || disabled) return\n\n if (controlledCurrent === undefined) {\n setInternalCurrent(page)\n }\n onChange?.(page, pageSize)\n }\n\n const handlePageSizeChange = (newSize: number) => {\n const newTotalPages = Math.ceil(total / newSize)\n const newCurrent = current > newTotalPages ? newTotalPages : current\n\n if (controlledPageSize === undefined) {\n setInternalPageSize(newSize)\n }\n if (controlledCurrent === undefined && newCurrent !== current) {\n setInternalCurrent(newCurrent)\n }\n\n onShowSizeChange?.(newCurrent, newSize)\n onChange?.(newCurrent, newSize)\n }\n\n const handleJumpPage = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n const page = parseInt(jumpPage)\n if (!isNaN(page) && page >= 1 && page <= totalPages) {\n handlePageChange(page)\n setJumpPage('')\n }\n }\n }\n\n const getPageNumbers = (): (number | 'ellipsis')[] => {\n const pages: (number | 'ellipsis')[] = []\n const showPages = 7\n\n if (totalPages <= showPages) {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i)\n }\n } else {\n if (current <= 3) {\n for (let i = 1; i <= 5; i++) {\n pages.push(i)\n }\n pages.push('ellipsis')\n pages.push(totalPages)\n } else if (current >= totalPages - 2) {\n pages.push(1)\n pages.push('ellipsis')\n for (let i = totalPages - 4; i <= totalPages; i++) {\n pages.push(i)\n }\n } else {\n pages.push(1)\n pages.push('ellipsis')\n for (let i = current - 1; i <= current + 1; i++) {\n pages.push(i)\n }\n pages.push('ellipsis')\n pages.push(totalPages)\n }\n }\n\n return pages\n }\n\n const sizeClass = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: '',\n lg: 'btn-lg',\n }[size]\n\n const range: [number, number] = [\n (current - 1) * pageSize + 1,\n Math.min(current * pageSize, total),\n ]\n\n if (simple) {\n return (\n <div className={`flex items-center gap-2 ${className}`} {...rest}>\n <button\n className={`btn btn-ghost ${sizeClass}`}\n onClick={() => handlePageChange(current - 1)}\n disabled={disabled || current === 1}\n >\n ‹\n </button>\n <span className=\"text-sm\">\n {current} / {totalPages}\n </span>\n <button\n className={`btn btn-ghost ${sizeClass}`}\n onClick={() => handlePageChange(current + 1)}\n disabled={disabled || current === totalPages}\n >\n ›\n </button>\n </div>\n )\n }\n\n return (\n <div className={`flex flex-wrap items-center gap-4 ${className}`} {...rest}>\n {/* Total */}\n {showTotal && (\n <div className=\"text-sm text-base-content/70\">\n {typeof showTotal === 'function'\n ? showTotal(total, range)\n : `Total ${total} items`}\n </div>\n )}\n\n {/* Page Size Changer */}\n {showSizeChanger && (\n <select\n className={`select select-bordered ${sizeClass}`}\n value={pageSize}\n onChange={(e) => handlePageSizeChange(Number(e.target.value))}\n disabled={disabled}\n >\n {pageSizeOptions.map((size) => (\n <option key={size} value={size}>\n {size} / page\n </option>\n ))}\n </select>\n )}\n\n {/* Pagination Controls */}\n <div className=\"join\">\n {/* First */}\n <button\n className={`join-item btn ${sizeClass}`}\n onClick={() => handlePageChange(1)}\n disabled={disabled || current === 1}\n title=\"First page\"\n >\n «\n </button>\n\n {/* Previous */}\n <button\n className={`join-item btn ${sizeClass}`}\n onClick={() => handlePageChange(current - 1)}\n disabled={disabled || current === 1}\n title=\"Previous page\"\n >\n ‹\n </button>\n\n {/* Page Numbers */}\n {getPageNumbers().map((page, index) => {\n if (page === 'ellipsis') {\n return (\n <button key={`ellipsis-${index}`} className={`join-item btn btn-disabled ${sizeClass}`}>\n ...\n </button>\n )\n }\n\n return (\n <button\n key={page}\n className={`join-item btn ${sizeClass} ${current === page ? 'btn-active' : ''}`}\n onClick={() => handlePageChange(page)}\n disabled={disabled}\n >\n {page}\n </button>\n )\n })}\n\n {/* Next */}\n <button\n className={`join-item btn ${sizeClass}`}\n onClick={() => handlePageChange(current + 1)}\n disabled={disabled || current === totalPages}\n title=\"Next page\"\n >\n ›\n </button>\n\n {/* Last */}\n <button\n className={`join-item btn ${sizeClass}`}\n onClick={() => handlePageChange(totalPages)}\n disabled={disabled || current === totalPages}\n title=\"Last page\"\n >\n »\n </button>\n </div>\n\n {/* Quick Jumper */}\n {showQuickJumper && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm\">Go to</span>\n <input\n type=\"number\"\n className={`input w-16 ${sizeClass}`}\n min={1}\n max={totalPages}\n value={jumpPage}\n onChange={(e) => setJumpPage(e.target.value)}\n onKeyDown={handleJumpPage}\n disabled={disabled}\n placeholder={String(current)}\n />\n </div>\n )}\n </div>\n )\n}\n"],"names":["Pagination","controlledCurrent","defaultCurrent","total","controlledPageSize","defaultPageSize","pageSizeOptions","onChange","onShowSizeChange","showSizeChanger","showQuickJumper","showTotal","simple","size","disabled","className","rest","internalCurrent","setInternalCurrent","React","internalPageSize","setInternalPageSize","jumpPage","setJumpPage","current","pageSize","totalPages","handlePageChange","page","handlePageSizeChange","newSize","newTotalPages","newCurrent","handleJumpPage","getPageNumbers","pages","i","sizeClass","range","jsx","jsxs","index"],"mappings":"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"}
1
+ {"version":3,"file":"Pagination.js","sources":["../../src/components/Pagination.tsx"],"sourcesContent":["import React from 'react'\nimport { useConfig } from './ConfigProvider'\n\n// DaisyUI classes\nconst dBtn = 'btn'\nconst dBtnGhost = 'btn-ghost'\nconst dBtnActive = 'btn-active'\nconst dBtnDisabled = 'btn-disabled'\nconst dBtnXs = 'btn-xs'\nconst dBtnSm = 'btn-sm'\nconst dBtnLg = 'btn-lg'\nconst dBtnXl = 'btn-xl'\nconst dSelect = 'select'\nconst dSelectBordered = 'select-bordered'\nconst dJoin = 'join'\nconst dJoinItem = 'join-item'\nconst dInput = 'input'\n\nexport interface PaginationProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n current?: number\n defaultCurrent?: number\n total: number\n pageSize?: number\n defaultPageSize?: number\n pageSizeOptions?: number[]\n onChange?: (page: number, pageSize: number) => void\n onShowSizeChange?: (current: number, size: number) => void\n showSizeChanger?: boolean\n showQuickJumper?: boolean\n showTotal?: boolean | ((total: number, range: [number, number]) => React.ReactNode)\n simple?: boolean\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n disabled?: boolean\n}\n\nexport const Pagination: React.FC<PaginationProps> = ({\n current: controlledCurrent,\n defaultCurrent = 1,\n total,\n pageSize: controlledPageSize,\n defaultPageSize = 10,\n pageSizeOptions = [10, 20, 50, 100],\n onChange,\n onShowSizeChange,\n showSizeChanger = false,\n showQuickJumper = false,\n showTotal = false,\n simple = false,\n size,\n disabled = false,\n className = '',\n ...rest\n}) => {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n const [internalCurrent, setInternalCurrent] = React.useState(defaultCurrent)\n const [internalPageSize, setInternalPageSize] = React.useState(defaultPageSize)\n const [jumpPage, setJumpPage] = React.useState('')\n\n const current = controlledCurrent !== undefined ? controlledCurrent : internalCurrent\n const pageSize = controlledPageSize !== undefined ? controlledPageSize : internalPageSize\n const totalPages = Math.ceil(total / pageSize)\n\n const handlePageChange = (page: number) => {\n if (page < 1 || page > totalPages || disabled) return\n\n if (controlledCurrent === undefined) {\n setInternalCurrent(page)\n }\n onChange?.(page, pageSize)\n }\n\n const handlePageSizeChange = (newSize: number) => {\n const newTotalPages = Math.ceil(total / newSize)\n const newCurrent = current > newTotalPages ? newTotalPages : current\n\n if (controlledPageSize === undefined) {\n setInternalPageSize(newSize)\n }\n if (controlledCurrent === undefined && newCurrent !== current) {\n setInternalCurrent(newCurrent)\n }\n\n onShowSizeChange?.(newCurrent, newSize)\n onChange?.(newCurrent, newSize)\n }\n\n const handleJumpPage = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n const page = parseInt(jumpPage)\n if (!isNaN(page) && page >= 1 && page <= totalPages) {\n handlePageChange(page)\n setJumpPage('')\n }\n }\n }\n\n const getPageNumbers = (): (number | 'ellipsis')[] => {\n const pages: (number | 'ellipsis')[] = []\n const showPages = 7\n\n if (totalPages <= showPages) {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i)\n }\n } else {\n if (current <= 3) {\n for (let i = 1; i <= 5; i++) {\n pages.push(i)\n }\n pages.push('ellipsis')\n pages.push(totalPages)\n } else if (current >= totalPages - 2) {\n pages.push(1)\n pages.push('ellipsis')\n for (let i = totalPages - 4; i <= totalPages; i++) {\n pages.push(i)\n }\n } else {\n pages.push(1)\n pages.push('ellipsis')\n for (let i = current - 1; i <= current + 1; i++) {\n pages.push(i)\n }\n pages.push('ellipsis')\n pages.push(totalPages)\n }\n }\n\n return pages\n }\n\n const sizeClass = {\n xs: dBtnXs,\n sm: dBtnSm,\n md: '',\n lg: dBtnLg,\n xl: dBtnXl,\n }[effectiveSize]\n\n const range: [number, number] = [\n (current - 1) * pageSize + 1,\n Math.min(current * pageSize, total),\n ]\n\n if (simple) {\n return (\n <div className={`flex items-center gap-2 ${className}`} {...rest}>\n <button\n className={`${dBtn} ${dBtnGhost} ${sizeClass}`}\n onClick={() => handlePageChange(current - 1)}\n disabled={disabled || current === 1}\n >\n ‹\n </button>\n <span className=\"text-sm\">\n {current} / {totalPages}\n </span>\n <button\n className={`${dBtn} ${dBtnGhost} ${sizeClass}`}\n onClick={() => handlePageChange(current + 1)}\n disabled={disabled || current === totalPages}\n >\n ›\n </button>\n </div>\n )\n }\n\n return (\n <div className={`flex flex-wrap items-center gap-4 ${className}`} {...rest}>\n {/* Total */}\n {showTotal && (\n <div className=\"text-sm text-base-content/70\">\n {typeof showTotal === 'function'\n ? showTotal(total, range)\n : `Total ${total} items`}\n </div>\n )}\n\n {/* Page Size Changer */}\n {showSizeChanger && (\n <select\n className={`${dSelect} ${dSelectBordered} ${sizeClass}`}\n value={pageSize}\n onChange={(e) => handlePageSizeChange(Number(e.target.value))}\n disabled={disabled}\n >\n {pageSizeOptions.map((size) => (\n <option key={size} value={size}>\n {size} / page\n </option>\n ))}\n </select>\n )}\n\n {/* Pagination Controls */}\n <div className={dJoin}>\n {/* First */}\n <button\n className={`${dJoinItem} ${dBtn} ${sizeClass}`}\n onClick={() => handlePageChange(1)}\n disabled={disabled || current === 1}\n title=\"First page\"\n >\n «\n </button>\n\n {/* Previous */}\n <button\n className={`${dJoinItem} ${dBtn} ${sizeClass}`}\n onClick={() => handlePageChange(current - 1)}\n disabled={disabled || current === 1}\n title=\"Previous page\"\n >\n ‹\n </button>\n\n {/* Page Numbers */}\n {getPageNumbers().map((page, index) => {\n if (page === 'ellipsis') {\n return (\n <button key={`ellipsis-${index}`} className={`${dJoinItem} ${dBtn} ${dBtnDisabled} ${sizeClass}`}>\n ...\n </button>\n )\n }\n\n return (\n <button\n key={page}\n className={`${dJoinItem} ${dBtn} ${sizeClass} ${current === page ? dBtnActive : ''}`}\n onClick={() => handlePageChange(page)}\n disabled={disabled}\n >\n {page}\n </button>\n )\n })}\n\n {/* Next */}\n <button\n className={`${dJoinItem} ${dBtn} ${sizeClass}`}\n onClick={() => handlePageChange(current + 1)}\n disabled={disabled || current === totalPages}\n title=\"Next page\"\n >\n ›\n </button>\n\n {/* Last */}\n <button\n className={`${dJoinItem} ${dBtn} ${sizeClass}`}\n onClick={() => handlePageChange(totalPages)}\n disabled={disabled || current === totalPages}\n title=\"Last page\"\n >\n »\n </button>\n </div>\n\n {/* Quick Jumper */}\n {showQuickJumper && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm\">Go to</span>\n <input\n type=\"number\"\n className={`${dInput} w-16 ${sizeClass}`}\n min={1}\n max={totalPages}\n value={jumpPage}\n onChange={(e) => setJumpPage(e.target.value)}\n onKeyDown={handleJumpPage}\n disabled={disabled}\n placeholder={String(current)}\n />\n </div>\n )}\n </div>\n )\n}\n"],"names":["dBtn","dBtnGhost","dBtnActive","dBtnDisabled","dBtnXs","dBtnSm","dBtnLg","dBtnXl","dSelect","dSelectBordered","dJoin","dJoinItem","dInput","Pagination","controlledCurrent","defaultCurrent","total","controlledPageSize","defaultPageSize","pageSizeOptions","onChange","onShowSizeChange","showSizeChanger","showQuickJumper","showTotal","simple","size","disabled","className","rest","componentSize","useConfig","effectiveSize","internalCurrent","setInternalCurrent","React","internalPageSize","setInternalPageSize","jumpPage","setJumpPage","current","pageSize","totalPages","handlePageChange","page","handlePageSizeChange","newSize","newTotalPages","newCurrent","handleJumpPage","getPageNumbers","pages","i","sizeClass","range","jsx","jsxs","index"],"mappings":"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"}
@@ -1,17 +1,17 @@
1
- import { jsxs as p, jsx as o } from "react/jsx-runtime";
2
- const n = ({
1
+ import { jsxs as a, jsx as e } from "react/jsx-runtime";
2
+ const m = "mockup-phone", r = "mockup-phone-camera", d = "mockup-phone-display", h = ({
3
3
  children: s,
4
- color: e,
5
- className: a = "",
6
- displayClassName: c = ""
4
+ color: o,
5
+ className: c = "",
6
+ displayClassName: n = ""
7
7
  }) => {
8
- const m = e ? { borderColor: e } : {};
9
- return /* @__PURE__ */ p("div", { className: `mockup-phone ${a}`, style: m, children: [
10
- /* @__PURE__ */ o("div", { className: "mockup-phone-camera" }),
11
- /* @__PURE__ */ o("div", { className: `mockup-phone-display ${c}`, children: s })
8
+ const p = o ? { borderColor: o } : {};
9
+ return /* @__PURE__ */ a("div", { className: `${m} ${c}`, style: p, children: [
10
+ /* @__PURE__ */ e("div", { className: r }),
11
+ /* @__PURE__ */ e("div", { className: `${d} ${n}`, children: s })
12
12
  ] });
13
13
  };
14
14
  export {
15
- n as Phone
15
+ h as Phone
16
16
  };
17
17
  //# sourceMappingURL=Phone.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Phone.js","sources":["../../src/components/Phone.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface PhoneProps {\n children: React.ReactNode\n color?: string\n className?: string\n displayClassName?: string\n}\n\nexport const Phone: React.FC<PhoneProps> = ({\n children,\n color,\n className = '',\n displayClassName = '',\n}) => {\n const style: React.CSSProperties = color ? { borderColor: color } : {}\n\n return (\n <div className={`mockup-phone ${className}`} style={style}>\n <div className=\"mockup-phone-camera\"></div>\n <div className={`mockup-phone-display ${displayClassName}`}>\n {children}\n </div>\n </div>\n )\n}\n"],"names":["Phone","children","color","className","displayClassName","style","jsx"],"mappings":";AASO,MAAMA,IAA8B,CAAC;AAAA,EAC1C,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,kBAAAC,IAAmB;AACrB,MAAM;AACJ,QAAMC,IAA6BH,IAAQ,EAAE,aAAaA,EAAA,IAAU,CAAA;AAEpE,2BACG,OAAA,EAAI,WAAW,gBAAgBC,CAAS,IAAI,OAAAE,GAC3C,UAAA;AAAA,IAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,sBAAA,CAAsB;AAAA,sBACpC,OAAA,EAAI,WAAW,wBAAwBF,CAAgB,IACrD,UAAAH,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;"}
1
+ {"version":3,"file":"Phone.js","sources":["../../src/components/Phone.tsx"],"sourcesContent":["import React from 'react'\n\n// DaisyUI classes\nconst dMockupPhone = 'mockup-phone'\nconst dMockupPhoneCamera = 'mockup-phone-camera'\nconst dMockupPhoneDisplay = 'mockup-phone-display'\n\nexport interface PhoneProps {\n children: React.ReactNode\n color?: string\n className?: string\n displayClassName?: string\n}\n\nexport const Phone: React.FC<PhoneProps> = ({\n children,\n color,\n className = '',\n displayClassName = '',\n}) => {\n const style: React.CSSProperties = color ? { borderColor: color } : {}\n\n return (\n <div className={`${dMockupPhone} ${className}`} style={style}>\n <div className={dMockupPhoneCamera}></div>\n <div className={`${dMockupPhoneDisplay} ${displayClassName}`}>\n {children}\n </div>\n </div>\n )\n}\n"],"names":["dMockupPhone","dMockupPhoneCamera","dMockupPhoneDisplay","Phone","children","color","className","displayClassName","style","jsxs","jsx"],"mappings":";AAGA,MAAMA,IAAe,gBACfC,IAAqB,uBACrBC,IAAsB,wBASfC,IAA8B,CAAC;AAAA,EAC1C,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,kBAAAC,IAAmB;AACrB,MAAM;AACJ,QAAMC,IAA6BH,IAAQ,EAAE,aAAaA,EAAA,IAAU,CAAA;AAEpE,SACE,gBAAAI,EAAC,SAAI,WAAW,GAAGT,CAAY,IAAIM,CAAS,IAAI,OAAAE,GAC9C,UAAA;AAAA,IAAA,gBAAAE,EAAC,OAAA,EAAI,WAAWT,EAAA,CAAoB;AAAA,IACpC,gBAAAS,EAAC,SAAI,WAAW,GAAGR,CAAmB,IAAIK,CAAgB,IACvD,UAAAH,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;"}