@particle-academy/react-fancy 6.2.0 → 6.4.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 (126) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +2 -0
  3. package/dist/autocomplete.cjs +5 -5
  4. package/dist/autocomplete.js +4 -4
  5. package/dist/breadcrumbs.cjs +2 -2
  6. package/dist/breadcrumbs.d.cts +13 -2
  7. package/dist/breadcrumbs.d.ts +13 -2
  8. package/dist/breadcrumbs.js +1 -1
  9. package/dist/card.cjs +8 -8
  10. package/dist/card.js +2 -2
  11. package/dist/chat-thread.cjs +5 -4
  12. package/dist/chat-thread.js +3 -2
  13. package/dist/{chunk-K7JOZQRK.cjs → chunk-2G6TIX5Q.cjs} +4 -4
  14. package/dist/{chunk-K7JOZQRK.cjs.map → chunk-2G6TIX5Q.cjs.map} +1 -1
  15. package/dist/chunk-5EW47IH7.js +194 -0
  16. package/dist/chunk-5EW47IH7.js.map +1 -0
  17. package/dist/{chunk-TH4JZAMK.js → chunk-5TP642UT.js} +4 -4
  18. package/dist/{chunk-TH4JZAMK.js.map → chunk-5TP642UT.js.map} +1 -1
  19. package/dist/chunk-6BB32POL.js +29 -0
  20. package/dist/chunk-6BB32POL.js.map +1 -0
  21. package/dist/{chunk-XIA2UAVO.js → chunk-6GVOW3UL.js} +4 -4
  22. package/dist/{chunk-XIA2UAVO.js.map → chunk-6GVOW3UL.js.map} +1 -1
  23. package/dist/{chunk-4JT2QANA.cjs → chunk-6H7ZN23X.cjs} +3 -3
  24. package/dist/{chunk-4JT2QANA.cjs.map → chunk-6H7ZN23X.cjs.map} +1 -1
  25. package/dist/chunk-7ZCNZUZK.cjs +183 -0
  26. package/dist/chunk-7ZCNZUZK.cjs.map +1 -0
  27. package/dist/chunk-AHZIT3CM.js +204 -0
  28. package/dist/chunk-AHZIT3CM.js.map +1 -0
  29. package/dist/{chunk-MP55W37V.cjs → chunk-BYO5RUDE.cjs} +4 -4
  30. package/dist/{chunk-MP55W37V.cjs.map → chunk-BYO5RUDE.cjs.map} +1 -1
  31. package/dist/{chunk-2XO6EYZ7.js → chunk-EENHSMV2.js} +3 -3
  32. package/dist/{chunk-2XO6EYZ7.js.map → chunk-EENHSMV2.js.map} +1 -1
  33. package/dist/{chunk-WJHPZS3U.js → chunk-GTS3QA7M.js} +11 -4
  34. package/dist/chunk-GTS3QA7M.js.map +1 -0
  35. package/dist/{chunk-7JLKOVHX.cjs → chunk-HLI6RB5V.cjs} +4 -4
  36. package/dist/{chunk-7JLKOVHX.cjs.map → chunk-HLI6RB5V.cjs.map} +1 -1
  37. package/dist/chunk-HZUKPYR3.cjs +31 -0
  38. package/dist/chunk-HZUKPYR3.cjs.map +1 -0
  39. package/dist/chunk-J2BWXCES.js +177 -0
  40. package/dist/chunk-J2BWXCES.js.map +1 -0
  41. package/dist/{chunk-CKO2KCUN.cjs → chunk-MPCZUZ4O.cjs} +7 -175
  42. package/dist/chunk-MPCZUZ4O.cjs.map +1 -0
  43. package/dist/{chunk-G7227RTY.cjs → chunk-NIAG6OF6.cjs} +4 -22
  44. package/dist/chunk-NIAG6OF6.cjs.map +1 -0
  45. package/dist/{chunk-FBWUXSKH.js → chunk-P24A2BIR.js} +4 -22
  46. package/dist/chunk-P24A2BIR.js.map +1 -0
  47. package/dist/{chunk-3AA2KGZG.js → chunk-QF2FODTG.js} +5 -173
  48. package/dist/chunk-QF2FODTG.js.map +1 -0
  49. package/dist/{chunk-A6NYZ3F5.js → chunk-RWU2MFUL.js} +4 -4
  50. package/dist/{chunk-A6NYZ3F5.js.map → chunk-RWU2MFUL.js.map} +1 -1
  51. package/dist/{chunk-EWE776WI.cjs → chunk-SKMORSBO.cjs} +11 -4
  52. package/dist/chunk-SKMORSBO.cjs.map +1 -0
  53. package/dist/{chunk-WF6AYHOS.js → chunk-UMDOSJUH.js} +4 -4
  54. package/dist/{chunk-WF6AYHOS.js.map → chunk-UMDOSJUH.js.map} +1 -1
  55. package/dist/{chunk-23KQF47X.js → chunk-UUEAFG6V.js} +3 -3
  56. package/dist/{chunk-23KQF47X.js.map → chunk-UUEAFG6V.js.map} +1 -1
  57. package/dist/chunk-VAVS6WRZ.cjs +206 -0
  58. package/dist/chunk-VAVS6WRZ.cjs.map +1 -0
  59. package/dist/{chunk-SRICSNL4.cjs → chunk-VQLPAYQF.cjs} +12 -12
  60. package/dist/{chunk-SRICSNL4.cjs.map → chunk-VQLPAYQF.cjs.map} +1 -1
  61. package/dist/chunk-Y3QAEF2P.cjs +196 -0
  62. package/dist/chunk-Y3QAEF2P.cjs.map +1 -0
  63. package/dist/{chunk-KSSTFLV2.cjs → chunk-Z44A7NPD.cjs} +6 -6
  64. package/dist/{chunk-KSSTFLV2.cjs.map → chunk-Z44A7NPD.cjs.map} +1 -1
  65. package/dist/code-block.cjs +19 -0
  66. package/dist/code-block.cjs.map +1 -0
  67. package/dist/code-block.d.cts +55 -0
  68. package/dist/code-block.d.ts +55 -0
  69. package/dist/code-block.js +10 -0
  70. package/dist/code-block.js.map +1 -0
  71. package/dist/code-view.cjs +3 -2
  72. package/dist/code-view.js +2 -1
  73. package/dist/composer.cjs +1 -1
  74. package/dist/composer.js +1 -1
  75. package/dist/content-renderer.cjs +5 -4
  76. package/dist/content-renderer.js +2 -1
  77. package/dist/dropdown.cjs +1 -1
  78. package/dist/dropdown.js +1 -1
  79. package/dist/editor.cjs +10 -8
  80. package/dist/editor.js +8 -6
  81. package/dist/index.cjs +125 -113
  82. package/dist/index.cjs.map +1 -1
  83. package/dist/index.d.cts +2 -0
  84. package/dist/index.d.ts +2 -0
  85. package/dist/index.js +32 -28
  86. package/dist/index.js.map +1 -1
  87. package/dist/input.cjs +3 -3
  88. package/dist/input.js +3 -3
  89. package/dist/inputs.cjs +15 -15
  90. package/dist/inputs.js +6 -6
  91. package/dist/json-editor.cjs +16 -16
  92. package/dist/json-editor.js +5 -5
  93. package/dist/magic-wand.cjs +2 -2
  94. package/dist/magic-wand.js +2 -2
  95. package/dist/mobile-menu.cjs +1 -1
  96. package/dist/mobile-menu.js +1 -1
  97. package/dist/paste-pills.cjs +1 -1
  98. package/dist/paste-pills.js +1 -1
  99. package/dist/popover.cjs +1 -1
  100. package/dist/popover.js +1 -1
  101. package/dist/prompt-input.cjs +1 -1
  102. package/dist/prompt-input.js +1 -1
  103. package/dist/reason-tag.cjs +1 -1
  104. package/dist/reason-tag.js +1 -1
  105. package/dist/select.cjs +5 -5
  106. package/dist/select.js +4 -4
  107. package/dist/sidebar.cjs +1 -1
  108. package/dist/sidebar.js +1 -1
  109. package/dist/stepper.cjs +14 -0
  110. package/dist/stepper.cjs.map +1 -0
  111. package/dist/stepper.d.cts +72 -0
  112. package/dist/stepper.d.ts +72 -0
  113. package/dist/stepper.js +5 -0
  114. package/dist/stepper.js.map +1 -0
  115. package/dist/tooltip.cjs +1 -1
  116. package/dist/tooltip.js +1 -1
  117. package/docs/Breadcrumbs.md +10 -1
  118. package/docs/CodeBlock.md +84 -0
  119. package/docs/Stepper.md +124 -0
  120. package/package.json +21 -1
  121. package/dist/chunk-3AA2KGZG.js.map +0 -1
  122. package/dist/chunk-CKO2KCUN.cjs.map +0 -1
  123. package/dist/chunk-EWE776WI.cjs.map +0 -1
  124. package/dist/chunk-FBWUXSKH.js.map +0 -1
  125. package/dist/chunk-G7227RTY.cjs.map +0 -1
  126. package/dist/chunk-WJHPZS3U.js.map +0 -1
