impact-nova 2.1.0-alpha.4 → 2.1.0-alpha.5

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 (136) hide show
  1. package/dist/components/data/ag-grid-react/ag-grid-tooltip-overflow.d.ts +3 -0
  2. package/dist/components/data/ag-grid-react/ag-grid-tooltip-overflow.js +6 -0
  3. package/dist/components/data/ag-grid-react/ag-grid.types.d.ts +15 -21
  4. package/dist/components/data/ag-grid-react/cell-renderers/date-display-renderer.js +1 -1
  5. package/dist/components/data/ag-grid-react/cell-renderers/default-text-cell-renderer.d.ts +1 -2
  6. package/dist/components/data/ag-grid-react/cell-renderers/default-text-cell-renderer.js +12 -6
  7. package/dist/components/data/ag-grid-react/cell-renderers/editors/textarea-cell-editor.js +19 -19
  8. package/dist/components/data/ag-grid-react/cell-renderers/select-display-renderer.js +1 -1
  9. package/dist/components/data/ag-grid-react/cell-renderers/switch-display-renderer.js +15 -15
  10. package/dist/components/data/ag-grid-react/headers/advanced-filter/advanced-filter-dialog.js +1 -1
  11. package/dist/components/data/ag-grid-react/headers/advanced-filter/column-filter-section.js +33 -33
  12. package/dist/components/data/ag-grid-react/headers/components/header-info.js +66 -62
  13. package/dist/components/data/ag-grid-react/headers/components/info-modal.js +6 -6
  14. package/dist/components/data/ag-grid-react/headers/components/section-renderers.js +18 -18
  15. package/dist/components/data/ag-grid-react/headers/custom-header-group.js +40 -29
  16. package/dist/components/data/ag-grid-react/headers/custom-header.js +102 -98
  17. package/dist/components/data/ag-grid-react/index.d.ts +1 -1
  18. package/dist/components/data/ag-grid-react/index.js +156 -148
  19. package/dist/components/data/ag-grid-react/theme.js +3 -0
  20. package/dist/components/data/ag-grid-react/use-ag-grid-truncation-tooltip.d.ts +5 -0
  21. package/dist/components/data/ag-grid-react/use-ag-grid-truncation-tooltip.js +13 -0
  22. package/dist/components/data/ag-grid-react/useGridAutoSizeStrategyOnResize.js +8 -5
  23. package/dist/components/data/data-table/data-table-column-apply.d.ts +16 -0
  24. package/dist/components/data/data-table/data-table-column-apply.js +18 -0
  25. package/dist/components/data/data-table/data-table-column-list.d.ts +13 -3
  26. package/dist/components/data/data-table/data-table-column-list.js +198 -191
  27. package/dist/components/data/data-table/data-table-constants.d.ts +3 -4
  28. package/dist/components/data/data-table/data-table-context.d.ts +3 -6
  29. package/dist/components/data/data-table/data-table-context.js +21 -10
  30. package/dist/components/data/data-table/data-table-saved-views.js +26 -26
  31. package/dist/components/data/data-table/data-table-sheet-portal-store.d.ts +13 -0
  32. package/dist/components/data/data-table/data-table-sheet-portal-store.js +36 -0
  33. package/dist/components/data/data-table/data-table-sheet.d.ts +3 -6
  34. package/dist/components/data/data-table/data-table-sheet.js +1 -1
  35. package/dist/components/data/data-table/data-table-view-menu.js +40 -40
  36. package/dist/components/data/data-table/data-table.d.ts +8 -10
  37. package/dist/components/data/data-table/data-table.js +131 -113
  38. package/dist/components/data/data-table/data-table.types.d.ts +35 -0
  39. package/dist/components/data/data-table/index.js +28 -27
  40. package/dist/components/data/data-table/indicator-legend.js +6 -6
  41. package/dist/components/data/expandable-list-item/expandable-list-item-attributes.d.ts +8 -0
  42. package/dist/components/data/expandable-list-item/expandable-list-item-attributes.js +72 -0
  43. package/dist/components/data/expandable-list-item/expandable-list-item-context.d.ts +13 -0
  44. package/dist/components/data/expandable-list-item/expandable-list-item-context.js +25 -0
  45. package/dist/components/data/expandable-list-item/expandable-list-item-metrics.d.ts +6 -0
  46. package/dist/components/data/expandable-list-item/expandable-list-item-metrics.js +41 -0
  47. package/dist/components/data/expandable-list-item/expandable-list-item-parts.d.ts +31 -0
  48. package/dist/components/data/expandable-list-item/expandable-list-item-parts.js +233 -0
  49. package/dist/components/data/expandable-list-item/expandable-list-item-preset.d.ts +18 -0
  50. package/dist/components/data/expandable-list-item/expandable-list-item-preset.js +133 -0
  51. package/dist/components/data/expandable-list-item/expandable-list-item.d.ts +5 -0
  52. package/dist/components/data/{expandable-sku/expandable-sku.types.d.ts → expandable-list-item/expandable-list-item.types.d.ts} +7 -7
  53. package/dist/components/data/expandable-list-item/index.d.ts +5 -0
  54. package/dist/components/data/expandable-list-item/index.js +19 -0
  55. package/dist/components/data/nested-list/components/NestedListHeader.js +11 -11
  56. package/dist/components/data/nested-list/components/SortableItem.js +2 -2
  57. package/dist/components/data-display/avatar/avatar.types.d.ts +2 -0
  58. package/dist/components/data-display/badge/badge.types.d.ts +2 -0
  59. package/dist/components/data-display/calendar/calendar-day-picker-classnames.js +11 -11
  60. package/dist/components/data-display/calendar/calendar-month-picker-panel.js +7 -7
  61. package/dist/components/data-display/calendar/calendar-week-number-cell.js +31 -31
  62. package/dist/components/data-display/card/card.js +8 -8
  63. package/dist/components/data-display/chart/chart.types.d.ts +9 -0
  64. package/dist/components/data-display/skeleton/skeleton.js +6 -6
  65. package/dist/components/data-display/statistics-card/statistics-card.js +14 -14
  66. package/dist/components/feedback/alert-dialog/alert-dialog.js +19 -19
  67. package/dist/components/feedback/dialog/dialog.js +1 -1
  68. package/dist/components/feedback/drawer/drawer.js +18 -18
  69. package/dist/components/feedback/dropdown-menu/dropdown-menu.js +70 -57
  70. package/dist/components/feedback/popover/popover.js +1 -1
  71. package/dist/components/feedback/sheet/sheet.js +1 -1
  72. package/dist/components/feedback/tooltip/tooltip.js +22 -22
  73. package/dist/components/feedback/tooltip/tooltip.variants.js +1 -1
  74. package/dist/components/flows/command-palette/command-palette.js +104 -104
  75. package/dist/components/flows/command-palette/shortcut-settings.js +34 -34
  76. package/dist/components/flows/filter-strip/filter-tag-list.js +4 -4
  77. package/dist/components/flows/notification-panel/notification-list.js +17 -17
  78. package/dist/components/flows/notification-panel/notification-panel.js +4 -4
  79. package/dist/components/flows/notification-panel/notification-panel.types.d.ts +3 -0
  80. package/dist/components/flows/wizard/wizard.js +8 -8
  81. package/dist/components/forms/combobox/combobox.js +20 -20
  82. package/dist/components/forms/date-picker/date-picker.js +17 -17
  83. package/dist/components/forms/date-picker/date-range-picker.js +3 -3
  84. package/dist/components/forms/date-picker/month-picker.js +1 -1
  85. package/dist/components/forms/date-picker/month-range-picker.js +42 -42
  86. package/dist/components/forms/date-picker/week-picker.js +15 -15
  87. package/dist/components/forms/date-picker/week-range-picker.js +3 -3
  88. package/dist/components/forms/file-upload/file-upload.js +33 -33
  89. package/dist/components/forms/input/input.js +8 -8
  90. package/dist/components/forms/input/input.variants.js +3 -3
  91. package/dist/components/forms/select/components/SelectMenuPanel.d.ts +1 -2
  92. package/dist/components/forms/select/components/SelectMenuPanel.js +18 -20
  93. package/dist/components/forms/select/components/SelectTrigger.d.ts +9 -6
  94. package/dist/components/forms/select/components/SelectTrigger.js +120 -122
  95. package/dist/components/forms/select/components/Submenu.js +8 -8
  96. package/dist/components/forms/select/hooks/useSelectKeyboardHandlers.d.ts +1 -1
  97. package/dist/components/forms/select/select.js +86 -86
  98. package/dist/components/forms/select/select.variants.js +4 -4
  99. package/dist/components/layout/sidebar/sidebar.d.ts +7 -50
  100. package/dist/components/layout/sidebar/sidebar.js +12 -11
  101. package/dist/components/layout/sidebar/sidebar.types.d.ts +35 -1
  102. package/dist/components/primitives/button-group/button-group.js +32 -32
  103. package/dist/components/primitives/chips/chips.variants.js +5 -5
  104. package/dist/components/primitives/empty-container/empty-container.types.d.ts +3 -0
  105. package/dist/components/primitives/kbd/kbd.variants.js +3 -3
  106. package/dist/components/primitives/stepper/stepper.js +6 -6
  107. package/dist/impact-nova-components.css +97 -0
  108. package/dist/impact-nova-tokens.scss +2 -4
  109. package/dist/impact-nova.css +1 -1
  110. package/dist/index.d.ts +1 -1
  111. package/dist/index.js +446 -413
  112. package/dist/lib/compose-refs.d.ts +8 -0
  113. package/dist/lib/compose-refs.js +14 -0
  114. package/dist/lib/primitives/field.types.d.ts +8 -2
  115. package/dist/lib/virtualized/index.d.ts +3 -0
  116. package/dist/lib/virtualized/index.js +33 -16
  117. package/dist/lib/virtualized/useVirtualizedList.d.ts +2 -0
  118. package/dist/lib/virtualized/useVirtualizedList.js +115 -109
  119. package/dist/lib/virtualized/virtualized-list-context.d.ts +12 -0
  120. package/dist/lib/virtualized/virtualized-list-context.js +21 -0
  121. package/dist/lib/virtualized/virtualized-list-parts.d.ts +51 -0
  122. package/dist/lib/virtualized/virtualized-list-parts.js +175 -0
  123. package/dist/lib/virtualized/virtualized-list-utils.d.ts +5 -0
  124. package/dist/lib/virtualized/virtualized-list-utils.js +6 -0
  125. package/dist/llms/rules/installation.js +1 -1
  126. package/dist/llms/rules/migration.js +1 -1
  127. package/dist/llms/rules/real-world-patterns.js +1 -1
  128. package/dist/llms/rules/requirements.js +1 -1
  129. package/package.json +24 -15
  130. package/tailwind.config.js +1 -0
  131. package/dist/components/data/ag-grid-react/headers/components/truncated-text.d.ts +0 -15
  132. package/dist/components/data/ag-grid-react/headers/components/truncated-text.js +0 -27
  133. package/dist/components/data/expandable-sku/expandable-sku.d.ts +0 -38
  134. package/dist/components/data/expandable-sku/expandable-sku.js +0 -245
  135. package/dist/components/data/expandable-sku/index.d.ts +0 -2
  136. package/dist/components/data/expandable-sku/index.js +0 -4
