asterui 0.12.18 → 0.12.20

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 (205) hide show
  1. package/dist/components/Code.d.ts +2 -0
  2. package/dist/components/CopyButton.d.ts +34 -0
  3. package/dist/components/Watermark.d.ts +40 -0
  4. package/dist/index.d.ts +4 -0
  5. package/dist/index.js +205 -201
  6. package/dist/index.js.map +1 -1
  7. package/dist/index10.js +91 -121
  8. package/dist/index10.js.map +1 -1
  9. package/dist/index100.js +5 -45
  10. package/dist/index100.js.map +1 -1
  11. package/dist/index101.js +13 -12
  12. package/dist/index101.js.map +1 -1
  13. package/dist/index102.js +44 -13
  14. package/dist/index102.js.map +1 -1
  15. package/dist/index103.js +12 -7
  16. package/dist/index103.js.map +1 -1
  17. package/dist/index104.js +13 -11
  18. package/dist/index104.js.map +1 -1
  19. package/dist/index105.js +7 -30
  20. package/dist/index105.js.map +1 -1
  21. package/dist/index106.js +11 -16
  22. package/dist/index106.js.map +1 -1
  23. package/dist/index107.js +34 -0
  24. package/dist/index107.js.map +1 -0
  25. package/dist/index108.js +21 -0
  26. package/dist/index108.js.map +1 -0
  27. package/dist/index11.js +123 -30
  28. package/dist/index11.js.map +1 -1
  29. package/dist/index12.js +28 -263
  30. package/dist/index12.js.map +1 -1
  31. package/dist/index13.js +257 -105
  32. package/dist/index13.js.map +1 -1
  33. package/dist/index14.js +108 -153
  34. package/dist/index14.js.map +1 -1
  35. package/dist/index15.js +154 -146
  36. package/dist/index15.js.map +1 -1
  37. package/dist/index16.js +150 -5
  38. package/dist/index16.js.map +1 -1
  39. package/dist/index17.js +5 -71
  40. package/dist/index17.js.map +1 -1
  41. package/dist/index18.js +70 -24
  42. package/dist/index18.js.map +1 -1
  43. package/dist/index19.js +23 -194
  44. package/dist/index19.js.map +1 -1
  45. package/dist/index20.js +188 -106
  46. package/dist/index20.js.map +1 -1
  47. package/dist/index21.js +107 -177
  48. package/dist/index21.js.map +1 -1
  49. package/dist/index22.js +181 -107
  50. package/dist/index22.js.map +1 -1
  51. package/dist/index23.js +110 -19
  52. package/dist/index23.js.map +1 -1
  53. package/dist/index24.js +17 -41
  54. package/dist/index24.js.map +1 -1
  55. package/dist/index25.js +43 -32
  56. package/dist/index25.js.map +1 -1
  57. package/dist/index26.js +30 -170
  58. package/dist/index26.js.map +1 -1
  59. package/dist/index27.js +171 -40
  60. package/dist/index27.js.map +1 -1
  61. package/dist/index28.js +41 -17
  62. package/dist/index28.js.map +1 -1
  63. package/dist/index29.js +17 -33
  64. package/dist/index29.js.map +1 -1
  65. package/dist/index30.js +33 -52
  66. package/dist/index30.js.map +1 -1
  67. package/dist/index31.js +50 -61
  68. package/dist/index31.js.map +1 -1
  69. package/dist/index32.js +60 -181
  70. package/dist/index32.js.map +1 -1
  71. package/dist/index33.js +184 -18
  72. package/dist/index33.js.map +1 -1
  73. package/dist/index34.js +15 -271
  74. package/dist/index34.js.map +1 -1
  75. package/dist/index35.js +270 -1083
  76. package/dist/index35.js.map +1 -1
  77. package/dist/index36.js +1086 -16
  78. package/dist/index36.js.map +1 -1
  79. package/dist/index37.js +17 -17
  80. package/dist/index37.js.map +1 -1
  81. package/dist/index38.js +15 -120
  82. package/dist/index38.js.map +1 -1
  83. package/dist/index39.js +119 -37
  84. package/dist/index39.js.map +1 -1
  85. package/dist/index40.js +40 -398
  86. package/dist/index40.js.map +1 -1
  87. package/dist/index41.js +390 -89
  88. package/dist/index41.js.map +1 -1
  89. package/dist/index42.js +91 -253
  90. package/dist/index42.js.map +1 -1
  91. package/dist/index43.js +249 -145
  92. package/dist/index43.js.map +1 -1
  93. package/dist/index44.js +155 -15
  94. package/dist/index44.js.map +1 -1
  95. package/dist/index45.js +15 -17
  96. package/dist/index45.js.map +1 -1
  97. package/dist/index46.js +16 -136
  98. package/dist/index46.js.map +1 -1
  99. package/dist/index47.js +134 -10
  100. package/dist/index47.js.map +1 -1
  101. package/dist/index48.js +13 -35
  102. package/dist/index48.js.map +1 -1
  103. package/dist/index49.js +35 -34
  104. package/dist/index49.js.map +1 -1
  105. package/dist/index50.js +34 -81
  106. package/dist/index50.js.map +1 -1
  107. package/dist/index51.js +71 -166
  108. package/dist/index51.js.map +1 -1
  109. package/dist/index52.js +167 -144
  110. package/dist/index52.js.map +1 -1
  111. package/dist/index53.js +152 -11
  112. package/dist/index53.js.map +1 -1
  113. package/dist/index54.js +10 -20
  114. package/dist/index54.js.map +1 -1
  115. package/dist/index55.js +55 -12
  116. package/dist/index55.js.map +1 -1
  117. package/dist/index56.js +14 -7
  118. package/dist/index56.js.map +1 -1
  119. package/dist/index57.js +6 -333
  120. package/dist/index57.js.map +1 -1
  121. package/dist/index58.js +334 -47
  122. package/dist/index58.js.map +1 -1
  123. package/dist/index59.js +47 -122
  124. package/dist/index59.js.map +1 -1
  125. package/dist/index60.js +120 -108
  126. package/dist/index60.js.map +1 -1
  127. package/dist/index61.js +107 -167
  128. package/dist/index61.js.map +1 -1
  129. package/dist/index62.js +167 -29
  130. package/dist/index62.js.map +1 -1
  131. package/dist/index63.js +30 -120
  132. package/dist/index63.js.map +1 -1
  133. package/dist/index64.js +116 -80
  134. package/dist/index64.js.map +1 -1
  135. package/dist/index65.js +85 -19
  136. package/dist/index65.js.map +1 -1
  137. package/dist/index66.js +19 -73
  138. package/dist/index66.js.map +1 -1
  139. package/dist/index67.js +71 -54
  140. package/dist/index67.js.map +1 -1
  141. package/dist/index68.js +56 -44
  142. package/dist/index68.js.map +1 -1
  143. package/dist/index69.js +42 -49
  144. package/dist/index69.js.map +1 -1
  145. package/dist/index70.js +50 -121
  146. package/dist/index70.js.map +1 -1
  147. package/dist/index71.js +118 -102
  148. package/dist/index71.js.map +1 -1
  149. package/dist/index72.js +105 -72
  150. package/dist/index72.js.map +1 -1
  151. package/dist/index73.js +73 -67
  152. package/dist/index73.js.map +1 -1
  153. package/dist/index74.js +66 -19
  154. package/dist/index74.js.map +1 -1
  155. package/dist/index75.js +18 -55
  156. package/dist/index75.js.map +1 -1
  157. package/dist/index76.js +55 -251
  158. package/dist/index76.js.map +1 -1
  159. package/dist/index77.js +254 -22
  160. package/dist/index77.js.map +1 -1
  161. package/dist/index78.js +22 -31
  162. package/dist/index78.js.map +1 -1
  163. package/dist/index79.js +30 -93
  164. package/dist/index79.js.map +1 -1
  165. package/dist/index80.js +89 -324
  166. package/dist/index80.js.map +1 -1
  167. package/dist/index81.js +322 -73
  168. package/dist/index81.js.map +1 -1
  169. package/dist/index82.js +79 -39
  170. package/dist/index82.js.map +1 -1
  171. package/dist/index83.js +40 -23
  172. package/dist/index83.js.map +1 -1
  173. package/dist/index84.js +21 -93
  174. package/dist/index84.js.map +1 -1
  175. package/dist/index85.js +87 -148
  176. package/dist/index85.js.map +1 -1
  177. package/dist/index86.js +147 -152
  178. package/dist/index86.js.map +1 -1
  179. package/dist/index87.js +159 -63
  180. package/dist/index87.js.map +1 -1
  181. package/dist/index88.js +65 -35
  182. package/dist/index88.js.map +1 -1
  183. package/dist/index89.js +35 -234
  184. package/dist/index89.js.map +1 -1
  185. package/dist/index90.js +231 -31
  186. package/dist/index90.js.map +1 -1
  187. package/dist/index91.js +34 -210
  188. package/dist/index91.js.map +1 -1
  189. package/dist/index92.js +195 -198
  190. package/dist/index92.js.map +1 -1
  191. package/dist/index93.js +159 -241
  192. package/dist/index93.js.map +1 -1
  193. package/dist/index94.js +283 -166
  194. package/dist/index94.js.map +1 -1
  195. package/dist/index95.js +173 -253
  196. package/dist/index95.js.map +1 -1
  197. package/dist/index96.js +258 -14
  198. package/dist/index96.js.map +1 -1
  199. package/dist/index97.js +124 -31
  200. package/dist/index97.js.map +1 -1
  201. package/dist/index98.js +13 -5
  202. package/dist/index98.js.map +1 -1
  203. package/dist/index99.js +31 -12
  204. package/dist/index99.js.map +1 -1
  205. package/package.json +1 -1