@@ -0,0 +1,194 @@
1
+ import { useControllableState } from './chunk-EDYAXGUM.js';
2
+ import { cn } from './chunk-MMW2JGKZ.js';
3
+ import { forwardRef, Children, isValidElement } from 'react';
4
+ import { Check } from 'lucide-react';
5
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
6
+
7
+ var DEFAULT_STATE_LABELS = {
8
+ upcoming: "Not started",
9
+ current: "Current",
10
+ complete: "Completed",
11
+ error: "Error"
12
+ };
13
+ function StepperStep(_props) {
14
+ return null;
15
+ }
16
+ StepperStep.displayName = "StepperStep";
17
+ function stepsFromChildren(children) {
18
+ const out = [];
19
+ for (const child of Children.toArray(children)) {
20
+ if (!isValidElement(child) || child.type !== StepperStep) continue;
21
+ const { children: content, ...rest } = child.props;
22
+ out.push({ ...rest, content });
23
+ }
24
+ return out;
25
+ }
26
+ var indicatorClass = {
27
+ complete: "border-transparent bg-zinc-900 text-white dark:bg-white dark:text-zinc-900",
28
+ current: "border-2 border-zinc-900 bg-[color:var(--fancy-surface,var(--color-white))] text-zinc-900 ring-4 ring-zinc-900/10 dark:border-white dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))] dark:text-white dark:ring-white/15",
29
+ upcoming: "border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]",
30
+ error: "border-transparent bg-red-600 text-white dark:bg-red-500"
31
+ };
32
+ var titleClass = {
33
+ complete: "font-medium text-zinc-900 dark:text-white",
34
+ current: "font-semibold text-zinc-900 dark:text-white",
35
+ upcoming: "font-medium text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]",
36
+ error: "font-semibold text-red-700 dark:text-red-400"
37
+ };
38
+ function Indicator({ state, index }) {
39
+ return /* @__PURE__ */ jsx(
40
+ "span",
41
+ {
42
+ "aria-hidden": "true",
43
+ "data-react-fancy-stepper-indicator": "",
44
+ className: cn(
45
+ "relative z-10 flex h-8 w-8 shrink-0 items-center justify-center rounded-full border text-sm font-semibold",
46
+ indicatorClass[state]
47
+ ),
48
+ children: state === "complete" ? /* @__PURE__ */ jsx(Check, { size: 16, strokeWidth: 3 }) : state === "error" ? "!" : index + 1
49
+ }
50
+ );
51
+ }
52
+ var StepperRoot = forwardRef(
53
+ ({
54
+ steps: stepsProp,
55
+ children,
56
+ current: currentProp,
57
+ defaultCurrent = 0,
58
+ onChange,
59
+ orientation = "vertical",
60
+ clickable = false,
61
+ showContent = "all",
62
+ stateLabels,
63
+ className,
64
+ onKeyDown,
65
+ ...rest
66
+ }, ref) => {
67
+ const [current, setCurrent] = useControllableState(currentProp, defaultCurrent, onChange);
68
+ const steps = stepsProp ?? stepsFromChildren(children);
69
+ const labels = { ...DEFAULT_STATE_LABELS, ...stateLabels };
70
+ const horizontal = orientation === "horizontal";
71
+ const handleKeyDown = (e) => {
72
+ onKeyDown?.(e);
73
+ if (!clickable || e.defaultPrevented) return;
74
+ const prevKey = horizontal ? "ArrowLeft" : "ArrowUp";
75
+ const nextKey = horizontal ? "ArrowRight" : "ArrowDown";
76
+ if (![prevKey, nextKey, "Home", "End"].includes(e.key)) return;
77
+ const list = e.currentTarget;
78
+ const target = e.target.closest("[data-react-fancy-stepper-trigger]");
79
+ if (!target || target.closest("[data-react-fancy-stepper]") !== list) return;
80
+ const buttons = Array.from(
81
+ list.querySelectorAll("[data-react-fancy-stepper-trigger]")
82
+ ).filter((b) => b.closest("[data-react-fancy-stepper]") === list && !b.disabled);
83
+ const at = buttons.indexOf(target);
84
+ let next;
85
+ if (e.key === "Home") next = buttons[0];
86
+ else if (e.key === "End") next = buttons[buttons.length - 1];
87
+ else if (e.key === nextKey) next = buttons[at + 1] ?? target;
88
+ else next = at > 0 ? buttons[at - 1] : target;
89
+ e.preventDefault();
90
+ next?.focus();
91
+ };
92
+ return /* @__PURE__ */ jsx(
93
+ "ol",
94
+ {
95
+ ref,
96
+ "data-react-fancy-stepper": "",
97
+ "data-orientation": orientation,
98
+ "data-current": current,
99
+ className: cn(horizontal ? "flex items-start" : "flex flex-col", className),
100
+ onKeyDown: handleKeyDown,
101
+ ...rest,
102
+ children: steps.map((step, index) => {
103
+ const derived = index < current ? "complete" : index === current ? "current" : "upcoming";
104
+ const state = step.state ?? derived;
105
+ const isCurrent = index === current;
106
+ const isLast = index === steps.length - 1;
107
+ const showBody = step.content != null && (showContent === "all" || isCurrent);
108
+ const headerInner = /* @__PURE__ */ jsxs(Fragment, { children: [
109
+ /* @__PURE__ */ jsx(Indicator, { state, index }),
110
+ /* @__PURE__ */ jsxs("span", { className: "sr-only", "data-react-fancy-stepper-state": "", children: [
111
+ labels[state],
112
+ ":",
113
+ " "
114
+ ] }),
115
+ /* @__PURE__ */ jsx("span", { "data-react-fancy-stepper-title": "", className: cn("text-sm", titleClass[state]), children: step.title })
116
+ ] });
117
+ const headerClass = horizontal ? "flex flex-col items-center gap-2 text-center" : "flex items-center gap-x-4 text-left";
118
+ const header = clickable ? /* @__PURE__ */ jsx(
119
+ "button",
120
+ {
121
+ type: "button",
122
+ "data-react-fancy-stepper-trigger": "",
123
+ disabled: step.disabled,
124
+ onClick: () => {
125
+ if (index !== current) setCurrent(index);
126
+ },
127
+ className: cn(
128
+ headerClass,
129
+ "cursor-pointer rounded-md border-0 bg-transparent p-0",
130
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
131
+ "focus-visible:ring-[color:var(--fancy-focus,var(--color-blue-500))] focus-visible:ring-offset-[color:var(--fancy-surface,var(--color-white))]",
132
+ "dark:focus-visible:ring-[color:var(--fancy-focus-dark,var(--color-blue-400))] dark:focus-visible:ring-offset-[color:var(--fancy-surface-dark,var(--color-zinc-900))]",
133
+ "disabled:cursor-not-allowed disabled:opacity-50"
134
+ ),
135
+ children: headerInner
136
+ }
137
+ ) : /* @__PURE__ */ jsx("div", { className: headerClass, children: headerInner });
138
+ return /* @__PURE__ */ jsxs(
139
+ "li",
140
+ {
141
+ "data-react-fancy-stepper-step": "",
142
+ "data-state": state,
143
+ "data-index": index,
144
+ "data-step-id": step.id,
145
+ "data-disabled": step.disabled ? "true" : void 0,
146
+ "aria-current": isCurrent ? "step" : void 0,
147
+ className: cn("relative", horizontal ? "min-w-0 flex-1" : !isLast && "pb-8"),
148
+ children: [
149
+ !isLast && /* @__PURE__ */ jsx(
150
+ "span",
151
+ {
152
+ "aria-hidden": "true",
153
+ "data-react-fancy-stepper-connector": "",
154
+ className: cn(
155
+ "absolute",
156
+ horizontal ? "top-4 left-[calc(50%+1.5rem)] h-px w-[calc(100%-3rem)]" : "top-10 bottom-2 left-4 w-px -translate-x-1/2",
157
+ index < current ? "bg-zinc-900 dark:bg-white" : "bg-[color:var(--fancy-border,var(--color-zinc-200))] dark:bg-[color:var(--fancy-border-dark,var(--color-zinc-700))]"
158
+ )
159
+ }
160
+ ),
161
+ header,
162
+ (step.description != null || showBody) && /* @__PURE__ */ jsxs("div", { className: horizontal ? "mt-1 px-2 text-center" : "pl-12", children: [
163
+ step.description != null && /* @__PURE__ */ jsx(
164
+ "div",
165
+ {
166
+ "data-react-fancy-stepper-description": "",
167
+ className: "text-sm text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]",
168
+ children: step.description
169
+ }
170
+ ),
171
+ showBody && /* @__PURE__ */ jsx(
172
+ "div",
173
+ {
174
+ "data-react-fancy-stepper-content": "",
175
+ className: "mt-2 text-sm text-[color:var(--fancy-text-subtle,var(--color-zinc-600))] dark:text-[color:var(--fancy-text-subtle-dark,var(--color-zinc-400))]",
176
+ children: step.content
177
+ }
178
+ )
179
+ ] })
180
+ ]
181
+ },
182
+ step.id ?? index
183
+ );
184
+ })
185
+ }
186
+ );
187
+ }
188
+ );
189
+ StepperRoot.displayName = "Stepper";
190
+ var Stepper = Object.assign(StepperRoot, { Step: StepperStep });
191
+
192
+ export { Stepper };
193
+ //# sourceMappingURL=chunk-5EW47IH7.js.map
194
+ //# sourceMappingURL=chunk-5EW47IH7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Stepper/Stepper.tsx"],"names":[],"mappings":"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","file":"chunk-5EW47IH7.js","sourcesContent":["import {\n Children,\n forwardRef,\n isValidElement,\n type KeyboardEvent,\n type ReactNode,\n} from \"react\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { useControllableState } from \"../../hooks/use-controllable-state\";\nimport type {\n StepperProps,\n StepperStep as StepperStepData,\n StepperStepProps,\n StepperStepState,\n} from \"./Stepper.types\";\n\nconst DEFAULT_STATE_LABELS: Record<StepperStepState, string> = {\n upcoming: \"Not started\",\n current: \"Current\",\n complete: \"Completed\",\n error: \"Error\",\n};\n\n/**\n * Declarative step. Renders nothing itself: `Stepper` reads its props as data\n * and renders it through the same path as an entry in `steps`, so the two forms\n * cannot drift apart in markup, states or handles. Its children are the step's\n * content. It must be a DIRECT child of `Stepper` (not wrapped in another\n * component) for the same reason `Breadcrumbs.Item` must.\n */\nfunction StepperStep(_props: StepperStepProps): null {\n return null;\n}\nStepperStep.displayName = \"StepperStep\";\n\nfunction stepsFromChildren(children: ReactNode): StepperStepData[] {\n const out: StepperStepData[] = [];\n for (const child of Children.toArray(children)) {\n if (!isValidElement<StepperStepProps>(child) || child.type !== StepperStep) continue;\n const { children: content, ...rest } = child.props;\n out.push({ ...rest, content });\n }\n return out;\n}\n\nconst indicatorClass: Record<StepperStepState, string> = {\n complete:\n \"border-transparent bg-zinc-900 text-white dark:bg-white dark:text-zinc-900\",\n current:\n \"border-2 border-zinc-900 bg-[color:var(--fancy-surface,var(--color-white))] text-zinc-900 ring-4 ring-zinc-900/10 dark:border-white dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))] dark:text-white dark:ring-white/15\",\n upcoming:\n \"border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-surface,var(--color-white))] text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\",\n error: \"border-transparent bg-red-600 text-white dark:bg-red-500\",\n};\n\nconst titleClass: Record<StepperStepState, string> = {\n complete: \"font-medium text-zinc-900 dark:text-white\",\n current: \"font-semibold text-zinc-900 dark:text-white\",\n upcoming:\n \"font-medium text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\",\n error: \"font-semibold text-red-700 dark:text-red-400\",\n};\n\n/** The glyph differs per state, so state reads without colour: number, tick, \"!\". */\nfunction Indicator({ state, index }: { state: StepperStepState; index: number }) {\n return (\n <span\n aria-hidden=\"true\"\n data-react-fancy-stepper-indicator=\"\"\n className={cn(\n \"relative z-10 flex h-8 w-8 shrink-0 items-center justify-center rounded-full border text-sm font-semibold\",\n indicatorClass[state],\n )}\n >\n {state === \"complete\" ? <Check size={16} strokeWidth={3} /> : state === \"error\" ? \"!\" : index + 1}\n </span>\n );\n}\n\nconst StepperRoot = forwardRef<HTMLOListElement, StepperProps>(\n (\n {\n steps: stepsProp,\n children,\n current: currentProp,\n defaultCurrent = 0,\n onChange,\n orientation = \"vertical\",\n clickable = false,\n showContent = \"all\",\n stateLabels,\n className,\n onKeyDown,\n ...rest\n },\n ref,\n ) => {\n const [current, setCurrent] = useControllableState(currentProp, defaultCurrent, onChange);\n const steps = stepsProp ?? stepsFromChildren(children);\n const labels = { ...DEFAULT_STATE_LABELS, ...stateLabels };\n const horizontal = orientation === \"horizontal\";\n\n // Arrow keys move focus between step buttons; Enter / Space activate them\n // natively. Focus only -- the current step changes on activation, never on\n // arrowing past it. DOM is read in the handler, never during render.\n const handleKeyDown = (e: KeyboardEvent<HTMLOListElement>) => {\n onKeyDown?.(e);\n if (!clickable || e.defaultPrevented) return;\n\n const prevKey = horizontal ? \"ArrowLeft\" : \"ArrowUp\";\n const nextKey = horizontal ? \"ArrowRight\" : \"ArrowDown\";\n if (![prevKey, nextKey, \"Home\", \"End\"].includes(e.key)) return;\n\n const list = e.currentTarget;\n const target = (e.target as HTMLElement).closest<HTMLButtonElement>(\"[data-react-fancy-stepper-trigger]\");\n if (!target || target.closest(\"[data-react-fancy-stepper]\") !== list) return;\n\n // Only this stepper's own buttons: a stepper nested in step content is\n // its own list.\n const buttons = Array.from(\n list.querySelectorAll<HTMLButtonElement>(\"[data-react-fancy-stepper-trigger]\"),\n ).filter((b) => b.closest(\"[data-react-fancy-stepper]\") === list && !b.disabled);\n const at = buttons.indexOf(target);\n\n let next: HTMLButtonElement | undefined;\n if (e.key === \"Home\") next = buttons[0];\n else if (e.key === \"End\") next = buttons[buttons.length - 1];\n else if (e.key === nextKey) next = buttons[at + 1] ?? target;\n else next = at > 0 ? buttons[at - 1] : target;\n\n e.preventDefault();\n next?.focus();\n };\n\n return (\n <ol\n ref={ref}\n data-react-fancy-stepper=\"\"\n data-orientation={orientation}\n data-current={current}\n className={cn(horizontal ? \"flex items-start\" : \"flex flex-col\", className)}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {steps.map((step, index) => {\n const derived: StepperStepState =\n index < current ? \"complete\" : index === current ? \"current\" : \"upcoming\";\n const state = step.state ?? derived;\n const isCurrent = index === current;\n const isLast = index === steps.length - 1;\n const showBody = step.content != null && (showContent === \"all\" || isCurrent);\n\n const headerInner = (\n <>\n <Indicator state={state} index={index} />\n {/* State in words, before the title so it is read first. A\n sibling of the title, so the title handle reads the title. */}\n <span className=\"sr-only\" data-react-fancy-stepper-state=\"\">\n {labels[state]}:{\" \"}\n </span>\n <span data-react-fancy-stepper-title=\"\" className={cn(\"text-sm\", titleClass[state])}>\n {step.title}\n </span>\n </>\n );\n\n const headerClass = horizontal\n ? \"flex flex-col items-center gap-2 text-center\"\n : \"flex items-center gap-x-4 text-left\";\n\n const header = clickable ? (\n <button\n type=\"button\"\n data-react-fancy-stepper-trigger=\"\"\n disabled={step.disabled}\n onClick={() => {\n if (index !== current) setCurrent(index);\n }}\n className={cn(\n headerClass,\n \"cursor-pointer rounded-md border-0 bg-transparent p-0\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n \"focus-visible:ring-[color:var(--fancy-focus,var(--color-blue-500))] focus-visible:ring-offset-[color:var(--fancy-surface,var(--color-white))]\",\n \"dark:focus-visible:ring-[color:var(--fancy-focus-dark,var(--color-blue-400))] dark:focus-visible:ring-offset-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n )}\n >\n {headerInner}\n </button>\n ) : (\n <div className={headerClass}>{headerInner}</div>\n );\n\n return (\n <li\n key={step.id ?? index}\n data-react-fancy-stepper-step=\"\"\n data-state={state}\n data-index={index}\n data-step-id={step.id}\n data-disabled={step.disabled ? \"true\" : undefined}\n aria-current={isCurrent ? \"step\" : undefined}\n className={cn(\"relative\", horizontal ? \"min-w-0 flex-1\" : !isLast && \"pb-8\")}\n >\n {!isLast && (\n <span\n aria-hidden=\"true\"\n data-react-fancy-stepper-connector=\"\"\n className={cn(\n \"absolute\",\n horizontal\n ? \"top-4 left-[calc(50%+1.5rem)] h-px w-[calc(100%-3rem)]\"\n : \"top-10 bottom-2 left-4 w-px -translate-x-1/2\",\n index < current\n ? \"bg-zinc-900 dark:bg-white\"\n : \"bg-[color:var(--fancy-border,var(--color-zinc-200))] dark:bg-[color:var(--fancy-border-dark,var(--color-zinc-700))]\",\n )}\n />\n )}\n {header}\n {(step.description != null || showBody) && (\n <div className={horizontal ? \"mt-1 px-2 text-center\" : \"pl-12\"}>\n {step.description != null && (\n <div\n data-react-fancy-stepper-description=\"\"\n className=\"text-sm text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\"\n >\n {step.description}\n </div>\n )}\n {showBody && (\n <div\n data-react-fancy-stepper-content=\"\"\n className=\"mt-2 text-sm text-[color:var(--fancy-text-subtle,var(--color-zinc-600))] dark:text-[color:var(--fancy-text-subtle-dark,var(--color-zinc-400))]\"\n >\n {step.content}\n </div>\n )}\n </div>\n )}\n </li>\n );\n })}\n </ol>\n );\n },\n);\n\nStepperRoot.displayName = \"Stepper\";\n\nexport const Stepper = Object.assign(StepperRoot, { Step: StepperStep });\n"]}
@@ -1,4 +1,4 @@
1
- import { Select } from './chunk-XIA2UAVO.js';
1
+ import { Select } from './chunk-6GVOW3UL.js';
2
2
  import { Switch } from './chunk-DXZCKDYS.js';
