impact-nova 3.0.0-alpha.4 → 3.0.0-alpha.6

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 (47) hide show
  1. package/dist/components/data/ag-grid-react/cell-renderers/editors/list-select-cell-editor.js +56 -42
  2. package/dist/components/data/ag-grid-react/cell-renderers/editors/select-cell-editor.js +48 -45
  3. package/dist/components/data/ag-grid-react/cell-renderers/list-select-display-renderer.js +31 -33
  4. package/dist/components/data/ag-grid-react/cell-renderers/select-display-renderer.js +18 -17
  5. package/dist/components/data/ag-grid-react/editable-utils.d.ts +9 -1
  6. package/dist/components/data/ag-grid-react/editable-utils.js +46 -41
  7. package/dist/components/data/expandable-list-item/expandable-list-item-attributes.js +3 -2
  8. package/dist/components/data/expandable-list-item/expandable-list-item-metrics.js +3 -2
  9. package/dist/components/data/expandable-list-item/sku-picker-chrome.d.ts +2 -1
  10. package/dist/components/data/expandable-list-item/sku-picker-chrome.js +51 -40
  11. package/dist/components/data/expandable-list-item/useServerSkuInfinitePages.d.ts +2 -1
  12. package/dist/components/data/expandable-list-item/virtualized-responsive-grid.catalog.d.ts +5 -4
  13. package/dist/components/data-display/chart/chart-scatter3d.d.ts +39 -0
  14. package/dist/components/data-display/chart/chart-scatter3d.js +180 -0
  15. package/dist/components/data-display/chart/chart.js +125 -112
  16. package/dist/components/data-display/chart/chart.utils.js +122 -92
  17. package/dist/components/feedback/tooltip/button-icon-tooltip.d.ts +4 -1
  18. package/dist/components/feedback/tooltip/button-icon-tooltip.js +14 -12
  19. package/dist/components/feedback/tooltip/tab-tooltip-render.js +3 -2
  20. package/dist/components/feedback/tooltip/use-overflow-tooltip.js +44 -36
  21. package/dist/components/flows/command-palette/shortcut-settings.js +10 -10
  22. package/dist/components/flows/filter-panel/filter-panel.js +4 -4
  23. package/dist/components/flows/iris-chat/iris-chat-menu.js +100 -73
  24. package/dist/components/forms/choice-card/choice-card-percent.js +68 -50
  25. package/dist/components/forms/choice-card/choice-card.js +23 -23
  26. package/dist/components/forms/select/components/SelectMenuPanel.js +15 -15
  27. package/dist/components/forms/select/components/SelectTriggerValue.js +3 -2
  28. package/dist/components/forms/select/components/Submenu.js +3 -2
  29. package/dist/components/layout/horizontal-scroller/horizontal-scroller-mask.d.ts +3 -0
  30. package/dist/components/layout/horizontal-scroller/horizontal-scroller-mask.js +12 -0
  31. package/dist/components/layout/horizontal-scroller/horizontal-scroller.js +181 -125
  32. package/dist/components/layout/horizontal-scroller/horizontal-scroller.types.d.ts +2 -0
  33. package/dist/components/layout/horizontal-scroller/scroll-overflow-affordance.d.ts +3 -1
  34. package/dist/components/layout/horizontal-scroller/scroll-overflow-affordance.js +77 -67
  35. package/dist/components/primitives/iris/iris-insight-truncated-text.d.ts +3 -0
  36. package/dist/components/primitives/iris/iris-insight-truncated-text.js +33 -0
  37. package/dist/components/primitives/iris/iris.d.ts +2 -1
  38. package/dist/components/primitives/iris/iris.js +57 -67
  39. package/dist/components/primitives/iris/iris.types.d.ts +7 -0
  40. package/dist/components/primitives/stepper/internals/stepper-summary.js +5 -5
  41. package/dist/form-react/Fields/VirtualizedListField.js +69 -64
  42. package/dist/impact-nova-components.css +35 -8
  43. package/dist/impact-nova.css +1 -1
  44. package/dist/lib/alphabetical-sort.js +13 -0
  45. package/dist/llms/rules/installation.js +1 -1
  46. package/dist/llms/rules/requirements.js +1 -1
  47. package/package.json +2 -2
@@ -2,19 +2,19 @@ import { jsx as o } from "react/jsx-runtime";
2
2
  import * as n from "@radix-ui/react-popover";
3
3
  import { cn as a } from "../../../../lib/utils.js";
