@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.
Files changed (159) hide show
  1. package/dist/granular/index.js +393 -389
  2. package/dist/granular/index.js.map +1 -1
  3. package/dist/granular/ui/components/Autocomplete/Autocomplete.js +103 -86
  4. package/dist/granular/ui/components/Autocomplete/Autocomplete.js.map +1 -1
  5. package/dist/granular/ui/components/Autocomplete/AutocompleteList.js +57 -47
  6. package/dist/granular/ui/components/Autocomplete/AutocompleteList.js.map +1 -1
  7. package/dist/granular/ui/components/Autocomplete/AutocompleteOption.js +21 -20
  8. package/dist/granular/ui/components/Autocomplete/AutocompleteOption.js.map +1 -1
  9. package/dist/granular/ui/components/Breadcrumb/Breadcrumb.js.map +1 -1
  10. package/dist/granular/ui/components/ButtonGroup/ButtonGroup.js +68 -0
  11. package/dist/granular/ui/components/ButtonGroup/ButtonGroup.js.map +1 -0
  12. package/dist/granular/ui/components/ColorPicker/ColorPicker.js.map +1 -1
  13. package/dist/granular/ui/components/CommandPalette/CommandPalette.js +187 -149
  14. package/dist/granular/ui/components/CommandPalette/CommandPalette.js.map +1 -1
  15. package/dist/granular/ui/components/DataGrid/DataGrid.js +92 -92
  16. package/dist/granular/ui/components/DataGrid/DataGrid.js.map +1 -1
  17. package/dist/granular/ui/components/DatePicker/DatePickerCalendar.js +154 -139
  18. package/dist/granular/ui/components/DatePicker/DatePickerCalendar.js.map +1 -1
  19. package/dist/granular/ui/components/Dialog/AlertDialog.js +73 -40
  20. package/dist/granular/ui/components/Dialog/AlertDialog.js.map +1 -1
  21. package/dist/granular/ui/components/Dialog/DialogContent.js +54 -48
  22. package/dist/granular/ui/components/Dialog/DialogContent.js.map +1 -1
  23. package/dist/granular/ui/components/Dialog/DialogDescription.js +31 -31
  24. package/dist/granular/ui/components/Dialog/DialogDescription.js.map +1 -1
  25. package/dist/granular/ui/components/Dialog/DialogTitle.js +30 -30
  26. package/dist/granular/ui/components/Dialog/DialogTitle.js.map +1 -1
  27. package/dist/granular/ui/components/Drawer/Drawer.js.map +1 -1
  28. package/dist/granular/ui/components/Dropdown/Dropdown.js.map +1 -1
  29. package/dist/granular/ui/components/EmptyState/EmptyState.js.map +1 -1
  30. package/dist/granular/ui/components/FileUpload/FileUpload.js.map +1 -1
  31. package/dist/granular/ui/components/Form/Form.js +38 -37
  32. package/dist/granular/ui/components/Form/Form.js.map +1 -1
  33. package/dist/granular/ui/components/Form/FormField.js +28 -26
  34. package/dist/granular/ui/components/Form/FormField.js.map +1 -1
  35. package/dist/granular/ui/components/Header/Header.js.map +1 -1
  36. package/dist/granular/ui/components/Header/components/HeaderActions.js.map +1 -1
  37. package/dist/granular/ui/components/Header/components/HeaderHamburger.js.map +1 -1
  38. package/dist/granular/ui/components/Header/components/HeaderLogo.js.map +1 -1
  39. package/dist/granular/ui/components/Header/components/HeaderMobileMenu.js.map +1 -1
  40. package/dist/granular/ui/components/Header/components/HeaderNavigation.js.map +1 -1
  41. package/dist/granular/ui/components/Header/contexts/HeaderContext.js.map +1 -1
  42. package/dist/granular/ui/components/Menu/Menu.js.map +1 -1
  43. package/dist/granular/ui/components/Modal/Modal.js +98 -86
  44. package/dist/granular/ui/components/Modal/Modal.js.map +1 -1
  45. package/dist/granular/ui/components/MultiSelect/MultiSelect.js +122 -106
  46. package/dist/granular/ui/components/MultiSelect/MultiSelect.js.map +1 -1
  47. package/dist/granular/ui/components/Navigation/Navigation.js.map +1 -1
  48. package/dist/granular/ui/components/PageHeader/PageHeader.js.map +1 -1
  49. package/dist/granular/ui/components/Pagination/Pagination.js.map +1 -1
  50. package/dist/granular/ui/components/Popover/Popover.js.map +1 -1
  51. package/dist/granular/ui/components/Rating/Rating.js.map +1 -1
  52. package/dist/granular/ui/components/SearchInput/SearchInput.js.map +1 -1
  53. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarGroup.js +82 -64
  54. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarGroup.js.map +1 -1
  55. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarItem.js +30 -29
  56. package/dist/granular/ui/components/SideNavbar/components/Navbar/NavbarItem.js.map +1 -1
  57. package/dist/granular/ui/components/SideNavbar/components/SideNavbarResizeHandle.js +37 -35
  58. package/dist/granular/ui/components/SideNavbar/components/SideNavbarResizeHandle.js.map +1 -1
  59. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarStateProvider.js +57 -57
  60. package/dist/granular/ui/components/SideNavbar/providers/SideNavbarStateProvider.js.map +1 -1
  61. package/dist/granular/ui/components/Stepper/Stepper.js +102 -94
  62. package/dist/granular/ui/components/Stepper/Stepper.js.map +1 -1
  63. package/dist/granular/ui/components/Table/Table.js +41 -35
  64. package/dist/granular/ui/components/Table/Table.js.map +1 -1
  65. package/dist/granular/ui/components/Table/TableActions/TableActions.js.map +1 -1
  66. package/dist/granular/ui/components/Table/TableFilters/TableFilters.js +49 -46
  67. package/dist/granular/ui/components/Table/TableFilters/TableFilters.js.map +1 -1
  68. package/dist/granular/ui/components/Table/TablePagination/TablePagination.js.map +1 -1
  69. package/dist/granular/ui/components/Table/TableProvider.js +82 -80
  70. package/dist/granular/ui/components/Table/TableProvider.js.map +1 -1
  71. package/dist/granular/ui/components/Table/TableRow.js +57 -53
  72. package/dist/granular/ui/components/Table/TableRow.js.map +1 -1
  73. package/dist/granular/ui/components/Table/useColumnResizing.js +53 -53
  74. package/dist/granular/ui/components/Table/useColumnResizing.js.map +1 -1
  75. package/dist/granular/ui/components/TimePicker/TimePicker.js +149 -103
  76. package/dist/granular/ui/components/TimePicker/TimePicker.js.map +1 -1
  77. package/dist/granular/ui/components/Timeline/Timeline.js.map +1 -1
  78. package/dist/granular/ui/hooks/useFocusRestore.js +14 -15
  79. package/dist/granular/ui/hooks/useFocusRestore.js.map +1 -1
  80. package/dist/granular/ui/primitives/Badge/Badge.js.map +1 -1
  81. package/dist/granular/ui/primitives/Checkbox/Checkbox.js.map +1 -1
  82. package/dist/granular/ui/primitives/Chip/Chip.js +91 -71
  83. package/dist/granular/ui/primitives/Chip/Chip.js.map +1 -1
  84. package/dist/granular/ui/primitives/Dot/Dot.js +99 -0
  85. package/dist/granular/ui/primitives/Dot/Dot.js.map +1 -0
  86. package/dist/granular/ui/primitives/ErrorMessage/ErrorMessage.js.map +1 -1
  87. package/dist/granular/ui/primitives/Input/Input.js.map +1 -1
  88. package/dist/granular/ui/primitives/Label/Label.js.map +1 -1
  89. package/dist/granular/ui/primitives/NavLink/NavLink.js.map +1 -1
  90. package/dist/granular/ui/primitives/Radio/Radio.js.map +1 -1
  91. package/dist/granular/ui/primitives/Select/Select.js.map +1 -1
  92. package/dist/granular/ui/primitives/Separator/Separator.js.map +1 -1
  93. package/dist/granular/ui/primitives/Skeleton/Skeleton.js.map +1 -1
  94. package/dist/granular/ui/primitives/Slider/Slider.js.map +1 -1
  95. package/dist/granular/ui/primitives/Spinner/Spinner.js.map +1 -1
  96. package/dist/granular/ui/primitives/Switch/Switch.js.map +1 -1
  97. package/dist/granular/ui/primitives/Tooltip/Tooltip.js.map +1 -1
  98. package/dist/granular/ui/providers/DialogContext.js.map +1 -1
  99. package/dist/granular/ui/providers/DialogProvider.js +24 -20
  100. package/dist/granular/ui/providers/DialogProvider.js.map +1 -1
  101. package/dist/index.cjs +134 -134
  102. package/dist/index.cjs.map +1 -1
  103. package/dist/index.js +5945 -5542
  104. package/dist/index.js.map +1 -1
  105. package/dist/react-design-system.css +1 -1
  106. package/dist/server/index.cjs +7 -7
  107. package/dist/server/index.cjs.map +1 -1
  108. package/dist/server/index.js +404 -384
  109. package/dist/server/index.js.map +1 -1
  110. package/dist/ui/components/Autocomplete/AutocompleteList.d.ts +4 -0
  111. package/dist/ui/components/Autocomplete/AutocompleteOption.d.ts +8 -0
  112. package/dist/ui/components/Breadcrumb/Breadcrumb.d.ts +0 -1
  113. package/dist/ui/components/ButtonGroup/ButtonGroup.d.ts +2 -2
  114. package/dist/ui/components/ColorPicker/ColorPicker.d.ts +0 -1
  115. package/dist/ui/components/CommandPalette/CommandPalette.d.ts +0 -1
  116. package/dist/ui/components/DataGrid/DataGrid.d.ts +0 -1
  117. package/dist/ui/components/Dialog/DialogContent.d.ts +20 -1
  118. package/dist/ui/components/Drawer/Drawer.d.ts +0 -1
  119. package/dist/ui/components/Dropdown/Dropdown.d.ts +0 -1
  120. package/dist/ui/components/EmptyState/EmptyState.d.ts +0 -1
  121. package/dist/ui/components/FileUpload/FileUpload.d.ts +0 -1
  122. package/dist/ui/components/Form/FormField.d.ts +7 -0
  123. package/dist/ui/components/Header/Header.d.ts +1 -1
  124. package/dist/ui/components/Header/components/HeaderActions.d.ts +1 -1
  125. package/dist/ui/components/Header/components/HeaderHamburger.d.ts +1 -1
  126. package/dist/ui/components/Header/components/HeaderLogo.d.ts +1 -1
  127. package/dist/ui/components/Header/components/HeaderMobileMenu.d.ts +1 -1
  128. package/dist/ui/components/Header/components/HeaderNavigation.d.ts +1 -1
  129. package/dist/ui/components/Header/contexts/HeaderContext.d.ts +1 -1
  130. package/dist/ui/components/Menu/Menu.d.ts +0 -1
  131. package/dist/ui/components/Modal/Modal.d.ts +1 -2
  132. package/dist/ui/components/Navigation/Navigation.d.ts +1 -1
  133. package/dist/ui/components/PageHeader/PageHeader.d.ts +1 -1
  134. package/dist/ui/components/Pagination/Pagination.d.ts +0 -1
  135. package/dist/ui/components/Popover/Popover.d.ts +0 -1
  136. package/dist/ui/components/Rating/Rating.d.ts +0 -1
  137. package/dist/ui/components/SearchInput/SearchInput.d.ts +0 -1
  138. package/dist/ui/components/Stepper/Stepper.d.ts +0 -1
  139. package/dist/ui/components/Table/TableActions/TableActions.d.ts +0 -1
  140. package/dist/ui/components/Table/TableFilters/TableFilters.d.ts +0 -1
  141. package/dist/ui/components/Table/TablePagination/TablePagination.d.ts +0 -1
  142. package/dist/ui/components/TimePicker/TimePicker.d.ts +0 -1
  143. package/dist/ui/components/Timeline/Timeline.d.ts +0 -1
  144. package/dist/ui/components/index.d.ts +2 -0
  145. package/dist/ui/primitives/Checkbox/Checkbox.d.ts +0 -1
  146. package/dist/ui/primitives/Chip/Chip.d.ts +21 -0
  147. package/dist/ui/primitives/ErrorMessage/ErrorMessage.d.ts +0 -1
  148. package/dist/ui/primitives/Input/Input.d.ts +0 -1
  149. package/dist/ui/primitives/Label/Label.d.ts +0 -1
  150. package/dist/ui/primitives/NavLink/NavLink.d.ts +1 -1
  151. package/dist/ui/primitives/Radio/Radio.d.ts +0 -1
  152. package/dist/ui/primitives/Select/Select.d.ts +0 -1
  153. package/dist/ui/primitives/Skeleton/Skeleton.d.ts +0 -1
  154. package/dist/ui/primitives/Slider/Slider.d.ts +0 -1
  155. package/dist/ui/primitives/Switch/Switch.d.ts +0 -1
  156. package/dist/ui/primitives/Tooltip/Tooltip.d.ts +0 -1
  157. package/dist/ui/primitives/index.d.ts +2 -0
  158. package/dist/ui/providers/DialogContext.d.ts +8 -0
  159. package/package.json +7 -7