3
3
  import { DatePicker } from './chunk-2UTN3EFK.js';
4
4
  import { Input } from './chunk-PJNUGSKI.js';
@@ -7,8 +7,8 @@ import { DisplayValue } from './chunk-WX5XYDVN.js';
7
7
  import { resolveOption } from './chunk-USWQAMI3.js';
8
8
  import { Text } from './chunk-XM3V3RSU.js';
9
9
  import { ColorPicker } from './chunk-SVSQXKFL.js';
10
- import { useInlineEdit } from './chunk-OL53XYHF.js';
11
10
  import { isImeComposing } from './chunk-S42OGG43.js';
11
+ import { useInlineEdit } from './chunk-OL53XYHF.js';
12
12
  import { Badge } from './chunk-OZ4QFJ7N.js';
13
13
  import { Button } from './chunk-4GPH7HOR.js';
14
14
  import { Callout } from './chunk-KPRSRWNM.js';
@@ -1338,5 +1338,5 @@ function buildItems({
1338
1338
  }
1339
1339
 
1340
1340
  export { JSON_FIELD_TYPES, JsonEditor, applyJsonEdit, describeEdit, findJsonConflicts, getAtPath, inferType, parseKeyMap, parsePath, pathToString, resolveKeyRule, typeMatches };
1341
- //# sourceMappingURL=chunk-TH4JZAMK.js.map
1342
- //# sourceMappingURL=chunk-TH4JZAMK.js.map
1341
+ //# sourceMappingURL=chunk-5TP642UT.js.map
1342
+ //# sourceMappingURL=chunk-5TP642UT.js.map