@camunda/design-system 0.51.0 → 0.53.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 (104) hide show
  1. package/dist/carbon-compat/accordion.js +1 -1
  2. package/dist/carbon-compat/c3-data-table.js +1 -1
  3. package/dist/carbon-compat/code-snippet.js +1 -1
  4. package/dist/carbon-compat/icon-button.d.ts +3 -1
  5. package/dist/carbon-compat/icon-button.d.ts.map +1 -1
  6. package/dist/carbon-compat/icon-button.js +34 -7
  7. package/dist/carbon-compat/icon-button.js.map +1 -1
  8. package/dist/carbon-compat/loading.js +1 -1
  9. package/dist/carbon-compat/menu-button.d.ts.map +1 -1
  10. package/dist/carbon-compat/menu-button.js +1 -1
  11. package/dist/carbon-compat/menu-button.js.map +1 -1
  12. package/dist/carbon-compat/overflow-menu.d.ts +2 -2
  13. package/dist/carbon-compat/overflow-menu.d.ts.map +1 -1
  14. package/dist/carbon-compat/overflow-menu.js +29 -13
  15. package/dist/carbon-compat/overflow-menu.js.map +1 -1
  16. package/dist/carbon-compat/search.js +1 -1
  17. package/dist/carbon-compat/table-expand.js +1 -1
  18. package/dist/src/components/ui/alert.d.ts +1 -1
  19. package/dist/src/components/ui/alert.js +1 -1
  20. package/dist/src/components/ui/app-sidebar.d.ts.map +1 -1
  21. package/dist/src/components/ui/app-sidebar.js +3 -3
  22. package/dist/src/components/ui/app-sidebar.js.map +1 -1
  23. package/dist/src/components/ui/avatar.js +1 -1
  24. package/dist/src/components/ui/breadcrumb.js +1 -1
  25. package/dist/src/components/ui/button.js +1 -1
  26. package/dist/src/components/ui/calendar.js +1 -1
  27. package/dist/src/components/ui/card.js +1 -1
  28. package/dist/src/components/ui/checkbox.js +1 -1
  29. package/dist/src/components/ui/choice-card.js +1 -1
  30. package/dist/src/components/ui/code-block.js +1 -1
  31. package/dist/src/components/ui/combobox.d.ts +20 -4
  32. package/dist/src/components/ui/combobox.d.ts.map +1 -1
  33. package/dist/src/components/ui/combobox.js +70 -21
  34. package/dist/src/components/ui/combobox.js.map +1 -1
  35. package/dist/src/components/ui/command.js +1 -1
  36. package/dist/src/components/ui/data-table.js +1 -1
  37. package/dist/src/components/ui/date-picker.js +1 -1
  38. package/dist/src/components/ui/date-range-picker.js +1 -1
  39. package/dist/src/components/ui/dialog.js +1 -1
  40. package/dist/src/components/ui/dropdown.js +1 -1
  41. package/dist/src/components/ui/file-uploader.js +1 -1
  42. package/dist/src/components/ui/icon-button.d.ts +26 -0
  43. package/dist/src/components/ui/icon-button.d.ts.map +1 -0
  44. package/dist/src/components/ui/icon-button.js +39 -0
  45. package/dist/src/components/ui/icon-button.js.map +1 -0
  46. package/dist/src/components/ui/inline-edit.js +1 -1
  47. package/dist/src/components/ui/link.d.ts +13 -0
  48. package/dist/src/components/ui/link.d.ts.map +1 -0
  49. package/dist/src/components/ui/link.js +65 -0
  50. package/dist/src/components/ui/link.js.map +1 -0
  51. package/dist/src/components/ui/multi-select.d.ts +17 -2
  52. package/dist/src/components/ui/multi-select.d.ts.map +1 -1
  53. package/dist/src/components/ui/multi-select.js +71 -15
  54. package/dist/src/components/ui/multi-select.js.map +1 -1
  55. package/dist/src/components/ui/multi-step-dialog.d.ts +47 -0
  56. package/dist/src/components/ui/multi-step-dialog.d.ts.map +1 -0
  57. package/dist/src/components/ui/multi-step-dialog.js +201 -0
  58. package/dist/src/components/ui/multi-step-dialog.js.map +1 -0
  59. package/dist/src/components/ui/nav-breadcrumb.js +1 -1
  60. package/dist/src/components/ui/nav-icon.assignability.js +1 -1
  61. package/dist/src/components/ui/notifications.js +1 -1
  62. package/dist/src/components/ui/radio-group.js +1 -1
  63. package/dist/src/components/ui/scorecard.js +1 -1
  64. package/dist/src/components/ui/search-input.js +1 -1
  65. package/dist/src/components/ui/select.js +1 -1
  66. package/dist/src/components/ui/sheet.js +1 -1
  67. package/dist/src/components/ui/sidebar-provider.js +1 -1
  68. package/dist/src/components/ui/split-button.js +1 -1
  69. package/dist/src/components/ui/stepper.js +1 -1
  70. package/dist/src/components/ui/toast.js +1 -1
  71. package/dist/src/components/ui/tree-view.js +1 -1
  72. package/dist/src/components/ui/user-menu.js +1 -1
  73. package/dist/src/examples/agent-control-plane-processes/DashboardPage.js +1 -1
  74. package/dist/src/examples/project-detail/ProjectDetailPage.js +1 -1
  75. package/dist/src/examples/shared/AppShell.js +1 -1
  76. package/dist/src/examples/shared/DateRangePopover.js +1 -1
  77. package/dist/src/examples/shared/agent-control-plane-nav.js +1 -1
  78. package/dist/src/examples/shared/console-nav.js +1 -1
  79. package/dist/src/examples/shared/cost-nav.js +1 -1
  80. package/dist/src/icons/camunda-app-icons.d.ts.map +1 -1
  81. package/dist/src/icons/camunda-app-icons.js +1 -1
  82. package/dist/src/icons/camunda-app-icons.js.map +1 -1
  83. package/dist/src/icons/index.d.ts +1 -0
  84. package/dist/src/icons/index.d.ts.map +1 -1
  85. package/dist/src/icons/index.js +2 -0
  86. package/dist/src/icons/index.js.map +1 -1
  87. package/dist/src/icons/lucide.assignability.d.ts +2 -0
  88. package/dist/src/icons/lucide.assignability.d.ts.map +1 -0
  89. package/dist/src/icons/lucide.assignability.js +11 -0
  90. package/dist/src/icons/lucide.assignability.js.map +1 -0
  91. package/dist/src/icons/lucide.d.ts +2 -0
  92. package/dist/src/icons/lucide.d.ts.map +1 -0
  93. package/dist/src/icons/lucide.js +11 -0
  94. package/dist/src/icons/lucide.js.map +1 -0
  95. package/dist/src/icons/registry.d.ts +13 -13
  96. package/dist/src/icons/registry.d.ts.map +1 -1
  97. package/dist/src/icons/registry.js +14 -14
  98. package/dist/src/icons/registry.js.map +1 -1
  99. package/dist/src/index.d.ts +3 -0
  100. package/dist/src/index.d.ts.map +1 -1
  101. package/dist/src/index.js +3 -0
  102. package/dist/src/index.js.map +1 -1
  103. package/dist/styles.css +23 -503
  104. package/package.json +11 -3
