asterui 0.12.61 → 0.12.63
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/Anchor.d.ts +2 -0
- package/dist/components/Anchor.js +79 -75
- package/dist/components/Anchor.js.map +1 -1
- package/dist/components/Autocomplete.d.ts +1 -0
- package/dist/components/Autocomplete.js +115 -110
- package/dist/components/Autocomplete.js.map +1 -1
- package/dist/components/Avatar.d.ts +4 -0
- package/dist/components/Avatar.js.map +1 -1
- package/dist/components/Breadcrumb.d.ts +4 -2
- package/dist/components/Breadcrumb.js +54 -29
- 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/Button.d.ts +5 -1
- package/dist/components/Button.js +117 -107
- package/dist/components/Button.js.map +1 -1
- package/dist/components/Chart.d.ts +1 -0
- package/dist/components/Chart.js +31 -30
- package/dist/components/Chart.js.map +1 -1
- package/dist/components/Chat.d.ts +1 -0
- package/dist/components/Chat.js +39 -28
- 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/Command.d.ts +5 -2
- package/dist/components/Command.js +262 -233
- package/dist/components/Command.js.map +1 -1
- package/dist/components/Container.d.ts +2 -0
- package/dist/components/Container.js.map +1 -1
- package/dist/components/ContextMenu.d.ts +4 -0
- package/dist/components/ContextMenu.js +157 -122
- 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 +6 -0
- package/dist/components/Dock.js +75 -38
- 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/FileInput.d.ts +1 -0
- package/dist/components/FileInput.js +26 -26
- package/dist/components/FileInput.js.map +1 -1
- package/dist/components/Filter.d.ts +1 -0
- package/dist/components/Filter.js +43 -40
- package/dist/components/Filter.js.map +1 -1
- package/dist/components/Flex.d.ts +1 -0
- package/dist/components/Flex.js +43 -42
- package/dist/components/Flex.js.map +1 -1
- package/dist/components/FloatButton.d.ts +9 -0
- package/dist/components/FloatButton.js +211 -136
- 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/Input.d.ts +1 -0
- package/dist/components/Input.js +201 -184
- package/dist/components/Input.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 +3 -0
- package/dist/components/Loading.js +58 -35
- 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/Masonry.d.ts +1 -0
- package/dist/components/Masonry.js +45 -42
- package/dist/components/Masonry.js.map +1 -1
- package/dist/components/Mention.d.ts +1 -0
- package/dist/components/Mention.js +95 -91
- package/dist/components/Mention.js.map +1 -1
- package/dist/components/MonthCalendar.d.ts +1 -0
- package/dist/components/MonthCalendar.js +104 -97
- package/dist/components/MonthCalendar.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/QRCode.d.ts +1 -0
- package/dist/components/QRCode.js +84 -55
- package/dist/components/QRCode.js.map +1 -1
- package/dist/components/RadialProgress.d.ts +1 -0
- package/dist/components/RadialProgress.js +19 -17
- package/dist/components/RadialProgress.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/Range.d.ts +1 -0
- package/dist/components/Range.js +45 -43
- package/dist/components/Range.js.map +1 -1
- package/dist/components/Rating.d.ts +4 -2
- package/dist/components/Rating.js +83 -79
- package/dist/components/Rating.js.map +1 -1
- package/dist/components/Responsive.d.ts +4 -2
- package/dist/components/Responsive.js +10 -9
- package/dist/components/Responsive.js.map +1 -1
- package/dist/components/Result.d.ts +1 -0
- package/dist/components/Result.js +24 -22
- package/dist/components/Result.js.map +1 -1
- package/dist/components/Select.d.ts +1 -0
- package/dist/components/Select.js +72 -62
- package/dist/components/Select.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/Splitter.d.ts +2 -0
- package/dist/components/Splitter.js +137 -131
- package/dist/components/Splitter.js.map +1 -1
- package/dist/components/Stat.d.ts +4 -2
- package/dist/components/Stat.js +19 -18
- package/dist/components/Stat.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/Steps.d.ts +4 -2
- package/dist/components/Steps.js +56 -52
- package/dist/components/Steps.js.map +1 -1
- package/dist/components/TextRotate.d.ts +1 -0
- package/dist/components/TextRotate.js +14 -12
- package/dist/components/TextRotate.js.map +1 -1
- package/dist/components/Textarea.d.ts +1 -0
- package/dist/components/Textarea.js +31 -30
- package/dist/components/Textarea.js.map +1 -1
- package/dist/components/ThemeController.d.ts +6 -3
- package/dist/components/ThemeController.js +101 -92
- package/dist/components/ThemeController.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/Typography.d.ts +10 -5
- package/dist/components/Typography.js +84 -81
- package/dist/components/Typography.js.map +1 -1
- package/dist/components/VirtualList.d.ts +2 -1
- package/dist/components/VirtualList.js +40 -36
- package/dist/components/VirtualList.js.map +1 -1
- package/dist/components/Watermark.d.ts +1 -0
- package/dist/components/Watermark.js +74 -71
- package/dist/components/Watermark.js.map +1 -1
- package/dist/components/WeekCalendar.d.ts +1 -0
- package/dist/components/WeekCalendar.js +91 -76
- package/dist/components/WeekCalendar.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,127 +1,131 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import
|
|
3
|
-
import { useConfig as
|
|
4
|
-
const
|
|
5
|
-
function
|
|
1
|
+
import { jsxs as y, Fragment as L, jsx as s } from "react/jsx-runtime";
|
|
2
|
+
import X, { useState as z, useId as _, createContext as O, useContext as P } from "react";
|
|
3
|
+
import { useConfig as q } from "../providers/ConfigProvider.js";
|
|
4
|
+
const D = "rating", J = "rating-xs", K = "rating-sm", Q = "rating-md", U = "rating-lg", W = "rating-xl", Y = "rating-half", Z = "rating-hidden", w = "mask", tt = "mask-star", at = "mask-star-2", nt = "mask-heart", st = "mask-half-1", et = "mask-half-2", G = O(null);
|
|
5
|
+
function rt({
|
|
6
6
|
children: t,
|
|
7
|
-
value:
|
|
8
|
-
defaultValue:
|
|
9
|
-
onChange:
|
|
10
|
-
onHoverChange:
|
|
11
|
-
count:
|
|
12
|
-
size:
|
|
13
|
-
gap:
|
|
14
|
-
color:
|
|
7
|
+
value: c,
|
|
8
|
+
defaultValue: v = 0,
|
|
9
|
+
onChange: C,
|
|
10
|
+
onHoverChange: f,
|
|
11
|
+
count: h = 5,
|
|
12
|
+
size: x,
|
|
13
|
+
gap: r = "md",
|
|
14
|
+
color: d = "bg-warning",
|
|
15
15
|
mask: u = "star-2",
|
|
16
|
-
allowClear:
|
|
17
|
-
allowHalf:
|
|
18
|
-
disabled:
|
|
19
|
-
className:
|
|
20
|
-
|
|
16
|
+
allowClear: g = !0,
|
|
17
|
+
allowHalf: e = !1,
|
|
18
|
+
disabled: m = !1,
|
|
19
|
+
className: M = "",
|
|
20
|
+
"data-testid": o,
|
|
21
|
+
...V
|
|
21
22
|
}) {
|
|
22
|
-
const { componentSize:
|
|
23
|
-
if (
|
|
24
|
-
const n =
|
|
25
|
-
|
|
26
|
-
}, j = (
|
|
27
|
-
|
|
28
|
-
}, H = {
|
|
29
|
-
xs:
|
|
30
|
-
sm:
|
|
31
|
-
md:
|
|
32
|
-
lg:
|
|
33
|
-
xl:
|
|
34
|
-
},
|
|
23
|
+
const { componentSize: k } = q(), i = x ?? k ?? "md", [S, $] = z(v), [R, p] = z(0), b = c !== void 0 ? c : S, N = _(), T = (a) => {
|
|
24
|
+
if (m) return;
|
|
25
|
+
const n = g && a === b ? 0 : a;
|
|
26
|
+
c === void 0 && $(n), p(0), C?.(n);
|
|
27
|
+
}, j = (a) => {
|
|
28
|
+
m || (p(a), f?.(a));
|
|
29
|
+
}, A = (a) => o ? `${o}-${a}` : void 0, H = {
|
|
30
|
+
xs: J,
|
|
31
|
+
sm: K,
|
|
32
|
+
md: Q,
|
|
33
|
+
lg: U,
|
|
34
|
+
xl: W
|
|
35
|
+
}, B = {
|
|
35
36
|
none: "gap-0",
|
|
36
37
|
xs: "gap-0.5",
|
|
37
38
|
sm: "gap-1",
|
|
38
39
|
md: "gap-2",
|
|
39
40
|
lg: "gap-3"
|
|
40
|
-
},
|
|
41
|
-
|
|
41
|
+
}, E = [
|
|
42
|
+
D,
|
|
42
43
|
// Half-star mode requires a size class to render correctly, default to md
|
|
43
|
-
(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
].filter(Boolean).join(" "),
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
(e || i) && H[i],
|
|
45
|
+
e ? Y : r && B[r],
|
|
46
|
+
M
|
|
47
|
+
].filter(Boolean).join(" "), I = e ? "star-2" : u, F = t || /* @__PURE__ */ y(L, { children: [
|
|
48
|
+
g && /* @__PURE__ */ s(l, { value: 0, hidden: !0 }),
|
|
49
|
+
e ? (
|
|
49
50
|
// Half-star mode: each star is two inputs
|
|
50
|
-
Array.from({ length:
|
|
51
|
-
/* @__PURE__ */
|
|
52
|
-
/* @__PURE__ */
|
|
51
|
+
Array.from({ length: h }, (a, n) => /* @__PURE__ */ y(X.Fragment, { children: [
|
|
52
|
+
/* @__PURE__ */ s(l, { value: n + 0.5, mask: I, color: d, half: "first" }),
|
|
53
|
+
/* @__PURE__ */ s(l, { value: n + 1, mask: I, color: d, half: "second" })
|
|
53
54
|
] }, n + 1))
|
|
54
55
|
) : (
|
|
55
56
|
// Standard mode: one input per star
|
|
56
|
-
Array.from({ length:
|
|
57
|
+
Array.from({ length: h }, (a, n) => /* @__PURE__ */ s(l, { value: n + 1, mask: I, color: d }, n + 1))
|
|
57
58
|
)
|
|
58
59
|
] });
|
|
59
|
-
return /* @__PURE__ */
|
|
60
|
+
return /* @__PURE__ */ s(G.Provider, { value: { name: N, currentValue: b, hoverValue: R, onChange: T, onHover: j, size: i, disabled: m, halfGap: e ? r : void 0, getTestId: A }, children: /* @__PURE__ */ s(
|
|
60
61
|
"div",
|
|
61
62
|
{
|
|
62
63
|
role: "radiogroup",
|
|
63
64
|
"aria-label": "Rating",
|
|
64
|
-
className:
|
|
65
|
-
"data-value":
|
|
65
|
+
className: E,
|
|
66
|
+
"data-value": b,
|
|
67
|
+
"data-testid": o,
|
|
66
68
|
onMouseLeave: () => j(0),
|
|
67
|
-
...
|
|
68
|
-
children:
|
|
69
|
+
...V,
|
|
70
|
+
children: F
|
|
69
71
|
}
|
|
70
72
|
) });
|
|
71
73
|
}
|
|
72
|
-
function
|
|
73
|
-
const
|
|
74
|
-
if (!
|
|
74
|
+
function l({ value: t, mask: c = "star-2", color: v = "bg-warning", hidden: C = !1, half: f, className: h = "", "data-testid": x }) {
|
|
75
|
+
const r = P(G);
|
|
76
|
+
if (!r)
|
|
75
77
|
throw new Error("Rating.Item must be used within Rating");
|
|
76
|
-
const { name:
|
|
77
|
-
star:
|
|
78
|
-
"star-2":
|
|
79
|
-
heart:
|
|
80
|
-
},
|
|
81
|
-
first:
|
|
82
|
-
second: `${
|
|
78
|
+
const { name: d, currentValue: u, hoverValue: g, onChange: e, onHover: m, disabled: M, halfGap: o, getTestId: V } = r, k = x ?? V?.(`item-${t}`), i = {
|
|
79
|
+
star: tt,
|
|
80
|
+
"star-2": at,
|
|
81
|
+
heart: nt
|
|
82
|
+
}, $ = {
|
|
83
|
+
first: st,
|
|
84
|
+
second: `${et} ${o ? {
|
|
83
85
|
none: "",
|
|
84
86
|
xs: "mr-0.5",
|
|
85
87
|
sm: "mr-1",
|
|
86
88
|
md: "mr-2",
|
|
87
89
|
lg: "mr-3"
|
|
88
|
-
}[
|
|
89
|
-
}, R =
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
90
|
+
}[o] : ""}`.trim()
|
|
91
|
+
}, R = C ? Z : [
|
|
92
|
+
w,
|
|
93
|
+
i[c],
|
|
94
|
+
f && $[f],
|
|
95
|
+
v,
|
|
96
|
+
h
|
|
95
97
|
].filter(Boolean).join(" ");
|
|
96
|
-
if (
|
|
97
|
-
return /* @__PURE__ */
|
|
98
|
+
if (M)
|
|
99
|
+
return /* @__PURE__ */ s(
|
|
98
100
|
"div",
|
|
99
101
|
{
|
|
100
102
|
className: R,
|
|
101
|
-
"aria-current":
|
|
102
|
-
"aria-label": `Rating ${t}
|
|
103
|
+
"aria-current": u === t ? "true" : void 0,
|
|
104
|
+
"aria-label": `Rating ${t}`,
|
|
105
|
+
"data-testid": k
|
|
103
106
|
}
|
|
104
107
|
);
|
|
105
|
-
const
|
|
106
|
-
return /* @__PURE__ */
|
|
108
|
+
const p = g > 0 ? g : u;
|
|
109
|
+
return /* @__PURE__ */ s(
|
|
107
110
|
"input",
|
|
108
111
|
{
|
|
109
112
|
type: "radio",
|
|
110
|
-
name:
|
|
113
|
+
name: d,
|
|
111
114
|
className: R,
|
|
112
|
-
checked:
|
|
115
|
+
checked: p === t,
|
|
113
116
|
onChange: () => {
|
|
114
117
|
},
|
|
115
|
-
onClick: () =>
|
|
116
|
-
onMouseEnter: () =>
|
|
117
|
-
"aria-label": `Rating ${t}
|
|
118
|
+
onClick: () => e(t),
|
|
119
|
+
onMouseEnter: () => m(t),
|
|
120
|
+
"aria-label": `Rating ${t}`,
|
|
121
|
+
"data-testid": k
|
|
118
122
|
}
|
|
119
123
|
);
|
|
120
124
|
}
|
|
121
|
-
const
|
|
122
|
-
Item:
|
|
125
|
+
const dt = Object.assign(rt, {
|
|
126
|
+
Item: l
|
|
123
127
|
});
|
|
124
128
|
export {
|
|
125
|
-
|
|
129
|
+
dt as Rating
|
|
126
130
|
};
|
|
127
131
|
//# sourceMappingURL=Rating.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rating.js","sources":["../../src/components/Rating.tsx"],"sourcesContent":["import React, { createContext, useContext, useId, useState } from 'react'\nimport { useConfig } from '../providers/ConfigProvider'\n\n// DaisyUI classes\nconst dRating = 'rating'\nconst dRatingXs = 'rating-xs'\nconst dRatingSm = 'rating-sm'\nconst dRatingMd = 'rating-md'\nconst dRatingLg = 'rating-lg'\nconst dRatingXl = 'rating-xl'\nconst dRatingHalf = 'rating-half'\nconst dRatingHidden = 'rating-hidden'\nconst dMask = 'mask'\nconst dMaskStar = 'mask-star'\nconst dMaskStar2 = 'mask-star-2'\nconst dMaskHeart = 'mask-heart'\nconst dMaskHalf1 = 'mask-half-1'\nconst dMaskHalf2 = 'mask-half-2'\n\nexport interface RatingProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n children?: React.ReactNode\n value?: number\n defaultValue?: number\n onChange?: (value: number) => void\n onHoverChange?: (value: number) => void\n count?: number\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n gap?: 'none' | 'xs' | 'sm' | 'md' | 'lg'\n color?: string\n mask?: 'star' | 'star-2' | 'heart'\n allowClear?: boolean\n allowHalf?: boolean\n disabled?: boolean\n}\n\nexport interface RatingItemProps {\n value: number\n mask?: 'star' | 'star-2' | 'heart'\n color?: string\n hidden?: boolean\n half?: 'first' | 'second'\n className?: string\n}\n\ninterface RatingContextValue {\n name: string\n currentValue: number\n hoverValue: number\n onChange: (value: number) => void\n onHover: (value: number) => void\n size?: string\n disabled?: boolean\n halfGap?: 'none' | 'xs' | 'sm' | 'md' | 'lg'\n}\n\nconst RatingContext = createContext<RatingContextValue | null>(null)\n\nfunction RatingRoot({\n children,\n value,\n defaultValue = 0,\n onChange,\n onHoverChange,\n count = 5,\n size,\n gap = 'md',\n color = 'bg-warning',\n mask = 'star-2',\n allowClear = true,\n allowHalf = false,\n disabled = false,\n className = '',\n ...rest\n}: RatingProps) {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n const [internalValue, setInternalValue] = useState(defaultValue)\n const [hoverValue, setHoverValue] = useState(0)\n const currentValue = value !== undefined ? value : internalValue\n const name = useId()\n\n const handleChange = (newValue: number) => {\n if (disabled) return\n // Allow clearing if clicking the same value and allowClear is true\n const finalValue = allowClear && newValue === currentValue ? 0 : newValue\n if (value === undefined) {\n setInternalValue(finalValue)\n }\n // Clear hover state so the clicked value shows immediately\n setHoverValue(0)\n onChange?.(finalValue)\n }\n\n const handleHover = (hoverVal: number) => {\n if (disabled) return\n setHoverValue(hoverVal)\n onHoverChange?.(hoverVal)\n }\n\n const sizeClasses = {\n xs: dRatingXs,\n sm: dRatingSm,\n md: dRatingMd,\n lg: dRatingLg,\n xl: dRatingXl,\n }\n\n const gapClasses = {\n none: 'gap-0',\n xs: 'gap-0.5',\n sm: 'gap-1',\n md: 'gap-2',\n lg: 'gap-3',\n }\n\n const classes = [\n dRating,\n // Half-star mode requires a size class to render correctly, default to md\n allowHalf ? sizeClasses[effectiveSize] : (effectiveSize && sizeClasses[effectiveSize]),\n allowHalf ? dRatingHalf : (gap && gapClasses[gap]),\n className,\n ].filter(Boolean).join(' ')\n\n // Auto-generate items if no children provided\n // Note: half-star mode requires mask-star-2 per DaisyUI\n const effectiveMask = allowHalf ? 'star-2' : mask\n const items = children || (\n <>\n {allowClear && <RatingItem value={0} hidden />}\n {allowHalf ? (\n // Half-star mode: each star is two inputs\n Array.from({ length: count }, (_, i) => (\n <React.Fragment key={i + 1}>\n <RatingItem value={i + 0.5} mask={effectiveMask} color={color} half=\"first\" />\n <RatingItem value={i + 1} mask={effectiveMask} color={color} half=\"second\" />\n </React.Fragment>\n ))\n ) : (\n // Standard mode: one input per star\n Array.from({ length: count }, (_, i) => (\n <RatingItem key={i + 1} value={i + 1} mask={effectiveMask} color={color} />\n ))\n )}\n </>\n )\n\n return (\n <RatingContext.Provider value={{ name, currentValue, hoverValue, onChange: handleChange, onHover: handleHover, size: effectiveSize, disabled, halfGap: allowHalf ? gap : undefined }}>\n <div\n role=\"radiogroup\"\n aria-label=\"Rating\"\n className={classes}\n data-value={currentValue}\n onMouseLeave={() => handleHover(0)}\n {...rest}\n >\n {items}\n </div>\n </RatingContext.Provider>\n )\n}\n\nfunction RatingItem({ value, mask = 'star-2', color = 'bg-warning', hidden = false, half, className = '' }: RatingItemProps) {\n const context = useContext(RatingContext)\n if (!context) {\n throw new Error('Rating.Item must be used within Rating')\n }\n\n const { name, currentValue, hoverValue, onChange, onHover, disabled, halfGap } = context\n\n const maskClasses = {\n star: dMaskStar,\n 'star-2': dMaskStar2,\n heart: dMaskHeart,\n }\n\n const halfGapClasses = {\n none: '',\n xs: 'mr-0.5',\n sm: 'mr-1',\n md: 'mr-2',\n lg: 'mr-3',\n }\n\n const halfClasses = {\n first: dMaskHalf1,\n second: `${dMaskHalf2} ${halfGap ? halfGapClasses[halfGap] : ''}`.trim(),\n }\n\n // Hidden items only get rating-hidden class (no mask)\n // Visible items get mask classes - DaisyUI CSS handles filled/unfilled state\n const classes = hidden\n ? dRatingHidden\n : [\n dMask,\n maskClasses[mask],\n half && halfClasses[half],\n color,\n className,\n ].filter(Boolean).join(' ')\n\n if (disabled) {\n return (\n <div\n className={classes}\n aria-current={currentValue === value ? 'true' : undefined}\n aria-label={`Rating ${value}`}\n />\n )\n }\n\n // Use hoverValue for checked state when hovering (for visual preview)\n // DaisyUI CSS fills all stars up to the checked one\n const displayValue = hoverValue > 0 ? hoverValue : currentValue\n\n return (\n <input\n type=\"radio\"\n name={name}\n className={classes}\n checked={displayValue === value}\n onChange={() => {}} // Controlled by onClick\n onClick={() => onChange(value)}\n onMouseEnter={() => onHover(value)}\n aria-label={`Rating ${value}`}\n />\n )\n}\n\nexport const Rating = Object.assign(RatingRoot, {\n Item: RatingItem,\n})\n"],"names":["dRating","dRatingXs","dRatingSm","dRatingMd","dRatingLg","dRatingXl","dRatingHalf","dRatingHidden","dMask","dMaskStar","dMaskStar2","dMaskHeart","dMaskHalf1","dMaskHalf2","RatingContext","createContext","RatingRoot","children","value","defaultValue","onChange","onHoverChange","count","size","gap","color","mask","allowClear","allowHalf","disabled","className","rest","componentSize","useConfig","effectiveSize","internalValue","setInternalValue","useState","hoverValue","setHoverValue","currentValue","name","useId","handleChange","newValue","finalValue","handleHover","hoverVal","sizeClasses","gapClasses","classes","effectiveMask","items","jsxs","Fragment","jsx","RatingItem","_","i","React","hidden","half","context","useContext","onHover","halfGap","maskClasses","halfClasses","displayValue","Rating"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Rating.js","sources":["../../src/components/Rating.tsx"],"sourcesContent":["import React, { createContext, useContext, useId, useState } from 'react'\nimport { useConfig } from '../providers/ConfigProvider'\n\n// DaisyUI classes\nconst dRating = 'rating'\nconst dRatingXs = 'rating-xs'\nconst dRatingSm = 'rating-sm'\nconst dRatingMd = 'rating-md'\nconst dRatingLg = 'rating-lg'\nconst dRatingXl = 'rating-xl'\nconst dRatingHalf = 'rating-half'\nconst dRatingHidden = 'rating-hidden'\nconst dMask = 'mask'\nconst dMaskStar = 'mask-star'\nconst dMaskStar2 = 'mask-star-2'\nconst dMaskHeart = 'mask-heart'\nconst dMaskHalf1 = 'mask-half-1'\nconst dMaskHalf2 = 'mask-half-2'\n\nexport interface RatingProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n children?: React.ReactNode\n value?: number\n defaultValue?: number\n onChange?: (value: number) => void\n onHoverChange?: (value: number) => void\n count?: number\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n gap?: 'none' | 'xs' | 'sm' | 'md' | 'lg'\n color?: string\n mask?: 'star' | 'star-2' | 'heart'\n allowClear?: boolean\n allowHalf?: boolean\n disabled?: boolean\n 'data-testid'?: string\n}\n\nexport interface RatingItemProps {\n value: number\n mask?: 'star' | 'star-2' | 'heart'\n color?: string\n hidden?: boolean\n half?: 'first' | 'second'\n className?: string\n 'data-testid'?: string\n}\n\ninterface RatingContextValue {\n name: string\n currentValue: number\n hoverValue: number\n onChange: (value: number) => void\n onHover: (value: number) => void\n size?: string\n disabled?: boolean\n halfGap?: 'none' | 'xs' | 'sm' | 'md' | 'lg'\n getTestId?: (suffix: string) => string | undefined\n}\n\nconst RatingContext = createContext<RatingContextValue | null>(null)\n\nfunction RatingRoot({\n children,\n value,\n defaultValue = 0,\n onChange,\n onHoverChange,\n count = 5,\n size,\n gap = 'md',\n color = 'bg-warning',\n mask = 'star-2',\n allowClear = true,\n allowHalf = false,\n disabled = false,\n className = '',\n 'data-testid': testId,\n ...rest\n}: RatingProps) {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n const [internalValue, setInternalValue] = useState(defaultValue)\n const [hoverValue, setHoverValue] = useState(0)\n const currentValue = value !== undefined ? value : internalValue\n const name = useId()\n\n const handleChange = (newValue: number) => {\n if (disabled) return\n // Allow clearing if clicking the same value and allowClear is true\n const finalValue = allowClear && newValue === currentValue ? 0 : newValue\n if (value === undefined) {\n setInternalValue(finalValue)\n }\n // Clear hover state so the clicked value shows immediately\n setHoverValue(0)\n onChange?.(finalValue)\n }\n\n const handleHover = (hoverVal: number) => {\n if (disabled) return\n setHoverValue(hoverVal)\n onHoverChange?.(hoverVal)\n }\n\n const getTestId = (suffix: string) => (testId ? `${testId}-${suffix}` : undefined)\n\n const sizeClasses = {\n xs: dRatingXs,\n sm: dRatingSm,\n md: dRatingMd,\n lg: dRatingLg,\n xl: dRatingXl,\n }\n\n const gapClasses = {\n none: 'gap-0',\n xs: 'gap-0.5',\n sm: 'gap-1',\n md: 'gap-2',\n lg: 'gap-3',\n }\n\n const classes = [\n dRating,\n // Half-star mode requires a size class to render correctly, default to md\n allowHalf ? sizeClasses[effectiveSize] : (effectiveSize && sizeClasses[effectiveSize]),\n allowHalf ? dRatingHalf : (gap && gapClasses[gap]),\n className,\n ].filter(Boolean).join(' ')\n\n // Auto-generate items if no children provided\n // Note: half-star mode requires mask-star-2 per DaisyUI\n const effectiveMask = allowHalf ? 'star-2' : mask\n const items = children || (\n <>\n {allowClear && <RatingItem value={0} hidden />}\n {allowHalf ? (\n // Half-star mode: each star is two inputs\n Array.from({ length: count }, (_, i) => (\n <React.Fragment key={i + 1}>\n <RatingItem value={i + 0.5} mask={effectiveMask} color={color} half=\"first\" />\n <RatingItem value={i + 1} mask={effectiveMask} color={color} half=\"second\" />\n </React.Fragment>\n ))\n ) : (\n // Standard mode: one input per star\n Array.from({ length: count }, (_, i) => (\n <RatingItem key={i + 1} value={i + 1} mask={effectiveMask} color={color} />\n ))\n )}\n </>\n )\n\n return (\n <RatingContext.Provider value={{ name, currentValue, hoverValue, onChange: handleChange, onHover: handleHover, size: effectiveSize, disabled, halfGap: allowHalf ? gap : undefined, getTestId }}>\n <div\n role=\"radiogroup\"\n aria-label=\"Rating\"\n className={classes}\n data-value={currentValue}\n data-testid={testId}\n onMouseLeave={() => handleHover(0)}\n {...rest}\n >\n {items}\n </div>\n </RatingContext.Provider>\n )\n}\n\nfunction RatingItem({ value, mask = 'star-2', color = 'bg-warning', hidden = false, half, className = '', 'data-testid': testId }: RatingItemProps) {\n const context = useContext(RatingContext)\n if (!context) {\n throw new Error('Rating.Item must be used within Rating')\n }\n\n const { name, currentValue, hoverValue, onChange, onHover, disabled, halfGap, getTestId } = context\n const itemTestId = testId ?? getTestId?.(`item-${value}`)\n\n const maskClasses = {\n star: dMaskStar,\n 'star-2': dMaskStar2,\n heart: dMaskHeart,\n }\n\n const halfGapClasses = {\n none: '',\n xs: 'mr-0.5',\n sm: 'mr-1',\n md: 'mr-2',\n lg: 'mr-3',\n }\n\n const halfClasses = {\n first: dMaskHalf1,\n second: `${dMaskHalf2} ${halfGap ? halfGapClasses[halfGap] : ''}`.trim(),\n }\n\n // Hidden items only get rating-hidden class (no mask)\n // Visible items get mask classes - DaisyUI CSS handles filled/unfilled state\n const classes = hidden\n ? dRatingHidden\n : [\n dMask,\n maskClasses[mask],\n half && halfClasses[half],\n color,\n className,\n ].filter(Boolean).join(' ')\n\n if (disabled) {\n return (\n <div\n className={classes}\n aria-current={currentValue === value ? 'true' : undefined}\n aria-label={`Rating ${value}`}\n data-testid={itemTestId}\n />\n )\n }\n\n // Use hoverValue for checked state when hovering (for visual preview)\n // DaisyUI CSS fills all stars up to the checked one\n const displayValue = hoverValue > 0 ? hoverValue : currentValue\n\n return (\n <input\n type=\"radio\"\n name={name}\n className={classes}\n checked={displayValue === value}\n onChange={() => {}} // Controlled by onClick\n onClick={() => onChange(value)}\n onMouseEnter={() => onHover(value)}\n aria-label={`Rating ${value}`}\n data-testid={itemTestId}\n />\n )\n}\n\nexport const Rating = Object.assign(RatingRoot, {\n Item: RatingItem,\n})\n"],"names":["dRating","dRatingXs","dRatingSm","dRatingMd","dRatingLg","dRatingXl","dRatingHalf","dRatingHidden","dMask","dMaskStar","dMaskStar2","dMaskHeart","dMaskHalf1","dMaskHalf2","RatingContext","createContext","RatingRoot","children","value","defaultValue","onChange","onHoverChange","count","size","gap","color","mask","allowClear","allowHalf","disabled","className","testId","rest","componentSize","useConfig","effectiveSize","internalValue","setInternalValue","useState","hoverValue","setHoverValue","currentValue","name","useId","handleChange","newValue","finalValue","handleHover","hoverVal","getTestId","suffix","sizeClasses","gapClasses","classes","effectiveMask","items","jsxs","Fragment","jsx","RatingItem","_","i","React","hidden","half","context","useContext","onHover","halfGap","itemTestId","maskClasses","halfClasses","displayValue","Rating"],"mappings":";;;AAIA,MAAMA,IAAU,UACVC,IAAY,aACZC,IAAY,aACZC,IAAY,aACZC,IAAY,aACZC,IAAY,aACZC,IAAc,eACdC,IAAgB,iBAChBC,IAAQ,QACRC,KAAY,aACZC,KAAa,eACbC,KAAa,cACbC,KAAa,eACbC,KAAa,eAyCbC,IAAgBC,EAAyC,IAAI;AAEnE,SAASC,GAAW;AAAA,EAClB,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,MAAAC;AAAA,EACA,KAAAC,IAAM;AAAA,EACN,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,YAAAC,IAAa;AAAA,EACb,WAAAC,IAAY;AAAA,EACZ,UAAAC,IAAW;AAAA,EACX,WAAAC,IAAY;AAAA,EACZ,eAAeC;AAAA,EACf,GAAGC;AACL,GAAgB;AACd,QAAM,EAAE,eAAAC,EAAA,IAAkBC,EAAA,GACpBC,IAAgBZ,KAAQU,KAAiB,MACzC,CAACG,GAAeC,CAAgB,IAAIC,EAASnB,CAAY,GACzD,CAACoB,GAAYC,CAAa,IAAIF,EAAS,CAAC,GACxCG,IAAevB,MAAU,SAAYA,IAAQkB,GAC7CM,IAAOC,EAAA,GAEPC,IAAe,CAACC,MAAqB;AACzC,QAAIhB,EAAU;AAEd,UAAMiB,IAAanB,KAAckB,MAAaJ,IAAe,IAAII;AACjE,IAAI3B,MAAU,UACZmB,EAAiBS,CAAU,GAG7BN,EAAc,CAAC,GACfpB,IAAW0B,CAAU;AAAA,EACvB,GAEMC,IAAc,CAACC,MAAqB;AACxC,IAAInB,MACJW,EAAcQ,CAAQ,GACtB3B,IAAgB2B,CAAQ;AAAA,EAC1B,GAEMC,IAAY,CAACC,MAAoBnB,IAAS,GAAGA,CAAM,IAAImB,CAAM,KAAK,QAElEC,IAAc;AAAA,IAClB,IAAIlD;AAAA,IACJ,IAAIC;AAAA,IACJ,IAAIC;AAAA,IACJ,IAAIC;AAAA,IACJ,IAAIC;AAAA,EAAA,GAGA+C,IAAa;AAAA,IACjB,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EAAA,GAGAC,IAAU;AAAA,IACdrD;AAAA;AAAA,KAEA4B,KAA0CO,MAAiBgB,EAAYhB,CAAa;AAAA,IACpFP,IAAYtB,IAAekB,KAAO4B,EAAW5B,CAAG;AAAA,IAChDM;AAAA,EAAA,EACA,OAAO,OAAO,EAAE,KAAK,GAAG,GAIpBwB,IAAgB1B,IAAY,WAAWF,GACvC6B,IAAQtC,KACZ,gBAAAuC,EAAAC,GAAA,EACG,UAAA;AAAA,IAAA9B,KAAc,gBAAA+B,EAACC,GAAA,EAAW,OAAO,GAAG,QAAM,IAAC;AAAA,IAC3C/B;AAAA;AAAA,MAEC,MAAM,KAAK,EAAE,QAAQN,EAAA,GAAS,CAACsC,GAAGC,MAChC,gBAAAL,EAACM,EAAM,UAAN,EACC,UAAA;AAAA,QAAA,gBAAAJ,EAACC,GAAA,EAAW,OAAOE,IAAI,KAAK,MAAMP,GAAe,OAAA7B,GAAc,MAAK,QAAA,CAAQ;AAAA,QAC5E,gBAAAiC,EAACC,KAAW,OAAOE,IAAI,GAAG,MAAMP,GAAe,OAAA7B,GAAc,MAAK,SAAA,CAAS;AAAA,MAAA,EAAA,GAFxDoC,IAAI,CAGzB,CACD;AAAA;AAAA;AAAA,MAGD,MAAM,KAAK,EAAE,QAAQvC,EAAA,GAAS,CAACsC,GAAGC,wBAC/BF,GAAA,EAAuB,OAAOE,IAAI,GAAG,MAAMP,GAAe,OAAA7B,EAAA,GAA1CoC,IAAI,CAAoD,CAC1E;AAAA;AAAA,EAAA,GAEL;AAGF,SACE,gBAAAH,EAAC5C,EAAc,UAAd,EAAuB,OAAO,EAAE,MAAA4B,GAAM,cAAAD,GAAc,YAAAF,GAAY,UAAUK,GAAc,SAASG,GAAa,MAAMZ,GAAe,UAAAN,GAAU,SAASD,IAAYJ,IAAM,QAAW,WAAAyB,KAClL,UAAA,gBAAAS;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,WAAWL;AAAA,MACX,cAAYZ;AAAA,MACZ,eAAaV;AAAA,MACb,cAAc,MAAMgB,EAAY,CAAC;AAAA,MAChC,GAAGf;AAAA,MAEH,UAAAuB;AAAA,IAAA;AAAA,EAAA,GAEL;AAEJ;AAEA,SAASI,EAAW,EAAE,OAAAzC,GAAO,MAAAQ,IAAO,UAAU,OAAAD,IAAQ,cAAc,QAAAsC,IAAS,IAAO,MAAAC,GAAM,WAAAlC,IAAY,IAAI,eAAeC,KAA2B;AAClJ,QAAMkC,IAAUC,EAAWpD,CAAa;AACxC,MAAI,CAACmD;AACH,UAAM,IAAI,MAAM,wCAAwC;AAG1D,QAAM,EAAE,MAAAvB,GAAM,cAAAD,GAAc,YAAAF,GAAY,UAAAnB,GAAU,SAAA+C,GAAS,UAAAtC,GAAU,SAAAuC,GAAS,WAAAnB,EAAA,IAAcgB,GACtFI,IAAatC,KAAUkB,IAAY,QAAQ/B,CAAK,EAAE,GAElDoD,IAAc;AAAA,IAClB,MAAM7D;AAAA,IACN,UAAUC;AAAA,IACV,OAAOC;AAAA,EAAA,GAWH4D,IAAc;AAAA,IAClB,OAAO3D;AAAA,IACP,QAAQ,GAAGC,EAAU,IAAIuD,IAVJ;AAAA,MACrB,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA,EAK8CA,CAAO,IAAI,EAAE,GAAG,KAAA;AAAA,EAAK,GAKnEf,IAAUU,IACZxD,IACA;AAAA,IACEC;AAAA,IACA8D,EAAY5C,CAAI;AAAA,IAChBsC,KAAQO,EAAYP,CAAI;AAAA,IACxBvC;AAAA,IACAK;AAAA,EAAA,EACA,OAAO,OAAO,EAAE,KAAK,GAAG;AAE9B,MAAID;AACF,WACE,gBAAA6B;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWL;AAAA,QACX,gBAAcZ,MAAiBvB,IAAQ,SAAS;AAAA,QAChD,cAAY,UAAUA,CAAK;AAAA,QAC3B,eAAamD;AAAA,MAAA;AAAA,IAAA;AAOnB,QAAMG,IAAejC,IAAa,IAAIA,IAAaE;AAEnD,SACE,gBAAAiB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,MAAAhB;AAAA,MACA,WAAWW;AAAA,MACX,SAASmB,MAAiBtD;AAAA,MAC1B,UAAU,MAAM;AAAA,MAAC;AAAA,MACjB,SAAS,MAAME,EAASF,CAAK;AAAA,MAC7B,cAAc,MAAMiD,EAAQjD,CAAK;AAAA,MACjC,cAAY,UAAUA,CAAK;AAAA,MAC3B,eAAamD;AAAA,IAAA;AAAA,EAAA;AAGnB;AAEO,MAAMI,KAAS,OAAO,OAAOzD,IAAY;AAAA,EAC9C,MAAM2C;AACR,CAAC;"}
|
|
@@ -6,13 +6,15 @@ export interface ShowProps {
|
|
|
6
6
|
below?: Breakpoint;
|
|
7
7
|
at?: Breakpoint | Breakpoint[];
|
|
8
8
|
between?: [Breakpoint, Breakpoint];
|
|
9
|
+
'data-testid'?: string;
|
|
9
10
|
}
|
|
10
|
-
export declare function Show({ children, above, below, at, between }: ShowProps): React.ReactElement | null;
|
|
11
|
+
export declare function Show({ children, above, below, at, between, 'data-testid': testId }: ShowProps): React.ReactElement | null;
|
|
11
12
|
export interface HideProps {
|
|
12
13
|
children: ReactNode;
|
|
13
14
|
above?: Breakpoint;
|
|
14
15
|
below?: Breakpoint;
|
|
15
16
|
at?: Breakpoint | Breakpoint[];
|
|
16
17
|
between?: [Breakpoint, Breakpoint];
|
|
18
|
+
'data-testid'?: string;
|
|
17
19
|
}
|
|
18
|
-
export declare function Hide({ children, above, below, at, between }: HideProps): React.ReactElement | null;
|
|
20
|
+
export declare function Hide({ children, above, below, at, between, 'data-testid': testId }: HideProps): React.ReactElement | null;
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { jsx as v, Fragment as A } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import d from "react";
|
|
3
|
+
import { useBreakpoint as p } from "../hooks/useBreakpoint.js";
|
|
4
|
+
function c({ children: s, above: r, below: t, at: e, between: o, "data-testid": l }) {
|
|
5
|
+
const { isAbove: n, isBelow: u, isAt: f, isBetween: m } = p();
|
|
5
6
|
let i = !1;
|
|
6
|
-
return
|
|
7
|
+
return r !== void 0 ? i = n(r) : t !== void 0 ? i = u(t) : e !== void 0 ? Array.isArray(e) ? i = e.some((a) => f(a)) : i = f(e) : o !== void 0 ? i = m(o[0], o[1]) : i = !0, i ? l && d.isValidElement(s) ? d.cloneElement(s, { "data-testid": l }) : /* @__PURE__ */ v(A, { children: s }) : null;
|
|
7
8
|
}
|
|
8
|
-
function
|
|
9
|
-
const { isAbove:
|
|
9
|
+
function x({ children: s, above: r, below: t, at: e, between: o, "data-testid": l }) {
|
|
10
|
+
const { isAbove: n, isBelow: u, isAt: f, isBetween: m } = p();
|
|
10
11
|
let i = !1;
|
|
11
|
-
return
|
|
12
|
+
return r !== void 0 ? i = n(r) : t !== void 0 ? i = u(t) : e !== void 0 ? Array.isArray(e) ? i = e.some((a) => f(a)) : i = f(e) : o !== void 0 && (i = m(o[0], o[1])), i ? null : l && d.isValidElement(s) ? d.cloneElement(s, { "data-testid": l }) : /* @__PURE__ */ v(A, { children: s });
|
|
12
13
|
}
|
|
13
14
|
export {
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
x as Hide,
|
|
16
|
+
c as Show
|
|
16
17
|
};
|
|
17
18
|
//# sourceMappingURL=Responsive.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Responsive.js","sources":["../../src/components/Responsive.tsx"],"sourcesContent":["import React, { ReactNode } from 'react'\nimport { useBreakpoint, Breakpoint } from '../hooks/useBreakpoint'\n\nexport interface ShowProps {\n children: ReactNode\n above?: Breakpoint\n below?: Breakpoint\n at?: Breakpoint | Breakpoint[]\n between?: [Breakpoint, Breakpoint]\n}\n\nexport function Show({ children, above, below, at, between }: ShowProps): React.ReactElement | null {\n const { isAbove, isBelow, isAt, isBetween } = useBreakpoint()\n\n let shouldShow = false\n\n if (above !== undefined) {\n shouldShow = isAbove(above)\n } else if (below !== undefined) {\n shouldShow = isBelow(below)\n } else if (at !== undefined) {\n if (Array.isArray(at)) {\n shouldShow = at.some((bp) => isAt(bp))\n } else {\n shouldShow = isAt(at)\n }\n } else if (between !== undefined) {\n shouldShow = isBetween(between[0], between[1])\n } else {\n shouldShow = true\n }\n\n
|
|
1
|
+
{"version":3,"file":"Responsive.js","sources":["../../src/components/Responsive.tsx"],"sourcesContent":["import React, { ReactNode } from 'react'\nimport { useBreakpoint, Breakpoint } from '../hooks/useBreakpoint'\n\nexport interface ShowProps {\n children: ReactNode\n above?: Breakpoint\n below?: Breakpoint\n at?: Breakpoint | Breakpoint[]\n between?: [Breakpoint, Breakpoint]\n 'data-testid'?: string\n}\n\nexport function Show({ children, above, below, at, between, 'data-testid': testId }: ShowProps): React.ReactElement | null {\n const { isAbove, isBelow, isAt, isBetween } = useBreakpoint()\n\n let shouldShow = false\n\n if (above !== undefined) {\n shouldShow = isAbove(above)\n } else if (below !== undefined) {\n shouldShow = isBelow(below)\n } else if (at !== undefined) {\n if (Array.isArray(at)) {\n shouldShow = at.some((bp) => isAt(bp))\n } else {\n shouldShow = isAt(at)\n }\n } else if (between !== undefined) {\n shouldShow = isBetween(between[0], between[1])\n } else {\n shouldShow = true\n }\n\n if (!shouldShow) return null\n if (testId && React.isValidElement(children)) {\n return React.cloneElement(children, { 'data-testid': testId } as Record<string, unknown>)\n }\n return <>{children}</>\n}\n\nexport interface HideProps {\n children: ReactNode\n above?: Breakpoint\n below?: Breakpoint\n at?: Breakpoint | Breakpoint[]\n between?: [Breakpoint, Breakpoint]\n 'data-testid'?: string\n}\n\nexport function Hide({ children, above, below, at, between, 'data-testid': testId }: HideProps): React.ReactElement | null {\n const { isAbove, isBelow, isAt, isBetween } = useBreakpoint()\n\n let shouldHide = false\n\n if (above !== undefined) {\n shouldHide = isAbove(above)\n } else if (below !== undefined) {\n shouldHide = isBelow(below)\n } else if (at !== undefined) {\n if (Array.isArray(at)) {\n shouldHide = at.some((bp) => isAt(bp))\n } else {\n shouldHide = isAt(at)\n }\n } else if (between !== undefined) {\n shouldHide = isBetween(between[0], between[1])\n }\n\n if (shouldHide) return null\n if (testId && React.isValidElement(children)) {\n return React.cloneElement(children, { 'data-testid': testId } as Record<string, unknown>)\n }\n return <>{children}</>\n}\n"],"names":["Show","children","above","below","at","between","testId","isAbove","isBelow","isAt","isBetween","useBreakpoint","shouldShow","bp","React","Hide","shouldHide"],"mappings":";;;AAYO,SAASA,EAAK,EAAE,UAAAC,GAAU,OAAAC,GAAO,OAAAC,GAAO,IAAAC,GAAI,SAAAC,GAAS,eAAeC,KAAgD;AACzH,QAAM,EAAE,SAAAC,GAAS,SAAAC,GAAS,MAAAC,GAAM,WAAAC,EAAA,IAAcC,EAAA;AAE9C,MAAIC,IAAa;AAkBjB,SAhBIV,MAAU,SACZU,IAAaL,EAAQL,CAAK,IACjBC,MAAU,SACnBS,IAAaJ,EAAQL,CAAK,IACjBC,MAAO,SACZ,MAAM,QAAQA,CAAE,IAClBQ,IAAaR,EAAG,KAAK,CAACS,MAAOJ,EAAKI,CAAE,CAAC,IAErCD,IAAaH,EAAKL,CAAE,IAEbC,MAAY,SACrBO,IAAaF,EAAUL,EAAQ,CAAC,GAAGA,EAAQ,CAAC,CAAC,IAE7CO,IAAa,IAGVA,IACDN,KAAUQ,EAAM,eAAeb,CAAQ,IAClCa,EAAM,aAAab,GAAU,EAAE,eAAeK,GAAmC,2BAEhF,UAAAL,GAAS,IAJK;AAK1B;AAWO,SAASc,EAAK,EAAE,UAAAd,GAAU,OAAAC,GAAO,OAAAC,GAAO,IAAAC,GAAI,SAAAC,GAAS,eAAeC,KAAgD;AACzH,QAAM,EAAE,SAAAC,GAAS,SAAAC,GAAS,MAAAC,GAAM,WAAAC,EAAA,IAAcC,EAAA;AAE9C,MAAIK,IAAa;AAgBjB,SAdId,MAAU,SACZc,IAAaT,EAAQL,CAAK,IACjBC,MAAU,SACnBa,IAAaR,EAAQL,CAAK,IACjBC,MAAO,SACZ,MAAM,QAAQA,CAAE,IAClBY,IAAaZ,EAAG,KAAK,CAACS,MAAOJ,EAAKI,CAAE,CAAC,IAErCG,IAAaP,EAAKL,CAAE,IAEbC,MAAY,WACrBW,IAAaN,EAAUL,EAAQ,CAAC,GAAGA,EAAQ,CAAC,CAAC,IAG3CW,IAAmB,OACnBV,KAAUQ,EAAM,eAAeb,CAAQ,IAClCa,EAAM,aAAab,GAAU,EAAE,eAAeK,GAAmC,2BAEhF,UAAAL,GAAS;AACrB;"}
|
|
@@ -7,6 +7,7 @@ export interface ResultProps extends Omit<React.HTMLAttributes<HTMLDivElement>,
|
|
|
7
7
|
icon?: React.ReactNode;
|
|
8
8
|
extra?: React.ReactNode;
|
|
9
9
|
children?: React.ReactNode;
|
|
10
|
+
'data-testid'?: string;
|
|
10
11
|
}
|
|
11
12
|
export declare const Result: React.FC<ResultProps>;
|
|
12
13
|
export default Result;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
const
|
|
1
|
+
import { jsxs as h, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
const u = {
|
|
3
3
|
success: /* @__PURE__ */ e(
|
|
4
4
|
"svg",
|
|
5
5
|
{
|
|
@@ -75,36 +75,38 @@ const m = {
|
|
|
75
75
|
404: /* @__PURE__ */ e("div", { className: "text-6xl font-bold text-base-content/40", children: "404" }),
|
|
76
76
|
403: /* @__PURE__ */ e("div", { className: "text-6xl font-bold text-base-content/40", children: "403" }),
|
|
77
77
|
500: /* @__PURE__ */ e("div", { className: "text-6xl font-bold text-base-content/40", children: "500" })
|
|
78
|
-
},
|
|
79
|
-
status:
|
|
80
|
-
title:
|
|
81
|
-
subTitle:
|
|
82
|
-
icon:
|
|
78
|
+
}, v = ({
|
|
79
|
+
status: n = "info",
|
|
80
|
+
title: o,
|
|
81
|
+
subTitle: a,
|
|
82
|
+
icon: i,
|
|
83
83
|
extra: r,
|
|
84
84
|
children: l,
|
|
85
|
-
className:
|
|
86
|
-
|
|
85
|
+
className: c = "",
|
|
86
|
+
"data-testid": s,
|
|
87
|
+
...m
|
|
87
88
|
}) => {
|
|
88
|
-
const
|
|
89
|
-
return /* @__PURE__ */
|
|
89
|
+
const d = i !== void 0 ? i : u[n], t = (x) => s ? `${s}-${x}` : void 0;
|
|
90
|
+
return /* @__PURE__ */ h(
|
|
90
91
|
"div",
|
|
91
92
|
{
|
|
92
|
-
className: `w-full flex flex-col items-center justify-center text-center p-8 ${
|
|
93
|
-
"data-status":
|
|
94
|
-
|
|
93
|
+
className: `w-full flex flex-col items-center justify-center text-center p-8 ${c}`,
|
|
94
|
+
"data-status": n,
|
|
95
|
+
"data-testid": s,
|
|
96
|
+
...m,
|
|
95
97
|
children: [
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
l && /* @__PURE__ */ e("div", { className: "mb-6 max-w-2xl", children: l }),
|
|
100
|
-
r && /* @__PURE__ */ e("div", { className: "flex gap-2", children: r })
|
|
98
|
+
d && /* @__PURE__ */ e("div", { className: "mb-6", "data-testid": t("icon"), children: d }),
|
|
99
|
+
o && /* @__PURE__ */ e("div", { className: "text-2xl font-semibold mb-2 text-base-content", "data-testid": t("title"), children: o }),
|
|
100
|
+
a && /* @__PURE__ */ e("div", { className: "text-base text-base-content/70 mb-6 max-w-md", "data-testid": t("subtitle"), children: a }),
|
|
101
|
+
l && /* @__PURE__ */ e("div", { className: "mb-6 max-w-2xl", "data-testid": t("content"), children: l }),
|
|
102
|
+
r && /* @__PURE__ */ e("div", { className: "flex gap-2", "data-testid": t("extra"), children: r })
|
|
101
103
|
]
|
|
102
104
|
}
|
|
103
105
|
);
|
|
104
106
|
};
|
|
105
|
-
|
|
107
|
+
v.displayName = "Result";
|
|
106
108
|
export {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
+
v as Result,
|
|
110
|
+
v as default
|
|
109
111
|
};
|
|
110
112
|
//# sourceMappingURL=Result.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Result.js","sources":["../../src/components/Result.tsx"],"sourcesContent":["import React from 'react'\n\nexport type ResultStatus = 'success' | 'error' | 'info' | 'warning' | '404' | '403' | '500'\n\nexport interface ResultProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n status?: ResultStatus\n title?: React.ReactNode\n subTitle?: React.ReactNode\n icon?: React.ReactNode\n extra?: React.ReactNode\n children?: React.ReactNode\n}\n\nconst defaultIcons: Record<ResultStatus, React.ReactNode> = {\n success: (\n <svg\n className=\"w-16 h-16 text-success\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n ),\n error: (\n <svg\n className=\"w-16 h-16 text-error\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n ),\n info: (\n <svg\n className=\"w-16 h-16 text-info\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n ),\n warning: (\n <svg\n className=\"w-16 h-16 text-warning\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n ),\n '404': (\n <div className=\"text-6xl font-bold text-base-content/40\">404</div>\n ),\n '403': (\n <div className=\"text-6xl font-bold text-base-content/40\">403</div>\n ),\n '500': (\n <div className=\"text-6xl font-bold text-base-content/40\">500</div>\n ),\n}\n\nexport const Result: React.FC<ResultProps> = ({\n status = 'info',\n title,\n subTitle,\n icon,\n extra,\n children,\n className = '',\n ...rest\n}) => {\n const displayIcon = icon !== undefined ? icon : defaultIcons[status]\n\n return (\n <div\n className={`w-full flex flex-col items-center justify-center text-center p-8 ${className}`}\n data-status={status}\n {...rest}\n >\n {displayIcon && <div className=\"mb-6\">{displayIcon}</div>}\n\n {title && (\n <div className=\"text-2xl font-semibold mb-2 text-base-content\">\n {title}\n </div>\n )}\n\n {subTitle && (\n <div className=\"text-base text-base-content/70 mb-6 max-w-md\">\n {subTitle}\n </div>\n )}\n\n {children && <div className=\"mb-6 max-w-2xl\">{children}</div>}\n\n {extra && <div className=\"flex gap-2\">{extra}</div>}\n </div>\n )\n}\n\nResult.displayName = 'Result'\n\nexport default Result\n"],"names":["defaultIcons","jsx","Result","status","title","subTitle","icon","extra","children","className","rest","displayIcon","jsxs"],"mappings":";
|
|
1
|
+
{"version":3,"file":"Result.js","sources":["../../src/components/Result.tsx"],"sourcesContent":["import React from 'react'\n\nexport type ResultStatus = 'success' | 'error' | 'info' | 'warning' | '404' | '403' | '500'\n\nexport interface ResultProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n status?: ResultStatus\n title?: React.ReactNode\n subTitle?: React.ReactNode\n icon?: React.ReactNode\n extra?: React.ReactNode\n children?: React.ReactNode\n 'data-testid'?: string\n}\n\nconst defaultIcons: Record<ResultStatus, React.ReactNode> = {\n success: (\n <svg\n className=\"w-16 h-16 text-success\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n ),\n error: (\n <svg\n className=\"w-16 h-16 text-error\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n ),\n info: (\n <svg\n className=\"w-16 h-16 text-info\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n ),\n warning: (\n <svg\n className=\"w-16 h-16 text-warning\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\"\n />\n </svg>\n ),\n '404': (\n <div className=\"text-6xl font-bold text-base-content/40\">404</div>\n ),\n '403': (\n <div className=\"text-6xl font-bold text-base-content/40\">403</div>\n ),\n '500': (\n <div className=\"text-6xl font-bold text-base-content/40\">500</div>\n ),\n}\n\nexport const Result: React.FC<ResultProps> = ({\n status = 'info',\n title,\n subTitle,\n icon,\n extra,\n children,\n className = '',\n 'data-testid': testId,\n ...rest\n}) => {\n const displayIcon = icon !== undefined ? icon : defaultIcons[status]\n const getTestId = (suffix: string) => (testId ? `${testId}-${suffix}` : undefined)\n\n return (\n <div\n className={`w-full flex flex-col items-center justify-center text-center p-8 ${className}`}\n data-status={status}\n data-testid={testId}\n {...rest}\n >\n {displayIcon && <div className=\"mb-6\" data-testid={getTestId('icon')}>{displayIcon}</div>}\n\n {title && (\n <div className=\"text-2xl font-semibold mb-2 text-base-content\" data-testid={getTestId('title')}>\n {title}\n </div>\n )}\n\n {subTitle && (\n <div className=\"text-base text-base-content/70 mb-6 max-w-md\" data-testid={getTestId('subtitle')}>\n {subTitle}\n </div>\n )}\n\n {children && <div className=\"mb-6 max-w-2xl\" data-testid={getTestId('content')}>{children}</div>}\n\n {extra && <div className=\"flex gap-2\" data-testid={getTestId('extra')}>{extra}</div>}\n </div>\n )\n}\n\nResult.displayName = 'Result'\n\nexport default Result\n"],"names":["defaultIcons","jsx","Result","status","title","subTitle","icon","extra","children","className","testId","rest","displayIcon","getTestId","suffix","jsxs"],"mappings":"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"}
|
|
@@ -14,5 +14,6 @@ export interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectE
|
|
|
14
14
|
addonAfter?: React.ReactNode;
|
|
15
15
|
className?: string;
|
|
16
16
|
children?: React.ReactNode;
|
|
17
|
+
'data-testid'?: string;
|
|
17
18
|
}
|
|
18
19
|
export declare const Select: React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLSelectElement>>;
|
|
@@ -1,78 +1,88 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
import { useConfig as
|
|
4
|
-
const
|
|
1
|
+
import { jsx as c, jsxs as w } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as W, useRef as X } from "react";
|
|
3
|
+
import { useConfig as F } from "../providers/ConfigProvider.js";
|
|
4
|
+
const i = "select", f = "select-bordered", G = "select-ghost", M = "select-xs", P = "select-sm", k = "select-md", q = "select-lg", A = "select-xl", D = "select-neutral", H = "select-primary", J = "select-secondary", K = "select-accent", L = "select-info", O = "select-success", y = "select-warning", N = "select-error", Q = "floating-label", U = W(
|
|
5
5
|
({
|
|
6
|
-
size:
|
|
7
|
-
color:
|
|
8
|
-
status:
|
|
9
|
-
ghost:
|
|
10
|
-
bordered:
|
|
11
|
-
floatingLabel:
|
|
12
|
-
addonBefore:
|
|
13
|
-
addonAfter:
|
|
14
|
-
className:
|
|
15
|
-
children:
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
6
|
+
size: j,
|
|
7
|
+
color: m,
|
|
8
|
+
status: S,
|
|
9
|
+
ghost: v = !1,
|
|
10
|
+
bordered: R = !0,
|
|
11
|
+
floatingLabel: l,
|
|
12
|
+
addonBefore: n,
|
|
13
|
+
addonAfter: o,
|
|
14
|
+
className: u = "",
|
|
15
|
+
children: g,
|
|
16
|
+
"data-testid": e,
|
|
17
|
+
...p
|
|
18
|
+
}, $) => {
|
|
19
|
+
const { componentSize: z } = F(), s = j ?? z ?? "md", B = X(null), x = $ || B, a = {
|
|
20
|
+
xs: M,
|
|
21
|
+
sm: P,
|
|
22
|
+
md: k,
|
|
23
|
+
lg: q,
|
|
24
|
+
xl: A
|
|
25
|
+
}, C = S ? {
|
|
26
|
+
error: N,
|
|
27
|
+
warning: y
|
|
28
|
+
}[S] : m ? {
|
|
29
|
+
neutral: D,
|
|
30
|
+
primary: H,
|
|
31
|
+
secondary: J,
|
|
32
|
+
accent: K,
|
|
33
|
+
info: L,
|
|
34
|
+
success: O,
|
|
35
|
+
warning: y,
|
|
36
|
+
error: N
|
|
37
|
+
}[m] : "", r = n || o, E = r || !!l, d = (t) => e ? `${e}-${t}` : void 0, b = e ? E ? d("select") : e : void 0, T = r ? ["grow", "bg-transparent", "border-0", "outline-none", "focus:outline-none", u].filter(Boolean).join(" ") : [
|
|
38
|
+
i,
|
|
38
39
|
"w-full",
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
].filter(Boolean).join(" "),
|
|
45
|
-
if (
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
40
|
+
R && f,
|
|
41
|
+
v && G,
|
|
42
|
+
s && a[s],
|
|
43
|
+
C,
|
|
44
|
+
u
|
|
45
|
+
].filter(Boolean).join(" "), h = /* @__PURE__ */ c("select", { ref: x, className: T, "data-testid": b, ...p, children: g });
|
|
46
|
+
if (l) {
|
|
47
|
+
const t = [
|
|
48
|
+
Q,
|
|
49
|
+
s && a[s]
|
|
49
50
|
].filter(Boolean).join(" ");
|
|
50
|
-
return /* @__PURE__ */
|
|
51
|
-
/* @__PURE__ */
|
|
52
|
-
|
|
51
|
+
return /* @__PURE__ */ w("label", { className: t, "data-testid": e, children: [
|
|
52
|
+
/* @__PURE__ */ c(
|
|
53
|
+
"select",
|
|
54
|
+
{
|
|
55
|
+
ref: x,
|
|
56
|
+
className: `${i} ${f} w-full`,
|
|
57
|
+
"data-testid": b,
|
|
58
|
+
...p,
|
|
59
|
+
children: g
|
|
60
|
+
}
|
|
61
|
+
),
|
|
62
|
+
/* @__PURE__ */ c("span", { children: l })
|
|
53
63
|
] });
|
|
54
64
|
}
|
|
55
|
-
if (
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
65
|
+
if (r) {
|
|
66
|
+
const t = [
|
|
67
|
+
i,
|
|
68
|
+
f,
|
|
59
69
|
"flex",
|
|
60
70
|
"items-center",
|
|
61
71
|
"gap-2",
|
|
62
|
-
|
|
63
|
-
|
|
72
|
+
s && a[s],
|
|
73
|
+
C
|
|
64
74
|
].filter(Boolean).join(" ");
|
|
65
|
-
return /* @__PURE__ */
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
75
|
+
return /* @__PURE__ */ w("label", { className: t, "data-testid": e, children: [
|
|
76
|
+
n && /* @__PURE__ */ c("span", { className: "text-base-content/70", "data-testid": d("addon-before"), children: n }),
|
|
77
|
+
h,
|
|
78
|
+
o && /* @__PURE__ */ c("span", { className: "text-base-content/70", "data-testid": d("addon-after"), children: o })
|
|
69
79
|
] });
|
|
70
80
|
}
|
|
71
|
-
return
|
|
81
|
+
return h;
|
|
72
82
|
}
|
|
73
83
|
);
|
|
74
|
-
|
|
84
|
+
U.displayName = "Select";
|
|
75
85
|
export {
|
|
76
|
-
|
|
86
|
+
U as Select
|
|
77
87
|
};
|
|
78
88
|
//# sourceMappingURL=Select.js.map
|