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/index22.js CHANGED
@@ -1,113 +1,187 @@
1
- import { jsxs as h, jsx as s, Fragment as L } from "react/jsx-runtime";
2
- import m from "react";
3
- function _(d) {
4
- return null;
1
+ import { jsxs as m, jsx as n } from "react/jsx-runtime";
2
+ import { useState as h, useRef as j, useEffect as y } from "react";
3
+ import { Input as T } from "./index43.js";
4
+ const $ = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], I = [
5
+ "January",
6
+ "February",
7
+ "March",
8
+ "April",
9
+ "May",
10
+ "June",
11
+ "July",
12
+ "August",
13
+ "September",
14
+ "October",
15
+ "November",
16
+ "December"
17
+ ];
18
+ function L(t, l = "MM/DD/YYYY") {
19
+ if (!t) return "";
20
+ const u = t.getFullYear(), f = String(t.getMonth() + 1).padStart(2, "0"), g = String(t.getDate()).padStart(2, "0");
21
+ return l.replace("YYYY", String(u)).replace("MM", f).replace("DD", g);
5
22
  }
6
- function B({
7
- title: d,
8
- bordered: a = !1,
9
- column: l = 3,
10
- size: v = "default",
11
- layout: w = "horizontal",
12
- colon: x = !0,
13
- labelStyle: N,
14
- contentStyle: $,
15
- className: j = "",
16
- style: F,
17
- children: M,
18
- ...D
19
- }) {
20
- const R = {
21
- small: "text-sm",
22
- default: "text-base",
23
- large: "text-lg"
24
- }, y = m.Children.toArray(M).filter(
25
- (p) => m.isValidElement(p)
26
- ), e = typeof l == "number" ? l : l.md || l.sm || l.xs || 3, z = () => {
27
- if (w === "vertical")
28
- return y.map((r, t) => {
29
- const o = r.props.span || 1, b = Math.min(o, e), f = r.props.labelStyle || N;
30
- return /* @__PURE__ */ h(m.Fragment, { children: [
31
- /* @__PURE__ */ h(
32
- "th",
33
- {
34
- className: `${a ? "border border-base-content/10" : ""} bg-base-200/50 font-semibold text-left px-4 py-2`,
35
- style: f,
36
- colSpan: b,
37
- children: [
38
- r.props.label,
39
- x && r.props.label && ":"
40
- ]
41
- }
42
- ),
43
- t % e === e - 1 && /* @__PURE__ */ s(L, { children: Array.from({ length: e - ((t + 1) % e || e) }).map((n, i) => /* @__PURE__ */ s("th", { className: `${a ? "border border-base-content/10" : ""}` }, `empty-${i}`)) }),
44
- (t + 1) % e === 0 && /* @__PURE__ */ s("tr", { children: y.slice(t - e + 1, t + 1).map((n, i) => {
45
- const g = n.props.span || 1, u = Math.min(g, e), C = n.props.contentStyle || $;
46
- return /* @__PURE__ */ s(
47
- "td",
23
+ function q(t, l) {
24
+ return new Date(t, l + 1, 0).getDate();
25
+ }
26
+ function z(t, l) {
27
+ return new Date(t, l, 1).getDay();
28
+ }
29
+ const B = ({
30
+ value: t,
31
+ defaultValue: l,
32
+ onChange: u,
33
+ format: f,
34
+ placeholder: g = "Select date",
35
+ disabled: v = !1,
36
+ className: x = "",
37
+ size: N = "md",
38
+ ...Y
39
+ }) => {
40
+ const [o, b] = h(
41
+ t || l || null
42
+ ), [c, d] = h(!1), [r, i] = h(
43
+ o ? o.getMonth() : (/* @__PURE__ */ new Date()).getMonth()
44
+ ), [a, p] = h(
45
+ o ? o.getFullYear() : (/* @__PURE__ */ new Date()).getFullYear()
46
+ ), w = j(null);
47
+ y(() => {
48
+ t !== void 0 && b(t);
49
+ }, [t]), y(() => {
50
+ function e(s) {
51
+ w.current && !w.current.contains(s.target) && d(!1);
52
+ }
53
+ if (c)
54
+ return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
55
+ }, [c]);
56
+ const S = (e) => {
57
+ const s = new Date(a, r, e);
58
+ b(s), u?.(s), d(!1);
59
+ }, F = () => {
60
+ r === 0 ? (i(11), p(a - 1)) : i(r - 1);
61
+ }, O = () => {
62
+ r === 11 ? (i(0), p(a + 1)) : i(r + 1);
63
+ }, k = q(a, r), C = z(a, r), D = [];
64
+ for (let e = 0; e < C; e++)
65
+ D.push(null);
66
+ for (let e = 1; e <= k; e++)
67
+ D.push(e);
68
+ const M = (e) => !e || !o ? !1 : o.getDate() === e && o.getMonth() === r && o.getFullYear() === a, R = (e) => {
69
+ if (!e) return !1;
70
+ const s = /* @__PURE__ */ new Date();
71
+ return s.getDate() === e && s.getMonth() === r && s.getFullYear() === a;
72
+ };
73
+ return /* @__PURE__ */ m("div", { ref: w, className: `relative ${x}`, "data-state": c ? "open" : "closed", ...Y, children: [
74
+ /* @__PURE__ */ n(
75
+ T,
76
+ {
77
+ value: L(o, f),
78
+ placeholder: g,
79
+ disabled: v,
80
+ size: N,
81
+ readOnly: !0,
82
+ onClick: () => !v && d(!c),
83
+ className: "cursor-pointer"
84
+ }
85
+ ),
86
+ c && /* @__PURE__ */ m("div", { className: "absolute top-full left-0 mt-2 bg-base-100 border border-base-300 rounded-lg shadow-lg p-4 z-50 w-80", children: [
87
+ /* @__PURE__ */ m("div", { className: "flex items-center justify-between mb-4", children: [
88
+ /* @__PURE__ */ n(
89
+ "button",
90
+ {
91
+ type: "button",
92
+ onClick: F,
93
+ className: "btn btn-ghost btn-sm btn-square",
94
+ children: /* @__PURE__ */ n(
95
+ "svg",
96
+ {
97
+ xmlns: "http://www.w3.org/2000/svg",
98
+ className: "h-5 w-5",
99
+ viewBox: "0 0 20 20",
100
+ fill: "currentColor",
101
+ children: /* @__PURE__ */ n(
102
+ "path",
103
+ {
104
+ fillRule: "evenodd",
105
+ d: "M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z",
106
+ clipRule: "evenodd"
107
+ }
108
+ )
109
+ }
110
+ )
111
+ }
112
+ ),
113
+ /* @__PURE__ */ m("div", { className: "text-base font-semibold", children: [
114
+ I[r],
115
+ " ",
116
+ a
117
+ ] }),
118
+ /* @__PURE__ */ n(
119
+ "button",
120
+ {
121
+ type: "button",
122
+ onClick: O,
123
+ className: "btn btn-ghost btn-sm btn-square",
124
+ children: /* @__PURE__ */ n(
125
+ "svg",
48
126
  {
49
- className: `${a ? "border border-base-content/10" : ""} px-4 py-2`,
50
- style: C,
51
- colSpan: u,
52
- children: n.props.children
53
- },
54
- i
55
- );
56
- }) }, `content-row-${t}`)
57
- ] }, t);
58
- });
59
- const p = [];
60
- let c = [], S = 0;
61
- return y.forEach((r) => {
62
- const t = r.props.span || 1, o = Math.min(t, e);
63
- S + o > e ? (p.push(c), c = [r], S = o) : (c.push(r), S += o);
64
- }), c.length > 0 && p.push(c), p.map((r, t) => {
65
- let o = 0;
66
- const b = r.map((n, i) => {
67
- const g = n.props.span || 1, u = Math.min(g, e), C = n.props.labelStyle || N, E = n.props.contentStyle || $;
68
- return o += u, /* @__PURE__ */ h(m.Fragment, { children: [
69
- /* @__PURE__ */ h(
70
- "th",
71
- {
72
- className: `${a ? "border border-base-content/10" : ""} bg-base-200/50 font-semibold text-left px-4 py-2 whitespace-nowrap`,
73
- style: C,
74
- children: [
75
- n.props.label,
76
- x && n.props.label && ":"
77
- ]
78
- }
79
- ),
80
- /* @__PURE__ */ s(
81
- "td",
82
- {
83
- className: `${a ? "border border-base-content/10" : ""} px-4 py-2`,
84
- style: E,
85
- colSpan: u * 2 - 1,
86
- children: n.props.children
87
- }
88
- )
89
- ] }, i);
90
- }), f = e - o;
91
- return f > 0 && b.push(
92
- /* @__PURE__ */ s(m.Fragment, { children: /* @__PURE__ */ s("th", { className: `${a ? "border border-base-content/10" : ""}`, colSpan: f * 2 }) }, "empty")
93
- ), /* @__PURE__ */ s("tr", { children: b }, t);
94
- });
95
- }, A = [
96
- "w-full",
97
- a && "border-collapse",
98
- R[v],
99
- j
100
- ].filter(Boolean).join(" ");
101
- return /* @__PURE__ */ h("div", { style: F, ...D, children: [
102
- d && /* @__PURE__ */ s("div", { className: "text-lg font-semibold mb-4", children: d }),
103
- /* @__PURE__ */ s("table", { className: A, children: /* @__PURE__ */ s("tbody", { children: z() }) })
127
+ xmlns: "http://www.w3.org/2000/svg",
128
+ className: "h-5 w-5",
129
+ viewBox: "0 0 20 20",
130
+ fill: "currentColor",
131
+ children: /* @__PURE__ */ n(
132
+ "path",
133
+ {
134
+ fillRule: "evenodd",
135
+ d: "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z",
136
+ clipRule: "evenodd"
137
+ }
138
+ )
139
+ }
140
+ )
141
+ }
142
+ )
143
+ ] }),
144
+ /* @__PURE__ */ n("div", { className: "grid grid-cols-7 gap-1 mb-2", children: $.map((e) => /* @__PURE__ */ n(
145
+ "div",
146
+ {
147
+ className: "text-center text-xs font-semibold text-base-content/60 py-2",
148
+ children: e
149
+ },
150
+ e
151
+ )) }),
152
+ /* @__PURE__ */ n("div", { className: "grid grid-cols-7 gap-1", children: D.map((e, s) => /* @__PURE__ */ n(
153
+ "button",
154
+ {
155
+ type: "button",
156
+ disabled: !e,
157
+ onClick: () => e && S(e),
158
+ className: `
159
+ aspect-square flex items-center justify-center text-sm rounded-lg
160
+ ${e ? "hover:bg-base-200" : "invisible"}
161
+ ${M(e) ? "bg-primary text-primary-content hover:bg-primary/90" : ""}
162
+ ${R(e) && !M(e) ? "border border-primary" : ""}
163
+ ${e ? "cursor-pointer" : ""}
164
+ `,
165
+ children: e
166
+ },
167
+ s
168
+ )) }),
169
+ /* @__PURE__ */ n("div", { className: "mt-4 flex justify-end", children: /* @__PURE__ */ n(
170
+ "button",
171
+ {
172
+ type: "button",
173
+ onClick: () => {
174
+ const e = /* @__PURE__ */ new Date();
175
+ b(e), i(e.getMonth()), p(e.getFullYear()), u?.(e), d(!1);
176
+ },
177
+ className: "btn btn-ghost btn-sm",
178
+ children: "Today"
179
+ }
180
+ ) })
181
+ ] })
104
182
  ] });
105
- }
106
- const k = Object.assign(B, {
107
- Item: _
108
- });
183
+ };
109
184
  export {
110
- k as Descriptions,
111
- k as default
185
+ B as DatePicker
112
186
  };
113
187
  //# sourceMappingURL=index22.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index22.js","sources":["../src/components/Descriptions.tsx"],"sourcesContent":["import React from 'react'\n\nexport type DescriptionsSize = 'small' | 'default' | 'large'\nexport type DescriptionsLayout = 'horizontal' | 'vertical'\n\nexport interface DescriptionsItemProps {\n label?: React.ReactNode\n span?: number\n children?: React.ReactNode\n labelStyle?: React.CSSProperties\n contentStyle?: React.CSSProperties\n}\n\nexport interface DescriptionsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n title?: React.ReactNode\n bordered?: boolean\n column?: number | {\n xs?: number\n sm?: number\n md?: number\n lg?: number\n xl?: number\n '2xl'?: number\n }\n size?: DescriptionsSize\n layout?: DescriptionsLayout\n colon?: boolean\n labelStyle?: React.CSSProperties\n contentStyle?: React.CSSProperties\n children?: React.ReactNode\n}\n\nfunction DescriptionsItem(_props: DescriptionsItemProps) {\n return null\n}\n\nfunction DescriptionsRoot({\n title,\n bordered = false,\n column = 3,\n size = 'default',\n layout = 'horizontal',\n colon = true,\n labelStyle,\n contentStyle,\n className = '',\n style,\n children,\n ...rest\n}: DescriptionsProps) {\n const sizeClasses: Record<DescriptionsSize, string> = {\n small: 'text-sm',\n default: 'text-base',\n large: 'text-lg',\n }\n\n const items = React.Children.toArray(children).filter(\n (child): child is React.ReactElement<DescriptionsItemProps> =>\n React.isValidElement(child)\n )\n\n const getColumnCount = () => {\n if (typeof column === 'number') {\n return column\n }\n // For responsive columns, default to md value or 3\n return column.md || column.sm || column.xs || 3\n }\n\n const columnCount = getColumnCount()\n\n const renderItems = () => {\n if (layout === 'vertical') {\n return items.map((item, index) => {\n const span = item.props.span || 1\n const effectiveSpan = Math.min(span, columnCount)\n const itemLabelStyle = item.props.labelStyle || labelStyle\n\n return (\n <React.Fragment key={index}>\n <th\n className={`${bordered ? 'border border-base-content/10' : ''} bg-base-200/50 font-semibold text-left px-4 py-2`}\n style={itemLabelStyle}\n colSpan={effectiveSpan}\n >\n {item.props.label}\n {colon && item.props.label && ':'}\n </th>\n {index % columnCount === columnCount - 1 && (\n <>\n {Array.from({ length: columnCount - ((index + 1) % columnCount || columnCount) }).map((_, i) => (\n <th key={`empty-${i}`} className={`${bordered ? 'border border-base-content/10' : ''}`} />\n ))}\n </>\n )}\n {(index + 1) % columnCount === 0 && (\n <tr key={`content-row-${index}`}>\n {items.slice(index - columnCount + 1, index + 1).map((contentItem, ci) => {\n const contentSpan = contentItem.props.span || 1\n const effectiveContentSpan = Math.min(contentSpan, columnCount)\n const itemContentStyle2 = contentItem.props.contentStyle || contentStyle\n\n return (\n <td\n key={ci}\n className={`${bordered ? 'border border-base-content/10' : ''} px-4 py-2`}\n style={itemContentStyle2}\n colSpan={effectiveContentSpan}\n >\n {contentItem.props.children}\n </td>\n )\n })}\n </tr>\n )}\n </React.Fragment>\n )\n })\n }\n\n // Horizontal layout\n const rows: React.ReactElement<DescriptionsItemProps>[][] = []\n let currentRow: React.ReactElement<DescriptionsItemProps>[] = []\n let currentSpan = 0\n\n items.forEach((item) => {\n const span = item.props.span || 1\n const effectiveSpan = Math.min(span, columnCount)\n\n if (currentSpan + effectiveSpan > columnCount) {\n rows.push(currentRow)\n currentRow = [item]\n currentSpan = effectiveSpan\n } else {\n currentRow.push(item)\n currentSpan += effectiveSpan\n }\n })\n\n if (currentRow.length > 0) {\n rows.push(currentRow)\n }\n\n return rows.map((row, rowIndex) => {\n let usedSpan = 0\n const cells = row.map((item, cellIndex) => {\n const span = item.props.span || 1\n const effectiveSpan = Math.min(span, columnCount)\n const itemLabelStyle = item.props.labelStyle || labelStyle\n const itemContentStyle = item.props.contentStyle || contentStyle\n usedSpan += effectiveSpan\n\n return (\n <React.Fragment key={cellIndex}>\n <th\n className={`${bordered ? 'border border-base-content/10' : ''} bg-base-200/50 font-semibold text-left px-4 py-2 whitespace-nowrap`}\n style={itemLabelStyle}\n >\n {item.props.label}\n {colon && item.props.label && ':'}\n </th>\n <td\n className={`${bordered ? 'border border-base-content/10' : ''} px-4 py-2`}\n style={itemContentStyle}\n colSpan={effectiveSpan * 2 - 1}\n >\n {item.props.children}\n </td>\n </React.Fragment>\n )\n })\n\n // Fill remaining columns\n const remainingSpan = columnCount - usedSpan\n if (remainingSpan > 0) {\n cells.push(\n <React.Fragment key=\"empty\">\n <th className={`${bordered ? 'border border-base-content/10' : ''}`} colSpan={remainingSpan * 2} />\n </React.Fragment>\n )\n }\n\n return <tr key={rowIndex}>{cells}</tr>\n })\n }\n\n const containerClasses = [\n 'w-full',\n bordered && 'border-collapse',\n sizeClasses[size],\n className,\n ].filter(Boolean).join(' ')\n\n return (\n <div style={style} {...rest}>\n {title && (\n <div className=\"text-lg font-semibold mb-4\">\n {title}\n </div>\n )}\n <table className={containerClasses}>\n <tbody>\n {renderItems()}\n </tbody>\n </table>\n </div>\n )\n}\n\nexport const Descriptions = Object.assign(DescriptionsRoot, {\n Item: DescriptionsItem,\n})\n\nexport default Descriptions\n"],"names":["DescriptionsItem","_props","DescriptionsRoot","title","bordered","column","size","layout","colon","labelStyle","contentStyle","className","style","children","rest","sizeClasses","items","React","child","columnCount","renderItems","item","index","span","effectiveSpan","itemLabelStyle","jsxs","_","jsx","contentItem","ci","contentSpan","effectiveContentSpan","itemContentStyle2","rows","currentRow","currentSpan","row","rowIndex","usedSpan","cells","cellIndex","itemContentStyle","remainingSpan","containerClasses","Descriptions"],"mappings":"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"}
1
+ {"version":3,"file":"index22.js","sources":["../src/components/DatePicker.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react'\nimport { Input } from './Input'\n\nexport interface DatePickerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n value?: Date | null\n defaultValue?: Date | null\n onChange?: (date: Date | null) => void\n format?: string\n placeholder?: string\n disabled?: boolean\n size?: 'xs' | 'sm' | 'md' | 'lg'\n}\n\nconst DAYS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\nconst MONTHS = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n]\n\nfunction formatDate(date: Date | null, format: string = 'MM/DD/YYYY'): string {\n if (!date) return ''\n\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n\n return format\n .replace('YYYY', String(year))\n .replace('MM', month)\n .replace('DD', day)\n}\n\nfunction getDaysInMonth(year: number, month: number): number {\n return new Date(year, month + 1, 0).getDate()\n}\n\nfunction getFirstDayOfMonth(year: number, month: number): number {\n return new Date(year, month, 1).getDay()\n}\n\nexport const DatePicker: React.FC<DatePickerProps> = ({\n value,\n defaultValue,\n onChange,\n format,\n placeholder = 'Select date',\n disabled = false,\n className = '',\n size = 'md',\n ...rest\n}) => {\n const [selectedDate, setSelectedDate] = useState<Date | null>(\n value || defaultValue || null\n )\n const [isOpen, setIsOpen] = useState(false)\n const [viewMonth, setViewMonth] = useState(\n selectedDate ? selectedDate.getMonth() : new Date().getMonth()\n )\n const [viewYear, setViewYear] = useState(\n selectedDate ? selectedDate.getFullYear() : new Date().getFullYear()\n )\n\n const containerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (value !== undefined) {\n setSelectedDate(value)\n }\n }, [value])\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false)\n }\n }\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen])\n\n const handleDateSelect = (day: number) => {\n const newDate = new Date(viewYear, viewMonth, day)\n setSelectedDate(newDate)\n onChange?.(newDate)\n setIsOpen(false)\n }\n\n const handlePrevMonth = () => {\n if (viewMonth === 0) {\n setViewMonth(11)\n setViewYear(viewYear - 1)\n } else {\n setViewMonth(viewMonth - 1)\n }\n }\n\n const handleNextMonth = () => {\n if (viewMonth === 11) {\n setViewMonth(0)\n setViewYear(viewYear + 1)\n } else {\n setViewMonth(viewMonth + 1)\n }\n }\n\n const daysInMonth = getDaysInMonth(viewYear, viewMonth)\n const firstDayOfMonth = getFirstDayOfMonth(viewYear, viewMonth)\n\n const calendarDays: (number | null)[] = []\n for (let i = 0; i < firstDayOfMonth; i++) {\n calendarDays.push(null)\n }\n for (let i = 1; i <= daysInMonth; i++) {\n calendarDays.push(i)\n }\n\n const isSelectedDay = (day: number | null): boolean => {\n if (!day || !selectedDate) return false\n return (\n selectedDate.getDate() === day &&\n selectedDate.getMonth() === viewMonth &&\n selectedDate.getFullYear() === viewYear\n )\n }\n\n const isToday = (day: number | null): boolean => {\n if (!day) return false\n const today = new Date()\n return (\n today.getDate() === day &&\n today.getMonth() === viewMonth &&\n today.getFullYear() === viewYear\n )\n }\n\n return (\n <div ref={containerRef} className={`relative ${className}`} data-state={isOpen ? 'open' : 'closed'} {...rest}>\n <Input\n value={formatDate(selectedDate, format)}\n placeholder={placeholder}\n disabled={disabled}\n size={size}\n readOnly\n onClick={() => !disabled && setIsOpen(!isOpen)}\n className=\"cursor-pointer\"\n />\n\n {isOpen && (\n <div className=\"absolute top-full left-0 mt-2 bg-base-100 border border-base-300 rounded-lg shadow-lg p-4 z-50 w-80\">\n {/* Header */}\n <div className=\"flex items-center justify-between mb-4\">\n <button\n type=\"button\"\n onClick={handlePrevMonth}\n className=\"btn btn-ghost btn-sm btn-square\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n\n <div className=\"text-base font-semibold\">\n {MONTHS[viewMonth]} {viewYear}\n </div>\n\n <button\n type=\"button\"\n onClick={handleNextMonth}\n className=\"btn btn-ghost btn-sm btn-square\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n </div>\n\n {/* Days of week */}\n <div className=\"grid grid-cols-7 gap-1 mb-2\">\n {DAYS.map((day) => (\n <div\n key={day}\n className=\"text-center text-xs font-semibold text-base-content/60 py-2\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {calendarDays.map((day, index) => (\n <button\n key={index}\n type=\"button\"\n disabled={!day}\n onClick={() => day && handleDateSelect(day)}\n className={`\n aspect-square flex items-center justify-center text-sm rounded-lg\n ${!day ? 'invisible' : 'hover:bg-base-200'}\n ${isSelectedDay(day) ? 'bg-primary text-primary-content hover:bg-primary/90' : ''}\n ${isToday(day) && !isSelectedDay(day) ? 'border border-primary' : ''}\n ${day ? 'cursor-pointer' : ''}\n `}\n >\n {day}\n </button>\n ))}\n </div>\n\n {/* Today button */}\n <div className=\"mt-4 flex justify-end\">\n <button\n type=\"button\"\n onClick={() => {\n const today = new Date()\n setSelectedDate(today)\n setViewMonth(today.getMonth())\n setViewYear(today.getFullYear())\n onChange?.(today)\n setIsOpen(false)\n }}\n className=\"btn btn-ghost btn-sm\"\n >\n Today\n </button>\n </div>\n </div>\n )}\n </div>\n )\n}\n"],"names":["DAYS","MONTHS","formatDate","date","format","year","month","day","getDaysInMonth","getFirstDayOfMonth","DatePicker","value","defaultValue","onChange","placeholder","disabled","className","size","rest","selectedDate","setSelectedDate","useState","isOpen","setIsOpen","viewMonth","setViewMonth","viewYear","setViewYear","containerRef","useRef","useEffect","handleClickOutside","event","handleDateSelect","newDate","handlePrevMonth","handleNextMonth","daysInMonth","firstDayOfMonth","calendarDays","i","isSelectedDay","isToday","today","jsxs","jsx","Input","index"],"mappings":";;;AAaA,MAAMA,IAAO,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,GAChDC,IAAS;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAASC,EAAWC,GAAmBC,IAAiB,cAAsB;AAC5E,MAAI,CAACD,EAAM,QAAO;AAElB,QAAME,IAAOF,EAAK,YAAA,GACZG,IAAQ,OAAOH,EAAK,SAAA,IAAa,CAAC,EAAE,SAAS,GAAG,GAAG,GACnDI,IAAM,OAAOJ,EAAK,QAAA,CAAS,EAAE,SAAS,GAAG,GAAG;AAElD,SAAOC,EACJ,QAAQ,QAAQ,OAAOC,CAAI,CAAC,EAC5B,QAAQ,MAAMC,CAAK,EACnB,QAAQ,MAAMC,CAAG;AACtB;AAEA,SAASC,EAAeH,GAAcC,GAAuB;AAC3D,SAAO,IAAI,KAAKD,GAAMC,IAAQ,GAAG,CAAC,EAAE,QAAA;AACtC;AAEA,SAASG,EAAmBJ,GAAcC,GAAuB;AAC/D,SAAO,IAAI,KAAKD,GAAMC,GAAO,CAAC,EAAE,OAAA;AAClC;AAEO,MAAMI,IAAwC,CAAC;AAAA,EACpD,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAT;AAAA,EACA,aAAAU,IAAc;AAAA,EACd,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,MAAAC,IAAO;AAAA,EACP,GAAGC;AACL,MAAM;AACJ,QAAM,CAACC,GAAcC,CAAe,IAAIC;AAAA,IACtCV,KAASC,KAAgB;AAAA,EAAA,GAErB,CAACU,GAAQC,CAAS,IAAIF,EAAS,EAAK,GACpC,CAACG,GAAWC,CAAY,IAAIJ;AAAA,IAChCF,IAAeA,EAAa,SAAA,KAAa,oBAAI,KAAA,GAAO,SAAA;AAAA,EAAS,GAEzD,CAACO,GAAUC,CAAW,IAAIN;AAAA,IAC9BF,IAAeA,EAAa,YAAA,KAAgB,oBAAI,KAAA,GAAO,YAAA;AAAA,EAAY,GAG/DS,IAAeC,EAAuB,IAAI;AAEhD,EAAAC,EAAU,MAAM;AACd,IAAInB,MAAU,UACZS,EAAgBT,CAAK;AAAA,EAEzB,GAAG,CAACA,CAAK,CAAC,GAEVmB,EAAU,MAAM;AACd,aAASC,EAAmBC,GAAmB;AAC7C,MAAIJ,EAAa,WAAW,CAACA,EAAa,QAAQ,SAASI,EAAM,MAAc,KAC7ET,EAAU,EAAK;AAAA,IAEnB;AAEA,QAAID;AACF,sBAAS,iBAAiB,aAAaS,CAAkB,GAClD,MAAM,SAAS,oBAAoB,aAAaA,CAAkB;AAAA,EAE7E,GAAG,CAACT,CAAM,CAAC;AAEX,QAAMW,IAAmB,CAAC1B,MAAgB;AACxC,UAAM2B,IAAU,IAAI,KAAKR,GAAUF,GAAWjB,CAAG;AACjD,IAAAa,EAAgBc,CAAO,GACvBrB,IAAWqB,CAAO,GAClBX,EAAU,EAAK;AAAA,EACjB,GAEMY,IAAkB,MAAM;AAC5B,IAAIX,MAAc,KAChBC,EAAa,EAAE,GACfE,EAAYD,IAAW,CAAC,KAExBD,EAAaD,IAAY,CAAC;AAAA,EAE9B,GAEMY,IAAkB,MAAM;AAC5B,IAAIZ,MAAc,MAChBC,EAAa,CAAC,GACdE,EAAYD,IAAW,CAAC,KAExBD,EAAaD,IAAY,CAAC;AAAA,EAE9B,GAEMa,IAAc7B,EAAekB,GAAUF,CAAS,GAChDc,IAAkB7B,EAAmBiB,GAAUF,CAAS,GAExDe,IAAkC,CAAA;AACxC,WAASC,IAAI,GAAGA,IAAIF,GAAiBE;AACnC,IAAAD,EAAa,KAAK,IAAI;AAExB,WAASC,IAAI,GAAGA,KAAKH,GAAaG;AAChC,IAAAD,EAAa,KAAKC,CAAC;AAGrB,QAAMC,IAAgB,CAAClC,MACjB,CAACA,KAAO,CAACY,IAAqB,KAEhCA,EAAa,cAAcZ,KAC3BY,EAAa,eAAeK,KAC5BL,EAAa,YAAA,MAAkBO,GAI7BgB,IAAU,CAACnC,MAAgC;AAC/C,QAAI,CAACA,EAAK,QAAO;AACjB,UAAMoC,wBAAY,KAAA;AAClB,WACEA,EAAM,cAAcpC,KACpBoC,EAAM,eAAenB,KACrBmB,EAAM,YAAA,MAAkBjB;AAAA,EAE5B;AAEA,SACE,gBAAAkB,EAAC,OAAA,EAAI,KAAKhB,GAAc,WAAW,YAAYZ,CAAS,IAAI,cAAYM,IAAS,SAAS,UAAW,GAAGJ,GACtG,UAAA;AAAA,IAAA,gBAAA2B;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,OAAO5C,EAAWiB,GAAcf,CAAM;AAAA,QACtC,aAAAU;AAAA,QACA,UAAAC;AAAA,QACA,MAAAE;AAAA,QACA,UAAQ;AAAA,QACR,SAAS,MAAM,CAACF,KAAYQ,EAAU,CAACD,CAAM;AAAA,QAC7C,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAGXA,KACC,gBAAAsB,EAAC,OAAA,EAAI,WAAU,uGAEb,UAAA;AAAA,MAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,0CACb,UAAA;AAAA,QAAA,gBAAAC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAASV;AAAA,YACT,WAAU;AAAA,YAEV,UAAA,gBAAAU;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,WAAU;AAAA,gBACV,SAAQ;AAAA,gBACR,MAAK;AAAA,gBAEL,UAAA,gBAAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,UAAS;AAAA,oBACT,GAAE;AAAA,oBACF,UAAS;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACX;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,QAGF,gBAAAD,EAAC,OAAA,EAAI,WAAU,2BACZ,UAAA;AAAA,UAAA3C,EAAOuB,CAAS;AAAA,UAAE;AAAA,UAAEE;AAAA,QAAA,GACvB;AAAA,QAEA,gBAAAmB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAST;AAAA,YACT,WAAU;AAAA,YAEV,UAAA,gBAAAS;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,WAAU;AAAA,gBACV,SAAQ;AAAA,gBACR,MAAK;AAAA,gBAEL,UAAA,gBAAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,UAAS;AAAA,oBACT,GAAE;AAAA,oBACF,UAAS;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACX;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MACF,GACF;AAAA,wBAGC,OAAA,EAAI,WAAU,+BACZ,UAAA7C,EAAK,IAAI,CAACO,MACT,gBAAAsC;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,WAAU;AAAA,UAET,UAAAtC;AAAA,QAAA;AAAA,QAHIA;AAAA,MAAA,CAKR,GACH;AAAA,MAGA,gBAAAsC,EAAC,SAAI,WAAU,0BACZ,YAAa,IAAI,CAACtC,GAAKwC,MACtB,gBAAAF;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,MAAK;AAAA,UACL,UAAU,CAACtC;AAAA,UACX,SAAS,MAAMA,KAAO0B,EAAiB1B,CAAG;AAAA,UAC1C,WAAW;AAAA;AAAA,oBAENA,IAAoB,sBAAd,WAAiC;AAAA,oBACxCkC,EAAclC,CAAG,IAAI,wDAAwD,EAAE;AAAA,oBAC/EmC,EAAQnC,CAAG,KAAK,CAACkC,EAAclC,CAAG,IAAI,0BAA0B,EAAE;AAAA,oBAClEA,IAAM,mBAAmB,EAAE;AAAA;AAAA,UAG9B,UAAAA;AAAA,QAAA;AAAA,QAZIwC;AAAA,MAAA,CAcR,GACH;AAAA,MAGA,gBAAAF,EAAC,OAAA,EAAI,WAAU,yBACb,UAAA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS,MAAM;AACb,kBAAMF,wBAAY,KAAA;AAClB,YAAAvB,EAAgBuB,CAAK,GACrBlB,EAAakB,EAAM,UAAU,GAC7BhB,EAAYgB,EAAM,aAAa,GAC/B9B,IAAW8B,CAAK,GAChBpB,EAAU,EAAK;AAAA,UACjB;AAAA,UACA,WAAU;AAAA,UACX,UAAA;AAAA,QAAA;AAAA,MAAA,EAED,CACF;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GAEJ;AAEJ;"}
package/dist/index23.js CHANGED
@@ -1,22 +1,113 @@
1
- import { jsxs as f, jsx as e } from "react/jsx-runtime";
2
- const m = ({
3
- left: i,
4
- right: r,
5
- aspect: s = "aspect-16/9",
6
- className: d = ""
7
- }) => /* @__PURE__ */ f(
8
- "figure",
9
- {
10
- className: `diff ${s} ${d}`.trim(),
11
- tabIndex: 0,
12
- children: [
13
- /* @__PURE__ */ e("div", { className: "diff-item-1", role: "img", tabIndex: 0, children: i }),
14
- /* @__PURE__ */ e("div", { className: "diff-item-2", role: "img", children: r }),
15
- /* @__PURE__ */ e("div", { className: "diff-resizer" })
16
- ]
17
- }
18
- );
1
+ import { jsxs as h, jsx as s, Fragment as L } from "react/jsx-runtime";
2
+ import m from "react";
3
+ function _(d) {
4
+ return null;
5
+ }
6
+ function B({
7
+ title: d,
8
+ bordered: a = !1,
9
+ column: l = 3,
10
+ size: v = "default",
11
+ layout: w = "horizontal",
12
+ colon: x = !0,
13
+ labelStyle: N,
14
+ contentStyle: $,
15
+ className: j = "",
16
+ style: F,
17
+ children: M,
18
+ ...D
19
+ }) {
20
+ const R = {
21
+ small: "text-sm",
22
+ default: "text-base",
23
+ large: "text-lg"
24
+ }, y = m.Children.toArray(M).filter(
25
+ (p) => m.isValidElement(p)
26
+ ), e = typeof l == "number" ? l : l.md || l.sm || l.xs || 3, z = () => {
27
+ if (w === "vertical")
28
+ return y.map((r, t) => {
29
+ const o = r.props.span || 1, b = Math.min(o, e), f = r.props.labelStyle || N;
30
+ return /* @__PURE__ */ h(m.Fragment, { children: [
31
+ /* @__PURE__ */ h(
32
+ "th",
33
+ {
34
+ className: `${a ? "border border-base-content/10" : ""} bg-base-200/50 font-semibold text-left px-4 py-2`,
35
+ style: f,
36
+ colSpan: b,
37
+ children: [
38
+ r.props.label,
39
+ x && r.props.label && ":"
40
+ ]
41
+ }
42
+ ),
43
+ t % e === e - 1 && /* @__PURE__ */ s(L, { children: Array.from({ length: e - ((t + 1) % e || e) }).map((n, i) => /* @__PURE__ */ s("th", { className: `${a ? "border border-base-content/10" : ""}` }, `empty-${i}`)) }),
44
+ (t + 1) % e === 0 && /* @__PURE__ */ s("tr", { children: y.slice(t - e + 1, t + 1).map((n, i) => {
45
+ const g = n.props.span || 1, u = Math.min(g, e), C = n.props.contentStyle || $;
46
+ return /* @__PURE__ */ s(
47
+ "td",
48
+ {
49
+ className: `${a ? "border border-base-content/10" : ""} px-4 py-2`,
50
+ style: C,
51
+ colSpan: u,
52
+ children: n.props.children
53
+ },
54
+ i
55
+ );
56
+ }) }, `content-row-${t}`)
57
+ ] }, t);
58
+ });
59
+ const p = [];
60
+ let c = [], S = 0;
61
+ return y.forEach((r) => {
62
+ const t = r.props.span || 1, o = Math.min(t, e);
63
+ S + o > e ? (p.push(c), c = [r], S = o) : (c.push(r), S += o);
64
+ }), c.length > 0 && p.push(c), p.map((r, t) => {
65
+ let o = 0;
66
+ const b = r.map((n, i) => {
67
+ const g = n.props.span || 1, u = Math.min(g, e), C = n.props.labelStyle || N, E = n.props.contentStyle || $;
68
+ return o += u, /* @__PURE__ */ h(m.Fragment, { children: [
69
+ /* @__PURE__ */ h(
70
+ "th",
71
+ {
72
+ className: `${a ? "border border-base-content/10" : ""} bg-base-200/50 font-semibold text-left px-4 py-2 whitespace-nowrap`,
73
+ style: C,
74
+ children: [
75
+ n.props.label,
76
+ x && n.props.label && ":"
77
+ ]
78
+ }
79
+ ),
80
+ /* @__PURE__ */ s(
81
+ "td",
82
+ {
83
+ className: `${a ? "border border-base-content/10" : ""} px-4 py-2`,
84
+ style: E,
85
+ colSpan: u * 2 - 1,
86
+ children: n.props.children
87
+ }
88
+ )
89
+ ] }, i);
90
+ }), f = e - o;
91
+ return f > 0 && b.push(
92
+ /* @__PURE__ */ s(m.Fragment, { children: /* @__PURE__ */ s("th", { className: `${a ? "border border-base-content/10" : ""}`, colSpan: f * 2 }) }, "empty")
93
+ ), /* @__PURE__ */ s("tr", { children: b }, t);
94
+ });
95
+ }, A = [
96
+ "w-full",
97
+ a && "border-collapse",
98
+ R[v],
99
+ j
100
+ ].filter(Boolean).join(" ");
101
+ return /* @__PURE__ */ h("div", { style: F, ...D, children: [
102
+ d && /* @__PURE__ */ s("div", { className: "text-lg font-semibold mb-4", children: d }),
103
+ /* @__PURE__ */ s("table", { className: A, children: /* @__PURE__ */ s("tbody", { children: z() }) })
104
+ ] });
105
+ }
106
+ const k = Object.assign(B, {
107
+ Item: _
108
+ });
19
109
  export {
20
- m as Diff
110
+ k as Descriptions,
111
+ k as default
21
112
  };
22
113
  //# sourceMappingURL=index23.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index23.js","sources":["../src/components/Diff.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface DiffProps {\n /** Left side content (revealed when dragging) */\n left: React.ReactNode\n /** Right side content (hidden when dragging) */\n right: React.ReactNode\n /** Aspect ratio class (e.g., \"aspect-16/9\", \"aspect-4/3\", \"aspect-square\") */\n aspect?: string\n /** Additional CSS classes */\n className?: string\n}\n\nexport const Diff: React.FC<DiffProps> = ({\n left,\n right,\n aspect = 'aspect-16/9',\n className = '',\n}) => {\n return (\n <figure\n className={`diff ${aspect} ${className}`.trim()}\n tabIndex={0}\n >\n <div className=\"diff-item-1\" role=\"img\" tabIndex={0}>\n {left}\n </div>\n <div className=\"diff-item-2\" role=\"img\">\n {right}\n </div>\n <div className=\"diff-resizer\" />\n </figure>\n )\n}\n"],"names":["Diff","left","right","aspect","className","jsxs","jsx"],"mappings":";AAaO,MAAMA,IAA4B,CAAC;AAAA,EACxC,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,WAAAC,IAAY;AACd,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAW,QAAQF,CAAM,IAAIC,CAAS,GAAG,KAAA;AAAA,IACzC,UAAU;AAAA,IAEV,UAAA;AAAA,MAAA,gBAAAE,EAAC,SAAI,WAAU,eAAc,MAAK,OAAM,UAAU,GAC/C,UAAAL,EAAA,CACH;AAAA,wBACC,OAAA,EAAI,WAAU,eAAc,MAAK,OAC/B,UAAAC,GACH;AAAA,MACA,gBAAAI,EAAC,OAAA,EAAI,WAAU,eAAA,CAAe;AAAA,IAAA;AAAA,EAAA;AAAA;"}
1
+ {"version":3,"file":"index23.js","sources":["../src/components/Descriptions.tsx"],"sourcesContent":["import React from 'react'\n\nexport type DescriptionsSize = 'small' | 'default' | 'large'\nexport type DescriptionsLayout = 'horizontal' | 'vertical'\n\nexport interface DescriptionsItemProps {\n label?: React.ReactNode\n span?: number\n children?: React.ReactNode\n labelStyle?: React.CSSProperties\n contentStyle?: React.CSSProperties\n}\n\nexport interface DescriptionsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n title?: React.ReactNode\n bordered?: boolean\n column?: number | {\n xs?: number\n sm?: number\n md?: number\n lg?: number\n xl?: number\n '2xl'?: number\n }\n size?: DescriptionsSize\n layout?: DescriptionsLayout\n colon?: boolean\n labelStyle?: React.CSSProperties\n contentStyle?: React.CSSProperties\n children?: React.ReactNode\n}\n\nfunction DescriptionsItem(_props: DescriptionsItemProps) {\n return null\n}\n\nfunction DescriptionsRoot({\n title,\n bordered = false,\n column = 3,\n size = 'default',\n layout = 'horizontal',\n colon = true,\n labelStyle,\n contentStyle,\n className = '',\n style,\n children,\n ...rest\n}: DescriptionsProps) {\n const sizeClasses: Record<DescriptionsSize, string> = {\n small: 'text-sm',\n default: 'text-base',\n large: 'text-lg',\n }\n\n const items = React.Children.toArray(children).filter(\n (child): child is React.ReactElement<DescriptionsItemProps> =>\n React.isValidElement(child)\n )\n\n const getColumnCount = () => {\n if (typeof column === 'number') {\n return column\n }\n // For responsive columns, default to md value or 3\n return column.md || column.sm || column.xs || 3\n }\n\n const columnCount = getColumnCount()\n\n const renderItems = () => {\n if (layout === 'vertical') {\n return items.map((item, index) => {\n const span = item.props.span || 1\n const effectiveSpan = Math.min(span, columnCount)\n const itemLabelStyle = item.props.labelStyle || labelStyle\n\n return (\n <React.Fragment key={index}>\n <th\n className={`${bordered ? 'border border-base-content/10' : ''} bg-base-200/50 font-semibold text-left px-4 py-2`}\n style={itemLabelStyle}\n colSpan={effectiveSpan}\n >\n {item.props.label}\n {colon && item.props.label && ':'}\n </th>\n {index % columnCount === columnCount - 1 && (\n <>\n {Array.from({ length: columnCount - ((index + 1) % columnCount || columnCount) }).map((_, i) => (\n <th key={`empty-${i}`} className={`${bordered ? 'border border-base-content/10' : ''}`} />\n ))}\n </>\n )}\n {(index + 1) % columnCount === 0 && (\n <tr key={`content-row-${index}`}>\n {items.slice(index - columnCount + 1, index + 1).map((contentItem, ci) => {\n const contentSpan = contentItem.props.span || 1\n const effectiveContentSpan = Math.min(contentSpan, columnCount)\n const itemContentStyle2 = contentItem.props.contentStyle || contentStyle\n\n return (\n <td\n key={ci}\n className={`${bordered ? 'border border-base-content/10' : ''} px-4 py-2`}\n style={itemContentStyle2}\n colSpan={effectiveContentSpan}\n >\n {contentItem.props.children}\n </td>\n )\n })}\n </tr>\n )}\n </React.Fragment>\n )\n })\n }\n\n // Horizontal layout\n const rows: React.ReactElement<DescriptionsItemProps>[][] = []\n let currentRow: React.ReactElement<DescriptionsItemProps>[] = []\n let currentSpan = 0\n\n items.forEach((item) => {\n const span = item.props.span || 1\n const effectiveSpan = Math.min(span, columnCount)\n\n if (currentSpan + effectiveSpan > columnCount) {\n rows.push(currentRow)\n currentRow = [item]\n currentSpan = effectiveSpan\n } else {\n currentRow.push(item)\n currentSpan += effectiveSpan\n }\n })\n\n if (currentRow.length > 0) {\n rows.push(currentRow)\n }\n\n return rows.map((row, rowIndex) => {\n let usedSpan = 0\n const cells = row.map((item, cellIndex) => {\n const span = item.props.span || 1\n const effectiveSpan = Math.min(span, columnCount)\n const itemLabelStyle = item.props.labelStyle || labelStyle\n const itemContentStyle = item.props.contentStyle || contentStyle\n usedSpan += effectiveSpan\n\n return (\n <React.Fragment key={cellIndex}>\n <th\n className={`${bordered ? 'border border-base-content/10' : ''} bg-base-200/50 font-semibold text-left px-4 py-2 whitespace-nowrap`}\n style={itemLabelStyle}\n >\n {item.props.label}\n {colon && item.props.label && ':'}\n </th>\n <td\n className={`${bordered ? 'border border-base-content/10' : ''} px-4 py-2`}\n style={itemContentStyle}\n colSpan={effectiveSpan * 2 - 1}\n >\n {item.props.children}\n </td>\n </React.Fragment>\n )\n })\n\n // Fill remaining columns\n const remainingSpan = columnCount - usedSpan\n if (remainingSpan > 0) {\n cells.push(\n <React.Fragment key=\"empty\">\n <th className={`${bordered ? 'border border-base-content/10' : ''}`} colSpan={remainingSpan * 2} />\n </React.Fragment>\n )\n }\n\n return <tr key={rowIndex}>{cells}</tr>\n })\n }\n\n const containerClasses = [\n 'w-full',\n bordered && 'border-collapse',\n sizeClasses[size],\n className,\n ].filter(Boolean).join(' ')\n\n return (\n <div style={style} {...rest}>\n {title && (\n <div className=\"text-lg font-semibold mb-4\">\n {title}\n </div>\n )}\n <table className={containerClasses}>\n <tbody>\n {renderItems()}\n </tbody>\n </table>\n </div>\n )\n}\n\nexport const Descriptions = Object.assign(DescriptionsRoot, {\n Item: DescriptionsItem,\n})\n\nexport default Descriptions\n"],"names":["DescriptionsItem","_props","DescriptionsRoot","title","bordered","column","size","layout","colon","labelStyle","contentStyle","className","style","children","rest","sizeClasses","items","React","child","columnCount","renderItems","item","index","span","effectiveSpan","itemLabelStyle","jsxs","_","jsx","contentItem","ci","contentSpan","effectiveContentSpan","itemContentStyle2","rows","currentRow","currentSpan","row","rowIndex","usedSpan","cells","cellIndex","itemContentStyle","remainingSpan","containerClasses","Descriptions"],"mappings":"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"}
package/dist/index24.js CHANGED
@@ -1,46 +1,22 @@
1
- import { jsx as a, jsxs as f } from "react/jsx-runtime";
2
- import { forwardRef as m } from "react";
3
- const b = m(
4
- ({ active: o, children: c, className: l = "", ...e }, d) => {
5
- const n = [o && "dock-active", l].filter(Boolean).join(" ");
6
- return /* @__PURE__ */ a("button", { ref: d, className: n || void 0, ...e, children: c });
1
+ import { jsxs as f, jsx as e } from "react/jsx-runtime";
2
+ const m = ({
3
+ left: i,
4
+ right: r,
5
+ aspect: s = "aspect-16/9",
6
+ className: d = ""
7
+ }) => /* @__PURE__ */ f(
8
+ "figure",
9
+ {
10
+ className: `diff ${s} ${d}`.trim(),
11
+ tabIndex: 0,
12
+ children: [
13
+ /* @__PURE__ */ e("div", { className: "diff-item-1", role: "img", tabIndex: 0, children: i }),
14
+ /* @__PURE__ */ e("div", { className: "diff-item-2", role: "img", children: r }),
15
+ /* @__PURE__ */ e("div", { className: "diff-resizer" })
16
+ ]
7
17
  }
8
18
  );
9
- b.displayName = "Dock.Item";
10
- const v = m(
11
- ({ items: o, size: c, activeIndex: l, onChange: e, children: d, className: n = "", ...i }, r) => {
12
- const k = ["dock", c && {
13
- xs: "dock-xs",
14
- sm: "dock-sm",
15
- md: "dock-md",
16
- lg: "dock-lg",
17
- xl: "dock-xl"
18
- }[c], n].filter(Boolean).join(" ");
19
- return o ? /* @__PURE__ */ a("div", { ref: r, className: k, ...i, children: o.map((s, t) => {
20
- const N = l !== void 0 ? l === t : s.active;
21
- return /* @__PURE__ */ f(
22
- "button",
23
- {
24
- className: N ? "dock-active" : void 0,
25
- disabled: s.disabled,
26
- onClick: () => {
27
- s.onClick?.(), e?.(t);
28
- },
29
- children: [
30
- s.icon,
31
- s.label && /* @__PURE__ */ a("span", { className: "dock-label", children: s.label })
32
- ]
33
- },
34
- t
35
- );
36
- }) }) : /* @__PURE__ */ a("div", { ref: r, className: k, ...i, children: d });
37
- }
38
- );
39
- v.displayName = "Dock";
40
- const D = Object.assign(v, {
41
- Item: b
42
- });
43
19
  export {
44
- D as Dock
20
+ m as Diff
45
21
  };
46
22
  //# sourceMappingURL=index24.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index24.js","sources":["../src/components/Dock.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\n\nexport interface DockItemConfig {\n /** Icon element */\n icon: React.ReactNode\n /** Label text */\n label?: string\n /** Whether this item is active */\n active?: boolean\n /** Whether this item is disabled */\n disabled?: boolean\n /** Click handler for this item */\n onClick?: () => void\n}\n\nexport interface DockProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Dock items configuration */\n items?: DockItemConfig[]\n /** Size variant */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Controlled active index */\n activeIndex?: number\n /** Callback when an item is clicked */\n onChange?: (index: number) => void\n /** Children (alternative to items prop) */\n children?: React.ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\nexport interface DockItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Whether this item is active */\n active?: boolean\n /** Children (icon and optional label) */\n children: React.ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\nconst DockItem = forwardRef<HTMLButtonElement, DockItemProps>(\n ({ active, children, className = '', ...props }, ref) => {\n const classes = [active && 'dock-active', className].filter(Boolean).join(' ')\n\n return (\n <button ref={ref} className={classes || undefined} {...props}>\n {children}\n </button>\n )\n }\n)\n\nDockItem.displayName = 'Dock.Item'\n\nconst DockRoot = forwardRef<HTMLDivElement, DockProps>(\n ({ items, size, activeIndex, onChange, children, className = '', ...props }, ref) => {\n const sizeClasses = {\n xs: 'dock-xs',\n sm: 'dock-sm',\n md: 'dock-md',\n lg: 'dock-lg',\n xl: 'dock-xl',\n }\n\n const classes = ['dock', size && sizeClasses[size], className].filter(Boolean).join(' ')\n\n // If items array is provided, render from config\n if (items) {\n return (\n <div ref={ref} className={classes} {...props}>\n {items.map((item, index) => {\n const isActive = activeIndex !== undefined ? activeIndex === index : item.active\n\n return (\n <button\n key={index}\n className={isActive ? 'dock-active' : undefined}\n disabled={item.disabled}\n onClick={() => {\n item.onClick?.()\n onChange?.(index)\n }}\n >\n {item.icon}\n {item.label && <span className=\"dock-label\">{item.label}</span>}\n </button>\n )\n })}\n </div>\n )\n }\n\n // Otherwise render children\n return (\n <div ref={ref} className={classes} {...props}>\n {children}\n </div>\n )\n }\n)\n\nDockRoot.displayName = 'Dock'\n\nexport const Dock = Object.assign(DockRoot, {\n Item: DockItem,\n})\n"],"names":["DockItem","forwardRef","active","children","className","props","ref","classes","jsx","DockRoot","items","size","activeIndex","onChange","item","index","isActive","jsxs","Dock"],"mappings":";;AAuCA,MAAMA,IAAWC;AAAA,EACf,CAAC,EAAE,QAAAC,GAAQ,UAAAC,GAAU,WAAAC,IAAY,IAAI,GAAGC,EAAA,GAASC,MAAQ;AACvD,UAAMC,IAAU,CAACL,KAAU,eAAeE,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE7E,WACE,gBAAAI,EAAC,YAAO,KAAAF,GAAU,WAAWC,KAAW,QAAY,GAAGF,GACpD,UAAAF,GACH;AAAA,EAEJ;AACF;AAEAH,EAAS,cAAc;AAEvB,MAAMS,IAAWR;AAAA,EACf,CAAC,EAAE,OAAAS,GAAO,MAAAC,GAAM,aAAAC,GAAa,UAAAC,GAAU,UAAAV,GAAU,WAAAC,IAAY,IAAI,GAAGC,EAAA,GAASC,MAAQ;AASnF,UAAMC,IAAU,CAAC,QAAQI,KARL;AAAA,MAClB,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,EAGuCA,CAAI,GAAGP,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAGvF,WAAIM,IAEA,gBAAAF,EAAC,OAAA,EAAI,KAAAF,GAAU,WAAWC,GAAU,GAAGF,GACpC,UAAAK,EAAM,IAAI,CAACI,GAAMC,MAAU;AAC1B,YAAMC,IAAWJ,MAAgB,SAAYA,MAAgBG,IAAQD,EAAK;AAE1E,aACE,gBAAAG;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,WAAWD,IAAW,gBAAgB;AAAA,UACtC,UAAUF,EAAK;AAAA,UACf,SAAS,MAAM;AACb,YAAAA,EAAK,UAAA,GACLD,IAAWE,CAAK;AAAA,UAClB;AAAA,UAEC,UAAA;AAAA,YAAAD,EAAK;AAAA,YACLA,EAAK,SAAS,gBAAAN,EAAC,UAAK,WAAU,cAAc,YAAK,MAAA,CAAM;AAAA,UAAA;AAAA,QAAA;AAAA,QATnDO;AAAA,MAAA;AAAA,IAYX,CAAC,EAAA,CACH,sBAMD,OAAA,EAAI,KAAAT,GAAU,WAAWC,GAAU,GAAGF,GACpC,UAAAF,GACH;AAAA,EAEJ;AACF;AAEAM,EAAS,cAAc;AAEhB,MAAMS,IAAO,OAAO,OAAOT,GAAU;AAAA,EAC1C,MAAMT;AACR,CAAC;"}
1
+ {"version":3,"file":"index24.js","sources":["../src/components/Diff.tsx"],"sourcesContent":["import React from 'react'\n\nexport interface DiffProps {\n /** Left side content (revealed when dragging) */\n left: React.ReactNode\n /** Right side content (hidden when dragging) */\n right: React.ReactNode\n /** Aspect ratio class (e.g., \"aspect-16/9\", \"aspect-4/3\", \"aspect-square\") */\n aspect?: string\n /** Additional CSS classes */\n className?: string\n}\n\nexport const Diff: React.FC<DiffProps> = ({\n left,\n right,\n aspect = 'aspect-16/9',\n className = '',\n}) => {\n return (\n <figure\n className={`diff ${aspect} ${className}`.trim()}\n tabIndex={0}\n >\n <div className=\"diff-item-1\" role=\"img\" tabIndex={0}>\n {left}\n </div>\n <div className=\"diff-item-2\" role=\"img\">\n {right}\n </div>\n <div className=\"diff-resizer\" />\n </figure>\n )\n}\n"],"names":["Diff","left","right","aspect","className","jsxs","jsx"],"mappings":";AAaO,MAAMA,IAA4B,CAAC;AAAA,EACxC,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,WAAAC,IAAY;AACd,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAW,QAAQF,CAAM,IAAIC,CAAS,GAAG,KAAA;AAAA,IACzC,UAAU;AAAA,IAEV,UAAA;AAAA,MAAA,gBAAAE,EAAC,SAAI,WAAU,eAAc,MAAK,OAAM,UAAU,GAC/C,UAAAL,EAAA,CACH;AAAA,wBACC,OAAA,EAAI,WAAU,eAAc,MAAK,OAC/B,UAAAC,GACH;AAAA,MACA,gBAAAI,EAAC,OAAA,EAAI,WAAU,eAAA,CAAe;AAAA,IAAA;AAAA,EAAA;AAAA;"}