@fabio.caffarello/react-design-system 3.12.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/granular/index.js +393 -389
- package/dist/granular/index.js.map +1 -1
- package/dist/granular/ui/components/Autocomplete/Autocomplete.js +103 -86
- package/dist/granular/ui/components/Autocomplete/Autocomplete.js.map +1 -1
- package/dist/granular/ui/components/Autocomplete/AutocompleteList.js +57 -47
- package/dist/granular/ui/components/Autocomplete/AutocompleteList.js.map +1 -1
- package/dist/granular/ui/components/Autocomplete/AutocompleteOption.js +21 -20
- package/dist/granular/ui/components/Autocomplete/AutocompleteOption.js.map +1 -1
- package/dist/granular/ui/components/Breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/granular/ui/components/ButtonGroup/ButtonGroup.js +68 -0
- package/dist/granular/ui/components/ButtonGroup/ButtonGroup.js.map +1 -0
- package/dist/granular/ui/components/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/granular/ui/components/CommandPalette/CommandPalette.js +187 -149
- package/dist/granular/ui/components/CommandPalette/CommandPalette.js.map +1 -1
- package/dist/granular/ui/components/DataGrid/DataGrid.js +92 -92
- package/dist/granular/ui/components/DataGrid/DataGrid.js.map +1 -1
- package/dist/granular/ui/components/DatePicker/DatePickerCalendar.js +154 -139
- package/dist/granular/ui/components/DatePicker/DatePickerCalendar.js.map +1 -1
- package/dist/granular/ui/components/Dialog/AlertDialog.js +73 -40
- package/dist/granular/ui/components/Dialog/AlertDialog.js.map +1 -1
- package/dist/granular/ui/components/Dialog/DialogContent.js +54 -48
- package/dist/granular/ui/components/Dialog/DialogContent.js.map +1 -1
- package/dist/granular/ui/components/Dialog/DialogDescription.js +31 -31
- package/dist/granular/ui/components/Dialog/DialogDescription.js.map +1 -1
- package/dist/granular/ui/components/Dialog/DialogTitle.js +30 -30
- package/dist/granular/ui/components/Dialog/DialogTitle.js.map +1 -1
- package/dist/granular/ui/components/Drawer/Drawer.js.map +1 -1
- package/dist/granular/ui/components/Dropdown/Dropdown.js.map +1 -1
- package/dist/granular/ui/components/EmptyState/EmptyState.js.map +1 -1
- package/dist/granular/ui/components/FileUpload/FileUpload.js.map +1 -1
- package/dist/granular/ui/components/Form/Form.js +38 -37
- package/dist/granular/ui/components/Form/Form.js.map +1 -1
- package/dist/granular/ui/components/Form/FormField.js +28 -26
- package/dist/granular/ui/components/Form/FormField.js.map +1 -1
- package/dist/granular/ui/components/Header/Header.js.map +1 -1
- package/dist/granular/ui/components/Header/components/HeaderActions.js.map +1 -1
- package/dist/granular/ui/components/Header/components/HeaderHamburger.js.map +1 -1
- package/dist/granular/ui/components/Header/components/HeaderLogo.js.map +1 -1
- package/dist/granular/ui/components/Header/components/HeaderMobileMenu.js.map +1 -1
- package/dist/granular/ui/components/Header/components/HeaderNavigation.js.map +1 -1
- package/dist/granular/ui/components/Header/contexts/HeaderContext.js.map +1 -1
- package/dist/granular/ui/components/Menu/Menu.js.map +1 -1
- package/dist/granular/ui/components/Modal/Modal.js +98 -86
- package/dist/granular/ui/components/Modal/Modal.js.map +1 -1
- package/dist/granular/ui/components/MultiSelect/MultiSelect.js +122 -106
- package/dist/granular/ui/components/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/granular/ui/components/Navigation/Navigation.js.map +1 -1
- package/dist/granular/ui/components/PageHeader/PageHeader.js.map +1 -1
- package/dist/granular/ui/components/Pagination/Pagination.js.map +1 -1
- package/dist/granular/ui/components/Popover/Popover.js.map +1 -1
- package/dist/granular/ui/components/Rating/Rating.js.map +1 -1
- package/dist/granular/ui/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarGroup.js +82 -64
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarGroup.js.map +1 -1
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarItem.js +30 -29
- package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarItem.js.map +1 -1
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarResizeHandle.js +37 -35
- package/dist/granular/ui/components/SideNavbar/components/SideNavbarResizeHandle.js.map +1 -1
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarStateProvider.js +57 -57
- package/dist/granular/ui/components/SideNavbar/providers/SideNavbarStateProvider.js.map +1 -1
- package/dist/granular/ui/components/Stepper/Stepper.js +102 -94
- package/dist/granular/ui/components/Stepper/Stepper.js.map +1 -1
- package/dist/granular/ui/components/Table/Table.js +41 -35
- package/dist/granular/ui/components/Table/Table.js.map +1 -1
- package/dist/granular/ui/components/Table/TableActions/TableActions.js.map +1 -1
- package/dist/granular/ui/components/Table/TableFilters/TableFilters.js +49 -46
- package/dist/granular/ui/components/Table/TableFilters/TableFilters.js.map +1 -1
- package/dist/granular/ui/components/Table/TablePagination/TablePagination.js.map +1 -1
- package/dist/granular/ui/components/Table/TableProvider.js +82 -80
- package/dist/granular/ui/components/Table/TableProvider.js.map +1 -1
- package/dist/granular/ui/components/Table/TableRow.js +57 -53
- package/dist/granular/ui/components/Table/TableRow.js.map +1 -1
- package/dist/granular/ui/components/Table/useColumnResizing.js +53 -53
- package/dist/granular/ui/components/Table/useColumnResizing.js.map +1 -1
- package/dist/granular/ui/components/TimePicker/TimePicker.js +149 -103
- package/dist/granular/ui/components/TimePicker/TimePicker.js.map +1 -1
- package/dist/granular/ui/components/Timeline/Timeline.js.map +1 -1
- package/dist/granular/ui/hooks/useFocusRestore.js +14 -15
- package/dist/granular/ui/hooks/useFocusRestore.js.map +1 -1
- package/dist/granular/ui/primitives/Badge/Badge.js.map +1 -1
- package/dist/granular/ui/primitives/Checkbox/Checkbox.js.map +1 -1
- package/dist/granular/ui/primitives/Chip/Chip.js +91 -71
- package/dist/granular/ui/primitives/Chip/Chip.js.map +1 -1
- package/dist/granular/ui/primitives/Dot/Dot.js +99 -0
- package/dist/granular/ui/primitives/Dot/Dot.js.map +1 -0
- package/dist/granular/ui/primitives/ErrorMessage/ErrorMessage.js.map +1 -1
- package/dist/granular/ui/primitives/Input/Input.js.map +1 -1
- package/dist/granular/ui/primitives/Label/Label.js.map +1 -1
- package/dist/granular/ui/primitives/NavLink/NavLink.js.map +1 -1
- package/dist/granular/ui/primitives/Radio/Radio.js.map +1 -1
- package/dist/granular/ui/primitives/Select/Select.js.map +1 -1
- package/dist/granular/ui/primitives/Separator/Separator.js.map +1 -1
- package/dist/granular/ui/primitives/Skeleton/Skeleton.js.map +1 -1
- package/dist/granular/ui/primitives/Slider/Slider.js.map +1 -1
- package/dist/granular/ui/primitives/Spinner/Spinner.js.map +1 -1
- package/dist/granular/ui/primitives/Switch/Switch.js.map +1 -1
- package/dist/granular/ui/primitives/Tooltip/Tooltip.js.map +1 -1
- package/dist/granular/ui/providers/DialogContext.js.map +1 -1
- package/dist/granular/ui/providers/DialogProvider.js +24 -20
- package/dist/granular/ui/providers/DialogProvider.js.map +1 -1
- package/dist/index.cjs +134 -134
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +5945 -5542
- package/dist/index.js.map +1 -1
- package/dist/react-design-system.css +1 -1
- package/dist/server/index.cjs +7 -7
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.js +404 -384
- package/dist/server/index.js.map +1 -1
- package/dist/ui/components/Autocomplete/AutocompleteList.d.ts +4 -0
- package/dist/ui/components/Autocomplete/AutocompleteOption.d.ts +8 -0
- package/dist/ui/components/Breadcrumb/Breadcrumb.d.ts +0 -1
- package/dist/ui/components/ButtonGroup/ButtonGroup.d.ts +2 -2
- package/dist/ui/components/ColorPicker/ColorPicker.d.ts +0 -1
- package/dist/ui/components/CommandPalette/CommandPalette.d.ts +0 -1
- package/dist/ui/components/DataGrid/DataGrid.d.ts +0 -1
- package/dist/ui/components/Dialog/DialogContent.d.ts +20 -1
- package/dist/ui/components/Drawer/Drawer.d.ts +0 -1
- package/dist/ui/components/Dropdown/Dropdown.d.ts +0 -1
- package/dist/ui/components/EmptyState/EmptyState.d.ts +0 -1
- package/dist/ui/components/FileUpload/FileUpload.d.ts +0 -1
- package/dist/ui/components/Form/FormField.d.ts +7 -0
- package/dist/ui/components/Header/Header.d.ts +1 -1
- package/dist/ui/components/Header/components/HeaderActions.d.ts +1 -1
- package/dist/ui/components/Header/components/HeaderHamburger.d.ts +1 -1
- package/dist/ui/components/Header/components/HeaderLogo.d.ts +1 -1
- package/dist/ui/components/Header/components/HeaderMobileMenu.d.ts +1 -1
- package/dist/ui/components/Header/components/HeaderNavigation.d.ts +1 -1
- package/dist/ui/components/Header/contexts/HeaderContext.d.ts +1 -1
- package/dist/ui/components/Menu/Menu.d.ts +0 -1
- package/dist/ui/components/Modal/Modal.d.ts +1 -2
- package/dist/ui/components/Navigation/Navigation.d.ts +1 -1
- package/dist/ui/components/PageHeader/PageHeader.d.ts +1 -1
- package/dist/ui/components/Pagination/Pagination.d.ts +0 -1
- package/dist/ui/components/Popover/Popover.d.ts +0 -1
- package/dist/ui/components/Rating/Rating.d.ts +0 -1
- package/dist/ui/components/SearchInput/SearchInput.d.ts +0 -1
- package/dist/ui/components/Stepper/Stepper.d.ts +0 -1
- package/dist/ui/components/Table/TableActions/TableActions.d.ts +0 -1
- package/dist/ui/components/Table/TableFilters/TableFilters.d.ts +0 -1
- package/dist/ui/components/Table/TablePagination/TablePagination.d.ts +0 -1
- package/dist/ui/components/TimePicker/TimePicker.d.ts +0 -1
- package/dist/ui/components/Timeline/Timeline.d.ts +0 -1
- package/dist/ui/components/index.d.ts +2 -0
- package/dist/ui/primitives/Checkbox/Checkbox.d.ts +0 -1
- package/dist/ui/primitives/Chip/Chip.d.ts +21 -0
- package/dist/ui/primitives/ErrorMessage/ErrorMessage.d.ts +0 -1
- package/dist/ui/primitives/Input/Input.d.ts +0 -1
- package/dist/ui/primitives/Label/Label.d.ts +0 -1
- package/dist/ui/primitives/NavLink/NavLink.d.ts +1 -1
- package/dist/ui/primitives/Radio/Radio.d.ts +0 -1
- package/dist/ui/primitives/Select/Select.d.ts +0 -1
- package/dist/ui/primitives/Skeleton/Skeleton.d.ts +0 -1
- package/dist/ui/primitives/Slider/Slider.d.ts +0 -1
- package/dist/ui/primitives/Switch/Switch.d.ts +0 -1
- package/dist/ui/primitives/Tooltip/Tooltip.d.ts +0 -1
- package/dist/ui/primitives/index.d.ts +2 -0
- package/dist/ui/providers/DialogContext.d.ts +8 -0
- package/package.json +7 -7
|
@@ -1,105 +1,107 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
for (var
|
|
8
|
-
|
|
9
|
-
if (
|
|
10
|
-
for (var
|
|
11
|
-
|
|
2
|
+
var D = Object.defineProperty, E = Object.defineProperties;
|
|
3
|
+
var G = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var I = Object.getOwnPropertySymbols;
|
|
5
|
+
var H = Object.prototype.hasOwnProperty, J = Object.prototype.propertyIsEnumerable;
|
|
6
|
+
var L = (t, l, c) => l in t ? D(t, l, { enumerable: !0, configurable: !0, writable: !0, value: c }) : t[l] = c, p = (t, l) => {
|
|
7
|
+
for (var c in l || (l = {}))
|
|
8
|
+
H.call(l, c) && L(t, c, l[c]);
|
|
9
|
+
if (I)
|
|
10
|
+
for (var c of I(l))
|
|
11
|
+
J.call(l, c) && L(t, c, l[c]);
|
|
12
12
|
return t;
|
|
13
|
-
},
|
|
13
|
+
}, N = (t, l) => E(t, G(l));
|
|
14
14
|
import { jsxs as n, jsx as r } from "react/jsx-runtime";
|
|
15
|
-
import { useState as
|
|
16
|
-
import { Check as
|
|
17
|
-
import { getSpacingClass as
|
|
18
|
-
import { getRadiusClass as
|
|
19
|
-
import { getAnimationClass as
|
|
20
|
-
import { Button as
|
|
21
|
-
import
|
|
22
|
-
function
|
|
15
|
+
import { useState as K } from "react";
|
|
16
|
+
import { Check as M, AlertCircle as O } from "lucide-react";
|
|
17
|
+
import { getSpacingClass as a } from "../../tokens/spacing.js";
|
|
18
|
+
import { getRadiusClass as $ } from "../../tokens/radius.js";
|
|
19
|
+
import { getAnimationClass as z } from "../../tokens/animations.js";
|
|
20
|
+
import { Button as x } from "../../primitives/Button/Button.js";
|
|
21
|
+
import Q from "../../primitives/Separator/Separator.js";
|
|
22
|
+
function ee({
|
|
23
23
|
steps: t,
|
|
24
|
-
currentStep:
|
|
25
|
-
defaultCurrentStep:
|
|
26
|
-
onStepChange:
|
|
27
|
-
onComplete:
|
|
28
|
-
allowNavigation:
|
|
29
|
-
showStepNumbers:
|
|
30
|
-
orientation:
|
|
24
|
+
currentStep: l,
|
|
25
|
+
defaultCurrentStep: c = 0,
|
|
26
|
+
onStepChange: m,
|
|
27
|
+
onComplete: v,
|
|
28
|
+
allowNavigation: b = !0,
|
|
29
|
+
showStepNumbers: F = !0,
|
|
30
|
+
orientation: R = "horizontal",
|
|
31
31
|
className: y = ""
|
|
32
32
|
}) {
|
|
33
|
-
const [
|
|
33
|
+
const [C, g] = K(c), u = l !== void 0, d = u ? l : C, k = (e) => e < d ? "completed" : e === d ? "active" : "pending", j = () => {
|
|
34
34
|
if (d < t.length - 1) {
|
|
35
35
|
const e = d + 1;
|
|
36
|
-
|
|
36
|
+
u || g(e), m == null || m(e);
|
|
37
37
|
} else
|
|
38
|
-
|
|
39
|
-
},
|
|
38
|
+
v == null || v();
|
|
39
|
+
}, A = () => {
|
|
40
40
|
if (d > 0) {
|
|
41
41
|
const e = d - 1;
|
|
42
|
-
|
|
42
|
+
u || g(e), m == null || m(e);
|
|
43
43
|
}
|
|
44
|
-
},
|
|
45
|
-
|
|
46
|
-
},
|
|
47
|
-
return
|
|
48
|
-
/* @__PURE__ */ r("div", { className: "flex flex-col", children: t.map((e,
|
|
49
|
-
const
|
|
44
|
+
}, h = (e) => {
|
|
45
|
+
b && (t[e].disabled || (u || g(e), m == null || m(e)));
|
|
46
|
+
}, o = t[d], w = d === 0, P = d === t.length - 1, q = (e, i, s) => `Step ${i + 1}${e.title ? `: ${e.title}` : ""}${s === "error" ? " (error)" : ""}`, B = (e, i) => e === "completed" ? /* @__PURE__ */ r(M, { className: "h-5 w-5" }) : e === "error" ? /* @__PURE__ */ r(O, { className: "h-5 w-5", "aria-hidden": "true" }) : F ? i + 1 : null;
|
|
47
|
+
return R === "vertical" ? /* @__PURE__ */ n("div", { className: `flex ${a("base", "gap")} ${y}`, children: [
|
|
48
|
+
/* @__PURE__ */ r("div", { className: "flex flex-col", children: t.map((e, i) => {
|
|
49
|
+
const s = e.status || k(i), f = i === d;
|
|
50
50
|
return /* @__PURE__ */ n(
|
|
51
51
|
"div",
|
|
52
52
|
{
|
|
53
|
-
className: `flex items-start ${
|
|
53
|
+
className: `flex items-start ${a("md", "gap")}`,
|
|
54
54
|
children: [
|
|
55
55
|
/* @__PURE__ */ n("div", { className: "flex flex-col items-center", children: [
|
|
56
56
|
/* @__PURE__ */ r(
|
|
57
57
|
"button",
|
|
58
|
-
|
|
58
|
+
N(p({
|
|
59
59
|
type: "button",
|
|
60
|
-
onClick: () =>
|
|
61
|
-
disabled: !
|
|
62
|
-
"aria-
|
|
63
|
-
|
|
60
|
+
onClick: () => h(i),
|
|
61
|
+
disabled: !b || e.disabled,
|
|
62
|
+
"aria-current": f ? "step" : void 0,
|
|
63
|
+
"aria-label": q(e, i, s)
|
|
64
|
+
}, s === "pending" ? { "data-marker": "pending" } : {}), {
|
|
64
65
|
className: `
|
|
65
66
|
flex
|
|
66
67
|
items-center
|
|
67
68
|
justify-center
|
|
68
69
|
w-10
|
|
69
70
|
h-10
|
|
70
|
-
${
|
|
71
|
+
${$("full")}
|
|
71
72
|
border-2
|
|
72
|
-
${
|
|
73
|
-
${
|
|
74
|
-
${!
|
|
73
|
+
${z("base")}
|
|
74
|
+
${s === "completed" ? "bg-success border-success text-fg-inverse" : s === "active" ? "bg-surface-brand-strong border-line-brand text-fg-inverse" : s === "error" ? "bg-error border-error text-fg-inverse" : "bg-surface-base border-line-emphasis text-fg-quaternary"}
|
|
75
|
+
${!b || e.disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer"}
|
|
75
76
|
`,
|
|
76
|
-
children:
|
|
77
|
+
children: B(s, i)
|
|
77
78
|
})
|
|
78
79
|
),
|
|
79
|
-
|
|
80
|
+
i < t.length - 1 && /* @__PURE__ */ r(
|
|
80
81
|
"div",
|
|
81
82
|
{
|
|
82
83
|
className: `
|
|
83
84
|
w-0.5
|
|
84
85
|
h-12
|
|
85
|
-
${
|
|
86
|
-
${
|
|
86
|
+
${a("sm", "mt")}
|
|
87
|
+
${s === "completed" ? "bg-success" : "bg-line-emphasis"}
|
|
87
88
|
`
|
|
88
89
|
}
|
|
89
90
|
)
|
|
90
91
|
] }),
|
|
91
|
-
/* @__PURE__ */ n("div", { className: `flex-1 ${
|
|
92
|
+
/* @__PURE__ */ n("div", { className: `flex-1 ${a("xl", "pb")}`, children: [
|
|
92
93
|
/* @__PURE__ */ r(
|
|
93
94
|
"button",
|
|
94
95
|
{
|
|
95
96
|
type: "button",
|
|
96
|
-
onClick: () =>
|
|
97
|
-
disabled: !
|
|
97
|
+
onClick: () => h(i),
|
|
98
|
+
disabled: !b || e.disabled,
|
|
99
|
+
id: `${e.id}-title`,
|
|
98
100
|
className: `
|
|
99
101
|
text-left
|
|
100
|
-
${
|
|
101
|
-
${
|
|
102
|
-
${!
|
|
102
|
+
${f ? "font-semibold" : "font-medium"}
|
|
103
|
+
${s === "active" ? "text-fg-brand-emphasis" : "text-fg-secondary"}
|
|
104
|
+
${!b || e.disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer"}
|
|
103
105
|
`,
|
|
104
106
|
children: e.title
|
|
105
107
|
}
|
|
@@ -107,7 +109,7 @@ function Z({
|
|
|
107
109
|
e.description && /* @__PURE__ */ r(
|
|
108
110
|
"p",
|
|
109
111
|
{
|
|
110
|
-
className: `text-sm text-fg-tertiary ${
|
|
112
|
+
className: `text-sm text-fg-tertiary ${a("xs", "mt")}`,
|
|
111
113
|
children: e.description
|
|
112
114
|
}
|
|
113
115
|
)
|
|
@@ -121,75 +123,79 @@ function Z({
|
|
|
121
123
|
/* @__PURE__ */ r(
|
|
122
124
|
"div",
|
|
123
125
|
{
|
|
126
|
+
role: "region",
|
|
127
|
+
"aria-labelledby": o ? `${o.id}-title` : void 0,
|
|
124
128
|
className: `
|
|
125
|
-
${
|
|
129
|
+
${a("lg", "p")}
|
|
126
130
|
border
|
|
127
131
|
border-line-default
|
|
128
|
-
${
|
|
132
|
+
${$("lg")}
|
|
129
133
|
bg-surface-base
|
|
130
134
|
`,
|
|
131
|
-
children:
|
|
135
|
+
children: o == null ? void 0 : o.content
|
|
132
136
|
}
|
|
133
137
|
),
|
|
134
138
|
/* @__PURE__ */ n(
|
|
135
139
|
"div",
|
|
136
140
|
{
|
|
137
|
-
className: `flex justify-between ${
|
|
141
|
+
className: `flex justify-between ${a("base", "mt")} ${a("base", "gap")}`,
|
|
138
142
|
children: [
|
|
139
143
|
/* @__PURE__ */ r(
|
|
140
|
-
|
|
144
|
+
x,
|
|
141
145
|
{
|
|
142
146
|
variant: "outline",
|
|
143
|
-
onClick:
|
|
144
|
-
disabled:
|
|
147
|
+
onClick: A,
|
|
148
|
+
disabled: w,
|
|
145
149
|
children: "Previous"
|
|
146
150
|
}
|
|
147
151
|
),
|
|
148
|
-
/* @__PURE__ */ r(
|
|
152
|
+
/* @__PURE__ */ r(x, { variant: "primary", onClick: j, children: P ? "Complete" : "Next" })
|
|
149
153
|
]
|
|
150
154
|
}
|
|
151
155
|
)
|
|
152
156
|
] })
|
|
153
|
-
] }) : /* @__PURE__ */ n("div", { className: `${
|
|
154
|
-
/* @__PURE__ */ r("div", { className: "flex items-center", children: t.map((e,
|
|
155
|
-
const
|
|
157
|
+
] }) : /* @__PURE__ */ n("div", { className: `${a("lg", "space-y")} ${y}`, children: [
|
|
158
|
+
/* @__PURE__ */ r("div", { className: "flex items-center", children: t.map((e, i) => {
|
|
159
|
+
const s = e.status || k(i), f = i === d;
|
|
156
160
|
return /* @__PURE__ */ n("div", { className: "flex items-center flex-1", children: [
|
|
157
161
|
/* @__PURE__ */ n("div", { className: "flex flex-col items-center flex-1", children: [
|
|
158
162
|
/* @__PURE__ */ r(
|
|
159
163
|
"button",
|
|
160
|
-
|
|
164
|
+
N(p({
|
|
161
165
|
type: "button",
|
|
162
|
-
onClick: () =>
|
|
163
|
-
disabled: !
|
|
164
|
-
"aria-
|
|
165
|
-
|
|
166
|
+
onClick: () => h(i),
|
|
167
|
+
disabled: !b || e.disabled,
|
|
168
|
+
"aria-current": f ? "step" : void 0,
|
|
169
|
+
"aria-label": q(e, i, s)
|
|
170
|
+
}, s === "pending" ? { "data-marker": "pending" } : {}), {
|
|
166
171
|
className: `
|
|
167
172
|
flex
|
|
168
173
|
items-center
|
|
169
174
|
justify-center
|
|
170
175
|
w-10
|
|
171
176
|
h-10
|
|
172
|
-
${
|
|
177
|
+
${$("full")}
|
|
173
178
|
border-2
|
|
174
|
-
${
|
|
175
|
-
${
|
|
176
|
-
${!
|
|
179
|
+
${z("base")}
|
|
180
|
+
${s === "completed" ? "bg-success border-success text-fg-inverse" : s === "active" ? "bg-surface-brand-strong border-line-brand text-fg-inverse" : s === "error" ? "bg-error border-error text-fg-inverse" : "bg-surface-base border-line-emphasis text-fg-quaternary"}
|
|
181
|
+
${!b || e.disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer"}
|
|
177
182
|
`,
|
|
178
|
-
children:
|
|
183
|
+
children: B(s, i)
|
|
179
184
|
})
|
|
180
185
|
),
|
|
181
186
|
/* @__PURE__ */ n(
|
|
182
187
|
"div",
|
|
183
188
|
{
|
|
184
|
-
className: `${
|
|
189
|
+
className: `${a("sm", "mt")} text-center ${a("sm", "px")}`,
|
|
185
190
|
children: [
|
|
186
191
|
/* @__PURE__ */ r(
|
|
187
192
|
"p",
|
|
188
193
|
{
|
|
194
|
+
id: `${e.id}-title`,
|
|
189
195
|
className: `
|
|
190
196
|
text-sm
|
|
191
197
|
font-medium
|
|
192
|
-
${
|
|
198
|
+
${f ? "text-fg-brand-emphasis" : "text-fg-secondary"}
|
|
193
199
|
`,
|
|
194
200
|
children: e.title
|
|
195
201
|
}
|
|
@@ -197,7 +203,7 @@ function Z({
|
|
|
197
203
|
e.description && /* @__PURE__ */ r(
|
|
198
204
|
"p",
|
|
199
205
|
{
|
|
200
|
-
className: `text-xs text-fg-tertiary ${
|
|
206
|
+
className: `text-xs text-fg-tertiary ${a("xs", "mt")}`,
|
|
201
207
|
children: e.description
|
|
202
208
|
}
|
|
203
209
|
)
|
|
@@ -205,11 +211,11 @@ function Z({
|
|
|
205
211
|
}
|
|
206
212
|
)
|
|
207
213
|
] }),
|
|
208
|
-
|
|
209
|
-
|
|
214
|
+
i < t.length - 1 && /* @__PURE__ */ r("div", { className: `flex-1 ${a("base", "mx")}`, children: /* @__PURE__ */ r(
|
|
215
|
+
Q,
|
|
210
216
|
{
|
|
211
217
|
className: `
|
|
212
|
-
${
|
|
218
|
+
${s === "completed" ? "border-success" : "border-line-emphasis"}
|
|
213
219
|
`
|
|
214
220
|
}
|
|
215
221
|
) })
|
|
@@ -218,31 +224,33 @@ function Z({
|
|
|
218
224
|
/* @__PURE__ */ r(
|
|
219
225
|
"div",
|
|
220
226
|
{
|
|
227
|
+
role: "region",
|
|
228
|
+
"aria-labelledby": o ? `${o.id}-title` : void 0,
|
|
221
229
|
className: `
|
|
222
|
-
${
|
|
230
|
+
${a("lg", "p")}
|
|
223
231
|
border
|
|
224
232
|
border-line-default
|
|
225
|
-
${
|
|
233
|
+
${$("lg")}
|
|
226
234
|
bg-surface-base
|
|
227
235
|
`,
|
|
228
|
-
children:
|
|
236
|
+
children: o == null ? void 0 : o.content
|
|
229
237
|
}
|
|
230
238
|
),
|
|
231
|
-
/* @__PURE__ */ n("div", { className: `flex justify-between ${
|
|
239
|
+
/* @__PURE__ */ n("div", { className: `flex justify-between ${a("base", "gap")}`, children: [
|
|
232
240
|
/* @__PURE__ */ r(
|
|
233
|
-
|
|
241
|
+
x,
|
|
234
242
|
{
|
|
235
243
|
variant: "outline",
|
|
236
|
-
onClick:
|
|
237
|
-
disabled:
|
|
244
|
+
onClick: A,
|
|
245
|
+
disabled: w,
|
|
238
246
|
children: "Previous"
|
|
239
247
|
}
|
|
240
248
|
),
|
|
241
|
-
/* @__PURE__ */ r(
|
|
249
|
+
/* @__PURE__ */ r(x, { variant: "primary", onClick: j, children: P ? "Complete" : "Next" })
|
|
242
250
|
] })
|
|
243
251
|
] });
|
|
244
252
|
}
|
|
245
253
|
export {
|
|
246
|
-
|
|
254
|
+
ee as default
|
|
247
255
|
};
|
|
248
256
|
//# sourceMappingURL=Stepper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stepper.js","sources":["../../../../../src/ui/components/Stepper/Stepper.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, type ReactNode } from \"react\";\nimport { Check } from \"lucide-react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { getRadiusClass } from \"../../tokens/radius\";\nimport { getAnimationClass } from \"../../tokens/animations\";\nimport Button from \"../../primitives/Button/Button\";\nimport Separator from \"../../primitives/Separator/Separator\";\n\nexport type StepperStatus = \"pending\" | \"active\" | \"completed\" | \"error\";\n\nexport interface StepperStep {\n id: string;\n title: string;\n description?: string;\n content: ReactNode;\n status?: StepperStatus;\n disabled?: boolean;\n}\n\nexport interface StepperProps {\n steps: StepperStep[];\n currentStep?: number;\n defaultCurrentStep?: number;\n onStepChange?: (stepIndex: number) => void;\n onComplete?: () => void;\n allowNavigation?: boolean;\n showStepNumbers?: boolean;\n orientation?: \"horizontal\" | \"vertical\";\n className?: string;\n}\n\n/**\n * Stepper Component\n *\n * A multi-step wizard component for guided workflows.\n * Supports validation, navigation, and completion callbacks.\n * Follows Atomic Design principles as an Organism component.\n *\n * @example\n * ```tsx\n * <Stepper\n * steps={[\n * { id: '1', title: 'Step 1', content: <div>Content 1</div> },\n * { id: '2', title: 'Step 2', content: <div>Content 2</div> },\n * ]}\n * onComplete={() => console.log('Completed!')}\n * />\n * ```\n */\nexport default function Stepper({\n steps,\n currentStep: controlledCurrentStep,\n defaultCurrentStep = 0,\n onStepChange,\n onComplete,\n allowNavigation = true,\n showStepNumbers = true,\n orientation = \"horizontal\",\n className = \"\",\n}: StepperProps) {\n const [internalCurrentStep, setInternalCurrentStep] =\n useState(defaultCurrentStep);\n\n const isControlled = controlledCurrentStep !== undefined;\n const currentStepIndex = isControlled\n ? controlledCurrentStep\n : internalCurrentStep;\n\n const getStepStatus = (index: number): StepperStatus => {\n if (index < currentStepIndex) return \"completed\";\n if (index === currentStepIndex) return \"active\";\n return \"pending\";\n };\n\n const handleNext = () => {\n if (currentStepIndex < steps.length - 1) {\n const nextStep = currentStepIndex + 1;\n if (!isControlled) {\n setInternalCurrentStep(nextStep);\n }\n onStepChange?.(nextStep);\n } else {\n onComplete?.();\n }\n };\n\n const handlePrevious = () => {\n if (currentStepIndex > 0) {\n const prevStep = currentStepIndex - 1;\n if (!isControlled) {\n setInternalCurrentStep(prevStep);\n }\n onStepChange?.(prevStep);\n }\n };\n\n const handleStepClick = (index: number) => {\n if (!allowNavigation) return;\n if (steps[index].disabled) return;\n\n if (!isControlled) {\n setInternalCurrentStep(index);\n }\n onStepChange?.(index);\n };\n\n const currentStep = steps[currentStepIndex];\n const isFirstStep = currentStepIndex === 0;\n const isLastStep = currentStepIndex === steps.length - 1;\n\n if (orientation === \"vertical\") {\n return (\n <div className={`flex ${getSpacingClass(\"base\", \"gap\")} ${className}`}>\n {/* Steps List */}\n <div className=\"flex flex-col\">\n {steps.map((step, index) => {\n const status = step.status || getStepStatus(index);\n const isActive = index === currentStepIndex;\n\n return (\n <div\n key={step.id}\n className={`flex items-start ${getSpacingClass(\"md\", \"gap\")}`}\n >\n {/* Step Indicator */}\n <div className=\"flex flex-col items-center\">\n <button\n type=\"button\"\n onClick={() => handleStepClick(index)}\n disabled={!allowNavigation || step.disabled}\n aria-label={\n step.title\n ? `Step ${index + 1}: ${step.title}`\n : `Step ${index + 1}`\n }\n // data-marker=\"pending\" — see .claude/rules/colors.md\n // \"fg-quaternary: AA-by-construction exception\". Anchors\n // the directed a11y suppression to the pending-marker\n // ROLE, not to style classes; survives a future restyle\n // of the bubble.\n {...(status === \"pending\"\n ? { \"data-marker\": \"pending\" }\n : {})}\n className={`\n flex\n items-center\n justify-center\n w-10\n h-10\n ${getRadiusClass(\"full\")}\n border-2\n ${getAnimationClass(\"base\")}\n ${\n status === \"completed\"\n ? `${\"bg-success\"} ${\"border-success\"} text-fg-inverse`\n : status === \"active\"\n ? `${\"bg-surface-brand-strong\"} ${\"border-line-brand\"} text-fg-inverse`\n : status === \"error\"\n ? `${\"bg-error\"} ${\"border-error\"} text-fg-inverse`\n : \"bg-surface-base border-line-emphasis text-fg-quaternary\"\n }\n ${!allowNavigation || step.disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer\"}\n `}\n >\n {status === \"completed\" ? (\n <Check className=\"h-5 w-5\" />\n ) : showStepNumbers ? (\n index + 1\n ) : null}\n </button>\n {index < steps.length - 1 && (\n <div\n className={`\n w-0.5\n h-12\n ${getSpacingClass(\"sm\", \"mt\")}\n ${status === \"completed\" ? \"bg-success\" : \"bg-line-emphasis\"}\n `}\n />\n )}\n </div>\n\n {/* Step Content */}\n <div className={`flex-1 ${getSpacingClass(\"xl\", \"pb\")}`}>\n <button\n type=\"button\"\n onClick={() => handleStepClick(index)}\n disabled={!allowNavigation || step.disabled}\n className={`\n text-left\n ${isActive ? \"font-semibold\" : \"font-medium\"}\n ${status === \"active\" ? \"text-fg-brand-emphasis\" : \"text-fg-secondary\"}\n ${!allowNavigation || step.disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer\"}\n `}\n >\n {step.title}\n </button>\n {step.description && (\n <p\n className={`text-sm text-fg-tertiary ${getSpacingClass(\"xs\", \"mt\")}`}\n >\n {step.description}\n </p>\n )}\n </div>\n </div>\n );\n })}\n </div>\n\n {/* Step Content */}\n <div className=\"flex-1\">\n <div\n className={`\n ${getSpacingClass(\"lg\", \"p\")}\n border\n border-line-default\n ${getRadiusClass(\"lg\")}\n bg-surface-base\n `}\n >\n {currentStep.content}\n </div>\n\n {/* Navigation */}\n <div\n className={`flex justify-between ${getSpacingClass(\"base\", \"mt\")} ${getSpacingClass(\"base\", \"gap\")}`}\n >\n <Button\n variant=\"outline\"\n onClick={handlePrevious}\n disabled={isFirstStep}\n >\n Previous\n </Button>\n <Button variant=\"primary\" onClick={handleNext}>\n {isLastStep ? \"Complete\" : \"Next\"}\n </Button>\n </div>\n </div>\n </div>\n );\n }\n\n // Horizontal orientation\n return (\n <div className={`${getSpacingClass(\"lg\", \"space-y\")} ${className}`}>\n {/* Steps List */}\n <div className=\"flex items-center\">\n {steps.map((step, index) => {\n const status = step.status || getStepStatus(index);\n const isActive = index === currentStepIndex;\n\n return (\n <div key={step.id} className=\"flex items-center flex-1\">\n <div className=\"flex flex-col items-center flex-1\">\n <button\n type=\"button\"\n onClick={() => handleStepClick(index)}\n disabled={!allowNavigation || step.disabled}\n aria-label={\n step.title\n ? `Step ${index + 1}: ${step.title}`\n : `Step ${index + 1}`\n }\n // data-marker=\"pending\" — see .claude/rules/colors.md\n // \"fg-quaternary: AA-by-construction exception\".\n {...(status === \"pending\"\n ? { \"data-marker\": \"pending\" }\n : {})}\n className={`\n flex\n items-center\n justify-center\n w-10\n h-10\n ${getRadiusClass(\"full\")}\n border-2\n ${getAnimationClass(\"base\")}\n ${\n status === \"completed\"\n ? `${\"bg-success\"} ${\"border-success\"} text-fg-inverse`\n : status === \"active\"\n ? `${\"bg-surface-brand-strong\"} ${\"border-line-brand\"} text-fg-inverse`\n : status === \"error\"\n ? `${\"bg-error\"} ${\"border-error\"} text-fg-inverse`\n : \"bg-surface-base border-line-emphasis text-fg-quaternary\"\n }\n ${!allowNavigation || step.disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer\"}\n `}\n >\n {status === \"completed\" ? (\n <Check className=\"h-5 w-5\" />\n ) : showStepNumbers ? (\n index + 1\n ) : null}\n </button>\n <div\n className={`${getSpacingClass(\"sm\", \"mt\")} text-center ${getSpacingClass(\"sm\", \"px\")}`}\n >\n <p\n className={`\n text-sm\n font-medium\n ${isActive ? \"text-fg-brand-emphasis\" : \"text-fg-secondary\"}\n `}\n >\n {step.title}\n </p>\n {step.description && (\n <p\n className={`text-xs text-fg-tertiary ${getSpacingClass(\"xs\", \"mt\")}`}\n >\n {step.description}\n </p>\n )}\n </div>\n </div>\n {index < steps.length - 1 && (\n <div className={`flex-1 ${getSpacingClass(\"base\", \"mx\")}`}>\n <Separator\n className={`\n ${status === \"completed\" ? \"border-success\" : \"border-line-emphasis\"}\n `}\n />\n </div>\n )}\n </div>\n );\n })}\n </div>\n\n {/* Step Content */}\n <div\n className={`\n ${getSpacingClass(\"lg\", \"p\")}\n border\n border-line-default\n ${getRadiusClass(\"lg\")}\n bg-surface-base\n `}\n >\n {currentStep.content}\n </div>\n\n {/* Navigation */}\n <div className={`flex justify-between ${getSpacingClass(\"base\", \"gap\")}`}>\n <Button\n variant=\"outline\"\n onClick={handlePrevious}\n disabled={isFirstStep}\n >\n Previous\n </Button>\n <Button variant=\"primary\" onClick={handleNext}>\n {isLastStep ? \"Complete\" : \"Next\"}\n </Button>\n </div>\n </div>\n );\n}\n"],"names":["Stepper","steps","controlledCurrentStep","defaultCurrentStep","onStepChange","onComplete","allowNavigation","showStepNumbers","orientation","className","internalCurrentStep","setInternalCurrentStep","useState","isControlled","currentStepIndex","getStepStatus","index","handleNext","nextStep","handlePrevious","prevStep","handleStepClick","currentStep","isFirstStep","isLastStep","jsxs","getSpacingClass","jsx","step","status","isActive","__spreadProps","__spreadValues","getRadiusClass","getAnimationClass","Check","Button","Separator"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Stepper.js","sources":["../../../../../src/ui/components/Stepper/Stepper.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, type ReactNode } from \"react\";\nimport { Check, AlertCircle } from \"lucide-react\";\nimport { getSpacingClass } from \"../../tokens/spacing\";\nimport { getRadiusClass } from \"../../tokens/radius\";\nimport { getAnimationClass } from \"../../tokens/animations\";\nimport Button from \"../../primitives/Button/Button\";\nimport Separator from \"../../primitives/Separator/Separator\";\n\nexport type StepperStatus = \"pending\" | \"active\" | \"completed\" | \"error\";\n\nexport interface StepperStep {\n id: string;\n title: string;\n description?: string;\n content: ReactNode;\n status?: StepperStatus;\n disabled?: boolean;\n}\n\nexport interface StepperProps {\n steps: StepperStep[];\n currentStep?: number;\n defaultCurrentStep?: number;\n onStepChange?: (stepIndex: number) => void;\n onComplete?: () => void;\n allowNavigation?: boolean;\n showStepNumbers?: boolean;\n orientation?: \"horizontal\" | \"vertical\";\n className?: string;\n}\n\n/**\n * Stepper Component\n *\n * A multi-step wizard component for guided workflows.\n * Supports validation, navigation, and completion callbacks.\n *\n * @example\n * ```tsx\n * <Stepper\n * steps={[\n * { id: '1', title: 'Step 1', content: <div>Content 1</div> },\n * { id: '2', title: 'Step 2', content: <div>Content 2</div> },\n * ]}\n * onComplete={() => console.log('Completed!')}\n * />\n * ```\n */\nexport default function Stepper({\n steps,\n currentStep: controlledCurrentStep,\n defaultCurrentStep = 0,\n onStepChange,\n onComplete,\n allowNavigation = true,\n showStepNumbers = true,\n orientation = \"horizontal\",\n className = \"\",\n}: StepperProps) {\n const [internalCurrentStep, setInternalCurrentStep] =\n useState(defaultCurrentStep);\n\n const isControlled = controlledCurrentStep !== undefined;\n const currentStepIndex = isControlled\n ? controlledCurrentStep\n : internalCurrentStep;\n\n const getStepStatus = (index: number): StepperStatus => {\n if (index < currentStepIndex) return \"completed\";\n if (index === currentStepIndex) return \"active\";\n return \"pending\";\n };\n\n const handleNext = () => {\n if (currentStepIndex < steps.length - 1) {\n const nextStep = currentStepIndex + 1;\n if (!isControlled) {\n setInternalCurrentStep(nextStep);\n }\n onStepChange?.(nextStep);\n } else {\n onComplete?.();\n }\n };\n\n const handlePrevious = () => {\n if (currentStepIndex > 0) {\n const prevStep = currentStepIndex - 1;\n if (!isControlled) {\n setInternalCurrentStep(prevStep);\n }\n onStepChange?.(prevStep);\n }\n };\n\n const handleStepClick = (index: number) => {\n if (!allowNavigation) return;\n if (steps[index].disabled) return;\n\n if (!isControlled) {\n setInternalCurrentStep(index);\n }\n onStepChange?.(index);\n };\n\n const currentStep = steps[currentStepIndex];\n const isFirstStep = currentStepIndex === 0;\n const isLastStep = currentStepIndex === steps.length - 1;\n\n // Accessible name carries error status so it is perceivable to screen\n // readers (the bubble glyph is decorative; aria-label wins on a button).\n // Error previously had neither glyph nor text — only red color (WCAG\n // 1.4.1). Completed already carries the Check glyph, so its name stays\n // unchanged. Active/current is conveyed via aria-current=\"step\".\n const stepAriaLabel = (\n step: StepperStep,\n index: number,\n status: StepperStatus,\n ): string =>\n `Step ${index + 1}${step.title ? `: ${step.title}` : \"\"}${\n status === \"error\" ? \" (error)\" : \"\"\n }`;\n\n // Non-color status signal in the bubble: completed → check, error →\n // alert glyph (the error status previously changed only the bubble\n // color, with no glyph and no text — WCAG 1.4.1 failure).\n const renderBubbleContent = (\n status: StepperStatus,\n index: number,\n ): ReactNode =>\n status === \"completed\" ? (\n <Check className=\"h-5 w-5\" />\n ) : status === \"error\" ? (\n <AlertCircle className=\"h-5 w-5\" aria-hidden=\"true\" />\n ) : showStepNumbers ? (\n index + 1\n ) : null;\n\n if (orientation === \"vertical\") {\n return (\n <div className={`flex ${getSpacingClass(\"base\", \"gap\")} ${className}`}>\n {/* Steps List */}\n <div className=\"flex flex-col\">\n {steps.map((step, index) => {\n const status = step.status || getStepStatus(index);\n const isActive = index === currentStepIndex;\n\n return (\n <div\n key={step.id}\n className={`flex items-start ${getSpacingClass(\"md\", \"gap\")}`}\n >\n {/* Step Indicator */}\n <div className=\"flex flex-col items-center\">\n <button\n type=\"button\"\n onClick={() => handleStepClick(index)}\n disabled={!allowNavigation || step.disabled}\n aria-current={isActive ? \"step\" : undefined}\n aria-label={stepAriaLabel(step, index, status)}\n // data-marker=\"pending\" — see .claude/rules/colors.md\n // \"fg-quaternary: AA-by-construction exception\". Anchors\n // the directed a11y suppression to the pending-marker\n // ROLE, not to style classes; survives a future restyle\n // of the bubble.\n {...(status === \"pending\"\n ? { \"data-marker\": \"pending\" }\n : {})}\n className={`\n flex\n items-center\n justify-center\n w-10\n h-10\n ${getRadiusClass(\"full\")}\n border-2\n ${getAnimationClass(\"base\")}\n ${\n status === \"completed\"\n ? `${\"bg-success\"} ${\"border-success\"} text-fg-inverse`\n : status === \"active\"\n ? `${\"bg-surface-brand-strong\"} ${\"border-line-brand\"} text-fg-inverse`\n : status === \"error\"\n ? `${\"bg-error\"} ${\"border-error\"} text-fg-inverse`\n : \"bg-surface-base border-line-emphasis text-fg-quaternary\"\n }\n ${!allowNavigation || step.disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer\"}\n `}\n >\n {renderBubbleContent(status, index)}\n </button>\n {index < steps.length - 1 && (\n <div\n className={`\n w-0.5\n h-12\n ${getSpacingClass(\"sm\", \"mt\")}\n ${status === \"completed\" ? \"bg-success\" : \"bg-line-emphasis\"}\n `}\n />\n )}\n </div>\n\n {/* Step Content */}\n <div className={`flex-1 ${getSpacingClass(\"xl\", \"pb\")}`}>\n <button\n type=\"button\"\n onClick={() => handleStepClick(index)}\n disabled={!allowNavigation || step.disabled}\n id={`${step.id}-title`}\n className={`\n text-left\n ${isActive ? \"font-semibold\" : \"font-medium\"}\n ${status === \"active\" ? \"text-fg-brand-emphasis\" : \"text-fg-secondary\"}\n ${!allowNavigation || step.disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer\"}\n `}\n >\n {step.title}\n </button>\n {step.description && (\n <p\n className={`text-sm text-fg-tertiary ${getSpacingClass(\"xs\", \"mt\")}`}\n >\n {step.description}\n </p>\n )}\n </div>\n </div>\n );\n })}\n </div>\n\n {/* Step Content */}\n <div className=\"flex-1\">\n <div\n role=\"region\"\n aria-labelledby={\n currentStep ? `${currentStep.id}-title` : undefined\n }\n className={`\n ${getSpacingClass(\"lg\", \"p\")}\n border\n border-line-default\n ${getRadiusClass(\"lg\")}\n bg-surface-base\n `}\n >\n {currentStep?.content}\n </div>\n\n {/* Navigation */}\n <div\n className={`flex justify-between ${getSpacingClass(\"base\", \"mt\")} ${getSpacingClass(\"base\", \"gap\")}`}\n >\n <Button\n variant=\"outline\"\n onClick={handlePrevious}\n disabled={isFirstStep}\n >\n Previous\n </Button>\n <Button variant=\"primary\" onClick={handleNext}>\n {isLastStep ? \"Complete\" : \"Next\"}\n </Button>\n </div>\n </div>\n </div>\n );\n }\n\n // Horizontal orientation\n return (\n <div className={`${getSpacingClass(\"lg\", \"space-y\")} ${className}`}>\n {/* Steps List */}\n <div className=\"flex items-center\">\n {steps.map((step, index) => {\n const status = step.status || getStepStatus(index);\n const isActive = index === currentStepIndex;\n\n return (\n <div key={step.id} className=\"flex items-center flex-1\">\n <div className=\"flex flex-col items-center flex-1\">\n <button\n type=\"button\"\n onClick={() => handleStepClick(index)}\n disabled={!allowNavigation || step.disabled}\n aria-current={isActive ? \"step\" : undefined}\n aria-label={stepAriaLabel(step, index, status)}\n // data-marker=\"pending\" — see .claude/rules/colors.md\n // \"fg-quaternary: AA-by-construction exception\".\n {...(status === \"pending\"\n ? { \"data-marker\": \"pending\" }\n : {})}\n className={`\n flex\n items-center\n justify-center\n w-10\n h-10\n ${getRadiusClass(\"full\")}\n border-2\n ${getAnimationClass(\"base\")}\n ${\n status === \"completed\"\n ? `${\"bg-success\"} ${\"border-success\"} text-fg-inverse`\n : status === \"active\"\n ? `${\"bg-surface-brand-strong\"} ${\"border-line-brand\"} text-fg-inverse`\n : status === \"error\"\n ? `${\"bg-error\"} ${\"border-error\"} text-fg-inverse`\n : \"bg-surface-base border-line-emphasis text-fg-quaternary\"\n }\n ${!allowNavigation || step.disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer\"}\n `}\n >\n {renderBubbleContent(status, index)}\n </button>\n <div\n className={`${getSpacingClass(\"sm\", \"mt\")} text-center ${getSpacingClass(\"sm\", \"px\")}`}\n >\n <p\n id={`${step.id}-title`}\n className={`\n text-sm\n font-medium\n ${isActive ? \"text-fg-brand-emphasis\" : \"text-fg-secondary\"}\n `}\n >\n {step.title}\n </p>\n {step.description && (\n <p\n className={`text-xs text-fg-tertiary ${getSpacingClass(\"xs\", \"mt\")}`}\n >\n {step.description}\n </p>\n )}\n </div>\n </div>\n {index < steps.length - 1 && (\n <div className={`flex-1 ${getSpacingClass(\"base\", \"mx\")}`}>\n <Separator\n className={`\n ${status === \"completed\" ? \"border-success\" : \"border-line-emphasis\"}\n `}\n />\n </div>\n )}\n </div>\n );\n })}\n </div>\n\n {/* Step Content */}\n <div\n role=\"region\"\n aria-labelledby={currentStep ? `${currentStep.id}-title` : undefined}\n className={`\n ${getSpacingClass(\"lg\", \"p\")}\n border\n border-line-default\n ${getRadiusClass(\"lg\")}\n bg-surface-base\n `}\n >\n {currentStep?.content}\n </div>\n\n {/* Navigation */}\n <div className={`flex justify-between ${getSpacingClass(\"base\", \"gap\")}`}>\n <Button\n variant=\"outline\"\n onClick={handlePrevious}\n disabled={isFirstStep}\n >\n Previous\n </Button>\n <Button variant=\"primary\" onClick={handleNext}>\n {isLastStep ? \"Complete\" : \"Next\"}\n </Button>\n </div>\n </div>\n );\n}\n"],"names":["Stepper","steps","controlledCurrentStep","defaultCurrentStep","onStepChange","onComplete","allowNavigation","showStepNumbers","orientation","className","internalCurrentStep","setInternalCurrentStep","useState","isControlled","currentStepIndex","getStepStatus","index","handleNext","nextStep","handlePrevious","prevStep","handleStepClick","currentStep","isFirstStep","isLastStep","stepAriaLabel","step","status","renderBubbleContent","jsx","Check","AlertCircle","jsxs","getSpacingClass","isActive","__spreadProps","__spreadValues","getRadiusClass","getAnimationClass","Button","Separator"],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ import R from "./TablePagination.js";
|
|
|
33
33
|
import Z from "./TableEmptyState.js";
|
|
34
34
|
import _ from "./TableActions.js";
|
|
35
35
|
import { getRadiusClass as T } from "../../tokens/radius.js";
|
|
36
|
-
function
|
|
36
|
+
function i(e) {
|
|
37
37
|
const c = e, {
|
|
38
38
|
className: a = "",
|
|
39
39
|
"aria-label": o,
|
|
@@ -42,21 +42,21 @@ function n(e) {
|
|
|
42
42
|
"className",
|
|
43
43
|
"aria-label",
|
|
44
44
|
"aria-labelledby"
|
|
45
|
-
]), m = "children" in e && e.children !== void 0,
|
|
45
|
+
]), m = "children" in e && e.children !== void 0, r = m ? d : ee(
|
|
46
46
|
d
|
|
47
47
|
);
|
|
48
48
|
return m ? /* @__PURE__ */ s(
|
|
49
49
|
"div",
|
|
50
50
|
{
|
|
51
51
|
className: `bg-surface-base shadow ${T("lg")} overflow-hidden ${a}`,
|
|
52
|
-
children: /* @__PURE__ */ s(w, h(f({},
|
|
52
|
+
children: /* @__PURE__ */ s(w, h(f({}, r), { children: e.children }))
|
|
53
53
|
}
|
|
54
54
|
) : /* @__PURE__ */ s(
|
|
55
55
|
"div",
|
|
56
56
|
{
|
|
57
57
|
className: `bg-surface-base shadow ${T("lg")} overflow-hidden ${a}`,
|
|
58
|
-
children: /* @__PURE__ */ C(w, h(f({},
|
|
59
|
-
|
|
58
|
+
children: /* @__PURE__ */ C(w, h(f({}, r), { children: [
|
|
59
|
+
r.filters && r.filters.length > 0 && /* @__PURE__ */ s(z, {}),
|
|
60
60
|
/* @__PURE__ */ s("div", { className: "overflow-x-auto", children: /* @__PURE__ */ C(
|
|
61
61
|
"table",
|
|
62
62
|
{
|
|
@@ -64,8 +64,8 @@ function n(e) {
|
|
|
64
64
|
role: "table",
|
|
65
65
|
"aria-label": o,
|
|
66
66
|
"aria-labelledby": t,
|
|
67
|
-
"aria-rowcount":
|
|
68
|
-
"aria-colcount":
|
|
67
|
+
"aria-rowcount": r.total || r.data.length,
|
|
68
|
+
"aria-colcount": r.columns.length + (r.selectable ? 1 : 0) + (r.actions ? 1 : 0),
|
|
69
69
|
children: [
|
|
70
70
|
/* @__PURE__ */ s(y, {}),
|
|
71
71
|
/* @__PURE__ */ s(P, {})
|
|
@@ -84,20 +84,20 @@ function ee(e) {
|
|
|
84
84
|
loading: t,
|
|
85
85
|
onSort: d,
|
|
86
86
|
sortColumn: m,
|
|
87
|
-
sortDirection:
|
|
87
|
+
sortDirection: r,
|
|
88
88
|
emptyMessage: c,
|
|
89
89
|
emptyStateTitle: F,
|
|
90
90
|
emptyStateMessage: H,
|
|
91
91
|
emptyStateIllustration: N,
|
|
92
92
|
emptyStateAction: x,
|
|
93
93
|
pagination: l,
|
|
94
|
-
filters:
|
|
94
|
+
filters: n,
|
|
95
95
|
selectable: M,
|
|
96
|
-
selectedRows:
|
|
97
|
-
onSelectionChange:
|
|
98
|
-
rowId:
|
|
99
|
-
actions:
|
|
100
|
-
onRowClick:
|
|
96
|
+
selectedRows: $,
|
|
97
|
+
onSelectionChange: A,
|
|
98
|
+
rowId: B,
|
|
99
|
+
actions: O,
|
|
100
|
+
onRowClick: V,
|
|
101
101
|
paginationMode: j,
|
|
102
102
|
defaultPageSize: E,
|
|
103
103
|
resizable: I,
|
|
@@ -120,18 +120,24 @@ function ee(e) {
|
|
|
120
120
|
defaultPageSize: E || (l == null ? void 0 : l.pageSize) || 10,
|
|
121
121
|
pageSizeOptions: l == null ? void 0 : l.pageSizeOptions,
|
|
122
122
|
sortColumn: m,
|
|
123
|
-
sortDirection:
|
|
123
|
+
sortDirection: r,
|
|
124
124
|
onSort: d,
|
|
125
|
-
filters:
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
125
|
+
filters: n == null ? void 0 : n.config,
|
|
126
|
+
// Seed the uncontrolled filter state ONLY. Mapping initialValues onto
|
|
127
|
+
// `filterValues` too flipped the provider into controlled-filter mode
|
|
128
|
+
// (isFilterControlled = filterValues !== undefined), freezing the
|
|
129
|
+
// internal filter state forever so client-side filtering never ran.
|
|
130
|
+
// The simplified Filters API exposes no controlled-filter prop, so
|
|
131
|
+
// there is no legitimate controlled path through it.
|
|
132
|
+
filterValues: void 0,
|
|
133
|
+
onFilter: n == null ? void 0 : n.onFilter,
|
|
134
|
+
initialFilterValues: n == null ? void 0 : n.initialValues,
|
|
129
135
|
selectable: M,
|
|
130
|
-
selectedRows:
|
|
131
|
-
onSelectionChange:
|
|
132
|
-
rowId:
|
|
133
|
-
actions:
|
|
134
|
-
onRowClick:
|
|
136
|
+
selectedRows: $,
|
|
137
|
+
onSelectionChange: A,
|
|
138
|
+
rowId: B,
|
|
139
|
+
actions: O,
|
|
140
|
+
onRowClick: V,
|
|
135
141
|
emptyMessage: c,
|
|
136
142
|
emptyStateTitle: F,
|
|
137
143
|
emptyStateMessage: H,
|
|
@@ -146,17 +152,17 @@ function ee(e) {
|
|
|
146
152
|
// Placeholder, will be overridden by default structure
|
|
147
153
|
};
|
|
148
154
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
155
|
+
i.Header = y;
|
|
156
|
+
i.HeaderRow = Q;
|
|
157
|
+
i.HeaderCell = U;
|
|
158
|
+
i.Body = P;
|
|
159
|
+
i.Row = X;
|
|
160
|
+
i.Cell = Y;
|
|
161
|
+
i.Filters = z;
|
|
162
|
+
i.Pagination = R;
|
|
163
|
+
i.EmptyState = Z;
|
|
164
|
+
i.Actions = _;
|
|
159
165
|
export {
|
|
160
|
-
|
|
166
|
+
i as default
|
|
161
167
|
};
|
|
162
168
|
//# sourceMappingURL=Table.js.map
|