@@ -2,8 +2,8 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
4
  import { Popover as PopoverPrimitive } from "radix-ui";
5
- import { ChevronDownIcon, XIcon, ListChecksIcon } from "lucide-react";
6
- import {} from "lucide-react";
5
+ import { ChevronDownIcon, XIcon, ListChecksIcon } from "../../icons/lucide.js";
6
+ import {} from "../../icons/lucide.js";
7
7
  import { cn } from "../../lib/utils.js";
8
8
  import { Badge } from "./badge.js";
9
9
  import { C4Provider } from "./c4-provider.js";
@@ -15,11 +15,35 @@ function isGroup(item) {
15
15
  function getAllOptions(options) {
16
16
  return options.flatMap((item) => (isGroup(item) ? item.options : [item]));
17
17
  }
18
- function MultiSelect({ options, value: controlledValue, defaultValue, onValueChange, placeholder = "Select options…", searchable = true, searchPlaceholder = "Search…", sorted = true, maxCount = 3, hideSelectAll = false, closeOnSelect = false, emptyIndicator, size = "default", disabled = false, id, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, }) {
18
+ function MultiSelect({ options, value: controlledValue, defaultValue, onValueChange, placeholder = "Select options…", searchable = true, searchPlaceholder = "Search…", sorted = true, maxCount = 3, hideSelectAll = false, closeOnSelect = false, emptyIndicator, size = "default", disabled = false, id, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, onInputChange, externalFiltering = false, }) {
19
19
  const [open, setOpen] = React.useState(false);
20
20
  const [internalValue, setInternalValue] = React.useState(defaultValue ?? []);
21
+ const [searchValue, setSearchValue] = React.useState("");
21
22
  const isControlled = controlledValue !== undefined;
22
23
  const selected = isControlled ? controlledValue : internalValue;
24
+ // Select All/Clear All on a partial (paginated/server-filtered) `options`
25
+ // page would destroy selections made on pages no longer present in
26
+ // `options` — force it off regardless of the literal `hideSelectAll` prop.
27
+ const effectiveHideSelectAll = hideSelectAll || externalFiltering;
28
+ // The consumer's `options` order is the server rank; don't clobber it.
29
+ const effectiveSorted = sorted && !externalFiltering;
30
+ function handleInputChange(next) {
31
+ setSearchValue(next);
32
+ onInputChange?.(next);
33
+ }
34
+ function handleOpenChange(nextOpen) {
35
+ if (disabled)
36
+ return;
37
+ if (!nextOpen) {
38
+ // The search input is controlled (for `onInputChange`), so its value now
39
+ // lives in MultiSelect's own state instead of dying with cmdk's internal
40
+ // state on popover unmount — reset explicitly or a reopen shows the
41
+ // stale query and stale filtered results.
42
+ setSearchValue("");
43
+ onInputChange?.("");
44
+ }
45
+ setOpen(nextOpen);
46
+ }
23
47
  function updateSelected(next) {
24
48
  if (!isControlled) {
25
49
  setInternalValue(next);
@@ -32,7 +56,10 @@ function MultiSelect({ options, value: controlledValue, defaultValue, onValueCha
32
56
  : [...selected, optionValue];
33
57
  updateSelected(next);
34
58
  if (closeOnSelect) {
35
- setOpen(false);
59
+ // Same reasoning as handleTriggerKeyDown: a raw setOpen(false) here
60
+ // never reaches Radix's onOpenChange, so the search-input reset would
61
+ // be skipped and a reopen would show the stale query.
62
+ handleOpenChange(false);
36
63
  }
37
64
  }
38
65
  const allOptions = getAllOptions(options);
@@ -69,28 +96,57 @@ function MultiSelect({ options, value: controlledValue, defaultValue, onValueCha
69
96
  // keyboard-to-click behaviour; drive open state manually (preventDefault
70
97
  // stops Space from scrolling the page).
71
98
  e.preventDefault();
72
- setOpen((prev) => !prev);
99
+ // Route through handleOpenChange, not a raw setOpen closing must
100
+ // still reset the (now-controlled) search input, and Radix's own
101
+ // onOpenChange is only invoked for its own-initiated changes.
102
+ handleOpenChange(!open);
73
103
  return;
74
104
  }
75
105
  if (e.key === "Backspace" && !open && selected.length > 0) {
76
106
  updateSelected(selected.slice(0, -1));
77
107
  }
78
108
  }
79
- const optionLabelMap = React.useMemo(() => {
80
- const map = new Map();
81
- for (const o of getAllOptions(options)) {
82
- map.set(o.value, o.label);
109
+ // Accumulates label lookups across renders instead of rebuilding from the
110
+ // current `options` alone: in `externalFiltering` mode `options` is only
111
+ // the current query's result page, so a value selected on a prior query
112
+ // (e.g. "Alice") would otherwise lose its label the moment the query
113
+ // changes and she drops out of the page (falls back to the raw value/UUID).
114
+ // Known values are never evicted, so this is safe for the non-external
115
+ // (fully-loaded `options`) case too. Uses the React-sanctioned "adjust
116
+ // state during render" pattern (a setState call gated on a diff, not a
117
+ // ref write) so the merged map is available on this same render.
118
+ const [labelCache, setLabelCache] = React.useState(() => new Map());
119
+ const currentOptions = getAllOptions(options);
120
+ const mergedLabelMap = new Map(labelCache);
121
+ for (const o of currentOptions) {
122
+ mergedLabelMap.set(o.value, o.label);
123
+ }
124
+ // Compare the fully-merged result against the cache, not option-by-option
125
+ // against stale intermediate state — an options array with a repeated
126
+ // `value` carrying different labels would otherwise never converge (each
127
+ // render's per-option comparison would flag a "change" even though the
128
+ // last-wins merge always lands on the same final value).
129
+ let labelMapChanged = mergedLabelMap.size !== labelCache.size;
130
+ if (!labelMapChanged) {
131
+ for (const [key, label] of mergedLabelMap) {
132
+ if (labelCache.get(key) !== label) {
133
+ labelMapChanged = true;
134
+ break;
135
+ }
83
136
  }
84
- return map;
85
- }, [options]);
86
- const groupedItems = options.filter(isGroup).map((g) => sorted
137
+ }
138
+ const optionLabelMap = labelMapChanged ? mergedLabelMap : labelCache;
139
+ if (labelMapChanged) {
140
+ setLabelCache(mergedLabelMap);
141
+ }
142
+ const groupedItems = options.filter(isGroup).map((g) => effectiveSorted
87
143
  ? {
88
144
  ...g,
89
145
  options: [...g.options].sort((a, b) => a.label.localeCompare(b.label)),
90
146
  }
91
147
  : g);
92
148
  const rawFlatItems = options.filter((o) => !isGroup(o));
93
- const flatItems = sorted
149
+ const flatItems = effectiveSorted
94
150
  ? [...rawFlatItems].sort((a, b) => a.label.localeCompare(b.label))
95
151
  : rawFlatItems;
96
152
  // Dev-only migration warning (#496). The trigger became a <div role="combobox">,
@@ -108,7 +164,7 @@ function MultiSelect({ options, value: controlledValue, defaultValue, onValueCha
108
164
  "Pass `aria-labelledby` (pointing at the label's id) or `aria-label` to give it an accessible name (#496).");
109
165
  }
110
166
  }, [id, ariaLabel, ariaLabelledBy]);
111
- return (_jsxs(PopoverPrimitive.Root, { open: open, onOpenChange: disabled ? undefined : setOpen, children: [_jsx(PopoverPrimitive.Trigger, { asChild: true, children: _jsxs("div", { ...{
167
+ return (_jsxs(PopoverPrimitive.Root, { open: open, onOpenChange: disabled ? undefined : handleOpenChange, children: [_jsx(PopoverPrimitive.Trigger, { asChild: true, children: _jsxs("div", { ...{
112
168
  type: undefined,
113
169
  }, "data-slot": "multi-select", "data-size": size, id: id, role: "combobox", tabIndex: disabled ? undefined : 0, "aria-expanded": open, "aria-haspopup": "listbox", "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-disabled": disabled ? "true" : undefined, onKeyDown: handleTriggerKeyDown, className: cn("flex w-full min-h-9 flex-wrap items-center gap-1 rounded-lg border border-input bg-input-background px-2 py-1 text-sm text-left transition-all duration-200 outline-none", "focus-visible:border-primary-border-strong dark:focus-visible:border-primary-border-subtle focus-visible:ring-2 focus-visible:ring-ring", "aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:pointer-events-none", "data-[size=sm]:min-h-8", selected.length === 0 && "text-neutral-foreground-subtle", className), children: [selected.length === 0 ? (_jsx("span", { className: "flex-1 truncate", children: placeholder })) : (_jsxs(_Fragment, { children: [visibleChips.map((v) => {
114
170
  const label = optionLabelMap.get(v) ?? v;
@@ -117,7 +173,7 @@ function MultiSelect({ options, value: controlledValue, defaultValue, onValueCha
117
173
  // `pointer-events-auto` restores interactivity inside a Dialog:
118
174
  // the popover portals as a sibling of the dialog, so it inherits
119
175
  // `pointer-events: none` from the scroll-locked <body> (#496).
120
- "pointer-events-auto z-50 w-[--radix-popover-trigger-width] p-0 rounded-lg border border-input bg-popover text-popover-foreground shadow-md ring-1 ring-border outline-hidden", "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", "data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95", "data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95"), children: _jsxs(Command, { children: [searchable && (_jsx(CommandInput, { placeholder: searchPlaceholder, "aria-label": searchPlaceholder })), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: emptyIndicator ?? "No results found" }), !hideSelectAll && (_jsx(CommandGroup, { children: _jsxs(CommandItem, { onSelect: handleSelectAll, className: "gap-2", children: [_jsx(Checkbox, { checked: allSelected, "aria-hidden": "true", tabIndex: -1, className: "pointer-events-none" }), _jsx(ListChecksIcon, { className: "size-4 text-neutral-foreground-subtle", "aria-hidden": "true" }), allSelected ? "Clear All" : "Select All"] }) })), flatItems.length > 0 && (_jsx(CommandGroup, { children: flatItems.map((option) => {
176
+ "pointer-events-auto z-50 w-[--radix-popover-trigger-width] p-0 rounded-lg border border-input bg-popover text-popover-foreground shadow-md ring-1 ring-border outline-hidden", "data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", "data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95", "data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95"), children: _jsxs(Command, { shouldFilter: !externalFiltering, children: [searchable && (_jsx(CommandInput, { placeholder: searchPlaceholder, "aria-label": searchPlaceholder, value: searchValue, onValueChange: handleInputChange })), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: emptyIndicator ?? "No results found" }), !effectiveHideSelectAll && (_jsx(CommandGroup, { children: _jsxs(CommandItem, { onSelect: handleSelectAll, className: "gap-2", children: [_jsx(Checkbox, { checked: allSelected, "aria-hidden": "true", tabIndex: -1, className: "pointer-events-none" }), _jsx(ListChecksIcon, { className: "size-4 text-neutral-foreground-subtle", "aria-hidden": "true" }), allSelected ? "Clear All" : "Select All"] }) })), flatItems.length > 0 && (_jsx(CommandGroup, { children: flatItems.map((option) => {
121
177
  const isSelected = selected.includes(option.value);
122
178
  const Icon = option.icon;
123
179
  return (_jsxs(CommandItem, { value: option.value, keywords: [option.label], disabled: option.disabled, onSelect: () => toggleOption(option.value), className: "gap-2", children: [_jsx(Checkbox, { checked: isSelected, "aria-hidden": "true", tabIndex: -1, className: "pointer-events-none" }), Icon && (_jsx(Icon, { className: "size-4 text-neutral-foreground-subtle", "aria-hidden": "true" })), option.label] }, option.value));
@@ -1 +1 @@
1
- {"version":3,"file":"multi-select.js","sourceRoot":"","sources":["../../../../src/components/ui/multi-select.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAmB,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EACL,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,GACZ,MAAM,WAAW,CAAC;AAoCnB,SAAS,OAAO,CACd,IAA0C;IAE1C,OAAO,SAAS,IAAI,IAAI,CAAC;AAC3B,CAAC;AAED,SAAS,aAAa,CACpB,OAAiD;IAEjD,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,WAAW,CAAC,EACnB,OAAO,EACP,KAAK,EAAE,eAAe,EACtB,YAAY,EACZ,aAAa,EACb,WAAW,GAAG,iBAAiB,EAC/B,UAAU,GAAG,IAAI,EACjB,iBAAiB,GAAG,SAAS,EAC7B,MAAM,GAAG,IAAI,EACb,QAAQ,GAAG,CAAC,EACZ,aAAa,GAAG,KAAK,EACrB,aAAa,GAAG,KAAK,EACrB,cAAc,EACd,IAAI,GAAG,SAAS,EAChB,QAAQ,GAAG,KAAK,EAChB,EAAE,EACF,SAAS,EACT,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,GAChB;IACjB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,CACtD,YAAY,IAAI,EAAE,CACnB,CAAC;IAEF,MAAM,YAAY,GAAG,eAAe,KAAK,SAAS,CAAC;IACnD,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC;IAEhE,SAAS,cAAc,CAAC,IAAc;QACpC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,SAAS,YAAY,CAAC,WAAmB;QACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;YACzC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC;YAC3C,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC/B,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAChE,MAAM,WAAW,GACf,iBAAiB,CAAC,MAAM,GAAG,CAAC;QAC5B,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAE7D,SAAS,eAAe;QACtB,IAAI,WAAW,EAAE,CAAC;YAChB,cAAc,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC;IACjD,SAAS,YAAY,CAAC,WAAmB,EAAE,CAAmB;QAC5D,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,SAAS,cAAc,CAAC,CAAmB;QACzC,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,SAAS,oBAAoB,CAAC,CAAsC;QAClE,IAAI,QAAQ;YAAE,OAAO;QACrB,2EAA2E;QAC3E,gDAAgD;QAChD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,aAAa;YAAE,OAAO;QACzC,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACvC,wEAAwE;YACxE,yEAAyE;YACzE,wCAAwC;YACxC,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACxC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;QACtC,KAAK,MAAM,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,YAAY,GAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAwB,CAAC,GAAG,CACtE,CAAC,CAAC,EAAE,EAAE,CACJ,MAAM;QACJ,CAAC,CAAC;YACE,GAAG,CAAC;YACJ,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACpC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAC/B;SACF;QACH,CAAC,CAAC,CAAC,CACR,CAAC;IACF,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CACjC,CAAC,CAAC,EAA0B,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAC3C,CAAC;IACF,MAAM,SAAS,GAAG,MAAM;QACtB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAClE,CAAC,CAAC,YAAY,CAAC;IAEjB,iFAAiF;IACjF,gFAAgF;IAChF,gFAAgF;IAChF,sEAAsE;IACtE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;YAAE,OAAO;QAClD,IAAI,SAAS,IAAI,cAAc,IAAI,CAAC,EAAE;YAAE,OAAO;QAC/C,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAC1C,cAAc,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CACjC,CAAC;QACF,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CACV,iFAAiF,EAAE,kBAAkB;gBACnG,2GAA2G,CAC9G,CAAC;QACJ,CAAC;IACH,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC;IAEpC,OAAO,CACL,MAAC,gBAAgB,CAAC,IAAI,IACpB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,aAE5C,KAAC,gBAAgB,CAAC,OAAO,IAAC,OAAO,kBAC/B,kBAIO;wBACH,IAAI,EAAE,SAAS;qBACqC,eAC5C,cAAc,eACb,IAAI,EACf,EAAE,EAAE,EAAE,EACN,IAAI,EAAC,UAAU,EACf,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,mBACnB,IAAI,mBACL,SAAS,gBACX,SAAS,qBACJ,cAAc,mBAChB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC5C,SAAS,EAAE,oBAAoB,EAC/B,SAAS,EAAE,EAAE,CACX,0KAA0K,EAC1K,yIAAyI,EACzI,6FAA6F,EAC7F,wBAAwB,EACxB,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,gCAAgC,EACzD,SAAS,CACV,aAEA,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACvB,eAAM,SAAS,EAAC,iBAAiB,YAAE,WAAW,GAAQ,CACvD,CAAC,CAAC,CAAC,CACF,8BACG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oCACtB,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oCACzC,OAAO,CACL,MAAC,KAAK,IAEJ,OAAO,EAAC,SAAS,EACjB,SAAS,EAAC,8BAA8B,aAExC,eAAM,SAAS,EAAC,kBAAkB,YAAE,KAAK,GAAQ,EACjD,iBACE,IAAI,EAAC,QAAQ,gBACD,UAAU,KAAK,EAAE,EAC7B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAClC,SAAS,EAAC,iIAAiI,YAE3I,KAAC,KAAK,IAAC,SAAS,EAAC,QAAQ,iBAAa,MAAM,GAAG,GACxC,KAbJ,CAAC,CAcA,CACT,CAAC;gCACJ,CAAC,CAAC,EACD,aAAa,GAAG,CAAC,IAAI,CACpB,MAAC,KAAK,IAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAC,gBAAgB,aACjD,gCAAQ,aAAa,aAAa,EAClC,iBACE,IAAI,EAAC,QAAQ,gBACD,UAAU,aAAa,sBAAsB,EACzD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,cAAc,EACvB,SAAS,EAAC,wHAAwH,YAElI,KAAC,KAAK,IAAC,SAAS,EAAC,QAAQ,iBAAa,MAAM,GAAG,GACxC,IACH,CACT,IACA,CACJ,EACD,KAAC,eAAe,IACd,SAAS,EAAC,wDAAwD,iBACtD,MAAM,GAClB,IACE,GACmB,EAE3B,KAAC,gBAAgB,CAAC,MAAM,cACtB,KAAC,UAAU,cACT,KAAC,gBAAgB,CAAC,OAAO,iBACb,sBAAsB,EAChC,KAAK,EAAC,OAAO,EACb,UAAU,EAAE,CAAC,EACb,SAAS,EAAE,EAAE;wBACX,gEAAgE;wBAChE,iEAAiE;wBACjE,+DAA+D;wBAC/D,8KAA8K,EAC9K,6JAA6J,EAC7J,+DAA+D,EAC/D,wEAAwE,CACzE,YAED,MAAC,OAAO,eACL,UAAU,IAAI,CACb,KAAC,YAAY,IACX,WAAW,EAAE,iBAAiB,gBAClB,iBAAiB,GAC7B,CACH,EACD,MAAC,WAAW,eACV,KAAC,YAAY,cACV,cAAc,IAAI,kBAAkB,GACxB,EAEd,CAAC,aAAa,IAAI,CACjB,KAAC,YAAY,cACX,MAAC,WAAW,IAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAC,OAAO,aACvD,KAAC,QAAQ,IACP,OAAO,EAAE,WAAW,iBACR,MAAM,EAClB,QAAQ,EAAE,CAAC,CAAC,EACZ,SAAS,EAAC,qBAAqB,GAC/B,EACF,KAAC,cAAc,IACb,SAAS,EAAC,uCAAuC,iBACrC,MAAM,GAClB,EACD,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,IAC7B,GACD,CAChB,EAEA,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CACvB,KAAC,YAAY,cACV,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gDACxB,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gDACnD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;gDACzB,OAAO,CACL,MAAC,WAAW,IAEV,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EACxB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,QAAQ,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAC1C,SAAS,EAAC,OAAO,aAEjB,KAAC,QAAQ,IACP,OAAO,EAAE,UAAU,iBACP,MAAM,EAClB,QAAQ,EAAE,CAAC,CAAC,EACZ,SAAS,EAAC,qBAAqB,GAC/B,EACD,IAAI,IAAI,CACP,KAAC,IAAI,IACH,SAAS,EAAC,uCAAuC,iBACrC,MAAM,GAClB,CACH,EACA,MAAM,CAAC,KAAK,KAnBR,MAAM,CAAC,KAAK,CAoBL,CACf,CAAC;4CACJ,CAAC,CAAC,GACW,CAChB,EAEA,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC3B,KAAC,YAAY,IAAqB,OAAO,EAAE,KAAK,CAAC,OAAO,YACrD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gDAC5B,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gDACnD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;gDACzB,OAAO,CACL,MAAC,WAAW,IAEV,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EACxB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,QAAQ,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAC1C,SAAS,EAAC,OAAO,aAEjB,KAAC,QAAQ,IACP,OAAO,EAAE,UAAU,iBACP,MAAM,EAClB,QAAQ,EAAE,CAAC,CAAC,EACZ,SAAS,EAAC,qBAAqB,GAC/B,EACD,IAAI,IAAI,CACP,KAAC,IAAI,IACH,SAAS,EAAC,uCAAuC,iBACrC,MAAM,GAClB,CACH,EACA,MAAM,CAAC,KAAK,KAnBR,MAAM,CAAC,KAAK,CAoBL,CACf,CAAC;4CACJ,CAAC,CAAC,IA5Be,KAAK,CAAC,OAAO,CA6BjB,CAChB,CAAC,IACU,IACN,GACe,GAChB,GACW,IACJ,CACzB,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"multi-select.js","sourceRoot":"","sources":["../../../../src/components/ui/multi-select.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import * as React from "react";
2
+ import { DialogBody } from "./dialog.js";
3
+ export type MultiStepDialogSize = "sm" | "md" | "lg" | "full";
4
+ export type MultiStepDialogCloseReason = "complete" | "dismiss" | "escape" | "overlay";
5
+ export type MultiStepDialogStepChangeReason = "next" | "back" | "dot";
6
+ export interface MultiStepDialogProps {
7
+ open?: boolean;
8
+ defaultOpen?: boolean;
9
+ onOpenChange?: (open: boolean, meta: {
10
+ reason: MultiStepDialogCloseReason;
11
+ }) => void;
12
+ step?: string;
13
+ defaultStep?: string;
14
+ onStepChange?: (value: string, meta: {
15
+ reason: MultiStepDialogStepChangeReason;
16
+ }) => void;
17
+ onNext?: () => void;
18
+ onBack?: () => void;
19
+ onComplete?: () => void;
20
+ size?: MultiStepDialogSize;
21
+ backLabel?: string;
22
+ nextLabel?: string;
23
+ completeLabel?: string;
24
+ dotsAriaLabel?: string;
25
+ className?: string;
26
+ restoreFocusRef?: React.RefObject<HTMLElement | null>;
27
+ children?: React.ReactNode;
28
+ }
29
+ declare function MultiStepDialog({ open, defaultOpen, onOpenChange, step, defaultStep, onStepChange, onNext, onBack, onComplete, size, backLabel, nextLabel, completeLabel, dotsAriaLabel, className, restoreFocusRef, children, }: MultiStepDialogProps): React.JSX.Element;
30
+ export interface MultiStepDialogStepProps extends Omit<React.ComponentProps<"div">, "value"> {
31
+ value: string;
32
+ /** Overrides `completeLabel` for this step's Next button when it's the last step. */
33
+ ctaLabel?: string;
34
+ /** Overrides `nextLabel` for this step's Next button when it's not the last step. */
35
+ nextLabel?: string;
36
+ /** Blocks forward advance (Next/CTA and forward dots) while this step is active. */
37
+ disableNext?: boolean;
38
+ /** Reason shown inline next to Next/CTA when `disableNext` is set. */
39
+ disableNextReason?: string;
40
+ }
41
+ declare function MultiStepDialogStep({ value, ctaLabel: _ctaLabel, nextLabel: _nextLabel, disableNext: _disableNext, disableNextReason: _disableNextReason, className, children, ...props }: MultiStepDialogStepProps): React.JSX.Element;
42
+ declare function MultiStepDialogVisual({ className, children, ...props }: React.ComponentProps<"div">): React.JSX.Element;
43
+ declare function MultiStepDialogTitle({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
44
+ declare function MultiStepDialogDescription({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
45
+ declare function MultiStepDialogBody(props: React.ComponentProps<typeof DialogBody>): React.JSX.Element;
46
+ export { MultiStepDialog, MultiStepDialogStep, MultiStepDialogVisual, MultiStepDialogTitle, MultiStepDialogDescription, MultiStepDialogBody, };
47
+ //# sourceMappingURL=multi-step-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-step-dialog.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/multi-step-dialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,201 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { cn } from "../../lib/utils.js";
5
+ import { Dialog, DialogBody, DialogContent, DialogDescription, DialogFooter, DialogTitle, } from "./dialog.js";
6
+ import { Button } from "./button.js";
7
+ import { typographyVariants } from "./typography.js";
8
+ // Only `value` (+ the footer-relevant props below) is read off each child —
9
+ // never `child.type` — so step enumeration survives across bundled copies of
10
+ // this package (the Radix Slot dual-instance precedent this repo already
11
+ // hit). Falsy/conditional children are filtered by `Children.toArray` before
12
+ // this runs, so 5-vs-6 conditionally rendered steps both work.
13
+ function getStepMetas(children) {
14
+ return React.Children.toArray(children)
15
+ .filter(React.isValidElement)
16
+ .map((child) => child.props)
17
+ .filter((props) => typeof props.value === "string")
18
+ .map((props) => ({
19
+ value: props.value,
20
+ ctaLabel: props.ctaLabel,
21
+ nextLabel: props.nextLabel,
22
+ disableNext: props.disableNext,
23
+ disableNextReason: props.disableNextReason,
24
+ }));
25
+ }
26
+ const MultiStepDialogRootContext = React.createContext(null);
27
+ function useMultiStepDialogRootContext(componentName) {
28
+ const ctx = React.useContext(MultiStepDialogRootContext);
29
+ if (!ctx) {
30
+ throw new Error(`<${componentName}> must be used inside <MultiStepDialog>.`);
31
+ }
32
+ return ctx;
33
+ }
34
+ const MultiStepDialogStepContext = React.createContext(null);
35
+ function useMultiStepDialogStepContext(componentName) {
36
+ const ctx = React.useContext(MultiStepDialogStepContext);
37
+ if (!ctx) {
38
+ throw new Error(`<${componentName}> must be used inside <MultiStepDialogStep>.`);
39
+ }
40
+ return ctx;
41
+ }
42
+ function MultiStepDialog({ open, defaultOpen = false, onOpenChange, step, defaultStep, onStepChange, onNext, onBack, onComplete, size = "md", backLabel = "Back", nextLabel = "Next", completeLabel = "Done", dotsAriaLabel = "Steps", className, restoreFocusRef, children, }) {
43
+ const isOpenControlled = open !== undefined;
44
+ const [internalOpen, setInternalOpen] = React.useState(defaultOpen);
45
+ const resolvedOpen = isOpenControlled ? open : internalOpen;
46
+ const isStepControlled = step !== undefined;
47
+ const stepMetas = React.useMemo(() => getStepMetas(children), [children]);
48
+ const stepValues = React.useMemo(() => stepMetas.map((meta) => meta.value), [stepMetas]);
49
+ if (process.env.NODE_ENV === "development") {
50
+ const duplicates = stepValues.filter((value, index) => stepValues.indexOf(value) !== index);
51
+ if (duplicates.length > 0) {
52
+ console.warn(`MultiStepDialog: duplicate MultiStepDialogStep value(s) ${[
53
+ ...new Set(duplicates),
54
+ ]
55
+ .map((v) => `"${v}"`)
56
+ .join(", ")}. Step values must be unique — duplicates break dot ` +
57
+ "navigation and produce duplicate dialog title ids.");
58
+ }
59
+ }
60
+ const [internalStep, setInternalStep] = React.useState(() => defaultStep ?? stepValues[0]);
61
+ const rawActiveValue = isStepControlled ? step : internalStep;
62
+ const activeValue = rawActiveValue !== undefined && stepValues.includes(rawActiveValue)
63
+ ? rawActiveValue
64
+ : stepValues[0];
65
+ const activeIndex = Math.max(0, stepValues.indexOf(activeValue));
66
+ const totalSteps = stepValues.length;
67
+ const isFirstStep = activeIndex === 0;
68
+ const isLastStep = activeIndex === totalSteps - 1;
69
+ const activeStepMeta = stepMetas[activeIndex];
70
+ // Radix's own `onOpenChange(false)` never says *why* it closed. Escape/
71
+ // overlay stamp their reason here BEFORE that callback fires (via
72
+ // DialogContent's `onEscapeKeyDown`/`onPointerDownOutside`); the final-step
73
+ // CTA stamps "complete" itself before triggering the close. Whatever is
74
+ // read out is cleared immediately after, so a later close with no stamp
75
+ // (X, DialogClose, an external `setOpen(false)`) falls back to "dismiss".
76
+ const closeReasonRef = React.useRef(null);
77
+ function emitStepChange(value, reason) {
78
+ if (!isStepControlled)
79
+ setInternalStep(value);
80
+ onStepChange?.(value, { reason });
81
+ }
82
+ function handleDialogOpenChange(nextOpen) {
83
+ if (nextOpen) {
84
+ if (!isOpenControlled)
85
+ setInternalOpen(true);
86
+ closeReasonRef.current = null;
87
+ // No close happened, so there's no "reason" taxonomy to report yet —
88
+ // the meta shape stays uniform across every call for a simpler
89
+ // consumer type, and only the `!next` branch is documented to read it.
90
+ onOpenChange?.(true, { reason: "dismiss" });
91
+ return;
92
+ }
93
+ const reason = closeReasonRef.current ?? "dismiss";
94
+ closeReasonRef.current = null;
95
+ if (!isOpenControlled)
96
+ setInternalOpen(false);
97
+ // Uncontrolled step resets to the first step on any close — bookkeeping
98
+ // for the *next* open, not a navigation event — so no onStepChange fires.
99
+ if (!isStepControlled)
100
+ setInternalStep(stepValues[0]);
101
+ onOpenChange?.(false, { reason });
102
+ if (reason === "complete")
103
+ onComplete?.();
104
+ }
105
+ function handleNext() {
106
+ if (totalSteps === 0 || activeStepMeta?.disableNext)
107
+ return;
108
+ if (isLastStep) {
109
+ closeReasonRef.current = "complete";
110
+ handleDialogOpenChange(false);
111
+ return;
112
+ }
113
+ emitStepChange(stepValues[activeIndex + 1], "next");
114
+ onNext?.();
115
+ }
116
+ function handleBack() {
117
+ if (isFirstStep)
118
+ return;
119
+ emitStepChange(stepValues[activeIndex - 1], "back");
120
+ onBack?.();
121
+ }
122
+ function handleDotClick(targetIndex, targetValue) {
123
+ if (targetIndex === activeIndex)
124
+ return;
125
+ // Backward review is always free; a forward jump respects the same
126
+ // validation gate Next does, so dots aren't an unguarded bypass.
127
+ if (targetIndex > activeIndex && activeStepMeta?.disableNext)
128
+ return;
129
+ emitStepChange(targetValue, "dot");
130
+ }
131
+ const disableNextReasonId = React.useId();
132
+ const showDisableNextReason = Boolean(activeStepMeta?.disableNext) &&
133
+ Boolean(activeStepMeta?.disableNextReason);
134
+ return (_jsx(Dialog, { open: resolvedOpen, onOpenChange: handleDialogOpenChange, children: _jsxs(DialogContent, { size: size, className: className, restoreFocusRef: restoreFocusRef, onEscapeKeyDown: () => {
135
+ closeReasonRef.current = "escape";
136
+ }, onPointerDownOutside: () => {
137
+ closeReasonRef.current = "overlay";
138
+ }, children: [_jsx(MultiStepDialogRootContext.Provider, { value: { activeValue }, children: children }), _jsx("span", { "aria-live": "polite", className: "sr-only", children: `Step ${activeIndex + 1} of ${totalSteps}` }), totalSteps > 1 && (_jsx("ol", { "aria-label": dotsAriaLabel, "data-slot": "multi-step-dialog-dots", className: "m-0 flex list-none items-center justify-center gap-1.5 p-0", children: stepMetas.map((meta, index) => {
139
+ const isActive = index === activeIndex;
140
+ return (_jsx("li", { children: _jsx("button", { type: "button", "aria-label": `Go to step ${index + 1}`, "aria-current": isActive ? "step" : undefined, onClick: () => handleDotClick(index, meta.value), className: cn(
141
+ // Active step is distinguished by SHAPE (a wider pill),
142
+ // not colour alone (WCAG 1.4.1). Inactive fill uses a
143
+ // foreground token so the dot clears the 3:1 non-text
144
+ // contrast floor on the popover surface (WCAG 1.4.11);
145
+ // `neutral-background-*` would sit at ~1.3:1.
146
+ "h-2 rounded-full transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2", isActive
147
+ ? "w-5 bg-primary-action-default"
148
+ : "w-2 bg-neutral-foreground-subtle hover:bg-neutral-foreground-strong") }) }, meta.value));
149
+ }) })), _jsxs(DialogFooter, { className: cn(isFirstStep ? undefined : "sm:justify-between"), children: [!isFirstStep && (_jsx(Button, { type: "button", variant: "secondary", onClick: handleBack, children: backLabel })), _jsxs("div", { className: "flex flex-col items-end gap-1", children: [showDisableNextReason && (_jsx("span", { id: disableNextReasonId, "data-slot": "multi-step-dialog-next-reason", className: "text-xs text-neutral-foreground-subtle", children: activeStepMeta?.disableNextReason })), _jsx(Button, { type: "button", onClick: handleNext, "aria-disabled": activeStepMeta?.disableNext || undefined, "aria-describedby": showDisableNextReason ? disableNextReasonId : undefined, children: isLastStep
150
+ ? (activeStepMeta?.ctaLabel ?? completeLabel)
151
+ : (activeStepMeta?.nextLabel ?? nextLabel) })] })] })] }) }));
152
+ }
153
+ function MultiStepDialogStep({ value, ctaLabel: _ctaLabel, nextLabel: _nextLabel, disableNext: _disableNext, disableNextReason: _disableNextReason, className, children, ...props }) {
154
+ const { activeValue } = useMultiStepDialogRootContext("MultiStepDialogStep");
155
+ const isActive = activeValue === value;
156
+ return (_jsx(MultiStepDialogStepContext.Provider, { value: { isActive }, children: _jsx("div", { ...props, "data-slot": "multi-step-dialog-step", "data-state": isActive ? "active" : "inactive", className: cn(isActive ? "flex min-h-0 flex-1 flex-col gap-4" : "hidden", className), children: children }) }));
157
+ }
158
+ function MultiStepDialogVisual({ className, children, ...props }) {
159
+ const { isActive } = useMultiStepDialogStepContext("MultiStepDialogVisual");
160
+ // Remounts the inner node (via `key`) exactly once per activation so the
161
+ // `animate-in` utilities replay on every step change, not just first mount.
162
+ // `motion-safe:` (never `motion-reduce:`) gates the animation classes, so
163
+ // reduced-motion users get an instant swap with no transform at all.
164
+ const [wasActive, setWasActive] = React.useState(isActive);
165
+ const [generation, setGeneration] = React.useState(0);
166
+ if (isActive !== wasActive) {
167
+ setWasActive(isActive);
168
+ if (isActive)
169
+ setGeneration((g) => g + 1);
170
+ }
171
+ return (_jsx("div", { "data-slot": "multi-step-dialog-visual", className: cn("flex h-32 flex-none items-center justify-center overflow-hidden rounded-lg border border-border bg-neutral-background-subtle", className), ...props, children: _jsx("div", { className: "flex items-center justify-center motion-safe:animate-in motion-safe:fade-in-0 motion-safe:zoom-in-95 motion-safe:duration-150", children: children }, generation) }));
172
+ }
173
+ function MultiStepDialogTitle({ className, ...props }) {
174
+ const { isActive } = useMultiStepDialogStepContext("MultiStepDialogTitle");
175
+ const sharedClassName = cn(typographyVariants({ variant: "heading-sm" }), className);
176
+ // Radix can wire `aria-labelledby` to exactly one id, and every step stays
177
+ // mounted (not unmounted) for state parity — so only the active step's
178
+ // instance may be the real `Dialog.Title`; every other renders identical
179
+ // markup with no ARIA wiring at all, or the dialog would announce the
180
+ // wrong step's title (or hit a duplicate-id violation).
181
+ if (isActive) {
182
+ return _jsx(DialogTitle, { className: sharedClassName, ...props });
183
+ }
184
+ return (_jsx("div", { "data-slot": "multi-step-dialog-title", className: sharedClassName, ...props }));
185
+ }
186
+ function MultiStepDialogDescription({ className, ...props }) {
187
+ const { isActive } = useMultiStepDialogStepContext("MultiStepDialogDescription");
188
+ const sharedClassName = cn(typographyVariants({ variant: "body-subtle" }), "*:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-neutral-foreground-strong", className);
189
+ if (isActive) {
190
+ return _jsx(DialogDescription, { className: sharedClassName, ...props });
191
+ }
192
+ return (_jsx("div", { "data-slot": "multi-step-dialog-description", className: sharedClassName, ...props }));
193
+ }
194
+ // Thin pass-through: routes consumers through this wrapper (not `DialogBody`
195
+ // directly) so any future step-aware behavior added here applies uniformly —
196
+ // see the anti-pattern on importing `DialogBody` directly inside a step.
197
+ function MultiStepDialogBody(props) {
198
+ return _jsx(DialogBody, { ...props });
199
+ }
200
+ export { MultiStepDialog, MultiStepDialogStep, MultiStepDialogVisual, MultiStepDialogTitle, MultiStepDialogDescription, MultiStepDialogBody, };
201
+ //# sourceMappingURL=multi-step-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-step-dialog.js","sourceRoot":"","sources":["../../../../src/components/ui/multi-step-dialog.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
- import { ChevronDown, MoreHorizontal, MoreVertical } from "lucide-react";
4
+ import { ChevronDown, MoreHorizontal, MoreVertical } from "../../icons/lucide.js";
5
5
  import { cn } from "../../lib/utils.js";
6
6
  import { useIsTruncated } from "../../hooks/use-is-truncated.js";
7
7
  import { camundaAppIcons, camundaIcons } from "../../icons/index.js";
@@ -1,4 +1,4 @@
1
- import { Home } from "lucide-react";
1
+ import { Home } from "../../icons/lucide.js";
2
2
  import { camundaIcons, ProjectIcon } from "../../icons/index.js";
3
3
  import { camundaAppIcons } from "../../icons/camunda-app-icons.js";
4
4
  const fromLucide = Home;
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
- import { Bell, X } from "lucide-react";
4
+ import { Bell, X } from "../../icons/lucide.js";
5
5
  import { cn } from "../../lib/utils.js";
6
6
  import { Button } from "./button.js";
7
7
  import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, } from "./sheet.js";
@@ -2,7 +2,7 @@
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
4
  import { RadioGroup as RadioGroupPrimitive } from "radix-ui";
5
- import { CircleIcon } from "lucide-react";
5
+ import { CircleIcon } from "../../icons/lucide.js";
6
6
  import { cn } from "../../lib/utils.js";
7
7
  function RadioGroup({ className, ...props }) {
8
8
  return (_jsx(RadioGroupPrimitive.Root, { "data-slot": "radio-group", className: cn("grid gap-3", className), ...props }));
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
- import { ArrowDownRight, ArrowUpRight } from "lucide-react";
3
+ import { ArrowDownRight, ArrowUpRight } from "../../icons/lucide.js";
4
4
  import { cn } from "../../lib/utils.js";
5
5
  import { Badge } from "./badge.js";
6
6
  import { Card, CardHeader, CardTitle } from "./card.js";
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
- import { SearchIcon, XIcon } from "lucide-react";
3
+ import { SearchIcon, XIcon } from "../../icons/lucide.js";
4
4
  import { cn } from "../../lib/utils.js";
5
5
  import { withRef } from "../../lib/with-ref.js";
6
6
  import { Input } from "./input.js";
@@ -5,7 +5,7 @@ import { Select as SelectPrimitive } from "radix-ui";
5
5
  import { cn } from "../../lib/utils.js";
6
6
  import { composeCloseAutoFocus, useDialogFocusReturn, } from "../../lib/focus-visible-on-close.js";
7
7
  import { C4Provider } from "./c4-provider.js";
8
- import { ChevronDownIcon, CheckIcon, ChevronUpIcon } from "lucide-react";
8
+ import { ChevronDownIcon, CheckIcon, ChevronUpIcon } from "../../icons/lucide.js";
9
9
  function Select({ ...props }) {
10
10
  return _jsx(SelectPrimitive.Root, { "data-slot": "select", ...props });
11
11
  }
@@ -3,7 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
4
  import { Dialog as SheetPrimitive } from "radix-ui";
5
5
  import { cva } from "class-variance-authority";
6
- import { XIcon } from "lucide-react";
6
+ import { XIcon } from "../../icons/lucide.js";
7
7
  import { cn } from "../../lib/utils.js";
8
8
  import { composeCloseAutoFocus, composeOpenAutoFocus, useDialogFocusReturn, } from "../../lib/focus-visible-on-close.js";
9
9
  import { C4Provider } from "./c4-provider.js";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
- import { Menu } from "lucide-react";
4
+ import { Menu } from "../../icons/lucide.js";
5
5
  import { useIsMobile } from "../../hooks/use-is-mobile.js";
6
6
  import { Button } from "../ui/button.js";
7
7
  import { cn } from "../../lib/utils.js";
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import {} from "class-variance-authority";
4
- import { ChevronDown } from "lucide-react";
4
+ import { ChevronDown } from "../../icons/lucide.js";
5
5
  import { cn } from "../../lib/utils.js";
6
6
  import { withRef } from "../../lib/with-ref.js";
7
7
  import { Button, buttonVariants } from "./button.js";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
- import { Check } from "lucide-react";
4
+ import { Check } from "../../icons/lucide.js";
5
5
  import { cn } from "../../lib/utils.js";
6
6
  const StepperContext = React.createContext(null);
7
7
  const StepperItemContext = React.createContext(null);
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import { Toaster as SonnerToaster, toast as sonnerToast, } from "sonner";
4
- import { CheckCircle2, CircleAlert, Info, Loader2, TriangleAlert, X, } from "lucide-react";
4
+ import { CheckCircle2, CircleAlert, Info, Loader2, TriangleAlert, X, } from "../../icons/lucide.js";
5
5
  import { cn } from "../../lib/utils.js";
6
6
  import { buttonVariants } from "./button.js";
7
7
  import { typographyVariants } from "./typography.js";
@@ -3,7 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
3
3
  import * as React from "react";
4
4
  import { getCoreRowModel, getExpandedRowModel, useReactTable, } from "@tanstack/react-table";
5
5
  import { useVirtualizer } from "@tanstack/react-virtual";
6
- import { ChevronRight } from "lucide-react";
6
+ import { ChevronRight } from "../../icons/lucide.js";
7
7
  import { cn } from "../../lib/utils.js";
8
8
  import { Checkbox } from "./checkbox.js";
9
9
  import { Text, typographyVariants } from "./typography.js";
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
- import { LogOut } from "lucide-react";
3
+ import { LogOut } from "../../icons/lucide.js";
4
4
  import { cn } from "../../lib/utils.js";
5
5
  import { Avatar } from "./avatar.js";
6
6
  import { Button } from "./button.js";