@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.
- package/dist/carbon-compat/accordion.js +1 -1
- package/dist/carbon-compat/c3-data-table.js +1 -1
- package/dist/carbon-compat/code-snippet.js +1 -1
- package/dist/carbon-compat/icon-button.d.ts +3 -1
- package/dist/carbon-compat/icon-button.d.ts.map +1 -1
- package/dist/carbon-compat/icon-button.js +34 -7
- package/dist/carbon-compat/icon-button.js.map +1 -1
- package/dist/carbon-compat/loading.js +1 -1
- package/dist/carbon-compat/menu-button.d.ts.map +1 -1
- package/dist/carbon-compat/menu-button.js +1 -1
- package/dist/carbon-compat/menu-button.js.map +1 -1
- package/dist/carbon-compat/overflow-menu.d.ts +2 -2
- package/dist/carbon-compat/overflow-menu.d.ts.map +1 -1
- package/dist/carbon-compat/overflow-menu.js +29 -13
- package/dist/carbon-compat/overflow-menu.js.map +1 -1
- package/dist/carbon-compat/search.js +1 -1
- package/dist/carbon-compat/table-expand.js +1 -1
- package/dist/src/components/ui/alert.d.ts +1 -1
- package/dist/src/components/ui/alert.js +1 -1
- package/dist/src/components/ui/app-sidebar.d.ts.map +1 -1
- package/dist/src/components/ui/app-sidebar.js +3 -3
- package/dist/src/components/ui/app-sidebar.js.map +1 -1
- package/dist/src/components/ui/avatar.js +1 -1
- package/dist/src/components/ui/breadcrumb.js +1 -1
- package/dist/src/components/ui/button.js +1 -1
- package/dist/src/components/ui/calendar.js +1 -1
- package/dist/src/components/ui/card.js +1 -1
- package/dist/src/components/ui/checkbox.js +1 -1
- package/dist/src/components/ui/choice-card.js +1 -1
- package/dist/src/components/ui/code-block.js +1 -1
- package/dist/src/components/ui/combobox.d.ts +20 -4
- package/dist/src/components/ui/combobox.d.ts.map +1 -1
- package/dist/src/components/ui/combobox.js +70 -21
- package/dist/src/components/ui/combobox.js.map +1 -1
- package/dist/src/components/ui/command.js +1 -1
- package/dist/src/components/ui/data-table.js +1 -1
- package/dist/src/components/ui/date-picker.js +1 -1
- package/dist/src/components/ui/date-range-picker.js +1 -1
- package/dist/src/components/ui/dialog.js +1 -1
- package/dist/src/components/ui/dropdown.js +1 -1
- package/dist/src/components/ui/file-uploader.js +1 -1
- package/dist/src/components/ui/icon-button.d.ts +26 -0
- package/dist/src/components/ui/icon-button.d.ts.map +1 -0
- package/dist/src/components/ui/icon-button.js +39 -0
- package/dist/src/components/ui/icon-button.js.map +1 -0
- package/dist/src/components/ui/inline-edit.js +1 -1
- package/dist/src/components/ui/link.d.ts +13 -0
- package/dist/src/components/ui/link.d.ts.map +1 -0
- package/dist/src/components/ui/link.js +65 -0
- package/dist/src/components/ui/link.js.map +1 -0
- package/dist/src/components/ui/multi-select.d.ts +17 -2
- package/dist/src/components/ui/multi-select.d.ts.map +1 -1
- package/dist/src/components/ui/multi-select.js +71 -15
- package/dist/src/components/ui/multi-select.js.map +1 -1
- package/dist/src/components/ui/multi-step-dialog.d.ts +47 -0
- package/dist/src/components/ui/multi-step-dialog.d.ts.map +1 -0
- package/dist/src/components/ui/multi-step-dialog.js +201 -0
- package/dist/src/components/ui/multi-step-dialog.js.map +1 -0
- package/dist/src/components/ui/nav-breadcrumb.js +1 -1
- package/dist/src/components/ui/nav-icon.assignability.js +1 -1
- package/dist/src/components/ui/notifications.js +1 -1
- package/dist/src/components/ui/radio-group.js +1 -1
- package/dist/src/components/ui/scorecard.js +1 -1
- package/dist/src/components/ui/search-input.js +1 -1
- package/dist/src/components/ui/select.js +1 -1
- package/dist/src/components/ui/sheet.js +1 -1
- package/dist/src/components/ui/sidebar-provider.js +1 -1
- package/dist/src/components/ui/split-button.js +1 -1
- package/dist/src/components/ui/stepper.js +1 -1
- package/dist/src/components/ui/toast.js +1 -1
- package/dist/src/components/ui/tree-view.js +1 -1
- package/dist/src/components/ui/user-menu.js +1 -1
- package/dist/src/examples/agent-control-plane-processes/DashboardPage.js +1 -1
- package/dist/src/examples/project-detail/ProjectDetailPage.js +1 -1
- package/dist/src/examples/shared/AppShell.js +1 -1
- package/dist/src/examples/shared/DateRangePopover.js +1 -1
- package/dist/src/examples/shared/agent-control-plane-nav.js +1 -1
- package/dist/src/examples/shared/console-nav.js +1 -1
- package/dist/src/examples/shared/cost-nav.js +1 -1
- package/dist/src/icons/camunda-app-icons.d.ts.map +1 -1
- package/dist/src/icons/camunda-app-icons.js +1 -1
- package/dist/src/icons/camunda-app-icons.js.map +1 -1
- package/dist/src/icons/index.d.ts +1 -0
- package/dist/src/icons/index.d.ts.map +1 -1
- package/dist/src/icons/index.js +2 -0
- package/dist/src/icons/index.js.map +1 -1
- package/dist/src/icons/lucide.assignability.d.ts +2 -0
- package/dist/src/icons/lucide.assignability.d.ts.map +1 -0
- package/dist/src/icons/lucide.assignability.js +11 -0
- package/dist/src/icons/lucide.assignability.js.map +1 -0
- package/dist/src/icons/lucide.d.ts +2 -0
- package/dist/src/icons/lucide.d.ts.map +1 -0
- package/dist/src/icons/lucide.js +11 -0
- package/dist/src/icons/lucide.js.map +1 -0
- package/dist/src/icons/registry.d.ts +13 -13
- package/dist/src/icons/registry.d.ts.map +1 -1
- package/dist/src/icons/registry.js +14 -14
- package/dist/src/icons/registry.js.map +1 -1
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/styles.css +23 -503
- 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
|
|
6
|
-
import {} from "lucide
|
|
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
|
|
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
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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 =
|
|
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 :
|
|
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" }), !
|
|
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;
|
|
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":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAC/B,OAAO,EACL,MAAM,EACN,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,WAAW,GACZ,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAelD,4EAA4E;AAC5E,6EAA6E;AAC7E,yEAAyE;AACzE,6EAA6E;AAC7E,+DAA+D;AAC/D,SAAS,YAAY,CAAC,QAAyB;IAC7C,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;SACpC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;SAC5B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAA0C,CAAC;SAChE,MAAM,CACL,CAAC,KAAK,EAAqC,EAAE,CAC3C,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAClC;SACA,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACf,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;KAC3C,CAAC,CAAC,CAAC;AACR,CAAC;AAED,MAAM,0BAA0B,GAAG,KAAK,CAAC,aAAa,CAE5C,IAAI,CAAC,CAAC;AAEhB,SAAS,6BAA6B,CAAC,aAAqB;IAC1D,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC;IACzD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,IAAI,aAAa,0CAA0C,CAC5D,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,0BAA0B,GAAG,KAAK,CAAC,aAAa,CAE5C,IAAI,CAAC,CAAC;AAEhB,SAAS,6BAA6B,CAAC,aAAqB;IAC1D,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC;IACzD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,IAAI,aAAa,8CAA8C,CAChE,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AA4BD,SAAS,eAAe,CAAC,EACvB,IAAI,EACJ,WAAW,GAAG,KAAK,EACnB,YAAY,EACZ,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,MAAM,EACN,MAAM,EACN,UAAU,EACV,IAAI,GAAG,IAAI,EACX,SAAS,GAAG,MAAM,EAClB,SAAS,GAAG,MAAM,EAClB,aAAa,GAAG,MAAM,EACtB,aAAa,GAAG,OAAO,EACvB,SAAS,EACT,eAAe,EACf,QAAQ,GACa;IACrB,MAAM,gBAAgB,GAAG,IAAI,KAAK,SAAS,CAAC;IAC5C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;IAE5D,MAAM,gBAAgB,GAAG,IAAI,KAAK,SAAS,CAAC;IAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAC9B,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EACzC,CAAC,SAAS,CAAC,CACZ,CAAC;IAEF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAClC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CACtD,CAAC;QACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CACV,2DAA2D;gBACzD,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC;aACvB;iBACE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;iBACpB,IAAI,CAAC,IAAI,CAAC,sDAAsD;gBACjE,oDAAoD,CACvD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,KAAK,CAAC,QAAQ,CACpD,GAAG,EAAE,CAAC,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC,CACnC,CAAC;IAEF,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;IAC9D,MAAM,WAAW,GACf,cAAc,KAAK,SAAS,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC;QACjE,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;IACrC,MAAM,WAAW,GAAG,WAAW,KAAK,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,WAAW,KAAK,UAAU,GAAG,CAAC,CAAC;IAClD,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IAE9C,wEAAwE;IACxE,kEAAkE;IAClE,4EAA4E;IAC5E,wEAAwE;IACxE,wEAAwE;IACxE,0EAA0E;IAC1E,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAoC,IAAI,CAAC,CAAC;IAE7E,SAAS,cAAc,CACrB,KAAa,EACb,MAAuC;QAEvC,IAAI,CAAC,gBAAgB;YAAE,eAAe,CAAC,KAAK,CAAC,CAAC;QAC9C,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,SAAS,sBAAsB,CAAC,QAAiB;QAC/C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,gBAAgB;gBAAE,eAAe,CAAC,IAAI,CAAC,CAAC;YAC7C,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;YAC9B,qEAAqE;YACrE,+DAA+D;YAC/D,uEAAuE;YACvE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,IAAI,SAAS,CAAC;QACnD,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,gBAAgB;YAAE,eAAe,CAAC,KAAK,CAAC,CAAC;QAC9C,wEAAwE;QACxE,0EAA0E;QAC1E,IAAI,CAAC,gBAAgB;YAAE,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAClC,IAAI,MAAM,KAAK,UAAU;YAAE,UAAU,EAAE,EAAE,CAAC;IAC5C,CAAC;IAED,SAAS,UAAU;QACjB,IAAI,UAAU,KAAK,CAAC,IAAI,cAAc,EAAE,WAAW;YAAE,OAAO;QAC5D,IAAI,UAAU,EAAE,CAAC;YACf,cAAc,CAAC,OAAO,GAAG,UAAU,CAAC;YACpC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,cAAc,CAAC,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,EAAE,EAAE,CAAC;IACb,CAAC;IAED,SAAS,UAAU;QACjB,IAAI,WAAW;YAAE,OAAO;QACxB,cAAc,CAAC,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,EAAE,EAAE,CAAC;IACb,CAAC;IAED,SAAS,cAAc,CAAC,WAAmB,EAAE,WAAmB;QAC9D,IAAI,WAAW,KAAK,WAAW;YAAE,OAAO;QACxC,mEAAmE;QACnE,iEAAiE;QACjE,IAAI,WAAW,GAAG,WAAW,IAAI,cAAc,EAAE,WAAW;YAAE,OAAO;QACrE,cAAc,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,mBAAmB,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IAC1C,MAAM,qBAAqB,GACzB,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC;QACpC,OAAO,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;IAE7C,OAAO,CACL,KAAC,MAAM,IAAC,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,sBAAsB,YAC9D,MAAC,aAAa,IACZ,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE,GAAG,EAAE;gBACpB,cAAc,CAAC,OAAO,GAAG,QAAQ,CAAC;YACpC,CAAC,EACD,oBAAoB,EAAE,GAAG,EAAE;gBACzB,cAAc,CAAC,OAAO,GAAG,SAAS,CAAC;YACrC,CAAC,aAED,KAAC,0BAA0B,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,WAAW,EAAE,YACxD,QAAQ,GAC2B,EAEtC,4BAAgB,QAAQ,EAAC,SAAS,EAAC,SAAS,YACzC,QAAQ,WAAW,GAAG,CAAC,OAAO,UAAU,EAAE,GACtC,EAEN,UAAU,GAAG,CAAC,IAAI,CACjB,2BACc,aAAa,eACf,wBAAwB,EAClC,SAAS,EAAC,4DAA4D,YAErE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;wBAC7B,MAAM,QAAQ,GAAG,KAAK,KAAK,WAAW,CAAC;wBACvC,OAAO,CACL,uBACE,iBACE,IAAI,EAAC,QAAQ,gBACD,cAAc,KAAK,GAAG,CAAC,EAAE,kBACvB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC3C,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAChD,SAAS,EAAE,EAAE;gCACX,wDAAwD;gCACxD,sDAAsD;gCACtD,sDAAsD;gCACtD,uDAAuD;gCACvD,8CAA8C;gCAC9C,qIAAqI,EACrI,QAAQ;oCACN,CAAC,CAAC,+BAA+B;oCACjC,CAAC,CAAC,qEAAqE,CAC1E,GACD,IAjBK,IAAI,CAAC,KAAK,CAkBd,CACN,CAAC;oBACJ,CAAC,CAAC,GACC,CACN,EAED,MAAC,YAAY,IACX,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,aAE5D,CAAC,WAAW,IAAI,CACf,KAAC,MAAM,IAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAE,UAAU,YAC1D,SAAS,GACH,CACV,EACD,eAAK,SAAS,EAAC,+BAA+B,aAC3C,qBAAqB,IAAI,CACxB,eACE,EAAE,EAAE,mBAAmB,eACb,+BAA+B,EACzC,SAAS,EAAC,wCAAwC,YAEjD,cAAc,EAAE,iBAAiB,GAC7B,CACR,EACD,KAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,UAAU,mBACJ,cAAc,EAAE,WAAW,IAAI,SAAS,sBAErD,qBAAqB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,YAGxD,UAAU;wCACT,CAAC,CAAC,CAAC,cAAc,EAAE,QAAQ,IAAI,aAAa,CAAC;wCAC7C,CAAC,CAAC,CAAC,cAAc,EAAE,SAAS,IAAI,SAAS,CAAC,GACrC,IACL,IACO,IACD,GACT,CACV,CAAC;AACJ,CAAC;AAiBD,SAAS,mBAAmB,CAAC,EAC3B,KAAK,EACL,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAE,UAAU,EACrB,WAAW,EAAE,YAAY,EACzB,iBAAiB,EAAE,kBAAkB,EACrC,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACiB;IACzB,MAAM,EAAE,WAAW,EAAE,GAAG,6BAA6B,CAAC,qBAAqB,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,WAAW,KAAK,KAAK,CAAC;IAEvC,OAAO,CACL,KAAC,0BAA0B,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,YAStD,iBACM,KAAK,eACC,wBAAwB,gBACtB,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAC5C,SAAS,EAAE,EAAE,CACX,QAAQ,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,QAAQ,EAC1D,SAAS,CACV,YAEA,QAAQ,GACL,GAC8B,CACvC,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,EAC7B,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACoB;IAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,6BAA6B,CAAC,uBAAuB,CAAC,CAAC;IAE5E,yEAAyE;IACzE,4EAA4E;IAC5E,0EAA0E;IAC1E,qEAAqE;IACrE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,YAAY,CAAC,QAAQ,CAAC,CAAC;QACvB,IAAI,QAAQ;YAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,CACL,2BACY,0BAA0B,EACpC,SAAS,EAAE,EAAE,CACX,8HAA8H,EAC9H,SAAS,CACV,KACG,KAAK,YAET,cAEE,SAAS,EAAC,+HAA+H,YAExI,QAAQ,IAHJ,UAAU,CAIX,GACF,CACP,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,EAC5B,SAAS,EACT,GAAG,KAAK,EACoB;IAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,6BAA6B,CAAC,sBAAsB,CAAC,CAAC;IAC3E,MAAM,eAAe,GAAG,EAAE,CACxB,kBAAkB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAC7C,SAAS,CACV,CAAC;IAEF,2EAA2E;IAC3E,uEAAuE;IACvE,yEAAyE;IACzE,sEAAsE;IACtE,wDAAwD;IACxD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,KAAC,WAAW,IAAC,SAAS,EAAE,eAAe,KAAM,KAAK,GAAI,CAAC;IAChE,CAAC;IACD,OAAO,CACL,2BACY,yBAAyB,EACnC,SAAS,EAAE,eAAe,KACtB,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,EAClC,SAAS,EACT,GAAG,KAAK,EACoB;IAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,6BAA6B,CAChD,4BAA4B,CAC7B,CAAC;IACF,MAAM,eAAe,GAAG,EAAE,CACxB,kBAAkB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAC9C,qFAAqF,EACrF,SAAS,CACV,CAAC;IAEF,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,KAAC,iBAAiB,IAAC,SAAS,EAAE,eAAe,KAAM,KAAK,GAAI,CAAC;IACtE,CAAC;IACD,OAAO,CACL,2BACY,+BAA+B,EACzC,SAAS,EAAE,eAAe,KACtB,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,6EAA6E;AAC7E,yEAAyE;AACzE,SAAS,mBAAmB,CAAC,KAA8C;IACzE,OAAO,KAAC,UAAU,OAAK,KAAK,GAAI,CAAC;AACnC,CAAC;AAED,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,mBAAmB,GACpB,CAAC"}
|
|
@@ -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
|
|
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,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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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";
|