@pibit.ai/cure-design-system 0.6.23 → 0.6.25
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/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +403 -388
- package/dist/patterns/sub-sidebar/sub-sidebar.js +2 -2
- package/dist/patterns/table/toolbar/ColumnHeaderMenu.js +19 -19
- package/dist/patterns/table/toolbar/TableViewsDropdown.js +1 -1
- package/dist/primitives/button-group/button-group.d.ts +45 -0
- package/dist/primitives/button-group/button-group.d.ts.map +1 -0
- package/dist/primitives/button-group/button-group.js +73 -0
- package/dist/primitives/button-group/index.d.ts +2 -0
- package/dist/primitives/button-group/index.d.ts.map +1 -0
- package/dist/primitives/checkbox/checkbox.js +1 -1
- package/dist/primitives/input/hint-text.js +5 -5
- package/dist/primitives/input/index.d.ts +1 -0
- package/dist/primitives/input/index.d.ts.map +1 -1
- package/dist/primitives/input/input-group.d.ts +31 -0
- package/dist/primitives/input/input-group.d.ts.map +1 -0
- package/dist/primitives/input/input-group.js +116 -0
- package/dist/primitives/progress-bar/index.d.ts +2 -0
- package/dist/primitives/progress-bar/index.d.ts.map +1 -0
- package/dist/primitives/progress-bar/progress-bar.d.ts +52 -0
- package/dist/primitives/progress-bar/progress-bar.d.ts.map +1 -0
- package/dist/primitives/progress-bar/progress-bar.js +96 -0
- package/dist/primitives/segmented-control/index.d.ts +2 -0
- package/dist/primitives/segmented-control/index.d.ts.map +1 -0
- package/dist/primitives/segmented-control/segmented-control.d.ts +21 -0
- package/dist/primitives/segmented-control/segmented-control.d.ts.map +1 -0
- package/dist/primitives/segmented-control/segmented-control.js +43 -0
- package/dist/primitives/select/multi-select.js +20 -20
- package/dist/primitives/slider/index.d.ts +3 -0
- package/dist/primitives/slider/index.d.ts.map +1 -0
- package/dist/primitives/slider/range-slider.d.ts +24 -0
- package/dist/primitives/slider/range-slider.d.ts.map +1 -0
- package/dist/primitives/slider/range-slider.js +115 -0
- package/dist/primitives/slider/slider.d.ts +13 -0
- package/dist/primitives/slider/slider.d.ts.map +1 -0
- package/dist/primitives/slider/slider.js +55 -0
- package/dist/styles/components.css +1 -1
- package/dist/styles/theme.css +1 -1
- package/dist/utils/cn.d.ts.map +1 -1
- package/dist/utils/cn.js +12 -10
- package/dist/utils/cn.test.d.ts +2 -0
- package/dist/utils/cn.test.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { jsx as a, jsxs as i } from "react/jsx-runtime";
|
|
2
|
+
import { cx as g } from "../../utils/cn.js";
|
|
3
|
+
const u = (r, e, t) => t > e ? Math.min(100, Math.max(0, (r - e) * 100 / (t - e))) : 0, x = ({
|
|
4
|
+
value: r,
|
|
5
|
+
min: e = 0,
|
|
6
|
+
max: t = 100,
|
|
7
|
+
className: l,
|
|
8
|
+
progressClassName: d,
|
|
9
|
+
"aria-label": c
|
|
10
|
+
}) => {
|
|
11
|
+
const m = u(r, e, t);
|
|
12
|
+
return /* @__PURE__ */ a(
|
|
13
|
+
"div",
|
|
14
|
+
{
|
|
15
|
+
role: "progressbar",
|
|
16
|
+
"aria-label": c,
|
|
17
|
+
"aria-valuenow": r,
|
|
18
|
+
"aria-valuemin": e,
|
|
19
|
+
"aria-valuemax": t,
|
|
20
|
+
className: g("h-2 w-full overflow-hidden rounded-md bg-quaternary", l),
|
|
21
|
+
children: /* @__PURE__ */ a(
|
|
22
|
+
"div",
|
|
23
|
+
{
|
|
24
|
+
style: { transform: `translateX(-${100 - m}%)` },
|
|
25
|
+
className: g(
|
|
26
|
+
"size-full rounded-md bg-fg-brand-primary transition duration-75 ease-linear",
|
|
27
|
+
d
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
)
|
|
31
|
+
}
|
|
32
|
+
);
|
|
33
|
+
}, h = ({
|
|
34
|
+
value: r,
|
|
35
|
+
min: e = 0,
|
|
36
|
+
max: t = 100,
|
|
37
|
+
valueFormatter: l,
|
|
38
|
+
labelPosition: d,
|
|
39
|
+
className: c,
|
|
40
|
+
progressClassName: m,
|
|
41
|
+
"aria-label": f
|
|
42
|
+
}) => {
|
|
43
|
+
const n = u(r, e, t), o = l ? l(r, n) : `${n.toFixed(0)}%`, s = /* @__PURE__ */ a(
|
|
44
|
+
x,
|
|
45
|
+
{
|
|
46
|
+
min: e,
|
|
47
|
+
max: t,
|
|
48
|
+
value: r,
|
|
49
|
+
className: c,
|
|
50
|
+
progressClassName: m,
|
|
51
|
+
"aria-label": f
|
|
52
|
+
}
|
|
53
|
+
);
|
|
54
|
+
switch (d) {
|
|
55
|
+
case "right":
|
|
56
|
+
return /* @__PURE__ */ i("div", { className: "flex items-center gap-3", children: [
|
|
57
|
+
s,
|
|
58
|
+
/* @__PURE__ */ a("span", { className: "shrink-0 text-sm font-medium text-secondary tabular-nums", children: o })
|
|
59
|
+
] });
|
|
60
|
+
case "bottom":
|
|
61
|
+
return /* @__PURE__ */ i("div", { className: "flex flex-col items-end gap-2", children: [
|
|
62
|
+
s,
|
|
63
|
+
/* @__PURE__ */ a("span", { className: "text-sm font-medium text-secondary tabular-nums", children: o })
|
|
64
|
+
] });
|
|
65
|
+
case "top-floating":
|
|
66
|
+
return /* @__PURE__ */ i("div", { className: "relative flex flex-col items-end gap-2", children: [
|
|
67
|
+
s,
|
|
68
|
+
/* @__PURE__ */ a(
|
|
69
|
+
"div",
|
|
70
|
+
{
|
|
71
|
+
style: { left: `${n}%` },
|
|
72
|
+
className: "absolute -top-2 -translate-x-1/2 -translate-y-full rounded-lg bg-primary_alt px-3 py-2 shadow-lg ring-1 ring-secondary_alt",
|
|
73
|
+
children: /* @__PURE__ */ a("div", { className: "text-xs font-semibold text-secondary tabular-nums", children: o })
|
|
74
|
+
}
|
|
75
|
+
)
|
|
76
|
+
] });
|
|
77
|
+
case "bottom-floating":
|
|
78
|
+
return /* @__PURE__ */ i("div", { className: "relative flex flex-col items-end gap-2", children: [
|
|
79
|
+
s,
|
|
80
|
+
/* @__PURE__ */ a(
|
|
81
|
+
"div",
|
|
82
|
+
{
|
|
83
|
+
style: { left: `${n}%` },
|
|
84
|
+
className: "absolute -bottom-2 -translate-x-1/2 translate-y-full rounded-lg bg-primary_alt px-3 py-2 shadow-lg ring-1 ring-secondary_alt",
|
|
85
|
+
children: /* @__PURE__ */ a("div", { className: "text-xs font-semibold text-secondary", children: o })
|
|
86
|
+
}
|
|
87
|
+
)
|
|
88
|
+
] });
|
|
89
|
+
default:
|
|
90
|
+
return s;
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
export {
|
|
94
|
+
h as ProgressBar,
|
|
95
|
+
x as ProgressBarBase
|
|
96
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/primitives/segmented-control/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface SegmentedControlOption {
|
|
2
|
+
label: string;
|
|
3
|
+
onClick: () => void;
|
|
4
|
+
/** Shown after the label; a shimmer stands in while `isLoading`. */
|
|
5
|
+
count?: number;
|
|
6
|
+
}
|
|
7
|
+
export interface SegmentedControlProps {
|
|
8
|
+
buttonsArray: SegmentedControlOption[];
|
|
9
|
+
/** Controlled active option. Without it the control starts on the first option and tracks clicks itself. */
|
|
10
|
+
activeIndex?: number;
|
|
11
|
+
isLoading?: boolean;
|
|
12
|
+
buttonDisabled?: boolean;
|
|
13
|
+
/** Called after an option's own `onClick`, e.g. for analytics. */
|
|
14
|
+
onChange?: (index: number, option: SegmentedControlOption) => void;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A row of text buttons where one is active (brand-tinted, `aria-pressed`), each with an optional
|
|
18
|
+
* count. Used for view filters such as the notification panel's All / Unread / Mentions.
|
|
19
|
+
*/
|
|
20
|
+
export declare const SegmentedControl: ({ buttonsArray, activeIndex: controlledIndex, isLoading, buttonDisabled, onChange, }: SegmentedControlProps) => import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
//# sourceMappingURL=segmented-control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segmented-control.d.ts","sourceRoot":"","sources":["../../../src/primitives/segmented-control/segmented-control.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,sBAAsB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IAClC,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACvC,4GAA4G;IAC5G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;CACtE;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,sFAM9B,qBAAqB,4CAgDvB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx as a, jsxs as p, Fragment as n } from "react/jsx-runtime";
|
|
2
|
+
import { useState as v, useEffect as b } from "react";
|
|
3
|
+
import { cx as f } from "../../utils/cn.js";
|
|
4
|
+
import { Button as h } from "../button/button.js";
|
|
5
|
+
import g from "../shimmer/shimmer.js";
|
|
6
|
+
const S = ({
|
|
7
|
+
buttonsArray: i,
|
|
8
|
+
activeIndex: o,
|
|
9
|
+
isLoading: l = !1,
|
|
10
|
+
buttonDisabled: m,
|
|
11
|
+
onChange: c
|
|
12
|
+
}) => {
|
|
13
|
+
const [s, t] = v(o ?? 0);
|
|
14
|
+
b(() => {
|
|
15
|
+
o !== void 0 && t(o);
|
|
16
|
+
}, [o]);
|
|
17
|
+
const d = (r) => {
|
|
18
|
+
var e;
|
|
19
|
+
t(r), (e = i[r]) == null || e.onClick(), i[r] && (c == null || c(r, i[r]));
|
|
20
|
+
};
|
|
21
|
+
return /* @__PURE__ */ a("div", { className: "inline-flex gap-1", children: i.map((r, e) => /* @__PURE__ */ p(
|
|
22
|
+
h,
|
|
23
|
+
{
|
|
24
|
+
onClick: () => d(e),
|
|
25
|
+
size: "xs",
|
|
26
|
+
color: "tertiary",
|
|
27
|
+
className: f(
|
|
28
|
+
"h-8 px-3 border-0 border-white cursor-pointer text-xs font-medium text-[var(--color-gray-600)] transition-all duration-150",
|
|
29
|
+
s === e && "text-[var(--color-text-brand-tertiary)] rounded-sm bg-[var(--color-bg-brand-primary)] border border-[var(--color-border-brand)] hover:bg-[var(--color-bg-brand-primary)]"
|
|
30
|
+
),
|
|
31
|
+
isDisabled: m,
|
|
32
|
+
"aria-pressed": s === e,
|
|
33
|
+
children: [
|
|
34
|
+
/* @__PURE__ */ a("span", { children: r.label }),
|
|
35
|
+
r.count !== void 0 && /* @__PURE__ */ a(n, { children: l ? /* @__PURE__ */ a(g, { className: "ml-1 inline-block", children: /* @__PURE__ */ a("div", { className: "bg-gray-200 rounded h-3.5 w-4" }) }) : /* @__PURE__ */ a("span", { className: "ml-1 ", children: r.count }) })
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
e
|
|
39
|
+
)) });
|
|
40
|
+
};
|
|
41
|
+
export {
|
|
42
|
+
S as SegmentedControl
|
|
43
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as s, jsxs as M, Fragment as me } from "react/jsx-runtime";
|
|
2
2
|
import { useId as ge, useCallback as L, useMemo as B, useRef as G, useState as ue, createContext as we, useContext as H, useLayoutEffect as ye } from "react";
|
|
3
|
-
import { useFilter as be, useInteractOutside as
|
|
3
|
+
import { useFilter as be, useInteractOutside as ve, FocusScope as xe, useFocusManager as De } from "react-aria";
|
|
4
4
|
import { ChevronDown as Ne, SearchMd as ke } from "@untitledui/icons";
|
|
5
5
|
import { ComboBox as Te, ListBox as Se, ComboBoxStateContext as Z, ButtonContext as ee, Group as Re, Input as Fe } from "react-aria-components";
|
|
6
6
|
import { useListData as Ae } from "../../node_modules/react-stately/dist/private/data/useListData.js";
|
|
@@ -44,7 +44,7 @@ function $e({
|
|
|
44
44
|
popoverRef: y
|
|
45
45
|
}) {
|
|
46
46
|
const d = H(Z);
|
|
47
|
-
return
|
|
47
|
+
return ve({
|
|
48
48
|
ref: y,
|
|
49
49
|
isDisabled: !(d != null && d.isOpen),
|
|
50
50
|
onInteractOutside: (m) => {
|
|
@@ -169,7 +169,7 @@ const Ue = ({
|
|
|
169
169
|
...f
|
|
170
170
|
}) => {
|
|
171
171
|
var ae;
|
|
172
|
-
const _ = ge(), { contains: V } = be({ sensitivity: "base" }), E = (ae = m == null ? void 0 : m.items) != null && ae.length ? m.items.map((n) => n.id) : [],
|
|
172
|
+
const _ = ge(), { contains: V } = be({ sensitivity: "base" }), E = (ae = m == null ? void 0 : m.items) != null && ae.length ? m.items.map((n) => n.id) : [], x = L(
|
|
173
173
|
(n) => E.some((i) => String(i) === String(n)),
|
|
174
174
|
[E]
|
|
175
175
|
), X = L(
|
|
@@ -179,9 +179,9 @@ const Ue = ({
|
|
|
179
179
|
i,
|
|
180
180
|
V
|
|
181
181
|
);
|
|
182
|
-
return (R || !
|
|
182
|
+
return (R || !x(n.id)) && A;
|
|
183
183
|
},
|
|
184
|
-
[V,
|
|
184
|
+
[V, x, R]
|
|
185
185
|
), w = Ae({
|
|
186
186
|
initialItems: c,
|
|
187
187
|
filter: X
|
|
@@ -190,34 +190,34 @@ const Ue = ({
|
|
|
190
190
|
) : c : [], [c, z, w.filterText, V]), P = B(() => {
|
|
191
191
|
if (D.length === 0) return "unselected";
|
|
192
192
|
const n = D.filter(
|
|
193
|
-
(i) =>
|
|
193
|
+
(i) => x(i.id)
|
|
194
194
|
).length;
|
|
195
195
|
return n === 0 ? "unselected" : n === D.length ? "selected" : "indeterminate";
|
|
196
|
-
}, [D,
|
|
196
|
+
}, [D, x]), t = G(!1), N = L(() => {
|
|
197
197
|
t.current = !0, setTimeout(() => {
|
|
198
198
|
t.current = !1;
|
|
199
199
|
}, 0);
|
|
200
200
|
}, []), J = L(() => {
|
|
201
201
|
N();
|
|
202
|
-
const n = P !== "selected", i = D.map((
|
|
202
|
+
const n = P !== "selected", i = D.map((v) => v.id), A = new Set(i.map(String)), K = n ? [.../* @__PURE__ */ new Set([...E, ...i])] : E.filter((v) => !A.has(String(v))), W = D.filter((v) => !x(v.id)), U = D.filter((v) => x(v.id)).map((v) => v.id);
|
|
203
203
|
if (n && W.length > 0 ? m.append(...W) : !n && U.length > 0 && m.remove(...U), T) {
|
|
204
204
|
T(K);
|
|
205
205
|
return;
|
|
206
206
|
}
|
|
207
207
|
if (n) {
|
|
208
|
-
for (const
|
|
209
|
-
v
|
|
208
|
+
for (const v of D)
|
|
209
|
+
x(v.id) || b == null || b(v.id);
|
|
210
210
|
return;
|
|
211
211
|
}
|
|
212
|
-
for (const
|
|
213
|
-
v
|
|
212
|
+
for (const v of D)
|
|
213
|
+
x(v.id) && (l == null || l(v.id));
|
|
214
214
|
}, [
|
|
215
215
|
N,
|
|
216
216
|
P,
|
|
217
217
|
D,
|
|
218
218
|
E,
|
|
219
219
|
m,
|
|
220
|
-
|
|
220
|
+
x,
|
|
221
221
|
T,
|
|
222
222
|
b,
|
|
223
223
|
l
|
|
@@ -238,7 +238,7 @@ const Ue = ({
|
|
|
238
238
|
}, 0);
|
|
239
239
|
const A = w.getItem(n) ?? (c == null ? void 0 : c.find((K) => String(K.id) === String(n)));
|
|
240
240
|
if (A) {
|
|
241
|
-
if (
|
|
241
|
+
if (x(n)) {
|
|
242
242
|
const K = E.find((W) => String(W) === i) ?? n;
|
|
243
243
|
m.remove(K), l == null || l(K);
|
|
244
244
|
} else
|
|
@@ -313,7 +313,7 @@ const Ue = ({
|
|
|
313
313
|
className: k(
|
|
314
314
|
"text-tertiary",
|
|
315
315
|
ce[d],
|
|
316
|
-
"-mt-0.5 leading-
|
|
316
|
+
"-mt-0.5 leading-4.5"
|
|
317
317
|
),
|
|
318
318
|
children: j
|
|
319
319
|
}
|
|
@@ -510,7 +510,7 @@ const Ue = ({
|
|
|
510
510
|
e == null || e.close();
|
|
511
511
|
break;
|
|
512
512
|
}
|
|
513
|
-
},
|
|
513
|
+
}, x = ((z = (w = a == null ? void 0 : a.selectedItems) == null ? void 0 : w.items) == null ? void 0 : z.length) === 0;
|
|
514
514
|
return /* @__PURE__ */ M("div", { className: "relative min-w-0 w-full flex-1", children: [
|
|
515
515
|
/* @__PURE__ */ M(
|
|
516
516
|
"div",
|
|
@@ -525,7 +525,7 @@ const Ue = ({
|
|
|
525
525
|
) : "flex-nowrap items-center overflow-x-auto overflow-y-hidden scrollbar-hide"
|
|
526
526
|
),
|
|
527
527
|
children: [
|
|
528
|
-
/* @__PURE__ */ s(ee.Provider, { value: null, children: !
|
|
528
|
+
/* @__PURE__ */ s(ee.Provider, { value: null, children: !x && ((P = (D = a == null ? void 0 : a.selectedItems) == null ? void 0 : D.items) == null ? void 0 : P.map((t) => /* @__PURE__ */ M(
|
|
529
529
|
"span",
|
|
530
530
|
{
|
|
531
531
|
"data-multiselect-chip": !0,
|
|
@@ -575,7 +575,7 @@ const Ue = ({
|
|
|
575
575
|
className: k(
|
|
576
576
|
"relative flex flex-1 flex-row items-center",
|
|
577
577
|
o ? "min-w-[20%]" : "min-w-0",
|
|
578
|
-
!
|
|
578
|
+
!x && "ml-0.5",
|
|
579
579
|
y && "min-w-[30%]"
|
|
580
580
|
),
|
|
581
581
|
children: [
|
|
@@ -583,7 +583,7 @@ const Ue = ({
|
|
|
583
583
|
Fe,
|
|
584
584
|
{
|
|
585
585
|
ref: T,
|
|
586
|
-
placeholder:
|
|
586
|
+
placeholder: x ? m : void 0,
|
|
587
587
|
onKeyDown: F,
|
|
588
588
|
onMouseDown: _,
|
|
589
589
|
onFocus: V,
|
|
@@ -692,7 +692,7 @@ const Ue = ({
|
|
|
692
692
|
},
|
|
693
693
|
children: ({ isDisabled: u, isFocusWithin: h }) => /* @__PURE__ */ M(me, { children: [
|
|
694
694
|
l && /* @__PURE__ */ s(l, { className: "pointer-events-none size-5 shrink-0 text-fg-quaternary" }),
|
|
695
|
-
/* @__PURE__ */ s(
|
|
695
|
+
/* @__PURE__ */ s(xe, { contain: !1, autoFocus: !1, restoreFocus: !1, children: /* @__PURE__ */ s("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ s(
|
|
696
696
|
Je,
|
|
697
697
|
{
|
|
698
698
|
inputRef: g,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/primitives/slider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface RangeSliderZoneLabel {
|
|
2
|
+
title: string;
|
|
3
|
+
value: string;
|
|
4
|
+
}
|
|
5
|
+
export interface RangeSliderProps {
|
|
6
|
+
minValue: number;
|
|
7
|
+
maxValue: number;
|
|
8
|
+
step?: number;
|
|
9
|
+
value: [number, number];
|
|
10
|
+
onChange: (value: [number, number]) => void;
|
|
11
|
+
isDisabled?: boolean;
|
|
12
|
+
marks?: number[];
|
|
13
|
+
zoneLabels?: {
|
|
14
|
+
left: RangeSliderZoneLabel;
|
|
15
|
+
middle: RangeSliderZoneLabel;
|
|
16
|
+
right: RangeSliderZoneLabel;
|
|
17
|
+
};
|
|
18
|
+
leftSegmentClassName?: string;
|
|
19
|
+
middleSegmentClassName?: string;
|
|
20
|
+
rightSegmentClassName?: string;
|
|
21
|
+
trackClassName?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function RangeSlider({ minValue, maxValue, step, value, onChange, isDisabled, marks, zoneLabels, leftSegmentClassName, middleSegmentClassName, rightSegmentClassName, trackClassName, }: RangeSliderProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
//# sourceMappingURL=range-slider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"range-slider.d.ts","sourceRoot":"","sources":["../../../src/primitives/slider/range-slider.tsx"],"names":[],"mappings":"AAOA,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE;QACT,IAAI,EAAE,oBAAoB,CAAC;QAC3B,MAAM,EAAE,oBAAoB,CAAC;QAC7B,KAAK,EAAE,oBAAoB,CAAC;KAC/B,CAAC;IACF,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,EACxB,QAAQ,EACR,QAAQ,EACR,IAAQ,EACR,KAAK,EACL,QAAQ,EACR,UAAkB,EAClB,KAAK,EACL,UAAU,EACV,oBAA6C,EAC7C,sBAAuC,EACvC,qBAAgD,EAChD,cAA+B,GAClC,EAAE,gBAAgB,2CAkHlB"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { jsxs as a, jsx as e, Fragment as S } from "react/jsx-runtime";
|
|
2
|
+
import { Slider as $, SliderTrack as j, SliderThumb as V } from "react-aria-components";
|
|
3
|
+
import { cx as s } from "../../utils/cn.js";
|
|
4
|
+
function M({
|
|
5
|
+
minValue: m,
|
|
6
|
+
maxValue: u,
|
|
7
|
+
step: f = 1,
|
|
8
|
+
value: d,
|
|
9
|
+
onChange: h,
|
|
10
|
+
isDisabled: o = !1,
|
|
11
|
+
marks: r,
|
|
12
|
+
zoneLabels: t,
|
|
13
|
+
leftSegmentClassName: x = "bg-utility-error-300",
|
|
14
|
+
middleSegmentClassName: p = "bg-[#DEE1E8]",
|
|
15
|
+
rightSegmentClassName: g = "bg-utility-success-300",
|
|
16
|
+
trackClassName: N = "bg-[#DEE1E8]"
|
|
17
|
+
}) {
|
|
18
|
+
const [y, b] = d, w = y < b;
|
|
19
|
+
return /* @__PURE__ */ a("div", { className: "flex flex-col gap-4", children: [
|
|
20
|
+
t ? /* @__PURE__ */ a("div", { className: "grid grid-cols-3 gap-2 text-center", children: [
|
|
21
|
+
/* @__PURE__ */ a("div", { className: "flex flex-col gap-0.5 items-start", children: [
|
|
22
|
+
/* @__PURE__ */ e("span", { className: "text-xs text-tertiary font-medium", children: t.left.title }),
|
|
23
|
+
/* @__PURE__ */ e("span", { className: "text-md font-bold text-primary", children: t.left.value })
|
|
24
|
+
] }),
|
|
25
|
+
/* @__PURE__ */ a("div", { className: "flex flex-col gap-0.5 items-center", children: [
|
|
26
|
+
/* @__PURE__ */ e("span", { className: "text-xs text-tertiary font-medium", children: t.middle.title }),
|
|
27
|
+
/* @__PURE__ */ e("span", { className: "text-md font-bold text-primary", children: t.middle.value })
|
|
28
|
+
] }),
|
|
29
|
+
/* @__PURE__ */ a("div", { className: "flex flex-col gap-0.5 items-end", children: [
|
|
30
|
+
/* @__PURE__ */ e("span", { className: "text-xs text-tertiary font-medium", children: t.right.title }),
|
|
31
|
+
/* @__PURE__ */ e("span", { className: "text-md font-bold text-primary", children: t.right.value })
|
|
32
|
+
] })
|
|
33
|
+
] }) : null,
|
|
34
|
+
/* @__PURE__ */ e(
|
|
35
|
+
$,
|
|
36
|
+
{
|
|
37
|
+
minValue: m,
|
|
38
|
+
maxValue: u,
|
|
39
|
+
step: f,
|
|
40
|
+
value: d,
|
|
41
|
+
onChange: (l) => h(l),
|
|
42
|
+
isDisabled: o,
|
|
43
|
+
className: "w-full",
|
|
44
|
+
children: /* @__PURE__ */ e(j, { className: "relative h-8 w-full", children: ({ state: { getThumbPercent: l } }) => {
|
|
45
|
+
const i = l(0), n = l(1);
|
|
46
|
+
return /* @__PURE__ */ a(S, { children: [
|
|
47
|
+
/* @__PURE__ */ e(
|
|
48
|
+
"span",
|
|
49
|
+
{
|
|
50
|
+
className: s(
|
|
51
|
+
"absolute top-1/2 h-2 w-full -translate-y-1/2 rounded-full",
|
|
52
|
+
N
|
|
53
|
+
)
|
|
54
|
+
}
|
|
55
|
+
),
|
|
56
|
+
i > 0 ? /* @__PURE__ */ e(
|
|
57
|
+
"span",
|
|
58
|
+
{
|
|
59
|
+
className: s(
|
|
60
|
+
"absolute top-1/2 h-2 -translate-y-1/2 rounded-l-full",
|
|
61
|
+
x
|
|
62
|
+
),
|
|
63
|
+
style: {
|
|
64
|
+
left: 0,
|
|
65
|
+
width: `${i * 100}%`
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
) : null,
|
|
69
|
+
w ? /* @__PURE__ */ e(
|
|
70
|
+
"span",
|
|
71
|
+
{
|
|
72
|
+
className: s("absolute top-1/2 h-2 -translate-y-1/2", p),
|
|
73
|
+
style: {
|
|
74
|
+
left: `${i * 100}%`,
|
|
75
|
+
width: `${(n - i) * 100}%`
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
) : null,
|
|
79
|
+
n < 1 ? /* @__PURE__ */ e(
|
|
80
|
+
"span",
|
|
81
|
+
{
|
|
82
|
+
className: s(
|
|
83
|
+
"absolute top-1/2 h-2 -translate-y-1/2 rounded-r-full",
|
|
84
|
+
g
|
|
85
|
+
),
|
|
86
|
+
style: {
|
|
87
|
+
left: `${n * 100}%`,
|
|
88
|
+
width: `${(1 - n) * 100}%`
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
) : null,
|
|
92
|
+
[0, 1].map((c) => /* @__PURE__ */ e(
|
|
93
|
+
V,
|
|
94
|
+
{
|
|
95
|
+
index: c,
|
|
96
|
+
className: ({ isFocusVisible: v, isDragging: E }) => s(
|
|
97
|
+
"top-1/2 box-border size-5 cursor-grab rounded-full bg-white shadow-md ring-1 ring-secondary",
|
|
98
|
+
c === 0 ? "z-[2]" : "z-[1]",
|
|
99
|
+
v && "outline-2 outline-offset-2 outline-focus-ring",
|
|
100
|
+
E && "cursor-grabbing",
|
|
101
|
+
o && "cursor-not-allowed opacity-60"
|
|
102
|
+
)
|
|
103
|
+
},
|
|
104
|
+
c
|
|
105
|
+
))
|
|
106
|
+
] });
|
|
107
|
+
} })
|
|
108
|
+
}
|
|
109
|
+
),
|
|
110
|
+
r != null && r.length ? /* @__PURE__ */ e("div", { className: "flex justify-between px-0.5", children: r.map((l) => /* @__PURE__ */ e("span", { className: "w-5 text-center text-xs font-medium text-tertiary", children: l }, l)) }) : null
|
|
111
|
+
] });
|
|
112
|
+
}
|
|
113
|
+
export {
|
|
114
|
+
M as RangeSlider
|
|
115
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SliderProps as AriaSliderProps } from 'react-aria-components';
|
|
2
|
+
declare const styles: {
|
|
3
|
+
default: string;
|
|
4
|
+
bottom: string;
|
|
5
|
+
"top-floating": string;
|
|
6
|
+
};
|
|
7
|
+
export interface SliderProps extends AriaSliderProps {
|
|
8
|
+
labelPosition?: keyof typeof styles;
|
|
9
|
+
labelFormatter?: (value: number) => string;
|
|
10
|
+
}
|
|
11
|
+
export declare const Slider: ({ labelPosition, minValue, maxValue, labelFormatter, formatOptions, ...rest }: SliderProps) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=slider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../../src/primitives/slider/slider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAU5E,QAAA,MAAM,MAAM;;;;CAKV,CAAC;AAEH,MAAM,WAAW,WAAY,SAAQ,eAAe;IAChD,aAAa,CAAC,EAAE,MAAM,OAAO,MAAM,CAAC;IACpC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC9C;AAED,eAAO,MAAM,MAAM,GAAI,+EAOpB,WAAW,4CAqDb,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsxs as s, jsx as t, Fragment as y } from "react/jsx-runtime";
|
|
2
|
+
import { Slider as x, Label as w, SliderTrack as S, SliderThumb as N, SliderOutput as O } from "react-aria-components";
|
|
3
|
+
import { cx as n, sortCx as F } from "../../utils/cn.js";
|
|
4
|
+
const $ = F({
|
|
5
|
+
default: "hidden",
|
|
6
|
+
bottom: "absolute top-2 left-1/2 -translate-x-1/2 translate-y-full text-md font-medium text-primary",
|
|
7
|
+
"top-floating": "absolute -top-2 left-1/2 -translate-x-1/2 -translate-y-full rounded-lg bg-primary px-2 py-1.5 text-xs font-semibold text-secondary shadow-lg ring-1 ring-secondary_alt"
|
|
8
|
+
}), D = ({
|
|
9
|
+
labelPosition: i = "default",
|
|
10
|
+
minValue: d = 0,
|
|
11
|
+
maxValue: u = 100,
|
|
12
|
+
labelFormatter: a,
|
|
13
|
+
formatOptions: f,
|
|
14
|
+
...m
|
|
15
|
+
}) => /* @__PURE__ */ s(x, { ...m, minValue: d, maxValue: u, formatOptions: f ?? {
|
|
16
|
+
style: "percent",
|
|
17
|
+
maximumFractionDigits: 0
|
|
18
|
+
}, children: [
|
|
19
|
+
/* @__PURE__ */ t(w, {}),
|
|
20
|
+
/* @__PURE__ */ t(S, { className: "relative h-6 w-full", children: ({ state: { values: e, getThumbValue: p, getThumbPercent: l, getFormattedValue: c } }) => {
|
|
21
|
+
const o = e.length === 1 ? 0 : l(0), g = e.length === 1 ? l(0) : l(1) - o;
|
|
22
|
+
return /* @__PURE__ */ s(y, { children: [
|
|
23
|
+
/* @__PURE__ */ t("span", { className: "absolute top-1/2 h-2 w-full -translate-y-1/2 rounded-full bg-tertiary" }),
|
|
24
|
+
/* @__PURE__ */ t(
|
|
25
|
+
"span",
|
|
26
|
+
{
|
|
27
|
+
className: "absolute top-1/2 h-2 w-full -translate-y-1/2 rounded-full bg-brand-solid",
|
|
28
|
+
style: {
|
|
29
|
+
left: `${o * 100}%`,
|
|
30
|
+
width: `${g * 100}%`
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
),
|
|
34
|
+
e.map((_, r) => /* @__PURE__ */ t(
|
|
35
|
+
N,
|
|
36
|
+
{
|
|
37
|
+
index: r,
|
|
38
|
+
className: ({ isFocusVisible: b, isDragging: h }) => n(
|
|
39
|
+
"top-1/2 box-border size-6 cursor-grab rounded-full bg-slider-handle-bg shadow-md ring-2 ring-slider-handle-border ring-inset",
|
|
40
|
+
b && "outline-2 outline-offset-2 outline-focus-ring",
|
|
41
|
+
h && "cursor-grabbing"
|
|
42
|
+
),
|
|
43
|
+
children: /* @__PURE__ */ t(O, { className: n("whitespace-nowrap", $[i]), children: a ? a(p(r)) : (
|
|
44
|
+
// The default format is a percent, so pass the thumb's 0–1 position in the range.
|
|
45
|
+
c(l(r))
|
|
46
|
+
) })
|
|
47
|
+
},
|
|
48
|
+
r
|
|
49
|
+
))
|
|
50
|
+
] });
|
|
51
|
+
} })
|
|
52
|
+
] });
|
|
53
|
+
export {
|
|
54
|
+
D as Slider
|
|
55
|
+
};
|