@@ -0,0 +1,233 @@
1
+ import { jsx as n, jsxs as v } from "react/jsx-runtime";
2
+ import * as i from "react";
3
+ import { ChevronRight as y } from "impact-nova-icons";
4
+ import { AccordionContent as R, Accordion as A, AccordionItem as k, AccordionTrigger as T } from "../../primitives/accordion/accordion.js";
5
+ import { Checkbox as P } from "../../forms/checkbox/checkbox.js";
6
+ import { createCompoundPart as I } from "../../../lib/primitives/create-compound.js";
7
+ import { cn as r } from "../../../lib/utils.js";
8
+ import { useExpandableListItemContext as x, ExpandableListItemProvider as E, EXPANDABLE_LIST_ITEM_ACCORDION_VALUE as c } from "./expandable-list-item-context.js";
9
+ function N(e, t) {
10
+ return r(
11
+ "rounded-xl transition-[background-color,border-color,box-shadow] duration-200",
12
+ e ? "border-stroke-accent/40 bg-canvas-accent shadow-sm" : "border-stroke bg-canvas-elevated",
13
+ t
14
+ );
15
+ }
16
+ function V(e) {
17
+ return i.isValidElement(e) && e.type.displayName === "ExpandableListItemContent";
18
+ }
19
+ const D = i.forwardRef(
20
+ ({
21
+ className: e,
22
+ selected: t,
23
+ expanded: a,
24
+ defaultExpanded: o = !1,
25
+ onExpandedChange: s,
26
+ disabled: l,
27
+ expandAriaLabel: m = "Expand details",
28
+ collapseAriaLabel: b = "Collapse details",
29
+ children: p,
30
+ ...f
31
+ }, h) => {
32
+ const d = !!t, L = i.Children.toArray(p).find(V) != null, u = i.useMemo(
33
+ () => ({
34
+ showSelectionChrome: d,
35
+ disabled: l,
36
+ expandAriaLabel: m,
37
+ collapseAriaLabel: b
38
+ }),
39
+ [d, l, m, b]
40
+ );
41
+ if (!L)
42
+ return /* @__PURE__ */ n(E, { value: u, children: /* @__PURE__ */ n(
43
+ "div",
44
+ {
45
+ ref: h,
46
+ "data-component": "expandable-list-item-row",
47
+ "data-expandable": "false",
48
+ "data-selected": t ? "" : void 0,
49
+ "data-selection-chrome": d ? "" : void 0,
50
+ className: N(d, e),
51
+ ...f,
52
+ children: p
53
+ }
54
+ ) });
55
+ const g = a !== void 0, C = g ? a ? c : "" : void 0;
56
+ return /* @__PURE__ */ n(E, { value: u, children: /* @__PURE__ */ n(
57
+ "div",
58
+ {
59
+ ref: h,
60
+ "data-component": "expandable-list-item",
61
+ "data-expandable": "true",
62
+ "data-expanded": a ?? void 0,
63
+ "data-selected": t ? "" : void 0,
64
+ "data-selection-chrome": d ? "" : void 0,
65
+ className: N(d, e),
66
+ ...f,
67
+ children: /* @__PURE__ */ n(
68
+ A,
69
+ {
70
+ type: "single",
71
+ collapsible: !0,
72
+ disabled: l,
73
+ ...g ? { value: C } : {
74
+ defaultValue: o ? c : void 0
75
+ },
76
+ onValueChange: (w) => s?.(w === c),
77
+ children: /* @__PURE__ */ n(
78
+ k,
79
+ {
80
+ value: c,
81
+ className: "overflow-visible rounded-none border-0 bg-transparent p-0 shadow-none",
82
+ children: p
83
+ }
84
+ )
85
+ }
86
+ )
87
+ }
88
+ ) });
89
+ }
90
+ );
91
+ D.displayName = "ExpandableListItemRoot";
92
+ const W = I("expandable-list-item", {
93
+ part: "row",
94
+ displayName: "ExpandableListItemRow",
95
+ className: "flex items-start gap-3 px-3 py-3"
96
+ }), M = i.forwardRef(({ className: e, onCheckedChange: t, ...a }, o) => /* @__PURE__ */ n(
97
+ "div",
98
+ {
99
+ className: r("pt-0.5", e),
100
+ "data-component": "expandable-list-item-checkbox",
101
+ onClick: (s) => s.stopPropagation(),
102
+ onKeyDown: (s) => s.stopPropagation(),
103
+ children: /* @__PURE__ */ n(
104
+ P,
105
+ {
106
+ ref: o,
107
+ onCheckedChange: (s) => t?.(s === !0),
108
+ ...a
109
+ }
110
+ )
111
+ }
112
+ ));
113
+ M.displayName = "ExpandableListItemCheckbox";
114
+ const S = i.forwardRef(({ className: e, children: t, ...a }, o) => {
115
+ const { disabled: s, expandAriaLabel: l, collapseAriaLabel: m } = x();
116
+ return /* @__PURE__ */ v(
117
+ T,
118
+ {
119
+ ref: o,
120
+ variant: "plain",
121
+ "data-component": "expandable-list-item-trigger",
122
+ className: r(
123
+ "min-w-0 items-center gap-2 text-left",
124
+ s && "pointer-events-none opacity-50",
125
+ e
126
+ ),
127
+ disabled: s,
128
+ ...a,
129
+ children: [
130
+ t,
131
+ /* @__PURE__ */ n(
132
+ "span",
133
+ {
134
+ className: "mt-0.5 inline-flex shrink-0 text-content-icon transition-transform duration-200 motion-reduce:transition-none group-data-[state=open]:rotate-180",
135
+ "aria-hidden": !0,
136
+ children: /* @__PURE__ */ n(y, { className: "size-4 rotate-90" })
137
+ }
138
+ ),
139
+ /* @__PURE__ */ v("span", { className: "sr-only", children: [
140
+ l,
141
+ " / ",
142
+ m
143
+ ] })
144
+ ]
145
+ }
146
+ );
147
+ });
148
+ S.displayName = "ExpandableListItemTrigger";
149
+ const _ = i.forwardRef(({ className: e, ...t }, a) => {
150
+ const { showSelectionChrome: o } = x();
151
+ return /* @__PURE__ */ n(
152
+ "span",
153
+ {
154
+ ref: a,
155
+ "data-component": "expandable-list-item-title",
156
+ className: r(
157
+ "text-sm font-semibold leading-6 text-content",
158
+ o && "tracking-tight",
159
+ e
160
+ ),
161
+ ...t
162
+ }
163
+ );
164
+ });
165
+ _.displayName = "ExpandableListItemTitle";
166
+ const j = i.forwardRef(({ className: e, ...t }, a) => /* @__PURE__ */ n(
167
+ "div",
168
+ {
169
+ ref: a,
170
+ "data-component": "expandable-list-item-description",
171
+ className: r("mt-0.5 text-xs font-medium leading-4 text-secondary-foreground", e),
172
+ ...t
173
+ }
174
+ ));
175
+ j.displayName = "ExpandableListItemDescription";
176
+ const B = i.forwardRef(({ className: e, ...t }, a) => /* @__PURE__ */ n(
177
+ "div",
178
+ {
179
+ ref: a,
180
+ "data-component": "expandable-list-item-media",
181
+ className: r("flex flex-wrap items-center gap-2", e),
182
+ ...t
183
+ }
184
+ ));
185
+ B.displayName = "ExpandableListItemMedia";
186
+ const F = i.forwardRef(({ className: e, ...t }, a) => {
187
+ const { disabled: o } = x();
188
+ return /* @__PURE__ */ n(
189
+ "div",
190
+ {
191
+ ref: a,
192
+ "data-component": "expandable-list-item-header",
193
+ className: r(
194
+ "min-w-0 flex-1",
195
+ o && "pointer-events-none opacity-50",
196
+ e
197
+ ),
198
+ ...t
199
+ }
200
+ );
201
+ });
202
+ F.displayName = "ExpandableListItemHeader";
203
+ const H = i.forwardRef(({ className: e, children: t, ...a }, o) => /* @__PURE__ */ n(R, { className: "border-0 bg-transparent p-0 pb-[0.01rem]", children: /* @__PURE__ */ n(
204
+ "div",
205
+ {
206
+ ref: o,
207
+ "data-component": "expandable-list-item-content",
208
+ className: r(
209
+ "mx-2 mb-2 overflow-hidden rounded-lg bg-canvas-subtle pt-2",
210
+ e
211
+ ),
212
+ ...a,
213
+ children: t
214
+ }
215
+ ) }));
216
+ H.displayName = "ExpandableListItemContent";
217
+ const Y = I("expandable-list-item", {
218
+ part: "footer",
219
+ displayName: "ExpandableListItemFooter",
220
+ className: "px-4 py-3 sm:px-5"
221
+ });
222
+ export {
223
+ M as ExpandableListItemCheckbox,
224
+ H as ExpandableListItemContent,
225
+ j as ExpandableListItemDescription,
226
+ Y as ExpandableListItemFooter,
227
+ F as ExpandableListItemHeader,
228
+ B as ExpandableListItemMedia,
229
+ D as ExpandableListItemRoot,
230
+ W as ExpandableListItemRow,
231
+ _ as ExpandableListItemTitle,
232
+ S as ExpandableListItemTrigger
233
+ };
@@ -0,0 +1,18 @@
1
+ import { ExpandableListItemSection, ExpandableListItemSelection } from './expandable-list-item.types';
2
+ import * as React from "react";
3
+ export interface ExpandableListItemProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children" | "onChange"> {
4
+ title: string;
5
+ description?: React.ReactNode;
6
+ badge?: React.ReactNode;
7
+ selection?: ExpandableListItemSelection;
8
+ selected?: boolean;
9
+ expanded?: boolean;
10
+ defaultExpanded?: boolean;
11
+ onExpandedChange?: (open: boolean) => void;
12
+ disabled?: boolean;
13
+ sections?: ReadonlyArray<ExpandableListItemSection>;
14
+ panelFooter?: React.ReactNode;
15
+ expandAriaLabel?: string;
16
+ collapseAriaLabel?: string;
17
+ }
18
+ export declare const ExpandableListItem: React.ForwardRefExoticComponent<ExpandableListItemProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,133 @@
1
+ import { jsx as l, jsxs as d } from "react/jsx-runtime";
2
+ import * as R from "react";
3
+ import { ExpandableListItemAttributes as T } from "./expandable-list-item-attributes.js";
4
+ import { ExpandableListItemMetrics as v } from "./expandable-list-item-metrics.js";
5
+ import { ExpandableListItemRoot as f, ExpandableListItemRow as o, ExpandableListItemCheckbox as C, ExpandableListItemHeader as E, ExpandableListItemMedia as I, ExpandableListItemTitle as k, ExpandableListItemDescription as L, ExpandableListItemTrigger as y, ExpandableListItemContent as j, ExpandableListItemFooter as M } from "./expandable-list-item-parts.js";
6
+ function O(e) {
7
+ switch (e.type) {
8
+ case "metrics":
9
+ return /* @__PURE__ */ l(
10
+ v,
11
+ {
12
+ sectionId: e.id,
13
+ columns: e.columns
14
+ },
15
+ e.id
16
+ );
17
+ case "attributes":
18
+ return /* @__PURE__ */ l(
19
+ T,
20
+ {
21
+ title: e.title,
22
+ tags: e.tags,
23
+ maxVisibleTags: e.maxVisibleTags,
24
+ formatOverflow: e.formatOverflow
25
+ },
26
+ e.id
27
+ );
28
+ case "custom":
29
+ return /* @__PURE__ */ l(V, { section: e }, e.id);
30
+ default:
31
+ return null;
32
+ }
33
+ }
34
+ function V({ section: e }) {
35
+ return /* @__PURE__ */ l("div", { className: "px-4 py-4 sm:px-5", children: e.content });
36
+ }
37
+ const $ = R.forwardRef(
38
+ ({
39
+ className: e,
40
+ title: t,
41
+ description: n,
42
+ badge: m,
43
+ selection: a,
44
+ selected: g,
45
+ expanded: w,
46
+ defaultExpanded: S = !1,
47
+ onExpandedChange: P,
48
+ disabled: c,
49
+ sections: i,
50
+ panelFooter: h,
51
+ expandAriaLabel: s = "Expand details",
52
+ collapseAriaLabel: u = "Collapse details",
53
+ ...b
54
+ }, p) => {
55
+ const x = !!(g || a?.checked);
56
+ return i != null && i.length > 0 || h != null ? /* @__PURE__ */ d(
57
+ f,
58
+ {
59
+ ref: p,
60
+ className: e,
61
+ selected: x,
62
+ expanded: w,
63
+ defaultExpanded: S,
64
+ onExpandedChange: P,
65
+ disabled: c,
66
+ expandAriaLabel: s,
67
+ collapseAriaLabel: u,
68
+ ...b,
69
+ children: [
70
+ /* @__PURE__ */ d(o, { children: [
71
+ a ? /* @__PURE__ */ l(
72
+ C,
73
+ {
74
+ checked: a.checked,
75
+ disabled: a.disabled,
76
+ onCheckedChange: (r) => {
77
+ r !== a.checked && a.onCheckedChange(r);
78
+ },
79
+ "aria-label": a["aria-label"] ?? `Select ${t}`
80
+ }
81
+ ) : null,
82
+ /* @__PURE__ */ l(y, { children: /* @__PURE__ */ d(E, { children: [
83
+ /* @__PURE__ */ d(I, { children: [
84
+ /* @__PURE__ */ l(k, { children: t }),
85
+ m
86
+ ] }),
87
+ n ? /* @__PURE__ */ l(L, { children: n }) : null
88
+ ] }) })
89
+ ] }),
90
+ /* @__PURE__ */ d(j, { children: [
91
+ i?.map((r) => O(r)),
92
+ h ? /* @__PURE__ */ l(M, { children: h }) : null
93
+ ] })
94
+ ]
95
+ }
96
+ ) : /* @__PURE__ */ l(
97
+ f,
98
+ {
99
+ ref: p,
100
+ className: e,
101
+ selected: x,
102
+ disabled: c,
103
+ expandAriaLabel: s,
104
+ collapseAriaLabel: u,
105
+ ...b,
106
+ children: /* @__PURE__ */ d(o, { children: [
107
+ a ? /* @__PURE__ */ l(
108
+ C,
109
+ {
110
+ checked: a.checked,
111
+ disabled: a.disabled,
112
+ onCheckedChange: (r) => {
113
+ r !== a.checked && a.onCheckedChange(r);
114
+ },
115
+ "aria-label": a["aria-label"] ?? `Select ${t}`
116
+ }
117
+ ) : null,
118
+ /* @__PURE__ */ d(E, { children: [
119
+ /* @__PURE__ */ d(I, { children: [
120
+ /* @__PURE__ */ l(k, { children: t }),
121
+ m
122
+ ] }),
123
+ n ? /* @__PURE__ */ l(L, { children: n }) : null
124
+ ] })
125
+ ] })
126
+ }
127
+ );
128
+ }
129
+ );
130
+ $.displayName = "ExpandableListItem";
131
+ export {
132
+ $ as ExpandableListItem
133
+ };
@@ -0,0 +1,5 @@
1
+ export { ExpandableListItem, type ExpandableListItemProps, } from './expandable-list-item-preset';
2
+ export { ExpandableListItemRoot, ExpandableListItemRow, ExpandableListItemCheckbox, ExpandableListItemTrigger, ExpandableListItemTitle, ExpandableListItemDescription, ExpandableListItemMedia, ExpandableListItemHeader, ExpandableListItemContent, ExpandableListItemFooter, type ExpandableListItemRootProps, type ExpandableListItemCheckboxProps, } from './expandable-list-item-parts';
3
+ export { ExpandableListItemMetrics, type ExpandableListItemMetricsProps } from './expandable-list-item-metrics';
4
+ export { ExpandableListItemAttributes, type ExpandableListItemAttributesProps, } from './expandable-list-item-attributes';
5
+ export type { ExpandableListItemAttributesSection, ExpandableListItemCustomSection, ExpandableListItemMetricColumn, ExpandableListItemMetricsSection, ExpandableListItemSelection, ExpandableListItemSection, } from './expandable-list-item.types';
@@ -1,16 +1,16 @@
1
1
  import { ReactNode } from 'react';