package/dist/index72.js CHANGED
@@ -1,77 +1,110 @@
1
- import { jsx as s, jsxs as C } from "react/jsx-runtime";
2
- import { forwardRef as N, useRef as y } from "react";
3
- const R = N(
4
- ({
5
- size: e,
6
- color: r,
7
- status: o,
8
- ghost: b = !1,
9
- bordered: p = !0,
10
- floatingLabel: a,
11
- addonBefore: l,
12
- addonAfter: t,
13
- className: i = "",
14
- children: f,
15
- ...m
16
- }, w) => {
17
- const h = y(null), u = w || h, c = {
18
- xs: "select-xs",
19
- sm: "select-sm",
20
- md: "select-md",
21
- lg: "select-lg",
22
- xl: "select-xl"
23
- }, d = o ? {
24
- error: "select-error",
25
- warning: "select-warning"
26
- }[o] : r ? {
27
- neutral: "select-neutral",
28
- primary: "select-primary",
29
- secondary: "select-secondary",
30
- accent: "select-accent",
31
- info: "select-info",
32
- success: "select-success",
33
- warning: "select-warning",
34
- error: "select-error"
35
- }[r] : "", g = l || t, j = g ? ["grow", "bg-transparent", "border-0", "outline-none", "focus:outline-none", i].filter(Boolean).join(" ") : [
36
- "select",
37
- "w-full",
38
- p && "select-bordered",
39
- b && "select-ghost",
40
- e && c[e],
41
- d,
42
- i
43
- ].filter(Boolean).join(" "), x = /* @__PURE__ */ s("select", { ref: u, className: j, ...m, children: f });
44
- if (a) {
45
- const n = [
46
- "floating-label",
47
- e && c[e]
48
- ].filter(Boolean).join(" ");
49
- return /* @__PURE__ */ C("label", { className: n, children: [
50
- /* @__PURE__ */ s("select", { ref: u, className: "select select-bordered w-full", ...m, children: f }),
51
- /* @__PURE__ */ s("span", { children: a })
52
- ] });
1
+ import { jsxs as d, jsx as e } from "react/jsx-runtime";
2
+ const m = {
3
+ success: /* @__PURE__ */ e(
4
+ "svg",
5
+ {
6
+ className: "w-16 h-16 text-success",
7
+ fill: "none",
8
+ viewBox: "0 0 24 24",
9
+ stroke: "currentColor",
10
+ children: /* @__PURE__ */ e(
11
+ "path",
12
+ {
13
+ strokeLinecap: "round",
14
+ strokeLinejoin: "round",
15
+ strokeWidth: 2,
16
+ d: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"
17
+ }
18
+ )
53
19
  }
54
- if (g) {
55
- const n = [
56
- "select",
57
- "select-bordered",
58
- "flex",
59
- "items-center",
60
- "gap-2",
61
- e && c[e],
62
- d
63
- ].filter(Boolean).join(" ");
64
- return /* @__PURE__ */ C("label", { className: n, children: [
65
- l && /* @__PURE__ */ s("span", { className: "text-base-content/70", children: l }),
66
- x,
67
- t && /* @__PURE__ */ s("span", { className: "text-base-content/70", children: t })
68
- ] });
20
+ ),
21
+ error: /* @__PURE__ */ e(
22
+ "svg",
23
+ {
24
+ className: "w-16 h-16 text-error",
25
+ fill: "none",
26
+ viewBox: "0 0 24 24",
27
+ stroke: "currentColor",
28
+ children: /* @__PURE__ */ e(
29
+ "path",
30
+ {
31
+ strokeLinecap: "round",
32
+ strokeLinejoin: "round",
33
+ strokeWidth: 2,
34
+ d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
35
+ }
36
+ )
69
37
  }
70
- return x;
71
- }
72
- );
73
- R.displayName = "Select";
38
+ ),
39
+ info: /* @__PURE__ */ e(
40
+ "svg",
41
+ {
42
+ className: "w-16 h-16 text-info",
43
+ fill: "none",
44
+ viewBox: "0 0 24 24",
45
+ stroke: "currentColor",
46
+ children: /* @__PURE__ */ e(
47
+ "path",
48
+ {
49
+ strokeLinecap: "round",
50
+ strokeLinejoin: "round",
51
+ strokeWidth: 2,
52
+ d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
53
+ }
54
+ )
55
+ }
56
+ ),
57
+ warning: /* @__PURE__ */ e(
58
+ "svg",
59
+ {
60
+ className: "w-16 h-16 text-warning",
61
+ fill: "none",
62
+ viewBox: "0 0 24 24",
63
+ stroke: "currentColor",
64
+ children: /* @__PURE__ */ e(
65
+ "path",
66
+ {
67
+ strokeLinecap: "round",
68
+ strokeLinejoin: "round",
69
+ strokeWidth: 2,
70
+ 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"
71
+ }
72
+ )
73
+ }
74
+ ),
75
+ 404: /* @__PURE__ */ e("div", { className: "text-6xl font-bold text-base-content/40", children: "404" }),
76
+ 403: /* @__PURE__ */ e("div", { className: "text-6xl font-bold text-base-content/40", children: "403" }),
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,
83
+ extra: r,
84
+ children: l,
85
+ className: i = "",
86
+ ...c
87
+ }) => {
88
+ const a = o !== void 0 ? o : m[t];
89
+ return /* @__PURE__ */ d(
90
+ "div",
91
+ {
92
+ className: `w-full flex flex-col items-center justify-center text-center p-8 ${i}`,
93
+ "data-status": t,
94
+ ...c,
95
+ 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 })
101
+ ]
102
+ }
103
+ );
104
+ };
105
+ x.displayName = "Result";
74
106
  export {
75
- R as Select
107
+ x as Result,
108
+ x as default
76
109
  };
