@lindle/linoardo 1.0.20 → 1.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/button.cjs +32 -16
- package/dist/button.cjs.map +1 -1
- package/dist/button.d.cts +17 -7
- package/dist/button.d.ts +17 -7
- package/dist/button.js +1 -1
- package/dist/card.cjs +2 -2
- package/dist/card.cjs.map +1 -1
- package/dist/card.js +1 -1
- package/dist/chip.cjs +8 -9
- package/dist/chip.cjs.map +1 -1
- package/dist/chip.d.cts +4 -4
- package/dist/chip.d.ts +4 -4
- package/dist/chip.js +1 -1
- package/dist/{chunk-B5FW33K3.js → chunk-2UL3S6KC.js} +4 -4
- package/dist/chunk-2UL3S6KC.js.map +1 -0
- package/dist/chunk-67USTSXI.js +214 -0
- package/dist/chunk-67USTSXI.js.map +1 -0
- package/dist/{chunk-5PBPURGP.js → chunk-DSZ3EOQB.js} +10 -11
- package/dist/chunk-DSZ3EOQB.js.map +1 -0
- package/dist/{chunk-SZU6OYLS.js → chunk-F2G2JRKA.js} +33 -18
- package/dist/chunk-F2G2JRKA.js.map +1 -0
- package/dist/{chunk-MFLH36XK.js → chunk-JGEXEDKS.js} +3 -3
- package/dist/{chunk-MFLH36XK.js.map → chunk-JGEXEDKS.js.map} +1 -1
- package/dist/chunk-NEYVJE67.js +170 -0
- package/dist/chunk-NEYVJE67.js.map +1 -0
- package/dist/{chunk-36T6I3XH.js → chunk-SAGQYMS3.js} +14 -14
- package/dist/chunk-SAGQYMS3.js.map +1 -0
- package/dist/chunk-VPF7M2PB.js +141 -0
- package/dist/chunk-VPF7M2PB.js.map +1 -0
- package/dist/chunk-Z5A2OIDI.js +312 -0
- package/dist/chunk-Z5A2OIDI.js.map +1 -0
- package/dist/hero.cjs +143 -0
- package/dist/hero.cjs.map +1 -0
- package/dist/hero.d.cts +34 -0
- package/dist/hero.d.ts +34 -0
- package/dist/hero.js +3 -0
- package/dist/hero.js.map +1 -0
- package/dist/index.cjs +741 -58
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +26 -55
- package/dist/index.d.ts +26 -55
- package/dist/index.js +126 -260
- package/dist/index.js.map +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.cjs.map +1 -1
- package/dist/input.js +1 -1
- package/dist/notification.cjs +236 -0
- package/dist/notification.cjs.map +1 -0
- package/dist/notification.d.cts +34 -0
- package/dist/notification.d.ts +34 -0
- package/dist/notification.js +3 -0
- package/dist/notification.js.map +1 -0
- package/dist/profileCard.cjs +392 -0
- package/dist/profileCard.cjs.map +1 -0
- package/dist/profileCard.d.cts +29 -0
- package/dist/profileCard.d.ts +29 -0
- package/dist/profileCard.js +5 -0
- package/dist/profileCard.js.map +1 -0
- package/dist/progress.cjs +314 -0
- package/dist/progress.cjs.map +1 -0
- package/dist/progress.d.cts +30 -0
- package/dist/progress.d.ts +30 -0
- package/dist/progress.js +3 -0
- package/dist/progress.js.map +1 -0
- package/dist/select.cjs +12 -12
- package/dist/select.cjs.map +1 -1
- package/dist/select.js +1 -1
- package/dist/styles.css +381 -6
- package/dist/switch.d.cts +1 -1
- package/dist/switch.d.ts +1 -1
- package/package.json +12 -1
- package/dist/chunk-36T6I3XH.js.map +0 -1
- package/dist/chunk-5PBPURGP.js.map +0 -1
- package/dist/chunk-B5FW33K3.js.map +0 -1
- package/dist/chunk-SZU6OYLS.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -30,17 +30,18 @@ var React3__namespace = /*#__PURE__*/_interopNamespace(React3);
|
|
|
30
30
|
var iconBaseClasses = {
|
|
31
31
|
mdi: ["mdi"]
|
|
32
32
|
};
|
|
33
|
+
|
|
34
|
+
// src/Containment/Button/states.button.ts
|
|
33
35
|
var base = "btn-base focus-visible:outline-none focus-visible:ring-2 rounded-lg transition-colors duration-200 font-medium disabled:opacity-50 disabled:cursor-not-allowed";
|
|
34
|
-
var blackAndWhiteVariantClass = "bg-white text-black border border-black focus-visible:ring-black/40 focus-visible:ring-offset-white";
|
|
35
36
|
var blackAndWhitePaletteClasses = {
|
|
36
|
-
solid:
|
|
37
|
-
outline:
|
|
38
|
-
ghost: "bg-neutral-300
|
|
39
|
-
text:
|
|
40
|
-
filled: "bg-black text-
|
|
41
|
-
underlined:
|
|
42
|
-
rounded:
|
|
43
|
-
sharp: "bg-black text-white rounded-none"
|
|
37
|
+
solid: "bg-black text-white hover:bg-black/90 focus-visible:ring-black/40 focus-visible:ring-offset-white",
|
|
38
|
+
outline: "border-2 border-black text-black bg-white hover:bg-black hover:text-white focus-visible:ring-black/40 focus-visible:ring-offset-white",
|
|
39
|
+
ghost: "text-black bg-neutral-200 hover:bg-neutral-300 focus-visible:ring-black/20 border border-transparent",
|
|
40
|
+
text: "bg-transparent text-black hover:bg-neutral-200 focus-visible:ring-black/20 underline-offset-2 border border-transparent",
|
|
41
|
+
filled: "bg-black/10 text-black border border-black/30 hover:bg-black/20 focus-visible:ring-black/20",
|
|
42
|
+
underlined: "bg-transparent text-black border border-transparent underline decoration-2 underline-offset-4 hover:bg-neutral-200 focus-visible:ring-black/20",
|
|
43
|
+
rounded: "rounded-full border-2 border-black bg-white text-black hover:bg-black hover:text-white focus-visible:ring-black/40 focus-visible:ring-offset-white",
|
|
44
|
+
sharp: "bg-black text-white rounded-none hover:bg-black/90 focus-visible:ring-black/40"
|
|
44
45
|
};
|
|
45
46
|
var paletteVariantClasses = {
|
|
46
47
|
primary: {
|
|
@@ -136,7 +137,9 @@ var resolveIconClassName = (icon) => {
|
|
|
136
137
|
}
|
|
137
138
|
const [library, providedName] = icon;
|
|
138
139
|
const normalizedLibrary = library.trim();
|
|
139
|
-
const baseClasses = iconBaseClasses[normalizedLibrary] ?? [
|
|
140
|
+
const baseClasses = iconBaseClasses[normalizedLibrary] ?? [
|
|
141
|
+
normalizedLibrary
|
|
142
|
+
];
|
|
140
143
|
const iconName = providedName.trim();
|
|
141
144
|
if (!iconName) {
|
|
142
145
|
return baseClasses.join(" ");
|
|
@@ -152,12 +155,19 @@ var sizeClasses = {
|
|
|
152
155
|
"x-large": "px-7 py-3.5 text-xl"
|
|
153
156
|
};
|
|
154
157
|
var iconOnlySizeClasses = {
|
|
155
|
-
"x-small": "p-
|
|
158
|
+
"x-small": "p-0 text-xs aspect-square",
|
|
156
159
|
small: "p-2.5 text-sm aspect-square",
|
|
157
160
|
medium: "p-3 text-base aspect-square",
|
|
158
161
|
large: "p-3.5 text-lg aspect-square",
|
|
159
162
|
"x-large": "p-4 text-xl aspect-square"
|
|
160
163
|
};
|
|
164
|
+
var iconOnlyIconSizeClasses = {
|
|
165
|
+
"x-small": "text-sm",
|
|
166
|
+
small: "text-base",
|
|
167
|
+
medium: "text-lg",
|
|
168
|
+
large: "text-xl",
|
|
169
|
+
"x-large": "text-2xl"
|
|
170
|
+
};
|
|
161
171
|
var Button = React3__namespace.forwardRef(
|
|
162
172
|
({
|
|
163
173
|
variant = "solid",
|
|
@@ -172,28 +182,34 @@ var Button = React3__namespace.forwardRef(
|
|
|
172
182
|
children,
|
|
173
183
|
disabled,
|
|
174
184
|
onClick,
|
|
185
|
+
type,
|
|
186
|
+
as,
|
|
175
187
|
...rest
|
|
176
188
|
}, ref) => {
|
|
189
|
+
const Component = as ?? "button";
|
|
177
190
|
const variantClass = resolveVariantClass(variant, color);
|
|
178
191
|
const sizeClass = iconOnly ? iconOnlySizeClasses[size] ?? iconOnlySizeClasses.medium : sizeClasses[size] ?? sizeClasses.medium;
|
|
192
|
+
const iconSizeClass = iconOnly ? iconOnlyIconSizeClasses[size] ?? iconOnlyIconSizeClasses.medium : void 0;
|
|
179
193
|
const blockClass = block ? "w-full" : null;
|
|
194
|
+
const isNativeButton = Component === "button";
|
|
180
195
|
const isDisabled = disabled || loading;
|
|
181
|
-
const cursor = onClick && !isDisabled ? "cursor-pointer" : "cursor-default";
|
|
196
|
+
const cursor = (onClick || type === "submit") && !isDisabled ? "cursor-pointer" : "cursor-default";
|
|
182
197
|
const resolvedIconClass = resolveIconClassName(icon);
|
|
183
198
|
const shouldRenderIcon = Boolean(resolvedIconClass && !loading);
|
|
184
199
|
const isLoadingTextProvided = loadingText !== void 0 && loadingText !== null;
|
|
185
200
|
const content = iconOnly ? null : loading && isLoadingTextProvided ? loadingText : children;
|
|
186
201
|
const hasDecorators = (loading || shouldRenderIcon) && Boolean(content);
|
|
187
202
|
const gapClass = hasDecorators ? "gap-2" : void 0;
|
|
188
|
-
const loadingIconClass = loading ? tailwindMerge.twMerge("mdi mdi-loading mdi-spin", "leading-none") : void 0;
|
|
189
|
-
const iconClassName = shouldRenderIcon ? tailwindMerge.twMerge("leading-none", resolvedIconClass) : void 0;
|
|
203
|
+
const loadingIconClass = loading ? tailwindMerge.twMerge("mdi mdi-loading mdi-spin", "leading-none", iconSizeClass) : void 0;
|
|
204
|
+
const iconClassName = shouldRenderIcon ? tailwindMerge.twMerge("leading-none", iconSizeClass, resolvedIconClass) : void 0;
|
|
190
205
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
191
|
-
|
|
206
|
+
Component,
|
|
192
207
|
{
|
|
193
208
|
...rest,
|
|
194
209
|
ref,
|
|
195
210
|
onClick,
|
|
196
|
-
disabled: isDisabled,
|
|
211
|
+
disabled: isNativeButton ? isDisabled : void 0,
|
|
212
|
+
"aria-disabled": !isNativeButton ? isDisabled : void 0,
|
|
197
213
|
className: tailwindMerge.twMerge(base, cursor, variantClass, sizeClass, blockClass, gapClass, className),
|
|
198
214
|
"data-loading": loading || void 0,
|
|
199
215
|
"aria-busy": loading || void 0,
|
|
@@ -217,16 +233,15 @@ var chipSizeClasses = {
|
|
|
217
233
|
large: "text-base px-5 py-2 min-h-[2.5rem]"
|
|
218
234
|
};
|
|
219
235
|
var closeButtonClasses = "ml-1 flex h-5 w-5 shrink-0 items-center justify-center rounded-full border border-transparent text-current/70 transition-colors duration-200 hover:bg-current/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-current/30 focus-visible:ring-offset-2";
|
|
220
|
-
var blackAndWhiteChipVariantClass = "bg-white text-black border border-black hover:bg-white focus-visible:ring-black/40 focus-visible:ring-offset-white";
|
|
221
236
|
var blackAndWhitePaletteClasses2 = {
|
|
222
|
-
solid:
|
|
223
|
-
outline:
|
|
224
|
-
ghost:
|
|
225
|
-
text:
|
|
226
|
-
filled:
|
|
227
|
-
underlined:
|
|
228
|
-
rounded:
|
|
229
|
-
sharp:
|
|
237
|
+
solid: "bg-black text-white border border-black hover:bg-black/90 focus-visible:ring-black/40 focus-visible:ring-offset-white",
|
|
238
|
+
outline: "bg-white text-black border-2 border-black hover:bg-black hover:text-white focus-visible:ring-black/40 focus-visible:ring-offset-white",
|
|
239
|
+
ghost: "bg-neutral-200 text-black border border-transparent hover:bg-neutral-300 focus-visible:ring-black/20",
|
|
240
|
+
text: "bg-transparent text-black border border-transparent hover:bg-neutral-200 focus-visible:ring-black/20",
|
|
241
|
+
filled: "bg-black/10 text-black border border-black/30 hover:bg-black/20 focus-visible:ring-black/20",
|
|
242
|
+
underlined: "bg-transparent text-black border-0 border-b-2 border-black px-0 rounded-none hover:text-black/80 focus-visible:ring-black/20",
|
|
243
|
+
rounded: "rounded-full bg-white text-black border-2 border-black hover:bg-black hover:text-white focus-visible:ring-black/40 focus-visible:ring-offset-white",
|
|
244
|
+
sharp: "rounded-none bg-black text-white border border-black hover:bg-black/90 focus-visible:ring-black/40 focus-visible:ring-offset-white"
|
|
230
245
|
};
|
|
231
246
|
var paletteVariantClasses2 = {
|
|
232
247
|
primary: {
|
|
@@ -1421,7 +1436,7 @@ var paddingClasses = {
|
|
|
1421
1436
|
var cardBase = "card-base relative w-full overflow-hidden bg-white text-gray-900 transition-colors dark:bg-slate-900 dark:text-slate-100";
|
|
1422
1437
|
var variantClasses = {
|
|
1423
1438
|
solid: "rounded-2xl border border-gray-200 bg-white shadow-lg shadow-gray-200/55 dark:border-slate-800 dark:bg-slate-900 dark:shadow-black/30",
|
|
1424
|
-
outline: "rounded-2xl border border-
|
|
1439
|
+
outline: "rounded-2xl border-2 border-black bg-white shadow-none dark:border-black dark:bg-slate-900",
|
|
1425
1440
|
text: "rounded-2xl border border-transparent bg-transparent shadow-none dark:border-transparent dark:bg-transparent",
|
|
1426
1441
|
ghost: "rounded-2xl border border-transparent bg-gray-50 shadow-none dark:border-transparent dark:bg-slate-800",
|
|
1427
1442
|
filled: "rounded-2xl border border-gray-200 bg-gray-50 shadow-sm dark:border-slate-800 dark:bg-slate-800 dark:shadow-black/20",
|
|
@@ -1635,6 +1650,143 @@ function resolveItemContent(item, index, renderItem) {
|
|
|
1635
1650
|
}
|
|
1636
1651
|
return item;
|
|
1637
1652
|
}
|
|
1653
|
+
var positionClasses = {
|
|
1654
|
+
fixed: "fixed inset-x-0 top-0",
|
|
1655
|
+
absolute: "absolute inset-x-0 top-0",
|
|
1656
|
+
sticky: "sticky inset-x-0 top-0",
|
|
1657
|
+
static: "static",
|
|
1658
|
+
relative: "relative"
|
|
1659
|
+
};
|
|
1660
|
+
var colorClasses = {
|
|
1661
|
+
primary: "bg-primary text-white",
|
|
1662
|
+
surface: "bg-white text-gray-900 border-b border-gray-200",
|
|
1663
|
+
muted: "bg-gray-50 text-gray-900 border-b border-gray-200",
|
|
1664
|
+
dark: "bg-gray-900 text-white",
|
|
1665
|
+
transparent: "bg-transparent text-inherit"
|
|
1666
|
+
};
|
|
1667
|
+
var AppBar = ({
|
|
1668
|
+
title,
|
|
1669
|
+
logo,
|
|
1670
|
+
logoAlt = "Logo",
|
|
1671
|
+
brandHref,
|
|
1672
|
+
navigation = [],
|
|
1673
|
+
actions,
|
|
1674
|
+
position = "static",
|
|
1675
|
+
color = "surface",
|
|
1676
|
+
dense = false,
|
|
1677
|
+
elevated = true,
|
|
1678
|
+
contained = true,
|
|
1679
|
+
titlePosition = "start",
|
|
1680
|
+
className,
|
|
1681
|
+
children,
|
|
1682
|
+
...rest
|
|
1683
|
+
}) => {
|
|
1684
|
+
const [mobileOpen, setMobileOpen] = React3__namespace.useState(false);
|
|
1685
|
+
const isDark = color === "primary" || color === "dark";
|
|
1686
|
+
const isTransparent = color === "transparent";
|
|
1687
|
+
const barClass = tailwindMerge.twMerge(
|
|
1688
|
+
"app-bar z-40 w-full backdrop-blur-md",
|
|
1689
|
+
positionClasses[position] ?? positionClasses.static,
|
|
1690
|
+
colorClasses[color] ?? colorClasses.surface,
|
|
1691
|
+
elevated && !isTransparent ? "shadow-sm shadow-black/10" : void 0,
|
|
1692
|
+
"relative",
|
|
1693
|
+
className
|
|
1694
|
+
);
|
|
1695
|
+
const innerClass = tailwindMerge.twMerge(
|
|
1696
|
+
"mx-auto flex w-full items-center gap-4",
|
|
1697
|
+
contained ? "max-w-6xl px-4 sm:px-6 lg:px-8" : "px-4",
|
|
1698
|
+
dense ? "py-2.5" : "py-4"
|
|
1699
|
+
);
|
|
1700
|
+
const brandTextClass = isDark ? "text-white" : "text-gray-900";
|
|
1701
|
+
const navBaseClass = tailwindMerge.twMerge(
|
|
1702
|
+
"inline-flex items-center gap-2 rounded-xl px-3 py-2 text-sm font-medium transition focus-visible:outline-none",
|
|
1703
|
+
isDark ? "hover:bg-white/10 focus-visible:ring-2 focus-visible:ring-white/70" : "hover:bg-gray-100 focus-visible:ring-2 focus-visible:ring-primary/50 focus-visible:ring-offset-2 focus-visible:ring-offset-transparent"
|
|
1704
|
+
);
|
|
1705
|
+
const navActiveClass = isDark ? "bg-white/15 text-white" : "bg-primary/10 text-primary";
|
|
1706
|
+
const renderNavItem = (item, index) => {
|
|
1707
|
+
const { href, label, active, onClick } = item;
|
|
1708
|
+
const Component = href ? "a" : "button";
|
|
1709
|
+
const resolvedHref = href && href.trim().length > 0 ? href : void 0;
|
|
1710
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1711
|
+
Component,
|
|
1712
|
+
{
|
|
1713
|
+
href: resolvedHref,
|
|
1714
|
+
onClick,
|
|
1715
|
+
className: tailwindMerge.twMerge(navBaseClass, active ? navActiveClass : void 0),
|
|
1716
|
+
"aria-current": active ? "page" : void 0,
|
|
1717
|
+
children: label
|
|
1718
|
+
},
|
|
1719
|
+
`${resolvedHref ?? "item"}-${index}`
|
|
1720
|
+
);
|
|
1721
|
+
};
|
|
1722
|
+
const brandAlignClass = titlePosition === "center" ? "justify-self-center text-center" : titlePosition === "end" ? "justify-self-end text-right" : "justify-self-start";
|
|
1723
|
+
const brandNode = title || logo ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: tailwindMerge.twMerge("flex min-w-0 items-center gap-3", brandAlignClass), children: [
|
|
1724
|
+
logo ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-10 w-10 shrink-0 items-center justify-center overflow-hidden rounded-xl bg-white/10 ring-1 ring-black/5", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1725
|
+
"img",
|
|
1726
|
+
{
|
|
1727
|
+
src: logo,
|
|
1728
|
+
alt: logoAlt,
|
|
1729
|
+
className: "h-full w-full object-cover",
|
|
1730
|
+
loading: "lazy",
|
|
1731
|
+
decoding: "async"
|
|
1732
|
+
}
|
|
1733
|
+
) }) : null,
|
|
1734
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0", children: title ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: tailwindMerge.twMerge("text-base font-semibold leading-tight", brandTextClass), children: brandHref ? /* @__PURE__ */ jsxRuntime.jsx("a", { href: brandHref, className: "hover:underline focus-visible:outline-none", children: title }) : title }) : null })
|
|
1735
|
+
] }) : null;
|
|
1736
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("header", { ...rest, className: barClass, children: [
|
|
1737
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: innerClass, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid w-full grid-cols-[auto_1fr_auto] items-center gap-3", children: [
|
|
1738
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1739
|
+
navigation.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1740
|
+
"button",
|
|
1741
|
+
{
|
|
1742
|
+
type: "button",
|
|
1743
|
+
"aria-label": "Otev\u0159\xEDt navigaci",
|
|
1744
|
+
className: tailwindMerge.twMerge(
|
|
1745
|
+
"inline-flex h-10 w-10 items-center justify-center rounded-xl text-xl sm:hidden",
|
|
1746
|
+
isDark ? "text-white hover:bg-white/10 focus-visible:ring-2 focus-visible:ring-white/60" : "text-gray-700 hover:bg-gray-100 focus-visible:ring-2 focus-visible:ring-primary/40 focus-visible:ring-offset-2 focus-visible:ring-offset-transparent"
|
|
1747
|
+
),
|
|
1748
|
+
"aria-expanded": mobileOpen,
|
|
1749
|
+
onClick: () => setMobileOpen((open) => !open),
|
|
1750
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("i", { className: mobileOpen ? "mdi mdi-close" : "mdi mdi-menu", "aria-hidden": true })
|
|
1751
|
+
}
|
|
1752
|
+
) : null,
|
|
1753
|
+
navigation.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("nav", { className: "hidden items-center gap-1 sm:flex", "aria-label": "Hlavni navigace", children: navigation.map(renderNavItem) }) : null
|
|
1754
|
+
] }),
|
|
1755
|
+
brandNode,
|
|
1756
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-auto flex items-center justify-end gap-2", children: [
|
|
1757
|
+
children,
|
|
1758
|
+
actions
|
|
1759
|
+
] })
|
|
1760
|
+
] }) }),
|
|
1761
|
+
navigation.length > 0 && mobileOpen ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sm:hidden", children: /* @__PURE__ */ jsxRuntime.jsx("nav", { className: "absolute inset-x-0 top-full border-t border-gray-200/70 bg-white/95 p-3 shadow-lg shadow-gray-900/5 backdrop-blur-md", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-2", "aria-label": "Mobilni navigace", children: navigation.map((item, index) => {
|
|
1762
|
+
const { href, label, active, onClick } = item;
|
|
1763
|
+
const Component = href ? "a" : "button";
|
|
1764
|
+
const resolvedHref = href && href.trim().length > 0 ? href : void 0;
|
|
1765
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1766
|
+
Component,
|
|
1767
|
+
{
|
|
1768
|
+
href: resolvedHref,
|
|
1769
|
+
onClick: (event) => {
|
|
1770
|
+
onClick?.(event);
|
|
1771
|
+
setMobileOpen(false);
|
|
1772
|
+
},
|
|
1773
|
+
className: tailwindMerge.twMerge(
|
|
1774
|
+
"flex items-center justify-between rounded-xl px-3 py-2 text-sm font-medium transition",
|
|
1775
|
+
active ? "bg-primary/10 text-primary" : "text-gray-800 hover:bg-gray-100"
|
|
1776
|
+
),
|
|
1777
|
+
"aria-current": active ? "page" : void 0,
|
|
1778
|
+
children: [
|
|
1779
|
+
label,
|
|
1780
|
+
active ? /* @__PURE__ */ jsxRuntime.jsx("i", { className: "mdi mdi-circle-small text-primary", "aria-hidden": true }) : null
|
|
1781
|
+
]
|
|
1782
|
+
},
|
|
1783
|
+
`${resolvedHref ?? "mobile-item"}-${index}`
|
|
1784
|
+
);
|
|
1785
|
+
}) }) }) }) : null
|
|
1786
|
+
] });
|
|
1787
|
+
};
|
|
1788
|
+
AppBar.displayName = "AppBar";
|
|
1789
|
+
var AppBar_default = AppBar;
|
|
1638
1790
|
var containerVariants = {
|
|
1639
1791
|
solid: "bg-gradient-to-br from-primary via-primary/90 to-indigo-600 text-white shadow-2xl shadow-primary/30",
|
|
1640
1792
|
outline: "border border-gray-200 bg-white text-gray-900",
|
|
@@ -1778,7 +1930,17 @@ var variantMap = {
|
|
|
1778
1930
|
rounded: "bg-white text-gray-900 border border-gray-200 rounded-3xl shadow-md",
|
|
1779
1931
|
sharp: "bg-white text-gray-900 border border-gray-200 rounded-none shadow"
|
|
1780
1932
|
};
|
|
1781
|
-
var
|
|
1933
|
+
var cardRadiusMap = {
|
|
1934
|
+
solid: "rounded-2xl",
|
|
1935
|
+
outline: "rounded-2xl",
|
|
1936
|
+
text: "rounded-2xl",
|
|
1937
|
+
ghost: "rounded-2xl",
|
|
1938
|
+
filled: "rounded-3xl",
|
|
1939
|
+
underlined: "rounded-t-2xl",
|
|
1940
|
+
rounded: "rounded-3xl",
|
|
1941
|
+
sharp: "rounded-none"
|
|
1942
|
+
};
|
|
1943
|
+
var avatarRadiusMap = {
|
|
1782
1944
|
solid: "rounded-2xl",
|
|
1783
1945
|
outline: "rounded-2xl",
|
|
1784
1946
|
text: "rounded-2xl",
|
|
@@ -1789,13 +1951,26 @@ var radiusMap = {
|
|
|
1789
1951
|
sharp: "rounded-none"
|
|
1790
1952
|
};
|
|
1791
1953
|
var isDarkVariant = (variant) => variant === "filled";
|
|
1792
|
-
var SocialIcons = ({
|
|
1954
|
+
var SocialIcons = ({
|
|
1955
|
+
socials = [],
|
|
1956
|
+
dark
|
|
1957
|
+
}) => {
|
|
1793
1958
|
if (socials.length === 0) return null;
|
|
1794
|
-
|
|
1959
|
+
tailwindMerge.twMerge(
|
|
1795
1960
|
"flex h-10 w-10 items-center justify-center rounded-full border text-lg transition",
|
|
1796
1961
|
dark ? "border-white/30 text-white hover:bg-white/10" : "border-gray-200 text-gray-600 hover:border-primary/50 hover:text-primary"
|
|
1797
1962
|
);
|
|
1798
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: socials.map((link) =>
|
|
1963
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: socials.map((link) => (
|
|
1964
|
+
// <a
|
|
1965
|
+
// key={link.href}
|
|
1966
|
+
// href={link.href}
|
|
1967
|
+
// aria-label={link.label ?? link.icon}
|
|
1968
|
+
// className={iconBase}
|
|
1969
|
+
// >
|
|
1970
|
+
// <i className={twMerge('mdi', link.icon)} aria-hidden />
|
|
1971
|
+
// </a>
|
|
1972
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button_default, { iconOnly: true, icon: link.icon, variant: "rounded", size: "x-small" })
|
|
1973
|
+
)) });
|
|
1799
1974
|
};
|
|
1800
1975
|
var Badges = ({ badges = [], dark }) => {
|
|
1801
1976
|
if (badges.length === 0) return null;
|
|
@@ -1805,19 +1980,14 @@ var Badges = ({ badges = [], dark }) => {
|
|
|
1805
1980
|
);
|
|
1806
1981
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: badges.map((badge) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: badgeBase, children: badge.label }, badge.label)) });
|
|
1807
1982
|
};
|
|
1808
|
-
var AvatarFrame = ({
|
|
1809
|
-
avatar,
|
|
1810
|
-
size = "md",
|
|
1811
|
-
ring,
|
|
1812
|
-
radius
|
|
1813
|
-
}) => {
|
|
1983
|
+
var AvatarFrame = ({ avatar, size = "md", ring, radius }) => {
|
|
1814
1984
|
const dimension = size === "lg" ? "h-28 w-28" : "h-20 w-20";
|
|
1815
1985
|
const ringClass = ring ? "ring-4 ring-white/80 ring-offset-4 ring-offset-transparent" : "";
|
|
1816
1986
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1817
1987
|
"div",
|
|
1818
1988
|
{
|
|
1819
1989
|
className: tailwindMerge.twMerge(
|
|
1820
|
-
"overflow-hidden bg-
|
|
1990
|
+
"overflow-hidden bg-linear-to-br from-primary/10 to-primary/30",
|
|
1821
1991
|
radius,
|
|
1822
1992
|
dimension,
|
|
1823
1993
|
ringClass
|
|
@@ -1847,14 +2017,15 @@ var ProfileCard = ({
|
|
|
1847
2017
|
...rest
|
|
1848
2018
|
}) => {
|
|
1849
2019
|
const baseVariant = variantMap[variant] ?? variantMap.solid;
|
|
1850
|
-
const
|
|
2020
|
+
const cardRadius = cardRadiusMap[variant] ?? "rounded-2xl";
|
|
2021
|
+
const avatarRadius = avatarRadiusMap[variant] ?? "rounded-2xl";
|
|
1851
2022
|
const dark = isDarkVariant(variant);
|
|
1852
2023
|
const muted = dark ? "text-white/70" : "text-gray-600";
|
|
1853
2024
|
const accent = dark ? "text-white" : "text-gray-900";
|
|
1854
2025
|
const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1855
2026
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
1856
2027
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
1857
|
-
/* @__PURE__ */ jsxRuntime.jsx(AvatarFrame, { avatar, radius }),
|
|
2028
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFrame, { avatar, radius: avatarRadius }),
|
|
1858
2029
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1859
2030
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: tailwindMerge.twMerge("text-xl font-semibold", accent), children: name }),
|
|
1860
2031
|
role && /* @__PURE__ */ jsxRuntime.jsx("p", { className: tailwindMerge.twMerge("text-sm font-medium", muted), children: role })
|
|
@@ -1866,9 +2037,9 @@ var ProfileCard = ({
|
|
|
1866
2037
|
/* @__PURE__ */ jsxRuntime.jsx(SocialIcons, { socials, dark })
|
|
1867
2038
|
] });
|
|
1868
2039
|
const spotlightContent = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative overflow-hidden", children: [
|
|
1869
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 bg-
|
|
2040
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 bg-linear-to-br from-primary/10 via-transparent to-primary/20 blur-3xl" }),
|
|
1870
2041
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex flex-col gap-6 md:flex-row md:items-center", children: [
|
|
1871
|
-
/* @__PURE__ */ jsxRuntime.jsx(AvatarFrame, { avatar, size: "lg", ring: true, radius }),
|
|
2042
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFrame, { avatar, size: "lg", ring: true, radius: avatarRadius }),
|
|
1872
2043
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
1873
2044
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: tailwindMerge.twMerge("text-2xl font-semibold", accent), children: name }),
|
|
1874
2045
|
role && /* @__PURE__ */ jsxRuntime.jsx("p", { className: tailwindMerge.twMerge("text-sm font-medium uppercase tracking-wide", muted), children: role }),
|
|
@@ -1879,7 +2050,7 @@ var ProfileCard = ({
|
|
|
1879
2050
|
] })
|
|
1880
2051
|
] });
|
|
1881
2052
|
const splitContent = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-6 md:grid-cols-[auto,1fr] md:items-center", children: [
|
|
1882
|
-
/* @__PURE__ */ jsxRuntime.jsx(AvatarFrame, { avatar, size: "lg", ring: true, radius }),
|
|
2053
|
+
/* @__PURE__ */ jsxRuntime.jsx(AvatarFrame, { avatar, size: "lg", ring: true, radius: avatarRadius }),
|
|
1883
2054
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
1884
2055
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1885
2056
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: tailwindMerge.twMerge("text-2xl font-semibold", accent), children: name }),
|
|
@@ -1902,7 +2073,7 @@ var ProfileCard = ({
|
|
|
1902
2073
|
className: tailwindMerge.twMerge(
|
|
1903
2074
|
"profile-card relative overflow-hidden p-6 transition duration-200 hover:-translate-y-0.5 hover:shadow-xl",
|
|
1904
2075
|
baseVariant,
|
|
1905
|
-
|
|
2076
|
+
cardRadius,
|
|
1906
2077
|
className
|
|
1907
2078
|
),
|
|
1908
2079
|
children: layoutMap[layout] ?? layoutMap.classic
|
|
@@ -1960,7 +2131,7 @@ var Input = ({
|
|
|
1960
2131
|
const variantClasses3 = {
|
|
1961
2132
|
solid: "rounded border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/40",
|
|
1962
2133
|
sharp: "rounded-none border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/40",
|
|
1963
|
-
outline: "rounded border border-
|
|
2134
|
+
outline: "rounded border-2 border-black bg-white focus-visible:border-black focus-visible:ring-2 focus-visible:ring-black/30 dark:border-black dark:bg-transparent dark:focus-visible:border-black dark:focus-visible:ring-black/40",
|
|
1964
2135
|
text: "rounded-none border-0 border-b border-transparent px-0 bg-transparent focus-visible:border-primary focus-visible:ring-0 focus-visible:ring-transparent dark:border-b-gray-600 dark:focus-visible:border-primary/70",
|
|
1965
2136
|
ghost: "rounded border border-transparent bg-gray-50 text-gray-900 focus-visible:bg-white focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/15 dark:bg-slate-800 dark:text-gray-100 dark:focus-visible:bg-slate-700 dark:focus-visible:border-primary/60 dark:focus-visible:ring-primary/25",
|
|
1966
2137
|
filled: "rounded border border-gray-200 bg-gray-100 focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/25 dark:border-gray-700 dark:bg-slate-800 dark:focus-visible:border-primary/60 dark:focus-visible:ring-primary/30",
|
|
@@ -2082,16 +2253,16 @@ function generateString(length = 5) {
|
|
|
2082
2253
|
}
|
|
2083
2254
|
return result;
|
|
2084
2255
|
}
|
|
2085
|
-
var baseClass = "select-base w-full appearance-none focus-visible:outline-none focus-visible:ring-primary transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed bg-white text-gray-900";
|
|
2256
|
+
var baseClass = "select-base w-full appearance-none focus-visible:outline-none focus-visible:ring-primary transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed bg-white text-gray-900 placeholder:text-gray-500 dark:bg-slate-900 dark:text-gray-100 dark:placeholder:text-gray-400";
|
|
2086
2257
|
var variantClasses2 = {
|
|
2087
|
-
solid: "rounded border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30",
|
|
2088
|
-
sharp: "rounded-none border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30",
|
|
2089
|
-
outline: "rounded border border-
|
|
2090
|
-
text: "rounded-none border-0 border-b border-transparent pl-0 pr-10 bg-transparent focus-visible:border-primary focus-visible:ring-0 focus-visible:ring-transparent",
|
|
2091
|
-
ghost: "rounded border border-transparent bg-gray-50 text-gray-900 focus-visible:bg-white focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/15",
|
|
2092
|
-
filled: "rounded border border-gray-200 bg-gray-100 focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/25",
|
|
2093
|
-
underlined: "rounded-none border-0 border-b border-gray-300 pl-0 pr-10 bg-transparent focus-visible:border-primary focus-visible:ring-0 focus-visible:ring-transparent",
|
|
2094
|
-
rounded: "rounded-full pl-4 pr-10 border border-gray-300 bg-white focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/20 shadow-sm"
|
|
2258
|
+
solid: "rounded border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/40",
|
|
2259
|
+
sharp: "rounded-none border border-gray-400 bg-white shadow-sm focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/30 dark:border-gray-600 dark:bg-slate-900 dark:shadow-black/20 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/40",
|
|
2260
|
+
outline: "rounded border-2 border-black bg-white focus-visible:border-black focus-visible:ring-2 focus-visible:ring-black/30 dark:border-black dark:bg-transparent dark:focus-visible:border-black dark:focus-visible:ring-black/40",
|
|
2261
|
+
text: "rounded-none border-0 border-b border-transparent pl-0 pr-10 bg-transparent focus-visible:border-primary focus-visible:ring-0 focus-visible:ring-transparent dark:border-b-gray-600 dark:focus-visible:border-primary/70",
|
|
2262
|
+
ghost: "rounded border border-transparent bg-gray-50 text-gray-900 focus-visible:bg-white focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/15 dark:bg-slate-800 dark:text-gray-100 dark:focus-visible:bg-slate-700 dark:focus-visible:border-primary/60 dark:focus-visible:ring-primary/25",
|
|
2263
|
+
filled: "rounded border border-gray-200 bg-gray-100 focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/25 dark:border-gray-700 dark:bg-slate-800 dark:focus-visible:border-primary/60 dark:focus-visible:ring-primary/30",
|
|
2264
|
+
underlined: "rounded-none border-0 border-b border-gray-300 pl-0 pr-10 bg-transparent focus-visible:border-primary focus-visible:ring-0 focus-visible:ring-transparent dark:border-b-gray-600 dark:focus-visible:border-primary/70",
|
|
2265
|
+
rounded: "rounded-full pl-4 pr-10 border border-gray-300 bg-white focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/20 shadow-sm dark:border-gray-600 dark:bg-slate-900 dark:focus-visible:border-primary/70 dark:focus-visible:ring-primary/30 dark:shadow-black/20"
|
|
2095
2266
|
};
|
|
2096
2267
|
var sizeClasses2 = {
|
|
2097
2268
|
"x-small": { padding: "pl-2 pr-8 py-2", text: "text-xs" },
|
|
@@ -2173,7 +2344,7 @@ var Select = ({
|
|
|
2173
2344
|
const shouldRenderPlaceholder = !multiple && placeholderText !== void 0;
|
|
2174
2345
|
const labelShouldFloat = hasValue || isFocused;
|
|
2175
2346
|
const labelLeftClass = "left-3";
|
|
2176
|
-
const labelBgDefault = ["outline", "text", "underlined"].includes(variant) ? "bg-transparent" : "bg-white/90";
|
|
2347
|
+
const labelBgDefault = ["outline", "text", "underlined"].includes(variant) ? "bg-transparent" : "bg-white/90 dark:bg-slate-900";
|
|
2177
2348
|
const handleFocus = (event) => {
|
|
2178
2349
|
if (hidePlaceholderUntilFocus) setIsFocused(true);
|
|
2179
2350
|
onFocus?.(event);
|
|
@@ -2209,13 +2380,13 @@ var Select = ({
|
|
|
2209
2380
|
]
|
|
2210
2381
|
}
|
|
2211
2382
|
),
|
|
2212
|
-
!multiple && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute inset-y-0 right-3 flex items-center text-gray-500", children: /* @__PURE__ */ jsxRuntime.jsx("i", { className: "mdi mdi-chevron-down text-base leading-none", "aria-hidden": true }) }),
|
|
2383
|
+
!multiple && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "pointer-events-none absolute inset-y-0 right-3 flex items-center text-gray-500 dark:text-gray-300", children: /* @__PURE__ */ jsxRuntime.jsx("i", { className: "mdi mdi-chevron-down text-base leading-none", "aria-hidden": true }) }),
|
|
2213
2384
|
label && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2214
2385
|
"label",
|
|
2215
2386
|
{
|
|
2216
2387
|
htmlFor: selectId,
|
|
2217
2388
|
className: tailwindMerge.twMerge(
|
|
2218
|
-
"absolute transition-all duration-150 pointer-events-none text-gray-700",
|
|
2389
|
+
"absolute transition-all duration-150 pointer-events-none text-gray-700 dark:text-gray-200",
|
|
2219
2390
|
labelLeftClass,
|
|
2220
2391
|
labelShouldFloat ? [
|
|
2221
2392
|
"top-0 text-xs px-1",
|
|
@@ -2507,7 +2678,7 @@ var sizeClasses3 = {
|
|
|
2507
2678
|
large: "text-lg",
|
|
2508
2679
|
"x-large": "text-2xl"
|
|
2509
2680
|
};
|
|
2510
|
-
var
|
|
2681
|
+
var colorClasses2 = {
|
|
2511
2682
|
primary: "text-primary",
|
|
2512
2683
|
neutral: "text-gray-700",
|
|
2513
2684
|
info: "text-sky-600",
|
|
@@ -2539,11 +2710,521 @@ var Icon = ({ className, icon, size, color, ...rest }) => {
|
|
|
2539
2710
|
}
|
|
2540
2711
|
const classBase = "mdi";
|
|
2541
2712
|
const sizeClass = size ? sizeClasses3[size] ?? sizeClasses3.medium : void 0;
|
|
2542
|
-
const colorClass = color ?
|
|
2713
|
+
const colorClass = color ? colorClasses2[color] ?? colorClasses2.primary : void 0;
|
|
2543
2714
|
return /* @__PURE__ */ jsxRuntime.jsx("i", { ...rest, className: tailwindMerge.twMerge(classBase, iconValue, sizeClass, colorClass, className) });
|
|
2544
2715
|
};
|
|
2545
2716
|
var Icon_default = Icon;
|
|
2717
|
+
var placementClasses3 = {
|
|
2718
|
+
topLeft: "top-4 left-4 items-start",
|
|
2719
|
+
topRight: "top-4 right-4 items-end",
|
|
2720
|
+
bottomLeft: "bottom-4 left-4 items-start",
|
|
2721
|
+
bottomRight: "bottom-4 right-4 items-end"
|
|
2722
|
+
};
|
|
2723
|
+
var typeIconMap = {
|
|
2724
|
+
info: "mdi-information-outline",
|
|
2725
|
+
success: "mdi-check-circle-outline",
|
|
2726
|
+
warning: "mdi-alert-outline",
|
|
2727
|
+
error: "mdi-close-circle-outline"
|
|
2728
|
+
};
|
|
2729
|
+
var typeAccentMap = {
|
|
2730
|
+
info: "bg-sky-50 text-sky-600",
|
|
2731
|
+
success: "bg-emerald-50 text-emerald-600",
|
|
2732
|
+
warning: "bg-amber-50 text-amber-700",
|
|
2733
|
+
error: "bg-red-50 text-red-600"
|
|
2734
|
+
};
|
|
2735
|
+
var typeTone = {
|
|
2736
|
+
info: {
|
|
2737
|
+
bg: "bg-sky-50",
|
|
2738
|
+
text: "text-sky-900",
|
|
2739
|
+
border: "border-sky-200",
|
|
2740
|
+
iconBg: "bg-sky-100",
|
|
2741
|
+
iconText: "text-sky-600"
|
|
2742
|
+
},
|
|
2743
|
+
success: {
|
|
2744
|
+
bg: "bg-emerald-50",
|
|
2745
|
+
text: "text-emerald-900",
|
|
2746
|
+
border: "border-emerald-200",
|
|
2747
|
+
iconBg: "bg-emerald-100",
|
|
2748
|
+
iconText: "text-emerald-600"
|
|
2749
|
+
},
|
|
2750
|
+
warning: {
|
|
2751
|
+
bg: "bg-amber-50",
|
|
2752
|
+
text: "text-amber-900",
|
|
2753
|
+
border: "border-amber-200",
|
|
2754
|
+
iconBg: "bg-amber-100",
|
|
2755
|
+
iconText: "text-amber-700"
|
|
2756
|
+
},
|
|
2757
|
+
error: {
|
|
2758
|
+
bg: "bg-red-50",
|
|
2759
|
+
text: "text-red-900",
|
|
2760
|
+
border: "border-red-200",
|
|
2761
|
+
iconBg: "bg-red-100",
|
|
2762
|
+
iconText: "text-red-600"
|
|
2763
|
+
}
|
|
2764
|
+
};
|
|
2765
|
+
var resolveVariantClass3 = (variant, type) => {
|
|
2766
|
+
const tone = type ? typeTone[type] : void 0;
|
|
2767
|
+
switch (variant) {
|
|
2768
|
+
case "filled":
|
|
2769
|
+
return tailwindMerge.twMerge(
|
|
2770
|
+
tone?.bg ?? "bg-primary/10",
|
|
2771
|
+
tone?.text ?? "text-primary",
|
|
2772
|
+
"border border-transparent shadow-none"
|
|
2773
|
+
);
|
|
2774
|
+
case "outline":
|
|
2775
|
+
return tailwindMerge.twMerge(
|
|
2776
|
+
"bg-white/90",
|
|
2777
|
+
tone?.text ?? "text-gray-900",
|
|
2778
|
+
tone?.border ?? "border-primary/20",
|
|
2779
|
+
"border-[1.5px]"
|
|
2780
|
+
);
|
|
2781
|
+
case "ghost":
|
|
2782
|
+
return tailwindMerge.twMerge(
|
|
2783
|
+
"bg-transparent shadow-none border border-transparent",
|
|
2784
|
+
tone?.text ?? "text-gray-900"
|
|
2785
|
+
);
|
|
2786
|
+
case "solid":
|
|
2787
|
+
default:
|
|
2788
|
+
return "bg-white/95 text-gray-900 border border-gray-200";
|
|
2789
|
+
}
|
|
2790
|
+
};
|
|
2791
|
+
var resolveIconClassName4 = (icon) => {
|
|
2792
|
+
if (!icon) return void 0;
|
|
2793
|
+
if (typeof icon === "string") {
|
|
2794
|
+
const trimmed = icon.trim();
|
|
2795
|
+
if (!trimmed) return void 0;
|
|
2796
|
+
if (trimmed.includes(" ")) return trimmed;
|
|
2797
|
+
const normalized2 = trimmed.startsWith("mdi-") ? trimmed : `mdi-${trimmed}`;
|
|
2798
|
+
return `mdi ${normalized2}`;
|
|
2799
|
+
}
|
|
2800
|
+
const [library, iconName] = icon;
|
|
2801
|
+
const normalized = iconName?.startsWith("mdi-") ? iconName : `mdi-${iconName}`;
|
|
2802
|
+
return `mdi ${library} ${normalized}`.trim();
|
|
2803
|
+
};
|
|
2804
|
+
var resolveIconNode = (icon, fallbackClassName) => {
|
|
2805
|
+
if (React3__namespace.isValidElement(icon)) return icon;
|
|
2806
|
+
const iconClassName = resolveIconClassName4(icon) ?? fallbackClassName;
|
|
2807
|
+
if (!iconClassName) return null;
|
|
2808
|
+
const hasBase = iconClassName.split(" ").some((token) => token.trim() === "mdi");
|
|
2809
|
+
const hasGlyph = iconClassName.includes("mdi-");
|
|
2810
|
+
const finalClassName = hasBase && hasGlyph ? iconClassName : `mdi ${iconClassName}`.trim();
|
|
2811
|
+
return /* @__PURE__ */ jsxRuntime.jsx("i", { className: finalClassName, "aria-hidden": true });
|
|
2812
|
+
};
|
|
2813
|
+
var NotificationCard = ({ item }) => {
|
|
2814
|
+
const {
|
|
2815
|
+
key,
|
|
2816
|
+
message,
|
|
2817
|
+
description,
|
|
2818
|
+
icon,
|
|
2819
|
+
closeIcon,
|
|
2820
|
+
closable = true,
|
|
2821
|
+
btn,
|
|
2822
|
+
onClick,
|
|
2823
|
+
className,
|
|
2824
|
+
style,
|
|
2825
|
+
role = "status",
|
|
2826
|
+
type,
|
|
2827
|
+
variant = "solid",
|
|
2828
|
+
...rest
|
|
2829
|
+
} = item;
|
|
2830
|
+
const hasMessage = message !== void 0 && message !== null;
|
|
2831
|
+
const hasDescription = description !== void 0 && description !== null;
|
|
2832
|
+
const hasContent = hasMessage || hasDescription;
|
|
2833
|
+
const accentClass = type ? typeAccentMap[type] : void 0;
|
|
2834
|
+
const iconNode = resolveIconNode(icon, type ? `mdi ${typeIconMap[type]}` : void 0);
|
|
2835
|
+
const closeIconNode = resolveIconNode(closeIcon, "mdi mdi-close");
|
|
2836
|
+
const variantClass = resolveVariantClass3(variant, type);
|
|
2837
|
+
const toneIconBg = type ? typeTone[type]?.iconBg : void 0;
|
|
2838
|
+
const toneIconText = type ? typeTone[type]?.iconText : void 0;
|
|
2839
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2840
|
+
"article",
|
|
2841
|
+
{
|
|
2842
|
+
...rest,
|
|
2843
|
+
role,
|
|
2844
|
+
className: tailwindMerge.twMerge(
|
|
2845
|
+
"pointer-events-auto flex w-88 max-w-[calc(100vw-2.5rem)] gap-3 rounded-2xl p-4 shadow-xl ring-1 ring-black/5 backdrop-blur-sm transition hover:-translate-y-0.5 hover:shadow-2xl focus:outline-none",
|
|
2846
|
+
"dark:border-gray-800 dark:bg-gray-900/95 dark:text-gray-50 dark:ring-white/5",
|
|
2847
|
+
variantClass,
|
|
2848
|
+
className
|
|
2849
|
+
),
|
|
2850
|
+
style,
|
|
2851
|
+
onClick,
|
|
2852
|
+
children: [
|
|
2853
|
+
iconNode ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2854
|
+
"div",
|
|
2855
|
+
{
|
|
2856
|
+
className: tailwindMerge.twMerge(
|
|
2857
|
+
"mt-0.5 flex h-10 w-10 shrink-0 items-center justify-center rounded-xl text-xl",
|
|
2858
|
+
toneIconBg ?? accentClass ?? "bg-primary/10",
|
|
2859
|
+
toneIconText ?? "text-primary"
|
|
2860
|
+
),
|
|
2861
|
+
children: iconNode
|
|
2862
|
+
}
|
|
2863
|
+
) : null,
|
|
2864
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1 space-y-1", children: [
|
|
2865
|
+
hasContent ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
2866
|
+
hasMessage ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[15px] font-semibold leading-5 text-gray-900 dark:text-white", children: message }) : null,
|
|
2867
|
+
hasDescription ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm leading-6 text-gray-600 dark:text-gray-300", children: description }) : null
|
|
2868
|
+
] }) : null,
|
|
2869
|
+
btn ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-1 text-sm", children: btn }) : null
|
|
2870
|
+
] }),
|
|
2871
|
+
closable ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2872
|
+
"button",
|
|
2873
|
+
{
|
|
2874
|
+
type: "button",
|
|
2875
|
+
"aria-label": "Zav\u0159\xEDt upozorn\u011Bn\xED",
|
|
2876
|
+
className: "-mr-1 -mt-1 h-8 w-8 shrink-0 rounded-full text-gray-500 transition hover:bg-gray-100 hover:text-gray-700 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/40 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-white",
|
|
2877
|
+
onClick: (event) => {
|
|
2878
|
+
event.stopPropagation();
|
|
2879
|
+
item.onClose?.();
|
|
2880
|
+
},
|
|
2881
|
+
children: closeIconNode
|
|
2882
|
+
}
|
|
2883
|
+
) : null
|
|
2884
|
+
]
|
|
2885
|
+
}
|
|
2886
|
+
);
|
|
2887
|
+
};
|
|
2888
|
+
var Notification = ({
|
|
2889
|
+
items = [],
|
|
2890
|
+
placement = "topRight",
|
|
2891
|
+
gap = 12,
|
|
2892
|
+
containerClassName,
|
|
2893
|
+
className,
|
|
2894
|
+
...rest
|
|
2895
|
+
}) => {
|
|
2896
|
+
if (!items.length) return null;
|
|
2897
|
+
const grouped = /* @__PURE__ */ new Map();
|
|
2898
|
+
items.forEach((item) => {
|
|
2899
|
+
const resolvedKey = item.key ?? `notification-${item.message ?? Math.random()}`;
|
|
2900
|
+
const resolvedPlacement = item.placement ?? placement;
|
|
2901
|
+
const group = grouped.get(resolvedPlacement) ?? [];
|
|
2902
|
+
group.push({ ...item, key: resolvedKey });
|
|
2903
|
+
grouped.set(resolvedPlacement, group);
|
|
2904
|
+
});
|
|
2905
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: Array.from(grouped.entries()).map(([groupPlacement, groupItems]) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2906
|
+
"div",
|
|
2907
|
+
{
|
|
2908
|
+
className: tailwindMerge.twMerge(
|
|
2909
|
+
"pointer-events-none fixed z-70 flex w-full max-w-[24rem] flex-col",
|
|
2910
|
+
placementClasses3[groupPlacement],
|
|
2911
|
+
containerClassName,
|
|
2912
|
+
className
|
|
2913
|
+
),
|
|
2914
|
+
style: { gap: `${gap}px` },
|
|
2915
|
+
...rest,
|
|
2916
|
+
children: groupItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(NotificationCard, { item }, item.key))
|
|
2917
|
+
},
|
|
2918
|
+
groupPlacement
|
|
2919
|
+
)) });
|
|
2920
|
+
};
|
|
2921
|
+
var Notification_default = Notification;
|
|
2922
|
+
var clampPercent = (value) => {
|
|
2923
|
+
if (value === void 0 || value === null || Number.isNaN(value)) {
|
|
2924
|
+
return 0;
|
|
2925
|
+
}
|
|
2926
|
+
return Math.min(100, Math.max(0, value));
|
|
2927
|
+
};
|
|
2928
|
+
var statusIconMap = {
|
|
2929
|
+
success: "mdi mdi-check",
|
|
2930
|
+
exception: "mdi mdi-alert"
|
|
2931
|
+
};
|
|
2932
|
+
var strokeColorByStatus = {
|
|
2933
|
+
normal: "rgb(99 102 241)",
|
|
2934
|
+
active: "rgb(99 102 241)",
|
|
2935
|
+
success: "rgb(16 185 129)",
|
|
2936
|
+
exception: "rgb(239 68 68)"
|
|
2937
|
+
};
|
|
2938
|
+
var trailColorDefault = "rgb(229 231 235)";
|
|
2939
|
+
var resolveStroke = (status, strokeColor, gradientId) => {
|
|
2940
|
+
if (!strokeColor) {
|
|
2941
|
+
return { color: strokeColorByStatus[status] };
|
|
2942
|
+
}
|
|
2943
|
+
if (typeof strokeColor === "string") {
|
|
2944
|
+
return { color: strokeColor };
|
|
2945
|
+
}
|
|
2946
|
+
const id = gradientId ?? `progress-gradient-${Math.random().toString(16).slice(2)}`;
|
|
2947
|
+
return {
|
|
2948
|
+
color: `url(#${id})`,
|
|
2949
|
+
gradient: { id, from: strokeColor.from, to: strokeColor.to },
|
|
2950
|
+
cssGradient: `linear-gradient(90deg, ${strokeColor.from}, ${strokeColor.to})`
|
|
2951
|
+
};
|
|
2952
|
+
};
|
|
2953
|
+
var resolveRotation = (gapPosition) => {
|
|
2954
|
+
switch (gapPosition) {
|
|
2955
|
+
case "bottom":
|
|
2956
|
+
return 90;
|
|
2957
|
+
case "left":
|
|
2958
|
+
return 180;
|
|
2959
|
+
case "right":
|
|
2960
|
+
return 0;
|
|
2961
|
+
case "top":
|
|
2962
|
+
default:
|
|
2963
|
+
return -90;
|
|
2964
|
+
}
|
|
2965
|
+
};
|
|
2966
|
+
var buildGradientId = (strokeColor) => {
|
|
2967
|
+
if (strokeColor && typeof strokeColor !== "string") {
|
|
2968
|
+
const from = strokeColor.from.replace(/\W+/g, "");
|
|
2969
|
+
const to = strokeColor.to.replace(/\W+/g, "");
|
|
2970
|
+
return `progress-gradient-${from}-${to}`;
|
|
2971
|
+
}
|
|
2972
|
+
return void 0;
|
|
2973
|
+
};
|
|
2974
|
+
var InfoNode = ({ status, percent, successPercent, format }) => {
|
|
2975
|
+
const iconClass = status === "success" || status === "exception" ? statusIconMap[status] : void 0;
|
|
2976
|
+
const content = typeof format === "function" ? format(percent, successPercent) : iconClass ? /* @__PURE__ */ jsxRuntime.jsx("i", { className: iconClass, "aria-hidden": true }) : `${Math.round(percent)}%`;
|
|
2977
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-gray-700 dark:text-gray-200", children: content });
|
|
2978
|
+
};
|
|
2979
|
+
var renderSteps = (percent, steps, status, strokeStyle, trailColor, height) => {
|
|
2980
|
+
const filled = Math.round(percent / 100 * steps);
|
|
2981
|
+
const stepStyle = height ? { height } : {};
|
|
2982
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex w-full items-center gap-1", style: stepStyle, children: Array.from({ length: steps }).map((_, idx) => {
|
|
2983
|
+
const isFilled = idx < filled;
|
|
2984
|
+
const resolvedStyle = {
|
|
2985
|
+
...isFilled ? strokeStyle : { backgroundColor: trailColor ?? trailColorDefault },
|
|
2986
|
+
height
|
|
2987
|
+
};
|
|
2988
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2989
|
+
"span",
|
|
2990
|
+
{
|
|
2991
|
+
className: tailwindMerge.twMerge(
|
|
2992
|
+
"flex-1 rounded-full",
|
|
2993
|
+
isFilled ? void 0 : "bg-gray-200 dark:bg-gray-800",
|
|
2994
|
+
status === "active" && isFilled ? "animate-pulse" : void 0
|
|
2995
|
+
),
|
|
2996
|
+
style: resolvedStyle
|
|
2997
|
+
},
|
|
2998
|
+
idx
|
|
2999
|
+
);
|
|
3000
|
+
}) });
|
|
3001
|
+
};
|
|
3002
|
+
var LineProgress = ({
|
|
3003
|
+
percent,
|
|
3004
|
+
status,
|
|
3005
|
+
successPercent,
|
|
3006
|
+
format,
|
|
3007
|
+
showInfo = true,
|
|
3008
|
+
strokeWidth,
|
|
3009
|
+
trailColor,
|
|
3010
|
+
strokeColor,
|
|
3011
|
+
success,
|
|
3012
|
+
size = "default",
|
|
3013
|
+
steps,
|
|
3014
|
+
className,
|
|
3015
|
+
style,
|
|
3016
|
+
...rest
|
|
3017
|
+
}) => {
|
|
3018
|
+
const height = strokeWidth ?? (size === "small" ? 6 : size === "large" ? 12 : 8);
|
|
3019
|
+
const gradientId = buildGradientId(strokeColor);
|
|
3020
|
+
const { color, gradient, cssGradient } = resolveStroke(status, strokeColor, gradientId);
|
|
3021
|
+
const stepStrokeStyle = gradient ? { backgroundImage: cssGradient } : { backgroundColor: color };
|
|
3022
|
+
const lineStyle = {
|
|
3023
|
+
height,
|
|
3024
|
+
backgroundColor: trailColor ?? trailColorDefault
|
|
3025
|
+
};
|
|
3026
|
+
const barStyle = {
|
|
3027
|
+
width: `${percent}%`,
|
|
3028
|
+
height,
|
|
3029
|
+
backgroundColor: color,
|
|
3030
|
+
background: gradient ? cssGradient : color
|
|
3031
|
+
};
|
|
3032
|
+
const successWidth = successPercent ? Math.min(successPercent, percent) : 0;
|
|
3033
|
+
const successColor = success?.strokeColor ?? "rgb(16 185 129)";
|
|
3034
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: tailwindMerge.twMerge("flex w-full items-center gap-3", className), style, ...rest, children: [
|
|
3035
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full overflow-hidden rounded-full", style: lineStyle, children: typeof steps === "number" && steps > 1 ? renderSteps(percent, steps, status, stepStrokeStyle, trailColor, height) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3036
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3037
|
+
"div",
|
|
3038
|
+
{
|
|
3039
|
+
className: tailwindMerge.twMerge(
|
|
3040
|
+
"h-full rounded-full transition-[width] duration-300 ease-out",
|
|
3041
|
+
status === "active" ? "animate-pulse" : void 0
|
|
3042
|
+
),
|
|
3043
|
+
style: barStyle
|
|
3044
|
+
}
|
|
3045
|
+
),
|
|
3046
|
+
successWidth > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3047
|
+
"div",
|
|
3048
|
+
{
|
|
3049
|
+
className: "absolute inset-y-0 left-0 rounded-full transition-[width] duration-300 ease-out",
|
|
3050
|
+
style: { width: `${successWidth}%`, height, backgroundColor: successColor }
|
|
3051
|
+
}
|
|
3052
|
+
) : null
|
|
3053
|
+
] }) }),
|
|
3054
|
+
showInfo ? /* @__PURE__ */ jsxRuntime.jsx(InfoNode, { status, percent, successPercent, format }) : null
|
|
3055
|
+
] });
|
|
3056
|
+
};
|
|
3057
|
+
var CircleProgress = ({
|
|
3058
|
+
percent,
|
|
3059
|
+
status,
|
|
3060
|
+
successPercent,
|
|
3061
|
+
format,
|
|
3062
|
+
showInfo = true,
|
|
3063
|
+
strokeWidth,
|
|
3064
|
+
trailColor,
|
|
3065
|
+
strokeColor,
|
|
3066
|
+
success,
|
|
3067
|
+
width = 120,
|
|
3068
|
+
type,
|
|
3069
|
+
gapDegree,
|
|
3070
|
+
gapPosition = "top",
|
|
3071
|
+
className,
|
|
3072
|
+
style,
|
|
3073
|
+
...rest
|
|
3074
|
+
}) => {
|
|
3075
|
+
const stroke = strokeWidth ?? 10;
|
|
3076
|
+
const radius = (width - stroke) / 2;
|
|
3077
|
+
const circumference = 2 * Math.PI * radius;
|
|
3078
|
+
const gap = type === "dashboard" ? gapDegree ?? 75 : gapDegree ?? 0;
|
|
3079
|
+
const perimeter = circumference - gap / 360 * circumference;
|
|
3080
|
+
const dashOffsetBase = gap / 360 * circumference / 2;
|
|
3081
|
+
const dashArray = `${perimeter} ${circumference}`;
|
|
3082
|
+
const gradientId = buildGradientId(strokeColor);
|
|
3083
|
+
const { color, gradient } = resolveStroke(status, strokeColor, gradientId);
|
|
3084
|
+
const rotation = resolveRotation(gapPosition);
|
|
3085
|
+
const successColor = success?.strokeColor ?? "rgb(16 185 129)";
|
|
3086
|
+
const progressDashOffset = (100 - percent) / 100 * perimeter + dashOffsetBase;
|
|
3087
|
+
const successDashOffset = (100 - successPercent) / 100 * perimeter + dashOffsetBase;
|
|
3088
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: tailwindMerge.twMerge("inline-flex flex-col items-center justify-center", className), style, ...rest, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex items-center justify-center", style: { width, height: width }, children: [
|
|
3089
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3090
|
+
"svg",
|
|
3091
|
+
{
|
|
3092
|
+
width,
|
|
3093
|
+
height: width,
|
|
3094
|
+
viewBox: `0 0 ${width} ${width}`,
|
|
3095
|
+
className: "absolute inset-0 overflow-visible",
|
|
3096
|
+
style: { transform: `rotate(${rotation}deg)` },
|
|
3097
|
+
children: [
|
|
3098
|
+
gradient ? /* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsxs("linearGradient", { id: gradient.id, x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [
|
|
3099
|
+
/* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "0%", stopColor: gradient.from }),
|
|
3100
|
+
/* @__PURE__ */ jsxRuntime.jsx("stop", { offset: "100%", stopColor: gradient.to })
|
|
3101
|
+
] }) }) : null,
|
|
3102
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3103
|
+
"circle",
|
|
3104
|
+
{
|
|
3105
|
+
cx: width / 2,
|
|
3106
|
+
cy: width / 2,
|
|
3107
|
+
r: radius,
|
|
3108
|
+
strokeWidth: stroke,
|
|
3109
|
+
stroke: trailColor ?? trailColorDefault,
|
|
3110
|
+
fill: "none",
|
|
3111
|
+
strokeDasharray: dashArray,
|
|
3112
|
+
strokeDashoffset: dashOffsetBase,
|
|
3113
|
+
strokeLinecap: "round"
|
|
3114
|
+
}
|
|
3115
|
+
),
|
|
3116
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3117
|
+
"circle",
|
|
3118
|
+
{
|
|
3119
|
+
cx: width / 2,
|
|
3120
|
+
cy: width / 2,
|
|
3121
|
+
r: radius,
|
|
3122
|
+
strokeWidth: stroke,
|
|
3123
|
+
stroke: color,
|
|
3124
|
+
fill: "none",
|
|
3125
|
+
strokeDasharray: dashArray,
|
|
3126
|
+
strokeDashoffset: progressDashOffset,
|
|
3127
|
+
strokeLinecap: "round",
|
|
3128
|
+
className: tailwindMerge.twMerge(status === "active" ? "animate-[spin_3s_linear_infinite]" : void 0)
|
|
3129
|
+
}
|
|
3130
|
+
),
|
|
3131
|
+
successPercent > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3132
|
+
"circle",
|
|
3133
|
+
{
|
|
3134
|
+
cx: width / 2,
|
|
3135
|
+
cy: width / 2,
|
|
3136
|
+
r: radius,
|
|
3137
|
+
strokeWidth: stroke,
|
|
3138
|
+
stroke: successColor,
|
|
3139
|
+
fill: "none",
|
|
3140
|
+
strokeDasharray: dashArray,
|
|
3141
|
+
strokeDashoffset: successDashOffset,
|
|
3142
|
+
strokeLinecap: "round"
|
|
3143
|
+
}
|
|
3144
|
+
) : null
|
|
3145
|
+
]
|
|
3146
|
+
}
|
|
3147
|
+
),
|
|
3148
|
+
showInfo ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-semibold text-gray-800 dark:text-gray-100", children: /* @__PURE__ */ jsxRuntime.jsx(InfoNode, { status, percent, successPercent, format }) }) }) : null
|
|
3149
|
+
] }) });
|
|
3150
|
+
};
|
|
3151
|
+
var Progress = (props) => {
|
|
3152
|
+
const toNumber2 = (value) => {
|
|
3153
|
+
if (typeof value === "string") {
|
|
3154
|
+
const parsed = Number.parseFloat(value);
|
|
3155
|
+
return Number.isFinite(parsed) ? parsed : void 0;
|
|
3156
|
+
}
|
|
3157
|
+
return value;
|
|
3158
|
+
};
|
|
3159
|
+
const {
|
|
3160
|
+
percent: rawPercent = 0,
|
|
3161
|
+
success,
|
|
3162
|
+
status: providedStatus,
|
|
3163
|
+
type = "line",
|
|
3164
|
+
showInfo = true,
|
|
3165
|
+
format,
|
|
3166
|
+
strokeWidth,
|
|
3167
|
+
trailColor,
|
|
3168
|
+
strokeColor,
|
|
3169
|
+
width,
|
|
3170
|
+
size,
|
|
3171
|
+
steps,
|
|
3172
|
+
gapDegree,
|
|
3173
|
+
gapPosition,
|
|
3174
|
+
className,
|
|
3175
|
+
style,
|
|
3176
|
+
...restProps
|
|
3177
|
+
} = props;
|
|
3178
|
+
const percent = clampPercent(toNumber2(rawPercent));
|
|
3179
|
+
const successPercent = clampPercent(toNumber2(success?.percent));
|
|
3180
|
+
const status = providedStatus ?? (percent >= 100 ? "success" : "normal");
|
|
3181
|
+
const resolvedClassName = tailwindMerge.twMerge("min-w-[200px]", className);
|
|
3182
|
+
if (type === "circle" || type === "dashboard") {
|
|
3183
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3184
|
+
CircleProgress,
|
|
3185
|
+
{
|
|
3186
|
+
...restProps,
|
|
3187
|
+
type,
|
|
3188
|
+
percent,
|
|
3189
|
+
successPercent,
|
|
3190
|
+
success,
|
|
3191
|
+
status,
|
|
3192
|
+
showInfo,
|
|
3193
|
+
className: resolvedClassName,
|
|
3194
|
+
format,
|
|
3195
|
+
strokeWidth,
|
|
3196
|
+
trailColor,
|
|
3197
|
+
strokeColor,
|
|
3198
|
+
width,
|
|
3199
|
+
gapDegree,
|
|
3200
|
+
gapPosition,
|
|
3201
|
+
style
|
|
3202
|
+
}
|
|
3203
|
+
);
|
|
3204
|
+
}
|
|
3205
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3206
|
+
LineProgress,
|
|
3207
|
+
{
|
|
3208
|
+
percent,
|
|
3209
|
+
successPercent,
|
|
3210
|
+
success,
|
|
3211
|
+
status,
|
|
3212
|
+
showInfo,
|
|
3213
|
+
className: resolvedClassName,
|
|
3214
|
+
format,
|
|
3215
|
+
strokeWidth,
|
|
3216
|
+
trailColor,
|
|
3217
|
+
strokeColor,
|
|
3218
|
+
size,
|
|
3219
|
+
steps,
|
|
3220
|
+
style,
|
|
3221
|
+
...restProps
|
|
3222
|
+
}
|
|
3223
|
+
);
|
|
3224
|
+
};
|
|
3225
|
+
var Progress_default = Progress;
|
|
2546
3226
|
|
|
3227
|
+
exports.AppBar = AppBar_default;
|
|
2547
3228
|
exports.Button = Button_default;
|
|
2548
3229
|
exports.Card = Card_default;
|
|
2549
3230
|
exports.Chip = Chip_default;
|
|
@@ -2557,7 +3238,9 @@ exports.List = List_default;
|
|
|
2557
3238
|
exports.ListItem = Item_default;
|
|
2558
3239
|
exports.Masonry = Masonry_default;
|
|
2559
3240
|
exports.Menu = Menu_default;
|
|
3241
|
+
exports.Notification = Notification_default;
|
|
2560
3242
|
exports.ProfileCard = ProfileCard_default;
|
|
3243
|
+
exports.Progress = Progress_default;
|
|
2561
3244
|
exports.Select = Select_default;
|
|
2562
3245
|
exports.Slider = Slider_default;
|
|
2563
3246
|
exports.Switch = Switch_default;
|