2
- export type SkuRowMetricColumn = {
2
+ export type ExpandableListItemMetricColumn = {
3
3
  label: string;
4
4
  value: string;
5
5
  };
6
6
  /** Horizontal metrics row (any column count). */
7
- export type SkuRowMetricsSection = {
7
+ export type ExpandableListItemMetricsSection = {
8
8
  id: string;
9
9
  type: "metrics";
10
- columns: ReadonlyArray<SkuRowMetricColumn>;
10
+ columns: ReadonlyArray<ExpandableListItemMetricColumn>;
11
11
  };
12
12
  /** Tag pills with optional overflow summary (e.g. `+64`). */
13
- export type SkuRowAttributesSection = {
13
+ export type ExpandableListItemAttributesSection = {
14
14
  id: string;
15
15
  type: "attributes";
16
16
  title?: string;
@@ -21,13 +21,13 @@ export type SkuRowAttributesSection = {
21
21
  formatOverflow?: (hiddenCount: number) => string;
22
22
  };
23
23
  /** Arbitrary block inside the expanded panel. */
24
- export type SkuRowCustomSection = {
24
+ export type ExpandableListItemCustomSection = {
25
25
  id: string;
26
26
  type: "custom";
27
27
  content: ReactNode;
28
28
  };
29
- export type SkuRowSection = SkuRowMetricsSection | SkuRowAttributesSection | SkuRowCustomSection;
30
- export type SkuRowSelection = {
29
+ export type ExpandableListItemSection = ExpandableListItemMetricsSection | ExpandableListItemAttributesSection | ExpandableListItemCustomSection;
30
+ export type ExpandableListItemSelection = {
31
31
  checked: boolean;
32
32
  onCheckedChange: (checked: boolean) => void;
33
33
  disabled?: boolean;
@@ -0,0 +1,5 @@
1
+ export { ExpandableListItem, type ExpandableListItemProps, } from './expandable-list-item-preset';
2
+ export { ExpandableListItemRoot, ExpandableListItemRow, ExpandableListItemCheckbox, ExpandableListItemTrigger, ExpandableListItemTitle, ExpandableListItemDescription, ExpandableListItemMedia, ExpandableListItemHeader, ExpandableListItemContent, ExpandableListItemFooter, type ExpandableListItemRootProps, type ExpandableListItemCheckboxProps, } from './expandable-list-item-parts';
3
+ export { ExpandableListItemMetrics, type ExpandableListItemMetricsProps } from './expandable-list-item-metrics';
4
+ export { ExpandableListItemAttributes, type ExpandableListItemAttributesProps, } from './expandable-list-item-attributes';
5
+ export type { ExpandableListItemAttributesSection, ExpandableListItemCustomSection, ExpandableListItemMetricColumn, ExpandableListItemMetricsSection, ExpandableListItemSelection, ExpandableListItemSection, } from './expandable-list-item.types';
@@ -0,0 +1,19 @@
1
+ import { ExpandableListItem as a } from "./expandable-list-item-preset.js";
2
+ import { ExpandableListItemCheckbox as p, ExpandableListItemContent as x, ExpandableListItemDescription as m, ExpandableListItemFooter as n, ExpandableListItemHeader as o, ExpandableListItemMedia as s, ExpandableListItemRoot as b, ExpandableListItemRow as d, ExpandableListItemTitle as r, ExpandableListItemTrigger as l } from "./expandable-list-item-parts.js";
3
+ import { ExpandableListItemMetrics as I } from "./expandable-list-item-metrics.js";
4
+ import { ExpandableListItemAttributes as f } from "./expandable-list-item-attributes.js";
5
+ export {
6
+ a as ExpandableListItem,
7
+ f as ExpandableListItemAttributes,
8
+ p as ExpandableListItemCheckbox,
9
+ x as ExpandableListItemContent,
10
+ m as ExpandableListItemDescription,
11
+ n as ExpandableListItemFooter,
12
+ o as ExpandableListItemHeader,
13
+ s as ExpandableListItemMedia,
14
+ I as ExpandableListItemMetrics,
15
+ b as ExpandableListItemRoot,
16
+ d as ExpandableListItemRow,
17
+ r as ExpandableListItemTitle,
18
+ l as ExpandableListItemTrigger
19
+ };
@@ -1,7 +1,7 @@
1
1
  import { jsx as t, jsxs as o } from "react/jsx-runtime";
2
2
  import "react";
3
- import { Checkbox as N } from "../../../forms/checkbox/checkbox.js";
4
- import { Input as v } from "../../../forms/input/input.js";
3
+ import { Checkbox as v } from "../../../forms/checkbox/checkbox.js";
4
+ import { Input as N } from "../../../forms/input/input.js";
5
5
  import { ChevronRight as k, Search as g } from "impact-nova-icons";
6
6
  import { cn as C } from "../../../../lib/utils.js";
7
7
  import { useImpactNovaI18n as z } from "../../../../i18n/use-impact-nova-i18n.js";
@@ -12,8 +12,8 @@ const E = ({
12
12
  enableSearch: n,
13
13
  enableSelectAll: e,
14
14
  groupLabel: i,
15
- allChecked: m,
16
- isIndeterminate: a = !1,
15
+ allChecked: a,
16
+ isIndeterminate: m = !1,
17
17
  onSelectAll: d,
18
18
  searchText: x,
19
19
  onSearchChange: l,
@@ -28,7 +28,7 @@ const E = ({
28
28
  {
29
29
  type: "button",
30
30
  onClick: y,
31
- className: "p-1 hover:bg-muted rounded-full transition-colors flex items-center text-content-icon hover:text-brand",
31
+ className: "p-1 hover:bg-canvas-muted rounded-full transition-colors flex items-center text-content-icon hover:text-brand",
32
32
  "aria-label": u(c ? "nestedList.expandAll" : "nestedList.collapseAll"),
33
33
  children: /* @__PURE__ */ t(
34
34
  k,
@@ -46,14 +46,14 @@ const E = ({
46
46
  ] }),
47
47
  /* @__PURE__ */ o("div", { className: "flex items-center gap-1", children: [
48
48
  e && /* @__PURE__ */ t(
49
- N,
49
+ v,
50
50
  {
51
- checked: a ? "indeterminate" : m,
51
+ checked: m ? "indeterminate" : a,
52
52
  onCheckedChange: d
53
53
  }
54
54
  ),
55
55
  n ? /* @__PURE__ */ t("div", { className: "flex-1 ml-auto", children: /* @__PURE__ */ t(
56
- v,
56
+ N,
57
57
  {
58
58
  type: "text",
59
59
  placeholder: p,
@@ -66,14 +66,14 @@ const E = ({
66
66
  ] }) : /* @__PURE__ */ o("div", { className: "flex items-center gap-1 mb-3", children: [
67
67
  s && r && h,
68
68
  e && /* @__PURE__ */ t(
69
- N,
69
+ v,
70
70
  {
71
- checked: a ? "indeterminate" : m,
71
+ checked: m ? "indeterminate" : a,
72
72
  onCheckedChange: d
73
73
  }
74
74
  ),
75
75
  n ? /* @__PURE__ */ t("div", { className: "flex-1 ml-auto", children: /* @__PURE__ */ t(
76
- v,
76
+ N,
77
77
  {
78
78
  type: "text",
79
79
  placeholder: p,
@@ -102,7 +102,7 @@ const E = (e, r) => {
102
102
  d.stopPropagation(), i(e.id);
103
103
  },
104
104
  onMouseDown: (d) => d.stopPropagation(),
105
- className: "flex h-4 w-4 items-center justify-center rounded-full p-0 hover:bg-muted transition-colors text-content-icon hover:text-brand",
105
+ className: "flex h-4 w-4 items-center justify-center rounded-full p-0 hover:bg-canvas-muted transition-colors text-content-icon hover:text-brand",
106
106
  "aria-label": h(a ? "nestedList.expand" : "nestedList.collapse"),
107
107
  children: /* @__PURE__ */ t(
108
108
  P,
@@ -130,7 +130,7 @@ const E = (e, r) => {
130
130
  ...C,
131
131
  ...I,
132
132
  "aria-label": `${h("aria.dragHandle")}: ${e.label}`,
133
- className: "shrink-0 mt-0.5 cursor-grab active:cursor-grabbing p-0 hover:bg-muted rounded flex items-center h-4",
133
+ className: "shrink-0 mt-0.5 cursor-grab active:cursor-grabbing p-0 hover:bg-canvas-muted rounded flex items-center h-4",
134
134
  style: {
135
135
  pointerEvents: "auto",
136
136
  position: "relative",
@@ -3,5 +3,7 @@ import { avatarVariants } from './avatar.variants';
3
3
  import type * as React from "react";
4
4
  import type * as AvatarPrimitive from "@radix-ui/react-avatar";
5
5
  export type AvatarProps = React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root> & VariantProps<typeof avatarVariants>;
6
+ /** Image slot — Radix `Avatar.Image`. Cross-fades to `AvatarFallback` on load failure. */
6
7
  export type AvatarImageProps = React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>;
8
+ /** Shown when the image is loading or failed. Use 1–2 initials or an icon. */
7
9
  export type AvatarFallbackProps = React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>;
@@ -2,6 +2,8 @@ import { VariantProps } from 'class-variance-authority';
2
2
  import { badgeVariants } from './badge.variants';
3
3
  import type * as React from "react";
4
4
  export interface BadgeProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "color">, Omit<VariantProps<typeof badgeVariants>, "layout"> {
5
+ /** Optional leading icon (16px). Omit `children` for icon-only badge (`data-layout="iconOnly"`). */
5
6
  icon?: React.ReactNode;
7
+ /** Inactive visual — `pointer-events-none` and disabled token colors. */
6
8
  disabled?: boolean;
7
9
  }
@@ -1,7 +1,7 @@
1
1
  import "react-day-picker";
2
2
  import { cn as e } from "../../../lib/utils.js";
3
3
  function s(o) {
4
- const { defaultClassNames: t, pickerType: n, calendarType: l, showOutsideDays: a, classNames: r } = o;
4
+ const { defaultClassNames: t, pickerType: r, calendarType: l, showOutsideDays: a, classNames: n } = o;
5
5
  return {
6
6
  root: e("w-fit", t.root),
7
7
  months: e("relative", t.months),
@@ -33,39 +33,39 @@ function s(o) {
33
33
  ),
34
34
  weekday: e(
35
35
  "flex-1 select-none rounded-md font-normal text-center",
36
- "text-[11px] text-content-muted pb-2",
36
+ "text-[11px] text-secondary-foreground pb-2",
37
37
  "[&:nth-child(2)]:pl-2",
38
38
  t.weekday
39
39
  ),
40
40
  week: e("mt-1 flex w-full items-stretch group/week", t.week),
41
41
  week_number_header: e(
42
42
  "select-none font-normal text-center h-[30px] flex items-center justify-center",
43
- "text-[11px] text-content-muted w-[30px] flex-shrink-0",
43
+ "text-[11px] text-secondary-foreground w-[30px] flex-shrink-0",
44
44
  t.week_number_header
45
45
  ),
46
46
  week_number: e(
47
47
  "select-none flex items-center justify-center h-[30px]",
48
- "text-[11px] text-content-muted w-[30px] flex-shrink-0 transition-colors",
49
- n === "week" && "group-hover/week:bg-accent group-hover/week:rounded-l-lg",
48
+ "text-[11px] text-secondary-foreground w-[30px] flex-shrink-0 transition-colors",
49
+ r === "week" && "group-hover/week:bg-accent group-hover/week:rounded-l-lg",
50
50
  t.week_number
51
51
  ),
52
52
  day: e(
53
53
  "group/day relative select-none p-0 text-center flex-1 h-[30px] flex items-center justify-center [&:nth-child(2)]:pl-2 rdp-day",
54
- n === "week" && "group-hover/week:bg-accent [&:nth-child(2)]:group-hover/week:rounded-l-full [&:nth-child(8)]:group-hover/week:rounded-r-full",
55
- n === "week" && "[&.rdp-selected:nth-child(2)]:rounded-l-full [&.rdp-selected:nth-child(8)]:rounded-r-full",
56
- r?.day
54
+ r === "week" && "group-hover/week:bg-accent [&:nth-child(2)]:group-hover/week:rounded-l-full [&:nth-child(8)]:group-hover/week:rounded-r-full",
55
+ r === "week" && "[&.rdp-selected:nth-child(2)]:rounded-l-full [&.rdp-selected:nth-child(8)]:rounded-r-full",
56
+ n?.day
57
57
  ),
58
58
  range_start: e("bg-accent rounded-l-full", t.range_start),
59
59
  range_middle: e("bg-accent rounded-none", t.range_middle),
60
60
  range_end: e("bg-accent rounded-r-full", t.range_end),
61
61
  today: e("text-brand", t.today),
62
62
  outside: e(
63
- l === "fiscal" || a ? "text-content-muted opacity-50" : "invisible",
63
+ l === "fiscal" || a ? "text-secondary-foreground opacity-50" : "invisible",
64
64
  t.outside
65
65
  ),
66
- disabled: e("text-content-muted opacity-50", t.disabled),
66
+ disabled: e("text-secondary-foreground opacity-50", t.disabled),
67
67
  hidden: e("invisible", t.hidden),
68
- ...r
68
+ ...n
69
69
  };
70
70
  }
71
71
  export {
@@ -7,7 +7,7 @@ import { isMonthRangeSelection as q } from "../../forms/date-picker/calendar-sel
7
7
  function K({
8
8
  yearOffset: s = 0,
9
9
  displayYear: e,
10
- monthMode: u,
10
+ monthMode: h,
11
11
  monthsShort: N,
12
12
  showFooter: p,
13
13
  pendingMonthSelection: w,
@@ -15,7 +15,7 @@ function K({
15
15
  resolvedStartYear: S,
16
16
  resolvedEndYear: j,
17
17
  yearOptions: k,
18
- previousYearLabel: h,
18
+ previousYearLabel: u,
19
19
  nextYearLabel: g,
20
20
  isMonthSelected: z,
21
21
  getMonthRangeProps: R,
@@ -33,8 +33,8 @@ function K({
33
33
  variant: "ghost",
34
34
  size: "icon",
35
35
  className: "h-7 w-7 shrink-0",
36
- "aria-label": h,
37
- title: h,
36
+ "aria-label": u,
37
+ title: u,
38
38
  disabled: e <= S,
39
39
  onClick: () => P(e),
40
40
  children: /* @__PURE__ */ t(v, { size: 16, className: "rotate-180" })
@@ -54,7 +54,7 @@ function K({
54
54
  menuWidth: "140px"
55
55
  }
56
56
  ) }),
57
- (u === "single" || s === 1) && /* @__PURE__ */ t(
57
+ (h === "single" || s === 1) && /* @__PURE__ */ t(
58
58
  m,
59
59
  {
60
60
  variant: "ghost",
@@ -69,7 +69,7 @@ function K({
69
69
  )
70
70
  ] }),
71
71
  /* @__PURE__ */ t("div", { className: "grid grid-cols-4 gap-x-0 gap-y-4", children: N.map((r, o) => {
72
- const f = z(e, o), { isStart: l, isEnd: i, isMiddle: a } = R(e, o), c = u === "range", b = p ? w : C, I = q(b) && !!b.to, n = M(e, o);
72
+ const f = z(e, o), { isStart: l, isEnd: i, isMiddle: a } = R(e, o), c = h === "range", b = p ? w : C, I = q(b) && !!b.to, n = M(e, o);
73
73
  return /* @__PURE__ */ d("div", { className: "group relative flex h-10 w-full items-center justify-center", children: [
74
74
  c && I && (a || l || i) && !n && /* @__PURE__ */ t(
75
75
  "div",
@@ -95,7 +95,7 @@ function K({
95
95
  c && (l || i) && !n && "rounded-lg bg-brand text-brand-foreground hover:bg-brand/90 hover:text-brand-foreground",
96
96
  !f && !n && "border border-transparent hover:border-brand hover:bg-accent hover:text-accent-foreground",
97
97
  a && !n && "text-accent-foreground",
98
- n && "cursor-not-allowed text-content-muted opacity-50"
98
+ n && "cursor-not-allowed text-content-placeholder opacity-50"
99
99
  ),
100
100
  children: r
101
101
  }