77
110
  //# sourceMappingURL=index72.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index72.js","sources":["../src/components/Select.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from 'react'\n\nexport interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'size'> {\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n color?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\n /** Validation status */\n status?: 'error' | 'warning'\n ghost?: boolean\n bordered?: boolean\n /** Floating label text (uses DaisyUI floating-label) */\n floatingLabel?: string\n /** Text/element before select (outside, using DaisyUI label) */\n addonBefore?: React.ReactNode\n /** Text/element after select (outside, using DaisyUI label) */\n addonAfter?: React.ReactNode\n className?: string\n children?: React.ReactNode\n}\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n size,\n color,\n status,\n ghost = false,\n bordered = true,\n floatingLabel,\n addonBefore,\n addonAfter,\n className = '',\n children,\n ...props\n },\n ref\n ) => {\n const innerRef = useRef<HTMLSelectElement>(null)\n const selectRef = (ref as React.RefObject<HTMLSelectElement>) || innerRef\n\n const sizeClasses = {\n xs: 'select-xs',\n sm: 'select-sm',\n md: 'select-md',\n lg: 'select-lg',\n xl: 'select-xl',\n }\n\n const colorClasses = {\n neutral: 'select-neutral',\n primary: 'select-primary',\n secondary: 'select-secondary',\n accent: 'select-accent',\n info: 'select-info',\n success: 'select-success',\n warning: 'select-warning',\n error: 'select-error',\n }\n\n const statusClasses = {\n error: 'select-error',\n warning: 'select-warning',\n }\n\n // Status takes precedence over color for validation feedback\n const effectiveColorClass = status ? statusClasses[status] : (color ? colorClasses[color] : '')\n\n // When wrapped with external addons, the wrapper has the styling\n const hasExternalAddons = addonBefore || addonAfter\n\n const selectClasses = hasExternalAddons\n ? ['grow', 'bg-transparent', 'border-0', 'outline-none', 'focus:outline-none', className].filter(Boolean).join(' ')\n : [\n 'select',\n 'w-full',\n bordered && 'select-bordered',\n ghost && 'select-ghost',\n size && sizeClasses[size],\n effectiveColorClass,\n className,\n ].filter(Boolean).join(' ')\n\n // Build the core select element\n const selectElement = (\n <select ref={selectRef} className={selectClasses} {...props}>\n {children}\n </select>\n )\n\n // Wrap with floating label if specified\n if (floatingLabel) {\n const floatingClasses = [\n 'floating-label',\n size && sizeClasses[size],\n ].filter(Boolean).join(' ')\n\n return (\n <label className={floatingClasses}>\n <select ref={selectRef} className=\"select select-bordered w-full\" {...props}>\n {children}\n </select>\n <span>{floatingLabel}</span>\n </label>\n )\n }\n\n // Wrap with external addons if specified\n if (hasExternalAddons) {\n const addonClasses = [\n 'select',\n 'select-bordered',\n 'flex',\n 'items-center',\n 'gap-2',\n size && sizeClasses[size],\n effectiveColorClass,\n ].filter(Boolean).join(' ')\n\n return (\n <label className={addonClasses}>\n {addonBefore && <span className=\"text-base-content/70\">{addonBefore}</span>}\n {selectElement}\n {addonAfter && <span className=\"text-base-content/70\">{addonAfter}</span>}\n </label>\n )\n }\n\n return selectElement\n }\n)\n\nSelect.displayName = 'Select'\n"],"names":["Select","forwardRef","size","color","status","ghost","bordered","floatingLabel","addonBefore","addonAfter","className","children","props","ref","innerRef","useRef","selectRef","sizeClasses","effectiveColorClass","hasExternalAddons","selectClasses","selectElement","floatingClasses","jsxs","jsx","addonClasses"],"mappings":";;AAmBO,MAAMA,IAASC;AAAA,EACpB,CACE;AAAA,IACE,MAAAC;AAAA,IACA,OAAAC;AAAA,IACA,QAAAC;AAAA,IACA,OAAAC,IAAQ;AAAA,IACR,UAAAC,IAAW;AAAA,IACX,eAAAC;AAAA,IACA,aAAAC;AAAA,IACA,YAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAWC,EAA0B,IAAI,GACzCC,IAAaH,KAA8CC,GAE3DG,IAAc;AAAA,MAClB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,GAoBAC,IAAsBd,IANN;AAAA,MACpB,OAAO;AAAA,MACP,SAAS;AAAA,IAAA,EAIwCA,CAAM,IAAKD,IAjBzC;AAAA,MACnB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,MACT,OAAO;AAAA,IAAA,EAS0EA,CAAK,IAAI,IAGtFgB,IAAoBX,KAAeC,GAEnCW,IAAgBD,IAClB,CAAC,QAAQ,kBAAkB,YAAY,gBAAgB,sBAAsBT,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,IAChH;AAAA,MACE;AAAA,MACA;AAAA,MACAJ,KAAY;AAAA,MACZD,KAAS;AAAA,MACTH,KAAQe,EAAYf,CAAI;AAAA,MACxBgB;AAAA,MACAR;AAAA,IAAA,EACA,OAAO,OAAO,EAAE,KAAK,GAAG,GAGxBW,sBACH,UAAA,EAAO,KAAKL,GAAW,WAAWI,GAAgB,GAAGR,GACnD,UAAAD,EAAA,CACH;AAIF,QAAIJ,GAAe;AACjB,YAAMe,IAAkB;AAAA,QACtB;AAAA,QACApB,KAAQe,EAAYf,CAAI;AAAA,MAAA,EACxB,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,aACE,gBAAAqB,EAAC,SAAA,EAAM,WAAWD,GAChB,UAAA;AAAA,QAAA,gBAAAE,EAAC,YAAO,KAAKR,GAAW,WAAU,iCAAiC,GAAGJ,GACnE,UAAAD,GACH;AAAA,QACA,gBAAAa,EAAC,UAAM,UAAAjB,EAAA,CAAc;AAAA,MAAA,GACvB;AAAA,IAEJ;AAGA,QAAIY,GAAmB;AACrB,YAAMM,IAAe;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAvB,KAAQe,EAAYf,CAAI;AAAA,QACxBgB;AAAA,MAAA,EACA,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,aACE,gBAAAK,EAAC,SAAA,EAAM,WAAWE,GACf,UAAA;AAAA,QAAAjB,KAAe,gBAAAgB,EAAC,QAAA,EAAK,WAAU,wBAAwB,UAAAhB,GAAY;AAAA,QACnEa;AAAA,QACAZ,KAAc,gBAAAe,EAAC,QAAA,EAAK,WAAU,wBAAwB,UAAAf,EAAA,CAAW;AAAA,MAAA,GACpE;AAAA,IAEJ;AAEA,WAAOY;AAAA,EACT;AACF;AAEArB,EAAO,cAAc;"}
