@efiche/design 0.2.13 → 0.2.14
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/README.md +0 -115
- package/dist/index.cjs +171 -432
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +1 -77
- package/dist/index.d.ts +1 -77
- package/dist/index.js +171 -457
- package/dist/index.js.map +1 -1
- package/package.json +2 -3
package/dist/index.js
CHANGED
|
@@ -48,299 +48,17 @@ var useTheme = () => {
|
|
|
48
48
|
return ctx;
|
|
49
49
|
};
|
|
50
50
|
|
|
51
|
-
// src/components/Charts/LineChart.tsx
|
|
52
|
-
import { useEffect, useRef, useState as useState2 } from "react";
|
|
53
|
-
import {
|
|
54
|
-
LineChart as RechartsLineChart,
|
|
55
|
-
Line,
|
|
56
|
-
XAxis,
|
|
57
|
-
YAxis,
|
|
58
|
-
CartesianGrid,
|
|
59
|
-
Tooltip,
|
|
60
|
-
Legend
|
|
61
|
-
} from "recharts";
|
|
62
|
-
|
|
63
|
-
// src/components/Charts/chartUtils.ts
|
|
64
|
-
var CHART_COLORS = [
|
|
65
|
-
"#3b82f6",
|
|
66
|
-
// blue
|
|
67
|
-
"#22c55e",
|
|
68
|
-
// green
|
|
69
|
-
"#f59e0b",
|
|
70
|
-
// amber
|
|
71
|
-
"#ef4444",
|
|
72
|
-
// red
|
|
73
|
-
"#8b5cf6",
|
|
74
|
-
// violet
|
|
75
|
-
"#06b6d4",
|
|
76
|
-
// cyan
|
|
77
|
-
"#f97316",
|
|
78
|
-
// orange
|
|
79
|
-
"#ec4899"
|
|
80
|
-
// pink
|
|
81
|
-
];
|
|
82
|
-
function getChartTheme(theme) {
|
|
83
|
-
const isDark = theme === "dark";
|
|
84
|
-
return {
|
|
85
|
-
gridColor: isDark ? "#334155" : "#e2e8f0",
|
|
86
|
-
axisStroke: isDark ? "#94a3b8" : "#64748b",
|
|
87
|
-
axisTick: { fill: isDark ? "#94a3b8" : "#64748b", fontSize: 12 },
|
|
88
|
-
primaryColor: isDark ? "#60a5fa" : "#3b82f6",
|
|
89
|
-
tooltipStyle: {
|
|
90
|
-
backgroundColor: isDark ? "#1e293b" : "#ffffff",
|
|
91
|
-
border: `1px solid ${isDark ? "#334155" : "#e2e8f0"}`,
|
|
92
|
-
borderRadius: "6px",
|
|
93
|
-
color: isDark ? "#f1f5f9" : "#0f172a",
|
|
94
|
-
fontSize: "0.8125rem"
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// src/components/Charts/LineChart.tsx
|
|
100
|
-
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
101
|
-
var LineChart = ({
|
|
102
|
-
data,
|
|
103
|
-
xKey,
|
|
104
|
-
lines,
|
|
105
|
-
height = 250,
|
|
106
|
-
legend = false,
|
|
107
|
-
grid = true,
|
|
108
|
-
theme = "light",
|
|
109
|
-
className,
|
|
110
|
-
style
|
|
111
|
-
}) => {
|
|
112
|
-
const containerRef = useRef(null);
|
|
113
|
-
const [width, setWidth] = useState2(0);
|
|
114
|
-
const { gridColor, axisStroke, axisTick, tooltipStyle } = getChartTheme(theme);
|
|
115
|
-
useEffect(() => {
|
|
116
|
-
if (!containerRef.current) return;
|
|
117
|
-
const measure = () => setWidth(containerRef.current.offsetWidth);
|
|
118
|
-
measure();
|
|
119
|
-
const ro = new ResizeObserver(measure);
|
|
120
|
-
ro.observe(containerRef.current);
|
|
121
|
-
return () => ro.disconnect();
|
|
122
|
-
}, []);
|
|
123
|
-
return /* @__PURE__ */ jsx2("div", { ref: containerRef, className, style: __spreadValues({ minWidth: 250, width: "100%" }, style), children: width > 0 && /* @__PURE__ */ jsxs(RechartsLineChart, { width, height, data, children: [
|
|
124
|
-
grid && /* @__PURE__ */ jsx2(CartesianGrid, { strokeDasharray: "3 3", stroke: gridColor }),
|
|
125
|
-
/* @__PURE__ */ jsx2(XAxis, { dataKey: xKey, stroke: axisStroke, tick: axisTick }),
|
|
126
|
-
/* @__PURE__ */ jsx2(YAxis, { stroke: axisStroke, tick: axisTick }),
|
|
127
|
-
/* @__PURE__ */ jsx2(Tooltip, { contentStyle: tooltipStyle }),
|
|
128
|
-
legend && /* @__PURE__ */ jsx2(Legend, {}),
|
|
129
|
-
lines.map((line, i) => {
|
|
130
|
-
var _a, _b;
|
|
131
|
-
const color = (_a = line.color) != null ? _a : CHART_COLORS[i % CHART_COLORS.length];
|
|
132
|
-
return /* @__PURE__ */ jsx2(
|
|
133
|
-
Line,
|
|
134
|
-
{
|
|
135
|
-
type: "monotone",
|
|
136
|
-
dataKey: line.dataKey,
|
|
137
|
-
name: (_b = line.label) != null ? _b : line.dataKey,
|
|
138
|
-
stroke: color,
|
|
139
|
-
strokeWidth: 2,
|
|
140
|
-
dot: { fill: color, r: 4 },
|
|
141
|
-
activeDot: { r: 6 },
|
|
142
|
-
isAnimationActive: false
|
|
143
|
-
},
|
|
144
|
-
line.dataKey
|
|
145
|
-
);
|
|
146
|
-
})
|
|
147
|
-
] }) });
|
|
148
|
-
};
|
|
149
|
-
var LineChart_default = LineChart;
|
|
150
|
-
|
|
151
|
-
// src/components/Charts/BarChart.tsx
|
|
152
|
-
import { useEffect as useEffect2, useRef as useRef2, useState as useState3 } from "react";
|
|
153
|
-
import {
|
|
154
|
-
BarChart as RechartsBarChart,
|
|
155
|
-
Bar,
|
|
156
|
-
XAxis as XAxis2,
|
|
157
|
-
YAxis as YAxis2,
|
|
158
|
-
CartesianGrid as CartesianGrid2,
|
|
159
|
-
Tooltip as Tooltip2,
|
|
160
|
-
Legend as Legend2
|
|
161
|
-
} from "recharts";
|
|
162
|
-
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
163
|
-
var BarChart = ({
|
|
164
|
-
data,
|
|
165
|
-
xKey,
|
|
166
|
-
bars,
|
|
167
|
-
height = 250,
|
|
168
|
-
legend = false,
|
|
169
|
-
grid = true,
|
|
170
|
-
theme = "light",
|
|
171
|
-
className,
|
|
172
|
-
style
|
|
173
|
-
}) => {
|
|
174
|
-
const containerRef = useRef2(null);
|
|
175
|
-
const [width, setWidth] = useState3(0);
|
|
176
|
-
const { gridColor, axisStroke, axisTick, tooltipStyle } = getChartTheme(theme);
|
|
177
|
-
useEffect2(() => {
|
|
178
|
-
if (!containerRef.current) return;
|
|
179
|
-
const measure = () => setWidth(containerRef.current.offsetWidth);
|
|
180
|
-
measure();
|
|
181
|
-
const ro = new ResizeObserver(measure);
|
|
182
|
-
ro.observe(containerRef.current);
|
|
183
|
-
return () => ro.disconnect();
|
|
184
|
-
}, []);
|
|
185
|
-
return /* @__PURE__ */ jsx3("div", { ref: containerRef, className, style: __spreadValues({ minWidth: 250, width: "100%" }, style), children: width > 0 && /* @__PURE__ */ jsxs2(RechartsBarChart, { width, height, data, children: [
|
|
186
|
-
grid && /* @__PURE__ */ jsx3(CartesianGrid2, { strokeDasharray: "3 3", stroke: gridColor }),
|
|
187
|
-
/* @__PURE__ */ jsx3(XAxis2, { dataKey: xKey, stroke: axisStroke, tick: axisTick }),
|
|
188
|
-
/* @__PURE__ */ jsx3(YAxis2, { stroke: axisStroke, tick: axisTick }),
|
|
189
|
-
/* @__PURE__ */ jsx3(Tooltip2, { contentStyle: tooltipStyle }),
|
|
190
|
-
legend && /* @__PURE__ */ jsx3(Legend2, {}),
|
|
191
|
-
bars.map((bar, i) => {
|
|
192
|
-
var _a, _b;
|
|
193
|
-
const color = (_a = bar.color) != null ? _a : CHART_COLORS[i % CHART_COLORS.length];
|
|
194
|
-
return /* @__PURE__ */ jsx3(
|
|
195
|
-
Bar,
|
|
196
|
-
{
|
|
197
|
-
dataKey: bar.dataKey,
|
|
198
|
-
name: (_b = bar.label) != null ? _b : bar.dataKey,
|
|
199
|
-
fill: color,
|
|
200
|
-
stackId: bar.stackId,
|
|
201
|
-
isAnimationActive: false
|
|
202
|
-
},
|
|
203
|
-
bar.dataKey
|
|
204
|
-
);
|
|
205
|
-
})
|
|
206
|
-
] }) });
|
|
207
|
-
};
|
|
208
|
-
var BarChart_default = BarChart;
|
|
209
|
-
|
|
210
|
-
// src/components/Charts/AreaChart.tsx
|
|
211
|
-
import { useEffect as useEffect3, useRef as useRef3, useState as useState4 } from "react";
|
|
212
|
-
import {
|
|
213
|
-
AreaChart as RechartsAreaChart,
|
|
214
|
-
Area,
|
|
215
|
-
XAxis as XAxis3,
|
|
216
|
-
YAxis as YAxis3,
|
|
217
|
-
CartesianGrid as CartesianGrid3,
|
|
218
|
-
Tooltip as Tooltip3,
|
|
219
|
-
Legend as Legend3
|
|
220
|
-
} from "recharts";
|
|
221
|
-
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
222
|
-
var AreaChart = ({
|
|
223
|
-
data,
|
|
224
|
-
xKey,
|
|
225
|
-
areas,
|
|
226
|
-
height = 250,
|
|
227
|
-
legend = false,
|
|
228
|
-
grid = true,
|
|
229
|
-
theme = "light",
|
|
230
|
-
className,
|
|
231
|
-
style
|
|
232
|
-
}) => {
|
|
233
|
-
const containerRef = useRef3(null);
|
|
234
|
-
const [width, setWidth] = useState4(0);
|
|
235
|
-
const { gridColor, axisStroke, axisTick, tooltipStyle } = getChartTheme(theme);
|
|
236
|
-
useEffect3(() => {
|
|
237
|
-
if (!containerRef.current) return;
|
|
238
|
-
const measure = () => setWidth(containerRef.current.offsetWidth);
|
|
239
|
-
measure();
|
|
240
|
-
const ro = new ResizeObserver(measure);
|
|
241
|
-
ro.observe(containerRef.current);
|
|
242
|
-
return () => ro.disconnect();
|
|
243
|
-
}, []);
|
|
244
|
-
return /* @__PURE__ */ jsx4("div", { ref: containerRef, className, style: __spreadValues({ minWidth: 250, width: "100%" }, style), children: width > 0 && /* @__PURE__ */ jsxs3(RechartsAreaChart, { width, height, data, children: [
|
|
245
|
-
grid && /* @__PURE__ */ jsx4(CartesianGrid3, { strokeDasharray: "3 3", stroke: gridColor }),
|
|
246
|
-
/* @__PURE__ */ jsx4(XAxis3, { dataKey: xKey, stroke: axisStroke, tick: axisTick }),
|
|
247
|
-
/* @__PURE__ */ jsx4(YAxis3, { stroke: axisStroke, tick: axisTick }),
|
|
248
|
-
/* @__PURE__ */ jsx4(Tooltip3, { contentStyle: tooltipStyle }),
|
|
249
|
-
legend && /* @__PURE__ */ jsx4(Legend3, {}),
|
|
250
|
-
areas.map((area, i) => {
|
|
251
|
-
var _a, _b, _c;
|
|
252
|
-
const color = (_a = area.color) != null ? _a : CHART_COLORS[i % CHART_COLORS.length];
|
|
253
|
-
const opacity = (_b = area.fillOpacity) != null ? _b : area.stackId ? 0.4 : 0.15;
|
|
254
|
-
return /* @__PURE__ */ jsx4(
|
|
255
|
-
Area,
|
|
256
|
-
{
|
|
257
|
-
type: "monotone",
|
|
258
|
-
dataKey: area.dataKey,
|
|
259
|
-
name: (_c = area.label) != null ? _c : area.dataKey,
|
|
260
|
-
stroke: color,
|
|
261
|
-
fill: color,
|
|
262
|
-
fillOpacity: opacity,
|
|
263
|
-
strokeWidth: 2,
|
|
264
|
-
stackId: area.stackId,
|
|
265
|
-
isAnimationActive: false
|
|
266
|
-
},
|
|
267
|
-
area.dataKey
|
|
268
|
-
);
|
|
269
|
-
})
|
|
270
|
-
] }) });
|
|
271
|
-
};
|
|
272
|
-
var AreaChart_default = AreaChart;
|
|
273
|
-
|
|
274
|
-
// src/components/Charts/PieChart.tsx
|
|
275
|
-
import { useEffect as useEffect4, useRef as useRef4, useState as useState5 } from "react";
|
|
276
|
-
import {
|
|
277
|
-
PieChart as RechartsPieChart,
|
|
278
|
-
Pie,
|
|
279
|
-
Tooltip as Tooltip4,
|
|
280
|
-
Legend as Legend4
|
|
281
|
-
} from "recharts";
|
|
282
|
-
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
283
|
-
var PieChart = ({
|
|
284
|
-
data,
|
|
285
|
-
height = 250,
|
|
286
|
-
donut = false,
|
|
287
|
-
legend = false,
|
|
288
|
-
label = false,
|
|
289
|
-
theme = "light",
|
|
290
|
-
className,
|
|
291
|
-
style
|
|
292
|
-
}) => {
|
|
293
|
-
const containerRef = useRef4(null);
|
|
294
|
-
const [width, setWidth] = useState5(0);
|
|
295
|
-
const { tooltipStyle } = getChartTheme(theme);
|
|
296
|
-
useEffect4(() => {
|
|
297
|
-
if (!containerRef.current) return;
|
|
298
|
-
const measure = () => setWidth(containerRef.current.offsetWidth);
|
|
299
|
-
measure();
|
|
300
|
-
const ro = new ResizeObserver(measure);
|
|
301
|
-
ro.observe(containerRef.current);
|
|
302
|
-
return () => ro.disconnect();
|
|
303
|
-
}, []);
|
|
304
|
-
const dataWithColors = data.map((item, i) => {
|
|
305
|
-
var _a;
|
|
306
|
-
return __spreadProps(__spreadValues({}, item), {
|
|
307
|
-
fill: (_a = item.fill) != null ? _a : CHART_COLORS[i % CHART_COLORS.length]
|
|
308
|
-
});
|
|
309
|
-
});
|
|
310
|
-
const outerRadius = 90;
|
|
311
|
-
const innerRadius = donut ? 55 : 0;
|
|
312
|
-
return /* @__PURE__ */ jsx5("div", { ref: containerRef, className, style: __spreadValues({ minWidth: 250, width: "100%" }, style), children: width > 0 && /* @__PURE__ */ jsxs4(RechartsPieChart, { width, height, children: [
|
|
313
|
-
/* @__PURE__ */ jsx5(
|
|
314
|
-
Pie,
|
|
315
|
-
{
|
|
316
|
-
data: dataWithColors,
|
|
317
|
-
cx: "50%",
|
|
318
|
-
cy: "50%",
|
|
319
|
-
outerRadius,
|
|
320
|
-
innerRadius,
|
|
321
|
-
dataKey: "value",
|
|
322
|
-
label: label ? ({ name, percent }) => `${name} ${((percent != null ? percent : 0) * 100).toFixed(0)}%` : void 0,
|
|
323
|
-
labelLine: label,
|
|
324
|
-
isAnimationActive: false
|
|
325
|
-
}
|
|
326
|
-
),
|
|
327
|
-
/* @__PURE__ */ jsx5(Tooltip4, { contentStyle: tooltipStyle }),
|
|
328
|
-
legend && /* @__PURE__ */ jsx5(Legend4, {})
|
|
329
|
-
] }) });
|
|
330
|
-
};
|
|
331
|
-
var PieChart_default = PieChart;
|
|
332
|
-
|
|
333
51
|
// src/components/Accordion/Accordion.tsx
|
|
334
|
-
import { useState as
|
|
52
|
+
import { useState as useState2 } from "react";
|
|
335
53
|
import { ChevronDown } from "lucide-react";
|
|
336
|
-
import { jsx as
|
|
54
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
337
55
|
var Accordion = ({ items, defaultValue, multiple = false }) => {
|
|
338
|
-
const [open, setOpen] =
|
|
56
|
+
const [open, setOpen] = useState2(() => {
|
|
339
57
|
if (!defaultValue) return /* @__PURE__ */ new Set();
|
|
340
58
|
if (Array.isArray(defaultValue)) return new Set(defaultValue);
|
|
341
59
|
return /* @__PURE__ */ new Set([defaultValue]);
|
|
342
60
|
});
|
|
343
|
-
const [hovered, setHovered] =
|
|
61
|
+
const [hovered, setHovered] = useState2(null);
|
|
344
62
|
const toggle = (value) => {
|
|
345
63
|
setOpen((prev) => {
|
|
346
64
|
const next = new Set(prev);
|
|
@@ -353,7 +71,7 @@ var Accordion = ({ items, defaultValue, multiple = false }) => {
|
|
|
353
71
|
return next;
|
|
354
72
|
});
|
|
355
73
|
};
|
|
356
|
-
return /* @__PURE__ */
|
|
74
|
+
return /* @__PURE__ */ jsx2("div", { style: {
|
|
357
75
|
border: "1px solid var(--ds-border, #e2e8f0)",
|
|
358
76
|
borderRadius: "0.5rem",
|
|
359
77
|
overflow: "hidden"
|
|
@@ -361,14 +79,14 @@ var Accordion = ({ items, defaultValue, multiple = false }) => {
|
|
|
361
79
|
const isOpen = open.has(item.value);
|
|
362
80
|
const isHovered = hovered === item.value;
|
|
363
81
|
const isLast = index === items.length - 1;
|
|
364
|
-
return /* @__PURE__ */
|
|
82
|
+
return /* @__PURE__ */ jsxs(
|
|
365
83
|
"div",
|
|
366
84
|
{
|
|
367
85
|
style: {
|
|
368
86
|
borderBottom: isLast ? "none" : "1px solid var(--ds-border, #e2e8f0)"
|
|
369
87
|
},
|
|
370
88
|
children: [
|
|
371
|
-
/* @__PURE__ */
|
|
89
|
+
/* @__PURE__ */ jsxs(
|
|
372
90
|
"button",
|
|
373
91
|
{
|
|
374
92
|
style: {
|
|
@@ -391,8 +109,8 @@ var Accordion = ({ items, defaultValue, multiple = false }) => {
|
|
|
391
109
|
onMouseLeave: () => setHovered(null),
|
|
392
110
|
"aria-expanded": isOpen,
|
|
393
111
|
children: [
|
|
394
|
-
/* @__PURE__ */
|
|
395
|
-
/* @__PURE__ */
|
|
112
|
+
/* @__PURE__ */ jsx2("span", { children: item.trigger }),
|
|
113
|
+
/* @__PURE__ */ jsx2(
|
|
396
114
|
ChevronDown,
|
|
397
115
|
{
|
|
398
116
|
size: 16,
|
|
@@ -407,11 +125,11 @@ var Accordion = ({ items, defaultValue, multiple = false }) => {
|
|
|
407
125
|
]
|
|
408
126
|
}
|
|
409
127
|
),
|
|
410
|
-
/* @__PURE__ */
|
|
128
|
+
/* @__PURE__ */ jsx2("div", { style: {
|
|
411
129
|
maxHeight: isOpen ? "300px" : "0",
|
|
412
130
|
overflow: "hidden",
|
|
413
131
|
transition: "max-height 0.25s ease"
|
|
414
|
-
}, children: /* @__PURE__ */
|
|
132
|
+
}, children: /* @__PURE__ */ jsx2("div", { style: {
|
|
415
133
|
padding: "0 1rem 1rem",
|
|
416
134
|
fontSize: "0.875rem",
|
|
417
135
|
color: "var(--ds-text-secondary, #64748b)"
|
|
@@ -426,7 +144,7 @@ var Accordion_default = Accordion;
|
|
|
426
144
|
|
|
427
145
|
// src/components/Alert/Alert.tsx
|
|
428
146
|
import { Info, CheckCircle2, AlertTriangle, AlertCircle } from "lucide-react";
|
|
429
|
-
import { jsx as
|
|
147
|
+
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
430
148
|
var variantMap = {
|
|
431
149
|
info: { bg: "var(--ds-info-bg, #eff6ff)", border: "var(--ds-info, #3b82f6)", icon: "var(--ds-info, #3b82f6)", title: "var(--ds-info-title, #1e3a8a)", desc: "var(--ds-info-desc, #1e40af)" },
|
|
432
150
|
success: { bg: "var(--ds-success-bg, #f0fdf4)", border: "var(--ds-success, #22c55e)", icon: "var(--ds-success, #22c55e)", title: "var(--ds-success-title, #14532d)", desc: "var(--ds-success-desc, #166534)" },
|
|
@@ -434,14 +152,14 @@ var variantMap = {
|
|
|
434
152
|
danger: { bg: "var(--ds-danger-bg, #fef2f2)", border: "var(--ds-danger, #ef4444)", icon: "var(--ds-danger, #ef4444)", title: "var(--ds-danger-title, #7f1d1d)", desc: "var(--ds-danger-desc, #991b1b)" }
|
|
435
153
|
};
|
|
436
154
|
var icons = {
|
|
437
|
-
info: /* @__PURE__ */
|
|
438
|
-
success: /* @__PURE__ */
|
|
439
|
-
warning: /* @__PURE__ */
|
|
440
|
-
danger: /* @__PURE__ */
|
|
155
|
+
info: /* @__PURE__ */ jsx3(Info, { size: 16 }),
|
|
156
|
+
success: /* @__PURE__ */ jsx3(CheckCircle2, { size: 16 }),
|
|
157
|
+
warning: /* @__PURE__ */ jsx3(AlertTriangle, { size: 16 }),
|
|
158
|
+
danger: /* @__PURE__ */ jsx3(AlertCircle, { size: 16 })
|
|
441
159
|
};
|
|
442
160
|
var Alert = ({ variant = "info", title, description }) => {
|
|
443
161
|
const v = variantMap[variant];
|
|
444
|
-
return /* @__PURE__ */
|
|
162
|
+
return /* @__PURE__ */ jsxs2("div", { role: "alert", style: {
|
|
445
163
|
display: "flex",
|
|
446
164
|
gap: "0.75rem",
|
|
447
165
|
padding: "1rem",
|
|
@@ -449,23 +167,23 @@ var Alert = ({ variant = "info", title, description }) => {
|
|
|
449
167
|
borderLeft: `4px solid ${v.border}`,
|
|
450
168
|
backgroundColor: v.bg
|
|
451
169
|
}, children: [
|
|
452
|
-
/* @__PURE__ */
|
|
453
|
-
/* @__PURE__ */
|
|
454
|
-
/* @__PURE__ */
|
|
455
|
-
/* @__PURE__ */
|
|
170
|
+
/* @__PURE__ */ jsx3("span", { style: { flexShrink: 0, marginTop: "0.125rem", color: v.icon }, children: icons[variant] }),
|
|
171
|
+
/* @__PURE__ */ jsxs2("div", { style: { flex: 1 }, children: [
|
|
172
|
+
/* @__PURE__ */ jsx3("p", { style: { fontWeight: 600, fontSize: "0.875rem", marginBottom: "0.25rem", marginTop: 0, color: v.title }, children: title }),
|
|
173
|
+
/* @__PURE__ */ jsx3("p", { style: { fontSize: "0.875rem", margin: 0, color: v.desc }, children: description })
|
|
456
174
|
] })
|
|
457
175
|
] });
|
|
458
176
|
};
|
|
459
177
|
var Alert_default = Alert;
|
|
460
178
|
|
|
461
179
|
// src/components/Avatar/Avatar.tsx
|
|
462
|
-
import { jsx as
|
|
180
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
463
181
|
var sizeMap = {
|
|
464
182
|
sm: { width: "2rem", height: "2rem", fontSize: "0.625rem" },
|
|
465
183
|
md: { width: "2.5rem", height: "2.5rem", fontSize: "0.875rem" },
|
|
466
184
|
lg: { width: "4rem", height: "4rem", fontSize: "1.25rem" }
|
|
467
185
|
};
|
|
468
|
-
var Avatar = ({ fallback, size = "md", style, className }) => /* @__PURE__ */
|
|
186
|
+
var Avatar = ({ fallback, size = "md", style, className }) => /* @__PURE__ */ jsx4(
|
|
469
187
|
"div",
|
|
470
188
|
{
|
|
471
189
|
className,
|
|
@@ -487,7 +205,7 @@ var Avatar = ({ fallback, size = "md", style, className }) => /* @__PURE__ */ js
|
|
|
487
205
|
var Avatar_default = Avatar;
|
|
488
206
|
|
|
489
207
|
// src/components/Badge/Badge.tsx
|
|
490
|
-
import { jsx as
|
|
208
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
491
209
|
var variantMap2 = {
|
|
492
210
|
default: { backgroundColor: "var(--ds-primary, #3b82f6)", color: "#fff" },
|
|
493
211
|
secondary: { backgroundColor: "var(--ds-muted, #f1f5f9)", color: "var(--ds-text-secondary, #64748b)" },
|
|
@@ -502,7 +220,7 @@ var sizeMap2 = {
|
|
|
502
220
|
md: { padding: "0.25rem 0.625rem", fontSize: "0.75rem" },
|
|
503
221
|
lg: { padding: "0.375rem 0.875rem", fontSize: "0.875rem" }
|
|
504
222
|
};
|
|
505
|
-
var Badge = ({ variant = "default", size = "md", children, style }) => /* @__PURE__ */
|
|
223
|
+
var Badge = ({ variant = "default", size = "md", children, style }) => /* @__PURE__ */ jsx5("span", { style: __spreadValues(__spreadValues(__spreadValues({
|
|
506
224
|
display: "inline-flex",
|
|
507
225
|
alignItems: "center",
|
|
508
226
|
gap: "0.25rem",
|
|
@@ -513,12 +231,12 @@ var Badge = ({ variant = "default", size = "md", children, style }) => /* @__PUR
|
|
|
513
231
|
var Badge_default = Badge;
|
|
514
232
|
|
|
515
233
|
// src/components/Breadcrumb/Breadcrumb.tsx
|
|
516
|
-
import { useState as
|
|
234
|
+
import { useState as useState3 } from "react";
|
|
517
235
|
import { ChevronRight } from "lucide-react";
|
|
518
|
-
import { jsx as
|
|
236
|
+
import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
519
237
|
var Breadcrumb = ({ items }) => {
|
|
520
|
-
const [hovered, setHovered] =
|
|
521
|
-
return /* @__PURE__ */
|
|
238
|
+
const [hovered, setHovered] = useState3(null);
|
|
239
|
+
return /* @__PURE__ */ jsx6("nav", { "aria-label": "Breadcrumb", children: /* @__PURE__ */ jsx6("ol", { style: {
|
|
522
240
|
display: "flex",
|
|
523
241
|
flexWrap: "wrap",
|
|
524
242
|
alignItems: "center",
|
|
@@ -529,8 +247,8 @@ var Breadcrumb = ({ items }) => {
|
|
|
529
247
|
}, children: items.map((item, i) => {
|
|
530
248
|
const isLast = i === items.length - 1;
|
|
531
249
|
const isHovered = hovered === item.label;
|
|
532
|
-
return /* @__PURE__ */
|
|
533
|
-
i > 0 && /* @__PURE__ */
|
|
250
|
+
return /* @__PURE__ */ jsxs3("li", { style: { display: "flex", alignItems: "center" }, children: [
|
|
251
|
+
i > 0 && /* @__PURE__ */ jsx6(
|
|
534
252
|
ChevronRight,
|
|
535
253
|
{
|
|
536
254
|
size: 14,
|
|
@@ -538,11 +256,11 @@ var Breadcrumb = ({ items }) => {
|
|
|
538
256
|
style: { color: "var(--ds-text-secondary, #64748b)", margin: "0 0.25rem", flexShrink: 0 }
|
|
539
257
|
}
|
|
540
258
|
),
|
|
541
|
-
isLast || !item.href ? /* @__PURE__ */
|
|
259
|
+
isLast || !item.href ? /* @__PURE__ */ jsx6("span", { style: {
|
|
542
260
|
color: isLast ? "var(--ds-text-primary, #0f172a)" : "var(--ds-text-secondary, #64748b)",
|
|
543
261
|
fontWeight: isLast ? 500 : void 0,
|
|
544
262
|
cursor: isLast ? "default" : void 0
|
|
545
|
-
}, children: item.label }) : /* @__PURE__ */
|
|
263
|
+
}, children: item.label }) : /* @__PURE__ */ jsx6(
|
|
546
264
|
"a",
|
|
547
265
|
{
|
|
548
266
|
href: item.href,
|
|
@@ -563,8 +281,8 @@ var Breadcrumb_default = Breadcrumb;
|
|
|
563
281
|
|
|
564
282
|
// src/components/Button/Button.tsx
|
|
565
283
|
import { LoaderCircle } from "lucide-react";
|
|
566
|
-
import { useState as
|
|
567
|
-
import { Fragment, jsx as
|
|
284
|
+
import { useState as useState4 } from "react";
|
|
285
|
+
import { Fragment, jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
568
286
|
var variantStyles = {
|
|
569
287
|
solid: { backgroundColor: "var(--ds-primary, #3b82f6)", color: "#fff", borderColor: "transparent" },
|
|
570
288
|
outline: { backgroundColor: "transparent", color: "var(--ds-primary, #3b82f6)", borderColor: "var(--ds-primary, #3b82f6)" },
|
|
@@ -626,7 +344,7 @@ var Button = (_a) => {
|
|
|
626
344
|
"size",
|
|
627
345
|
"style"
|
|
628
346
|
]);
|
|
629
|
-
const [hovered, setHovered] =
|
|
347
|
+
const [hovered, setHovered] = useState4(false);
|
|
630
348
|
const resolvedVariant = variant != null ? variant : danger ? "danger" : warning ? "warning" : info ? "info" : success ? "success" : ghost ? "ghost" : outline ? "outline" : "solid";
|
|
631
349
|
const resolvedSize = size != null ? size : small ? "sm" : large ? "lg" : "md";
|
|
632
350
|
const isDisabled = disabled || loading;
|
|
@@ -644,9 +362,9 @@ var Button = (_a) => {
|
|
|
644
362
|
opacity: isDisabled ? 0.5 : 1,
|
|
645
363
|
pointerEvents: loading ? "none" : void 0
|
|
646
364
|
}, variantStyles[resolvedVariant]), sizeStyles[resolvedSize]), hovered && !isDisabled ? variantHoverStyles[resolvedVariant] : {}), styleProp);
|
|
647
|
-
return /* @__PURE__ */
|
|
648
|
-
/* @__PURE__ */
|
|
649
|
-
/* @__PURE__ */
|
|
365
|
+
return /* @__PURE__ */ jsxs4(Fragment, { children: [
|
|
366
|
+
/* @__PURE__ */ jsx7("style", { href: "ds-spin", precedence: "low", children: `@keyframes ds-spin { to { transform: rotate(360deg); } }` }),
|
|
367
|
+
/* @__PURE__ */ jsxs4(
|
|
650
368
|
"button",
|
|
651
369
|
__spreadProps(__spreadValues({
|
|
652
370
|
disabled: isDisabled,
|
|
@@ -655,7 +373,7 @@ var Button = (_a) => {
|
|
|
655
373
|
onMouseLeave: () => setHovered(false)
|
|
656
374
|
}, props), {
|
|
657
375
|
children: [
|
|
658
|
-
loading ? /* @__PURE__ */
|
|
376
|
+
loading ? /* @__PURE__ */ jsx7(
|
|
659
377
|
LoaderCircle,
|
|
660
378
|
{
|
|
661
379
|
"aria-hidden": true,
|
|
@@ -673,10 +391,10 @@ var Button = (_a) => {
|
|
|
673
391
|
var Button_default = Button;
|
|
674
392
|
|
|
675
393
|
// src/components/Card/Card.tsx
|
|
676
|
-
import { jsx as
|
|
394
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
677
395
|
var Card = (_a) => {
|
|
678
396
|
var _b = _a, { style } = _b, props = __objRest(_b, ["style"]);
|
|
679
|
-
return /* @__PURE__ */
|
|
397
|
+
return /* @__PURE__ */ jsx8("div", __spreadValues({ style: __spreadValues({
|
|
680
398
|
border: "1px solid var(--ds-border, #e2e8f0)",
|
|
681
399
|
borderRadius: "0.5rem",
|
|
682
400
|
backgroundColor: "var(--ds-card, #ffffff)"
|
|
@@ -684,7 +402,7 @@ var Card = (_a) => {
|
|
|
684
402
|
};
|
|
685
403
|
var CardHeader = (_a) => {
|
|
686
404
|
var _b = _a, { style } = _b, props = __objRest(_b, ["style"]);
|
|
687
|
-
return /* @__PURE__ */
|
|
405
|
+
return /* @__PURE__ */ jsx8("div", __spreadValues({ style: __spreadValues({
|
|
688
406
|
display: "flex",
|
|
689
407
|
flexDirection: "column",
|
|
690
408
|
gap: "0.375rem",
|
|
@@ -693,7 +411,7 @@ var CardHeader = (_a) => {
|
|
|
693
411
|
};
|
|
694
412
|
var CardTitle = (_a) => {
|
|
695
413
|
var _b = _a, { style } = _b, props = __objRest(_b, ["style"]);
|
|
696
|
-
return /* @__PURE__ */
|
|
414
|
+
return /* @__PURE__ */ jsx8("h3", __spreadValues({ style: __spreadValues({
|
|
697
415
|
fontSize: "1rem",
|
|
698
416
|
fontWeight: 600,
|
|
699
417
|
color: "var(--ds-text-primary, #0f172a)",
|
|
@@ -703,7 +421,7 @@ var CardTitle = (_a) => {
|
|
|
703
421
|
};
|
|
704
422
|
var CardDescription = (_a) => {
|
|
705
423
|
var _b = _a, { style } = _b, props = __objRest(_b, ["style"]);
|
|
706
|
-
return /* @__PURE__ */
|
|
424
|
+
return /* @__PURE__ */ jsx8("p", __spreadValues({ style: __spreadValues({
|
|
707
425
|
fontSize: "0.875rem",
|
|
708
426
|
color: "var(--ds-text-secondary, #64748b)",
|
|
709
427
|
margin: 0
|
|
@@ -711,11 +429,11 @@ var CardDescription = (_a) => {
|
|
|
711
429
|
};
|
|
712
430
|
var CardContent = (_a) => {
|
|
713
431
|
var _b = _a, { style } = _b, props = __objRest(_b, ["style"]);
|
|
714
|
-
return /* @__PURE__ */
|
|
432
|
+
return /* @__PURE__ */ jsx8("div", __spreadValues({ style: __spreadValues({ padding: "1.5rem" }, style) }, props));
|
|
715
433
|
};
|
|
716
434
|
var CardFooter = (_a) => {
|
|
717
435
|
var _b = _a, { style } = _b, props = __objRest(_b, ["style"]);
|
|
718
|
-
return /* @__PURE__ */
|
|
436
|
+
return /* @__PURE__ */ jsx8("div", __spreadValues({ style: __spreadValues({
|
|
719
437
|
display: "flex",
|
|
720
438
|
alignItems: "center",
|
|
721
439
|
padding: "0 1.5rem 1.5rem"
|
|
@@ -723,8 +441,8 @@ var CardFooter = (_a) => {
|
|
|
723
441
|
};
|
|
724
442
|
|
|
725
443
|
// src/components/Checkbox/Checkbox.tsx
|
|
726
|
-
import { useState as
|
|
727
|
-
import { jsx as
|
|
444
|
+
import { useState as useState5 } from "react";
|
|
445
|
+
import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
728
446
|
var Checkbox = ({
|
|
729
447
|
label,
|
|
730
448
|
checked,
|
|
@@ -733,7 +451,7 @@ var Checkbox = ({
|
|
|
733
451
|
id,
|
|
734
452
|
onChange
|
|
735
453
|
}) => {
|
|
736
|
-
const [internal, setInternal] =
|
|
454
|
+
const [internal, setInternal] = useState5(defaultChecked);
|
|
737
455
|
const isChecked = checked !== void 0 ? checked : internal;
|
|
738
456
|
const handleChange = () => {
|
|
739
457
|
if (disabled) return;
|
|
@@ -741,7 +459,7 @@ var Checkbox = ({
|
|
|
741
459
|
setInternal(next);
|
|
742
460
|
onChange == null ? void 0 : onChange(next);
|
|
743
461
|
};
|
|
744
|
-
return /* @__PURE__ */
|
|
462
|
+
return /* @__PURE__ */ jsxs5("label", { htmlFor: id, style: {
|
|
745
463
|
display: "inline-flex",
|
|
746
464
|
alignItems: "center",
|
|
747
465
|
gap: "0.5rem",
|
|
@@ -749,7 +467,7 @@ var Checkbox = ({
|
|
|
749
467
|
userSelect: "none",
|
|
750
468
|
opacity: disabled ? 0.5 : 1
|
|
751
469
|
}, children: [
|
|
752
|
-
/* @__PURE__ */
|
|
470
|
+
/* @__PURE__ */ jsx9(
|
|
753
471
|
"input",
|
|
754
472
|
{
|
|
755
473
|
type: "checkbox",
|
|
@@ -760,7 +478,7 @@ var Checkbox = ({
|
|
|
760
478
|
style: { position: "absolute", opacity: 0, width: 0, height: 0 }
|
|
761
479
|
}
|
|
762
480
|
),
|
|
763
|
-
/* @__PURE__ */
|
|
481
|
+
/* @__PURE__ */ jsx9("span", { style: {
|
|
764
482
|
width: "1.125rem",
|
|
765
483
|
height: "1.125rem",
|
|
766
484
|
border: `2px solid ${isChecked ? "var(--ds-primary, #3b82f6)" : "var(--ds-border, #e2e8f0)"}`,
|
|
@@ -771,25 +489,25 @@ var Checkbox = ({
|
|
|
771
489
|
flexShrink: 0,
|
|
772
490
|
transition: "background-color 0.15s, border-color 0.15s",
|
|
773
491
|
backgroundColor: isChecked ? "var(--ds-primary, #3b82f6)" : "var(--ds-card, #fff)"
|
|
774
|
-
}, children: isChecked && /* @__PURE__ */
|
|
775
|
-
label && /* @__PURE__ */
|
|
492
|
+
}, children: isChecked && /* @__PURE__ */ jsx9("svg", { viewBox: "0 0 12 10", fill: "none", style: { width: "0.625rem", height: "0.625rem" }, children: /* @__PURE__ */ jsx9("path", { d: "M1 5l3.5 3.5L11 1", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }) }),
|
|
493
|
+
label && /* @__PURE__ */ jsx9("span", { style: { fontSize: "0.875rem", color: "var(--ds-text-primary, #0f172a)" }, children: label })
|
|
776
494
|
] });
|
|
777
495
|
};
|
|
778
496
|
var Checkbox_default = Checkbox;
|
|
779
497
|
|
|
780
498
|
// src/components/CopyButton/CopyButton.tsx
|
|
781
499
|
import { Check, Copy } from "lucide-react";
|
|
782
|
-
import { useState as
|
|
783
|
-
import { jsx as
|
|
500
|
+
import { useState as useState6 } from "react";
|
|
501
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
784
502
|
var CopyButton = ({ text }) => {
|
|
785
|
-
const [copied, setCopied] =
|
|
786
|
-
const [hovered, setHovered] =
|
|
503
|
+
const [copied, setCopied] = useState6(false);
|
|
504
|
+
const [hovered, setHovered] = useState6(false);
|
|
787
505
|
const handleCopy = () => {
|
|
788
506
|
navigator.clipboard.writeText(text);
|
|
789
507
|
setCopied(true);
|
|
790
508
|
setTimeout(() => setCopied(false), 2e3);
|
|
791
509
|
};
|
|
792
|
-
return /* @__PURE__ */
|
|
510
|
+
return /* @__PURE__ */ jsx10(
|
|
793
511
|
"button",
|
|
794
512
|
{
|
|
795
513
|
onClick: handleCopy,
|
|
@@ -808,7 +526,7 @@ var CopyButton = ({ text }) => {
|
|
|
808
526
|
cursor: "pointer",
|
|
809
527
|
transition: "background-color 0.15s, color 0.15s"
|
|
810
528
|
},
|
|
811
|
-
children: copied ? /* @__PURE__ */
|
|
529
|
+
children: copied ? /* @__PURE__ */ jsx10(Check, { style: { width: "1rem", height: "1rem" } }) : /* @__PURE__ */ jsx10(Copy, { style: { width: "1rem", height: "1rem" } })
|
|
812
530
|
}
|
|
813
531
|
);
|
|
814
532
|
};
|
|
@@ -816,19 +534,19 @@ var CopyButton_default = CopyButton;
|
|
|
816
534
|
|
|
817
535
|
// src/components/FileUpload/FileUpload.tsx
|
|
818
536
|
import { Upload } from "lucide-react";
|
|
819
|
-
import { useRef
|
|
820
|
-
import { jsx as
|
|
537
|
+
import { useRef, useState as useState7 } from "react";
|
|
538
|
+
import { jsx as jsx11, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
821
539
|
var FileUpload = ({ accept, multiple, disabled, onFileSelect }) => {
|
|
822
|
-
const [isDragging, setIsDragging] =
|
|
823
|
-
const [isHovered, setIsHovered] =
|
|
824
|
-
const [fileNames, setFileNames] =
|
|
825
|
-
const inputRef =
|
|
540
|
+
const [isDragging, setIsDragging] = useState7(false);
|
|
541
|
+
const [isHovered, setIsHovered] = useState7(false);
|
|
542
|
+
const [fileNames, setFileNames] = useState7([]);
|
|
543
|
+
const inputRef = useRef(null);
|
|
826
544
|
const handleFiles = (list) => {
|
|
827
545
|
setFileNames(Array.from(list).map((f) => f.name));
|
|
828
546
|
onFileSelect == null ? void 0 : onFileSelect(list);
|
|
829
547
|
};
|
|
830
548
|
const isActive = isDragging || isHovered;
|
|
831
|
-
return /* @__PURE__ */
|
|
549
|
+
return /* @__PURE__ */ jsxs6(
|
|
832
550
|
"div",
|
|
833
551
|
{
|
|
834
552
|
onClick: () => {
|
|
@@ -862,7 +580,7 @@ var FileUpload = ({ accept, multiple, disabled, onFileSelect }) => {
|
|
|
862
580
|
opacity: disabled ? 0.5 : 1
|
|
863
581
|
},
|
|
864
582
|
children: [
|
|
865
|
-
/* @__PURE__ */
|
|
583
|
+
/* @__PURE__ */ jsx11(
|
|
866
584
|
"input",
|
|
867
585
|
{
|
|
868
586
|
ref: inputRef,
|
|
@@ -874,9 +592,9 @@ var FileUpload = ({ accept, multiple, disabled, onFileSelect }) => {
|
|
|
874
592
|
onChange: (e) => e.target.files && handleFiles(e.target.files)
|
|
875
593
|
}
|
|
876
594
|
),
|
|
877
|
-
/* @__PURE__ */
|
|
878
|
-
fileNames.length > 0 ? /* @__PURE__ */
|
|
879
|
-
/* @__PURE__ */
|
|
595
|
+
/* @__PURE__ */ jsx11(Upload, { size: 32, style: { color: "var(--ds-text-secondary, #64748b)" } }),
|
|
596
|
+
fileNames.length > 0 ? /* @__PURE__ */ jsx11("p", { style: { fontSize: "0.875rem", color: "var(--ds-primary, #3b82f6)", fontWeight: 500, margin: 0 }, children: fileNames.join(", ") }) : /* @__PURE__ */ jsxs6("p", { style: { fontSize: "0.875rem", color: "var(--ds-text-secondary, #64748b)", margin: 0 }, children: [
|
|
597
|
+
/* @__PURE__ */ jsx11("strong", { children: "Click to upload" }),
|
|
880
598
|
" or drag and drop"
|
|
881
599
|
] })
|
|
882
600
|
]
|
|
@@ -886,7 +604,7 @@ var FileUpload = ({ accept, multiple, disabled, onFileSelect }) => {
|
|
|
886
604
|
var FileUpload_default = FileUpload;
|
|
887
605
|
|
|
888
606
|
// src/components/Input/Input.tsx
|
|
889
|
-
import { Fragment as Fragment2, jsx as
|
|
607
|
+
import { Fragment as Fragment2, jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
890
608
|
var inputCSS = `
|
|
891
609
|
[data-ds-input]::placeholder { color: var(--ds-text-secondary, #64748b); }
|
|
892
610
|
[data-ds-input]:focus { outline: none; border-color: var(--ds-primary, #3b82f6); box-shadow: 0 0 0 3px rgb(59 130 246 / 0.15); }
|
|
@@ -896,10 +614,10 @@ var inputCSS = `
|
|
|
896
614
|
`;
|
|
897
615
|
var Input = (_a) => {
|
|
898
616
|
var _b = _a, { error, success, leftIcon, rightIcon, style } = _b, props = __objRest(_b, ["error", "success", "leftIcon", "rightIcon", "style"]);
|
|
899
|
-
return /* @__PURE__ */
|
|
900
|
-
/* @__PURE__ */
|
|
901
|
-
/* @__PURE__ */
|
|
902
|
-
leftIcon && /* @__PURE__ */
|
|
617
|
+
return /* @__PURE__ */ jsxs7(Fragment2, { children: [
|
|
618
|
+
/* @__PURE__ */ jsx12("style", { href: "ds-input", precedence: "low", children: inputCSS }),
|
|
619
|
+
/* @__PURE__ */ jsxs7("div", { style: { position: "relative", display: "flex", alignItems: "center", width: "100%" }, children: [
|
|
620
|
+
leftIcon && /* @__PURE__ */ jsx12("span", { style: {
|
|
903
621
|
position: "absolute",
|
|
904
622
|
left: "0.625rem",
|
|
905
623
|
display: "flex",
|
|
@@ -907,7 +625,7 @@ var Input = (_a) => {
|
|
|
907
625
|
color: "var(--ds-text-secondary, #64748b)",
|
|
908
626
|
pointerEvents: "none"
|
|
909
627
|
}, children: leftIcon }),
|
|
910
|
-
/* @__PURE__ */
|
|
628
|
+
/* @__PURE__ */ jsx12(
|
|
911
629
|
"input",
|
|
912
630
|
__spreadValues({
|
|
913
631
|
"data-ds-input": "",
|
|
@@ -930,7 +648,7 @@ var Input = (_a) => {
|
|
|
930
648
|
}, style)
|
|
931
649
|
}, props)
|
|
932
650
|
),
|
|
933
|
-
rightIcon && /* @__PURE__ */
|
|
651
|
+
rightIcon && /* @__PURE__ */ jsx12("span", { style: {
|
|
934
652
|
position: "absolute",
|
|
935
653
|
right: "0.625rem",
|
|
936
654
|
display: "flex",
|
|
@@ -944,10 +662,10 @@ var Input = (_a) => {
|
|
|
944
662
|
var Input_default = Input;
|
|
945
663
|
|
|
946
664
|
// src/components/Label/Label.tsx
|
|
947
|
-
import { jsx as
|
|
665
|
+
import { jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
948
666
|
var Label = (_a) => {
|
|
949
667
|
var _b = _a, { children, required, style } = _b, props = __objRest(_b, ["children", "required", "style"]);
|
|
950
|
-
return /* @__PURE__ */
|
|
668
|
+
return /* @__PURE__ */ jsxs8("label", __spreadProps(__spreadValues({ style: __spreadValues({
|
|
951
669
|
display: "block",
|
|
952
670
|
fontSize: "0.875rem",
|
|
953
671
|
fontWeight: 500,
|
|
@@ -955,29 +673,29 @@ var Label = (_a) => {
|
|
|
955
673
|
marginBottom: "0.375rem"
|
|
956
674
|
}, style) }, props), { children: [
|
|
957
675
|
children,
|
|
958
|
-
required && /* @__PURE__ */
|
|
676
|
+
required && /* @__PURE__ */ jsx13("span", { style: { color: "var(--ds-danger, #ef4444)", marginLeft: "0.25rem" }, children: "*" })
|
|
959
677
|
] }));
|
|
960
678
|
};
|
|
961
679
|
var Label_default = Label;
|
|
962
680
|
|
|
963
681
|
// src/components/PasswordInput/PasswordInput.tsx
|
|
964
682
|
import { Eye, EyeOff } from "lucide-react";
|
|
965
|
-
import { useState as
|
|
966
|
-
import { jsx as
|
|
683
|
+
import { useState as useState8 } from "react";
|
|
684
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
967
685
|
var PasswordInput = (props) => {
|
|
968
|
-
const [visible, setVisible] =
|
|
969
|
-
return /* @__PURE__ */
|
|
686
|
+
const [visible, setVisible] = useState8(false);
|
|
687
|
+
return /* @__PURE__ */ jsx14(
|
|
970
688
|
Input_default,
|
|
971
689
|
__spreadProps(__spreadValues({}, props), {
|
|
972
690
|
type: visible ? "text" : "password",
|
|
973
|
-
rightIcon: /* @__PURE__ */
|
|
691
|
+
rightIcon: /* @__PURE__ */ jsx14(
|
|
974
692
|
"button",
|
|
975
693
|
{
|
|
976
694
|
type: "button",
|
|
977
695
|
onClick: () => setVisible((v) => !v),
|
|
978
696
|
style: { background: "none", border: "none", cursor: "pointer", padding: 0, display: "flex", pointerEvents: "all" },
|
|
979
697
|
tabIndex: -1,
|
|
980
|
-
children: visible ? /* @__PURE__ */
|
|
698
|
+
children: visible ? /* @__PURE__ */ jsx14(EyeOff, { size: 16 }) : /* @__PURE__ */ jsx14(Eye, { size: 16 })
|
|
981
699
|
}
|
|
982
700
|
)
|
|
983
701
|
})
|
|
@@ -986,10 +704,10 @@ var PasswordInput = (props) => {
|
|
|
986
704
|
var PasswordInput_default = PasswordInput;
|
|
987
705
|
|
|
988
706
|
// src/components/Progress/Progress.tsx
|
|
989
|
-
import { jsx as
|
|
707
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
990
708
|
var Progress = ({ value = 0 }) => {
|
|
991
709
|
const pct = Math.min(100, Math.max(0, value));
|
|
992
|
-
return /* @__PURE__ */
|
|
710
|
+
return /* @__PURE__ */ jsx15(
|
|
993
711
|
"div",
|
|
994
712
|
{
|
|
995
713
|
role: "progressbar",
|
|
@@ -1003,7 +721,7 @@ var Progress = ({ value = 0 }) => {
|
|
|
1003
721
|
borderRadius: "9999px",
|
|
1004
722
|
overflow: "hidden"
|
|
1005
723
|
},
|
|
1006
|
-
children: /* @__PURE__ */
|
|
724
|
+
children: /* @__PURE__ */ jsx15("div", { style: {
|
|
1007
725
|
height: "100%",
|
|
1008
726
|
width: `${pct}%`,
|
|
1009
727
|
backgroundColor: "var(--ds-primary, #3b82f6)",
|
|
@@ -1016,8 +734,8 @@ var Progress = ({ value = 0 }) => {
|
|
|
1016
734
|
var Progress_default = Progress;
|
|
1017
735
|
|
|
1018
736
|
// src/components/RadioGroup/RadioGroup.tsx
|
|
1019
|
-
import { useState as
|
|
1020
|
-
import { jsx as
|
|
737
|
+
import { useState as useState9 } from "react";
|
|
738
|
+
import { jsx as jsx16, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1021
739
|
var RadioGroup = ({
|
|
1022
740
|
options,
|
|
1023
741
|
name,
|
|
@@ -1026,16 +744,16 @@ var RadioGroup = ({
|
|
|
1026
744
|
disabled,
|
|
1027
745
|
onChange
|
|
1028
746
|
}) => {
|
|
1029
|
-
const [internal, setInternal] =
|
|
747
|
+
const [internal, setInternal] = useState9(defaultValue);
|
|
1030
748
|
const selected = value !== void 0 ? value : internal;
|
|
1031
749
|
const handleChange = (val) => {
|
|
1032
750
|
if (disabled) return;
|
|
1033
751
|
setInternal(val);
|
|
1034
752
|
onChange == null ? void 0 : onChange(val);
|
|
1035
753
|
};
|
|
1036
|
-
return /* @__PURE__ */
|
|
754
|
+
return /* @__PURE__ */ jsx16("div", { style: { display: "flex", flexDirection: "column", gap: "0.5rem" }, children: options.map((option) => {
|
|
1037
755
|
const isSelected = selected === option.value;
|
|
1038
|
-
return /* @__PURE__ */
|
|
756
|
+
return /* @__PURE__ */ jsxs9("label", { style: {
|
|
1039
757
|
display: "inline-flex",
|
|
1040
758
|
alignItems: "center",
|
|
1041
759
|
gap: "0.5rem",
|
|
@@ -1043,7 +761,7 @@ var RadioGroup = ({
|
|
|
1043
761
|
userSelect: "none",
|
|
1044
762
|
opacity: disabled ? 0.5 : 1
|
|
1045
763
|
}, children: [
|
|
1046
|
-
/* @__PURE__ */
|
|
764
|
+
/* @__PURE__ */ jsx16(
|
|
1047
765
|
"input",
|
|
1048
766
|
{
|
|
1049
767
|
type: "radio",
|
|
@@ -1055,7 +773,7 @@ var RadioGroup = ({
|
|
|
1055
773
|
style: { position: "absolute", opacity: 0, width: 0, height: 0 }
|
|
1056
774
|
}
|
|
1057
775
|
),
|
|
1058
|
-
/* @__PURE__ */
|
|
776
|
+
/* @__PURE__ */ jsx16("span", { style: {
|
|
1059
777
|
width: "1.125rem",
|
|
1060
778
|
height: "1.125rem",
|
|
1061
779
|
borderRadius: "9999px",
|
|
@@ -1066,13 +784,13 @@ var RadioGroup = ({
|
|
|
1066
784
|
flexShrink: 0,
|
|
1067
785
|
backgroundColor: "var(--ds-card, #fff)",
|
|
1068
786
|
transition: "border-color 0.15s"
|
|
1069
|
-
}, children: isSelected && /* @__PURE__ */
|
|
787
|
+
}, children: isSelected && /* @__PURE__ */ jsx16("span", { style: {
|
|
1070
788
|
width: "0.5rem",
|
|
1071
789
|
height: "0.5rem",
|
|
1072
790
|
borderRadius: "9999px",
|
|
1073
791
|
backgroundColor: "var(--ds-primary, #3b82f6)"
|
|
1074
792
|
} }) }),
|
|
1075
|
-
/* @__PURE__ */
|
|
793
|
+
/* @__PURE__ */ jsx16("span", { style: { fontSize: "0.875rem", color: "var(--ds-text-primary, #0f172a)" }, children: option.label })
|
|
1076
794
|
] }, option.value);
|
|
1077
795
|
}) });
|
|
1078
796
|
};
|
|
@@ -1080,8 +798,8 @@ var RadioGroup_default = RadioGroup;
|
|
|
1080
798
|
|
|
1081
799
|
// src/components/Select/Select.tsx
|
|
1082
800
|
import { Check as Check2, ChevronDown as ChevronDown2 } from "lucide-react";
|
|
1083
|
-
import { useEffect
|
|
1084
|
-
import { Fragment as Fragment3, jsx as
|
|
801
|
+
import { useEffect, useRef as useRef2, useState as useState10 } from "react";
|
|
802
|
+
import { Fragment as Fragment3, jsx as jsx17, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
1085
803
|
var selectCSS = `
|
|
1086
804
|
[data-ds-select-trigger]:focus { outline: none; border-color: var(--ds-primary, #3b82f6); box-shadow: 0 0 0 3px rgb(59 130 246 / 0.15); }
|
|
1087
805
|
`;
|
|
@@ -1094,10 +812,10 @@ var Select = ({
|
|
|
1094
812
|
onChange
|
|
1095
813
|
}) => {
|
|
1096
814
|
var _a;
|
|
1097
|
-
const [internal, setInternal] =
|
|
1098
|
-
const [open, setOpen] =
|
|
1099
|
-
const [hoveredOption, setHoveredOption] =
|
|
1100
|
-
const ref =
|
|
815
|
+
const [internal, setInternal] = useState10(defaultValue);
|
|
816
|
+
const [open, setOpen] = useState10(false);
|
|
817
|
+
const [hoveredOption, setHoveredOption] = useState10(null);
|
|
818
|
+
const ref = useRef2(null);
|
|
1101
819
|
const selected = value !== void 0 ? value : internal;
|
|
1102
820
|
const selectedLabel = (_a = options.find((o) => o.value === selected)) == null ? void 0 : _a.label;
|
|
1103
821
|
const handleSelect = (val) => {
|
|
@@ -1105,22 +823,22 @@ var Select = ({
|
|
|
1105
823
|
setOpen(false);
|
|
1106
824
|
onChange == null ? void 0 : onChange(val);
|
|
1107
825
|
};
|
|
1108
|
-
|
|
826
|
+
useEffect(() => {
|
|
1109
827
|
const handleOutside = (e) => {
|
|
1110
828
|
if (ref.current && !ref.current.contains(e.target)) setOpen(false);
|
|
1111
829
|
};
|
|
1112
830
|
document.addEventListener("mousedown", handleOutside);
|
|
1113
831
|
return () => document.removeEventListener("mousedown", handleOutside);
|
|
1114
832
|
}, []);
|
|
1115
|
-
return /* @__PURE__ */
|
|
1116
|
-
/* @__PURE__ */
|
|
1117
|
-
/* @__PURE__ */
|
|
833
|
+
return /* @__PURE__ */ jsxs10(Fragment3, { children: [
|
|
834
|
+
/* @__PURE__ */ jsx17("style", { href: "ds-select", precedence: "low", children: selectCSS }),
|
|
835
|
+
/* @__PURE__ */ jsxs10("div", { ref, style: {
|
|
1118
836
|
position: "relative",
|
|
1119
837
|
width: "100%",
|
|
1120
838
|
opacity: disabled ? 0.5 : 1,
|
|
1121
839
|
pointerEvents: disabled ? "none" : void 0
|
|
1122
840
|
}, children: [
|
|
1123
|
-
/* @__PURE__ */
|
|
841
|
+
/* @__PURE__ */ jsxs10(
|
|
1124
842
|
"button",
|
|
1125
843
|
{
|
|
1126
844
|
type: "button",
|
|
@@ -1146,8 +864,8 @@ var Select = ({
|
|
|
1146
864
|
fontFamily: "inherit"
|
|
1147
865
|
},
|
|
1148
866
|
children: [
|
|
1149
|
-
/* @__PURE__ */
|
|
1150
|
-
/* @__PURE__ */
|
|
867
|
+
/* @__PURE__ */ jsx17("span", { style: { color: selectedLabel ? "var(--ds-text-primary, #0f172a)" : "var(--ds-text-secondary, #64748b)" }, children: selectedLabel != null ? selectedLabel : placeholder }),
|
|
868
|
+
/* @__PURE__ */ jsx17(
|
|
1151
869
|
ChevronDown2,
|
|
1152
870
|
{
|
|
1153
871
|
size: 16,
|
|
@@ -1162,7 +880,7 @@ var Select = ({
|
|
|
1162
880
|
]
|
|
1163
881
|
}
|
|
1164
882
|
),
|
|
1165
|
-
open && /* @__PURE__ */
|
|
883
|
+
open && /* @__PURE__ */ jsx17("div", { style: {
|
|
1166
884
|
position: "absolute",
|
|
1167
885
|
top: "calc(100% + 0.25rem)",
|
|
1168
886
|
left: 0,
|
|
@@ -1176,7 +894,7 @@ var Select = ({
|
|
|
1176
894
|
}, children: options.map((option) => {
|
|
1177
895
|
const isSelected = selected === option.value;
|
|
1178
896
|
const isHovered = hoveredOption === option.value;
|
|
1179
|
-
return /* @__PURE__ */
|
|
897
|
+
return /* @__PURE__ */ jsxs10(
|
|
1180
898
|
"div",
|
|
1181
899
|
{
|
|
1182
900
|
onClick: () => handleSelect(option.value),
|
|
@@ -1195,7 +913,7 @@ var Select = ({
|
|
|
1195
913
|
transition: "background-color 0.1s"
|
|
1196
914
|
},
|
|
1197
915
|
children: [
|
|
1198
|
-
isSelected ? /* @__PURE__ */
|
|
916
|
+
isSelected ? /* @__PURE__ */ jsx17(Check2, { size: 14, style: { color: "var(--ds-primary, #3b82f6)", flexShrink: 0 } }) : /* @__PURE__ */ jsx17("span", { style: { width: 14, flexShrink: 0 } }),
|
|
1199
917
|
option.label
|
|
1200
918
|
]
|
|
1201
919
|
},
|
|
@@ -1208,13 +926,13 @@ var Select = ({
|
|
|
1208
926
|
var Select_default = Select;
|
|
1209
927
|
|
|
1210
928
|
// src/components/Skeleton/Skeleton.tsx
|
|
1211
|
-
import { Fragment as Fragment4, jsx as
|
|
1212
|
-
var Skeleton = ({ height = "1rem", width = "100%", circle = false }) => /* @__PURE__ */
|
|
1213
|
-
/* @__PURE__ */
|
|
929
|
+
import { Fragment as Fragment4, jsx as jsx18, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
930
|
+
var Skeleton = ({ height = "1rem", width = "100%", circle = false }) => /* @__PURE__ */ jsxs11(Fragment4, { children: [
|
|
931
|
+
/* @__PURE__ */ jsx18("style", { href: "ds-skeleton", precedence: "low", children: `
|
|
1214
932
|
@keyframes ds-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.4; } }
|
|
1215
933
|
[data-ds-skeleton] { animation: ds-pulse 1.5s ease-in-out infinite; }
|
|
1216
934
|
` }),
|
|
1217
|
-
/* @__PURE__ */
|
|
935
|
+
/* @__PURE__ */ jsx18(
|
|
1218
936
|
"div",
|
|
1219
937
|
{
|
|
1220
938
|
"data-ds-skeleton": "",
|
|
@@ -1231,8 +949,8 @@ var Skeleton = ({ height = "1rem", width = "100%", circle = false }) => /* @__PU
|
|
|
1231
949
|
var Skeleton_default = Skeleton;
|
|
1232
950
|
|
|
1233
951
|
// src/components/Slider/Slider.tsx
|
|
1234
|
-
import { useState as
|
|
1235
|
-
import { Fragment as Fragment5, jsx as
|
|
952
|
+
import { useState as useState11 } from "react";
|
|
953
|
+
import { Fragment as Fragment5, jsx as jsx19, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1236
954
|
var sliderCSS = `
|
|
1237
955
|
[data-ds-slider] {
|
|
1238
956
|
-webkit-appearance: none;
|
|
@@ -1283,7 +1001,7 @@ var Slider = ({
|
|
|
1283
1001
|
disabled,
|
|
1284
1002
|
onChange
|
|
1285
1003
|
}) => {
|
|
1286
|
-
const [internal, setInternal] =
|
|
1004
|
+
const [internal, setInternal] = useState11(defaultValue);
|
|
1287
1005
|
const current = value !== void 0 ? value : internal;
|
|
1288
1006
|
const fill = `${(current - min) / (max - min) * 100}%`;
|
|
1289
1007
|
const handleChange = (e) => {
|
|
@@ -1291,13 +1009,13 @@ var Slider = ({
|
|
|
1291
1009
|
setInternal(val);
|
|
1292
1010
|
onChange == null ? void 0 : onChange(val);
|
|
1293
1011
|
};
|
|
1294
|
-
return /* @__PURE__ */
|
|
1295
|
-
/* @__PURE__ */
|
|
1296
|
-
/* @__PURE__ */
|
|
1012
|
+
return /* @__PURE__ */ jsxs12(Fragment5, { children: [
|
|
1013
|
+
/* @__PURE__ */ jsx19("style", { href: "ds-slider", precedence: "low", children: sliderCSS }),
|
|
1014
|
+
/* @__PURE__ */ jsx19("div", { style: {
|
|
1297
1015
|
width: "100%",
|
|
1298
1016
|
padding: "0.25rem 0",
|
|
1299
1017
|
opacity: disabled ? 0.5 : 1
|
|
1300
|
-
}, children: /* @__PURE__ */
|
|
1018
|
+
}, children: /* @__PURE__ */ jsx19(
|
|
1301
1019
|
"input",
|
|
1302
1020
|
{
|
|
1303
1021
|
type: "range",
|
|
@@ -1317,11 +1035,11 @@ var Slider_default = Slider;
|
|
|
1317
1035
|
|
|
1318
1036
|
// src/components/Spinner/Spinner.tsx
|
|
1319
1037
|
import { Loader2 } from "lucide-react";
|
|
1320
|
-
import { Fragment as Fragment6, jsx as
|
|
1038
|
+
import { Fragment as Fragment6, jsx as jsx20, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1321
1039
|
var sizePx = { sm: 16, md: 24, lg: 32 };
|
|
1322
|
-
var Spinner = ({ size = "md" }) => /* @__PURE__ */
|
|
1323
|
-
/* @__PURE__ */
|
|
1324
|
-
/* @__PURE__ */
|
|
1040
|
+
var Spinner = ({ size = "md" }) => /* @__PURE__ */ jsxs13(Fragment6, { children: [
|
|
1041
|
+
/* @__PURE__ */ jsx20("style", { href: "ds-spin", precedence: "low", children: `@keyframes ds-spin { to { transform: rotate(360deg); } }` }),
|
|
1042
|
+
/* @__PURE__ */ jsx20(
|
|
1325
1043
|
Loader2,
|
|
1326
1044
|
{
|
|
1327
1045
|
size: sizePx[size],
|
|
@@ -1333,8 +1051,8 @@ var Spinner = ({ size = "md" }) => /* @__PURE__ */ jsxs17(Fragment6, { children:
|
|
|
1333
1051
|
var Spinner_default = Spinner;
|
|
1334
1052
|
|
|
1335
1053
|
// src/components/Switch/Switch.tsx
|
|
1336
|
-
import { useState as
|
|
1337
|
-
import { jsx as
|
|
1054
|
+
import { useState as useState12 } from "react";
|
|
1055
|
+
import { jsx as jsx21, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1338
1056
|
var Switch = ({
|
|
1339
1057
|
label,
|
|
1340
1058
|
checked,
|
|
@@ -1343,7 +1061,7 @@ var Switch = ({
|
|
|
1343
1061
|
id,
|
|
1344
1062
|
onChange
|
|
1345
1063
|
}) => {
|
|
1346
|
-
const [internal, setInternal] =
|
|
1064
|
+
const [internal, setInternal] = useState12(defaultChecked);
|
|
1347
1065
|
const isOn = checked !== void 0 ? checked : internal;
|
|
1348
1066
|
const handleToggle = () => {
|
|
1349
1067
|
if (disabled) return;
|
|
@@ -1351,7 +1069,7 @@ var Switch = ({
|
|
|
1351
1069
|
setInternal(next);
|
|
1352
1070
|
onChange == null ? void 0 : onChange(next);
|
|
1353
1071
|
};
|
|
1354
|
-
return /* @__PURE__ */
|
|
1072
|
+
return /* @__PURE__ */ jsxs14("label", { htmlFor: id, style: {
|
|
1355
1073
|
display: "inline-flex",
|
|
1356
1074
|
alignItems: "center",
|
|
1357
1075
|
gap: "0.625rem",
|
|
@@ -1359,7 +1077,7 @@ var Switch = ({
|
|
|
1359
1077
|
userSelect: "none",
|
|
1360
1078
|
opacity: disabled ? 0.5 : 1
|
|
1361
1079
|
}, children: [
|
|
1362
|
-
/* @__PURE__ */
|
|
1080
|
+
/* @__PURE__ */ jsx21(
|
|
1363
1081
|
"input",
|
|
1364
1082
|
{
|
|
1365
1083
|
type: "checkbox",
|
|
@@ -1370,7 +1088,7 @@ var Switch = ({
|
|
|
1370
1088
|
style: { position: "absolute", opacity: 0, width: 0, height: 0 }
|
|
1371
1089
|
}
|
|
1372
1090
|
),
|
|
1373
|
-
/* @__PURE__ */
|
|
1091
|
+
/* @__PURE__ */ jsx21("span", { style: {
|
|
1374
1092
|
width: "2.75rem",
|
|
1375
1093
|
height: "1.5rem",
|
|
1376
1094
|
borderRadius: "9999px",
|
|
@@ -1378,7 +1096,7 @@ var Switch = ({
|
|
|
1378
1096
|
position: "relative",
|
|
1379
1097
|
transition: "background-color 0.2s",
|
|
1380
1098
|
flexShrink: 0
|
|
1381
|
-
}, children: /* @__PURE__ */
|
|
1099
|
+
}, children: /* @__PURE__ */ jsx21("span", { style: {
|
|
1382
1100
|
position: "absolute",
|
|
1383
1101
|
top: "0.175rem",
|
|
1384
1102
|
left: "0.175rem",
|
|
@@ -1390,41 +1108,41 @@ var Switch = ({
|
|
|
1390
1108
|
transition: "transform 0.2s",
|
|
1391
1109
|
transform: isOn ? "translateX(1.25rem)" : "translateX(0)"
|
|
1392
1110
|
} }) }),
|
|
1393
|
-
label && /* @__PURE__ */
|
|
1111
|
+
label && /* @__PURE__ */ jsx21("span", { style: { fontSize: "0.875rem", color: "var(--ds-text-primary, #0f172a)" }, children: label })
|
|
1394
1112
|
] });
|
|
1395
1113
|
};
|
|
1396
1114
|
var Switch_default = Switch;
|
|
1397
1115
|
|
|
1398
1116
|
// src/components/Table/Table.tsx
|
|
1399
|
-
import { Fragment as Fragment7, jsx as
|
|
1117
|
+
import { Fragment as Fragment7, jsx as jsx22, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1400
1118
|
var tableCSS = `
|
|
1401
1119
|
[data-ds-table-row]:hover [data-ds-table-cell] { background-color: var(--ds-muted, #f1f5f9); }
|
|
1402
1120
|
`;
|
|
1403
1121
|
var Table = (_a) => {
|
|
1404
1122
|
var _b = _a, { style } = _b, props = __objRest(_b, ["style"]);
|
|
1405
|
-
return /* @__PURE__ */
|
|
1406
|
-
/* @__PURE__ */
|
|
1407
|
-
/* @__PURE__ */
|
|
1123
|
+
return /* @__PURE__ */ jsxs15(Fragment7, { children: [
|
|
1124
|
+
/* @__PURE__ */ jsx22("style", { href: "ds-table", precedence: "low", children: tableCSS }),
|
|
1125
|
+
/* @__PURE__ */ jsx22("div", { style: {
|
|
1408
1126
|
width: "100%",
|
|
1409
1127
|
overflowX: "auto",
|
|
1410
1128
|
border: "1px solid var(--ds-border, #e2e8f0)",
|
|
1411
1129
|
borderRadius: "0.5rem"
|
|
1412
|
-
}, children: /* @__PURE__ */
|
|
1130
|
+
}, children: /* @__PURE__ */ jsx22("table", __spreadValues({ style: __spreadValues({
|
|
1413
1131
|
width: "100%",
|
|
1414
1132
|
borderCollapse: "collapse",
|
|
1415
1133
|
fontSize: "0.875rem"
|
|
1416
1134
|
}, style) }, props)) })
|
|
1417
1135
|
] });
|
|
1418
1136
|
};
|
|
1419
|
-
var TableHead = (props) => /* @__PURE__ */
|
|
1420
|
-
var TableBody = (props) => /* @__PURE__ */
|
|
1137
|
+
var TableHead = (props) => /* @__PURE__ */ jsx22("thead", __spreadValues({}, props));
|
|
1138
|
+
var TableBody = (props) => /* @__PURE__ */ jsx22("tbody", __spreadValues({}, props));
|
|
1421
1139
|
var TableRow = (_a) => {
|
|
1422
1140
|
var _b = _a, { style } = _b, props = __objRest(_b, ["style"]);
|
|
1423
|
-
return /* @__PURE__ */
|
|
1141
|
+
return /* @__PURE__ */ jsx22("tr", __spreadValues({ "data-ds-table-row": "", style }, props));
|
|
1424
1142
|
};
|
|
1425
1143
|
var TableHeader = (_a) => {
|
|
1426
1144
|
var _b = _a, { style } = _b, props = __objRest(_b, ["style"]);
|
|
1427
|
-
return /* @__PURE__ */
|
|
1145
|
+
return /* @__PURE__ */ jsx22("th", __spreadValues({ style: __spreadValues({
|
|
1428
1146
|
padding: "0.75rem 1rem",
|
|
1429
1147
|
textAlign: "left",
|
|
1430
1148
|
fontWeight: 500,
|
|
@@ -1436,7 +1154,7 @@ var TableHeader = (_a) => {
|
|
|
1436
1154
|
};
|
|
1437
1155
|
var TableCell = (_a) => {
|
|
1438
1156
|
var _b = _a, { style } = _b, props = __objRest(_b, ["style"]);
|
|
1439
|
-
return /* @__PURE__ */
|
|
1157
|
+
return /* @__PURE__ */ jsx22(
|
|
1440
1158
|
"td",
|
|
1441
1159
|
__spreadValues({
|
|
1442
1160
|
"data-ds-table-cell": "",
|
|
@@ -1451,15 +1169,15 @@ var TableCell = (_a) => {
|
|
|
1451
1169
|
};
|
|
1452
1170
|
|
|
1453
1171
|
// src/components/Tabs/Tabs.tsx
|
|
1454
|
-
import { useState as
|
|
1455
|
-
import { jsx as
|
|
1172
|
+
import { useState as useState13 } from "react";
|
|
1173
|
+
import { jsx as jsx23, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1456
1174
|
var Tabs = ({ tabs, defaultValue }) => {
|
|
1457
1175
|
var _a, _b;
|
|
1458
|
-
const [active, setActive] =
|
|
1459
|
-
const [hovered, setHovered] =
|
|
1176
|
+
const [active, setActive] = useState13((_b = defaultValue != null ? defaultValue : (_a = tabs[0]) == null ? void 0 : _a.value) != null ? _b : "");
|
|
1177
|
+
const [hovered, setHovered] = useState13(null);
|
|
1460
1178
|
const activeTab = tabs.find((t) => t.value === active);
|
|
1461
|
-
return /* @__PURE__ */
|
|
1462
|
-
/* @__PURE__ */
|
|
1179
|
+
return /* @__PURE__ */ jsxs16("div", { style: { display: "flex", flexDirection: "column" }, children: [
|
|
1180
|
+
/* @__PURE__ */ jsx23("div", { role: "tablist", style: {
|
|
1463
1181
|
display: "inline-flex",
|
|
1464
1182
|
backgroundColor: "var(--ds-muted, #f1f5f9)",
|
|
1465
1183
|
borderRadius: "0.5rem",
|
|
@@ -1468,7 +1186,7 @@ var Tabs = ({ tabs, defaultValue }) => {
|
|
|
1468
1186
|
}, children: tabs.map((tab) => {
|
|
1469
1187
|
const isActive = active === tab.value;
|
|
1470
1188
|
const isHovered = hovered === tab.value;
|
|
1471
|
-
return /* @__PURE__ */
|
|
1189
|
+
return /* @__PURE__ */ jsxs16(
|
|
1472
1190
|
"button",
|
|
1473
1191
|
{
|
|
1474
1192
|
role: "tab",
|
|
@@ -1493,14 +1211,14 @@ var Tabs = ({ tabs, defaultValue }) => {
|
|
|
1493
1211
|
whiteSpace: "nowrap"
|
|
1494
1212
|
},
|
|
1495
1213
|
children: [
|
|
1496
|
-
tab.icon && /* @__PURE__ */
|
|
1214
|
+
tab.icon && /* @__PURE__ */ jsx23("span", { style: { display: "flex", alignItems: "center" }, children: tab.icon }),
|
|
1497
1215
|
tab.label
|
|
1498
1216
|
]
|
|
1499
1217
|
},
|
|
1500
1218
|
tab.value
|
|
1501
1219
|
);
|
|
1502
1220
|
}) }),
|
|
1503
|
-
/* @__PURE__ */
|
|
1221
|
+
/* @__PURE__ */ jsx23("div", { role: "tabpanel", style: {
|
|
1504
1222
|
paddingTop: "1rem",
|
|
1505
1223
|
fontSize: "0.875rem",
|
|
1506
1224
|
color: "var(--ds-text-secondary, #64748b)"
|
|
@@ -1510,7 +1228,7 @@ var Tabs = ({ tabs, defaultValue }) => {
|
|
|
1510
1228
|
var Tabs_default = Tabs;
|
|
1511
1229
|
|
|
1512
1230
|
// src/components/Textarea/Textarea.tsx
|
|
1513
|
-
import { Fragment as Fragment8, jsx as
|
|
1231
|
+
import { Fragment as Fragment8, jsx as jsx24, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1514
1232
|
var textareaCSS = `
|
|
1515
1233
|
[data-ds-textarea]::placeholder { color: var(--ds-text-secondary, #64748b); }
|
|
1516
1234
|
[data-ds-textarea]:focus { outline: none; border-color: var(--ds-primary, #3b82f6); box-shadow: 0 0 0 3px rgb(59 130 246 / 0.15); }
|
|
@@ -1520,9 +1238,9 @@ var textareaCSS = `
|
|
|
1520
1238
|
`;
|
|
1521
1239
|
var Textarea = (_a) => {
|
|
1522
1240
|
var _b = _a, { error, style } = _b, props = __objRest(_b, ["error", "style"]);
|
|
1523
|
-
return /* @__PURE__ */
|
|
1524
|
-
/* @__PURE__ */
|
|
1525
|
-
/* @__PURE__ */
|
|
1241
|
+
return /* @__PURE__ */ jsxs17(Fragment8, { children: [
|
|
1242
|
+
/* @__PURE__ */ jsx24("style", { href: "ds-textarea", precedence: "low", children: textareaCSS }),
|
|
1243
|
+
/* @__PURE__ */ jsx24(
|
|
1526
1244
|
"textarea",
|
|
1527
1245
|
__spreadValues({
|
|
1528
1246
|
"data-ds-textarea": "",
|
|
@@ -1548,8 +1266,8 @@ var Textarea = (_a) => {
|
|
|
1548
1266
|
var Textarea_default = Textarea;
|
|
1549
1267
|
|
|
1550
1268
|
// src/components/Tooltip/Tooltip.tsx
|
|
1551
|
-
import { useState as
|
|
1552
|
-
import { Fragment as Fragment9, jsx as
|
|
1269
|
+
import { useState as useState14 } from "react";
|
|
1270
|
+
import { Fragment as Fragment9, jsx as jsx25, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1553
1271
|
var positionStyle = {
|
|
1554
1272
|
top: { bottom: "calc(100% + 8px)", left: "50%", transform: "translateX(-50%)" },
|
|
1555
1273
|
bottom: { top: "calc(100% + 8px)", left: "50%", transform: "translateX(-50%)" },
|
|
@@ -1567,11 +1285,11 @@ var tooltipCSS = `
|
|
|
1567
1285
|
[data-ds-tt="left"]::before { left: 100%; top: 50%; transform: translateY(-50%); border-left-color: var(--ds-tooltip-bg, #0f172a); }
|
|
1568
1286
|
[data-ds-tt="right"]::before { right: 100%; top: 50%; transform: translateY(-50%); border-right-color: var(--ds-tooltip-bg, #0f172a); }
|
|
1569
1287
|
`;
|
|
1570
|
-
var
|
|
1571
|
-
const [visible, setVisible] =
|
|
1572
|
-
return /* @__PURE__ */
|
|
1573
|
-
/* @__PURE__ */
|
|
1574
|
-
/* @__PURE__ */
|
|
1288
|
+
var Tooltip = ({ content, children, position = "top" }) => {
|
|
1289
|
+
const [visible, setVisible] = useState14(false);
|
|
1290
|
+
return /* @__PURE__ */ jsxs18(Fragment9, { children: [
|
|
1291
|
+
/* @__PURE__ */ jsx25("style", { href: "ds-tooltip", precedence: "low", children: tooltipCSS }),
|
|
1292
|
+
/* @__PURE__ */ jsxs18(
|
|
1575
1293
|
"span",
|
|
1576
1294
|
{
|
|
1577
1295
|
style: { position: "relative", display: "inline-flex" },
|
|
@@ -1581,7 +1299,7 @@ var Tooltip5 = ({ content, children, position = "top" }) => {
|
|
|
1581
1299
|
onBlur: () => setVisible(false),
|
|
1582
1300
|
children: [
|
|
1583
1301
|
children,
|
|
1584
|
-
/* @__PURE__ */
|
|
1302
|
+
/* @__PURE__ */ jsx25(
|
|
1585
1303
|
"span",
|
|
1586
1304
|
{
|
|
1587
1305
|
role: "tooltip",
|
|
@@ -1608,14 +1326,12 @@ var Tooltip5 = ({ content, children, position = "top" }) => {
|
|
|
1608
1326
|
)
|
|
1609
1327
|
] });
|
|
1610
1328
|
};
|
|
1611
|
-
var Tooltip_default =
|
|
1329
|
+
var Tooltip_default = Tooltip;
|
|
1612
1330
|
export {
|
|
1613
1331
|
Accordion_default as Accordion,
|
|
1614
1332
|
Alert_default as Alert,
|
|
1615
|
-
AreaChart_default as AreaChart,
|
|
1616
1333
|
Avatar_default as Avatar,
|
|
1617
1334
|
Badge_default as Badge,
|
|
1618
|
-
BarChart_default as BarChart,
|
|
1619
1335
|
Breadcrumb_default as Breadcrumb,
|
|
1620
1336
|
Button_default as Button,
|
|
1621
1337
|
Card,
|
|
@@ -1629,9 +1345,7 @@ export {
|
|
|
1629
1345
|
FileUpload_default as FileUpload,
|
|
1630
1346
|
Input_default as Input,
|
|
1631
1347
|
Label_default as Label,
|
|
1632
|
-
LineChart_default as LineChart,
|
|
1633
1348
|
PasswordInput_default as PasswordInput,
|
|
1634
|
-
PieChart_default as PieChart,
|
|
1635
1349
|
Progress_default as Progress,
|
|
1636
1350
|
RadioGroup_default as RadioGroup,
|
|
1637
1351
|
Select_default as Select,
|