asterui 0.12.61 → 0.12.63

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 (179) hide show
  1. package/dist/components/Affix.d.ts +2 -0
  2. package/dist/components/Affix.js.map +1 -1
  3. package/dist/components/Alert.d.ts +2 -0
  4. package/dist/components/Alert.js.map +1 -1
  5. package/dist/components/Anchor.d.ts +2 -0
  6. package/dist/components/Anchor.js +79 -75
  7. package/dist/components/Anchor.js.map +1 -1
  8. package/dist/components/Autocomplete.d.ts +1 -0
  9. package/dist/components/Autocomplete.js +115 -110
  10. package/dist/components/Autocomplete.js.map +1 -1
  11. package/dist/components/Avatar.d.ts +4 -0
  12. package/dist/components/Avatar.js.map +1 -1
  13. package/dist/components/Breadcrumb.d.ts +4 -2
  14. package/dist/components/Breadcrumb.js +54 -29
  15. package/dist/components/Breadcrumb.js.map +1 -1
  16. package/dist/components/Browser.d.ts +2 -0
  17. package/dist/components/Browser.js.map +1 -1
  18. package/dist/components/Button.d.ts +5 -1
  19. package/dist/components/Button.js +117 -107
  20. package/dist/components/Button.js.map +1 -1
  21. package/dist/components/Chart.d.ts +1 -0
  22. package/dist/components/Chart.js +31 -30
  23. package/dist/components/Chart.js.map +1 -1
  24. package/dist/components/Chat.d.ts +1 -0
  25. package/dist/components/Chat.js +39 -28
  26. package/dist/components/Chat.js.map +1 -1
  27. package/dist/components/Code.d.ts +2 -0
  28. package/dist/components/Code.js.map +1 -1
  29. package/dist/components/Command.d.ts +5 -2
  30. package/dist/components/Command.js +262 -233
  31. package/dist/components/Command.js.map +1 -1
  32. package/dist/components/Container.d.ts +2 -0
  33. package/dist/components/Container.js.map +1 -1
  34. package/dist/components/ContextMenu.d.ts +4 -0
  35. package/dist/components/ContextMenu.js +157 -122
  36. package/dist/components/ContextMenu.js.map +1 -1
  37. package/dist/components/CopyButton.d.ts +2 -0
  38. package/dist/components/CopyButton.js +9 -8
  39. package/dist/components/CopyButton.js.map +1 -1
  40. package/dist/components/Countdown.d.ts +3 -3
  41. package/dist/components/Countdown.js +49 -47
  42. package/dist/components/Countdown.js.map +1 -1
  43. package/dist/components/Diff.d.ts +3 -3
  44. package/dist/components/Diff.js +14 -10
  45. package/dist/components/Diff.js.map +1 -1
  46. package/dist/components/Divider.d.ts +2 -0
  47. package/dist/components/Divider.js.map +1 -1
  48. package/dist/components/Dock.d.ts +6 -0
  49. package/dist/components/Dock.js +75 -38
  50. package/dist/components/Dock.js.map +1 -1
  51. package/dist/components/Dropdown.js +110 -110
  52. package/dist/components/Dropdown.js.map +1 -1
  53. package/dist/components/Fieldset.d.ts +2 -0
  54. package/dist/components/Fieldset.js.map +1 -1
  55. package/dist/components/FileInput.d.ts +1 -0
  56. package/dist/components/FileInput.js +26 -26
  57. package/dist/components/FileInput.js.map +1 -1
  58. package/dist/components/Filter.d.ts +1 -0
  59. package/dist/components/Filter.js +43 -40
  60. package/dist/components/Filter.js.map +1 -1
  61. package/dist/components/Flex.d.ts +1 -0
  62. package/dist/components/Flex.js +43 -42
  63. package/dist/components/Flex.js.map +1 -1
  64. package/dist/components/FloatButton.d.ts +9 -0
  65. package/dist/components/FloatButton.js +211 -136
  66. package/dist/components/FloatButton.js.map +1 -1
  67. package/dist/components/Footer.d.ts +2 -0
  68. package/dist/components/Footer.js.map +1 -1
  69. package/dist/components/Grid.d.ts +4 -0
  70. package/dist/components/Grid.js.map +1 -1
  71. package/dist/components/Hero.d.ts +2 -0
  72. package/dist/components/Hero.js.map +1 -1
  73. package/dist/components/HoverGallery.d.ts +3 -3
  74. package/dist/components/HoverGallery.js +12 -10
  75. package/dist/components/HoverGallery.js.map +1 -1
  76. package/dist/components/Input.d.ts +1 -0
  77. package/dist/components/Input.js +201 -184
  78. package/dist/components/Input.js.map +1 -1
  79. package/dist/components/Join.d.ts +2 -0
  80. package/dist/components/Join.js.map +1 -1
  81. package/dist/components/Kbd.d.ts +2 -0
  82. package/dist/components/Kbd.js.map +1 -1
  83. package/dist/components/Loading.d.ts +3 -0
  84. package/dist/components/Loading.js +58 -35
  85. package/dist/components/Loading.js.map +1 -1
  86. package/dist/components/Mask.d.ts +2 -2
  87. package/dist/components/Mask.js.map +1 -1
  88. package/dist/components/Masonry.d.ts +1 -0
  89. package/dist/components/Masonry.js +45 -42
  90. package/dist/components/Masonry.js.map +1 -1
  91. package/dist/components/Mention.d.ts +1 -0
  92. package/dist/components/Mention.js +95 -91
  93. package/dist/components/Mention.js.map +1 -1
  94. package/dist/components/MonthCalendar.d.ts +1 -0
  95. package/dist/components/MonthCalendar.js +104 -97
  96. package/dist/components/MonthCalendar.js.map +1 -1
  97. package/dist/components/Navbar.d.ts +2 -0
  98. package/dist/components/Navbar.js.map +1 -1
  99. package/dist/components/Notification.js +32 -18
  100. package/dist/components/Notification.js.map +1 -1
  101. package/dist/components/Phone.d.ts +3 -2
  102. package/dist/components/Phone.js +10 -8
  103. package/dist/components/Phone.js.map +1 -1
  104. package/dist/components/Popconfirm.js +110 -92
  105. package/dist/components/Popconfirm.js.map +1 -1
  106. package/dist/components/Popover.d.ts +2 -0
  107. package/dist/components/Popover.js.map +1 -1
  108. package/dist/components/Progress.d.ts +2 -0
  109. package/dist/components/Progress.js.map +1 -1
  110. package/dist/components/QRCode.d.ts +1 -0
  111. package/dist/components/QRCode.js +84 -55
  112. package/dist/components/QRCode.js.map +1 -1
  113. package/dist/components/RadialProgress.d.ts +1 -0
  114. package/dist/components/RadialProgress.js +19 -17
  115. package/dist/components/RadialProgress.js.map +1 -1
  116. package/dist/components/Radio.d.ts +6 -3
  117. package/dist/components/Radio.js +9 -9
  118. package/dist/components/Radio.js.map +1 -1
  119. package/dist/components/Range.d.ts +1 -0
  120. package/dist/components/Range.js +45 -43
  121. package/dist/components/Range.js.map +1 -1
  122. package/dist/components/Rating.d.ts +4 -2
  123. package/dist/components/Rating.js +83 -79
  124. package/dist/components/Rating.js.map +1 -1
  125. package/dist/components/Responsive.d.ts +4 -2
  126. package/dist/components/Responsive.js +10 -9
  127. package/dist/components/Responsive.js.map +1 -1
  128. package/dist/components/Result.d.ts +1 -0
  129. package/dist/components/Result.js +24 -22
  130. package/dist/components/Result.js.map +1 -1
  131. package/dist/components/Select.d.ts +1 -0
  132. package/dist/components/Select.js +72 -62
  133. package/dist/components/Select.js.map +1 -1
  134. package/dist/components/Skeleton.d.ts +2 -0
  135. package/dist/components/Skeleton.js.map +1 -1
  136. package/dist/components/Space.d.ts +2 -0
  137. package/dist/components/Space.js.map +1 -1
  138. package/dist/components/Splitter.d.ts +2 -0
  139. package/dist/components/Splitter.js +137 -131
  140. package/dist/components/Splitter.js.map +1 -1
  141. package/dist/components/Stat.d.ts +4 -2
  142. package/dist/components/Stat.js +19 -18
  143. package/dist/components/Stat.js.map +1 -1
  144. package/dist/components/Status.d.ts +3 -3
  145. package/dist/components/Status.js +27 -25
  146. package/dist/components/Status.js.map +1 -1
  147. package/dist/components/Steps.d.ts +4 -2
  148. package/dist/components/Steps.js +56 -52
  149. package/dist/components/Steps.js.map +1 -1
  150. package/dist/components/TextRotate.d.ts +1 -0
  151. package/dist/components/TextRotate.js +14 -12
  152. package/dist/components/TextRotate.js.map +1 -1
  153. package/dist/components/Textarea.d.ts +1 -0
  154. package/dist/components/Textarea.js +31 -30
  155. package/dist/components/Textarea.js.map +1 -1
  156. package/dist/components/ThemeController.d.ts +6 -3
  157. package/dist/components/ThemeController.js +101 -92
  158. package/dist/components/ThemeController.js.map +1 -1
  159. package/dist/components/Toggle.d.ts +2 -0
  160. package/dist/components/Toggle.js.map +1 -1
  161. package/dist/components/Tooltip.d.ts +2 -0
  162. package/dist/components/Tooltip.js +38 -32
  163. package/dist/components/Tooltip.js.map +1 -1
  164. package/dist/components/Typography.d.ts +10 -5
  165. package/dist/components/Typography.js +84 -81
  166. package/dist/components/Typography.js.map +1 -1
  167. package/dist/components/VirtualList.d.ts +2 -1
  168. package/dist/components/VirtualList.js +40 -36
  169. package/dist/components/VirtualList.js.map +1 -1
  170. package/dist/components/Watermark.d.ts +1 -0
  171. package/dist/components/Watermark.js +74 -71
  172. package/dist/components/Watermark.js.map +1 -1
  173. package/dist/components/WeekCalendar.d.ts +1 -0
  174. package/dist/components/WeekCalendar.js +91 -76
  175. package/dist/components/WeekCalendar.js.map +1 -1
  176. package/dist/components/Window.d.ts +3 -2
  177. package/dist/components/Window.js +9 -7
  178. package/dist/components/Window.js.map +1 -1
  179. package/package.json +1 -1
