asterui 0.12.9 → 0.12.11
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.
- package/dist/components/Hero.d.ts +6 -13
- package/dist/components/Space.d.ts +1 -0
- package/dist/components/Splitter.d.ts +2 -0
- package/dist/index.d.ts +0 -2
- package/dist/index.js +63 -65
- package/dist/index.js.map +1 -1
- package/dist/index100.js +11 -44
- package/dist/index100.js.map +1 -1
- package/dist/index101.js +12 -10
- package/dist/index101.js.map +1 -1
- package/dist/index102.js +7 -14
- package/dist/index102.js.map +1 -1
- package/dist/index103.js +12 -7
- package/dist/index103.js.map +1 -1
- package/dist/index104.js +29 -11
- package/dist/index104.js.map +1 -1
- package/dist/index105.js +16 -29
- package/dist/index105.js.map +1 -1
- package/dist/index35.js +13 -26
- package/dist/index35.js.map +1 -1
- package/dist/index74.js +37 -25
- package/dist/index74.js.map +1 -1
- package/dist/index75.js +223 -103
- package/dist/index75.js.map +1 -1
- package/dist/index76.js +21 -51
- package/dist/index76.js.map +1 -1
- package/dist/index77.js +31 -22
- package/dist/index77.js.map +1 -1
- package/dist/index78.js +22 -31
- package/dist/index78.js.map +1 -1
- package/dist/index79.js +327 -20
- package/dist/index79.js.map +1 -1
- package/dist/index80.js +50 -323
- package/dist/index80.js.map +1 -1
- package/dist/index81.js +40 -56
- package/dist/index81.js.map +1 -1
- package/dist/index82.js +23 -40
- package/dist/index82.js.map +1 -1
- package/dist/index83.js +93 -21
- package/dist/index83.js.map +1 -1
- package/dist/index84.js +148 -87
- package/dist/index84.js.map +1 -1
- package/dist/index85.js +152 -147
- package/dist/index85.js.map +1 -1
- package/dist/index86.js +63 -159
- package/dist/index86.js.map +1 -1
- package/dist/index87.js +35 -65
- package/dist/index87.js.map +1 -1
- package/dist/index88.js +234 -35
- package/dist/index88.js.map +1 -1
- package/dist/index89.js +31 -231
- package/dist/index89.js.map +1 -1
- package/dist/index90.js +210 -34
- package/dist/index90.js.map +1 -1
- package/dist/index91.js +198 -195
- package/dist/index91.js.map +1 -1
- package/dist/index92.js +241 -159
- package/dist/index92.js.map +1 -1
- package/dist/index93.js +166 -283
- package/dist/index93.js.map +1 -1
- package/dist/index94.js +253 -173
- package/dist/index94.js.map +1 -1
- package/dist/index95.js +14 -258
- package/dist/index95.js.map +1 -1
- package/dist/index96.js +31 -12
- package/dist/index96.js.map +1 -1
- package/dist/index97.js +5 -32
- package/dist/index97.js.map +1 -1
- package/dist/index98.js +13 -5
- package/dist/index98.js.map +1 -1
- package/dist/index99.js +43 -11
- package/dist/index99.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/Stack.d.ts +0 -10
- package/dist/index106.js +0 -21
- package/dist/index106.js.map +0 -1
package/dist/index95.js
CHANGED
|
@@ -1,261 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
onChange: m,
|
|
14
|
-
onRemove: F,
|
|
15
|
-
customRequest: k,
|
|
16
|
-
showUploadList: B = !0,
|
|
17
|
-
disabled: i = !1,
|
|
18
|
-
children: R,
|
|
19
|
-
className: T = "",
|
|
20
|
-
...W
|
|
21
|
-
}) => {
|
|
22
|
-
const [z, H] = U(I), [E, w] = U(!1), j = x(null), P = x(0), h = x(0), d = L !== void 0 ? L : z, S = () => (P.current += 1, `upload-${Date.now()}-${P.current}`), f = (e) => {
|
|
23
|
-
L === void 0 && H(e);
|
|
24
|
-
}, $ = (e) => {
|
|
25
|
-
const r = {
|
|
26
|
-
uid: S(),
|
|
27
|
-
name: e.name,
|
|
28
|
-
status: "uploading",
|
|
29
|
-
percent: 0,
|
|
30
|
-
originFileObj: e
|
|
31
|
-
}, n = [...d, r];
|
|
32
|
-
f(n), m?.({ file: r, fileList: n });
|
|
33
|
-
const l = (o) => {
|
|
34
|
-
const s = n.map(
|
|
35
|
-
(a) => a.uid === r.uid ? { ...a, percent: o } : a
|
|
36
|
-
);
|
|
37
|
-
f(s), m?.({ file: { ...r, percent: o }, fileList: s });
|
|
38
|
-
}, u = (o) => {
|
|
39
|
-
const s = {
|
|
40
|
-
...r,
|
|
41
|
-
status: "done",
|
|
42
|
-
percent: 100,
|
|
43
|
-
response: o
|
|
44
|
-
}, a = n.map(
|
|
45
|
-
(c) => c.uid === r.uid ? s : c
|
|
46
|
-
);
|
|
47
|
-
f(a), m?.({ file: s, fileList: a });
|
|
48
|
-
}, g = (o) => {
|
|
49
|
-
const s = {
|
|
50
|
-
...r,
|
|
51
|
-
status: "error",
|
|
52
|
-
error: o
|
|
53
|
-
}, a = n.map(
|
|
54
|
-
(c) => c.uid === r.uid ? s : c
|
|
55
|
-
);
|
|
56
|
-
f(a), m?.({ file: s, fileList: a });
|
|
57
|
-
};
|
|
58
|
-
if (k)
|
|
59
|
-
k({
|
|
60
|
-
file: e,
|
|
61
|
-
onProgress: l,
|
|
62
|
-
onSuccess: u,
|
|
63
|
-
onError: g
|
|
64
|
-
});
|
|
65
|
-
else if (N) {
|
|
66
|
-
const o = new FormData();
|
|
67
|
-
o.append("file", e);
|
|
68
|
-
const s = new XMLHttpRequest();
|
|
69
|
-
s.upload.addEventListener("progress", (a) => {
|
|
70
|
-
if (a.lengthComputable) {
|
|
71
|
-
const c = Math.round(a.loaded / a.total * 100);
|
|
72
|
-
l(c);
|
|
73
|
-
}
|
|
74
|
-
}), s.addEventListener("load", () => {
|
|
75
|
-
s.status >= 200 && s.status < 300 ? u(s.response) : g(new Error(`Upload failed with status ${s.status}`));
|
|
76
|
-
}), s.addEventListener("error", () => {
|
|
77
|
-
g(new Error("Upload failed"));
|
|
78
|
-
}), s.open("POST", N), s.send(o);
|
|
79
|
-
} else
|
|
80
|
-
u(null);
|
|
81
|
-
}, C = async (e) => {
|
|
82
|
-
if (i) return;
|
|
83
|
-
const r = Array.from(e);
|
|
84
|
-
if (v && d.length + r.length > v) {
|
|
85
|
-
console.warn(`Cannot upload more than ${v} files`);
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
if (b) {
|
|
89
|
-
const n = r.filter((l) => l.size > b);
|
|
90
|
-
if (n.length > 0) {
|
|
91
|
-
console.warn(
|
|
92
|
-
`Files exceed maximum size of ${b} bytes:`,
|
|
93
|
-
n.map((l) => l.name)
|
|
94
|
-
);
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
if (D) {
|
|
99
|
-
const n = await Promise.all(
|
|
100
|
-
r.map((u) => D(u, r))
|
|
101
|
-
);
|
|
102
|
-
r.filter((u, g) => n[g] !== !1).forEach($);
|
|
103
|
-
} else
|
|
104
|
-
r.forEach($);
|
|
105
|
-
}, X = (e) => {
|
|
106
|
-
e.target.files && C(e.target.files), e.target.value = "";
|
|
107
|
-
}, _ = (e) => {
|
|
108
|
-
e.preventDefault(), e.stopPropagation(), i || (h.current++, w(!0));
|
|
109
|
-
}, q = (e) => {
|
|
110
|
-
e.preventDefault(), e.stopPropagation(), i || (h.current--, h.current === 0 && w(!1));
|
|
111
|
-
}, G = (e) => {
|
|
112
|
-
e.preventDefault(), e.stopPropagation();
|
|
113
|
-
}, J = (e) => {
|
|
114
|
-
e.preventDefault(), e.stopPropagation(), h.current = 0, w(!1), !i && e.dataTransfer.files && C(e.dataTransfer.files);
|
|
115
|
-
}, M = async (e) => {
|
|
116
|
-
if (F && await F(e) === !1)
|
|
117
|
-
return;
|
|
118
|
-
const r = d.filter((n) => n.uid !== e.uid);
|
|
119
|
-
f(r), m?.({ file: e, fileList: r });
|
|
120
|
-
};
|
|
121
|
-
return /* @__PURE__ */ p("div", { className: T, "data-state": E ? "dragging" : "idle", ...W, children: [
|
|
122
|
-
/* @__PURE__ */ t(
|
|
123
|
-
"div",
|
|
124
|
-
{
|
|
125
|
-
onDragEnter: _,
|
|
126
|
-
onDragOver: G,
|
|
127
|
-
onDragLeave: q,
|
|
128
|
-
onDrop: J,
|
|
129
|
-
onClick: () => !i && j.current?.click(),
|
|
130
|
-
className: `
|
|
131
|
-
border-2 border-dashed rounded-lg p-4 cursor-pointer transition-colors
|
|
132
|
-
${E ? "border-primary bg-primary/5" : "border-base-content/20"}
|
|
133
|
-
${i ? "opacity-50 cursor-not-allowed" : "hover:border-primary"}
|
|
134
|
-
`,
|
|
135
|
-
children: R || /* @__PURE__ */ p("div", { className: "flex flex-col items-center gap-2 py-4", children: [
|
|
136
|
-
/* @__PURE__ */ t(
|
|
137
|
-
"svg",
|
|
138
|
-
{
|
|
139
|
-
className: "w-12 h-12 text-base-content/40",
|
|
140
|
-
fill: "none",
|
|
141
|
-
viewBox: "0 0 24 24",
|
|
142
|
-
stroke: "currentColor",
|
|
143
|
-
children: /* @__PURE__ */ t(
|
|
144
|
-
"path",
|
|
145
|
-
{
|
|
146
|
-
strokeLinecap: "round",
|
|
147
|
-
strokeLinejoin: "round",
|
|
148
|
-
strokeWidth: 2,
|
|
149
|
-
d: "M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"
|
|
150
|
-
}
|
|
151
|
-
)
|
|
152
|
-
}
|
|
153
|
-
),
|
|
154
|
-
/* @__PURE__ */ p("div", { className: "text-sm text-center", children: [
|
|
155
|
-
/* @__PURE__ */ t("span", { className: "font-semibold text-primary", children: "Click to upload" }),
|
|
156
|
-
/* @__PURE__ */ t("span", { className: "text-base-content/60", children: " or drag and drop" })
|
|
157
|
-
] })
|
|
158
|
-
] })
|
|
159
|
-
}
|
|
160
|
-
),
|
|
161
|
-
/* @__PURE__ */ t(
|
|
162
|
-
"input",
|
|
163
|
-
{
|
|
164
|
-
ref: j,
|
|
165
|
-
type: "file",
|
|
166
|
-
accept: O,
|
|
167
|
-
multiple: A,
|
|
168
|
-
onChange: X,
|
|
169
|
-
disabled: i,
|
|
170
|
-
className: "hidden"
|
|
171
|
-
}
|
|
172
|
-
),
|
|
173
|
-
!B || d.length === 0 ? null : y === "picture-card" ? /* @__PURE__ */ t("div", { className: "flex flex-wrap gap-2 mt-2", children: d.map((e) => /* @__PURE__ */ p(
|
|
174
|
-
"div",
|
|
175
|
-
{
|
|
176
|
-
className: "relative w-24 h-24 border border-base-content/20 rounded-lg overflow-hidden",
|
|
177
|
-
children: [
|
|
178
|
-
e.status === "uploading" && /* @__PURE__ */ t("div", { className: "absolute inset-0 bg-base-300/80 flex items-center justify-center", children: /* @__PURE__ */ t("span", { className: "loading loading-spinner loading-sm" }) }),
|
|
179
|
-
e.status === "done" && e.url && /* @__PURE__ */ t(
|
|
180
|
-
"img",
|
|
181
|
-
{
|
|
182
|
-
src: e.url,
|
|
183
|
-
alt: e.name,
|
|
184
|
-
className: "w-full h-full object-cover"
|
|
185
|
-
}
|
|
186
|
-
),
|
|
187
|
-
e.status === "error" && /* @__PURE__ */ t("div", { className: "absolute inset-0 bg-error/10 flex items-center justify-center", children: /* @__PURE__ */ t(
|
|
188
|
-
"svg",
|
|
189
|
-
{
|
|
190
|
-
className: "w-8 h-8 text-error",
|
|
191
|
-
fill: "none",
|
|
192
|
-
viewBox: "0 0 24 24",
|
|
193
|
-
stroke: "currentColor",
|
|
194
|
-
children: /* @__PURE__ */ t(
|
|
195
|
-
"path",
|
|
196
|
-
{
|
|
197
|
-
strokeLinecap: "round",
|
|
198
|
-
strokeLinejoin: "round",
|
|
199
|
-
strokeWidth: 2,
|
|
200
|
-
d: "M6 18L18 6M6 6l12 12"
|
|
201
|
-
}
|
|
202
|
-
)
|
|
203
|
-
}
|
|
204
|
-
) }),
|
|
205
|
-
/* @__PURE__ */ t(
|
|
206
|
-
"button",
|
|
207
|
-
{
|
|
208
|
-
onClick: () => M(e),
|
|
209
|
-
className: "absolute top-1 right-1 btn btn-xs btn-circle btn-error",
|
|
210
|
-
type: "button",
|
|
211
|
-
children: "✕"
|
|
212
|
-
}
|
|
213
|
-
)
|
|
214
|
-
]
|
|
215
|
-
},
|
|
216
|
-
e.uid
|
|
217
|
-
)) }) : /* @__PURE__ */ t("div", { className: "mt-2 space-y-2", children: d.map((e) => /* @__PURE__ */ p(
|
|
218
|
-
"div",
|
|
219
|
-
{
|
|
220
|
-
className: "flex items-center gap-2 p-2 border border-base-content/10 rounded-lg",
|
|
221
|
-
children: [
|
|
222
|
-
y === "picture" && e.url && /* @__PURE__ */ t(
|
|
223
|
-
"img",
|
|
224
|
-
{
|
|
225
|
-
src: e.url,
|
|
226
|
-
alt: e.name,
|
|
227
|
-
className: "w-12 h-12 object-cover rounded"
|
|
228
|
-
}
|
|
229
|
-
),
|
|
230
|
-
/* @__PURE__ */ p("div", { className: "flex-1 min-w-0", children: [
|
|
231
|
-
/* @__PURE__ */ t("div", { className: "truncate text-sm", children: e.name }),
|
|
232
|
-
e.status === "uploading" && e.percent !== void 0 && /* @__PURE__ */ t("div", { className: "w-full bg-base-200 rounded-full h-1.5 mt-1", children: /* @__PURE__ */ t(
|
|
233
|
-
"div",
|
|
234
|
-
{
|
|
235
|
-
className: "bg-primary h-1.5 rounded-full transition-all",
|
|
236
|
-
style: { width: `${e.percent}%` }
|
|
237
|
-
}
|
|
238
|
-
) }),
|
|
239
|
-
e.status === "error" && /* @__PURE__ */ t("div", { className: "text-xs text-error mt-1", children: "Upload failed" })
|
|
240
|
-
] }),
|
|
241
|
-
/* @__PURE__ */ t(
|
|
242
|
-
"button",
|
|
243
|
-
{
|
|
244
|
-
onClick: () => M(e),
|
|
245
|
-
className: "btn btn-xs btn-ghost btn-circle",
|
|
246
|
-
type: "button",
|
|
247
|
-
children: "✕"
|
|
248
|
-
}
|
|
249
|
-
)
|
|
250
|
-
]
|
|
251
|
-
},
|
|
252
|
-
e.uid
|
|
253
|
-
)) })
|
|
254
|
-
] });
|
|
255
|
-
};
|
|
256
|
-
K.displayName = "Upload";
|
|
1
|
+
import { jsx as v, Fragment as A } from "react/jsx-runtime";
|
|
2
|
+
import { useBreakpoint as m } from "./index96.js";
|
|
3
|
+
function h({ children: f, above: o, below: r, at: s, between: e }) {
|
|
4
|
+
const { isAbove: d, isBelow: n, isAt: l, isBetween: u } = m();
|
|
5
|
+
let i = !1;
|
|
6
|
+
return o !== void 0 ? i = d(o) : r !== void 0 ? i = n(r) : s !== void 0 ? Array.isArray(s) ? i = s.some((t) => l(t)) : i = l(s) : e !== void 0 ? i = u(e[0], e[1]) : i = !0, i ? /* @__PURE__ */ v(A, { children: f }) : null;
|
|
7
|
+
}
|
|
8
|
+
function p({ children: f, above: o, below: r, at: s, between: e }) {
|
|
9
|
+
const { isAbove: d, isBelow: n, isAt: l, isBetween: u } = m();
|
|
10
|
+
let i = !1;
|
|
11
|
+
return o !== void 0 ? i = d(o) : r !== void 0 ? i = n(r) : s !== void 0 ? Array.isArray(s) ? i = s.some((t) => l(t)) : i = l(s) : e !== void 0 && (i = u(e[0], e[1])), i ? null : /* @__PURE__ */ v(A, { children: f });
|
|
12
|
+
}
|
|
257
13
|
export {
|
|
258
|
-
|
|
259
|
-
|
|
14
|
+
p as Hide,
|
|
15
|
+
h as Show
|
|
260
16
|
};
|
|
261
17
|
//# sourceMappingURL=index95.js.map
|
package/dist/index95.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index95.js","sources":["../src/components/Upload.tsx"],"sourcesContent":["import React, { useState, useRef, DragEvent, ChangeEvent } from 'react'\n\nexport interface UploadFile {\n uid: string\n name: string\n status: 'uploading' | 'done' | 'error'\n percent?: number\n url?: string\n response?: any\n error?: any\n originFileObj?: File\n}\n\nexport interface UploadProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n action?: string\n accept?: string\n multiple?: boolean\n maxCount?: number\n maxSize?: number // in bytes\n listType?: 'text' | 'picture' | 'picture-card'\n fileList?: UploadFile[]\n defaultFileList?: UploadFile[]\n beforeUpload?: (file: File, fileList: File[]) => boolean | Promise<boolean>\n onChange?: (info: { file: UploadFile; fileList: UploadFile[] }) => void\n onRemove?: (file: UploadFile) => void | boolean | Promise<void | boolean>\n customRequest?: (options: {\n file: File\n onProgress: (percent: number) => void\n onSuccess: (response: any) => void\n onError: (error: any) => void\n }) => void\n showUploadList?: boolean\n disabled?: boolean\n children?: React.ReactNode\n}\n\nexport const Upload: React.FC<UploadProps> = ({\n action,\n accept,\n multiple = false,\n maxCount,\n maxSize,\n listType = 'text',\n fileList: controlledFileList,\n defaultFileList = [],\n beforeUpload,\n onChange,\n onRemove,\n customRequest,\n showUploadList = true,\n disabled = false,\n children,\n className = '',\n ...rest\n}) => {\n const [internalFileList, setInternalFileList] = useState<UploadFile[]>(defaultFileList)\n const [isDragging, setIsDragging] = useState(false)\n const fileInputRef = useRef<HTMLInputElement>(null)\n const uidCounter = useRef(0)\n const dragCounter = useRef(0)\n\n const fileList = controlledFileList !== undefined ? controlledFileList : internalFileList\n\n const generateUid = () => {\n uidCounter.current += 1\n return `upload-${Date.now()}-${uidCounter.current}`\n }\n\n const updateFileList = (newFileList: UploadFile[]) => {\n if (controlledFileList === undefined) {\n setInternalFileList(newFileList)\n }\n }\n\n const uploadFile = (file: File) => {\n const uploadFile: UploadFile = {\n uid: generateUid(),\n name: file.name,\n status: 'uploading',\n percent: 0,\n originFileObj: file,\n }\n\n const newFileList = [...fileList, uploadFile]\n updateFileList(newFileList)\n onChange?.({ file: uploadFile, fileList: newFileList })\n\n const updateProgress = (percent: number) => {\n const updatedList = newFileList.map((f) =>\n f.uid === uploadFile.uid ? { ...f, percent } : f\n )\n updateFileList(updatedList)\n onChange?.({ file: { ...uploadFile, percent }, fileList: updatedList })\n }\n\n const onSuccess = (response: any) => {\n const successFile = {\n ...uploadFile,\n status: 'done' as const,\n percent: 100,\n response,\n }\n const updatedList = newFileList.map((f) =>\n f.uid === uploadFile.uid ? successFile : f\n )\n updateFileList(updatedList)\n onChange?.({ file: successFile, fileList: updatedList })\n }\n\n const onError = (error: any) => {\n const errorFile = {\n ...uploadFile,\n status: 'error' as const,\n error,\n }\n const updatedList = newFileList.map((f) =>\n f.uid === uploadFile.uid ? errorFile : f\n )\n updateFileList(updatedList)\n onChange?.({ file: errorFile, fileList: updatedList })\n }\n\n if (customRequest) {\n customRequest({\n file,\n onProgress: updateProgress,\n onSuccess,\n onError,\n })\n } else if (action) {\n const formData = new FormData()\n formData.append('file', file)\n\n const xhr = new XMLHttpRequest()\n\n xhr.upload.addEventListener('progress', (e) => {\n if (e.lengthComputable) {\n const percent = Math.round((e.loaded / e.total) * 100)\n updateProgress(percent)\n }\n })\n\n xhr.addEventListener('load', () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n onSuccess(xhr.response)\n } else {\n onError(new Error(`Upload failed with status ${xhr.status}`))\n }\n })\n\n xhr.addEventListener('error', () => {\n onError(new Error('Upload failed'))\n })\n\n xhr.open('POST', action)\n xhr.send(formData)\n } else {\n // No upload action, just mark as done\n onSuccess(null)\n }\n }\n\n const handleFiles = async (files: FileList | File[]) => {\n if (disabled) return\n\n const fileArray = Array.from(files)\n\n // Check maxCount\n if (maxCount && fileList.length + fileArray.length > maxCount) {\n console.warn(`Cannot upload more than ${maxCount} files`)\n return\n }\n\n // Check maxSize\n if (maxSize) {\n const oversizedFiles = fileArray.filter((file) => file.size > maxSize)\n if (oversizedFiles.length > 0) {\n console.warn(\n `Files exceed maximum size of ${maxSize} bytes:`,\n oversizedFiles.map((f) => f.name)\n )\n return\n }\n }\n\n // beforeUpload hook\n if (beforeUpload) {\n const results = await Promise.all(\n fileArray.map((file) => beforeUpload(file, fileArray))\n )\n const filteredFiles = fileArray.filter((_, index) => results[index] !== false)\n filteredFiles.forEach(uploadFile)\n } else {\n fileArray.forEach(uploadFile)\n }\n }\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.files) {\n handleFiles(e.target.files)\n }\n // Reset input value to allow uploading the same file again\n e.target.value = ''\n }\n\n const handleDragEnter = (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (!disabled) {\n dragCounter.current++\n setIsDragging(true)\n }\n }\n\n const handleDragLeave = (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (!disabled) {\n dragCounter.current--\n if (dragCounter.current === 0) {\n setIsDragging(false)\n }\n }\n }\n\n const handleDragOver = (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }\n\n const handleDrop = (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n dragCounter.current = 0\n setIsDragging(false)\n\n if (disabled) return\n\n if (e.dataTransfer.files) {\n handleFiles(e.dataTransfer.files)\n }\n }\n\n const handleRemove = async (file: UploadFile) => {\n if (onRemove) {\n const result = await onRemove(file)\n if (result === false) return\n }\n\n const newFileList = fileList.filter((f) => f.uid !== file.uid)\n updateFileList(newFileList)\n onChange?.({ file, fileList: newFileList })\n }\n\n const renderFileList = () => {\n if (!showUploadList || fileList.length === 0) return null\n\n if (listType === 'picture-card') {\n return (\n <div className=\"flex flex-wrap gap-2 mt-2\">\n {fileList.map((file) => (\n <div\n key={file.uid}\n className=\"relative w-24 h-24 border border-base-content/20 rounded-lg overflow-hidden\"\n >\n {file.status === 'uploading' && (\n <div className=\"absolute inset-0 bg-base-300/80 flex items-center justify-center\">\n <span className=\"loading loading-spinner loading-sm\"></span>\n </div>\n )}\n {file.status === 'done' && file.url && (\n <img\n src={file.url}\n alt={file.name}\n className=\"w-full h-full object-cover\"\n />\n )}\n {file.status === 'error' && (\n <div className=\"absolute inset-0 bg-error/10 flex items-center justify-center\">\n <svg\n className=\"w-8 h-8 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=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </div>\n )}\n <button\n onClick={() => handleRemove(file)}\n className=\"absolute top-1 right-1 btn btn-xs btn-circle btn-error\"\n type=\"button\"\n >\n ✕\n </button>\n </div>\n ))}\n </div>\n )\n }\n\n return (\n <div className=\"mt-2 space-y-2\">\n {fileList.map((file) => (\n <div\n key={file.uid}\n className=\"flex items-center gap-2 p-2 border border-base-content/10 rounded-lg\"\n >\n {listType === 'picture' && file.url && (\n <img\n src={file.url}\n alt={file.name}\n className=\"w-12 h-12 object-cover rounded\"\n />\n )}\n <div className=\"flex-1 min-w-0\">\n <div className=\"truncate text-sm\">{file.name}</div>\n {file.status === 'uploading' && file.percent !== undefined && (\n <div className=\"w-full bg-base-200 rounded-full h-1.5 mt-1\">\n <div\n className=\"bg-primary h-1.5 rounded-full transition-all\"\n style={{ width: `${file.percent}%` }}\n />\n </div>\n )}\n {file.status === 'error' && (\n <div className=\"text-xs text-error mt-1\">Upload failed</div>\n )}\n </div>\n <button\n onClick={() => handleRemove(file)}\n className=\"btn btn-xs btn-ghost btn-circle\"\n type=\"button\"\n >\n ✕\n </button>\n </div>\n ))}\n </div>\n )\n }\n\n return (\n <div className={className} data-state={isDragging ? 'dragging' : 'idle'} {...rest}>\n <div\n onDragEnter={handleDragEnter}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n onClick={() => !disabled && fileInputRef.current?.click()}\n className={`\n border-2 border-dashed rounded-lg p-4 cursor-pointer transition-colors\n ${isDragging ? 'border-primary bg-primary/5' : 'border-base-content/20'}\n ${disabled ? 'opacity-50 cursor-not-allowed' : 'hover:border-primary'}\n `}\n >\n {children || (\n <div className=\"flex flex-col items-center gap-2 py-4\">\n <svg\n className=\"w-12 h-12 text-base-content/40\"\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=\"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12\"\n />\n </svg>\n <div className=\"text-sm text-center\">\n <span className=\"font-semibold text-primary\">Click to upload</span>\n <span className=\"text-base-content/60\"> or drag and drop</span>\n </div>\n </div>\n )}\n </div>\n\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={handleChange}\n disabled={disabled}\n className=\"hidden\"\n />\n\n {renderFileList()}\n </div>\n )\n}\n\nUpload.displayName = 'Upload'\n\nexport default Upload\n"],"names":["Upload","action","accept","multiple","maxCount","maxSize","listType","controlledFileList","defaultFileList","beforeUpload","onChange","onRemove","customRequest","showUploadList","disabled","children","className","rest","internalFileList","setInternalFileList","useState","isDragging","setIsDragging","fileInputRef","useRef","uidCounter","dragCounter","fileList","generateUid","updateFileList","newFileList","uploadFile","file","updateProgress","percent","updatedList","f","onSuccess","response","successFile","onError","error","errorFile","formData","xhr","e","handleFiles","files","fileArray","oversizedFiles","results","_","index","handleChange","handleDragEnter","handleDragLeave","handleDragOver","handleDrop","handleRemove","jsxs","jsx"],"mappings":";;AAoCO,MAAMA,IAAgC,CAAC;AAAA,EAC5C,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,UAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,UAAUC;AAAA,EACV,iBAAAC,IAAkB,CAAA;AAAA,EAClB,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC,IAAiB;AAAA,EACjB,UAAAC,IAAW;AAAA,EACX,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,MAAM;AACJ,QAAM,CAACC,GAAkBC,CAAmB,IAAIC,EAAuBZ,CAAe,GAChF,CAACa,GAAYC,CAAa,IAAIF,EAAS,EAAK,GAC5CG,IAAeC,EAAyB,IAAI,GAC5CC,IAAaD,EAAO,CAAC,GACrBE,IAAcF,EAAO,CAAC,GAEtBG,IAAWpB,MAAuB,SAAYA,IAAqBW,GAEnEU,IAAc,OAClBH,EAAW,WAAW,GACf,UAAU,KAAK,IAAA,CAAK,IAAIA,EAAW,OAAO,KAG7CI,IAAiB,CAACC,MAA8B;AACpD,IAAIvB,MAAuB,UACzBY,EAAoBW,CAAW;AAAA,EAEnC,GAEMC,IAAa,CAACC,MAAe;AACjC,UAAMD,IAAyB;AAAA,MAC7B,KAAKH,EAAA;AAAA,MACL,MAAMI,EAAK;AAAA,MACX,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,eAAeA;AAAA,IAAA,GAGXF,IAAc,CAAC,GAAGH,GAAUI,CAAU;AAC5C,IAAAF,EAAeC,CAAW,GAC1BpB,IAAW,EAAE,MAAMqB,GAAY,UAAUD,GAAa;AAEtD,UAAMG,IAAiB,CAACC,MAAoB;AAC1C,YAAMC,IAAcL,EAAY;AAAA,QAAI,CAACM,MACnCA,EAAE,QAAQL,EAAW,MAAM,EAAE,GAAGK,GAAG,SAAAF,MAAYE;AAAA,MAAA;AAEjD,MAAAP,EAAeM,CAAW,GAC1BzB,IAAW,EAAE,MAAM,EAAE,GAAGqB,GAAY,SAAAG,KAAW,UAAUC,GAAa;AAAA,IACxE,GAEME,IAAY,CAACC,MAAkB;AACnC,YAAMC,IAAc;AAAA,QAClB,GAAGR;AAAAA,QACH,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,UAAAO;AAAA,MAAA,GAEIH,IAAcL,EAAY;AAAA,QAAI,CAACM,MACnCA,EAAE,QAAQL,EAAW,MAAMQ,IAAcH;AAAA,MAAA;AAE3C,MAAAP,EAAeM,CAAW,GAC1BzB,IAAW,EAAE,MAAM6B,GAAa,UAAUJ,GAAa;AAAA,IACzD,GAEMK,IAAU,CAACC,MAAe;AAC9B,YAAMC,IAAY;AAAA,QAChB,GAAGX;AAAAA,QACH,QAAQ;AAAA,QACR,OAAAU;AAAA,MAAA,GAEIN,IAAcL,EAAY;AAAA,QAAI,CAACM,MACnCA,EAAE,QAAQL,EAAW,MAAMW,IAAYN;AAAA,MAAA;AAEzC,MAAAP,EAAeM,CAAW,GAC1BzB,IAAW,EAAE,MAAMgC,GAAW,UAAUP,GAAa;AAAA,IACvD;AAEA,QAAIvB;AACF,MAAAA,EAAc;AAAA,QACZ,MAAAoB;AAAA,QACA,YAAYC;AAAA,QACZ,WAAAI;AAAA,QACA,SAAAG;AAAA,MAAA,CACD;AAAA,aACQvC,GAAQ;AACjB,YAAM0C,IAAW,IAAI,SAAA;AACrB,MAAAA,EAAS,OAAO,QAAQX,CAAI;AAE5B,YAAMY,IAAM,IAAI,eAAA;AAEhB,MAAAA,EAAI,OAAO,iBAAiB,YAAY,CAACC,MAAM;AAC7C,YAAIA,EAAE,kBAAkB;AACtB,gBAAMX,IAAU,KAAK,MAAOW,EAAE,SAASA,EAAE,QAAS,GAAG;AACrD,UAAAZ,EAAeC,CAAO;AAAA,QACxB;AAAA,MACF,CAAC,GAEDU,EAAI,iBAAiB,QAAQ,MAAM;AACjC,QAAIA,EAAI,UAAU,OAAOA,EAAI,SAAS,MACpCP,EAAUO,EAAI,QAAQ,IAEtBJ,EAAQ,IAAI,MAAM,6BAA6BI,EAAI,MAAM,EAAE,CAAC;AAAA,MAEhE,CAAC,GAEDA,EAAI,iBAAiB,SAAS,MAAM;AAClC,QAAAJ,EAAQ,IAAI,MAAM,eAAe,CAAC;AAAA,MACpC,CAAC,GAEDI,EAAI,KAAK,QAAQ3C,CAAM,GACvB2C,EAAI,KAAKD,CAAQ;AAAA,IACnB;AAEE,MAAAN,EAAU,IAAI;AAAA,EAElB,GAEMS,IAAc,OAAOC,MAA6B;AACtD,QAAIjC,EAAU;AAEd,UAAMkC,IAAY,MAAM,KAAKD,CAAK;AAGlC,QAAI3C,KAAYuB,EAAS,SAASqB,EAAU,SAAS5C,GAAU;AAC7D,cAAQ,KAAK,2BAA2BA,CAAQ,QAAQ;AACxD;AAAA,IACF;AAGA,QAAIC,GAAS;AACX,YAAM4C,IAAiBD,EAAU,OAAO,CAAChB,MAASA,EAAK,OAAO3B,CAAO;AACrE,UAAI4C,EAAe,SAAS,GAAG;AAC7B,gBAAQ;AAAA,UACN,gCAAgC5C,CAAO;AAAA,UACvC4C,EAAe,IAAI,CAACb,MAAMA,EAAE,IAAI;AAAA,QAAA;AAElC;AAAA,MACF;AAAA,IACF;AAGA,QAAI3B,GAAc;AAChB,YAAMyC,IAAU,MAAM,QAAQ;AAAA,QAC5BF,EAAU,IAAI,CAAChB,MAASvB,EAAauB,GAAMgB,CAAS,CAAC;AAAA,MAAA;AAGvD,MADsBA,EAAU,OAAO,CAACG,GAAGC,MAAUF,EAAQE,CAAK,MAAM,EAAK,EAC/D,QAAQrB,CAAU;AAAA,IAClC;AACE,MAAAiB,EAAU,QAAQjB,CAAU;AAAA,EAEhC,GAEMsB,IAAe,CAAC,MAAqC;AACzD,IAAI,EAAE,OAAO,SACXP,EAAY,EAAE,OAAO,KAAK,GAG5B,EAAE,OAAO,QAAQ;AAAA,EACnB,GAEMQ,IAAkB,CAAC,MAAiB;AACxC,MAAE,eAAA,GACF,EAAE,gBAAA,GACGxC,MACHY,EAAY,WACZJ,EAAc,EAAI;AAAA,EAEtB,GAEMiC,IAAkB,CAAC,MAAiB;AACxC,MAAE,eAAA,GACF,EAAE,gBAAA,GACGzC,MACHY,EAAY,WACRA,EAAY,YAAY,KAC1BJ,EAAc,EAAK;AAAA,EAGzB,GAEMkC,IAAiB,CAAC,MAAiB;AACvC,MAAE,eAAA,GACF,EAAE,gBAAA;AAAA,EACJ,GAEMC,IAAa,CAAC,MAAiB;AAMnC,IALA,EAAE,eAAA,GACF,EAAE,gBAAA,GACF/B,EAAY,UAAU,GACtBJ,EAAc,EAAK,GAEf,CAAAR,KAEA,EAAE,aAAa,SACjBgC,EAAY,EAAE,aAAa,KAAK;AAAA,EAEpC,GAEMY,IAAe,OAAO1B,MAAqB;AAC/C,QAAIrB,KACa,MAAMA,EAASqB,CAAI,MACnB;AAAO;AAGxB,UAAMF,IAAcH,EAAS,OAAO,CAACS,MAAMA,EAAE,QAAQJ,EAAK,GAAG;AAC7D,IAAAH,EAAeC,CAAW,GAC1BpB,IAAW,EAAE,MAAAsB,GAAM,UAAUF,EAAA,CAAa;AAAA,EAC5C;AAgGA,SACE,gBAAA6B,EAAC,SAAI,WAAA3C,GAAsB,cAAYK,IAAa,aAAa,QAAS,GAAGJ,GAC3E,UAAA;AAAA,IAAA,gBAAA2C;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,aAAaN;AAAA,QACb,YAAYE;AAAA,QACZ,aAAaD;AAAA,QACb,QAAQE;AAAA,QACR,SAAS,MAAM,CAAC3C,KAAYS,EAAa,SAAS,MAAA;AAAA,QAClD,WAAW;AAAA;AAAA,YAEPF,IAAa,gCAAgC,wBAAwB;AAAA,YACrEP,IAAW,kCAAkC,sBAAsB;AAAA;AAAA,QAGtE,UAAAC,KACC,gBAAA4C,EAAC,OAAA,EAAI,WAAU,yCACb,UAAA;AAAA,UAAA,gBAAAC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,QAAO;AAAA,cAEP,UAAA,gBAAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,eAAc;AAAA,kBACd,gBAAe;AAAA,kBACf,aAAa;AAAA,kBACb,GAAE;AAAA,gBAAA;AAAA,cAAA;AAAA,YACJ;AAAA,UAAA;AAAA,UAEF,gBAAAD,EAAC,OAAA,EAAI,WAAU,uBACb,UAAA;AAAA,YAAA,gBAAAC,EAAC,QAAA,EAAK,WAAU,8BAA6B,UAAA,mBAAe;AAAA,YAC5D,gBAAAA,EAAC,QAAA,EAAK,WAAU,wBAAuB,UAAA,oBAAA,CAAiB;AAAA,UAAA,EAAA,CAC1D;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,IAIJ,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKrC;AAAA,QACL,MAAK;AAAA,QACL,QAAArB;AAAA,QACA,UAAAC;AAAA,QACA,UAAUkD;AAAA,QACV,UAAAvC;AAAA,QACA,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAzIV,CAACD,KAAkBc,EAAS,WAAW,IAAU,OAEjDrB,MAAa,mCAEZ,OAAA,EAAI,WAAU,6BACZ,UAAAqB,EAAS,IAAI,CAACK,MACb,gBAAA2B;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,WAAU;AAAA,QAET,UAAA;AAAA,UAAA3B,EAAK,WAAW,eACf,gBAAA4B,EAAC,OAAA,EAAI,WAAU,oEACb,UAAA,gBAAAA,EAAC,QAAA,EAAK,WAAU,qCAAA,CAAqC,EAAA,CACvD;AAAA,UAED5B,EAAK,WAAW,UAAUA,EAAK,OAC9B,gBAAA4B;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAK5B,EAAK;AAAA,cACV,KAAKA,EAAK;AAAA,cACV,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAGbA,EAAK,WAAW,WACf,gBAAA4B,EAAC,OAAA,EAAI,WAAU,iEACb,UAAA,gBAAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,QAAO;AAAA,cAEP,UAAA,gBAAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,eAAc;AAAA,kBACd,gBAAe;AAAA,kBACf,aAAa;AAAA,kBACb,GAAE;AAAA,gBAAA;AAAA,cAAA;AAAA,YACJ;AAAA,UAAA,GAEJ;AAAA,UAEF,gBAAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAS,MAAMF,EAAa1B,CAAI;AAAA,cAChC,WAAU;AAAA,cACV,MAAK;AAAA,cACN,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAED;AAAA,MAAA;AAAA,MAtCKA,EAAK;AAAA,IAAA,CAwCb,GACH,sBAKD,OAAA,EAAI,WAAU,kBACZ,UAAAL,EAAS,IAAI,CAACK,MACb,gBAAA2B;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,WAAU;AAAA,QAET,UAAA;AAAA,UAAArD,MAAa,aAAa0B,EAAK,OAC9B,gBAAA4B;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAK5B,EAAK;AAAA,cACV,KAAKA,EAAK;AAAA,cACV,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAGd,gBAAA2B,EAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,YAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,oBAAoB,UAAA5B,EAAK,MAAK;AAAA,YAC5CA,EAAK,WAAW,eAAeA,EAAK,YAAY,UAC/C,gBAAA4B,EAAC,OAAA,EAAI,WAAU,8CACb,UAAA,gBAAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,OAAO,EAAE,OAAO,GAAG5B,EAAK,OAAO,IAAA;AAAA,cAAI;AAAA,YAAA,GAEvC;AAAA,YAEDA,EAAK,WAAW,6BACd,OAAA,EAAI,WAAU,2BAA0B,UAAA,gBAAA,CAAa;AAAA,UAAA,GAE1D;AAAA,UACA,gBAAA4B;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAS,MAAMF,EAAa1B,CAAI;AAAA,cAChC,WAAU;AAAA,cACV,MAAK;AAAA,cACN,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAED;AAAA,MAAA;AAAA,MA9BKA,EAAK;AAAA,IAAA,CAgCb,GACH;AAAA,EAmDgB,GAClB;AAEJ;AAEAhC,EAAO,cAAc;"}
|
|
1
|
+
{"version":3,"file":"index95.js","sources":["../src/components/Responsive.tsx"],"sourcesContent":["import React, { ReactNode } from 'react'\nimport { useBreakpoint, Breakpoint } from '../hooks/useBreakpoint'\n\nexport interface ShowProps {\n children: ReactNode\n above?: Breakpoint\n below?: Breakpoint\n at?: Breakpoint | Breakpoint[]\n between?: [Breakpoint, Breakpoint]\n}\n\nexport function Show({ children, above, below, at, between }: ShowProps): React.ReactElement | null {\n const { isAbove, isBelow, isAt, isBetween } = useBreakpoint()\n\n let shouldShow = false\n\n if (above !== undefined) {\n shouldShow = isAbove(above)\n } else if (below !== undefined) {\n shouldShow = isBelow(below)\n } else if (at !== undefined) {\n if (Array.isArray(at)) {\n shouldShow = at.some((bp) => isAt(bp))\n } else {\n shouldShow = isAt(at)\n }\n } else if (between !== undefined) {\n shouldShow = isBetween(between[0], between[1])\n } else {\n shouldShow = true\n }\n\n return shouldShow ? <>{children}</> : null\n}\n\nexport interface HideProps {\n children: ReactNode\n above?: Breakpoint\n below?: Breakpoint\n at?: Breakpoint | Breakpoint[]\n between?: [Breakpoint, Breakpoint]\n}\n\nexport function Hide({ children, above, below, at, between }: HideProps): React.ReactElement | null {\n const { isAbove, isBelow, isAt, isBetween } = useBreakpoint()\n\n let shouldHide = false\n\n if (above !== undefined) {\n shouldHide = isAbove(above)\n } else if (below !== undefined) {\n shouldHide = isBelow(below)\n } else if (at !== undefined) {\n if (Array.isArray(at)) {\n shouldHide = at.some((bp) => isAt(bp))\n } else {\n shouldHide = isAt(at)\n }\n } else if (between !== undefined) {\n shouldHide = isBetween(between[0], between[1])\n }\n\n return shouldHide ? null : <>{children}</>\n}\n"],"names":["Show","children","above","below","at","between","isAbove","isBelow","isAt","isBetween","useBreakpoint","shouldShow","bp","jsx","Fragment","Hide","shouldHide"],"mappings":";;AAWO,SAASA,EAAK,EAAE,UAAAC,GAAU,OAAAC,GAAO,OAAAC,GAAO,IAAAC,GAAI,SAAAC,KAAiD;AAClG,QAAM,EAAE,SAAAC,GAAS,SAAAC,GAAS,MAAAC,GAAM,WAAAC,EAAA,IAAcC,EAAA;AAE9C,MAAIC,IAAa;AAEjB,SAAIT,MAAU,SACZS,IAAaL,EAAQJ,CAAK,IACjBC,MAAU,SACnBQ,IAAaJ,EAAQJ,CAAK,IACjBC,MAAO,SACZ,MAAM,QAAQA,CAAE,IAClBO,IAAaP,EAAG,KAAK,CAACQ,MAAOJ,EAAKI,CAAE,CAAC,IAErCD,IAAaH,EAAKJ,CAAE,IAEbC,MAAY,SACrBM,IAAaF,EAAUJ,EAAQ,CAAC,GAAGA,EAAQ,CAAC,CAAC,IAE7CM,IAAa,IAGRA,IAAa,gBAAAE,EAAAC,GAAA,EAAG,UAAAb,EAAA,CAAS,IAAM;AACxC;AAUO,SAASc,EAAK,EAAE,UAAAd,GAAU,OAAAC,GAAO,OAAAC,GAAO,IAAAC,GAAI,SAAAC,KAAiD;AAClG,QAAM,EAAE,SAAAC,GAAS,SAAAC,GAAS,MAAAC,GAAM,WAAAC,EAAA,IAAcC,EAAA;AAE9C,MAAIM,IAAa;AAEjB,SAAId,MAAU,SACZc,IAAaV,EAAQJ,CAAK,IACjBC,MAAU,SACnBa,IAAaT,EAAQJ,CAAK,IACjBC,MAAO,SACZ,MAAM,QAAQA,CAAE,IAClBY,IAAaZ,EAAG,KAAK,CAACQ,MAAOJ,EAAKI,CAAE,CAAC,IAErCI,IAAaR,EAAKJ,CAAE,IAEbC,MAAY,WACrBW,IAAaP,EAAUJ,EAAQ,CAAC,GAAGA,EAAQ,CAAC,CAAC,IAGxCW,IAAa,OAAO,gBAAAH,EAAAC,GAAA,EAAG,UAAAb,EAAA,CAAS;AACzC;"}
|
package/dist/index96.js
CHANGED
|
@@ -1,17 +1,36 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { useState as u, useEffect as f } from "react";
|
|
2
|
+
const t = {
|
|
3
|
+
sm: 640,
|
|
4
|
+
md: 768,
|
|
5
|
+
lg: 1024,
|
|
6
|
+
xl: 1280,
|
|
7
|
+
"2xl": 1536
|
|
8
|
+
}, s = ["xs", "sm", "md", "lg", "xl", "2xl"];
|
|
9
|
+
function l(e) {
|
|
10
|
+
return e >= t["2xl"] ? "2xl" : e >= t.xl ? "xl" : e >= t.lg ? "lg" : e >= t.md ? "md" : e >= t.sm ? "sm" : "xs";
|
|
7
11
|
}
|
|
8
|
-
function
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
+
function i(e, o) {
|
|
13
|
+
return s.indexOf(e) - s.indexOf(o);
|
|
14
|
+
}
|
|
15
|
+
function m() {
|
|
16
|
+
const [e, o] = u(
|
|
17
|
+
() => typeof window < "u" ? window.innerWidth : 1024
|
|
18
|
+
);
|
|
19
|
+
f(() => {
|
|
20
|
+
const n = () => o(window.innerWidth);
|
|
21
|
+
return window.addEventListener("resize", n), () => window.removeEventListener("resize", n);
|
|
22
|
+
}, []);
|
|
23
|
+
const r = l(e);
|
|
24
|
+
return {
|
|
25
|
+
breakpoint: r,
|
|
26
|
+
width: e,
|
|
27
|
+
isAbove: (n) => i(r, n) >= 0,
|
|
28
|
+
isBelow: (n) => i(r, n) < 0,
|
|
29
|
+
isAt: (n) => r === n,
|
|
30
|
+
isBetween: (n, d) => i(r, n) >= 0 && i(r, d) <= 0
|
|
31
|
+
};
|
|
12
32
|
}
|
|
13
33
|
export {
|
|
14
|
-
|
|
15
|
-
h as Show
|
|
34
|
+
m as useBreakpoint
|
|
16
35
|
};
|
|
17
36
|
//# sourceMappingURL=index96.js.map
|
package/dist/index96.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index96.js","sources":["../src/
|
|
1
|
+
{"version":3,"file":"index96.js","sources":["../src/hooks/useBreakpoint.ts"],"sourcesContent":["import { useState, useEffect } from 'react'\n\nexport type Breakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\n\nconst breakpoints: Record<Breakpoint, number> = {\n xs: 0,\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n '2xl': 1536,\n}\n\nconst breakpointOrder: Breakpoint[] = ['xs', 'sm', 'md', 'lg', 'xl', '2xl']\n\nfunction getBreakpoint(width: number): Breakpoint {\n if (width >= breakpoints['2xl']) return '2xl'\n if (width >= breakpoints.xl) return 'xl'\n if (width >= breakpoints.lg) return 'lg'\n if (width >= breakpoints.md) return 'md'\n if (width >= breakpoints.sm) return 'sm'\n return 'xs'\n}\n\nfunction compareBreakpoints(a: Breakpoint, b: Breakpoint): number {\n return breakpointOrder.indexOf(a) - breakpointOrder.indexOf(b)\n}\n\nexport interface UseBreakpointReturn {\n breakpoint: Breakpoint\n width: number\n isAbove: (bp: Breakpoint) => boolean\n isBelow: (bp: Breakpoint) => boolean\n isAt: (bp: Breakpoint) => boolean\n isBetween: (min: Breakpoint, max: Breakpoint) => boolean\n}\n\nexport function useBreakpoint(): UseBreakpointReturn {\n const [width, setWidth] = useState(() =>\n typeof window !== 'undefined' ? window.innerWidth : 1024\n )\n\n useEffect(() => {\n const handleResize = () => setWidth(window.innerWidth)\n\n window.addEventListener('resize', handleResize)\n return () => window.removeEventListener('resize', handleResize)\n }, [])\n\n const breakpoint = getBreakpoint(width)\n\n return {\n breakpoint,\n width,\n isAbove: (bp: Breakpoint) => compareBreakpoints(breakpoint, bp) >= 0,\n isBelow: (bp: Breakpoint) => compareBreakpoints(breakpoint, bp) < 0,\n isAt: (bp: Breakpoint) => breakpoint === bp,\n isBetween: (min: Breakpoint, max: Breakpoint) =>\n compareBreakpoints(breakpoint, min) >= 0 && compareBreakpoints(breakpoint, max) <= 0,\n }\n}\n"],"names":["breakpoints","breakpointOrder","getBreakpoint","width","compareBreakpoints","a","b","useBreakpoint","setWidth","useState","useEffect","handleResize","breakpoint","bp","min","max"],"mappings":";AAIA,MAAMA,IAA0C;AAAA,EAE9C,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,OAAO;AACT,GAEMC,IAAgC,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK;AAE1E,SAASC,EAAcC,GAA2B;AAChD,SAAIA,KAASH,EAAY,KAAK,IAAU,QACpCG,KAASH,EAAY,KAAW,OAChCG,KAASH,EAAY,KAAW,OAChCG,KAASH,EAAY,KAAW,OAChCG,KAASH,EAAY,KAAW,OAC7B;AACT;AAEA,SAASI,EAAmBC,GAAeC,GAAuB;AAChE,SAAOL,EAAgB,QAAQI,CAAC,IAAIJ,EAAgB,QAAQK,CAAC;AAC/D;AAWO,SAASC,IAAqC;AACnD,QAAM,CAACJ,GAAOK,CAAQ,IAAIC;AAAA,IAAS,MACjC,OAAO,SAAW,MAAc,OAAO,aAAa;AAAA,EAAA;AAGtD,EAAAC,EAAU,MAAM;AACd,UAAMC,IAAe,MAAMH,EAAS,OAAO,UAAU;AAErD,kBAAO,iBAAiB,UAAUG,CAAY,GACvC,MAAM,OAAO,oBAAoB,UAAUA,CAAY;AAAA,EAChE,GAAG,CAAA,CAAE;AAEL,QAAMC,IAAaV,EAAcC,CAAK;AAEtC,SAAO;AAAA,IACL,YAAAS;AAAA,IACA,OAAAT;AAAA,IACA,SAAS,CAACU,MAAmBT,EAAmBQ,GAAYC,CAAE,KAAK;AAAA,IACnE,SAAS,CAACA,MAAmBT,EAAmBQ,GAAYC,CAAE,IAAI;AAAA,IAClE,MAAM,CAACA,MAAmBD,MAAeC;AAAA,IACzC,WAAW,CAACC,GAAiBC,MAC3BX,EAAmBQ,GAAYE,CAAG,KAAK,KAAKV,EAAmBQ,GAAYG,CAAG,KAAK;AAAA,EAAA;AAEzF;"}
|
package/dist/index97.js
CHANGED
|
@@ -1,36 +1,9 @@
|
|
|
1
|
-
import { useState as u,
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
lg: 1024,
|
|
6
|
-
xl: 1280,
|
|
7
|
-
"2xl": 1536
|
|
8
|
-
}, s = ["xs", "sm", "md", "lg", "xl", "2xl"];
|
|
9
|
-
function l(e) {
|
|
10
|
-
return e >= t["2xl"] ? "2xl" : e >= t.xl ? "xl" : e >= t.lg ? "lg" : e >= t.md ? "md" : e >= t.sm ? "sm" : "xs";
|
|
11
|
-
}
|
|
12
|
-
function i(e, o) {
|
|
13
|
-
return s.indexOf(e) - s.indexOf(o);
|
|
14
|
-
}
|
|
15
|
-
function m() {
|
|
16
|
-
const [e, o] = u(
|
|
17
|
-
() => typeof window < "u" ? window.innerWidth : 1024
|
|
18
|
-
);
|
|
19
|
-
f(() => {
|
|
20
|
-
const n = () => o(window.innerWidth);
|
|
21
|
-
return window.addEventListener("resize", n), () => window.removeEventListener("resize", n);
|
|
22
|
-
}, []);
|
|
23
|
-
const r = l(e);
|
|
24
|
-
return {
|
|
25
|
-
breakpoint: r,
|
|
26
|
-
width: e,
|
|
27
|
-
isAbove: (n) => i(r, n) >= 0,
|
|
28
|
-
isBelow: (n) => i(r, n) < 0,
|
|
29
|
-
isAt: (n) => r === n,
|
|
30
|
-
isBetween: (n, d) => i(r, n) >= 0 && i(r, d) <= 0
|
|
31
|
-
};
|
|
1
|
+
import { useState as u, useCallback as s } from "react";
|
|
2
|
+
function p(o = !1) {
|
|
3
|
+
const [n, e] = u(o), t = s(() => e(!0), []), c = s(() => e(!1), []), l = s(() => e((r) => !r), []);
|
|
4
|
+
return { isOpen: n, onOpen: t, onClose: c, onToggle: l, setIsOpen: e };
|
|
32
5
|
}
|
|
33
6
|
export {
|
|
34
|
-
|
|
7
|
+
p as useDisclosure
|
|
35
8
|
};
|
|
36
9
|
//# sourceMappingURL=index97.js.map
|
package/dist/index97.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index97.js","sources":["../src/hooks/
|
|
1
|
+
{"version":3,"file":"index97.js","sources":["../src/hooks/useDisclosure.ts"],"sourcesContent":["import { useState, useCallback } from 'react'\n\nexport interface UseDisclosureReturn {\n isOpen: boolean\n onOpen: () => void\n onClose: () => void\n onToggle: () => void\n setIsOpen: (value: boolean) => void\n}\n\n/**\n * Hook for managing open/close state of modals, drawers, dropdowns, etc.\n *\n * @param defaultIsOpen - Initial open state (default: false)\n * @returns Object with isOpen state and control functions\n *\n * @example\n * const { isOpen, onOpen, onClose } = useDisclosure()\n *\n * <Button onClick={onOpen}>Open Modal</Button>\n * <Modal open={isOpen} onClose={onClose}>Content</Modal>\n */\nexport function useDisclosure(defaultIsOpen = false): UseDisclosureReturn {\n const [isOpen, setIsOpen] = useState(defaultIsOpen)\n\n const onOpen = useCallback(() => setIsOpen(true), [])\n const onClose = useCallback(() => setIsOpen(false), [])\n const onToggle = useCallback(() => setIsOpen(prev => !prev), [])\n\n return { isOpen, onOpen, onClose, onToggle, setIsOpen }\n}\n"],"names":["useDisclosure","defaultIsOpen","isOpen","setIsOpen","useState","onOpen","useCallback","onClose","onToggle","prev"],"mappings":";AAsBO,SAASA,EAAcC,IAAgB,IAA4B;AACxE,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAASH,CAAa,GAE5CI,IAASC,EAAY,MAAMH,EAAU,EAAI,GAAG,CAAA,CAAE,GAC9CI,IAAUD,EAAY,MAAMH,EAAU,EAAK,GAAG,CAAA,CAAE,GAChDK,IAAWF,EAAY,MAAMH,EAAU,OAAQ,CAACM,CAAI,GAAG,EAAE;AAE/D,SAAO,EAAE,QAAAP,GAAQ,QAAAG,GAAQ,SAAAE,GAAS,UAAAC,GAAU,WAAAL,EAAA;AAC9C;"}
|
package/dist/index98.js
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
import { useState as
|
|
2
|
-
function p(
|
|
3
|
-
const [n,
|
|
4
|
-
|
|
1
|
+
import { useState as a, useCallback as s } from "react";
|
|
2
|
+
function p(t = 2e3) {
|
|
3
|
+
const [n, r] = a(!1), [l, e] = a(null), c = s(async (i) => {
|
|
4
|
+
try {
|
|
5
|
+
return await navigator.clipboard.writeText(i), r(!0), e(null), setTimeout(() => r(!1), t), !0;
|
|
6
|
+
} catch (o) {
|
|
7
|
+
return e(o instanceof Error ? o : new Error("Failed to copy")), r(!1), !1;
|
|
8
|
+
}
|
|
9
|
+
}, [t]), u = s(() => {
|
|
10
|
+
r(!1), e(null);
|
|
11
|
+
}, []);
|
|
12
|
+
return { copy: c, copied: n, error: l, reset: u };
|
|
5
13
|
}
|
|
6
14
|
export {
|
|
7
|
-
p as
|
|
15
|
+
p as useClipboard
|
|
8
16
|
};
|
|
9
17
|
//# sourceMappingURL=index98.js.map
|
package/dist/index98.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index98.js","sources":["../src/hooks/
|
|
1
|
+
{"version":3,"file":"index98.js","sources":["../src/hooks/useClipboard.ts"],"sourcesContent":["import { useState, useCallback } from 'react'\n\nexport interface UseClipboardReturn {\n copy: (text: string) => Promise<boolean>\n copied: boolean\n error: Error | null\n reset: () => void\n}\n\n/**\n * Hook for copying text to clipboard with success/error state.\n *\n * @param timeout - Duration in ms to show copied state (default: 2000)\n * @returns Object with copy function and state\n *\n * @example\n * const { copy, copied } = useClipboard()\n *\n * <Button onClick={() => copy('Hello!')}>\n * {copied ? 'Copied!' : 'Copy'}\n * </Button>\n */\nexport function useClipboard(timeout = 2000): UseClipboardReturn {\n const [copied, setCopied] = useState(false)\n const [error, setError] = useState<Error | null>(null)\n\n const copy = useCallback(async (text: string): Promise<boolean> => {\n try {\n await navigator.clipboard.writeText(text)\n setCopied(true)\n setError(null)\n\n setTimeout(() => setCopied(false), timeout)\n return true\n } catch (err) {\n setError(err instanceof Error ? err : new Error('Failed to copy'))\n setCopied(false)\n return false\n }\n }, [timeout])\n\n const reset = useCallback(() => {\n setCopied(false)\n setError(null)\n }, [])\n\n return { copy, copied, error, reset }\n}\n"],"names":["useClipboard","timeout","copied","setCopied","useState","error","setError","copy","useCallback","text","err","reset"],"mappings":";AAsBO,SAASA,EAAaC,IAAU,KAA0B;AAC/D,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAAS,EAAK,GACpC,CAACC,GAAOC,CAAQ,IAAIF,EAAuB,IAAI,GAE/CG,IAAOC,EAAY,OAAOC,MAAmC;AACjE,QAAI;AACF,mBAAM,UAAU,UAAU,UAAUA,CAAI,GACxCN,EAAU,EAAI,GACdG,EAAS,IAAI,GAEb,WAAW,MAAMH,EAAU,EAAK,GAAGF,CAAO,GACnC;AAAA,IACT,SAASS,GAAK;AACZ,aAAAJ,EAASI,aAAe,QAAQA,IAAM,IAAI,MAAM,gBAAgB,CAAC,GACjEP,EAAU,EAAK,GACR;AAAA,IACT;AAAA,EACF,GAAG,CAACF,CAAO,CAAC,GAENU,IAAQH,EAAY,MAAM;AAC9B,IAAAL,EAAU,EAAK,GACfG,EAAS,IAAI;AAAA,EACf,GAAG,CAAA,CAAE;AAEL,SAAO,EAAE,MAAAC,GAAM,QAAAL,GAAQ,OAAAG,GAAO,OAAAM,EAAA;AAChC;"}
|
package/dist/index99.js
CHANGED
|
@@ -1,17 +1,49 @@
|
|
|
1
|
-
import { useState as
|
|
2
|
-
function
|
|
3
|
-
const [
|
|
1
|
+
import { useState as u, useCallback as c, useEffect as f } from "react";
|
|
2
|
+
function S(o, t) {
|
|
3
|
+
const [s, n] = u(() => {
|
|
4
|
+
if (typeof window > "u")
|
|
5
|
+
return t;
|
|
4
6
|
try {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
const e = window.localStorage.getItem(o);
|
|
8
|
+
return e ? JSON.parse(e) : t;
|
|
9
|
+
} catch {
|
|
10
|
+
return t;
|
|
8
11
|
}
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
}), d = c(
|
|
13
|
+
(e) => {
|
|
14
|
+
n((r) => {
|
|
15
|
+
const a = e instanceof Function ? e(r) : e;
|
|
16
|
+
if (typeof window < "u")
|
|
17
|
+
try {
|
|
18
|
+
window.localStorage.setItem(o, JSON.stringify(a));
|
|
19
|
+
} catch (l) {
|
|
20
|
+
console.warn(`Failed to save to localStorage key "${o}":`, l);
|
|
21
|
+
}
|
|
22
|
+
return a;
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
[o]
|
|
26
|
+
), w = c(() => {
|
|
27
|
+
if (typeof window < "u")
|
|
28
|
+
try {
|
|
29
|
+
window.localStorage.removeItem(o);
|
|
30
|
+
} catch (e) {
|
|
31
|
+
console.warn(`Failed to remove localStorage key "${o}":`, e);
|
|
32
|
+
}
|
|
33
|
+
n(t);
|
|
34
|
+
}, [o, t]);
|
|
35
|
+
return f(() => {
|
|
36
|
+
const e = (r) => {
|
|
37
|
+
if (r.key === o && r.newValue !== null)
|
|
38
|
+
try {
|
|
39
|
+
n(JSON.parse(r.newValue));
|
|
40
|
+
} catch {
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
return window.addEventListener("storage", e), () => window.removeEventListener("storage", e);
|
|
44
|
+
}, [o]), [s, d, w];
|
|
13
45
|
}
|
|
14
46
|
export {
|
|
15
|
-
|
|
47
|
+
S as useLocalStorage
|
|
16
48
|
};
|
|
17
49
|
//# sourceMappingURL=index99.js.map
|
package/dist/index99.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index99.js","sources":["../src/hooks/
|
|
1
|
+
{"version":3,"file":"index99.js","sources":["../src/hooks/useLocalStorage.ts"],"sourcesContent":["import { useState, useCallback, useEffect } from 'react'\n\n/**\n * Hook for persisting state to localStorage.\n *\n * @param key - localStorage key\n * @param initialValue - Initial value if key doesn't exist\n * @returns [value, setValue, removeValue] tuple\n *\n * @example\n * const [theme, setTheme] = useLocalStorage('theme', 'light')\n * const [user, setUser, removeUser] = useLocalStorage('user', null)\n */\nexport function useLocalStorage<T>(\n key: string,\n initialValue: T\n): [T, (value: T | ((prev: T) => T)) => void, () => void] {\n // Get initial value from localStorage or use default\n const [storedValue, setStoredValue] = useState<T>(() => {\n if (typeof window === 'undefined') {\n return initialValue\n }\n\n try {\n const item = window.localStorage.getItem(key)\n return item ? (JSON.parse(item) as T) : initialValue\n } catch {\n return initialValue\n }\n })\n\n // Update localStorage when value changes\n const setValue = useCallback(\n (value: T | ((prev: T) => T)) => {\n setStoredValue(prev => {\n const valueToStore = value instanceof Function ? value(prev) : value\n\n if (typeof window !== 'undefined') {\n try {\n window.localStorage.setItem(key, JSON.stringify(valueToStore))\n } catch (error) {\n console.warn(`Failed to save to localStorage key \"${key}\":`, error)\n }\n }\n\n return valueToStore\n })\n },\n [key]\n )\n\n // Remove from localStorage\n const removeValue = useCallback(() => {\n if (typeof window !== 'undefined') {\n try {\n window.localStorage.removeItem(key)\n } catch (error) {\n console.warn(`Failed to remove localStorage key \"${key}\":`, error)\n }\n }\n setStoredValue(initialValue)\n }, [key, initialValue])\n\n // Sync with other tabs/windows\n useEffect(() => {\n const handleStorageChange = (e: StorageEvent) => {\n if (e.key === key && e.newValue !== null) {\n try {\n setStoredValue(JSON.parse(e.newValue) as T)\n } catch {\n // Ignore parse errors\n }\n }\n }\n\n window.addEventListener('storage', handleStorageChange)\n return () => window.removeEventListener('storage', handleStorageChange)\n }, [key])\n\n return [storedValue, setValue, removeValue]\n}\n"],"names":["useLocalStorage","key","initialValue","storedValue","setStoredValue","useState","item","setValue","useCallback","value","prev","valueToStore","error","removeValue","useEffect","handleStorageChange","e"],"mappings":";AAaO,SAASA,EACdC,GACAC,GACwD;AAExD,QAAM,CAACC,GAAaC,CAAc,IAAIC,EAAY,MAAM;AACtD,QAAI,OAAO,SAAW;AACpB,aAAOH;AAGT,QAAI;AACF,YAAMI,IAAO,OAAO,aAAa,QAAQL,CAAG;AAC5C,aAAOK,IAAQ,KAAK,MAAMA,CAAI,IAAUJ;AAAA,IAC1C,QAAQ;AACN,aAAOA;AAAA,IACT;AAAA,EACF,CAAC,GAGKK,IAAWC;AAAA,IACf,CAACC,MAAgC;AAC/B,MAAAL,EAAe,CAAAM,MAAQ;AACrB,cAAMC,IAAeF,aAAiB,WAAWA,EAAMC,CAAI,IAAID;AAE/D,YAAI,OAAO,SAAW;AACpB,cAAI;AACF,mBAAO,aAAa,QAAQR,GAAK,KAAK,UAAUU,CAAY,CAAC;AAAA,UAC/D,SAASC,GAAO;AACd,oBAAQ,KAAK,uCAAuCX,CAAG,MAAMW,CAAK;AAAA,UACpE;AAGF,eAAOD;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAACV,CAAG;AAAA,EAAA,GAIAY,IAAcL,EAAY,MAAM;AACpC,QAAI,OAAO,SAAW;AACpB,UAAI;AACF,eAAO,aAAa,WAAWP,CAAG;AAAA,MACpC,SAASW,GAAO;AACd,gBAAQ,KAAK,sCAAsCX,CAAG,MAAMW,CAAK;AAAA,MACnE;AAEF,IAAAR,EAAeF,CAAY;AAAA,EAC7B,GAAG,CAACD,GAAKC,CAAY,CAAC;AAGtB,SAAAY,EAAU,MAAM;AACd,UAAMC,IAAsB,CAACC,MAAoB;AAC/C,UAAIA,EAAE,QAAQf,KAAOe,EAAE,aAAa;AAClC,YAAI;AACF,UAAAZ,EAAe,KAAK,MAAMY,EAAE,QAAQ,CAAM;AAAA,QAC5C,QAAQ;AAAA,QAER;AAAA,IAEJ;AAEA,kBAAO,iBAAiB,WAAWD,CAAmB,GAC/C,MAAM,OAAO,oBAAoB,WAAWA,CAAmB;AAAA,EACxE,GAAG,CAACd,CAAG,CAAC,GAED,CAACE,GAAaI,GAAUM,CAAW;AAC5C;"}
|
package/package.json
CHANGED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
|
-
export interface StackProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
-
children: React.ReactNode;
|
|
4
|
-
direction?: 'vertical' | 'horizontal';
|
|
5
|
-
spacing?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24;
|
|
6
|
-
align?: 'start' | 'center' | 'end' | 'stretch';
|
|
7
|
-
justify?: 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
|
|
8
|
-
wrap?: boolean;
|
|
9
|
-
}
|
|
10
|
-
export declare const Stack: React.FC<StackProps>;
|