4
4
  import { preventDismissOnTooltipOutside as t } from "../../../../lib/overlay/prevent-dismiss-on-tooltip-outside.js";
5
- import { useOverlayPortalContainer as v } from "../../../../lib/overlay/overlay-portal-context.js";
6
- import { OVERLAY_NESTED_FLOATING_INSTANT_HIDE_CLASS as f } from "../../../../lib/overlay/overlay-host.constants.js";
7
- function P({
5
+ import { useOverlayPortalContainer as u } from "../../../../lib/overlay/overlay-portal-context.js";
6
+ import { OVERLAY_NESTED_FLOATING_INSTANT_HIDE_CLASS as v } from "../../../../lib/overlay/overlay-host.constants.js";
7
+ function O({
8
8
  menuRef: l,
9
- menuMinHeight: i,
9
+ menuMinHeight: r,
10
10
  menuWidth: s,
11
- isReadOnly: r,
11
+ isReadOnly: i,
12
12
  id: d,
13
13
  menuLabel: p,
14
- children: m
14
+ children: c
15
15
  }) {
16
- const c = v();
17
- return /* @__PURE__ */ o(n.Portal, { container: c, children: /* @__PURE__ */ o(
16
+ const m = u();
17
+ return /* @__PURE__ */ o(n.Portal, { container: m, children: /* @__PURE__ */ o(
18
18
  n.Content,
19
19
  {
20
20
  ref: l,
@@ -25,7 +25,7 @@ function P({
25
25
  collisionPadding: 8,
26
26
  "aria-label": p,
27
27
  onOpenAutoFocus: (e) => e.preventDefault(),
28
- onPointerDown: (e) => e.stopPropagation(),
28
+ onCloseAutoFocus: (e) => e.preventDefault(),
29
29
  onPointerDownOutside: t,
30
30
  onInteractOutside: t,
31
31
  onFocusOutside: t,
@@ -37,8 +37,8 @@ function P({
37
37
  },
38
38
  className: a(
39
39
  "z-50 flex flex-col overflow-hidden rounded-[12px] p-0 text-base shadow-elevation-select focus:outline-none sm:text-sm border-none pointer-events-auto",
40
- r ? "bg-disabled-surface" : "bg-canvas-elevated",
41
- f
40
+ i ? "bg-disabled-surface" : "bg-canvas-elevated",
41
+ v
42
42
  ),
43
43
  "data-testid": `select-menu-${d || "default"}`,
44
44
  "data-component": "select-menu",
@@ -47,17 +47,17 @@ function P({
47
47
  {
48
48
  className: a(
49
49
  "flex min-h-0 flex-1 flex-col overflow-hidden rounded-[12px]",
50
- r ? "bg-disabled-surface" : "bg-canvas-elevated"
50
+ i ? "bg-disabled-surface" : "bg-canvas-elevated"
51
51
  ),
52
52
  style: {
53
- minHeight: i ? `${i}px` : void 0
53
+ minHeight: r ? `${r}px` : void 0
54
54
  },
55
- children: m
55
+ children: c
56
56
  }
57
57
  )
58
58
  }
59
59
  ) });
60
60
  }
61
61
  export {
62
- P as SelectMenuPanel
62
+ O as SelectMenuPanel
63
63
  };
@@ -1,8 +1,9 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
2
  import { cn as x } from "../../../../lib/utils.js";
3
+ import "react";
3
4
  import { OverflowTooltip as m } from "../../../feedback/tooltip/overflow-tooltip.js";
4
5
  import { isInvertedSelection as h, isOptionArray as d } from "../utils/select.js";
5
- function w({
6
+ function C({
6
7
  isMulti: u,
7
8
  isDisabled: p,
8
9
  internalValue: o,
@@ -52,5 +53,5 @@ function w({
52
53
  );
53
54
  }
54
55
  export {
55
- w as SelectTriggerValue
56
+ C as SelectTriggerValue
56
57
  };
@@ -1,13 +1,14 @@
1
1
  import { jsxs as s, jsx as t } from "react/jsx-runtime";
2
2
  import * as i from "@radix-ui/react-popover";
3
3
  import { Checkbox as P } from "../../checkbox/checkbox.js";
4
+ import "react";
4
5
  import { OverflowTooltip as y } from "../../../feedback/tooltip/overflow-tooltip.js";
5
6
  import { ChevronRight as A, Checkmark as O } from "impact-nova-icons";
6
7
  import { cn as v } from "../../../../lib/utils.js";
7
8
  import { useOverlayPortalContainer as T } from "../../../../lib/overlay/overlay-portal-context.js";
8
9
  import { OVERLAY_NESTED_FLOATING_INSTANT_HIDE_CLASS as _ } from "../../../../lib/overlay/overlay-host.constants.js";
9
10
  import { useSuppressOptionClickForTextSelection as E } from "../hooks/useSuppressOptionClickForTextSelection.js";
10
- const G = ({
11
+ const R = ({
11
12
  parentOption: n,
12
13
  isMulti: u,
13
14
  isReadOnly: l,
@@ -105,5 +106,5 @@ const G = ({
105
106
  ] });
106
107
  };
107
108
  export {
108
- G as Submenu
109
+ R as Submenu
109
110
  };
@@ -0,0 +1,3 @@
1
+ export declare const HORIZONTAL_SCROLLER_FADE_WIDTH_PX = 48;
2
+ export declare function buildHorizontalScrollerMaskImage(canScrollLeft: boolean, canScrollRight: boolean): string | undefined;
3
+ export declare const horizontalScrollerEdgeFadeClassName = "pointer-events-none absolute top-0 z-10 h-full w-14";
@@ -0,0 +1,12 @@
1
+ const e = 48;
2
+ function n(a, t) {
3
+ if (!a && !t) return;
4
+ const r = 48;
5
+ return a && t ? `linear-gradient(to right, transparent, black ${r}px, black calc(100% - ${r}px), transparent)` : t ? `linear-gradient(to right, black, black calc(100% - ${r}px), transparent 100%)` : `linear-gradient(to right, transparent, black ${r}px, black)`;
6
+ }
7
+ const i = "pointer-events-none absolute top-0 z-10 h-full w-14";
8
+ export {
9
+ e as HORIZONTAL_SCROLLER_FADE_WIDTH_PX,
10
+ n as buildHorizontalScrollerMaskImage,
11
+ i as horizontalScrollerEdgeFadeClassName
12
+ };
@@ -1,167 +1,223 @@
1
- import { jsxs as i, jsx as l } from "react/jsx-runtime";
2
- import * as n from "react";
3
- import { ChevronRight as W } from "impact-nova-icons";
4
- import { useVirtualizer as j } from "@tanstack/react-virtual";
5
- import { cn as h } from "../../../lib/utils.js";
6
- import { Button as O } from "../../primitives/button/button.js";
7
- import { useImpactNovaI18n as T } from "../../../i18n/use-impact-nova-i18n.js";
8
- function $({
9
- className: N,
10
- items: d,
11
- renderItem: R,
12
- scrollStep: p = 200,
13
- hideScrollbar: u = !0,
14
- controlsPosition: v = "right",
15
- renderPrevious: x,
16
- renderNext: g,
17
- maxWidth: L = "100%",
18
- estimateSize: m = 200,
19
- overscan: C = 5,
20
- ...B
21
- }, E) {
22
- const { t: w } = T(), r = n.useRef(null), [o, H] = n.useState(!1), [s, I] = n.useState(!1);
23
- n.useImperativeHandle(E, () => r.current);
24
- const c = j({
25
- count: d.length,
26
- getScrollElement: () => r.current,
27
- estimateSize: typeof m == "function" ? m : () => m,
1
+ import { jsx as t, jsxs as h, Fragment as $ } from "react/jsx-runtime";
2
+ import * as i from "react";
3
+ import { ChevronRight as L } from "impact-nova-icons";
4
+ import { useVirtualizer as D } from "@tanstack/react-virtual";
5
+ import { cn as r } from "../../../lib/utils.js";
6
+ import { Button as I } from "../../primitives/button/button.js";
7
+ import { useImpactNovaI18n as _ } from "../../../i18n/use-impact-nova-i18n.js";
8
+ import { horizontalScrollerEdgeFadeClassName as E, buildHorizontalScrollerMaskImage as q } from "./horizontal-scroller-mask.js";
9
+ function G({
10
+ className: B,
11
+ items: u,
12
+ renderItem: H,
13
+ scrollStep: x = 200,
14
+ hideScrollbar: v = !0,
15
+ edgeAffordance: c = !1,
16
+ controlsPosition: z = "right",
17
+ renderPrevious: b,
18
+ renderNext: w,
19
+ maxWidth: W = "100%",
20
+ estimateSize: p = 200,
21
+ overscan: M = 5,
22
+ ...V
23
+ }, j) {
24
+ const { t: S } = _(), o = i.useRef(null), [n, F] = i.useState(!1), [a, O] = i.useState(!1);
25
+ i.useImperativeHandle(j, () => o.current);
26
+ const f = D({
27
+ count: u.length,
28
+ getScrollElement: () => o.current,
29
+ estimateSize: typeof p == "function" ? p : () => p,
28
30
  horizontal: !0,
29
- overscan: C
30
- }), V = c.getTotalSize(), f = n.useCallback(() => {
31
- const e = r.current;
32
- e && (H(e.scrollLeft > 0), I(
31
+ overscan: M
32
+ }), T = f.getTotalSize(), m = i.useCallback(() => {
33
+ const e = o.current;
34
+ e && (F(e.scrollLeft > 0), O(
33
35
  Math.ceil(e.scrollLeft + e.clientWidth) < e.scrollWidth
34
36
  ));
35
37
  }, []);
36
- n.useEffect(() => {
37
- const e = r.current;
38
+ i.useEffect(() => {
39
+ const e = o.current;
38
40
  if (!e) return;
39
- f();
40
- const t = () => f();
41
- e.addEventListener("scroll", t);
42
- const a = new ResizeObserver(() => {
43
- f();
41
+ m();
42
+ const l = () => m();
43
+ e.addEventListener("scroll", l);
44
+ const s = new ResizeObserver(() => {
45
+ m();
44
46
  });
45
- return a.observe(e), () => {
46
- e.removeEventListener("scroll", t), a.disconnect();
47
+ return s.observe(e), () => {
48
+ e.removeEventListener("scroll", l), s.disconnect();
47
49
  };
48
- }, [f, d, V]);
49
- const z = () => {
50
- r.current?.scrollBy({ left: -p, behavior: "smooth" });
51
- }, b = () => {
52
- r.current?.scrollBy({ left: p, behavior: "smooth" });
53
- }, S = (e, t, a) => {
54
- if (a) return null;
55
- const k = w(e === "left" ? "horizontalScroller.scrollLeft" : "horizontalScroller.scrollRight");
56
- return /* @__PURE__ */ i(
57
- O,
50
+ }, [m, u, T]);
51
+ const N = () => {
52
+ o.current?.scrollBy({ left: -x, behavior: "smooth" });
53
+ }, y = () => {
54
+ o.current?.scrollBy({ left: x, behavior: "smooth" });
55
+ }, k = (e, l, s) => {
56
+ if (s) return null;
57
+ const g = S(e === "left" ? "horizontalScroller.scrollLeft" : "horizontalScroller.scrollRight");
58
+ return c ? /* @__PURE__ */ t(
59
+ I,
60
+ {
61
+ variant: "ghost",
62
+ size: "iconSm",
63
+ className: r(
64
+ "absolute top-1/2 z-20 !size-5 !min-h-5 !min-w-5 -translate-y-1/2 rounded-full border border-stroke-hairline p-0",
65
+ "bg-canvas-elevated/95 text-content-secondary shadow-sm",
66
+ "hover:bg-canvas-muted hover:text-content",
67
+ "[&_svg]:!size-3",
68
+ e === "left" ? "left-0.5" : "right-0.5"
69
+ ),
70
+ onClick: l,
71
+ disabled: s,
72
+ "aria-label": g,
73
+ "data-component": e === "left" ? "horizontal-scroller-prev" : "horizontal-scroller-next",
74
+ tabIndex: -1,
75
+ children: /* @__PURE__ */ t(
76
+ L,
77
+ {
78
+ className: r(e === "left" && "rotate-180")
79
+ }
80
+ )
81
+ }
82
+ ) : /* @__PURE__ */ h(
83
+ I,
58
84
  {
59
85
  variant: "ghost",
60
86
  size: "icon",
61
- className: h(
87
+ className: r(
62
88
  "h-8 w-8 rounded-md bg-canvas-muted text-content-tertiary hover:bg-brand-tint hover:text-brand"
63
89
  ),
64
- onClick: t,
65
- disabled: a,
66
- "aria-label": k,
90
+ onClick: l,
91
+ disabled: s,
92
+ "aria-label": g,
67
93
  "data-component": e === "left" ? "horizontal-scroller-prev" : "horizontal-scroller-next",
68
94
  children: [
69
- /* @__PURE__ */ l(
70
- W,
95
+ /* @__PURE__ */ t(
96
+ L,
71
97
  {
72
- className: h("h-4 w-4", e === "left" && "rotate-180")
98
+ className: r("h-4 w-4", e === "left" && "rotate-180")
73
99
  }
74
100
  ),
75
- /* @__PURE__ */ l("span", { className: "sr-only", children: k })
101
+ /* @__PURE__ */ t("span", { className: "sr-only", children: g })
76
102
  ]
77
103
  }
78
104
  );
79
- }, y = (() => {
80
- const e = x ? x({ onClick: z, disabled: !o }) : S("left", z, !o), t = g ? g({ onClick: b, disabled: !s }) : S("right", b, !s);
81
- return v === "split" ? {
82
- left: o ? /* @__PURE__ */ l("div", { className: "flex-shrink-0", children: e }) : null,
83
- right: s ? /* @__PURE__ */ l("div", { className: "flex-shrink-0", children: t }) : null
84
- } : v === "left" ? {
85
- left: o || s ? /* @__PURE__ */ i("div", { className: "flex-shrink-0 flex items-center gap-1", children: [
105
+ }, d = (() => {
106
+ const e = b ? b({ onClick: N, disabled: !n }) : k("left", N, !n), l = w ? w({ onClick: y, disabled: !a }) : k("right", y, !a);
107
+ return c || z === "split" ? {
108
+ left: n ? /* @__PURE__ */ t("div", { className: "flex-shrink-0", children: e }) : null,
109
+ right: a ? /* @__PURE__ */ t("div", { className: "flex-shrink-0", children: l }) : null
110
+ } : z === "left" ? {
111
+ left: n || a ? /* @__PURE__ */ h("div", { className: "flex-shrink-0 flex items-center gap-1", children: [
86
112
  e,
87
- t
113
+ l
88
114
  ] }) : null,
89
115
  right: null
90
116
  } : {
91
117
  left: null,
92
- right: o || s ? /* @__PURE__ */ i("div", { className: "flex-shrink-0 flex items-center gap-1", children: [
118
+ right: n || a ? /* @__PURE__ */ h("div", { className: "flex-shrink-0 flex items-center gap-1", children: [
93
119
  e,
94
- t
120
+ l
95
121
  ] }) : null
96
122
  };
97
- })();
98
- return /* @__PURE__ */ i(
123
+ })(), C = c ? q(n, a) : void 0, R = /* @__PURE__ */ t(
99
124
  "div",
100
125
  {
101
- className: h(
102
- "flex items-center gap-2 min-w-0 w-full bg-transparent",
103
- N
126
+ ref: o,
127
+ tabIndex: 0,
128
+ className: r(
129
+ "flex flex-1 min-w-0 overflow-x-auto overflow-y-hidden whitespace-nowrap",
130
+ v && "scrollbar-hide",
131
+ "scroll-smooth",
132
+ c && "h-full overscroll-x-contain outline-none"
104
133
  ),
105
- style: { maxWidth: L },
106
- "data-component": "horizontal-scroller",
107
- ...B,
108
- children: [
109
- y.left,
110
- /* @__PURE__ */ l(
111
- "div",
112
- {
113
- ref: r,
114
- tabIndex: 0,
115
- className: h(
116
- "flex flex-1 min-w-0 overflow-x-auto overflow-y-hidden whitespace-nowrap",
117
- u && "scrollbar-hide",
118
- "scroll-smooth"
119
- ),
120
- style: {
121
- scrollbarWidth: u ? "none" : "auto",
122
- msOverflowStyle: u ? "none" : "auto"
123
- },
124
- "data-component": "horizontal-scroller-viewport",
125
- children: /* @__PURE__ */ i(
134
+ style: {
135
+ scrollbarWidth: v ? "none" : "auto",
136
+ msOverflowStyle: v ? "none" : "auto",
137
+ WebkitMaskImage: C,
138
+ maskImage: C
139
+ },
140
+ "data-component": "horizontal-scroller-viewport",
141
+ children: /* @__PURE__ */ h(
142
+ "div",
143
+ {
144
+ style: {
145
+ width: `${f.getTotalSize()}px`,
146
+ display: "flex",
147
+ position: "relative"
148
+ },
149
+ children: [
150
+ /* @__PURE__ */ t(
126
151
  "div",
127
152
  {
128
153
  style: {
129
- width: `${c.getTotalSize()}px`,
130
- display: "flex",
131
- position: "relative"
132
- },
133
- children: [
134
- /* @__PURE__ */ l(
135
- "div",
136
- {
137
- style: {
138
- width: `${c.getVirtualItems()[0]?.start ?? 0}px`,
139
- flexShrink: 0
140
- }
141
- }
142
- ),
143
- c.getVirtualItems().map((e) => /* @__PURE__ */ l(
144
- "div",
145
- {
146
- ref: c.measureElement,
147
- "data-index": e.index,
148
- className: "flex-shrink-0",
149
- children: R(d[e.index], e.index)
150
- },
151
- e.key
152
- ))
153
- ]
154
+ width: `${f.getVirtualItems()[0]?.start ?? 0}px`,
155
+ flexShrink: 0
156
+ }
154
157
  }
158
+ ),
159
+ f.getVirtualItems().map((e) => /* @__PURE__ */ t(
160
+ "div",
161
+ {
162
+ ref: f.measureElement,
163
+ "data-index": e.index,
164
+ className: "flex-shrink-0",
165
+ children: H(u[e.index], e.index)
166
+ },
167
+ e.key
168
+ ))
169
+ ]
170
+ }
171
+ )
172
+ }
173
+ );
174
+ return /* @__PURE__ */ t(
175
+ "div",
176
+ {
177
+ className: r(
178
+ "flex items-center gap-2 min-w-0 w-full bg-transparent",
179
+ c && "gap-0",
180
+ B
181
+ ),
182
+ style: { maxWidth: W },
183
+ "data-component": "horizontal-scroller",
184
+ ...V,
185
+ children: c ? /* @__PURE__ */ h("div", { className: "relative flex min-h-0 min-w-0 flex-1 self-stretch", children: [
186
+ n ? /* @__PURE__ */ t(
187
+ "div",
188
+ {
189
+ "aria-hidden": !0,
190
+ "data-component": "horizontal-scroller-fade-left",
191
+ className: r(
192
+ E,
193
+ "left-0 bg-gradient-to-r from-canvas-elevated from-10% via-canvas-elevated/90 via-50% to-transparent"
155
194
  )
156
195
  }
157
- ),
158
- y.right
159
- ]
196
+ ) : null,
197
+ a ? /* @__PURE__ */ t(
198
+ "div",
199
+ {
200
+ "aria-hidden": !0,
201
+ "data-component": "horizontal-scroller-fade-right",
202
+ className: r(
203
+ E,
204
+ "right-0 bg-gradient-to-l from-canvas-elevated from-10% via-canvas-elevated/90 via-50% to-transparent"
205
+ )
206
+ }
207
+ ) : null,
208
+ d.left,
209
+ d.right,
210
+ R
211
+ ] }) : /* @__PURE__ */ h($, { children: [
212
+ d.left,
213
+ R,
214
+ d.right
215
+ ] })
160
216
  }
161
217
  );
162
218
  }
163
- const A = n.forwardRef($);
164
- A.displayName = "HorizontalScroller";
219
+ const J = i.forwardRef(G);
220
+ J.displayName = "HorizontalScroller";
165
221
  export {
166
- A as HorizontalScroller
222
+ J as HorizontalScroller
167
223
  };
@@ -4,6 +4,8 @@ export interface HorizontalScrollerProps<T> extends Omit<React.HTMLAttributes<HT
4
4
  renderItem: (item: T, index: number) => React.ReactNode;
5
5
  scrollStep?: number;
6
6
  hideScrollbar?: boolean;
7
+ /** Overlay edge fades + split chevrons on the viewport (dashboard carousel pattern). */
8
+ edgeAffordance?: boolean;
7
9
  controlsPosition?: "left" | "right" | "split";
8
10
  renderPrevious?: (props: {
9
11
  onClick: () => void;
@@ -6,5 +6,7 @@ export interface ScrollOverflowAffordanceProps extends Omit<React.HTMLAttributes
6
6
  hideScrollbar?: boolean;
7
7
  viewportClassName?: string;
8
8
  viewportDataComponent?: string;
9
+ /** `compact` = small circular chevrons; `default` = 32px rounded-md dashboard controls. */
10
+ controlSize?: "compact" | "default";
9
11
  }
10
- export declare function ScrollOverflowAffordance({ children, scrollStep, contentDependency, hideScrollbar, viewportClassName, viewportDataComponent, className, ...props }: ScrollOverflowAffordanceProps): import("react/jsx-runtime").JSX.Element;
12
+ export declare function ScrollOverflowAffordance({ children, scrollStep, contentDependency, hideScrollbar, viewportClassName, viewportDataComponent, controlSize, className, ...props }: ScrollOverflowAffordanceProps): import("react/jsx-runtime").JSX.Element;