asterui 0.12.61 → 0.12.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Affix.d.ts +2 -0
- package/dist/components/Affix.js.map +1 -1
- package/dist/components/Alert.d.ts +2 -0
- package/dist/components/Alert.js.map +1 -1
- package/dist/components/Avatar.d.ts +4 -0
- package/dist/components/Avatar.js.map +1 -1
- package/dist/components/Breadcrumb.js +22 -22
- package/dist/components/Breadcrumb.js.map +1 -1
- package/dist/components/Browser.d.ts +2 -0
- package/dist/components/Browser.js.map +1 -1
- package/dist/components/Chat.js +35 -26
- package/dist/components/Chat.js.map +1 -1
- package/dist/components/Code.d.ts +2 -0
- package/dist/components/Code.js.map +1 -1
- package/dist/components/Container.d.ts +2 -0
- package/dist/components/Container.js.map +1 -1
- package/dist/components/ContextMenu.js +100 -84
- package/dist/components/ContextMenu.js.map +1 -1
- package/dist/components/CopyButton.d.ts +2 -0
- package/dist/components/CopyButton.js +9 -8
- package/dist/components/CopyButton.js.map +1 -1
- package/dist/components/Countdown.d.ts +3 -3
- package/dist/components/Countdown.js +49 -47
- package/dist/components/Countdown.js.map +1 -1
- package/dist/components/Diff.d.ts +3 -3
- package/dist/components/Diff.js +14 -10
- package/dist/components/Diff.js.map +1 -1
- package/dist/components/Divider.d.ts +2 -0
- package/dist/components/Divider.js.map +1 -1
- package/dist/components/Dock.d.ts +4 -0
- package/dist/components/Dock.js +38 -25
- package/dist/components/Dock.js.map +1 -1
- package/dist/components/Dropdown.js +110 -110
- package/dist/components/Dropdown.js.map +1 -1
- package/dist/components/Fieldset.d.ts +2 -0
- package/dist/components/Fieldset.js.map +1 -1
- package/dist/components/FloatButton.d.ts +6 -0
- package/dist/components/FloatButton.js +122 -98
- package/dist/components/FloatButton.js.map +1 -1
- package/dist/components/Footer.d.ts +2 -0
- package/dist/components/Footer.js.map +1 -1
- package/dist/components/Grid.d.ts +4 -0
- package/dist/components/Grid.js.map +1 -1
- package/dist/components/Hero.d.ts +2 -0
- package/dist/components/Hero.js.map +1 -1
- package/dist/components/HoverGallery.d.ts +3 -3
- package/dist/components/HoverGallery.js +12 -10
- package/dist/components/HoverGallery.js.map +1 -1
- package/dist/components/Join.d.ts +2 -0
- package/dist/components/Join.js.map +1 -1
- package/dist/components/Kbd.d.ts +2 -0
- package/dist/components/Kbd.js.map +1 -1
- package/dist/components/Loading.d.ts +2 -0
- package/dist/components/Loading.js +51 -31
- package/dist/components/Loading.js.map +1 -1
- package/dist/components/Mask.d.ts +2 -2
- package/dist/components/Mask.js.map +1 -1
- package/dist/components/Navbar.d.ts +2 -0
- package/dist/components/Navbar.js.map +1 -1
- package/dist/components/Notification.js +32 -18
- package/dist/components/Notification.js.map +1 -1
- package/dist/components/Phone.d.ts +3 -2
- package/dist/components/Phone.js +10 -8
- package/dist/components/Phone.js.map +1 -1
- package/dist/components/Popconfirm.js +110 -92
- package/dist/components/Popconfirm.js.map +1 -1
- package/dist/components/Popover.d.ts +2 -0
- package/dist/components/Popover.js.map +1 -1
- package/dist/components/Progress.d.ts +2 -0
- package/dist/components/Progress.js.map +1 -1
- package/dist/components/Radio.d.ts +6 -3
- package/dist/components/Radio.js +9 -9
- package/dist/components/Radio.js.map +1 -1
- package/dist/components/Skeleton.d.ts +2 -0
- package/dist/components/Skeleton.js.map +1 -1
- package/dist/components/Space.d.ts +2 -0
- package/dist/components/Space.js.map +1 -1
- package/dist/components/Status.d.ts +3 -3
- package/dist/components/Status.js +27 -25
- package/dist/components/Status.js.map +1 -1
- package/dist/components/Toggle.d.ts +2 -0
- package/dist/components/Toggle.js.map +1 -1
- package/dist/components/Tooltip.d.ts +2 -0
- package/dist/components/Tooltip.js +38 -32
- package/dist/components/Tooltip.js.map +1 -1
- package/dist/components/Window.d.ts +3 -2
- package/dist/components/Window.js +9 -7
- package/dist/components/Window.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { useState as D, useCallback as
|
|
3
|
-
import { useConfig as
|
|
4
|
-
const
|
|
1
|
+
import { jsxs as i, jsx as s, Fragment as z } from "react/jsx-runtime";
|
|
2
|
+
import { useState as D, useCallback as E, useEffect as F } from "react";
|
|
3
|
+
import { useConfig as U } from "../providers/ConfigProvider.js";
|
|
4
|
+
const V = "countdown", q = "--value", A = "--digits", T = (t) => {
|
|
5
5
|
const e = t - Date.now();
|
|
6
6
|
return e <= 0 ? { days: 0, hours: 0, minutes: 0, seconds: 0 } : {
|
|
7
7
|
days: Math.floor(e / (1e3 * 60 * 60 * 24)),
|
|
@@ -9,8 +9,8 @@ const F = "countdown", U = "--value", V = "--digits", T = (t) => {
|
|
|
9
9
|
minutes: Math.floor(e / 1e3 / 60 % 60),
|
|
10
10
|
seconds: Math.floor(e / 1e3 % 60)
|
|
11
11
|
};
|
|
12
|
-
},
|
|
13
|
-
const n = /* @__PURE__ */ s("span", { className: `${
|
|
12
|
+
}, h = ({ value: t, label: e, size: l, showLabel: o, boxed: x }) => {
|
|
13
|
+
const n = /* @__PURE__ */ s("span", { className: `${V} font-mono ${{
|
|
14
14
|
xs: "text-lg",
|
|
15
15
|
sm: "text-2xl",
|
|
16
16
|
md: "text-4xl",
|
|
@@ -19,100 +19,102 @@ const F = "countdown", U = "--value", V = "--digits", T = (t) => {
|
|
|
19
19
|
}[l || "md"]}`, children: /* @__PURE__ */ s(
|
|
20
20
|
"span",
|
|
21
21
|
{
|
|
22
|
-
style: { [
|
|
22
|
+
style: { [q]: t, [A]: 2 },
|
|
23
23
|
"aria-live": "polite",
|
|
24
24
|
"aria-label": String(t),
|
|
25
25
|
children: String(t).padStart(2, "0")
|
|
26
26
|
}
|
|
27
27
|
) });
|
|
28
|
-
return
|
|
28
|
+
return x ? /* @__PURE__ */ i("div", { className: "flex flex-col items-center bg-neutral text-neutral-content rounded-box p-2", children: [
|
|
29
29
|
n,
|
|
30
|
-
|
|
31
|
-
] }) :
|
|
30
|
+
o && e && /* @__PURE__ */ s("span", { className: "text-xs mt-1", children: e })
|
|
31
|
+
] }) : o ? /* @__PURE__ */ i("div", { className: "flex flex-col items-center", children: [
|
|
32
32
|
n,
|
|
33
33
|
e && /* @__PURE__ */ s("span", { className: "text-xs text-base-content/70", children: e })
|
|
34
34
|
] }) : n;
|
|
35
|
-
},
|
|
35
|
+
}, B = ({
|
|
36
36
|
value: t,
|
|
37
37
|
format: e = "HH:MM:SS",
|
|
38
38
|
onFinish: l,
|
|
39
|
-
onChange:
|
|
40
|
-
className:
|
|
41
|
-
size:
|
|
39
|
+
onChange: o,
|
|
40
|
+
className: x = "",
|
|
41
|
+
size: C,
|
|
42
42
|
showLabels: n = !1,
|
|
43
43
|
labels: r = {},
|
|
44
|
-
boxed:
|
|
44
|
+
boxed: c = !1,
|
|
45
|
+
"data-testid": H,
|
|
46
|
+
...L
|
|
45
47
|
}) => {
|
|
46
|
-
const { componentSize:
|
|
48
|
+
const { componentSize: $ } = U(), a = C ?? $ ?? "md", d = t instanceof Date ? t.getTime() : t, [u, j] = D(() => T(d)), [p, k] = D(!1), m = {
|
|
47
49
|
days: r.days || "days",
|
|
48
50
|
hours: r.hours || "hours",
|
|
49
51
|
minutes: r.minutes || "min",
|
|
50
52
|
seconds: r.seconds || "sec"
|
|
51
|
-
},
|
|
52
|
-
const
|
|
53
|
-
|
|
53
|
+
}, g = E(() => {
|
|
54
|
+
const N = T(d);
|
|
55
|
+
j(N);
|
|
54
56
|
const v = d - Date.now();
|
|
55
|
-
|
|
56
|
-
}, [d,
|
|
57
|
-
|
|
58
|
-
const
|
|
59
|
-
return
|
|
60
|
-
}, [
|
|
61
|
-
const
|
|
62
|
-
return /* @__PURE__ */
|
|
63
|
-
|
|
57
|
+
o?.(Math.max(0, v)), v <= 0 && !p && (k(!0), l?.());
|
|
58
|
+
}, [d, o, l, p]);
|
|
59
|
+
F(() => {
|
|
60
|
+
const N = setInterval(g, 1e3);
|
|
61
|
+
return g(), () => clearInterval(N);
|
|
62
|
+
}, [g]);
|
|
63
|
+
const I = e.includes("D"), M = e.includes("H"), w = e.includes("M"), f = e.includes("S"), S = a === "lg" || a === "xl" ? "text-3xl" : a === "md" ? "text-2xl" : "text-xl", y = !n && !c;
|
|
64
|
+
return /* @__PURE__ */ i("div", { className: `flex gap-4 items-center ${x}`, "data-testid": H, "data-state": p ? "finished" : "running", ...L, children: [
|
|
65
|
+
I && /* @__PURE__ */ i(z, { children: [
|
|
64
66
|
/* @__PURE__ */ s(
|
|
65
|
-
|
|
67
|
+
h,
|
|
66
68
|
{
|
|
67
69
|
value: u.days,
|
|
68
70
|
label: m.days,
|
|
69
|
-
size:
|
|
71
|
+
size: a,
|
|
70
72
|
showLabel: n,
|
|
71
|
-
boxed:
|
|
73
|
+
boxed: c
|
|
72
74
|
}
|
|
73
75
|
),
|
|
74
|
-
|
|
76
|
+
y && (M || w || f) && /* @__PURE__ */ s("span", { className: S, children: ":" })
|
|
75
77
|
] }),
|
|
76
|
-
M && /* @__PURE__ */
|
|
78
|
+
M && /* @__PURE__ */ i(z, { children: [
|
|
77
79
|
/* @__PURE__ */ s(
|
|
78
|
-
|
|
80
|
+
h,
|
|
79
81
|
{
|
|
80
82
|
value: u.hours,
|
|
81
83
|
label: m.hours,
|
|
82
|
-
size:
|
|
84
|
+
size: a,
|
|
83
85
|
showLabel: n,
|
|
84
|
-
boxed:
|
|
86
|
+
boxed: c
|
|
85
87
|
}
|
|
86
88
|
),
|
|
87
|
-
|
|
89
|
+
y && (w || f) && /* @__PURE__ */ s("span", { className: S, children: ":" })
|
|
88
90
|
] }),
|
|
89
|
-
|
|
91
|
+
w && /* @__PURE__ */ i(z, { children: [
|
|
90
92
|
/* @__PURE__ */ s(
|
|
91
|
-
|
|
93
|
+
h,
|
|
92
94
|
{
|
|
93
95
|
value: u.minutes,
|
|
94
96
|
label: m.minutes,
|
|
95
|
-
size:
|
|
97
|
+
size: a,
|
|
96
98
|
showLabel: n,
|
|
97
|
-
boxed:
|
|
99
|
+
boxed: c
|
|
98
100
|
}
|
|
99
101
|
),
|
|
100
|
-
|
|
102
|
+
y && f && /* @__PURE__ */ s("span", { className: S, children: ":" })
|
|
101
103
|
] }),
|
|
102
104
|
f && /* @__PURE__ */ s(
|
|
103
|
-
|
|
105
|
+
h,
|
|
104
106
|
{
|
|
105
107
|
value: u.seconds,
|
|
106
108
|
label: m.seconds,
|
|
107
|
-
size:
|
|
109
|
+
size: a,
|
|
108
110
|
showLabel: n,
|
|
109
|
-
boxed:
|
|
111
|
+
boxed: c
|
|
110
112
|
}
|
|
111
113
|
)
|
|
112
114
|
] });
|
|
113
115
|
};
|
|
114
|
-
|
|
116
|
+
B.displayName = "Countdown";
|
|
115
117
|
export {
|
|
116
|
-
|
|
118
|
+
B as Countdown
|
|
117
119
|
};
|
|
118
120
|
//# sourceMappingURL=Countdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Countdown.js","sources":["../../src/components/Countdown.tsx"],"sourcesContent":["import React, { useEffect, useState, useCallback } from 'react'\nimport { useConfig } from '../providers/ConfigProvider'\n\n// DaisyUI classes\nconst dCountdown = 'countdown'\nconst dCssValue = '--value'\nconst dCssDigits = '--digits'\n\nexport interface CountdownProps {\n /** Target timestamp in milliseconds or Date object */\n value: number | Date\n /** Format string: 'D' days, 'H' hours, 'M' minutes, 'S' seconds */\n format?: string\n /** Callback when countdown reaches zero */\n onFinish?: () => void\n /** Callback on each tick with remaining time */\n onChange?: (value: number) => void\n /** Additional CSS classes */\n className?: string\n /** Size variant */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Show labels under each unit */\n showLabels?: boolean\n /** Custom labels */\n labels?: {\n days?: string\n hours?: string\n minutes?: string\n seconds?: string\n }\n /** Show box style around each unit */\n boxed?: boolean\n}\n\ninterface TimeLeft {\n days: number\n hours: number\n minutes: number\n seconds: number\n}\n\nconst calculateTimeLeft = (targetTime: number): TimeLeft => {\n const difference = targetTime - Date.now()\n\n if (difference <= 0) {\n return { days: 0, hours: 0, minutes: 0, seconds: 0 }\n }\n\n return {\n days: Math.floor(difference / (1000 * 60 * 60 * 24)),\n hours: Math.floor((difference / (1000 * 60 * 60)) % 24),\n minutes: Math.floor((difference / 1000 / 60) % 60),\n seconds: Math.floor((difference / 1000) % 60),\n }\n}\n\nconst CountdownUnit: React.FC<{\n value: number\n label?: string\n size?: CountdownProps['size']\n showLabel?: boolean\n boxed?: boolean\n}> = ({ value, label, size, showLabel, boxed }) => {\n const sizeClasses = {\n xs: 'text-lg',\n sm: 'text-2xl',\n md: 'text-4xl',\n lg: 'text-5xl',\n xl: 'text-6xl',\n }\n\n const content = (\n <span className={`${dCountdown} font-mono ${sizeClasses[size || 'md']}`}>\n <span\n style={{ [dCssValue]: value, [dCssDigits]: 2 } as React.CSSProperties}\n aria-live=\"polite\"\n aria-label={String(value)}\n >\n {String(value).padStart(2, '0')}\n </span>\n </span>\n )\n\n if (boxed) {\n return (\n <div className=\"flex flex-col items-center bg-neutral text-neutral-content rounded-box p-2\">\n {content}\n {showLabel && label && <span className=\"text-xs mt-1\">{label}</span>}\n </div>\n )\n }\n\n if (showLabel) {\n return (\n <div className=\"flex flex-col items-center\">\n {content}\n {label && <span className=\"text-xs text-base-content/70\">{label}</span>}\n </div>\n )\n }\n\n return content\n}\n\nexport const Countdown: React.FC<CountdownProps> = ({\n value,\n format = 'HH:MM:SS',\n onFinish,\n onChange,\n className = '',\n size,\n showLabels = false,\n labels = {},\n boxed = false,\n}) => {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n const targetTime = value instanceof Date ? value.getTime() : value\n const [timeLeft, setTimeLeft] = useState<TimeLeft>(() => calculateTimeLeft(targetTime))\n const [finished, setFinished] = useState(false)\n\n const defaultLabels = {\n days: labels.days || 'days',\n hours: labels.hours || 'hours',\n minutes: labels.minutes || 'min',\n seconds: labels.seconds || 'sec',\n }\n\n const tick = useCallback(() => {\n const newTimeLeft = calculateTimeLeft(targetTime)\n setTimeLeft(newTimeLeft)\n\n const remaining = targetTime - Date.now()\n onChange?.(Math.max(0, remaining))\n\n if (remaining <= 0 && !finished) {\n setFinished(true)\n onFinish?.()\n }\n }, [targetTime, onChange, onFinish, finished])\n\n useEffect(() => {\n const timer = setInterval(tick, 1000)\n tick() // Initial tick\n\n return () => clearInterval(timer)\n }, [tick])\n\n const showDays = format.includes('D')\n const showHours = format.includes('H')\n const showMinutes = format.includes('M')\n const showSeconds = format.includes('S')\n\n const separatorSize = effectiveSize === 'lg' || effectiveSize === 'xl' ? 'text-3xl' : effectiveSize === 'md' ? 'text-2xl' : 'text-xl'\n const showSeparators = !showLabels && !boxed\n\n return (\n <div className={`flex gap-4 items-center ${className}`}>\n {showDays && (\n <>\n <CountdownUnit\n value={timeLeft.days}\n label={defaultLabels.days}\n size={effectiveSize}\n showLabel={showLabels}\n boxed={boxed}\n />\n {showSeparators && (showHours || showMinutes || showSeconds) && (\n <span className={separatorSize}>:</span>\n )}\n </>\n )}\n {showHours && (\n <>\n <CountdownUnit\n value={timeLeft.hours}\n label={defaultLabels.hours}\n size={effectiveSize}\n showLabel={showLabels}\n boxed={boxed}\n />\n {showSeparators && (showMinutes || showSeconds) && (\n <span className={separatorSize}>:</span>\n )}\n </>\n )}\n {showMinutes && (\n <>\n <CountdownUnit\n value={timeLeft.minutes}\n label={defaultLabels.minutes}\n size={effectiveSize}\n showLabel={showLabels}\n boxed={boxed}\n />\n {showSeparators && showSeconds && <span className={separatorSize}>:</span>}\n </>\n )}\n {showSeconds && (\n <CountdownUnit\n value={timeLeft.seconds}\n label={defaultLabels.seconds}\n size={effectiveSize}\n showLabel={showLabels}\n boxed={boxed}\n />\n )}\n </div>\n )\n}\n\nCountdown.displayName = 'Countdown'\n"],"names":["dCountdown","dCssValue","dCssDigits","calculateTimeLeft","targetTime","difference","CountdownUnit","value","label","size","showLabel","boxed","content","jsx","jsxs","Countdown","format","onFinish","onChange","className","showLabels","labels","componentSize","useConfig","effectiveSize","timeLeft","setTimeLeft","useState","finished","setFinished","defaultLabels","tick","useCallback","newTimeLeft","remaining","useEffect","timer","showDays","showHours","showMinutes","showSeconds","separatorSize","showSeparators","Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Countdown.js","sources":["../../src/components/Countdown.tsx"],"sourcesContent":["import React, { useEffect, useState, useCallback } from 'react'\nimport { useConfig } from '../providers/ConfigProvider'\n\n// DaisyUI classes\nconst dCountdown = 'countdown'\nconst dCssValue = '--value'\nconst dCssDigits = '--digits'\n\nexport interface CountdownProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Target timestamp in milliseconds or Date object */\n value: number | Date\n /** Format string: 'D' days, 'H' hours, 'M' minutes, 'S' seconds */\n format?: string\n /** Callback when countdown reaches zero */\n onFinish?: () => void\n /** Callback on each tick with remaining time */\n onChange?: (value: number) => void\n /** Size variant */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Show labels under each unit */\n showLabels?: boolean\n /** Custom labels */\n labels?: {\n days?: string\n hours?: string\n minutes?: string\n seconds?: string\n }\n /** Show box style around each unit */\n boxed?: boolean\n /** Test ID for testing */\n 'data-testid'?: string\n}\n\ninterface TimeLeft {\n days: number\n hours: number\n minutes: number\n seconds: number\n}\n\nconst calculateTimeLeft = (targetTime: number): TimeLeft => {\n const difference = targetTime - Date.now()\n\n if (difference <= 0) {\n return { days: 0, hours: 0, minutes: 0, seconds: 0 }\n }\n\n return {\n days: Math.floor(difference / (1000 * 60 * 60 * 24)),\n hours: Math.floor((difference / (1000 * 60 * 60)) % 24),\n minutes: Math.floor((difference / 1000 / 60) % 60),\n seconds: Math.floor((difference / 1000) % 60),\n }\n}\n\nconst CountdownUnit: React.FC<{\n value: number\n label?: string\n size?: CountdownProps['size']\n showLabel?: boolean\n boxed?: boolean\n}> = ({ value, label, size, showLabel, boxed }) => {\n const sizeClasses = {\n xs: 'text-lg',\n sm: 'text-2xl',\n md: 'text-4xl',\n lg: 'text-5xl',\n xl: 'text-6xl',\n }\n\n const content = (\n <span className={`${dCountdown} font-mono ${sizeClasses[size || 'md']}`}>\n <span\n style={{ [dCssValue]: value, [dCssDigits]: 2 } as React.CSSProperties}\n aria-live=\"polite\"\n aria-label={String(value)}\n >\n {String(value).padStart(2, '0')}\n </span>\n </span>\n )\n\n if (boxed) {\n return (\n <div className=\"flex flex-col items-center bg-neutral text-neutral-content rounded-box p-2\">\n {content}\n {showLabel && label && <span className=\"text-xs mt-1\">{label}</span>}\n </div>\n )\n }\n\n if (showLabel) {\n return (\n <div className=\"flex flex-col items-center\">\n {content}\n {label && <span className=\"text-xs text-base-content/70\">{label}</span>}\n </div>\n )\n }\n\n return content\n}\n\nexport const Countdown: React.FC<CountdownProps> = ({\n value,\n format = 'HH:MM:SS',\n onFinish,\n onChange,\n className = '',\n size,\n showLabels = false,\n labels = {},\n boxed = false,\n 'data-testid': testId,\n ...rest\n}) => {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n const targetTime = value instanceof Date ? value.getTime() : value\n const [timeLeft, setTimeLeft] = useState<TimeLeft>(() => calculateTimeLeft(targetTime))\n const [finished, setFinished] = useState(false)\n\n const defaultLabels = {\n days: labels.days || 'days',\n hours: labels.hours || 'hours',\n minutes: labels.minutes || 'min',\n seconds: labels.seconds || 'sec',\n }\n\n const tick = useCallback(() => {\n const newTimeLeft = calculateTimeLeft(targetTime)\n setTimeLeft(newTimeLeft)\n\n const remaining = targetTime - Date.now()\n onChange?.(Math.max(0, remaining))\n\n if (remaining <= 0 && !finished) {\n setFinished(true)\n onFinish?.()\n }\n }, [targetTime, onChange, onFinish, finished])\n\n useEffect(() => {\n const timer = setInterval(tick, 1000)\n tick() // Initial tick\n\n return () => clearInterval(timer)\n }, [tick])\n\n const showDays = format.includes('D')\n const showHours = format.includes('H')\n const showMinutes = format.includes('M')\n const showSeconds = format.includes('S')\n\n const separatorSize = effectiveSize === 'lg' || effectiveSize === 'xl' ? 'text-3xl' : effectiveSize === 'md' ? 'text-2xl' : 'text-xl'\n const showSeparators = !showLabels && !boxed\n\n return (\n <div className={`flex gap-4 items-center ${className}`} data-testid={testId} data-state={finished ? 'finished' : 'running'} {...rest}>\n {showDays && (\n <>\n <CountdownUnit\n value={timeLeft.days}\n label={defaultLabels.days}\n size={effectiveSize}\n showLabel={showLabels}\n boxed={boxed}\n />\n {showSeparators && (showHours || showMinutes || showSeconds) && (\n <span className={separatorSize}>:</span>\n )}\n </>\n )}\n {showHours && (\n <>\n <CountdownUnit\n value={timeLeft.hours}\n label={defaultLabels.hours}\n size={effectiveSize}\n showLabel={showLabels}\n boxed={boxed}\n />\n {showSeparators && (showMinutes || showSeconds) && (\n <span className={separatorSize}>:</span>\n )}\n </>\n )}\n {showMinutes && (\n <>\n <CountdownUnit\n value={timeLeft.minutes}\n label={defaultLabels.minutes}\n size={effectiveSize}\n showLabel={showLabels}\n boxed={boxed}\n />\n {showSeparators && showSeconds && <span className={separatorSize}>:</span>}\n </>\n )}\n {showSeconds && (\n <CountdownUnit\n value={timeLeft.seconds}\n label={defaultLabels.seconds}\n size={effectiveSize}\n showLabel={showLabels}\n boxed={boxed}\n />\n )}\n </div>\n )\n}\n\nCountdown.displayName = 'Countdown'\n"],"names":["dCountdown","dCssValue","dCssDigits","calculateTimeLeft","targetTime","difference","CountdownUnit","value","label","size","showLabel","boxed","content","jsx","jsxs","Countdown","format","onFinish","onChange","className","showLabels","labels","testId","rest","componentSize","useConfig","effectiveSize","timeLeft","setTimeLeft","useState","finished","setFinished","defaultLabels","tick","useCallback","newTimeLeft","remaining","useEffect","timer","showDays","showHours","showMinutes","showSeconds","separatorSize","showSeparators","Fragment"],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
export interface DiffProps {
|
|
2
|
+
export interface DiffProps extends React.HTMLAttributes<HTMLElement> {
|
|
3
3
|
/** Left side content (revealed when dragging) */
|
|
4
4
|
left: React.ReactNode;
|
|
5
5
|
/** Right side content (hidden when dragging) */
|
|
6
6
|
right: React.ReactNode;
|
|
7
7
|
/** Aspect ratio class (e.g., "aspect-16/9", "aspect-4/3", "aspect-square") */
|
|
8
8
|
aspect?: string;
|
|
9
|
-
/**
|
|
10
|
-
|
|
9
|
+
/** Test ID for testing */
|
|
10
|
+
'data-testid'?: string;
|
|
11
11
|
}
|
|
12
12
|
export declare const Diff: React.FC<DiffProps>;
|
package/dist/components/Diff.js
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
const
|
|
1
|
+
import { jsxs as r, jsx as i } from "react/jsx-runtime";
|
|
2
|
+
const c = "diff", m = "diff-item-1", n = "diff-item-2", o = "diff-resizer", x = ({
|
|
3
3
|
left: e,
|
|
4
|
-
right:
|
|
4
|
+
right: t,
|
|
5
5
|
aspect: s = "aspect-16/9",
|
|
6
|
-
className: d = ""
|
|
7
|
-
|
|
6
|
+
className: d = "",
|
|
7
|
+
"data-testid": f,
|
|
8
|
+
...a
|
|
9
|
+
}) => /* @__PURE__ */ r(
|
|
8
10
|
"figure",
|
|
9
11
|
{
|
|
10
|
-
className: `${
|
|
12
|
+
className: `${c} ${s} ${d}`.trim(),
|
|
11
13
|
tabIndex: 0,
|
|
14
|
+
"data-testid": f,
|
|
15
|
+
...a,
|
|
12
16
|
children: [
|
|
13
|
-
/* @__PURE__ */ i("div", { className:
|
|
14
|
-
/* @__PURE__ */ i("div", { className:
|
|
15
|
-
/* @__PURE__ */ i("div", { className:
|
|
17
|
+
/* @__PURE__ */ i("div", { className: m, role: "img", tabIndex: 0, children: e }),
|
|
18
|
+
/* @__PURE__ */ i("div", { className: n, role: "img", children: t }),
|
|
19
|
+
/* @__PURE__ */ i("div", { className: o })
|
|
16
20
|
]
|
|
17
21
|
}
|
|
18
22
|
);
|
|
19
23
|
export {
|
|
20
|
-
|
|
24
|
+
x as Diff
|
|
21
25
|
};
|
|
22
26
|
//# sourceMappingURL=Diff.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Diff.js","sources":["../../src/components/Diff.tsx"],"sourcesContent":["import React from 'react'\n\n// DaisyUI classes\nconst dDiff = 'diff'\nconst dDiffItem1 = 'diff-item-1'\nconst dDiffItem2 = 'diff-item-2'\nconst dDiffResizer = 'diff-resizer'\n\nexport interface DiffProps {\n /** Left side content (revealed when dragging) */\n left: React.ReactNode\n /** Right side content (hidden when dragging) */\n right: React.ReactNode\n /** Aspect ratio class (e.g., \"aspect-16/9\", \"aspect-4/3\", \"aspect-square\") */\n aspect?: string\n /**
|
|
1
|
+
{"version":3,"file":"Diff.js","sources":["../../src/components/Diff.tsx"],"sourcesContent":["import React from 'react'\n\n// DaisyUI classes\nconst dDiff = 'diff'\nconst dDiffItem1 = 'diff-item-1'\nconst dDiffItem2 = 'diff-item-2'\nconst dDiffResizer = 'diff-resizer'\n\nexport interface DiffProps extends React.HTMLAttributes<HTMLElement> {\n /** Left side content (revealed when dragging) */\n left: React.ReactNode\n /** Right side content (hidden when dragging) */\n right: React.ReactNode\n /** Aspect ratio class (e.g., \"aspect-16/9\", \"aspect-4/3\", \"aspect-square\") */\n aspect?: string\n /** Test ID for testing */\n 'data-testid'?: string\n}\n\nexport const Diff: React.FC<DiffProps> = ({\n left,\n right,\n aspect = 'aspect-16/9',\n className = '',\n 'data-testid': testId,\n ...rest\n}) => {\n return (\n <figure\n className={`${dDiff} ${aspect} ${className}`.trim()}\n tabIndex={0}\n data-testid={testId}\n {...rest}\n >\n <div className={dDiffItem1} role=\"img\" tabIndex={0}>\n {left}\n </div>\n <div className={dDiffItem2} role=\"img\">\n {right}\n </div>\n <div className={dDiffResizer} />\n </figure>\n )\n}\n"],"names":["dDiff","dDiffItem1","dDiffItem2","dDiffResizer","Diff","left","right","aspect","className","testId","rest","jsxs","jsx"],"mappings":";AAGA,MAAMA,IAAQ,QACRC,IAAa,eACbC,IAAa,eACbC,IAAe,gBAaRC,IAA4B,CAAC;AAAA,EACxC,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,WAAAC,IAAY;AAAA,EACZ,eAAeC;AAAA,EACf,GAAGC;AACL,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAW,GAAGX,CAAK,IAAIO,CAAM,IAAIC,CAAS,GAAG,KAAA;AAAA,IAC7C,UAAU;AAAA,IACV,eAAaC;AAAA,IACZ,GAAGC;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAE,EAAC,SAAI,WAAWX,GAAY,MAAK,OAAM,UAAU,GAC9C,UAAAI,EAAA,CACH;AAAA,wBACC,OAAA,EAAI,WAAWH,GAAY,MAAK,OAC9B,UAAAI,GACH;AAAA,MACA,gBAAAM,EAAC,OAAA,EAAI,WAAWT,EAAA,CAAc;AAAA,IAAA;AAAA,EAAA;AAAA;"}
|
|
@@ -4,5 +4,7 @@ export interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
4
4
|
orientation?: 'horizontal' | 'vertical';
|
|
5
5
|
position?: 'start' | 'center' | 'end';
|
|
6
6
|
type?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'success' | 'warning' | 'info' | 'error';
|
|
7
|
+
/** Test ID for testing */
|
|
8
|
+
'data-testid'?: string;
|
|
7
9
|
}
|
|
8
10
|
export declare function Divider({ children, orientation, position, type, className, ...rest }: DividerProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Divider.js","sources":["../../src/components/Divider.tsx"],"sourcesContent":["import React from 'react'\n\n// DaisyUI classes\nconst dDivider = 'divider'\nconst dDividerHorizontal = 'divider-horizontal'\nconst dDividerStart = 'divider-start'\nconst dDividerEnd = 'divider-end'\nconst dDividerNeutral = 'divider-neutral'\nconst dDividerPrimary = 'divider-primary'\nconst dDividerSecondary = 'divider-secondary'\nconst dDividerAccent = 'divider-accent'\nconst dDividerSuccess = 'divider-success'\nconst dDividerWarning = 'divider-warning'\nconst dDividerInfo = 'divider-info'\nconst dDividerError = 'divider-error'\n\nexport interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode\n orientation?: 'horizontal' | 'vertical'\n position?: 'start' | 'center' | 'end'\n type?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'success' | 'warning' | 'info' | 'error'\n}\n\nexport function Divider({\n children,\n orientation = 'horizontal',\n position = 'center',\n type,\n className = '',\n ...rest\n}: DividerProps) {\n const positionClasses: Record<string, string> = {\n start: dDividerStart,\n center: '',\n end: dDividerEnd,\n }\n\n const typeClasses: Record<string, string> = {\n neutral: dDividerNeutral,\n primary: dDividerPrimary,\n secondary: dDividerSecondary,\n accent: dDividerAccent,\n success: dDividerSuccess,\n warning: dDividerWarning,\n info: dDividerInfo,\n error: dDividerError,\n }\n\n const classes = [\n dDivider,\n orientation === 'vertical' && dDividerHorizontal,\n positionClasses[position],\n type && typeClasses[type],\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return <div className={classes} {...rest}>{children}</div>\n}\n"],"names":["dDivider","dDividerHorizontal","dDividerStart","dDividerEnd","dDividerNeutral","dDividerPrimary","dDividerSecondary","dDividerAccent","dDividerSuccess","dDividerWarning","dDividerInfo","dDividerError","Divider","children","orientation","position","type","className","rest","positionClasses","typeClasses","classes"],"mappings":";AAGA,MAAMA,IAAW,WACXC,IAAqB,sBACrBC,IAAgB,iBAChBC,IAAc,eACdC,IAAkB,mBAClBC,IAAkB,mBAClBC,IAAoB,qBACpBC,IAAiB,kBACjBC,IAAkB,mBAClBC,IAAkB,mBAClBC,IAAe,gBACfC,IAAgB;
|
|
1
|
+
{"version":3,"file":"Divider.js","sources":["../../src/components/Divider.tsx"],"sourcesContent":["import React from 'react'\n\n// DaisyUI classes\nconst dDivider = 'divider'\nconst dDividerHorizontal = 'divider-horizontal'\nconst dDividerStart = 'divider-start'\nconst dDividerEnd = 'divider-end'\nconst dDividerNeutral = 'divider-neutral'\nconst dDividerPrimary = 'divider-primary'\nconst dDividerSecondary = 'divider-secondary'\nconst dDividerAccent = 'divider-accent'\nconst dDividerSuccess = 'divider-success'\nconst dDividerWarning = 'divider-warning'\nconst dDividerInfo = 'divider-info'\nconst dDividerError = 'divider-error'\n\nexport interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode\n orientation?: 'horizontal' | 'vertical'\n position?: 'start' | 'center' | 'end'\n type?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'success' | 'warning' | 'info' | 'error'\n /** Test ID for testing */\n 'data-testid'?: string\n}\n\nexport function Divider({\n children,\n orientation = 'horizontal',\n position = 'center',\n type,\n className = '',\n ...rest\n}: DividerProps) {\n const positionClasses: Record<string, string> = {\n start: dDividerStart,\n center: '',\n end: dDividerEnd,\n }\n\n const typeClasses: Record<string, string> = {\n neutral: dDividerNeutral,\n primary: dDividerPrimary,\n secondary: dDividerSecondary,\n accent: dDividerAccent,\n success: dDividerSuccess,\n warning: dDividerWarning,\n info: dDividerInfo,\n error: dDividerError,\n }\n\n const classes = [\n dDivider,\n orientation === 'vertical' && dDividerHorizontal,\n positionClasses[position],\n type && typeClasses[type],\n className,\n ]\n .filter(Boolean)\n .join(' ')\n\n return <div className={classes} {...rest}>{children}</div>\n}\n"],"names":["dDivider","dDividerHorizontal","dDividerStart","dDividerEnd","dDividerNeutral","dDividerPrimary","dDividerSecondary","dDividerAccent","dDividerSuccess","dDividerWarning","dDividerInfo","dDividerError","Divider","children","orientation","position","type","className","rest","positionClasses","typeClasses","classes"],"mappings":";AAGA,MAAMA,IAAW,WACXC,IAAqB,sBACrBC,IAAgB,iBAChBC,IAAc,eACdC,IAAkB,mBAClBC,IAAkB,mBAClBC,IAAoB,qBACpBC,IAAiB,kBACjBC,IAAkB,mBAClBC,IAAkB,mBAClBC,IAAe,gBACfC,IAAgB;AAWf,SAASC,EAAQ;AAAA,EACtB,UAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,UAAAC,IAAW;AAAA,EACX,MAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,GAAiB;AACf,QAAMC,IAA0C;AAAA,IAC9C,OAAOjB;AAAA,IACP,QAAQ;AAAA,IACR,KAAKC;AAAA,EAAA,GAGDiB,IAAsC;AAAA,IAC1C,SAAShB;AAAA,IACT,SAASC;AAAA,IACT,WAAWC;AAAA,IACX,QAAQC;AAAA,IACR,SAASC;AAAA,IACT,SAASC;AAAA,IACT,MAAMC;AAAA,IACN,OAAOC;AAAA,EAAA,GAGHU,IAAU;AAAA,IACdrB;AAAA,IACAc,MAAgB,cAAcb;AAAA,IAC9BkB,EAAgBJ,CAAQ;AAAA,IACxBC,KAAQI,EAAYJ,CAAI;AAAA,IACxBC;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,2BAAQ,OAAA,EAAI,WAAWI,GAAU,GAAGH,GAAO,UAAAL,GAAS;AACtD;"}
|
|
@@ -4,6 +4,8 @@ export interface DockItemConfig {
|
|
|
4
4
|
icon: React.ReactNode;
|
|
5
5
|
/** Label text */
|
|
6
6
|
label?: string;
|
|
7
|
+
/** Accessible label for screen readers (required if no label provided) */
|
|
8
|
+
ariaLabel?: string;
|
|
7
9
|
/** Whether this item is active */
|
|
8
10
|
active?: boolean;
|
|
9
11
|
/** Whether this item is disabled */
|
|
@@ -24,6 +26,8 @@ export interface DockProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'o
|
|
|
24
26
|
children?: React.ReactNode;
|
|
25
27
|
/** Additional CSS classes */
|
|
26
28
|
className?: string;
|
|
29
|
+
/** Accessible label for the dock */
|
|
30
|
+
'aria-label'?: string;
|
|
27
31
|
}
|
|
28
32
|
export interface DockItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
29
33
|
/** Whether this item is active */
|
package/dist/components/Dock.js
CHANGED
|
@@ -1,44 +1,57 @@
|
|
|
1
|
-
import { jsx as
|
|
1
|
+
import { jsx as s, jsxs as p } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef as m } from "react";
|
|
3
3
|
import { useConfig as N } from "../providers/ConfigProvider.js";
|
|
4
|
-
const g = "dock",
|
|
5
|
-
({ active: c, children:
|
|
6
|
-
const d = [c && D,
|
|
7
|
-
return /* @__PURE__ */
|
|
4
|
+
const g = "dock", h = "dock-xs", j = "dock-sm", z = "dock-md", C = "dock-lg", x = "dock-xl", D = "dock-active", y = "dock-label", f = m(
|
|
5
|
+
({ active: c, children: l, className: a = "", ...t }, n) => {
|
|
6
|
+
const d = [c && D, a].filter(Boolean).join(" ");
|
|
7
|
+
return /* @__PURE__ */ s(
|
|
8
|
+
"button",
|
|
9
|
+
{
|
|
10
|
+
ref: n,
|
|
11
|
+
className: d || void 0,
|
|
12
|
+
type: "button",
|
|
13
|
+
"aria-pressed": c,
|
|
14
|
+
...t,
|
|
15
|
+
children: l
|
|
16
|
+
}
|
|
17
|
+
);
|
|
8
18
|
}
|
|
9
19
|
);
|
|
10
20
|
f.displayName = "Dock.Item";
|
|
11
|
-
const
|
|
12
|
-
({ items: c, size:
|
|
13
|
-
const { componentSize:
|
|
14
|
-
xs:
|
|
15
|
-
sm:
|
|
16
|
-
md:
|
|
17
|
-
lg:
|
|
18
|
-
xl:
|
|
19
|
-
}[
|
|
20
|
-
return c ? /* @__PURE__ */
|
|
21
|
-
const
|
|
22
|
-
return /* @__PURE__ */
|
|
21
|
+
const u = m(
|
|
22
|
+
({ items: c, size: l, activeIndex: a, onChange: t, children: n, className: d = "", ...e }, r) => {
|
|
23
|
+
const { componentSize: v } = N(), k = [g, {
|
|
24
|
+
xs: h,
|
|
25
|
+
sm: j,
|
|
26
|
+
md: z,
|
|
27
|
+
lg: C,
|
|
28
|
+
xl: x
|
|
29
|
+
}[l ?? v ?? "md"], d].filter(Boolean).join(" ");
|
|
30
|
+
return c ? /* @__PURE__ */ s("div", { ref: r, className: k, role: "toolbar", "aria-label": e["aria-label"] || "Dock", ...e, children: c.map((o, i) => {
|
|
31
|
+
const b = a !== void 0 ? a === i : o.active;
|
|
32
|
+
return /* @__PURE__ */ p(
|
|
23
33
|
"button",
|
|
24
34
|
{
|
|
25
|
-
|
|
35
|
+
type: "button",
|
|
36
|
+
className: b ? D : void 0,
|
|
26
37
|
disabled: o.disabled,
|
|
38
|
+
"aria-pressed": b,
|
|
39
|
+
"aria-label": o.ariaLabel || o.label,
|
|
27
40
|
onClick: () => {
|
|
28
|
-
o.onClick?.(),
|
|
41
|
+
o.onClick?.(), t?.(i);
|
|
29
42
|
},
|
|
30
43
|
children: [
|
|
31
|
-
o.icon,
|
|
32
|
-
o.label && /* @__PURE__ */
|
|
44
|
+
/* @__PURE__ */ s("span", { "aria-hidden": "true", children: o.icon }),
|
|
45
|
+
o.label && /* @__PURE__ */ s("span", { className: y, children: o.label })
|
|
33
46
|
]
|
|
34
47
|
},
|
|
35
|
-
|
|
48
|
+
i
|
|
36
49
|
);
|
|
37
|
-
}) }) : /* @__PURE__ */
|
|
50
|
+
}) }) : /* @__PURE__ */ s("div", { ref: r, className: k, role: "toolbar", "aria-label": e["aria-label"] || "Dock", ...e, children: n });
|
|
38
51
|
}
|
|
39
52
|
);
|
|
40
|
-
|
|
41
|
-
const R = Object.assign(
|
|
53
|
+
u.displayName = "Dock";
|
|
54
|
+
const R = Object.assign(u, {
|
|
42
55
|
Item: f
|
|
43
56
|
});
|
|
44
57
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dock.js","sources":["../../src/components/Dock.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\nimport { useConfig } from '../providers/ConfigProvider'\n\n// DaisyUI classes\nconst dDock = 'dock'\nconst dDockXs = 'dock-xs'\nconst dDockSm = 'dock-sm'\nconst dDockMd = 'dock-md'\nconst dDockLg = 'dock-lg'\nconst dDockXl = 'dock-xl'\nconst dDockActive = 'dock-active'\nconst dDockLabel = 'dock-label'\n\nexport interface DockItemConfig {\n /** Icon element */\n icon: React.ReactNode\n /** Label text */\n label?: string\n /** Whether this item is active */\n active?: boolean\n /** Whether this item is disabled */\n disabled?: boolean\n /** Click handler for this item */\n onClick?: () => void\n}\n\nexport interface DockProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Dock items configuration */\n items?: DockItemConfig[]\n /** Size variant */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Controlled active index */\n activeIndex?: number\n /** Callback when an item is clicked */\n onChange?: (index: number) => void\n /** Children (alternative to items prop) */\n children?: React.ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\nexport interface DockItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Whether this item is active */\n active?: boolean\n /** Children (icon and optional label) */\n children: React.ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\nconst DockItem = forwardRef<HTMLButtonElement, DockItemProps>(\n ({ active, children, className = '', ...props }, ref) => {\n const classes = [active && dDockActive, className].filter(Boolean).join(' ')\n\n return (\n <button
|
|
1
|
+
{"version":3,"file":"Dock.js","sources":["../../src/components/Dock.tsx"],"sourcesContent":["import React, { forwardRef } from 'react'\nimport { useConfig } from '../providers/ConfigProvider'\n\n// DaisyUI classes\nconst dDock = 'dock'\nconst dDockXs = 'dock-xs'\nconst dDockSm = 'dock-sm'\nconst dDockMd = 'dock-md'\nconst dDockLg = 'dock-lg'\nconst dDockXl = 'dock-xl'\nconst dDockActive = 'dock-active'\nconst dDockLabel = 'dock-label'\n\nexport interface DockItemConfig {\n /** Icon element */\n icon: React.ReactNode\n /** Label text */\n label?: string\n /** Accessible label for screen readers (required if no label provided) */\n ariaLabel?: string\n /** Whether this item is active */\n active?: boolean\n /** Whether this item is disabled */\n disabled?: boolean\n /** Click handler for this item */\n onClick?: () => void\n}\n\nexport interface DockProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Dock items configuration */\n items?: DockItemConfig[]\n /** Size variant */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Controlled active index */\n activeIndex?: number\n /** Callback when an item is clicked */\n onChange?: (index: number) => void\n /** Children (alternative to items prop) */\n children?: React.ReactNode\n /** Additional CSS classes */\n className?: string\n /** Accessible label for the dock */\n 'aria-label'?: string\n}\n\nexport interface DockItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Whether this item is active */\n active?: boolean\n /** Children (icon and optional label) */\n children: React.ReactNode\n /** Additional CSS classes */\n className?: string\n}\n\nconst DockItem = forwardRef<HTMLButtonElement, DockItemProps>(\n ({ active, children, className = '', ...props }, ref) => {\n const classes = [active && dDockActive, className].filter(Boolean).join(' ')\n\n return (\n <button\n ref={ref}\n className={classes || undefined}\n type=\"button\"\n aria-pressed={active}\n {...props}\n >\n {children}\n </button>\n )\n }\n)\n\nDockItem.displayName = 'Dock.Item'\n\nconst DockRoot = forwardRef<HTMLDivElement, DockProps>(\n ({ items, size, activeIndex, onChange, children, className = '', ...props }, ref) => {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n\n const sizeClasses = {\n xs: dDockXs,\n sm: dDockSm,\n md: dDockMd,\n lg: dDockLg,\n xl: dDockXl,\n }\n\n const classes = [dDock, sizeClasses[effectiveSize], className].filter(Boolean).join(' ')\n\n // If items array is provided, render from config\n if (items) {\n return (\n <div ref={ref} className={classes} role=\"toolbar\" aria-label={props['aria-label'] || 'Dock'} {...props}>\n {items.map((item, index) => {\n const isActive = activeIndex !== undefined ? activeIndex === index : item.active\n\n return (\n <button\n key={index}\n type=\"button\"\n className={isActive ? dDockActive : undefined}\n disabled={item.disabled}\n aria-pressed={isActive}\n aria-label={item.ariaLabel || item.label}\n onClick={() => {\n item.onClick?.()\n onChange?.(index)\n }}\n >\n <span aria-hidden=\"true\">{item.icon}</span>\n {item.label && <span className={dDockLabel}>{item.label}</span>}\n </button>\n )\n })}\n </div>\n )\n }\n\n // Otherwise render children\n return (\n <div ref={ref} className={classes} role=\"toolbar\" aria-label={props['aria-label'] || 'Dock'} {...props}>\n {children}\n </div>\n )\n }\n)\n\nDockRoot.displayName = 'Dock'\n\nexport const Dock = Object.assign(DockRoot, {\n Item: DockItem,\n})\n"],"names":["dDock","dDockXs","dDockSm","dDockMd","dDockLg","dDockXl","dDockActive","dDockLabel","DockItem","forwardRef","active","children","className","props","ref","classes","jsx","DockRoot","items","size","activeIndex","onChange","componentSize","useConfig","item","index","isActive","jsxs","Dock"],"mappings":";;;AAIA,MAAMA,IAAQ,QACRC,IAAU,WACVC,IAAU,WACVC,IAAU,WACVC,IAAU,WACVC,IAAU,WACVC,IAAc,eACdC,IAAa,cA2CbC,IAAWC;AAAA,EACf,CAAC,EAAE,QAAAC,GAAQ,UAAAC,GAAU,WAAAC,IAAY,IAAI,GAAGC,EAAA,GAASC,MAAQ;AACvD,UAAMC,IAAU,CAACL,KAAUJ,GAAaM,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE3E,WACE,gBAAAI;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAF;AAAA,QACA,WAAWC,KAAW;AAAA,QACtB,MAAK;AAAA,QACL,gBAAcL;AAAA,QACb,GAAGG;AAAA,QAEH,UAAAF;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;AAEAH,EAAS,cAAc;AAEvB,MAAMS,IAAWR;AAAA,EACf,CAAC,EAAE,OAAAS,GAAO,MAAAC,GAAM,aAAAC,GAAa,UAAAC,GAAU,UAAAV,GAAU,WAAAC,IAAY,IAAI,GAAGC,EAAA,GAASC,MAAQ;AACnF,UAAM,EAAE,eAAAQ,EAAA,IAAkBC,EAAA,GAWpBR,IAAU,CAACf,GARG;AAAA,MAClB,IAAIC;AAAA,MACJ,IAAIC;AAAA,MACJ,IAAIC;AAAA,MACJ,IAAIC;AAAA,MACJ,IAAIC;AAAA,IAAA,EAPgBc,KAAQG,KAAiB,IAUE,GAAGV,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAGvF,WAAIM,sBAEC,OAAA,EAAI,KAAAJ,GAAU,WAAWC,GAAS,MAAK,WAAU,cAAYF,EAAM,YAAY,KAAK,QAAS,GAAGA,GAC9F,YAAM,IAAI,CAACW,GAAMC,MAAU;AAC1B,YAAMC,IAAWN,MAAgB,SAAYA,MAAgBK,IAAQD,EAAK;AAE1E,aACE,gBAAAG;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,MAAK;AAAA,UACL,WAAWD,IAAWpB,IAAc;AAAA,UACpC,UAAUkB,EAAK;AAAA,UACf,gBAAcE;AAAA,UACd,cAAYF,EAAK,aAAaA,EAAK;AAAA,UACnC,SAAS,MAAM;AACb,YAAAA,EAAK,UAAA,GACLH,IAAWI,CAAK;AAAA,UAClB;AAAA,UAEA,UAAA;AAAA,YAAA,gBAAAT,EAAC,QAAA,EAAK,eAAY,QAAQ,UAAAQ,EAAK,MAAK;AAAA,YACnCA,EAAK,SAAS,gBAAAR,EAAC,UAAK,WAAWT,GAAa,YAAK,MAAA,CAAM;AAAA,UAAA;AAAA,QAAA;AAAA,QAZnDkB;AAAA,MAAA;AAAA,IAeX,CAAC,EAAA,CACH,IAMF,gBAAAT,EAAC,OAAA,EAAI,KAAAF,GAAU,WAAWC,GAAS,MAAK,WAAU,cAAYF,EAAM,YAAY,KAAK,QAAS,GAAGA,GAC9F,UAAAF,GACH;AAAA,EAEJ;AACF;AAEAM,EAAS,cAAc;AAEhB,MAAMW,IAAO,OAAO,OAAOX,GAAU;AAAA,EAC1C,MAAMT;AACR,CAAC;"}
|