@efiche/design 0.1.0
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 +36 -0
- package/dist/index.cjs +900 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +1120 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.mts +228 -0
- package/dist/index.d.ts +228 -0
- package/dist/index.js +841 -0
- package/dist/index.js.map +1 -0
- package/package.json +56 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,841 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
var __objRest = (source, exclude) => {
|
|
21
|
+
var target = {};
|
|
22
|
+
for (var prop in source)
|
|
23
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
24
|
+
target[prop] = source[prop];
|
|
25
|
+
if (source != null && __getOwnPropSymbols)
|
|
26
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
27
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
28
|
+
target[prop] = source[prop];
|
|
29
|
+
}
|
|
30
|
+
return target;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
// src/components/ThemeProvider.tsx
|
|
34
|
+
import { createContext, useContext, useState } from "react";
|
|
35
|
+
import { jsx } from "react/jsx-runtime";
|
|
36
|
+
var ThemeContext = createContext(null);
|
|
37
|
+
var ThemeProvider = ({
|
|
38
|
+
children,
|
|
39
|
+
defaultTheme = "light"
|
|
40
|
+
}) => {
|
|
41
|
+
const [theme, setTheme] = useState(defaultTheme);
|
|
42
|
+
return /* @__PURE__ */ jsx(ThemeContext.Provider, { value: { theme, toggle: () => setTheme((t) => t === "light" ? "dark" : "light") }, children: /* @__PURE__ */ jsx("div", { className: theme === "dark" ? "ds-theme-dark" : "ds-theme", children }) });
|
|
43
|
+
};
|
|
44
|
+
var useTheme = () => {
|
|
45
|
+
const ctx = useContext(ThemeContext);
|
|
46
|
+
if (!ctx) throw new Error("useTheme must be used inside <ThemeProvider>");
|
|
47
|
+
return ctx;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
// src/components/Accordion/Accordion.tsx
|
|
51
|
+
import { useState as useState2 } from "react";
|
|
52
|
+
import { ChevronDown } from "lucide-react";
|
|
53
|
+
|
|
54
|
+
// src/components/Accordion/Accordion.module.css
|
|
55
|
+
var Accordion_default = {};
|
|
56
|
+
|
|
57
|
+
// src/components/Accordion/Accordion.tsx
|
|
58
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
59
|
+
var Accordion = ({ items, defaultValue, multiple = false }) => {
|
|
60
|
+
const [open, setOpen] = useState2(() => {
|
|
61
|
+
if (!defaultValue) return /* @__PURE__ */ new Set();
|
|
62
|
+
if (Array.isArray(defaultValue)) return new Set(defaultValue);
|
|
63
|
+
return /* @__PURE__ */ new Set([defaultValue]);
|
|
64
|
+
});
|
|
65
|
+
const toggle = (value) => {
|
|
66
|
+
setOpen((prev) => {
|
|
67
|
+
const next = new Set(prev);
|
|
68
|
+
if (next.has(value)) {
|
|
69
|
+
next.delete(value);
|
|
70
|
+
} else {
|
|
71
|
+
if (!multiple) next.clear();
|
|
72
|
+
next.add(value);
|
|
73
|
+
}
|
|
74
|
+
return next;
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
return /* @__PURE__ */ jsx2("div", { className: Accordion_default.root, children: items.map((item) => {
|
|
78
|
+
const isOpen = open.has(item.value);
|
|
79
|
+
return /* @__PURE__ */ jsxs("div", { className: Accordion_default.item, children: [
|
|
80
|
+
/* @__PURE__ */ jsxs(
|
|
81
|
+
"button",
|
|
82
|
+
{
|
|
83
|
+
className: Accordion_default.trigger,
|
|
84
|
+
onClick: () => toggle(item.value),
|
|
85
|
+
"aria-expanded": isOpen,
|
|
86
|
+
children: [
|
|
87
|
+
/* @__PURE__ */ jsx2("span", { children: item.trigger }),
|
|
88
|
+
/* @__PURE__ */ jsx2(
|
|
89
|
+
ChevronDown,
|
|
90
|
+
{
|
|
91
|
+
size: 16,
|
|
92
|
+
className: `${Accordion_default.chevron} ${isOpen ? Accordion_default["chevron-open"] : ""}`
|
|
93
|
+
}
|
|
94
|
+
)
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
),
|
|
98
|
+
/* @__PURE__ */ jsx2("div", { className: `${Accordion_default.panel} ${isOpen ? Accordion_default["panel-open"] : ""}`, children: /* @__PURE__ */ jsx2("div", { className: Accordion_default.content, children: item.content }) })
|
|
99
|
+
] }, item.value);
|
|
100
|
+
}) });
|
|
101
|
+
};
|
|
102
|
+
var Accordion_default2 = Accordion;
|
|
103
|
+
|
|
104
|
+
// src/components/Alert/Alert.tsx
|
|
105
|
+
import { Info, CheckCircle2, AlertTriangle, AlertCircle } from "lucide-react";
|
|
106
|
+
|
|
107
|
+
// src/components/Alert/Alert.module.css
|
|
108
|
+
var Alert_default = {};
|
|
109
|
+
|
|
110
|
+
// src/components/Alert/Alert.tsx
|
|
111
|
+
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
112
|
+
var icons = {
|
|
113
|
+
info: /* @__PURE__ */ jsx3(Info, { size: 16 }),
|
|
114
|
+
success: /* @__PURE__ */ jsx3(CheckCircle2, { size: 16 }),
|
|
115
|
+
warning: /* @__PURE__ */ jsx3(AlertTriangle, { size: 16 }),
|
|
116
|
+
danger: /* @__PURE__ */ jsx3(AlertCircle, { size: 16 })
|
|
117
|
+
};
|
|
118
|
+
var Alert = ({ variant = "info", title, description }) => /* @__PURE__ */ jsxs2("div", { className: `${Alert_default.alert} ${Alert_default[variant]}`, role: "alert", children: [
|
|
119
|
+
/* @__PURE__ */ jsx3("span", { className: Alert_default.icon, children: icons[variant] }),
|
|
120
|
+
/* @__PURE__ */ jsxs2("div", { className: Alert_default.content, children: [
|
|
121
|
+
/* @__PURE__ */ jsx3("p", { className: Alert_default.title, children: title }),
|
|
122
|
+
/* @__PURE__ */ jsx3("p", { className: Alert_default.description, children: description })
|
|
123
|
+
] })
|
|
124
|
+
] });
|
|
125
|
+
var Alert_default2 = Alert;
|
|
126
|
+
|
|
127
|
+
// src/components/Avatar/Avatar.module.css
|
|
128
|
+
var Avatar_default = {};
|
|
129
|
+
|
|
130
|
+
// src/components/Avatar/Avatar.tsx
|
|
131
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
132
|
+
var Avatar = ({ fallback, size = "md", style, className }) => /* @__PURE__ */ jsx4(
|
|
133
|
+
"div",
|
|
134
|
+
{
|
|
135
|
+
className: `${Avatar_default.avatar} ${Avatar_default[size]}${className ? ` ${className}` : ""}`,
|
|
136
|
+
style,
|
|
137
|
+
"aria-label": fallback,
|
|
138
|
+
children: fallback
|
|
139
|
+
}
|
|
140
|
+
);
|
|
141
|
+
var Avatar_default2 = Avatar;
|
|
142
|
+
|
|
143
|
+
// src/components/Badge/Badge.module.css
|
|
144
|
+
var Badge_default = {};
|
|
145
|
+
|
|
146
|
+
// src/components/Badge/Badge.tsx
|
|
147
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
148
|
+
var Badge = ({ variant = "default", size = "md", children, style }) => /* @__PURE__ */ jsx5("span", { className: `${Badge_default.badge} ${Badge_default[variant]} ${Badge_default[size]}`, style, children });
|
|
149
|
+
var Badge_default2 = Badge;
|
|
150
|
+
|
|
151
|
+
// src/components/Breadcrumb/Breadcrumb.tsx
|
|
152
|
+
import { ChevronRight } from "lucide-react";
|
|
153
|
+
|
|
154
|
+
// src/components/Breadcrumb/Breadcrumb.module.css
|
|
155
|
+
var Breadcrumb_default = {};
|
|
156
|
+
|
|
157
|
+
// src/components/Breadcrumb/Breadcrumb.tsx
|
|
158
|
+
import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
159
|
+
var Breadcrumb = ({ items }) => /* @__PURE__ */ jsx6("nav", { "aria-label": "Breadcrumb", children: /* @__PURE__ */ jsx6("ol", { className: Breadcrumb_default.list, children: items.map((item, i) => {
|
|
160
|
+
const isLast = i === items.length - 1;
|
|
161
|
+
return /* @__PURE__ */ jsxs3("li", { className: Breadcrumb_default.item, children: [
|
|
162
|
+
i > 0 && /* @__PURE__ */ jsx6(ChevronRight, { size: 14, className: Breadcrumb_default.separator, "aria-hidden": true }),
|
|
163
|
+
isLast || !item.href ? /* @__PURE__ */ jsx6("span", { className: `${Breadcrumb_default.link} ${isLast ? Breadcrumb_default.current : ""}`, children: item.label }) : /* @__PURE__ */ jsx6("a", { href: item.href, className: Breadcrumb_default.link, children: item.label })
|
|
164
|
+
] }, item.label);
|
|
165
|
+
}) }) });
|
|
166
|
+
var Breadcrumb_default2 = Breadcrumb;
|
|
167
|
+
|
|
168
|
+
// src/components/Button/Button.tsx
|
|
169
|
+
import { LoaderCircle } from "lucide-react";
|
|
170
|
+
|
|
171
|
+
// src/components/Button/Button.module.css
|
|
172
|
+
var Button_default = {};
|
|
173
|
+
|
|
174
|
+
// src/components/Button/Button.tsx
|
|
175
|
+
import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
176
|
+
var Button = (_a) => {
|
|
177
|
+
var _b = _a, {
|
|
178
|
+
text,
|
|
179
|
+
children,
|
|
180
|
+
loading = false,
|
|
181
|
+
disabled = false,
|
|
182
|
+
icon,
|
|
183
|
+
iconPosition = "left",
|
|
184
|
+
outline = false,
|
|
185
|
+
ghost = false,
|
|
186
|
+
danger = false,
|
|
187
|
+
warning = false,
|
|
188
|
+
info = false,
|
|
189
|
+
success = false,
|
|
190
|
+
variant,
|
|
191
|
+
small = false,
|
|
192
|
+
large = false,
|
|
193
|
+
size,
|
|
194
|
+
className
|
|
195
|
+
} = _b, props = __objRest(_b, [
|
|
196
|
+
"text",
|
|
197
|
+
"children",
|
|
198
|
+
"loading",
|
|
199
|
+
"disabled",
|
|
200
|
+
"icon",
|
|
201
|
+
"iconPosition",
|
|
202
|
+
"outline",
|
|
203
|
+
"ghost",
|
|
204
|
+
"danger",
|
|
205
|
+
"warning",
|
|
206
|
+
"info",
|
|
207
|
+
"success",
|
|
208
|
+
"variant",
|
|
209
|
+
"small",
|
|
210
|
+
"large",
|
|
211
|
+
"size",
|
|
212
|
+
"className"
|
|
213
|
+
]);
|
|
214
|
+
const resolvedVariant = variant != null ? variant : danger ? "danger" : warning ? "warning" : info ? "info" : success ? "success" : ghost ? "ghost" : outline ? "outline" : "solid";
|
|
215
|
+
const resolvedSize = size != null ? size : small ? "sm" : large ? "lg" : "md";
|
|
216
|
+
const content = children != null ? children : text;
|
|
217
|
+
const showIcon = icon && !loading;
|
|
218
|
+
const classes = [
|
|
219
|
+
Button_default.button,
|
|
220
|
+
Button_default[resolvedVariant],
|
|
221
|
+
Button_default[resolvedSize],
|
|
222
|
+
loading ? Button_default.loading : "",
|
|
223
|
+
className != null ? className : ""
|
|
224
|
+
].filter(Boolean).join(" ");
|
|
225
|
+
return /* @__PURE__ */ jsxs4(
|
|
226
|
+
"button",
|
|
227
|
+
__spreadProps(__spreadValues({
|
|
228
|
+
disabled: disabled || loading,
|
|
229
|
+
className: classes
|
|
230
|
+
}, props), {
|
|
231
|
+
children: [
|
|
232
|
+
loading ? /* @__PURE__ */ jsx7(LoaderCircle, { className: Button_default.spinner, "aria-hidden": true }) : null,
|
|
233
|
+
showIcon && iconPosition === "left" ? icon : null,
|
|
234
|
+
content,
|
|
235
|
+
showIcon && iconPosition === "right" ? icon : null
|
|
236
|
+
]
|
|
237
|
+
})
|
|
238
|
+
);
|
|
239
|
+
};
|
|
240
|
+
var Button_default2 = Button;
|
|
241
|
+
|
|
242
|
+
// src/components/Card/Card.module.css
|
|
243
|
+
var Card_default = {};
|
|
244
|
+
|
|
245
|
+
// src/components/Card/Card.tsx
|
|
246
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
247
|
+
var Card = (_a) => {
|
|
248
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
249
|
+
return /* @__PURE__ */ jsx8("div", __spreadValues({ className: `${Card_default.card}${className ? ` ${className}` : ""}` }, props));
|
|
250
|
+
};
|
|
251
|
+
var CardHeader = (_a) => {
|
|
252
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
253
|
+
return /* @__PURE__ */ jsx8("div", __spreadValues({ className: `${Card_default.header}${className ? ` ${className}` : ""}` }, props));
|
|
254
|
+
};
|
|
255
|
+
var CardTitle = (_a) => {
|
|
256
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
257
|
+
return /* @__PURE__ */ jsx8("h3", __spreadValues({ className: `${Card_default.title}${className ? ` ${className}` : ""}` }, props));
|
|
258
|
+
};
|
|
259
|
+
var CardDescription = (_a) => {
|
|
260
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
261
|
+
return /* @__PURE__ */ jsx8("p", __spreadValues({ className: `${Card_default.description}${className ? ` ${className}` : ""}` }, props));
|
|
262
|
+
};
|
|
263
|
+
var CardContent = (_a) => {
|
|
264
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
265
|
+
return /* @__PURE__ */ jsx8("div", __spreadValues({ className: `${Card_default.content}${className ? ` ${className}` : ""}` }, props));
|
|
266
|
+
};
|
|
267
|
+
var CardFooter = (_a) => {
|
|
268
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
269
|
+
return /* @__PURE__ */ jsx8("div", __spreadValues({ className: `${Card_default.footer}${className ? ` ${className}` : ""}` }, props));
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
// src/components/Checkbox/Checkbox.tsx
|
|
273
|
+
import { useState as useState3 } from "react";
|
|
274
|
+
|
|
275
|
+
// src/components/Checkbox/Checkbox.module.css
|
|
276
|
+
var Checkbox_default = {};
|
|
277
|
+
|
|
278
|
+
// src/components/Checkbox/Checkbox.tsx
|
|
279
|
+
import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
280
|
+
var Checkbox = ({
|
|
281
|
+
label,
|
|
282
|
+
checked,
|
|
283
|
+
defaultChecked = false,
|
|
284
|
+
disabled,
|
|
285
|
+
id,
|
|
286
|
+
onChange
|
|
287
|
+
}) => {
|
|
288
|
+
const [internal, setInternal] = useState3(defaultChecked);
|
|
289
|
+
const isChecked = checked !== void 0 ? checked : internal;
|
|
290
|
+
const handleChange = () => {
|
|
291
|
+
if (disabled) return;
|
|
292
|
+
const next = !isChecked;
|
|
293
|
+
setInternal(next);
|
|
294
|
+
onChange == null ? void 0 : onChange(next);
|
|
295
|
+
};
|
|
296
|
+
return /* @__PURE__ */ jsxs5("label", { className: `${Checkbox_default.container} ${disabled ? Checkbox_default.disabled : ""}`, htmlFor: id, children: [
|
|
297
|
+
/* @__PURE__ */ jsx9(
|
|
298
|
+
"input",
|
|
299
|
+
{
|
|
300
|
+
type: "checkbox",
|
|
301
|
+
id,
|
|
302
|
+
checked: isChecked,
|
|
303
|
+
disabled,
|
|
304
|
+
onChange: handleChange,
|
|
305
|
+
className: Checkbox_default.input
|
|
306
|
+
}
|
|
307
|
+
),
|
|
308
|
+
/* @__PURE__ */ jsx9("span", { className: `${Checkbox_default.box} ${isChecked ? Checkbox_default.checked : ""}`, children: isChecked && /* @__PURE__ */ jsx9("svg", { viewBox: "0 0 12 10", fill: "none", className: Checkbox_default.checkmark, children: /* @__PURE__ */ jsx9("path", { d: "M1 5l3.5 3.5L11 1", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }) }),
|
|
309
|
+
label && /* @__PURE__ */ jsx9("span", { className: Checkbox_default.label, children: label })
|
|
310
|
+
] });
|
|
311
|
+
};
|
|
312
|
+
var Checkbox_default2 = Checkbox;
|
|
313
|
+
|
|
314
|
+
// src/components/CopyButton/CopyButton.tsx
|
|
315
|
+
import { Check, Copy } from "lucide-react";
|
|
316
|
+
import { useState as useState4 } from "react";
|
|
317
|
+
|
|
318
|
+
// src/components/CopyButton/CopyButton.module.css
|
|
319
|
+
var CopyButton_default = {};
|
|
320
|
+
|
|
321
|
+
// src/components/CopyButton/CopyButton.tsx
|
|
322
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
323
|
+
var CopyButton = ({ text }) => {
|
|
324
|
+
const [copied, setCopied] = useState4(false);
|
|
325
|
+
const handleCopy = () => {
|
|
326
|
+
navigator.clipboard.writeText(text);
|
|
327
|
+
setCopied(true);
|
|
328
|
+
setTimeout(() => setCopied(false), 2e3);
|
|
329
|
+
};
|
|
330
|
+
return /* @__PURE__ */ jsx10(
|
|
331
|
+
"button",
|
|
332
|
+
{
|
|
333
|
+
className: CopyButton_default.copyButton,
|
|
334
|
+
onClick: handleCopy,
|
|
335
|
+
"aria-label": copied ? "Copied" : `Copy ${text}`,
|
|
336
|
+
children: copied ? /* @__PURE__ */ jsx10(Check, { className: CopyButton_default.icon }) : /* @__PURE__ */ jsx10(Copy, { className: CopyButton_default.icon })
|
|
337
|
+
}
|
|
338
|
+
);
|
|
339
|
+
};
|
|
340
|
+
var CopyButton_default2 = CopyButton;
|
|
341
|
+
|
|
342
|
+
// src/components/FileUpload/FileUpload.tsx
|
|
343
|
+
import { Upload } from "lucide-react";
|
|
344
|
+
import { useRef, useState as useState5 } from "react";
|
|
345
|
+
|
|
346
|
+
// src/components/FileUpload/FileUpload.module.css
|
|
347
|
+
var FileUpload_default = {};
|
|
348
|
+
|
|
349
|
+
// src/components/FileUpload/FileUpload.tsx
|
|
350
|
+
import { jsx as jsx11, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
351
|
+
var FileUpload = ({ accept, multiple, disabled, onFileSelect }) => {
|
|
352
|
+
const [isDragging, setIsDragging] = useState5(false);
|
|
353
|
+
const [fileNames, setFileNames] = useState5([]);
|
|
354
|
+
const inputRef = useRef(null);
|
|
355
|
+
const handleFiles = (list) => {
|
|
356
|
+
setFileNames(Array.from(list).map((f) => f.name));
|
|
357
|
+
onFileSelect == null ? void 0 : onFileSelect(list);
|
|
358
|
+
};
|
|
359
|
+
return /* @__PURE__ */ jsxs6(
|
|
360
|
+
"div",
|
|
361
|
+
{
|
|
362
|
+
className: `${FileUpload_default.zone} ${isDragging ? FileUpload_default.dragging : ""} ${disabled ? FileUpload_default.disabled : ""}`,
|
|
363
|
+
onClick: () => {
|
|
364
|
+
var _a;
|
|
365
|
+
return !disabled && ((_a = inputRef.current) == null ? void 0 : _a.click());
|
|
366
|
+
},
|
|
367
|
+
onDragOver: (e) => {
|
|
368
|
+
e.preventDefault();
|
|
369
|
+
setIsDragging(true);
|
|
370
|
+
},
|
|
371
|
+
onDragLeave: () => setIsDragging(false),
|
|
372
|
+
onDrop: (e) => {
|
|
373
|
+
e.preventDefault();
|
|
374
|
+
setIsDragging(false);
|
|
375
|
+
if (!disabled && e.dataTransfer.files.length) handleFiles(e.dataTransfer.files);
|
|
376
|
+
},
|
|
377
|
+
children: [
|
|
378
|
+
/* @__PURE__ */ jsx11(
|
|
379
|
+
"input",
|
|
380
|
+
{
|
|
381
|
+
ref: inputRef,
|
|
382
|
+
type: "file",
|
|
383
|
+
accept,
|
|
384
|
+
multiple,
|
|
385
|
+
disabled,
|
|
386
|
+
className: FileUpload_default.input,
|
|
387
|
+
onChange: (e) => e.target.files && handleFiles(e.target.files)
|
|
388
|
+
}
|
|
389
|
+
),
|
|
390
|
+
/* @__PURE__ */ jsx11(Upload, { size: 32, className: FileUpload_default.icon }),
|
|
391
|
+
fileNames.length > 0 ? /* @__PURE__ */ jsx11("p", { className: FileUpload_default.fileName, children: fileNames.join(", ") }) : /* @__PURE__ */ jsxs6("p", { className: FileUpload_default.hint, children: [
|
|
392
|
+
/* @__PURE__ */ jsx11("strong", { children: "Click to upload" }),
|
|
393
|
+
" or drag and drop"
|
|
394
|
+
] })
|
|
395
|
+
]
|
|
396
|
+
}
|
|
397
|
+
);
|
|
398
|
+
};
|
|
399
|
+
var FileUpload_default2 = FileUpload;
|
|
400
|
+
|
|
401
|
+
// src/components/Input/Input.module.css
|
|
402
|
+
var Input_default = {};
|
|
403
|
+
|
|
404
|
+
// src/components/Input/Input.tsx
|
|
405
|
+
import { jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
406
|
+
var Input = (_a) => {
|
|
407
|
+
var _b = _a, {
|
|
408
|
+
error,
|
|
409
|
+
success,
|
|
410
|
+
leftIcon,
|
|
411
|
+
rightIcon,
|
|
412
|
+
className
|
|
413
|
+
} = _b, props = __objRest(_b, [
|
|
414
|
+
"error",
|
|
415
|
+
"success",
|
|
416
|
+
"leftIcon",
|
|
417
|
+
"rightIcon",
|
|
418
|
+
"className"
|
|
419
|
+
]);
|
|
420
|
+
const wrapperClasses = [
|
|
421
|
+
Input_default.wrapper,
|
|
422
|
+
error ? Input_default.error : "",
|
|
423
|
+
success ? Input_default.success : "",
|
|
424
|
+
leftIcon ? Input_default.hasLeft : "",
|
|
425
|
+
rightIcon ? Input_default.hasRight : "",
|
|
426
|
+
className != null ? className : ""
|
|
427
|
+
].filter(Boolean).join(" ");
|
|
428
|
+
return /* @__PURE__ */ jsxs7("div", { className: wrapperClasses, children: [
|
|
429
|
+
leftIcon && /* @__PURE__ */ jsx12("span", { className: Input_default.leftIcon, children: leftIcon }),
|
|
430
|
+
/* @__PURE__ */ jsx12("input", __spreadValues({ className: Input_default.input }, props)),
|
|
431
|
+
rightIcon && /* @__PURE__ */ jsx12("span", { className: Input_default.rightIcon, children: rightIcon })
|
|
432
|
+
] });
|
|
433
|
+
};
|
|
434
|
+
var Input_default2 = Input;
|
|
435
|
+
|
|
436
|
+
// src/components/Label/Label.module.css
|
|
437
|
+
var Label_default = {};
|
|
438
|
+
|
|
439
|
+
// src/components/Label/Label.tsx
|
|
440
|
+
import { jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
441
|
+
var Label = (_a) => {
|
|
442
|
+
var _b = _a, { children, required, className } = _b, props = __objRest(_b, ["children", "required", "className"]);
|
|
443
|
+
return /* @__PURE__ */ jsxs8("label", __spreadProps(__spreadValues({ className: `${Label_default.label} ${className != null ? className : ""}` }, props), { children: [
|
|
444
|
+
children,
|
|
445
|
+
required && /* @__PURE__ */ jsx13("span", { className: Label_default.required, children: "*" })
|
|
446
|
+
] }));
|
|
447
|
+
};
|
|
448
|
+
var Label_default2 = Label;
|
|
449
|
+
|
|
450
|
+
// src/components/PasswordInput/PasswordInput.tsx
|
|
451
|
+
import { Eye, EyeOff } from "lucide-react";
|
|
452
|
+
import { useState as useState6 } from "react";
|
|
453
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
454
|
+
var PasswordInput = (props) => {
|
|
455
|
+
const [visible, setVisible] = useState6(false);
|
|
456
|
+
return /* @__PURE__ */ jsx14(
|
|
457
|
+
Input_default2,
|
|
458
|
+
__spreadProps(__spreadValues({}, props), {
|
|
459
|
+
type: visible ? "text" : "password",
|
|
460
|
+
rightIcon: /* @__PURE__ */ jsx14(
|
|
461
|
+
"button",
|
|
462
|
+
{
|
|
463
|
+
type: "button",
|
|
464
|
+
onClick: () => setVisible((v) => !v),
|
|
465
|
+
style: { background: "none", border: "none", cursor: "pointer", padding: 0, display: "flex", pointerEvents: "all" },
|
|
466
|
+
tabIndex: -1,
|
|
467
|
+
children: visible ? /* @__PURE__ */ jsx14(EyeOff, { size: 16 }) : /* @__PURE__ */ jsx14(Eye, { size: 16 })
|
|
468
|
+
}
|
|
469
|
+
)
|
|
470
|
+
})
|
|
471
|
+
);
|
|
472
|
+
};
|
|
473
|
+
var PasswordInput_default = PasswordInput;
|
|
474
|
+
|
|
475
|
+
// src/components/Progress/Progress.module.css
|
|
476
|
+
var Progress_default = {};
|
|
477
|
+
|
|
478
|
+
// src/components/Progress/Progress.tsx
|
|
479
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
480
|
+
var Progress = ({ value = 0 }) => {
|
|
481
|
+
const pct = Math.min(100, Math.max(0, value));
|
|
482
|
+
return /* @__PURE__ */ jsx15(
|
|
483
|
+
"div",
|
|
484
|
+
{
|
|
485
|
+
className: Progress_default.track,
|
|
486
|
+
role: "progressbar",
|
|
487
|
+
"aria-valuenow": pct,
|
|
488
|
+
"aria-valuemin": 0,
|
|
489
|
+
"aria-valuemax": 100,
|
|
490
|
+
children: /* @__PURE__ */ jsx15("div", { className: Progress_default.fill, style: { width: `${pct}%` } })
|
|
491
|
+
}
|
|
492
|
+
);
|
|
493
|
+
};
|
|
494
|
+
var Progress_default2 = Progress;
|
|
495
|
+
|
|
496
|
+
// src/components/RadioGroup/RadioGroup.tsx
|
|
497
|
+
import { useState as useState7 } from "react";
|
|
498
|
+
|
|
499
|
+
// src/components/RadioGroup/RadioGroup.module.css
|
|
500
|
+
var RadioGroup_default = {};
|
|
501
|
+
|
|
502
|
+
// src/components/RadioGroup/RadioGroup.tsx
|
|
503
|
+
import { jsx as jsx16, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
504
|
+
var RadioGroup = ({
|
|
505
|
+
options,
|
|
506
|
+
name,
|
|
507
|
+
value,
|
|
508
|
+
defaultValue = "",
|
|
509
|
+
disabled,
|
|
510
|
+
onChange
|
|
511
|
+
}) => {
|
|
512
|
+
const [internal, setInternal] = useState7(defaultValue);
|
|
513
|
+
const selected = value !== void 0 ? value : internal;
|
|
514
|
+
const handleChange = (val) => {
|
|
515
|
+
if (disabled) return;
|
|
516
|
+
setInternal(val);
|
|
517
|
+
onChange == null ? void 0 : onChange(val);
|
|
518
|
+
};
|
|
519
|
+
return /* @__PURE__ */ jsx16("div", { className: RadioGroup_default.group, children: options.map((option) => /* @__PURE__ */ jsxs9(
|
|
520
|
+
"label",
|
|
521
|
+
{
|
|
522
|
+
className: `${RadioGroup_default.item} ${disabled ? RadioGroup_default.disabled : ""}`,
|
|
523
|
+
children: [
|
|
524
|
+
/* @__PURE__ */ jsx16(
|
|
525
|
+
"input",
|
|
526
|
+
{
|
|
527
|
+
type: "radio",
|
|
528
|
+
name,
|
|
529
|
+
value: option.value,
|
|
530
|
+
checked: selected === option.value,
|
|
531
|
+
disabled,
|
|
532
|
+
onChange: () => handleChange(option.value),
|
|
533
|
+
className: RadioGroup_default.input
|
|
534
|
+
}
|
|
535
|
+
),
|
|
536
|
+
/* @__PURE__ */ jsx16("span", { className: `${RadioGroup_default.dot} ${selected === option.value ? RadioGroup_default.checked : ""}`, children: selected === option.value && /* @__PURE__ */ jsx16("span", { className: RadioGroup_default.inner }) }),
|
|
537
|
+
/* @__PURE__ */ jsx16("span", { className: RadioGroup_default.label, children: option.label })
|
|
538
|
+
]
|
|
539
|
+
},
|
|
540
|
+
option.value
|
|
541
|
+
)) });
|
|
542
|
+
};
|
|
543
|
+
var RadioGroup_default2 = RadioGroup;
|
|
544
|
+
|
|
545
|
+
// src/components/Select/Select.tsx
|
|
546
|
+
import { Check as Check2, ChevronDown as ChevronDown2 } from "lucide-react";
|
|
547
|
+
import { useEffect, useRef as useRef2, useState as useState8 } from "react";
|
|
548
|
+
|
|
549
|
+
// src/components/Select/Select.module.css
|
|
550
|
+
var Select_default = {};
|
|
551
|
+
|
|
552
|
+
// src/components/Select/Select.tsx
|
|
553
|
+
import { jsx as jsx17, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
554
|
+
var Select = ({
|
|
555
|
+
options,
|
|
556
|
+
value,
|
|
557
|
+
defaultValue = "",
|
|
558
|
+
placeholder = "Choose an option",
|
|
559
|
+
disabled,
|
|
560
|
+
onChange
|
|
561
|
+
}) => {
|
|
562
|
+
var _a;
|
|
563
|
+
const [internal, setInternal] = useState8(defaultValue);
|
|
564
|
+
const [open, setOpen] = useState8(false);
|
|
565
|
+
const ref = useRef2(null);
|
|
566
|
+
const selected = value !== void 0 ? value : internal;
|
|
567
|
+
const selectedLabel = (_a = options.find((o) => o.value === selected)) == null ? void 0 : _a.label;
|
|
568
|
+
const handleSelect = (val) => {
|
|
569
|
+
setInternal(val);
|
|
570
|
+
setOpen(false);
|
|
571
|
+
onChange == null ? void 0 : onChange(val);
|
|
572
|
+
};
|
|
573
|
+
useEffect(() => {
|
|
574
|
+
const handleOutside = (e) => {
|
|
575
|
+
if (ref.current && !ref.current.contains(e.target)) setOpen(false);
|
|
576
|
+
};
|
|
577
|
+
document.addEventListener("mousedown", handleOutside);
|
|
578
|
+
return () => document.removeEventListener("mousedown", handleOutside);
|
|
579
|
+
}, []);
|
|
580
|
+
return /* @__PURE__ */ jsxs10("div", { ref, className: `${Select_default.wrapper} ${disabled ? Select_default.disabled : ""}`, children: [
|
|
581
|
+
/* @__PURE__ */ jsxs10(
|
|
582
|
+
"button",
|
|
583
|
+
{
|
|
584
|
+
type: "button",
|
|
585
|
+
className: `${Select_default.trigger} ${open ? Select_default.open : ""}`,
|
|
586
|
+
onClick: () => !disabled && setOpen((o) => !o),
|
|
587
|
+
disabled,
|
|
588
|
+
children: [
|
|
589
|
+
/* @__PURE__ */ jsx17("span", { className: selectedLabel ? Select_default.value : Select_default.placeholder, children: selectedLabel != null ? selectedLabel : placeholder }),
|
|
590
|
+
/* @__PURE__ */ jsx17(ChevronDown2, { size: 16, className: `${Select_default.chevron} ${open ? Select_default.chevronOpen : ""}` })
|
|
591
|
+
]
|
|
592
|
+
}
|
|
593
|
+
),
|
|
594
|
+
open && /* @__PURE__ */ jsx17("div", { className: Select_default.dropdown, children: options.map((option) => /* @__PURE__ */ jsxs10(
|
|
595
|
+
"div",
|
|
596
|
+
{
|
|
597
|
+
className: `${Select_default.option} ${selected === option.value ? Select_default.selected : ""}`,
|
|
598
|
+
onClick: () => handleSelect(option.value),
|
|
599
|
+
children: [
|
|
600
|
+
selected === option.value ? /* @__PURE__ */ jsx17(Check2, { size: 14, className: Select_default.checkIcon }) : /* @__PURE__ */ jsx17("span", { className: Select_default.checkSpacer }),
|
|
601
|
+
option.label
|
|
602
|
+
]
|
|
603
|
+
},
|
|
604
|
+
option.value
|
|
605
|
+
)) })
|
|
606
|
+
] });
|
|
607
|
+
};
|
|
608
|
+
var Select_default2 = Select;
|
|
609
|
+
|
|
610
|
+
// src/components/Skeleton/Skeleton.module.css
|
|
611
|
+
var Skeleton_default = {};
|
|
612
|
+
|
|
613
|
+
// src/components/Skeleton/Skeleton.tsx
|
|
614
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
615
|
+
var Skeleton = ({ height = "1rem", width = "100%", circle = false }) => /* @__PURE__ */ jsx18(
|
|
616
|
+
"div",
|
|
617
|
+
{
|
|
618
|
+
className: `${Skeleton_default.skeleton} ${circle ? Skeleton_default.circle : ""}`,
|
|
619
|
+
style: { height, width },
|
|
620
|
+
"aria-hidden": "true"
|
|
621
|
+
}
|
|
622
|
+
);
|
|
623
|
+
var Skeleton_default2 = Skeleton;
|
|
624
|
+
|
|
625
|
+
// src/components/Slider/Slider.tsx
|
|
626
|
+
import { useState as useState9 } from "react";
|
|
627
|
+
|
|
628
|
+
// src/components/Slider/Slider.module.css
|
|
629
|
+
var Slider_default = {};
|
|
630
|
+
|
|
631
|
+
// src/components/Slider/Slider.tsx
|
|
632
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
633
|
+
var Slider = ({
|
|
634
|
+
value,
|
|
635
|
+
defaultValue = 50,
|
|
636
|
+
min = 0,
|
|
637
|
+
max = 100,
|
|
638
|
+
step = 1,
|
|
639
|
+
disabled,
|
|
640
|
+
onChange
|
|
641
|
+
}) => {
|
|
642
|
+
const [internal, setInternal] = useState9(defaultValue);
|
|
643
|
+
const current = value !== void 0 ? value : internal;
|
|
644
|
+
const fill = `${(current - min) / (max - min) * 100}%`;
|
|
645
|
+
const handleChange = (e) => {
|
|
646
|
+
const val = Number(e.target.value);
|
|
647
|
+
setInternal(val);
|
|
648
|
+
onChange == null ? void 0 : onChange(val);
|
|
649
|
+
};
|
|
650
|
+
return /* @__PURE__ */ jsx19("div", { className: `${Slider_default.wrapper} ${disabled ? Slider_default.disabled : ""}`, children: /* @__PURE__ */ jsx19(
|
|
651
|
+
"input",
|
|
652
|
+
{
|
|
653
|
+
type: "range",
|
|
654
|
+
min,
|
|
655
|
+
max,
|
|
656
|
+
step,
|
|
657
|
+
value: current,
|
|
658
|
+
disabled,
|
|
659
|
+
onChange: handleChange,
|
|
660
|
+
className: Slider_default.range,
|
|
661
|
+
style: { "--fill": fill }
|
|
662
|
+
}
|
|
663
|
+
) });
|
|
664
|
+
};
|
|
665
|
+
var Slider_default2 = Slider;
|
|
666
|
+
|
|
667
|
+
// src/components/Spinner/Spinner.tsx
|
|
668
|
+
import { Loader2 } from "lucide-react";
|
|
669
|
+
|
|
670
|
+
// src/components/Spinner/Spinner.module.css
|
|
671
|
+
var Spinner_default = {};
|
|
672
|
+
|
|
673
|
+
// src/components/Spinner/Spinner.tsx
|
|
674
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
675
|
+
var sizePx = { sm: 16, md: 24, lg: 32 };
|
|
676
|
+
var Spinner = ({ size = "md" }) => /* @__PURE__ */ jsx20(Loader2, { size: sizePx[size], className: Spinner_default.spinner, "aria-label": "Loading" });
|
|
677
|
+
var Spinner_default2 = Spinner;
|
|
678
|
+
|
|
679
|
+
// src/components/Switch/Switch.tsx
|
|
680
|
+
import { useState as useState10 } from "react";
|
|
681
|
+
|
|
682
|
+
// src/components/Switch/Switch.module.css
|
|
683
|
+
var Switch_default = {};
|
|
684
|
+
|
|
685
|
+
// src/components/Switch/Switch.tsx
|
|
686
|
+
import { jsx as jsx21, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
687
|
+
var Switch = ({
|
|
688
|
+
label,
|
|
689
|
+
checked,
|
|
690
|
+
defaultChecked = false,
|
|
691
|
+
disabled,
|
|
692
|
+
id,
|
|
693
|
+
onChange
|
|
694
|
+
}) => {
|
|
695
|
+
const [internal, setInternal] = useState10(defaultChecked);
|
|
696
|
+
const isOn = checked !== void 0 ? checked : internal;
|
|
697
|
+
const handleToggle = () => {
|
|
698
|
+
if (disabled) return;
|
|
699
|
+
const next = !isOn;
|
|
700
|
+
setInternal(next);
|
|
701
|
+
onChange == null ? void 0 : onChange(next);
|
|
702
|
+
};
|
|
703
|
+
return /* @__PURE__ */ jsxs11("label", { className: `${Switch_default.container} ${disabled ? Switch_default.disabled : ""}`, htmlFor: id, children: [
|
|
704
|
+
/* @__PURE__ */ jsx21(
|
|
705
|
+
"input",
|
|
706
|
+
{
|
|
707
|
+
type: "checkbox",
|
|
708
|
+
id,
|
|
709
|
+
checked: isOn,
|
|
710
|
+
disabled,
|
|
711
|
+
onChange: handleToggle,
|
|
712
|
+
className: Switch_default.input
|
|
713
|
+
}
|
|
714
|
+
),
|
|
715
|
+
/* @__PURE__ */ jsx21("span", { className: `${Switch_default.track} ${isOn ? Switch_default.on : ""}`, children: /* @__PURE__ */ jsx21("span", { className: `${Switch_default.thumb} ${isOn ? Switch_default.thumbOn : ""}` }) }),
|
|
716
|
+
label && /* @__PURE__ */ jsx21("span", { className: Switch_default.label, children: label })
|
|
717
|
+
] });
|
|
718
|
+
};
|
|
719
|
+
var Switch_default2 = Switch;
|
|
720
|
+
|
|
721
|
+
// src/components/Table/Table.module.css
|
|
722
|
+
var Table_default = {};
|
|
723
|
+
|
|
724
|
+
// src/components/Table/Table.tsx
|
|
725
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
726
|
+
var Table = (_a) => {
|
|
727
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
728
|
+
return /* @__PURE__ */ jsx22("div", { className: Table_default.wrapper, children: /* @__PURE__ */ jsx22("table", __spreadValues({ className: `${Table_default.table}${className ? ` ${className}` : ""}` }, props)) });
|
|
729
|
+
};
|
|
730
|
+
var TableHead = (props) => /* @__PURE__ */ jsx22("thead", __spreadValues({}, props));
|
|
731
|
+
var TableBody = (props) => /* @__PURE__ */ jsx22("tbody", __spreadValues({}, props));
|
|
732
|
+
var TableRow = (_a) => {
|
|
733
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
734
|
+
return /* @__PURE__ */ jsx22("tr", __spreadValues({ className: `${Table_default.row}${className ? ` ${className}` : ""}` }, props));
|
|
735
|
+
};
|
|
736
|
+
var TableHeader = (_a) => {
|
|
737
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
738
|
+
return /* @__PURE__ */ jsx22("th", __spreadValues({ className: `${Table_default.th}${className ? ` ${className}` : ""}` }, props));
|
|
739
|
+
};
|
|
740
|
+
var TableCell = (_a) => {
|
|
741
|
+
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
742
|
+
return /* @__PURE__ */ jsx22("td", __spreadValues({ className: `${Table_default.td}${className ? ` ${className}` : ""}` }, props));
|
|
743
|
+
};
|
|
744
|
+
|
|
745
|
+
// src/components/Tabs/Tabs.tsx
|
|
746
|
+
import { useState as useState11 } from "react";
|
|
747
|
+
|
|
748
|
+
// src/components/Tabs/Tabs.module.css
|
|
749
|
+
var Tabs_default = {};
|
|
750
|
+
|
|
751
|
+
// src/components/Tabs/Tabs.tsx
|
|
752
|
+
import { jsx as jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
753
|
+
var Tabs = ({ tabs, defaultValue }) => {
|
|
754
|
+
var _a, _b;
|
|
755
|
+
const [active, setActive] = useState11((_b = defaultValue != null ? defaultValue : (_a = tabs[0]) == null ? void 0 : _a.value) != null ? _b : "");
|
|
756
|
+
const activeTab = tabs.find((t) => t.value === active);
|
|
757
|
+
return /* @__PURE__ */ jsxs12("div", { className: Tabs_default.root, children: [
|
|
758
|
+
/* @__PURE__ */ jsx23("div", { className: Tabs_default.list, role: "tablist", children: tabs.map((tab) => /* @__PURE__ */ jsxs12(
|
|
759
|
+
"button",
|
|
760
|
+
{
|
|
761
|
+
role: "tab",
|
|
762
|
+
"aria-selected": active === tab.value,
|
|
763
|
+
className: `${Tabs_default.trigger} ${active === tab.value ? Tabs_default.active : ""}`,
|
|
764
|
+
onClick: () => setActive(tab.value),
|
|
765
|
+
children: [
|
|
766
|
+
tab.icon && /* @__PURE__ */ jsx23("span", { className: Tabs_default["trigger-icon"], children: tab.icon }),
|
|
767
|
+
tab.label
|
|
768
|
+
]
|
|
769
|
+
},
|
|
770
|
+
tab.value
|
|
771
|
+
)) }),
|
|
772
|
+
/* @__PURE__ */ jsx23("div", { className: Tabs_default.content, role: "tabpanel", children: activeTab == null ? void 0 : activeTab.content })
|
|
773
|
+
] });
|
|
774
|
+
};
|
|
775
|
+
var Tabs_default2 = Tabs;
|
|
776
|
+
|
|
777
|
+
// src/components/Textarea/Textarea.module.css
|
|
778
|
+
var Textarea_default = {};
|
|
779
|
+
|
|
780
|
+
// src/components/Textarea/Textarea.tsx
|
|
781
|
+
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
782
|
+
var Textarea = (_a) => {
|
|
783
|
+
var _b = _a, { error, className } = _b, props = __objRest(_b, ["error", "className"]);
|
|
784
|
+
const classes = [
|
|
785
|
+
Textarea_default.textarea,
|
|
786
|
+
error ? Textarea_default.error : "",
|
|
787
|
+
className != null ? className : ""
|
|
788
|
+
].filter(Boolean).join(" ");
|
|
789
|
+
return /* @__PURE__ */ jsx24("textarea", __spreadValues({ className: classes }, props));
|
|
790
|
+
};
|
|
791
|
+
var Textarea_default2 = Textarea;
|
|
792
|
+
|
|
793
|
+
// src/components/Tooltip/Tooltip.module.css
|
|
794
|
+
var Tooltip_default = {};
|
|
795
|
+
|
|
796
|
+
// src/components/Tooltip/Tooltip.tsx
|
|
797
|
+
import { jsx as jsx25, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
798
|
+
var Tooltip = ({ content, children, position = "top" }) => /* @__PURE__ */ jsxs13("span", { className: Tooltip_default.wrapper, children: [
|
|
799
|
+
children,
|
|
800
|
+
/* @__PURE__ */ jsx25("span", { className: `${Tooltip_default.tooltip} ${Tooltip_default[position]}`, role: "tooltip", children: content })
|
|
801
|
+
] });
|
|
802
|
+
var Tooltip_default2 = Tooltip;
|
|
803
|
+
export {
|
|
804
|
+
Accordion_default2 as Accordion,
|
|
805
|
+
Alert_default2 as Alert,
|
|
806
|
+
Avatar_default2 as Avatar,
|
|
807
|
+
Badge_default2 as Badge,
|
|
808
|
+
Breadcrumb_default2 as Breadcrumb,
|
|
809
|
+
Button_default2 as Button,
|
|
810
|
+
Card,
|
|
811
|
+
CardContent,
|
|
812
|
+
CardDescription,
|
|
813
|
+
CardFooter,
|
|
814
|
+
CardHeader,
|
|
815
|
+
CardTitle,
|
|
816
|
+
Checkbox_default2 as Checkbox,
|
|
817
|
+
CopyButton_default2 as CopyButton,
|
|
818
|
+
FileUpload_default2 as FileUpload,
|
|
819
|
+
Input_default2 as Input,
|
|
820
|
+
Label_default2 as Label,
|
|
821
|
+
PasswordInput_default as PasswordInput,
|
|
822
|
+
Progress_default2 as Progress,
|
|
823
|
+
RadioGroup_default2 as RadioGroup,
|
|
824
|
+
Select_default2 as Select,
|
|
825
|
+
Skeleton_default2 as Skeleton,
|
|
826
|
+
Slider_default2 as Slider,
|
|
827
|
+
Spinner_default2 as Spinner,
|
|
828
|
+
Switch_default2 as Switch,
|
|
829
|
+
Table,
|
|
830
|
+
TableBody,
|
|
831
|
+
TableCell,
|
|
832
|
+
TableHead,
|
|
833
|
+
TableHeader,
|
|
834
|
+
TableRow,
|
|
835
|
+
Tabs_default2 as Tabs,
|
|
836
|
+
Textarea_default2 as Textarea,
|
|
837
|
+
ThemeProvider,
|
|
838
|
+
Tooltip_default2 as Tooltip,
|
|
839
|
+
useTheme
|
|
840
|
+
};
|
|
841
|
+
//# sourceMappingURL=index.js.map
|