@@ -1,105 +1,107 @@
1
1
  "use client";
2
- var R = Object.defineProperty, D = Object.defineProperties;
3
- var E = Object.getOwnPropertyDescriptors;
4
- var q = Object.getOwnPropertySymbols;
5
- var G = Object.prototype.hasOwnProperty, H = Object.prototype.propertyIsEnumerable;
6
- var I = (t, i, a) => i in t ? R(t, i, { enumerable: !0, configurable: !0, writable: !0, value: a }) : t[i] = a, g = (t, i) => {
7
- for (var a in i || (i = {}))
8
- G.call(i, a) && I(t, a, i[a]);
9
- if (q)
10
- for (var a of q(i))
11
- H.call(i, a) && I(t, a, i[a]);
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
- }, h = (t, i) => D(t, E(i));
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 J } from "react";
16
- import { Check as z } from "lucide-react";
17
- import { getSpacingClass as l } from "../../tokens/spacing.js";
18
- import { getRadiusClass as b } from "../../tokens/radius.js";
19
- import { getAnimationClass as B } from "../../tokens/animations.js";
20
- import { Button as u } from "../../primitives/Button/Button.js";
21
- import K from "../../primitives/Separator/Separator.js";
22
- function Z({
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: i,
25
- defaultCurrentStep: a = 0,
26
- onStepChange: o,
27
- onComplete: $,
28
- allowNavigation: m = !0,
29
- showStepNumbers: N = !0,
30
- orientation: F = "horizontal",
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 [L, x] = J(a), f = i !== void 0, d = f ? i : L, k = (e) => e < d ? "completed" : e === d ? "active" : "pending", j = () => {
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
- f || x(e), o == null || o(e);
36
+ u || g(e), m == null || m(e);
37
37
  } else
38
- $ == null || $();
39
- }, S = () => {
38
+ v == null || v();
39
+ }, A = () => {
40
40
  if (d > 0) {
41
41
  const e = d - 1;
42
- f || x(e), o == null || o(e);
42
+ u || g(e), m == null || m(e);
43
43
  }
44
- }, p = (e) => {
45
- m && (t[e].disabled || (f || x(e), o == null || o(e)));
46
- }, w = t[d], A = d === 0, P = d === t.length - 1;
47
- return F === "vertical" ? /* @__PURE__ */ n("div", { className: `flex ${l("base", "gap")} ${y}`, children: [
48
- /* @__PURE__ */ r("div", { className: "flex flex-col", children: t.map((e, s) => {
49
- const c = e.status || k(s), v = s === d;
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 ${l("md", "gap")}`,
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
- h(g({
58
+ N(p({
59
59
  type: "button",
60
- onClick: () => p(s),
61
- disabled: !m || e.disabled,
62
- "aria-label": e.title ? `Step ${s + 1}: ${e.title}` : `Step ${s + 1}`
63
- }, c === "pending" ? { "data-marker": "pending" } : {}), {
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
- ${b("full")}
71
+ ${$("full")}
71
72
  border-2
72
- ${B("base")}
73
- ${c === "completed" ? "bg-success border-success text-fg-inverse" : c === "active" ? "bg-surface-brand-strong border-line-brand text-fg-inverse" : c === "error" ? "bg-error border-error text-fg-inverse" : "bg-surface-base border-line-emphasis text-fg-quaternary"}
74
- ${!m || e.disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer"}
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: c === "completed" ? /* @__PURE__ */ r(z, { className: "h-5 w-5" }) : N ? s + 1 : null
77
+ children: B(s, i)
77
78
  })
78
79
  ),
79
- s < t.length - 1 && /* @__PURE__ */ r(
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
- ${l("sm", "mt")}
86
- ${c === "completed" ? "bg-success" : "bg-line-emphasis"}
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 ${l("xl", "pb")}`, children: [
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: () => p(s),
97
- disabled: !m || e.disabled,
97
+ onClick: () => h(i),
98
+ disabled: !b || e.disabled,
99
+ id: `${e.id}-title`,
98
100
  className: `
99
101
  text-left
100
- ${v ? "font-semibold" : "font-medium"}
101
- ${c === "active" ? "text-fg-brand-emphasis" : "text-fg-secondary"}
102
- ${!m || e.disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer"}
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 ${l("xs", "mt")}`,
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
- ${l("lg", "p")}
129
+ ${a("lg", "p")}
126
130
  border
127
131
  border-line-default
128
- ${b("lg")}
132
+ ${$("lg")}
129
133
  bg-surface-base
130
134
  `,
131
- children: w.content
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 ${l("base", "mt")} ${l("base", "gap")}`,
141
+ className: `flex justify-between ${a("base", "mt")} ${a("base", "gap")}`,
138
142
  children: [
139
143
  /* @__PURE__ */ r(
140
- u,
144
+ x,
141
145
  {
142
146
  variant: "outline",
143
- onClick: S,
144
- disabled: A,
147
+ onClick: A,
148
+ disabled: w,
145
149
  children: "Previous"
146
150
  }
147
151
  ),
148
- /* @__PURE__ */ r(u, { variant: "primary", onClick: j, children: P ? "Complete" : "Next" })
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: `${l("lg", "space-y")} ${y}`, children: [
154
- /* @__PURE__ */ r("div", { className: "flex items-center", children: t.map((e, s) => {
155
- const c = e.status || k(s), v = s === d;
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
- h(g({
164
+ N(p({
161
165
  type: "button",
162
- onClick: () => p(s),
163
- disabled: !m || e.disabled,
164
- "aria-label": e.title ? `Step ${s + 1}: ${e.title}` : `Step ${s + 1}`
165
- }, c === "pending" ? { "data-marker": "pending" } : {}), {
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
- ${b("full")}
177
+ ${$("full")}
173
178
  border-2
174
- ${B("base")}
175
- ${c === "completed" ? "bg-success border-success text-fg-inverse" : c === "active" ? "bg-surface-brand-strong border-line-brand text-fg-inverse" : c === "error" ? "bg-error border-error text-fg-inverse" : "bg-surface-base border-line-emphasis text-fg-quaternary"}
176
- ${!m || e.disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer"}
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: c === "completed" ? /* @__PURE__ */ r(z, { className: "h-5 w-5" }) : N ? s + 1 : null
183
+ children: B(s, i)
179
184
  })
180
185
  ),
181
186
  /* @__PURE__ */ n(
182
187
  "div",
183
188
  {
184
- className: `${l("sm", "mt")} text-center ${l("sm", "px")}`,
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
- ${v ? "text-fg-brand-emphasis" : "text-fg-secondary"}
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 ${l("xs", "mt")}`,
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
- s < t.length - 1 && /* @__PURE__ */ r("div", { className: `flex-1 ${l("base", "mx")}`, children: /* @__PURE__ */ r(
209
- K,
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
- ${c === "completed" ? "border-success" : "border-line-emphasis"}
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
- ${l("lg", "p")}
230
+ ${a("lg", "p")}
223
231
  border
224
232
  border-line-default
225
- ${b("lg")}
233
+ ${$("lg")}
226
234
  bg-surface-base
227
235
  `,
228
- children: w.content
236
+ children: o == null ? void 0 : o.content
229
237
  }
230
238
  ),
231
- /* @__PURE__ */ n("div", { className: `flex justify-between ${l("base", "gap")}`, children: [
239
+ /* @__PURE__ */ n("div", { className: `flex justify-between ${a("base", "gap")}`, children: [
232
240
  /* @__PURE__ */ r(
233
- u,
241
+ x,
234
242
  {
235
243
  variant: "outline",
236
- onClick: S,
237
- disabled: A,
244
+ onClick: A,
245
+ disabled: w,
238
246
  children: "Previous"
239
247
  }
240
248
  ),
241
- /* @__PURE__ */ r(u, { variant: "primary", onClick: j, children: P ? "Complete" : "Next" })
249
+ /* @__PURE__ */ r(x, { variant: "primary", onClick: j, children: P ? "Complete" : "Next" })
242
250
  ] })
243
251
  ] });
244
252
  }
245
253
  export {
246
- Z as default
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 n(e) {
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, i = m ? d : ee(
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({}, i), { children: e.children }))
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({}, i), { children: [
59
- i.filters && i.filters.length > 0 && /* @__PURE__ */ s(z, {}),
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": i.total || i.data.length,
68
- "aria-colcount": i.columns.length + (i.selectable ? 1 : 0) + (i.actions ? 1 : 0),
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: i,
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: r,
94
+ filters: n,
95
95
  selectable: M,
96
- selectedRows: V,
97
- onSelectionChange: $,
98
- rowId: A,
99
- actions: B,
100
- onRowClick: O,
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: i,
123
+ sortDirection: r,
124
124
  onSort: d,
125
- filters: r == null ? void 0 : r.config,
126
- filterValues: r == null ? void 0 : r.initialValues,
127
- onFilter: r == null ? void 0 : r.onFilter,
128
- initialFilterValues: r == null ? void 0 : r.initialValues,
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: V,
131
- onSelectionChange: $,
132
- rowId: A,
133
- actions: B,
134
- onRowClick: O,
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
- n.Header = y;
150
- n.HeaderRow = Q;
151
- n.HeaderCell = U;
152
- n.Body = P;
153
- n.Row = X;
154
- n.Cell = Y;
155
- n.Filters = z;
156
- n.Pagination = R;
157
- n.EmptyState = Z;
158
- n.Actions = _;
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
- n as default
166
+ i as default
161
167
  };
162
168
  //# sourceMappingURL=Table.js.map