1
+ {"version":3,"file":"index72.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;"}
package/dist/index73.js CHANGED
@@ -1,71 +1,77 @@
1
- import { jsx as b, jsxs as h } from "react/jsx-runtime";
2
- import { useState as p, useCallback as S, createContext as j, useContext as v } from "react";
3
- const C = j(null), I = () => {
4
- const e = v(C);
5
- if (!e)
6
- throw new Error("Segmented.Item must be used within a Segmented component");
7
- return e;
8
- }, V = {
9
- xs: "btn-xs",
10
- sm: "btn-sm",
11
- md: "",
12
- lg: "btn-lg"
13
- }, k = ({
14
- value: e,
15
- disabled: o = !1,
16
- icon: n,
17
- children: l,
18
- className: a = ""
19
- }) => {
20
- const { value: i, onChange: d, size: r, disabled: c } = I(), s = i === e, t = c || o, m = () => {
21
- t || d?.(e);
22
- }, u = [
23
- "join-item",
24
- "btn",
25
- V[r],
26
- s ? "btn-active" : "",
27
- a
28
- ].filter(Boolean).join(" ");
29
- return /* @__PURE__ */ h(
30
- "button",
31
- {
32
- type: "button",
33
- className: u,
34
- disabled: t,
35
- onClick: m,
36
- "aria-pressed": s,
37
- "data-testid": `segmented-item-${e}`,
38
- children: [
39
- n && /* @__PURE__ */ b("span", { className: "mr-1", children: n }),
40
- l
41
- ]
1
+ import { jsx as s, jsxs as C } from "react/jsx-runtime";
2
+ import { forwardRef as N, useRef as y } from "react";
3
+ const R = N(
4
+ ({
5
+ size: e,
6
+ color: r,
7
+ status: o,
8
+ ghost: b = !1,
9
+ bordered: p = !0,
10
+ floatingLabel: a,
11
+ addonBefore: l,
12
+ addonAfter: t,
13
+ className: i = "",
14
+ children: f,
15
+ ...m
16
+ }, w) => {
17
+ const h = y(null), u = w || h, c = {
18
+ xs: "select-xs",
19
+ sm: "select-sm",
20
+ md: "select-md",
21
+ lg: "select-lg",
22
+ xl: "select-xl"
23
+ }, d = o ? {
24
+ error: "select-error",
25
+ warning: "select-warning"
26
+ }[o] : r ? {
27
+ neutral: "select-neutral",
28
+ primary: "select-primary",
29
+ secondary: "select-secondary",
30
+ accent: "select-accent",
31
+ info: "select-info",
32
+ success: "select-success",
33
+ warning: "select-warning",
34
+ error: "select-error"
35
+ }[r] : "", g = l || t, j = g ? ["grow", "bg-transparent", "border-0", "outline-none", "focus:outline-none", i].filter(Boolean).join(" ") : [
36
+ "select",
37
+ "w-full",
38
+ p && "select-bordered",
39
+ b && "select-ghost",
40
+ e && c[e],
41
+ d,
42
+ i
43
+ ].filter(Boolean).join(" "), x = /* @__PURE__ */ s("select", { ref: u, className: j, ...m, children: f });
44
+ if (a) {
45
+ const n = [
46
+ "floating-label",
47
+ e && c[e]
48
+ ].filter(Boolean).join(" ");
49
+ return /* @__PURE__ */ C("label", { className: n, children: [
50
+ /* @__PURE__ */ s("select", { ref: u, className: "select select-bordered w-full", ...m, children: f }),
51
+ /* @__PURE__ */ s("span", { children: a })
52
+ ] });
42
53
  }
43
- );
44
- }, w = ({
45
- value: e,
46
- defaultValue: o,
47
- onChange: n,
48
- size: l = "md",
49
- block: a = !1,
50
- disabled: i = !1,
51
- className: d = "",
52
- children: r
53
- }) => {
54
- const [c, s] = p(o), t = e !== void 0, m = t ? e : c, u = S(
55
- (g) => {
56
- t || s(g), n?.(g);
57
- },
58
- [t, n]
59
- ), f = {
60
- value: m,
61
- onChange: u,
62
- size: l,
63
- disabled: i
64
- }, x = ["join", a ? "w-full [&>.join-item]:flex-1" : "", d].filter(Boolean).join(" ");
65
- return /* @__PURE__ */ b(C.Provider, { value: f, children: /* @__PURE__ */ b("div", { className: x, role: "group", "data-testid": "segmented", children: r }) });
66
- };
67
- w.Item = k;
54
+ if (g) {
55
+ const n = [
56
+ "select",
57
+ "select-bordered",
58
+ "flex",
59
+ "items-center",
60
+ "gap-2",
61
+ e && c[e],
62
+ d
63
+ ].filter(Boolean).join(" ");
64
+ return /* @__PURE__ */ C("label", { className: n, children: [
65
+ l && /* @__PURE__ */ s("span", { className: "text-base-content/70", children: l }),
66
+ x,
67
+ t && /* @__PURE__ */ s("span", { className: "text-base-content/70", children: t })
68
+ ] });
69
+ }
70
+ return x;
71
+ }
72
+ );
73
+ R.displayName = "Select";
68
74
  export {
69
- w as Segmented
75
+ R as Select
70
76
  };
71
77
  //# sourceMappingURL=index73.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index73.js","sources":["../src/components/Segmented.tsx"],"sourcesContent":["import React, { useState, useCallback, createContext, useContext } from 'react'\n\nexport type SegmentedValue = string | number\n\ninterface SegmentedContextValue {\n value?: SegmentedValue\n onChange?: (value: SegmentedValue) => void\n size: 'xs' | 'sm' | 'md' | 'lg'\n disabled: boolean\n}\n\nconst SegmentedContext = createContext<SegmentedContextValue | null>(null)\n\nconst useSegmentedContext = () => {\n const context = useContext(SegmentedContext)\n if (!context) {\n throw new Error('Segmented.Item must be used within a Segmented component')\n }\n return context\n}\n\nexport interface SegmentedItemProps {\n /** Option value */\n value: SegmentedValue\n /** Disable this option */\n disabled?: boolean\n /** Icon to display before label */\n icon?: React.ReactNode\n /** Label content */\n children: React.ReactNode\n /** Additional CSS class */\n className?: string\n}\n\nconst sizeClasses = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: '',\n lg: 'btn-lg',\n}\n\nconst SegmentedItem: React.FC<SegmentedItemProps> = ({\n value,\n disabled: itemDisabled = false,\n icon,\n children,\n className = '',\n}) => {\n const { value: selectedValue, onChange, size, disabled: groupDisabled } = useSegmentedContext()\n\n const isSelected = selectedValue === value\n const isDisabled = groupDisabled || itemDisabled\n\n const handleClick = () => {\n if (!isDisabled) {\n onChange?.(value)\n }\n }\n\n const buttonClasses = [\n 'join-item',\n 'btn',\n sizeClasses[size],\n isSelected ? 'btn-active' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <button\n type=\"button\"\n className={buttonClasses}\n disabled={isDisabled}\n onClick={handleClick}\n aria-pressed={isSelected}\n data-testid={`segmented-item-${value}`}\n >\n {icon && <span className=\"mr-1\">{icon}</span>}\n {children}\n </button>\n )\n}\n\nexport interface SegmentedProps {\n /** Currently selected value (controlled) */\n value?: SegmentedValue\n /** Default selected value (uncontrolled) */\n defaultValue?: SegmentedValue\n /** Callback when selection changes */\n onChange?: (value: SegmentedValue) => void\n /** Size variant */\n size?: 'xs' | 'sm' | 'md' | 'lg'\n /** Take full width of container */\n block?: boolean\n /** Disable all options */\n disabled?: boolean\n /** Additional CSS class */\n className?: string\n /** Segmented.Item children */\n children: React.ReactNode\n}\n\nexport const Segmented: React.FC<SegmentedProps> & { Item: typeof SegmentedItem } = ({\n value,\n defaultValue,\n onChange,\n size = 'md',\n block = false,\n disabled = false,\n className = '',\n children,\n}) => {\n const [internalValue, setInternalValue] = useState<SegmentedValue | undefined>(defaultValue)\n\n const isControlled = value !== undefined\n const currentValue = isControlled ? value : internalValue\n\n const handleChange = useCallback(\n (newValue: SegmentedValue) => {\n if (!isControlled) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n },\n [isControlled, onChange]\n )\n\n const contextValue: SegmentedContextValue = {\n value: currentValue,\n onChange: handleChange,\n size,\n disabled,\n }\n\n const containerClasses = ['join', block ? 'w-full [&>.join-item]:flex-1' : '', className]\n .filter(Boolean)\n .join(' ')\n\n return (\n <SegmentedContext.Provider value={contextValue}>\n <div className={containerClasses} role=\"group\" data-testid=\"segmented\">\n {children}\n </div>\n </SegmentedContext.Provider>\n )\n}\n\nSegmented.Item = SegmentedItem\n"],"names":["SegmentedContext","createContext","useSegmentedContext","context","useContext","sizeClasses","SegmentedItem","value","itemDisabled","icon","children","className","selectedValue","onChange","size","groupDisabled","isSelected","isDisabled","handleClick","buttonClasses","jsxs","jsx","Segmented","defaultValue","block","disabled","internalValue","setInternalValue","useState","isControlled","currentValue","handleChange","useCallback","newValue","contextValue","containerClasses"],"mappings":";;AAWA,MAAMA,IAAmBC,EAA4C,IAAI,GAEnEC,IAAsB,MAAM;AAChC,QAAMC,IAAUC,EAAWJ,CAAgB;AAC3C,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,0DAA0D;AAE5E,SAAOA;AACT,GAeME,IAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEMC,IAA8C,CAAC;AAAA,EACnD,OAAAC;AAAA,EACA,UAAUC,IAAe;AAAA,EACzB,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC,IAAY;AACd,MAAM;AACJ,QAAM,EAAE,OAAOC,GAAe,UAAAC,GAAU,MAAAC,GAAM,UAAUC,EAAA,IAAkBb,EAAA,GAEpEc,IAAaJ,MAAkBL,GAC/BU,IAAaF,KAAiBP,GAE9BU,IAAc,MAAM;AACxB,IAAKD,KACHJ,IAAWN,CAAK;AAAA,EAEpB,GAEMY,IAAgB;AAAA,IACpB;AAAA,IACA;AAAA,IACAd,EAAYS,CAAI;AAAA,IAChBE,IAAa,eAAe;AAAA,IAC5BL;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAWD;AAAA,MACX,UAAUF;AAAA,MACV,SAASC;AAAA,MACT,gBAAcF;AAAA,MACd,eAAa,kBAAkBT,CAAK;AAAA,MAEnC,UAAA;AAAA,QAAAE,KAAQ,gBAAAY,EAAC,QAAA,EAAK,WAAU,QAAQ,UAAAZ,GAAK;AAAA,QACrCC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP,GAqBaY,IAAuE,CAAC;AAAA,EACnF,OAAAf;AAAA,EACA,cAAAgB;AAAA,EACA,UAAAV;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAU,IAAQ;AAAA,EACR,UAAAC,IAAW;AAAA,EACX,WAAAd,IAAY;AAAA,EACZ,UAAAD;AACF,MAAM;AACJ,QAAM,CAACgB,GAAeC,CAAgB,IAAIC,EAAqCL,CAAY,GAErFM,IAAetB,MAAU,QACzBuB,IAAeD,IAAetB,IAAQmB,GAEtCK,IAAeC;AAAA,IACnB,CAACC,MAA6B;AAC5B,MAAKJ,KACHF,EAAiBM,CAAQ,GAE3BpB,IAAWoB,CAAQ;AAAA,IACrB;AAAA,IACA,CAACJ,GAAchB,CAAQ;AAAA,EAAA,GAGnBqB,IAAsC;AAAA,IAC1C,OAAOJ;AAAA,IACP,UAAUC;AAAA,IACV,MAAAjB;AAAA,IACA,UAAAW;AAAA,EAAA,GAGIU,IAAmB,CAAC,QAAQX,IAAQ,iCAAiC,IAAIb,CAAS,EACrF,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAU,EAACrB,EAAiB,UAAjB,EAA0B,OAAOkC,GAChC,UAAA,gBAAAb,EAAC,OAAA,EAAI,WAAWc,GAAkB,MAAK,SAAQ,eAAY,aACxD,UAAAzB,GACH,GACF;AAEJ;AAEAY,EAAU,OAAOhB;"}
1
+ {"version":3,"file":"index73.js","sources":["../src/components/Select.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from 'react'\n\nexport interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'size'> {\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n color?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error'\n /** Validation status */\n status?: 'error' | 'warning'\n ghost?: boolean\n bordered?: boolean\n /** Floating label text (uses DaisyUI floating-label) */\n floatingLabel?: string\n /** Text/element before select (outside, using DaisyUI label) */\n addonBefore?: React.ReactNode\n /** Text/element after select (outside, using DaisyUI label) */\n addonAfter?: React.ReactNode\n className?: string\n children?: React.ReactNode\n}\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n size,\n color,\n status,\n ghost = false,\n bordered = true,\n floatingLabel,\n addonBefore,\n addonAfter,\n className = '',\n children,\n ...props\n },\n ref\n ) => {\n const innerRef = useRef<HTMLSelectElement>(null)\n const selectRef = (ref as React.RefObject<HTMLSelectElement>) || innerRef\n\n const sizeClasses = {\n xs: 'select-xs',\n sm: 'select-sm',\n md: 'select-md',\n lg: 'select-lg',\n xl: 'select-xl',\n }\n\n const colorClasses = {\n neutral: 'select-neutral',\n primary: 'select-primary',\n secondary: 'select-secondary',\n accent: 'select-accent',\n info: 'select-info',\n success: 'select-success',\n warning: 'select-warning',\n error: 'select-error',\n }\n\n const statusClasses = {\n error: 'select-error',\n warning: 'select-warning',\n }\n\n // Status takes precedence over color for validation feedback\n const effectiveColorClass = status ? statusClasses[status] : (color ? colorClasses[color] : '')\n\n // When wrapped with external addons, the wrapper has the styling\n const hasExternalAddons = addonBefore || addonAfter\n\n const selectClasses = hasExternalAddons\n ? ['grow', 'bg-transparent', 'border-0', 'outline-none', 'focus:outline-none', className].filter(Boolean).join(' ')\n : [\n 'select',\n 'w-full',\n bordered && 'select-bordered',\n ghost && 'select-ghost',\n size && sizeClasses[size],\n effectiveColorClass,\n className,\n ].filter(Boolean).join(' ')\n\n // Build the core select element\n const selectElement = (\n <select ref={selectRef} className={selectClasses} {...props}>\n {children}\n </select>\n )\n\n // Wrap with floating label if specified\n if (floatingLabel) {\n const floatingClasses = [\n 'floating-label',\n size && sizeClasses[size],\n ].filter(Boolean).join(' ')\n\n return (\n <label className={floatingClasses}>\n <select ref={selectRef} className=\"select select-bordered w-full\" {...props}>\n {children}\n </select>\n <span>{floatingLabel}</span>\n </label>\n )\n }\n\n // Wrap with external addons if specified\n if (hasExternalAddons) {\n const addonClasses = [\n 'select',\n 'select-bordered',\n 'flex',\n 'items-center',\n 'gap-2',\n size && sizeClasses[size],\n effectiveColorClass,\n ].filter(Boolean).join(' ')\n\n return (\n <label className={addonClasses}>\n {addonBefore && <span className=\"text-base-content/70\">{addonBefore}</span>}\n {selectElement}\n {addonAfter && <span className=\"text-base-content/70\">{addonAfter}</span>}\n </label>\n )\n }\n\n return selectElement\n }\n)\n\nSelect.displayName = 'Select'\n"],"names":["Select","forwardRef","size","color","status","ghost","bordered","floatingLabel","addonBefore","addonAfter","className","children","props","ref","innerRef","useRef","selectRef","sizeClasses","effectiveColorClass","hasExternalAddons","selectClasses","selectElement","floatingClasses","jsxs","jsx","addonClasses"],"mappings":";;AAmBO,MAAMA,IAASC;AAAA,EACpB,CACE;AAAA,IACE,MAAAC;AAAA,IACA,OAAAC;AAAA,IACA,QAAAC;AAAA,IACA,OAAAC,IAAQ;AAAA,IACR,UAAAC,IAAW;AAAA,IACX,eAAAC;AAAA,IACA,aAAAC;AAAA,IACA,YAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAWC,EAA0B,IAAI,GACzCC,IAAaH,KAA8CC,GAE3DG,IAAc;AAAA,MAClB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,GAoBAC,IAAsBd,IANN;AAAA,MACpB,OAAO;AAAA,MACP,SAAS;AAAA,IAAA,EAIwCA,CAAM,IAAKD,IAjBzC;AAAA,MACnB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,MACT,OAAO;AAAA,IAAA,EAS0EA,CAAK,IAAI,IAGtFgB,IAAoBX,KAAeC,GAEnCW,IAAgBD,IAClB,CAAC,QAAQ,kBAAkB,YAAY,gBAAgB,sBAAsBT,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,IAChH;AAAA,MACE;AAAA,MACA;AAAA,MACAJ,KAAY;AAAA,MACZD,KAAS;AAAA,MACTH,KAAQe,EAAYf,CAAI;AAAA,MACxBgB;AAAA,MACAR;AAAA,IAAA,EACA,OAAO,OAAO,EAAE,KAAK,GAAG,GAGxBW,sBACH,UAAA,EAAO,KAAKL,GAAW,WAAWI,GAAgB,GAAGR,GACnD,UAAAD,EAAA,CACH;AAIF,QAAIJ,GAAe;AACjB,YAAMe,IAAkB;AAAA,QACtB;AAAA,QACApB,KAAQe,EAAYf,CAAI;AAAA,MAAA,EACxB,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,aACE,gBAAAqB,EAAC,SAAA,EAAM,WAAWD,GAChB,UAAA;AAAA,QAAA,gBAAAE,EAAC,YAAO,KAAKR,GAAW,WAAU,iCAAiC,GAAGJ,GACnE,UAAAD,GACH;AAAA,QACA,gBAAAa,EAAC,UAAM,UAAAjB,EAAA,CAAc;AAAA,MAAA,GACvB;AAAA,IAEJ;AAGA,QAAIY,GAAmB;AACrB,YAAMM,IAAe;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAvB,KAAQe,EAAYf,CAAI;AAAA,QACxBgB;AAAA,MAAA,EACA,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,aACE,gBAAAK,EAAC,SAAA,EAAM,WAAWE,GACf,UAAA;AAAA,QAAAjB,KAAe,gBAAAgB,EAAC,QAAA,EAAK,WAAU,wBAAwB,UAAAhB,GAAY;AAAA,QACnEa;AAAA,QACAZ,KAAc,gBAAAe,EAAC,QAAA,EAAK,WAAU,wBAAwB,UAAAf,EAAA,CAAW;AAAA,MAAA,GACpE;AAAA,IAEJ;AAEA,WAAOY;AAAA,EACT;AACF;AAEArB,EAAO,cAAc;"}
package/dist/index74.js CHANGED
@@ -1,24 +1,71 @@
1
- import { jsx as x } from "react/jsx-runtime";
2
- const i = ({
3
- width: s,
4
- height: t,
5
- circle: o = !1,
6
- variant: l = "default",
7
- className: n = "",
8
- children: r,
9
- style: f,
10
- ...u
1
+ import { jsx as b, jsxs as h } from "react/jsx-runtime";
2
+ import { useState as p, useCallback as S, createContext as j, useContext as v } from "react";
3
+ const C = j(null), I = () => {
4
+ const e = v(C);
5
+ if (!e)
6
+ throw new Error("Segmented.Item must be used within a Segmented component");
7
+ return e;
8
+ }, V = {
9
+ xs: "btn-xs",
10
+ sm: "btn-sm",
11
+ md: "",
12
+ lg: "btn-lg"
13
+ }, k = ({
14
+ value: e,
15
+ disabled: o = !1,
16
+ icon: n,
17
+ children: l,
18
+ className: a = ""
11
19
  }) => {
12
- const p = () => {
13
- const e = ["skeleton"];
14
- return l === "text" && e.push("skeleton-text"), o && e.push("rounded-full"), n && e.push(n), e.join(" ");
15
- }, c = () => {
16
- const e = {};
17
- return s && (e.width = typeof s == "number" ? `${s}px` : s), t && (e.height = typeof t == "number" ? `${t}px` : t), Object.keys(e).length > 0 ? e : void 0;
18
- };
19
- return /* @__PURE__ */ x("div", { className: p(), style: { ...c(), ...f }, ...u, children: r });
20
+ const { value: i, onChange: d, size: r, disabled: c } = I(), s = i === e, t = c || o, m = () => {
21
+ t || d?.(e);
22
+ }, u = [
23
+ "join-item",
24
+ "btn",
25
+ V[r],
26
+ s ? "btn-active" : "",
27
+ a
28
+ ].filter(Boolean).join(" ");
29
+ return /* @__PURE__ */ h(
30
+ "button",
31
+ {
32
+ type: "button",
33
+ className: u,
34
+ disabled: t,
35
+ onClick: m,
36
+ "aria-pressed": s,
37
+ "data-testid": `segmented-item-${e}`,
38
+ children: [
39
+ n && /* @__PURE__ */ b("span", { className: "mr-1", children: n }),
40
+ l
41
+ ]
42
+ }
43
+ );
44
+ }, w = ({
45
+ value: e,
46
+ defaultValue: o,
47
+ onChange: n,
48
+ size: l = "md",
49
+ block: a = !1,
50
+ disabled: i = !1,
51
+ className: d = "",
52
+ children: r
53
+ }) => {
54
+ const [c, s] = p(o), t = e !== void 0, m = t ? e : c, u = S(
55
+ (g) => {
56
+ t || s(g), n?.(g);
57
+ },
58
+ [t, n]
59
+ ), f = {
60
+ value: m,
61
+ onChange: u,
62
+ size: l,
63
+ disabled: i
64
+ }, x = ["join", a ? "w-full [&>.join-item]:flex-1" : "", d].filter(Boolean).join(" ");
65
+ return /* @__PURE__ */ b(C.Provider, { value: f, children: /* @__PURE__ */ b("div", { className: x, role: "group", "data-testid": "segmented", children: r }) });
20
66
  };
67
+ w.Item = k;
21
68
  export {
22
- i as Skeleton
69
+ w as Segmented
23
70
  };
24
71
  //# sourceMappingURL=index74.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index74.js","sources":["../src/components/Skeleton.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n width?: string | number\n height?: string | number\n circle?: boolean\n variant?: 'default' | 'text'\n children?: React.ReactNode\n}\n\nexport const Skeleton: React.FC<SkeletonProps> = ({\n width,\n height,\n circle = false,\n variant = 'default',\n className = '',\n children,\n style,\n ...rest\n}) => {\n const getClasses = () => {\n const classes = ['skeleton']\n\n if (variant === 'text') {\n classes.push('skeleton-text')\n }\n\n if (circle) {\n classes.push('rounded-full')\n }\n\n if (className) {\n classes.push(className)\n }\n\n return classes.join(' ')\n }\n\n const getStyles = () => {\n const styles: React.CSSProperties = {}\n\n if (width) {\n styles.width = typeof width === 'number' ? `${width}px` : width\n }\n\n if (height) {\n styles.height = typeof height === 'number' ? `${height}px` : height\n }\n\n return Object.keys(styles).length > 0 ? styles : undefined\n }\n\n return (\n <div className={getClasses()} style={{ ...getStyles(), ...style }} {...rest}>\n {children}\n </div>\n )\n}\n"],"names":["Skeleton","width","height","circle","variant","className","children","style","rest","getClasses","classes","getStyles","styles","jsx"],"mappings":";AAUO,MAAMA,IAAoC,CAAC;AAAA,EAChD,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAa,MAAM;AACvB,UAAMC,IAAU,CAAC,UAAU;AAE3B,WAAIN,MAAY,UACdM,EAAQ,KAAK,eAAe,GAG1BP,KACFO,EAAQ,KAAK,cAAc,GAGzBL,KACFK,EAAQ,KAAKL,CAAS,GAGjBK,EAAQ,KAAK,GAAG;AAAA,EACzB,GAEMC,IAAY,MAAM;AACtB,UAAMC,IAA8B,CAAA;AAEpC,WAAIX,MACFW,EAAO,QAAQ,OAAOX,KAAU,WAAW,GAAGA,CAAK,OAAOA,IAGxDC,MACFU,EAAO,SAAS,OAAOV,KAAW,WAAW,GAAGA,CAAM,OAAOA,IAGxD,OAAO,KAAKU,CAAM,EAAE,SAAS,IAAIA,IAAS;AAAA,EACnD;AAEA,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAWJ,EAAA,GAAc,OAAO,EAAE,GAAGE,EAAA,GAAa,GAAGJ,EAAA,GAAU,GAAGC,GACpE,UAAAF,EAAA,CACH;AAEJ;"}
1
+ {"version":3,"file":"index74.js","sources":["../src/components/Segmented.tsx"],"sourcesContent":["import React, { useState, useCallback, createContext, useContext } from 'react'\n\nexport type SegmentedValue = string | number\n\ninterface SegmentedContextValue {\n value?: SegmentedValue\n onChange?: (value: SegmentedValue) => void\n size: 'xs' | 'sm' | 'md' | 'lg'\n disabled: boolean\n}\n\nconst SegmentedContext = createContext<SegmentedContextValue | null>(null)\n\nconst useSegmentedContext = () => {\n const context = useContext(SegmentedContext)\n if (!context) {\n throw new Error('Segmented.Item must be used within a Segmented component')\n }\n return context\n}\n\nexport interface SegmentedItemProps {\n /** Option value */\n value: SegmentedValue\n /** Disable this option */\n disabled?: boolean\n /** Icon to display before label */\n icon?: React.ReactNode\n /** Label content */\n children: React.ReactNode\n /** Additional CSS class */\n className?: string\n}\n\nconst sizeClasses = {\n xs: 'btn-xs',\n sm: 'btn-sm',\n md: '',\n lg: 'btn-lg',\n}\n\nconst SegmentedItem: React.FC<SegmentedItemProps> = ({\n value,\n disabled: itemDisabled = false,\n icon,\n children,\n className = '',\n}) => {\n const { value: selectedValue, onChange, size, disabled: groupDisabled } = useSegmentedContext()\n\n const isSelected = selectedValue === value\n const isDisabled = groupDisabled || itemDisabled\n\n const handleClick = () => {\n if (!isDisabled) {\n onChange?.(value)\n }\n }\n\n const buttonClasses = [\n 'join-item',\n 'btn',\n sizeClasses[size],\n isSelected ? 'btn-active' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <button\n type=\"button\"\n className={buttonClasses}\n disabled={isDisabled}\n onClick={handleClick}\n aria-pressed={isSelected}\n data-testid={`segmented-item-${value}`}\n >\n {icon && <span className=\"mr-1\">{icon}</span>}\n {children}\n </button>\n )\n}\n\nexport interface SegmentedProps {\n /** Currently selected value (controlled) */\n value?: SegmentedValue\n /** Default selected value (uncontrolled) */\n defaultValue?: SegmentedValue\n /** Callback when selection changes */\n onChange?: (value: SegmentedValue) => void\n /** Size variant */\n size?: 'xs' | 'sm' | 'md' | 'lg'\n /** Take full width of container */\n block?: boolean\n /** Disable all options */\n disabled?: boolean\n /** Additional CSS class */\n className?: string\n /** Segmented.Item children */\n children: React.ReactNode\n}\n\nexport const Segmented: React.FC<SegmentedProps> & { Item: typeof SegmentedItem } = ({\n value,\n defaultValue,\n onChange,\n size = 'md',\n block = false,\n disabled = false,\n className = '',\n children,\n}) => {\n const [internalValue, setInternalValue] = useState<SegmentedValue | undefined>(defaultValue)\n\n const isControlled = value !== undefined\n const currentValue = isControlled ? value : internalValue\n\n const handleChange = useCallback(\n (newValue: SegmentedValue) => {\n if (!isControlled) {\n setInternalValue(newValue)\n }\n onChange?.(newValue)\n },\n [isControlled, onChange]\n )\n\n const contextValue: SegmentedContextValue = {\n value: currentValue,\n onChange: handleChange,\n size,\n disabled,\n }\n\n const containerClasses = ['join', block ? 'w-full [&>.join-item]:flex-1' : '', className]\n .filter(Boolean)\n .join(' ')\n\n return (\n <SegmentedContext.Provider value={contextValue}>\n <div className={containerClasses} role=\"group\" data-testid=\"segmented\">\n {children}\n </div>\n </SegmentedContext.Provider>\n )\n}\n\nSegmented.Item = SegmentedItem\n"],"names":["SegmentedContext","createContext","useSegmentedContext","context","useContext","sizeClasses","SegmentedItem","value","itemDisabled","icon","children","className","selectedValue","onChange","size","groupDisabled","isSelected","isDisabled","handleClick","buttonClasses","jsxs","jsx","Segmented","defaultValue","block","disabled","internalValue","setInternalValue","useState","isControlled","currentValue","handleChange","useCallback","newValue","contextValue","containerClasses"],"mappings":";;AAWA,MAAMA,IAAmBC,EAA4C,IAAI,GAEnEC,IAAsB,MAAM;AAChC,QAAMC,IAAUC,EAAWJ,CAAgB;AAC3C,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,0DAA0D;AAE5E,SAAOA;AACT,GAeME,IAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEMC,IAA8C,CAAC;AAAA,EACnD,OAAAC;AAAA,EACA,UAAUC,IAAe;AAAA,EACzB,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC,IAAY;AACd,MAAM;AACJ,QAAM,EAAE,OAAOC,GAAe,UAAAC,GAAU,MAAAC,GAAM,UAAUC,EAAA,IAAkBb,EAAA,GAEpEc,IAAaJ,MAAkBL,GAC/BU,IAAaF,KAAiBP,GAE9BU,IAAc,MAAM;AACxB,IAAKD,KACHJ,IAAWN,CAAK;AAAA,EAEpB,GAEMY,IAAgB;AAAA,IACpB;AAAA,IACA;AAAA,IACAd,EAAYS,CAAI;AAAA,IAChBE,IAAa,eAAe;AAAA,IAC5BL;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAWD;AAAA,MACX,UAAUF;AAAA,MACV,SAASC;AAAA,MACT,gBAAcF;AAAA,MACd,eAAa,kBAAkBT,CAAK;AAAA,MAEnC,UAAA;AAAA,QAAAE,KAAQ,gBAAAY,EAAC,QAAA,EAAK,WAAU,QAAQ,UAAAZ,GAAK;AAAA,QACrCC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP,GAqBaY,IAAuE,CAAC;AAAA,EACnF,OAAAf;AAAA,EACA,cAAAgB;AAAA,EACA,UAAAV;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAU,IAAQ;AAAA,EACR,UAAAC,IAAW;AAAA,EACX,WAAAd,IAAY;AAAA,EACZ,UAAAD;AACF,MAAM;AACJ,QAAM,CAACgB,GAAeC,CAAgB,IAAIC,EAAqCL,CAAY,GAErFM,IAAetB,MAAU,QACzBuB,IAAeD,IAAetB,IAAQmB,GAEtCK,IAAeC;AAAA,IACnB,CAACC,MAA6B;AAC5B,MAAKJ,KACHF,EAAiBM,CAAQ,GAE3BpB,IAAWoB,CAAQ;AAAA,IACrB;AAAA,IACA,CAACJ,GAAchB,CAAQ;AAAA,EAAA,GAGnBqB,IAAsC;AAAA,IAC1C,OAAOJ;AAAA,IACP,UAAUC;AAAA,IACV,MAAAjB;AAAA,IACA,UAAAW;AAAA,EAAA,GAGIU,IAAmB,CAAC,QAAQX,IAAQ,iCAAiC,IAAIb,CAAS,EACrF,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAU,EAACrB,EAAiB,UAAjB,EAA0B,OAAOkC,GAChC,UAAA,gBAAAb,EAAC,OAAA,EAAI,WAAWc,GAAkB,MAAK,SAAQ,eAAY,aACxD,UAAAzB,GACH,GACF;AAEJ;AAEAY,EAAU,OAAOhB;"}