@@ -1,127 +1,131 @@
1
- import { jsxs as I, Fragment as F, jsx as a } from "react/jsx-runtime";
2
- import L, { useState as y, useId as X, createContext as _, useContext as O } from "react";
3
- import { useConfig as P } from "../providers/ConfigProvider.js";
4
- const q = "rating", D = "rating-xs", J = "rating-sm", K = "rating-md", Q = "rating-lg", T = "rating-xl", U = "rating-half", W = "rating-hidden", Y = "mask", Z = "mask-star", w = "mask-star-2", nn = "mask-heart", tn = "mask-half-1", an = "mask-half-2", z = _(null);
5
- function sn({
1
+ import { jsxs as y, Fragment as L, jsx as s } from "react/jsx-runtime";
2
+ import X, { useState as z, useId as _, createContext as O, useContext as P } from "react";
3
+ import { useConfig as q } from "../providers/ConfigProvider.js";
4
+ const D = "rating", J = "rating-xs", K = "rating-sm", Q = "rating-md", U = "rating-lg", W = "rating-xl", Y = "rating-half", Z = "rating-hidden", w = "mask", tt = "mask-star", at = "mask-star-2", nt = "mask-heart", st = "mask-half-1", et = "mask-half-2", G = O(null);
5
+ function rt({
6
6
  children: t,
7
- value: i,
8
- defaultValue: p = 0,
9
- onChange: v,
10
- onHoverChange: l,
11
- count: m = 5,
12
- size: f,
13
- gap: c = "md",
14
- color: r = "bg-warning",
7
+ value: c,
8
+ defaultValue: v = 0,
9
+ onChange: C,
10
+ onHoverChange: f,
11
+ count: h = 5,
12
+ size: x,
13
+ gap: r = "md",
14
+ color: d = "bg-warning",
15
15
  mask: u = "star-2",
16
- allowClear: h = !0,
17
- allowHalf: s = !1,
18
- disabled: g = !1,
19
- className: k = "",
20
- ...C
16
+ allowClear: g = !0,
17
+ allowHalf: e = !1,
18
+ disabled: m = !1,
19
+ className: M = "",
20
+ "data-testid": o,
21
+ ...V
21
22
  }) {
22
- const { componentSize: b } = P(), o = f ?? b ?? "md", [R, x] = y(p), [G, S] = y(0), M = i !== void 0 ? i : R, $ = X(), N = (e) => {
23
- if (g) return;
24
- const n = h && e === M ? 0 : e;
25
- i === void 0 && x(n), S(0), v?.(n);
26
- }, j = (e) => {
27
- g || (S(e), l?.(e));
28
- }, H = {
29
- xs: D,
30
- sm: J,
31
- md: K,
32
- lg: Q,
33
- xl: T
34
- }, A = {
23
+ const { componentSize: k } = q(), i = x ?? k ?? "md", [S, $] = z(v), [R, p] = z(0), b = c !== void 0 ? c : S, N = _(), T = (a) => {
24
+ if (m) return;
25
+ const n = g && a === b ? 0 : a;
26
+ c === void 0 && $(n), p(0), C?.(n);
27
+ }, j = (a) => {
28
+ m || (p(a), f?.(a));
29
+ }, A = (a) => o ? `${o}-${a}` : void 0, H = {
30
+ xs: J,
31
+ sm: K,
32
+ md: Q,
33
+ lg: U,
34
+ xl: W
35
+ }, B = {
35
36
  none: "gap-0",
36
37
  xs: "gap-0.5",
37
38
  sm: "gap-1",
38
39
  md: "gap-2",
39
40
  lg: "gap-3"
40
- }, B = [
41
- q,
41
+ }, E = [
42
+ D,
42
43
  // Half-star mode requires a size class to render correctly, default to md
43
- (s || o) && H[o],
44
- s ? U : c && A[c],
45
- k
46
- ].filter(Boolean).join(" "), V = s ? "star-2" : u, E = t || /* @__PURE__ */ I(F, { children: [
47
- h && /* @__PURE__ */ a(d, { value: 0, hidden: !0 }),
48
- s ? (
44
+ (e || i) && H[i],
45
+ e ? Y : r && B[r],
46
+ M
47
+ ].filter(Boolean).join(" "), I = e ? "star-2" : u, F = t || /* @__PURE__ */ y(L, { children: [
48
+ g && /* @__PURE__ */ s(l, { value: 0, hidden: !0 }),
49
+ e ? (
49
50
  // Half-star mode: each star is two inputs
50
- Array.from({ length: m }, (e, n) => /* @__PURE__ */ I(L.Fragment, { children: [
51
- /* @__PURE__ */ a(d, { value: n + 0.5, mask: V, color: r, half: "first" }),
52
- /* @__PURE__ */ a(d, { value: n + 1, mask: V, color: r, half: "second" })
51
+ Array.from({ length: h }, (a, n) => /* @__PURE__ */ y(X.Fragment, { children: [
52
+ /* @__PURE__ */ s(l, { value: n + 0.5, mask: I, color: d, half: "first" }),
53
+ /* @__PURE__ */ s(l, { value: n + 1, mask: I, color: d, half: "second" })
53
54
  ] }, n + 1))
54
55
  ) : (
55
56
  // Standard mode: one input per star
56
- Array.from({ length: m }, (e, n) => /* @__PURE__ */ a(d, { value: n + 1, mask: V, color: r }, n + 1))
57
+ Array.from({ length: h }, (a, n) => /* @__PURE__ */ s(l, { value: n + 1, mask: I, color: d }, n + 1))
57
58
  )
58
59
  ] });
59
- return /* @__PURE__ */ a(z.Provider, { value: { name: $, currentValue: M, hoverValue: G, onChange: N, onHover: j, size: o, disabled: g, halfGap: s ? c : void 0 }, children: /* @__PURE__ */ a(
60
+ return /* @__PURE__ */ s(G.Provider, { value: { name: N, currentValue: b, hoverValue: R, onChange: T, onHover: j, size: i, disabled: m, halfGap: e ? r : void 0, getTestId: A }, children: /* @__PURE__ */ s(
60
61
  "div",
61
62
  {
62
63
  role: "radiogroup",
63
64
  "aria-label": "Rating",
64
- className: B,
65
- "data-value": M,
65
+ className: E,
66
+ "data-value": b,
67
+ "data-testid": o,
66
68
  onMouseLeave: () => j(0),
67
- ...C,
68
- children: E
69
+ ...V,
70
+ children: F
69
71
  }
70
72
  ) });
71
73
  }
72
- function d({ value: t, mask: i = "star-2", color: p = "bg-warning", hidden: v = !1, half: l, className: m = "" }) {
73
- const f = O(z);
74
- if (!f)
74
+ function l({ value: t, mask: c = "star-2", color: v = "bg-warning", hidden: C = !1, half: f, className: h = "", "data-testid": x }) {
75
+ const r = P(G);
76
+ if (!r)
75
77
  throw new Error("Rating.Item must be used within Rating");
76
- const { name: c, currentValue: r, hoverValue: u, onChange: h, onHover: s, disabled: g, halfGap: k } = f, C = {
77
- star: Z,
78
- "star-2": w,
79
- heart: nn
80
- }, o = {
81
- first: tn,
82
- second: `${an} ${k ? {
78
+ const { name: d, currentValue: u, hoverValue: g, onChange: e, onHover: m, disabled: M, halfGap: o, getTestId: V } = r, k = x ?? V?.(`item-${t}`), i = {
79
+ star: tt,
80
+ "star-2": at,
81
+ heart: nt
82
+ }, $ = {
83
+ first: st,
84
+ second: `${et} ${o ? {
83
85
  none: "",
84
86
  xs: "mr-0.5",
85
87
  sm: "mr-1",
86
88
  md: "mr-2",
87
89
  lg: "mr-3"
88
- }[k] : ""}`.trim()
89
- }, R = v ? W : [
90
- Y,
91
- C[i],
92
- l && o[l],
93
- p,
94
- m
90
+ }[o] : ""}`.trim()
91
+ }, R = C ? Z : [
92
+ w,
93
+ i[c],
94
+ f && $[f],
95
+ v,
96
+ h
95
97
  ].filter(Boolean).join(" ");
96
- if (g)
97
- return /* @__PURE__ */ a(
98
+ if (M)
99
+ return /* @__PURE__ */ s(
98
100
  "div",
99
101
  {
100
102
  className: R,
101
- "aria-current": r === t ? "true" : void 0,
102
- "aria-label": `Rating ${t}`
103
+ "aria-current": u === t ? "true" : void 0,
104
+ "aria-label": `Rating ${t}`,
105
+ "data-testid": k
103
106
  }
104
107
  );
105
- const x = u > 0 ? u : r;
106
- return /* @__PURE__ */ a(
108
+ const p = g > 0 ? g : u;
109
+ return /* @__PURE__ */ s(
107
110
  "input",
108
111
  {
109
112
  type: "radio",
110
- name: c,
113
+ name: d,
111
114
  className: R,
112
- checked: x === t,
115
+ checked: p === t,
113
116
  onChange: () => {
114
117
  },
115
- onClick: () => h(t),
116
- onMouseEnter: () => s(t),
117
- "aria-label": `Rating ${t}`
118
+ onClick: () => e(t),
119
+ onMouseEnter: () => m(t),
120
+ "aria-label": `Rating ${t}`,
121
+ "data-testid": k
118
122
  }
119
123
  );
120
124
  }
121
- const cn = Object.assign(sn, {
122
- Item: d
125
+ const dt = Object.assign(rt, {
126
+ Item: l
123
127
  });
124
128
  export {
125
- cn as Rating
129
+ dt as Rating
126
130
  };
127
131
  //# sourceMappingURL=Rating.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Rating.js","sources":["../../src/components/Rating.tsx"],"sourcesContent":["import React, { createContext, useContext, useId, useState } from 'react'\nimport { useConfig } from '../providers/ConfigProvider'\n\n// DaisyUI classes\nconst dRating = 'rating'\nconst dRatingXs = 'rating-xs'\nconst dRatingSm = 'rating-sm'\nconst dRatingMd = 'rating-md'\nconst dRatingLg = 'rating-lg'\nconst dRatingXl = 'rating-xl'\nconst dRatingHalf = 'rating-half'\nconst dRatingHidden = 'rating-hidden'\nconst dMask = 'mask'\nconst dMaskStar = 'mask-star'\nconst dMaskStar2 = 'mask-star-2'\nconst dMaskHeart = 'mask-heart'\nconst dMaskHalf1 = 'mask-half-1'\nconst dMaskHalf2 = 'mask-half-2'\n\nexport interface RatingProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n children?: React.ReactNode\n value?: number\n defaultValue?: number\n onChange?: (value: number) => void\n onHoverChange?: (value: number) => void\n count?: number\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n gap?: 'none' | 'xs' | 'sm' | 'md' | 'lg'\n color?: string\n mask?: 'star' | 'star-2' | 'heart'\n allowClear?: boolean\n allowHalf?: boolean\n disabled?: boolean\n}\n\nexport interface RatingItemProps {\n value: number\n mask?: 'star' | 'star-2' | 'heart'\n color?: string\n hidden?: boolean\n half?: 'first' | 'second'\n className?: string\n}\n\ninterface RatingContextValue {\n name: string\n currentValue: number\n hoverValue: number\n onChange: (value: number) => void\n onHover: (value: number) => void\n size?: string\n disabled?: boolean\n halfGap?: 'none' | 'xs' | 'sm' | 'md' | 'lg'\n}\n\nconst RatingContext = createContext<RatingContextValue | null>(null)\n\nfunction RatingRoot({\n children,\n value,\n defaultValue = 0,\n onChange,\n onHoverChange,\n count = 5,\n size,\n gap = 'md',\n color = 'bg-warning',\n mask = 'star-2',\n allowClear = true,\n allowHalf = false,\n disabled = false,\n className = '',\n ...rest\n}: RatingProps) {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n const [internalValue, setInternalValue] = useState(defaultValue)\n const [hoverValue, setHoverValue] = useState(0)\n const currentValue = value !== undefined ? value : internalValue\n const name = useId()\n\n const handleChange = (newValue: number) => {\n if (disabled) return\n // Allow clearing if clicking the same value and allowClear is true\n const finalValue = allowClear && newValue === currentValue ? 0 : newValue\n if (value === undefined) {\n setInternalValue(finalValue)\n }\n // Clear hover state so the clicked value shows immediately\n setHoverValue(0)\n onChange?.(finalValue)\n }\n\n const handleHover = (hoverVal: number) => {\n if (disabled) return\n setHoverValue(hoverVal)\n onHoverChange?.(hoverVal)\n }\n\n const sizeClasses = {\n xs: dRatingXs,\n sm: dRatingSm,\n md: dRatingMd,\n lg: dRatingLg,\n xl: dRatingXl,\n }\n\n const gapClasses = {\n none: 'gap-0',\n xs: 'gap-0.5',\n sm: 'gap-1',\n md: 'gap-2',\n lg: 'gap-3',\n }\n\n const classes = [\n dRating,\n // Half-star mode requires a size class to render correctly, default to md\n allowHalf ? sizeClasses[effectiveSize] : (effectiveSize && sizeClasses[effectiveSize]),\n allowHalf ? dRatingHalf : (gap && gapClasses[gap]),\n className,\n ].filter(Boolean).join(' ')\n\n // Auto-generate items if no children provided\n // Note: half-star mode requires mask-star-2 per DaisyUI\n const effectiveMask = allowHalf ? 'star-2' : mask\n const items = children || (\n <>\n {allowClear && <RatingItem value={0} hidden />}\n {allowHalf ? (\n // Half-star mode: each star is two inputs\n Array.from({ length: count }, (_, i) => (\n <React.Fragment key={i + 1}>\n <RatingItem value={i + 0.5} mask={effectiveMask} color={color} half=\"first\" />\n <RatingItem value={i + 1} mask={effectiveMask} color={color} half=\"second\" />\n </React.Fragment>\n ))\n ) : (\n // Standard mode: one input per star\n Array.from({ length: count }, (_, i) => (\n <RatingItem key={i + 1} value={i + 1} mask={effectiveMask} color={color} />\n ))\n )}\n </>\n )\n\n return (\n <RatingContext.Provider value={{ name, currentValue, hoverValue, onChange: handleChange, onHover: handleHover, size: effectiveSize, disabled, halfGap: allowHalf ? gap : undefined }}>\n <div\n role=\"radiogroup\"\n aria-label=\"Rating\"\n className={classes}\n data-value={currentValue}\n onMouseLeave={() => handleHover(0)}\n {...rest}\n >\n {items}\n </div>\n </RatingContext.Provider>\n )\n}\n\nfunction RatingItem({ value, mask = 'star-2', color = 'bg-warning', hidden = false, half, className = '' }: RatingItemProps) {\n const context = useContext(RatingContext)\n if (!context) {\n throw new Error('Rating.Item must be used within Rating')\n }\n\n const { name, currentValue, hoverValue, onChange, onHover, disabled, halfGap } = context\n\n const maskClasses = {\n star: dMaskStar,\n 'star-2': dMaskStar2,\n heart: dMaskHeart,\n }\n\n const halfGapClasses = {\n none: '',\n xs: 'mr-0.5',\n sm: 'mr-1',\n md: 'mr-2',\n lg: 'mr-3',\n }\n\n const halfClasses = {\n first: dMaskHalf1,\n second: `${dMaskHalf2} ${halfGap ? halfGapClasses[halfGap] : ''}`.trim(),\n }\n\n // Hidden items only get rating-hidden class (no mask)\n // Visible items get mask classes - DaisyUI CSS handles filled/unfilled state\n const classes = hidden\n ? dRatingHidden\n : [\n dMask,\n maskClasses[mask],\n half && halfClasses[half],\n color,\n className,\n ].filter(Boolean).join(' ')\n\n if (disabled) {\n return (\n <div\n className={classes}\n aria-current={currentValue === value ? 'true' : undefined}\n aria-label={`Rating ${value}`}\n />\n )\n }\n\n // Use hoverValue for checked state when hovering (for visual preview)\n // DaisyUI CSS fills all stars up to the checked one\n const displayValue = hoverValue > 0 ? hoverValue : currentValue\n\n return (\n <input\n type=\"radio\"\n name={name}\n className={classes}\n checked={displayValue === value}\n onChange={() => {}} // Controlled by onClick\n onClick={() => onChange(value)}\n onMouseEnter={() => onHover(value)}\n aria-label={`Rating ${value}`}\n />\n )\n}\n\nexport const Rating = Object.assign(RatingRoot, {\n Item: RatingItem,\n})\n"],"names":["dRating","dRatingXs","dRatingSm","dRatingMd","dRatingLg","dRatingXl","dRatingHalf","dRatingHidden","dMask","dMaskStar","dMaskStar2","dMaskHeart","dMaskHalf1","dMaskHalf2","RatingContext","createContext","RatingRoot","children","value","defaultValue","onChange","onHoverChange","count","size","gap","color","mask","allowClear","allowHalf","disabled","className","rest","componentSize","useConfig","effectiveSize","internalValue","setInternalValue","useState","hoverValue","setHoverValue","currentValue","name","useId","handleChange","newValue","finalValue","handleHover","hoverVal","sizeClasses","gapClasses","classes","effectiveMask","items","jsxs","Fragment","jsx","RatingItem","_","i","React","hidden","half","context","useContext","onHover","halfGap","maskClasses","halfClasses","displayValue","Rating"],"mappings":";;;AAIA,MAAMA,IAAU,UACVC,IAAY,aACZC,IAAY,aACZC,IAAY,aACZC,IAAY,aACZC,IAAY,aACZC,IAAc,eACdC,IAAgB,iBAChBC,IAAQ,QACRC,IAAY,aACZC,IAAa,eACbC,KAAa,cACbC,KAAa,eACbC,KAAa,eAsCbC,IAAgBC,EAAyC,IAAI;AAEnE,SAASC,GAAW;AAAA,EAClB,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,MAAAC;AAAA,EACA,KAAAC,IAAM;AAAA,EACN,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,YAAAC,IAAa;AAAA,EACb,WAAAC,IAAY;AAAA,EACZ,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,GAAgB;AACd,QAAM,EAAE,eAAAC,EAAA,IAAkBC,EAAA,GACpBC,IAAgBX,KAAQS,KAAiB,MACzC,CAACG,GAAeC,CAAgB,IAAIC,EAASlB,CAAY,GACzD,CAACmB,GAAYC,CAAa,IAAIF,EAAS,CAAC,GACxCG,IAAetB,MAAU,SAAYA,IAAQiB,GAC7CM,IAAOC,EAAA,GAEPC,IAAe,CAACC,MAAqB;AACzC,QAAIf,EAAU;AAEd,UAAMgB,IAAalB,KAAciB,MAAaJ,IAAe,IAAII;AACjE,IAAI1B,MAAU,UACZkB,EAAiBS,CAAU,GAG7BN,EAAc,CAAC,GACfnB,IAAWyB,CAAU;AAAA,EACvB,GAEMC,IAAc,CAACC,MAAqB;AACxC,IAAIlB,MACJU,EAAcQ,CAAQ,GACtB1B,IAAgB0B,CAAQ;AAAA,EAC1B,GAEMC,IAAc;AAAA,IAClB,IAAI/C;AAAA,IACJ,IAAIC;AAAA,IACJ,IAAIC;AAAA,IACJ,IAAIC;AAAA,IACJ,IAAIC;AAAA,EAAA,GAGA4C,IAAa;AAAA,IACjB,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA,GAGAC,IAAU;AAAA,IACdlD;AAAA;AAAA,KAEA4B,KAA0CM,MAAiBc,EAAYd,CAAa;AAAA,IACpFN,IAAYtB,IAAekB,KAAOyB,EAAWzB,CAAG;AAAA,IAChDM;AAAA,EAAA,EACA,OAAO,OAAO,EAAE,KAAK,GAAG,GAIpBqB,IAAgBvB,IAAY,WAAWF,GACvC0B,IAAQnC,KACZ,gBAAAoC,EAAAC,GAAA,EACG,UAAA;AAAA,IAAA3B,KAAc,gBAAA4B,EAACC,GAAA,EAAW,OAAO,GAAG,QAAM,IAAC;AAAA,IAC3C5B;AAAA;AAAA,MAEC,MAAM,KAAK,EAAE,QAAQN,EAAA,GAAS,CAACmC,GAAGC,MAChC,gBAAAL,EAACM,EAAM,UAAN,EACC,UAAA;AAAA,QAAA,gBAAAJ,EAACC,GAAA,EAAW,OAAOE,IAAI,KAAK,MAAMP,GAAe,OAAA1B,GAAc,MAAK,QAAA,CAAQ;AAAA,QAC5E,gBAAA8B,EAACC,KAAW,OAAOE,IAAI,GAAG,MAAMP,GAAe,OAAA1B,GAAc,MAAK,SAAA,CAAS;AAAA,MAAA,EAAA,GAFxDiC,IAAI,CAGzB,CACD;AAAA;AAAA;AAAA,MAGD,MAAM,KAAK,EAAE,QAAQpC,EAAA,GAAS,CAACmC,GAAGC,wBAC/BF,GAAA,EAAuB,OAAOE,IAAI,GAAG,MAAMP,GAAe,OAAA1B,EAAA,GAA1CiC,IAAI,CAAoD,CAC1E;AAAA;AAAA,EAAA,GAEL;AAGF,SACE,gBAAAH,EAACzC,EAAc,UAAd,EAAuB,OAAO,EAAE,MAAA2B,GAAM,cAAAD,GAAc,YAAAF,GAAY,UAAUK,GAAc,SAASG,GAAa,MAAMZ,GAAe,UAAAL,GAAU,SAASD,IAAYJ,IAAM,UACvK,UAAA,gBAAA+B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,WAAWL;AAAA,MACX,cAAYV;AAAA,MACZ,cAAc,MAAMM,EAAY,CAAC;AAAA,MAChC,GAAGf;AAAA,MAEH,UAAAqB;AAAA,IAAA;AAAA,EAAA,GAEL;AAEJ;AAEA,SAASI,EAAW,EAAE,OAAAtC,GAAO,MAAAQ,IAAO,UAAU,OAAAD,IAAQ,cAAc,QAAAmC,IAAS,IAAO,MAAAC,GAAM,WAAA/B,IAAY,GAAA,GAAuB;AAC3H,QAAMgC,IAAUC,EAAWjD,CAAa;AACxC,MAAI,CAACgD;AACH,UAAM,IAAI,MAAM,wCAAwC;AAG1D,QAAM,EAAE,MAAArB,GAAM,cAAAD,GAAc,YAAAF,GAAY,UAAAlB,GAAU,SAAA4C,GAAS,UAAAnC,GAAU,SAAAoC,MAAYH,GAE3EI,IAAc;AAAA,IAClB,MAAMzD;AAAA,IACN,UAAUC;AAAA,IACV,OAAOC;AAAA,EAAA,GAWHwD,IAAc;AAAA,IAClB,OAAOvD;AAAA,IACP,QAAQ,GAAGC,EAAU,IAAIoD,IAVJ;AAAA,MACrB,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,EAK8CA,CAAO,IAAI,EAAE,GAAG,KAAA;AAAA,EAAK,GAKnEf,IAAUU,IACZrD,IACA;AAAA,IACEC;AAAA,IACA0D,EAAYxC,CAAI;AAAA,IAChBmC,KAAQM,EAAYN,CAAI;AAAA,IACxBpC;AAAA,IACAK;AAAA,EAAA,EACA,OAAO,OAAO,EAAE,KAAK,GAAG;AAE9B,MAAID;AACF,WACE,gBAAA0B;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWL;AAAA,QACX,gBAAcV,MAAiBtB,IAAQ,SAAS;AAAA,QAChD,cAAY,UAAUA,CAAK;AAAA,MAAA;AAAA,IAAA;AAOjC,QAAMkD,IAAe9B,IAAa,IAAIA,IAAaE;AAEnD,SACE,gBAAAe;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,MAAAd;AAAA,MACA,WAAWS;AAAA,MACX,SAASkB,MAAiBlD;AAAA,MAC1B,UAAU,MAAM;AAAA,MAAC;AAAA,MACjB,SAAS,MAAME,EAASF,CAAK;AAAA,MAC7B,cAAc,MAAM8C,EAAQ9C,CAAK;AAAA,MACjC,cAAY,UAAUA,CAAK;AAAA,IAAA;AAAA,EAAA;AAGjC;AAEO,MAAMmD,KAAS,OAAO,OAAOrD,IAAY;AAAA,EAC9C,MAAMwC;AACR,CAAC;"}
1
+ {"version":3,"file":"Rating.js","sources":["../../src/components/Rating.tsx"],"sourcesContent":["import React, { createContext, useContext, useId, useState } from 'react'\nimport { useConfig } from '../providers/ConfigProvider'\n\n// DaisyUI classes\nconst dRating = 'rating'\nconst dRatingXs = 'rating-xs'\nconst dRatingSm = 'rating-sm'\nconst dRatingMd = 'rating-md'\nconst dRatingLg = 'rating-lg'\nconst dRatingXl = 'rating-xl'\nconst dRatingHalf = 'rating-half'\nconst dRatingHidden = 'rating-hidden'\nconst dMask = 'mask'\nconst dMaskStar = 'mask-star'\nconst dMaskStar2 = 'mask-star-2'\nconst dMaskHeart = 'mask-heart'\nconst dMaskHalf1 = 'mask-half-1'\nconst dMaskHalf2 = 'mask-half-2'\n\nexport interface RatingProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n children?: React.ReactNode\n value?: number\n defaultValue?: number\n onChange?: (value: number) => void\n onHoverChange?: (value: number) => void\n count?: number\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n gap?: 'none' | 'xs' | 'sm' | 'md' | 'lg'\n color?: string\n mask?: 'star' | 'star-2' | 'heart'\n allowClear?: boolean\n allowHalf?: boolean\n disabled?: boolean\n 'data-testid'?: string\n}\n\nexport interface RatingItemProps {\n value: number\n mask?: 'star' | 'star-2' | 'heart'\n color?: string\n hidden?: boolean\n half?: 'first' | 'second'\n className?: string\n 'data-testid'?: string\n}\n\ninterface RatingContextValue {\n name: string\n currentValue: number\n hoverValue: number\n onChange: (value: number) => void\n onHover: (value: number) => void\n size?: string\n disabled?: boolean\n halfGap?: 'none' | 'xs' | 'sm' | 'md' | 'lg'\n getTestId?: (suffix: string) => string | undefined\n}\n\nconst RatingContext = createContext<RatingContextValue | null>(null)\n\nfunction RatingRoot({\n children,\n value,\n defaultValue = 0,\n onChange,\n onHoverChange,\n count = 5,\n size,\n gap = 'md',\n color = 'bg-warning',\n mask = 'star-2',\n allowClear = true,\n allowHalf = false,\n disabled = false,\n className = '',\n 'data-testid': testId,\n ...rest\n}: RatingProps) {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n const [internalValue, setInternalValue] = useState(defaultValue)\n const [hoverValue, setHoverValue] = useState(0)\n const currentValue = value !== undefined ? value : internalValue\n const name = useId()\n\n const handleChange = (newValue: number) => {\n if (disabled) return\n // Allow clearing if clicking the same value and allowClear is true\n const finalValue = allowClear && newValue === currentValue ? 0 : newValue\n if (value === undefined) {\n setInternalValue(finalValue)\n }\n // Clear hover state so the clicked value shows immediately\n setHoverValue(0)\n onChange?.(finalValue)\n }\n\n const handleHover = (hoverVal: number) => {\n if (disabled) return\n setHoverValue(hoverVal)\n onHoverChange?.(hoverVal)\n }\n\n const getTestId = (suffix: string) => (testId ? `${testId}-${suffix}` : undefined)\n\n const sizeClasses = {\n xs: dRatingXs,\n sm: dRatingSm,\n md: dRatingMd,\n lg: dRatingLg,\n xl: dRatingXl,\n }\n\n const gapClasses = {\n none: 'gap-0',\n xs: 'gap-0.5',\n sm: 'gap-1',\n md: 'gap-2',\n lg: 'gap-3',\n }\n\n const classes = [\n dRating,\n // Half-star mode requires a size class to render correctly, default to md\n allowHalf ? sizeClasses[effectiveSize] : (effectiveSize && sizeClasses[effectiveSize]),\n allowHalf ? dRatingHalf : (gap && gapClasses[gap]),\n className,\n ].filter(Boolean).join(' ')\n\n // Auto-generate items if no children provided\n // Note: half-star mode requires mask-star-2 per DaisyUI\n const effectiveMask = allowHalf ? 'star-2' : mask\n const items = children || (\n <>\n {allowClear && <RatingItem value={0} hidden />}\n {allowHalf ? (\n // Half-star mode: each star is two inputs\n Array.from({ length: count }, (_, i) => (\n <React.Fragment key={i + 1}>\n <RatingItem value={i + 0.5} mask={effectiveMask} color={color} half=\"first\" />\n <RatingItem value={i + 1} mask={effectiveMask} color={color} half=\"second\" />\n </React.Fragment>\n ))\n ) : (\n // Standard mode: one input per star\n Array.from({ length: count }, (_, i) => (\n <RatingItem key={i + 1} value={i + 1} mask={effectiveMask} color={color} />\n ))\n )}\n </>\n )\n\n return (\n <RatingContext.Provider value={{ name, currentValue, hoverValue, onChange: handleChange, onHover: handleHover, size: effectiveSize, disabled, halfGap: allowHalf ? gap : undefined, getTestId }}>\n <div\n role=\"radiogroup\"\n aria-label=\"Rating\"\n className={classes}\n data-value={currentValue}\n data-testid={testId}\n onMouseLeave={() => handleHover(0)}\n {...rest}\n >\n {items}\n </div>\n </RatingContext.Provider>\n )\n}\n\nfunction RatingItem({ value, mask = 'star-2', color = 'bg-warning', hidden = false, half, className = '', 'data-testid': testId }: RatingItemProps) {\n const context = useContext(RatingContext)\n if (!context) {\n throw new Error('Rating.Item must be used within Rating')\n }\n\n const { name, currentValue, hoverValue, onChange, onHover, disabled, halfGap, getTestId } = context\n const itemTestId = testId ?? getTestId?.(`item-${value}`)\n\n const maskClasses = {\n star: dMaskStar,\n 'star-2': dMaskStar2,\n heart: dMaskHeart,\n }\n\n const halfGapClasses = {\n none: '',\n xs: 'mr-0.5',\n sm: 'mr-1',\n md: 'mr-2',\n lg: 'mr-3',\n }\n\n const halfClasses = {\n first: dMaskHalf1,\n second: `${dMaskHalf2} ${halfGap ? halfGapClasses[halfGap] : ''}`.trim(),\n }\n\n // Hidden items only get rating-hidden class (no mask)\n // Visible items get mask classes - DaisyUI CSS handles filled/unfilled state\n const classes = hidden\n ? dRatingHidden\n : [\n dMask,\n maskClasses[mask],\n half && halfClasses[half],\n color,\n className,\n ].filter(Boolean).join(' ')\n\n if (disabled) {\n return (\n <div\n className={classes}\n aria-current={currentValue === value ? 'true' : undefined}\n aria-label={`Rating ${value}`}\n data-testid={itemTestId}\n />\n )\n }\n\n // Use hoverValue for checked state when hovering (for visual preview)\n // DaisyUI CSS fills all stars up to the checked one\n const displayValue = hoverValue > 0 ? hoverValue : currentValue\n\n return (\n <input\n type=\"radio\"\n name={name}\n className={classes}\n checked={displayValue === value}\n onChange={() => {}} // Controlled by onClick\n onClick={() => onChange(value)}\n onMouseEnter={() => onHover(value)}\n aria-label={`Rating ${value}`}\n data-testid={itemTestId}\n />\n )\n}\n\nexport const Rating = Object.assign(RatingRoot, {\n Item: RatingItem,\n})\n"],"names":["dRating","dRatingXs","dRatingSm","dRatingMd","dRatingLg","dRatingXl","dRatingHalf","dRatingHidden","dMask","dMaskStar","dMaskStar2","dMaskHeart","dMaskHalf1","dMaskHalf2","RatingContext","createContext","RatingRoot","children","value","defaultValue","onChange","onHoverChange","count","size","gap","color","mask","allowClear","allowHalf","disabled","className","testId","rest","componentSize","useConfig","effectiveSize","internalValue","setInternalValue","useState","hoverValue","setHoverValue","currentValue","name","useId","handleChange","newValue","finalValue","handleHover","hoverVal","getTestId","suffix","sizeClasses","gapClasses","classes","effectiveMask","items","jsxs","Fragment","jsx","RatingItem","_","i","React","hidden","half","context","useContext","onHover","halfGap","itemTestId","maskClasses","halfClasses","displayValue","Rating"],"mappings":"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"}
@@ -6,13 +6,15 @@ export interface ShowProps {
6
6
  below?: Breakpoint;
7
7
  at?: Breakpoint | Breakpoint[];
8
8
  between?: [Breakpoint, Breakpoint];
9
+ 'data-testid'?: string;
9
10
  }
10
- export declare function Show({ children, above, below, at, between }: ShowProps): React.ReactElement | null;
11
+ export declare function Show({ children, above, below, at, between, 'data-testid': testId }: ShowProps): React.ReactElement | null;
11
12
  export interface HideProps {
12
13
  children: ReactNode;
13
14
  above?: Breakpoint;
14
15
  below?: Breakpoint;
15
16
  at?: Breakpoint | Breakpoint[];
16
17
  between?: [Breakpoint, Breakpoint];
18
+ 'data-testid'?: string;
17
19
  }
18
- export declare function Hide({ children, above, below, at, between }: HideProps): React.ReactElement | null;
20
+ export declare function Hide({ children, above, below, at, between, 'data-testid': testId }: HideProps): React.ReactElement | null;
@@ -1,17 +1,18 @@
1
1
  import { jsx as v, Fragment as A } from "react/jsx-runtime";
2
- import { useBreakpoint as m } from "../hooks/useBreakpoint.js";
3
- function h({ children: f, above: o, below: r, at: s, between: e }) {
4
- const { isAbove: d, isBelow: n, isAt: l, isBetween: u } = m();
2
+ import d from "react";
3
+ import { useBreakpoint as p } from "../hooks/useBreakpoint.js";
4
+ function c({ children: s, above: r, below: t, at: e, between: o, "data-testid": l }) {
5
+ const { isAbove: n, isBelow: u, isAt: f, isBetween: m } = p();
5
6
  let i = !1;
6
- return o !== void 0 ? i = d(o) : r !== void 0 ? i = n(r) : s !== void 0 ? Array.isArray(s) ? i = s.some((t) => l(t)) : i = l(s) : e !== void 0 ? i = u(e[0], e[1]) : i = !0, i ? /* @__PURE__ */ v(A, { children: f }) : null;
7
+ return r !== void 0 ? i = n(r) : t !== void 0 ? i = u(t) : e !== void 0 ? Array.isArray(e) ? i = e.some((a) => f(a)) : i = f(e) : o !== void 0 ? i = m(o[0], o[1]) : i = !0, i ? l && d.isValidElement(s) ? d.cloneElement(s, { "data-testid": l }) : /* @__PURE__ */ v(A, { children: s }) : null;
7
8
  }
8
- function p({ children: f, above: o, below: r, at: s, between: e }) {
9
- const { isAbove: d, isBelow: n, isAt: l, isBetween: u } = m();
9
+ function x({ children: s, above: r, below: t, at: e, between: o, "data-testid": l }) {
10
+ const { isAbove: n, isBelow: u, isAt: f, isBetween: m } = p();
10
11
  let i = !1;
11
- return o !== void 0 ? i = d(o) : r !== void 0 ? i = n(r) : s !== void 0 ? Array.isArray(s) ? i = s.some((t) => l(t)) : i = l(s) : e !== void 0 && (i = u(e[0], e[1])), i ? null : /* @__PURE__ */ v(A, { children: f });
12
+ return r !== void 0 ? i = n(r) : t !== void 0 ? i = u(t) : e !== void 0 ? Array.isArray(e) ? i = e.some((a) => f(a)) : i = f(e) : o !== void 0 && (i = m(o[0], o[1])), i ? null : l && d.isValidElement(s) ? d.cloneElement(s, { "data-testid": l }) : /* @__PURE__ */ v(A, { children: s });
12
13
  }
13
14
  export {
14
- p as Hide,
15
- h as Show
15
+ x as Hide,
16
+ c as Show
16
17
  };
17
18
  //# sourceMappingURL=Responsive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Responsive.js","sources":["../../src/components/Responsive.tsx"],"sourcesContent":["import React, { ReactNode } from 'react'\nimport { useBreakpoint, Breakpoint } from '../hooks/useBreakpoint'\n\nexport interface ShowProps {\n children: ReactNode\n above?: Breakpoint\n below?: Breakpoint\n at?: Breakpoint | Breakpoint[]\n between?: [Breakpoint, Breakpoint]\n}\n\nexport function Show({ children, above, below, at, between }: ShowProps): React.ReactElement | null {\n const { isAbove, isBelow, isAt, isBetween } = useBreakpoint()\n\n let shouldShow = false\n\n if (above !== undefined) {\n shouldShow = isAbove(above)\n } else if (below !== undefined) {\n shouldShow = isBelow(below)\n } else if (at !== undefined) {\n if (Array.isArray(at)) {\n shouldShow = at.some((bp) => isAt(bp))\n } else {\n shouldShow = isAt(at)\n }\n } else if (between !== undefined) {\n shouldShow = isBetween(between[0], between[1])\n } else {\n shouldShow = true\n }\n\n return shouldShow ? <>{children}</> : null\n}\n\nexport interface HideProps {\n children: ReactNode\n above?: Breakpoint\n below?: Breakpoint\n at?: Breakpoint | Breakpoint[]\n between?: [Breakpoint, Breakpoint]\n}\n\nexport function Hide({ children, above, below, at, between }: HideProps): React.ReactElement | null {\n const { isAbove, isBelow, isAt, isBetween } = useBreakpoint()\n\n let shouldHide = false\n\n if (above !== undefined) {\n shouldHide = isAbove(above)\n } else if (below !== undefined) {\n shouldHide = isBelow(below)\n } else if (at !== undefined) {\n if (Array.isArray(at)) {\n shouldHide = at.some((bp) => isAt(bp))\n } else {\n shouldHide = isAt(at)\n }\n } else if (between !== undefined) {\n shouldHide = isBetween(between[0], between[1])\n }\n\n return shouldHide ? null : <>{children}</>\n}\n"],"names":["Show","children","above","below","at","between","isAbove","isBelow","isAt","isBetween","useBreakpoint","shouldShow","bp","jsx","Fragment","Hide","shouldHide"],"mappings":";;AAWO,SAASA,EAAK,EAAE,UAAAC,GAAU,OAAAC,GAAO,OAAAC,GAAO,IAAAC,GAAI,SAAAC,KAAiD;AAClG,QAAM,EAAE,SAAAC,GAAS,SAAAC,GAAS,MAAAC,GAAM,WAAAC,EAAA,IAAcC,EAAA;AAE9C,MAAIC,IAAa;AAEjB,SAAIT,MAAU,SACZS,IAAaL,EAAQJ,CAAK,IACjBC,MAAU,SACnBQ,IAAaJ,EAAQJ,CAAK,IACjBC,MAAO,SACZ,MAAM,QAAQA,CAAE,IAClBO,IAAaP,EAAG,KAAK,CAACQ,MAAOJ,EAAKI,CAAE,CAAC,IAErCD,IAAaH,EAAKJ,CAAE,IAEbC,MAAY,SACrBM,IAAaF,EAAUJ,EAAQ,CAAC,GAAGA,EAAQ,CAAC,CAAC,IAE7CM,IAAa,IAGRA,IAAa,gBAAAE,EAAAC,GAAA,EAAG,UAAAb,EAAA,CAAS,IAAM;AACxC;AAUO,SAASc,EAAK,EAAE,UAAAd,GAAU,OAAAC,GAAO,OAAAC,GAAO,IAAAC,GAAI,SAAAC,KAAiD;AAClG,QAAM,EAAE,SAAAC,GAAS,SAAAC,GAAS,MAAAC,GAAM,WAAAC,EAAA,IAAcC,EAAA;AAE9C,MAAIM,IAAa;AAEjB,SAAId,MAAU,SACZc,IAAaV,EAAQJ,CAAK,IACjBC,MAAU,SACnBa,IAAaT,EAAQJ,CAAK,IACjBC,MAAO,SACZ,MAAM,QAAQA,CAAE,IAClBY,IAAaZ,EAAG,KAAK,CAACQ,MAAOJ,EAAKI,CAAE,CAAC,IAErCI,IAAaR,EAAKJ,CAAE,IAEbC,MAAY,WACrBW,IAAaP,EAAUJ,EAAQ,CAAC,GAAGA,EAAQ,CAAC,CAAC,IAGxCW,IAAa,OAAO,gBAAAH,EAAAC,GAAA,EAAG,UAAAb,EAAA,CAAS;AACzC;"}
1
+ {"version":3,"file":"Responsive.js","sources":["../../src/components/Responsive.tsx"],"sourcesContent":["import React, { ReactNode } from 'react'\nimport { useBreakpoint, Breakpoint } from '../hooks/useBreakpoint'\n\nexport interface ShowProps {\n children: ReactNode\n above?: Breakpoint\n below?: Breakpoint\n at?: Breakpoint | Breakpoint[]\n between?: [Breakpoint, Breakpoint]\n 'data-testid'?: string\n}\n\nexport function Show({ children, above, below, at, between, 'data-testid': testId }: ShowProps): React.ReactElement | null {\n const { isAbove, isBelow, isAt, isBetween } = useBreakpoint()\n\n let shouldShow = false\n\n if (above !== undefined) {\n shouldShow = isAbove(above)\n } else if (below !== undefined) {\n shouldShow = isBelow(below)\n } else if (at !== undefined) {\n if (Array.isArray(at)) {\n shouldShow = at.some((bp) => isAt(bp))\n } else {\n shouldShow = isAt(at)\n }\n } else if (between !== undefined) {\n shouldShow = isBetween(between[0], between[1])\n } else {\n shouldShow = true\n }\n\n if (!shouldShow) return null\n if (testId && React.isValidElement(children)) {\n return React.cloneElement(children, { 'data-testid': testId } as Record<string, unknown>)\n }\n return <>{children}</>\n}\n\nexport interface HideProps {\n children: ReactNode\n above?: Breakpoint\n below?: Breakpoint\n at?: Breakpoint | Breakpoint[]\n between?: [Breakpoint, Breakpoint]\n 'data-testid'?: string\n}\n\nexport function Hide({ children, above, below, at, between, 'data-testid': testId }: HideProps): React.ReactElement | null {\n const { isAbove, isBelow, isAt, isBetween } = useBreakpoint()\n\n let shouldHide = false\n\n if (above !== undefined) {\n shouldHide = isAbove(above)\n } else if (below !== undefined) {\n shouldHide = isBelow(below)\n } else if (at !== undefined) {\n if (Array.isArray(at)) {\n shouldHide = at.some((bp) => isAt(bp))\n } else {\n shouldHide = isAt(at)\n }\n } else if (between !== undefined) {\n shouldHide = isBetween(between[0], between[1])\n }\n\n if (shouldHide) return null\n if (testId && React.isValidElement(children)) {\n return React.cloneElement(children, { 'data-testid': testId } as Record<string, unknown>)\n }\n return <>{children}</>\n}\n"],"names":["Show","children","above","below","at","between","testId","isAbove","isBelow","isAt","isBetween","useBreakpoint","shouldShow","bp","React","Hide","shouldHide"],"mappings":";;;AAYO,SAASA,EAAK,EAAE,UAAAC,GAAU,OAAAC,GAAO,OAAAC,GAAO,IAAAC,GAAI,SAAAC,GAAS,eAAeC,KAAgD;AACzH,QAAM,EAAE,SAAAC,GAAS,SAAAC,GAAS,MAAAC,GAAM,WAAAC,EAAA,IAAcC,EAAA;AAE9C,MAAIC,IAAa;AAkBjB,SAhBIV,MAAU,SACZU,IAAaL,EAAQL,CAAK,IACjBC,MAAU,SACnBS,IAAaJ,EAAQL,CAAK,IACjBC,MAAO,SACZ,MAAM,QAAQA,CAAE,IAClBQ,IAAaR,EAAG,KAAK,CAACS,MAAOJ,EAAKI,CAAE,CAAC,IAErCD,IAAaH,EAAKL,CAAE,IAEbC,MAAY,SACrBO,IAAaF,EAAUL,EAAQ,CAAC,GAAGA,EAAQ,CAAC,CAAC,IAE7CO,IAAa,IAGVA,IACDN,KAAUQ,EAAM,eAAeb,CAAQ,IAClCa,EAAM,aAAab,GAAU,EAAE,eAAeK,GAAmC,2BAEhF,UAAAL,GAAS,IAJK;AAK1B;AAWO,SAASc,EAAK,EAAE,UAAAd,GAAU,OAAAC,GAAO,OAAAC,GAAO,IAAAC,GAAI,SAAAC,GAAS,eAAeC,KAAgD;AACzH,QAAM,EAAE,SAAAC,GAAS,SAAAC,GAAS,MAAAC,GAAM,WAAAC,EAAA,IAAcC,EAAA;AAE9C,MAAIK,IAAa;AAgBjB,SAdId,MAAU,SACZc,IAAaT,EAAQL,CAAK,IACjBC,MAAU,SACnBa,IAAaR,EAAQL,CAAK,IACjBC,MAAO,SACZ,MAAM,QAAQA,CAAE,IAClBY,IAAaZ,EAAG,KAAK,CAACS,MAAOJ,EAAKI,CAAE,CAAC,IAErCG,IAAaP,EAAKL,CAAE,IAEbC,MAAY,WACrBW,IAAaN,EAAUL,EAAQ,CAAC,GAAGA,EAAQ,CAAC,CAAC,IAG3CW,IAAmB,OACnBV,KAAUQ,EAAM,eAAeb,CAAQ,IAClCa,EAAM,aAAab,GAAU,EAAE,eAAeK,GAAmC,2BAEhF,UAAAL,GAAS;AACrB;"}
@@ -7,6 +7,7 @@ export interface ResultProps extends Omit<React.HTMLAttributes<HTMLDivElement>,
7
7
  icon?: React.ReactNode;
8
8
  extra?: React.ReactNode;
9
9
  children?: React.ReactNode;
10
+ 'data-testid'?: string;
10
11
  }
11
12
  export declare const Result: React.FC<ResultProps>;
12
13
  export default Result;
@@ -1,5 +1,5 @@
1
- import { jsxs as d, jsx as e } from "react/jsx-runtime";
2
- const m = {
1
+ import { jsxs as h, jsx as e } from "react/jsx-runtime";
2
+ const u = {
3
3
  success: /* @__PURE__ */ e(
4
4
  "svg",
5
5
  {
@@ -75,36 +75,38 @@ const m = {
75
75
  404: /* @__PURE__ */ e("div", { className: "text-6xl font-bold text-base-content/40", children: "404" }),
76
76
  403: /* @__PURE__ */ e("div", { className: "text-6xl font-bold text-base-content/40", children: "403" }),
77
77
  500: /* @__PURE__ */ e("div", { className: "text-6xl font-bold text-base-content/40", children: "500" })
78
- }, x = ({
79
- status: t = "info",
80
- title: n,
81
- subTitle: s,
82
- icon: o,
78
+ }, v = ({
79
+ status: n = "info",
80
+ title: o,
81
+ subTitle: a,
82
+ icon: i,
83
83
  extra: r,
84
84
  children: l,
85
- className: i = "",
86
- ...c
85
+ className: c = "",
86
+ "data-testid": s,
87
+ ...m
87
88
  }) => {
88
- const a = o !== void 0 ? o : m[t];
89
- return /* @__PURE__ */ d(
89
+ const d = i !== void 0 ? i : u[n], t = (x) => s ? `${s}-${x}` : void 0;
90
+ return /* @__PURE__ */ h(
90
91
  "div",
91
92
  {
92
- className: `w-full flex flex-col items-center justify-center text-center p-8 ${i}`,
93
- "data-status": t,
94
- ...c,
93
+ className: `w-full flex flex-col items-center justify-center text-center p-8 ${c}`,
94
+ "data-status": n,
95
+ "data-testid": s,
96
+ ...m,
95
97
  children: [
96
- a && /* @__PURE__ */ e("div", { className: "mb-6", children: a }),
97
- n && /* @__PURE__ */ e("div", { className: "text-2xl font-semibold mb-2 text-base-content", children: n }),
98
- s && /* @__PURE__ */ e("div", { className: "text-base text-base-content/70 mb-6 max-w-md", children: s }),
99
- l && /* @__PURE__ */ e("div", { className: "mb-6 max-w-2xl", children: l }),
100
- r && /* @__PURE__ */ e("div", { className: "flex gap-2", children: r })
98
+ d && /* @__PURE__ */ e("div", { className: "mb-6", "data-testid": t("icon"), children: d }),
99
+ o && /* @__PURE__ */ e("div", { className: "text-2xl font-semibold mb-2 text-base-content", "data-testid": t("title"), children: o }),
100
+ a && /* @__PURE__ */ e("div", { className: "text-base text-base-content/70 mb-6 max-w-md", "data-testid": t("subtitle"), children: a }),
101
+ l && /* @__PURE__ */ e("div", { className: "mb-6 max-w-2xl", "data-testid": t("content"), children: l }),
102
+ r && /* @__PURE__ */ e("div", { className: "flex gap-2", "data-testid": t("extra"), children: r })
101
103
  ]
102
104
  }
103
105
  );
104
106
  };
105
- x.displayName = "Result";
107
+ v.displayName = "Result";
106
108
  export {
107
- x as Result,
108
- x as default
109
+ v as Result,
110
+ v as default
109
111
  };
110
112
  //# sourceMappingURL=Result.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Result.js","sources":["../../src/components/Result.tsx"],"sourcesContent":["import React from 'react'\n\nexport type ResultStatus = 'success' | 'error' | 'info' | 'warning' | '404' | '403' | '500'\n\nexport interface ResultProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n status?: ResultStatus\n title?: React.ReactNode\n subTitle?: React.ReactNode\n icon?: React.ReactNode\n extra?: React.ReactNode\n children?: React.ReactNode\n}\n\nconst defaultIcons: Record<ResultStatus, React.ReactNode> = {\n success: (\n <svg\n className=\"w-16 h-16 text-success\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n ),\n error: (\n <svg\n className=\"w-16 h-16 text-error\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n ),\n info: (\n <svg\n className=\"w-16 h-16 text-info\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n ),\n warning: (\n <svg\n className=\"w-16 h-16 text-warning\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n ),\n '404': (\n <div className=\"text-6xl font-bold text-base-content/40\">404</div>\n ),\n '403': (\n <div className=\"text-6xl font-bold text-base-content/40\">403</div>\n ),\n '500': (\n <div className=\"text-6xl font-bold text-base-content/40\">500</div>\n ),\n}\n\nexport const Result: React.FC<ResultProps> = ({\n status = 'info',\n title,\n subTitle,\n icon,\n extra,\n children,\n className = '',\n ...rest\n}) => {\n const displayIcon = icon !== undefined ? icon : defaultIcons[status]\n\n return (\n <div\n className={`w-full flex flex-col items-center justify-center text-center p-8 ${className}`}\n data-status={status}\n {...rest}\n >\n {displayIcon && <div className=\"mb-6\">{displayIcon}</div>}\n\n {title && (\n <div className=\"text-2xl font-semibold mb-2 text-base-content\">\n {title}\n </div>\n )}\n\n {subTitle && (\n <div className=\"text-base text-base-content/70 mb-6 max-w-md\">\n {subTitle}\n </div>\n )}\n\n {children && <div className=\"mb-6 max-w-2xl\">{children}</div>}\n\n {extra && <div className=\"flex gap-2\">{extra}</div>}\n </div>\n )\n}\n\nResult.displayName = 'Result'\n\nexport default Result\n"],"names":["defaultIcons","jsx","Result","status","title","subTitle","icon","extra","children","className","rest","displayIcon","jsxs"],"mappings":";AAaA,MAAMA,IAAsD;AAAA,EAC1D,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,QAAO;AAAA,MAEP,UAAA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,eAAc;AAAA,UACd,gBAAe;AAAA,UACf,aAAa;AAAA,UACb,GAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ;AAAA,EAAA;AAAA,EAGJ,OACE,gBAAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,QAAO;AAAA,MAEP,UAAA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,eAAc;AAAA,UACd,gBAAe;AAAA,UACf,aAAa;AAAA,UACb,GAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ;AAAA,EAAA;AAAA,EAGJ,MACE,gBAAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,QAAO;AAAA,MAEP,UAAA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,eAAc;AAAA,UACd,gBAAe;AAAA,UACf,aAAa;AAAA,UACb,GAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ;AAAA,EAAA;AAAA,EAGJ,SACE,gBAAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,QAAO;AAAA,MAEP,UAAA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,eAAc;AAAA,UACd,gBAAe;AAAA,UACf,aAAa;AAAA,UACb,GAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ;AAAA,EAAA;AAAA,EAGJ,KACE,gBAAAA,EAAC,OAAA,EAAI,WAAU,2CAA0C,UAAA,OAAG;AAAA,EAE9D,KACE,gBAAAA,EAAC,OAAA,EAAI,WAAU,2CAA0C,UAAA,OAAG;AAAA,EAE9D,KACE,gBAAAA,EAAC,OAAA,EAAI,WAAU,2CAA0C,UAAA,MAAA,CAAG;AAEhE,GAEaC,IAAgC,CAAC;AAAA,EAC5C,QAAAC,IAAS;AAAA,EACT,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAcL,MAAS,SAAYA,IAAON,EAAaG,CAAM;AAEnE,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,oEAAoEH,CAAS;AAAA,MACxF,eAAaN;AAAA,MACZ,GAAGO;AAAA,MAEH,UAAA;AAAA,QAAAC,KAAe,gBAAAV,EAAC,OAAA,EAAI,WAAU,QAAQ,UAAAU,GAAY;AAAA,QAElDP,KACC,gBAAAH,EAAC,OAAA,EAAI,WAAU,iDACZ,UAAAG,GACH;AAAA,QAGDC,KACC,gBAAAJ,EAAC,OAAA,EAAI,WAAU,gDACZ,UAAAI,GACH;AAAA,QAGDG,KAAY,gBAAAP,EAAC,OAAA,EAAI,WAAU,kBAAkB,UAAAO,GAAS;AAAA,QAEtDD,KAAS,gBAAAN,EAAC,OAAA,EAAI,WAAU,cAAc,UAAAM,EAAA,CAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGnD;AAEAL,EAAO,cAAc;"}
1
+ {"version":3,"file":"Result.js","sources":["../../src/components/Result.tsx"],"sourcesContent":["import React from 'react'\n\nexport type ResultStatus = 'success' | 'error' | 'info' | 'warning' | '404' | '403' | '500'\n\nexport interface ResultProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n status?: ResultStatus\n title?: React.ReactNode\n subTitle?: React.ReactNode\n icon?: React.ReactNode\n extra?: React.ReactNode\n children?: React.ReactNode\n 'data-testid'?: string\n}\n\nconst defaultIcons: Record<ResultStatus, React.ReactNode> = {\n success: (\n <svg\n className=\"w-16 h-16 text-success\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n ),\n error: (\n <svg\n className=\"w-16 h-16 text-error\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n ),\n info: (\n <svg\n className=\"w-16 h-16 text-info\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n ),\n warning: (\n <svg\n className=\"w-16 h-16 text-warning\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n ),\n '404': (\n <div className=\"text-6xl font-bold text-base-content/40\">404</div>\n ),\n '403': (\n <div className=\"text-6xl font-bold text-base-content/40\">403</div>\n ),\n '500': (\n <div className=\"text-6xl font-bold text-base-content/40\">500</div>\n ),\n}\n\nexport const Result: React.FC<ResultProps> = ({\n status = 'info',\n title,\n subTitle,\n icon,\n extra,\n children,\n className = '',\n 'data-testid': testId,\n ...rest\n}) => {\n const displayIcon = icon !== undefined ? icon : defaultIcons[status]\n const getTestId = (suffix: string) => (testId ? `${testId}-${suffix}` : undefined)\n\n return (\n <div\n className={`w-full flex flex-col items-center justify-center text-center p-8 ${className}`}\n data-status={status}\n data-testid={testId}\n {...rest}\n >\n {displayIcon && <div className=\"mb-6\" data-testid={getTestId('icon')}>{displayIcon}</div>}\n\n {title && (\n <div className=\"text-2xl font-semibold mb-2 text-base-content\" data-testid={getTestId('title')}>\n {title}\n </div>\n )}\n\n {subTitle && (\n <div className=\"text-base text-base-content/70 mb-6 max-w-md\" data-testid={getTestId('subtitle')}>\n {subTitle}\n </div>\n )}\n\n {children && <div className=\"mb-6 max-w-2xl\" data-testid={getTestId('content')}>{children}</div>}\n\n {extra && <div className=\"flex gap-2\" data-testid={getTestId('extra')}>{extra}</div>}\n </div>\n )\n}\n\nResult.displayName = 'Result'\n\nexport default Result\n"],"names":["defaultIcons","jsx","Result","status","title","subTitle","icon","extra","children","className","testId","rest","displayIcon","getTestId","suffix","jsxs"],"mappings":"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"}
@@ -14,5 +14,6 @@ export interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectE
14
14
  addonAfter?: React.ReactNode;
15
15
  className?: string;
16
16
  children?: React.ReactNode;
17
+ 'data-testid'?: string;
17
18
  }
18
19
  export declare const Select: React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLSelectElement>>;
@@ -1,78 +1,88 @@
1
- import { jsx as s, jsxs as C } from "react/jsx-runtime";
2
- import { forwardRef as E, useRef as v } from "react";
3
- import { useConfig as X } from "../providers/ConfigProvider.js";
4
- const o = "select", r = "select-bordered", $ = "select-ghost", F = "select-xs", G = "select-sm", I = "select-md", L = "select-lg", M = "select-xl", P = "select-neutral", W = "select-primary", k = "select-secondary", q = "select-accent", A = "select-info", D = "select-success", b = "select-warning", h = "select-error", H = "floating-label", J = E(
1
+ import { jsx as c, jsxs as w } from "react/jsx-runtime";
2
+ import { forwardRef as W, useRef as X } from "react";
3
+ import { useConfig as F } from "../providers/ConfigProvider.js";
4
+ const i = "select", f = "select-bordered", G = "select-ghost", M = "select-xs", P = "select-sm", k = "select-md", q = "select-lg", A = "select-xl", D = "select-neutral", H = "select-primary", J = "select-secondary", K = "select-accent", L = "select-info", O = "select-success", y = "select-warning", N = "select-error", Q = "floating-label", U = W(
5
5
  ({
6
- size: w,
7
- color: a,
8
- status: i,
9
- ghost: y = !1,
10
- bordered: N = !0,
11
- floatingLabel: d,
12
- addonBefore: t,
13
- addonAfter: c,
14
- className: f = "",
15
- children: m,
16
- ...S
17
- }, j) => {
18
- const { componentSize: R } = X(), e = w ?? R ?? "md", z = v(null), u = j || z, l = {
19
- xs: F,
20
- sm: G,
21
- md: I,
22
- lg: L,
23
- xl: M
24
- }, g = i ? {
25
- error: h,
26
- warning: b
27
- }[i] : a ? {
28
- neutral: P,
29
- primary: W,
30
- secondary: k,
31
- accent: q,
32
- info: A,
33
- success: D,
34
- warning: b,
35
- error: h
36
- }[a] : "", p = t || c, B = p ? ["grow", "bg-transparent", "border-0", "outline-none", "focus:outline-none", f].filter(Boolean).join(" ") : [
37
- o,
6
+ size: j,
7
+ color: m,
8
+ status: S,
9
+ ghost: v = !1,
10
+ bordered: R = !0,
11
+ floatingLabel: l,
12
+ addonBefore: n,
13
+ addonAfter: o,
14
+ className: u = "",
15
+ children: g,
16
+ "data-testid": e,
17
+ ...p
18
+ }, $) => {
19
+ const { componentSize: z } = F(), s = j ?? z ?? "md", B = X(null), x = $ || B, a = {
20
+ xs: M,
21
+ sm: P,
22
+ md: k,
23
+ lg: q,
24
+ xl: A
25
+ }, C = S ? {
26
+ error: N,
27
+ warning: y
28
+ }[S] : m ? {
29
+ neutral: D,
30
+ primary: H,
31
+ secondary: J,
32
+ accent: K,
33
+ info: L,
34
+ success: O,
35
+ warning: y,
36
+ error: N
37
+ }[m] : "", r = n || o, E = r || !!l, d = (t) => e ? `${e}-${t}` : void 0, b = e ? E ? d("select") : e : void 0, T = r ? ["grow", "bg-transparent", "border-0", "outline-none", "focus:outline-none", u].filter(Boolean).join(" ") : [
38
+ i,
38
39
  "w-full",
39
- N && r,
40
- y && $,
41
- e && l[e],
42
- g,
43
- f
44
- ].filter(Boolean).join(" "), x = /* @__PURE__ */ s("select", { ref: u, className: B, ...S, children: m });
45
- if (d) {
46
- const n = [
47
- H,
48
- e && l[e]
40
+ R && f,
41
+ v && G,
42
+ s && a[s],
43
+ C,
44
+ u
45
+ ].filter(Boolean).join(" "), h = /* @__PURE__ */ c("select", { ref: x, className: T, "data-testid": b, ...p, children: g });
46
+ if (l) {
47
+ const t = [
48
+ Q,
49
+ s && a[s]
49
50
  ].filter(Boolean).join(" ");
50
- return /* @__PURE__ */ C("label", { className: n, children: [
51
- /* @__PURE__ */ s("select", { ref: u, className: `${o} ${r} w-full`, ...S, children: m }),
52
- /* @__PURE__ */ s("span", { children: d })
51
+ return /* @__PURE__ */ w("label", { className: t, "data-testid": e, children: [
52
+ /* @__PURE__ */ c(
53
+ "select",
54
+ {
55
+ ref: x,
56
+ className: `${i} ${f} w-full`,
57
+ "data-testid": b,
58
+ ...p,
59
+ children: g
60
+ }
61
+ ),
62
+ /* @__PURE__ */ c("span", { children: l })
53
63
  ] });
54
64
  }
55
- if (p) {
56
- const n = [
57
- o,
58
- r,
65
+ if (r) {
66
+ const t = [
67
+ i,
68
+ f,
59
69
  "flex",
60
70
  "items-center",
61
71
  "gap-2",
62
- e && l[e],
63
- g
72
+ s && a[s],
73
+ C
64
74
  ].filter(Boolean).join(" ");
65
- return /* @__PURE__ */ C("label", { className: n, children: [
66
- t && /* @__PURE__ */ s("span", { className: "text-base-content/70", children: t }),
67
- x,
68
- c && /* @__PURE__ */ s("span", { className: "text-base-content/70", children: c })
75
+ return /* @__PURE__ */ w("label", { className: t, "data-testid": e, children: [
76
+ n && /* @__PURE__ */ c("span", { className: "text-base-content/70", "data-testid": d("addon-before"), children: n }),
77
+ h,
78
+ o && /* @__PURE__ */ c("span", { className: "text-base-content/70", "data-testid": d("addon-after"), children: o })
69
79
  ] });
70
80
  }
71
- return x;
81
+ return h;
72
82
  }
73
83
  );
74
- J.displayName = "Select";
84
+ U.displayName = "Select";
75
85
  export {
76
- J as Select
86
+ U as Select
77
87
  };
78
88
  //# sourceMappingURL=Select.js.map