@ds-mo/ui 2.12.0 → 2.13.1

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 (151) hide show
  1. package/README.md +1 -1
  2. package/dist/.build-stamp +1 -1
  3. package/dist/components/ds-app-shell.js +1 -1
  4. package/dist/components/ds-banner.js +1 -1
  5. package/dist/components/ds-bar-nav.js +1 -1
  6. package/dist/components/ds-bar-nav.js.map +1 -1
  7. package/dist/components/ds-button-filled.js +1 -1
  8. package/dist/components/ds-button-unfilled.js +1 -1
  9. package/dist/components/{ds-card-data-viz.d.ts → ds-card-data-viz-donut.d.ts} +4 -4
  10. package/dist/components/ds-card-data-viz-donut.js +2 -0
  11. package/dist/components/ds-card-data-viz-donut.js.map +1 -0
  12. package/dist/components/ds-card-setting.js +1 -1
  13. package/dist/components/ds-card-setting.js.map +1 -1
  14. package/dist/components/{ds-header.d.ts → ds-card.d.ts} +4 -4
  15. package/dist/components/ds-card.js +2 -0
  16. package/dist/components/ds-card.js.map +1 -0
  17. package/dist/components/ds-chart-bar.js +1 -1
  18. package/dist/components/ds-chart-bar.js.map +1 -1
  19. package/dist/components/ds-chart-donut.js +1 -1
  20. package/dist/components/ds-chart-donut.js.map +1 -1
  21. package/dist/components/ds-chart-legend.js +1 -1
  22. package/dist/components/ds-chart-line.js +1 -1
  23. package/dist/components/ds-checkbox.js +1 -1
  24. package/dist/components/ds-chip.js +1 -1
  25. package/dist/components/ds-divider.js +1 -1
  26. package/dist/components/ds-empty-state.js +1 -1
  27. package/dist/components/ds-empty-state.js.map +1 -1
  28. package/dist/components/ds-field.js +1 -1
  29. package/dist/components/ds-field.js.map +1 -1
  30. package/dist/components/ds-icon.js +1 -1
  31. package/dist/components/ds-input.js +1 -1
  32. package/dist/components/ds-input.js.map +1 -1
  33. package/dist/components/ds-loader.js +1 -1
  34. package/dist/components/ds-menu.js +1 -1
  35. package/dist/components/ds-modal.js +1 -1
  36. package/dist/components/ds-panel-nav.js +1 -1
  37. package/dist/components/ds-panel-nav.js.map +1 -1
  38. package/dist/components/ds-panel-tools.js +1 -1
  39. package/dist/components/ds-panel-tools.js.map +1 -1
  40. package/dist/components/ds-radio-group.js +1 -1
  41. package/dist/components/ds-select.js +1 -1
  42. package/dist/components/ds-select.js.map +1 -1
  43. package/dist/components/ds-shell-gradient-picker.js +1 -1
  44. package/dist/components/ds-shell-gradient-swatch.js +1 -1
  45. package/dist/components/ds-slider.js +1 -1
  46. package/dist/components/ds-tab-group-nav.js +1 -1
  47. package/dist/components/ds-tab-group.js +1 -1
  48. package/dist/components/ds-table.js +1 -1
  49. package/dist/components/ds-tag.js +1 -1
  50. package/dist/components/ds-text.js +1 -1
  51. package/dist/components/ds-toggle.js +1 -1
  52. package/dist/components/ds-tooltip-data-viz.js +1 -1
  53. package/dist/components/ds-tooltip.js +1 -1
  54. package/dist/components/{p-BPK76IsW.js → p-1m8r0wFg.js} +2 -2
  55. package/dist/components/{p-BZIOTcnM.js → p-3FLHei19.js} +2 -2
  56. package/dist/components/p-B2_D4IDN.js +2 -0
  57. package/dist/components/p-B2_D4IDN.js.map +1 -0
  58. package/dist/components/p-B5NcWtpp.js +2 -0
  59. package/dist/components/p-B5NcWtpp.js.map +1 -0
  60. package/dist/components/{p-CyFVn2Sc.js → p-B82KZX9D.js} +2 -2
  61. package/dist/components/p-B_g8X0eh.js +2 -0
  62. package/dist/components/p-B_g8X0eh.js.map +1 -0
  63. package/dist/components/{p-C3ORQUOp.js → p-Be3PHv34.js} +2 -2
  64. package/dist/components/p-CDHRJqea.js +2 -0
  65. package/dist/components/p-CDHRJqea.js.map +1 -0
  66. package/dist/components/{p-DkcH8mRl.js → p-CQmf2CeW.js} +2 -2
  67. package/dist/components/{p-DRqxVEye.js → p-CtwNUCnp.js} +2 -2
  68. package/dist/components/p-CuRjYmBk.js +2 -0
  69. package/dist/components/p-CuRjYmBk.js.map +1 -0
  70. package/dist/components/{p-DKdI8T8v.js → p-CwARVsZQ.js} +2 -2
  71. package/dist/components/{p-DKdI8T8v.js.map → p-CwARVsZQ.js.map} +1 -1
  72. package/dist/components/p-DuFm-ieS.js +2 -0
  73. package/dist/components/p-DuFm-ieS.js.map +1 -0
  74. package/dist/lib/nav/index.js.map +2 -2
  75. package/dist/lib/utils/control-width.d.ts +4 -0
  76. package/dist/lib/utils/index.d.ts +2 -0
  77. package/dist/lib/utils/index.js +14 -1
  78. package/dist/lib/utils/index.js.map +3 -3
  79. package/dist/lib/utils/token-defaults.d.ts +4 -0
  80. package/dist/types/components/ButtonFilled/ButtonFilled.d.ts +4 -0
  81. package/dist/types/components/ButtonFilled/index.d.ts +1 -1
  82. package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +7 -3
  83. package/dist/types/components/ButtonUnfilled/index.d.ts +1 -1
  84. package/dist/types/components/Card/Card.d.ts +20 -0
  85. package/dist/types/components/Card/index.d.ts +2 -0
  86. package/dist/types/components/CardDataVizDonut/CardDataVizDonut.d.ts +26 -0
  87. package/dist/types/components/CardDataVizDonut/index.d.ts +2 -0
  88. package/dist/types/components/CardSetting/CardSetting.d.ts +7 -2
  89. package/dist/types/components/ChartDonut/ChartDonut.d.ts +24 -1
  90. package/dist/types/components/Select/Select.d.ts +32 -0
  91. package/dist/types/components/Select/index.d.ts +2 -0
  92. package/dist/types/components/Tooltip/Tooltip.d.ts +4 -0
  93. package/dist/types/components.d.ts +213 -110
  94. package/dist/types/utils/control-width.d.ts +5 -0
  95. package/dist/types/utils/index.d.ts +2 -0
  96. package/dist/types/utils/token-defaults.d.ts +4 -0
  97. package/package.json +2 -2
  98. package/src/angular/index.ts +2 -3
  99. package/src/angular/proxies.ts +40 -56
  100. package/src/react/components.ts +2 -3
  101. package/src/react/ds-card-data-viz-donut.ts +27 -0
  102. package/src/react/{ds-header.ts → ds-card.ts} +7 -7
  103. package/src/wc/components/ButtonFilled/ButtonFilled.tsx +7 -0
  104. package/src/wc/components/ButtonFilled/index.ts +1 -0
  105. package/src/wc/components/ButtonUnfilled/ButtonUnfilled.tsx +10 -3
  106. package/src/wc/components/ButtonUnfilled/index.ts +1 -0
  107. package/src/wc/components/Card/Card.tsx +79 -0
  108. package/src/wc/components/Card/index.ts +1 -0
  109. package/src/wc/components/{CardDataViz/CardDataViz.tsx → CardDataVizDonut/CardDataVizDonut.tsx} +47 -40
  110. package/src/wc/components/CardDataVizDonut/index.ts +1 -0
  111. package/src/wc/components/CardSetting/CardSetting.tsx +22 -35
  112. package/src/wc/components/ChartDonut/ChartDonut.tsx +112 -11
  113. package/src/wc/components/PanelNav/PanelNav.tsx +10 -9
  114. package/src/wc/components/Select/Select.tsx +141 -60
  115. package/src/wc/components/Select/index.ts +1 -0
  116. package/src/wc/components/Tooltip/Tooltip.tsx +12 -0
  117. package/src/wc/components.d.ts +213 -113
  118. package/src/wc/utils/control-width.css +28 -0
  119. package/src/wc/utils/control-width.ts +10 -0
  120. package/src/wc/utils/index.ts +2 -0
  121. package/src/wc/utils/token-defaults.ts +4 -0
  122. package/dist/components/ds-card-data-viz.js +0 -2
  123. package/dist/components/ds-card-data-viz.js.map +0 -1
  124. package/dist/components/ds-header.js +0 -2
  125. package/dist/components/ds-header.js.map +0 -1
  126. package/dist/components/ds-scrollbar.d.ts +0 -11
  127. package/dist/components/ds-scrollbar.js +0 -2
  128. package/dist/components/ds-scrollbar.js.map +0 -1
  129. package/dist/components/p-B9dHCgY-.js +0 -2
  130. package/dist/components/p-B9dHCgY-.js.map +0 -1
  131. package/dist/components/p-BTC9Njj6.js +0 -2
  132. package/dist/components/p-BTC9Njj6.js.map +0 -1
  133. package/dist/components/p-DusYu-if.js +0 -2
  134. package/dist/components/p-DusYu-if.js.map +0 -1
  135. package/dist/components/p-UbKTMQjv.js +0 -2
  136. package/dist/components/p-UbKTMQjv.js.map +0 -1
  137. package/dist/types/components/CardDataViz/CardDataViz.d.ts +0 -22
  138. package/dist/types/components/CardDataViz/index.d.ts +0 -2
  139. package/dist/types/components/Header/Header.d.ts +0 -7
  140. package/dist/types/components/Scrollbar/Scrollbar.d.ts +0 -27
  141. package/src/react/ds-card-data-viz.ts +0 -26
  142. package/src/react/ds-scrollbar.ts +0 -26
  143. package/src/wc/components/CardDataViz/index.ts +0 -1
  144. package/src/wc/components/Header/Header.tsx +0 -33
  145. package/src/wc/components/Scrollbar/Scrollbar.tsx +0 -189
  146. /package/dist/components/{p-BPK76IsW.js.map → p-1m8r0wFg.js.map} +0 -0
  147. /package/dist/components/{p-BZIOTcnM.js.map → p-3FLHei19.js.map} +0 -0
  148. /package/dist/components/{p-CyFVn2Sc.js.map → p-B82KZX9D.js.map} +0 -0
  149. /package/dist/components/{p-C3ORQUOp.js.map → p-Be3PHv34.js.map} +0 -0
  150. /package/dist/components/{p-DkcH8mRl.js.map → p-CQmf2CeW.js.map} +0 -0
  151. /package/dist/components/{p-DRqxVEye.js.map → p-CtwNUCnp.js.map} +0 -0
@@ -10,16 +10,16 @@ import { ShellGradientPreset } from "./nav/shell-gradient-presets";
10
10
  import { BadgeSurface, BadgeVariant } from "./components/Badge/Badge";
11
11
  import { BannerContrast, BannerIntent } from "./components/Banner/Banner";
12
12
  import { BarNavTab } from "./components/BarNav/bar-nav-types";
13
- import { ButtonFilledContrast, ButtonFilledIntent, ButtonFilledSize, ButtonFilledVariant } from "./components/ButtonFilled/ButtonFilled";
14
- import { ButtonUnfilledBackground, ButtonUnfilledOnBackgroundContrast, ButtonUnfilledSize, ButtonUnfilledVariant } from "./components/ButtonUnfilled/ButtonUnfilled";
15
- import { CardDataVizWidth } from "./components/CardDataViz/CardDataViz";
13
+ import { ButtonFilledContrast, ButtonFilledIntent, ButtonFilledSize, ButtonFilledVariant, ButtonFilledWidth } from "./components/ButtonFilled/ButtonFilled";
14
+ import { ButtonUnfilledBackground, ButtonUnfilledOnBackgroundContrast, ButtonUnfilledSize, ButtonUnfilledVariant, ButtonUnfilledWidth } from "./components/ButtonUnfilled/ButtonUnfilled";
15
+ import { CardAppearance, CardWidth } from "./components/Card/Card";
16
+ import { CardDataVizDonutWidth } from "./components/CardDataVizDonut/CardDataVizDonut";
16
17
  import { CardSettingWidth } from "./components/CardSetting/CardSetting";
17
18
  import { ChartDatum, ChartLegendItem, ChartSeries } from "./utils/chart-types";
18
19
  import { ChartLegendDirection } from "./components/ChartLegend/ChartLegend";
19
20
  import { ChipBackground, ChipSize, ChipState } from "./components/Chip/Chip";
20
21
  import { DividerInset, DividerLength, DividerOrientation, DividerSurface } from "./components/Divider/Divider";
21
22
  import { EmptyStateType } from "./components/EmptyState/EmptyState";
22
- import { HeaderBackground } from "./components/Header/Header";
23
23
  import { IconColor, IconSize } from "./components/Icon/Icon";
24
24
  import { InputType } from "./components/Input/Input";
25
25
  import { MenuItemData, MenuSection } from "./components/Menu/menu-types";
@@ -29,8 +29,7 @@ import { PanelNavGroup, PanelNavRouterMode, PanelNavUserActionDetail } from "./c
29
29
  import { ChromeTransitionDetail } from "./nav/chrome-transition";
30
30
  import { PanelToolsItem, PanelToolsToolId } from "./components/PanelTools/panel-tools-types";
31
31
  import { RadioOption } from "./components/RadioGroup/RadioGroup";
32
- import { ScrollbarVariant } from "./components/Scrollbar/Scrollbar";
33
- import { SelectOption } from "./components/Select/Select";
32
+ import { SelectOption, SelectSize, SelectWidth } from "./components/Select/Select";
34
33
  import { ShellGradientPreset as ShellGradientPreset1 } from "./components/ShellGradientSwatch/shell-gradient-swatch-types";
35
34
  import { SkeletonVariant } from "./components/Skeleton/Skeleton";
36
35
  import { TabItem } from "./components/TabGroup/tab-item-utils";
@@ -45,16 +44,16 @@ export { ShellGradientPreset } from "./nav/shell-gradient-presets";
45
44
  export { BadgeSurface, BadgeVariant } from "./components/Badge/Badge";
46
45
  export { BannerContrast, BannerIntent } from "./components/Banner/Banner";
47
46
  export { BarNavTab } from "./components/BarNav/bar-nav-types";
48
- export { ButtonFilledContrast, ButtonFilledIntent, ButtonFilledSize, ButtonFilledVariant } from "./components/ButtonFilled/ButtonFilled";
49
- export { ButtonUnfilledBackground, ButtonUnfilledOnBackgroundContrast, ButtonUnfilledSize, ButtonUnfilledVariant } from "./components/ButtonUnfilled/ButtonUnfilled";
50
- export { CardDataVizWidth } from "./components/CardDataViz/CardDataViz";
47
+ export { ButtonFilledContrast, ButtonFilledIntent, ButtonFilledSize, ButtonFilledVariant, ButtonFilledWidth } from "./components/ButtonFilled/ButtonFilled";
48
+ export { ButtonUnfilledBackground, ButtonUnfilledOnBackgroundContrast, ButtonUnfilledSize, ButtonUnfilledVariant, ButtonUnfilledWidth } from "./components/ButtonUnfilled/ButtonUnfilled";
49
+ export { CardAppearance, CardWidth } from "./components/Card/Card";
50
+ export { CardDataVizDonutWidth } from "./components/CardDataVizDonut/CardDataVizDonut";
51
51
  export { CardSettingWidth } from "./components/CardSetting/CardSetting";
52
52
  export { ChartDatum, ChartLegendItem, ChartSeries } from "./utils/chart-types";
53
53
  export { ChartLegendDirection } from "./components/ChartLegend/ChartLegend";
54
54
  export { ChipBackground, ChipSize, ChipState } from "./components/Chip/Chip";
55
55
  export { DividerInset, DividerLength, DividerOrientation, DividerSurface } from "./components/Divider/Divider";
56
56
  export { EmptyStateType } from "./components/EmptyState/EmptyState";
57
- export { HeaderBackground } from "./components/Header/Header";
58
57
  export { IconColor, IconSize } from "./components/Icon/Icon";
59
58
  export { InputType } from "./components/Input/Input";
60
59
  export { MenuItemData, MenuSection } from "./components/Menu/menu-types";
@@ -64,8 +63,7 @@ export { PanelNavGroup, PanelNavRouterMode, PanelNavUserActionDetail } from "./c
64
63
  export { ChromeTransitionDetail } from "./nav/chrome-transition";
65
64
  export { PanelToolsItem, PanelToolsToolId } from "./components/PanelTools/panel-tools-types";
66
65
  export { RadioOption } from "./components/RadioGroup/RadioGroup";
67
- export { ScrollbarVariant } from "./components/Scrollbar/Scrollbar";
68
- export { SelectOption } from "./components/Select/Select";
66
+ export { SelectOption, SelectSize, SelectWidth } from "./components/Select/Select";
69
67
  export { ShellGradientPreset as ShellGradientPreset1 } from "./components/ShellGradientSwatch/shell-gradient-swatch-types";
70
68
  export { SkeletonVariant } from "./components/Skeleton/Skeleton";
71
69
  export { TabItem } from "./components/TabGroup/tab-item-utils";
@@ -254,10 +252,15 @@ export namespace Components {
254
252
  * @default 'label'
255
253
  */
256
254
  "variant": ButtonFilledVariant;
255
+ /**
256
+ * Width fit — hug content (default) or fill the parent.
257
+ * @default 'hug'
258
+ */
259
+ "width": ButtonFilledWidth;
257
260
  }
258
261
  interface DsButtonUnfilled {
259
262
  /**
260
- * When active, render the selected interaction fill. Default `true` for general UI. Shell chrome (nav / tool rails) should pass `false` so selection is foreground-only.
263
+ * When active, render the selected interaction fill. Default `true` for general UI. Shell chrome (nav / tool rails) should pass `false` so selection is foreground-only (primary color, no fill).
261
264
  * @default true
262
265
  */
263
266
  "activeFill": boolean;
@@ -282,7 +285,7 @@ export namespace Components {
282
285
  */
283
286
  "focusTabIndex"?: number;
284
287
  /**
285
- * Show a 1px tertiary inset border. Default on; shell chrome can pass `false`.
288
+ * Show a 1px secondary inset border. Default on; shell chrome can pass `false`.
286
289
  * @default true
287
290
  */
288
291
  "hasBorder": boolean;
@@ -293,7 +296,7 @@ export namespace Components {
293
296
  */
294
297
  "icon": string;
295
298
  /**
296
- * Active/selected visual state.
299
+ * Active/selected visual state. Always promotes foreground to primary.
297
300
  * @default false
298
301
  */
299
302
  "isActive": boolean;
@@ -324,18 +327,42 @@ export namespace Components {
324
327
  * @default 'label'
325
328
  */
326
329
  "variant": ButtonUnfilledVariant;
330
+ /**
331
+ * Width fit — hug content (default) or fill the parent.
332
+ * @default 'hug'
333
+ */
334
+ "width": ButtonUnfilledWidth;
327
335
  }
328
336
  /**
329
- * Copied from CardSetting as a starting scaffold header edit affordance removed for now
330
- * (data-viz widgets don't have an obvious "edit" action the way settings fields do); revisit
331
- * once the data-viz card's real header actions (menu, caption, footer stat) are designed.
337
+ * Shared card chrome width + matching min-height tokens, header (title + actions),
338
+ * and a flex body that fills leftover space. Compose this from settings / data-viz cards.
332
339
  */
333
- interface DsCardDataViz {
340
+ interface DsCard {
334
341
  /**
335
- * Card width token.
342
+ * Chrome recipe — `editing` applies the settings edit wash.
343
+ * @default 'default'
344
+ */
345
+ "appearance": CardAppearance;
346
+ /**
347
+ * Card width token (`sm` / `md` / `lg`). Also sets host `min-height` to the matching `--dimension-card-height-*` so empty bodies still fill the card.
336
348
  * @default 'md'
337
349
  */
338
- "cardWidth": CardDataVizWidth;
350
+ "cardWidth": CardWidth;
351
+ /**
352
+ * Section heading shown in the card header.
353
+ */
354
+ "heading": string;
355
+ }
356
+ /**
357
+ * Donut data-viz card — shared `ds-card` chrome with a fill chart region and
358
+ * content-sized legend. Hover sync between chart and legend stays here.
359
+ */
360
+ interface DsCardDataVizDonut {
361
+ /**
362
+ * Card width token — also sets matching min-height.
363
+ * @default 'md'
364
+ */
365
+ "cardWidth": CardDataVizDonutWidth;
339
366
  /**
340
367
  * Widget heading shown in the card header.
341
368
  */
@@ -343,7 +370,7 @@ export namespace Components {
343
370
  }
344
371
  interface DsCardSetting {
345
372
  /**
346
- * Card width token.
373
+ * Card width token (`sm` / `md` / `lg`). Also sets host `min-height` to the matching `--dimension-card-height-*` so the body fills available space even when the slot is empty.
347
374
  * @default 'md'
348
375
  */
349
376
  "cardWidth": CardSettingWidth;
@@ -402,9 +429,9 @@ export namespace Components {
402
429
  */
403
430
  "gap": number;
404
431
  /**
405
- * @default 175
432
+ * Explicit diameter in px. When unset, the donut sizes to its container (ResizeObserver) clamped between `--dimension-size-base * 16` (128px) and `* 24` (192px), and stays centered in the leftover space. Prefer unset inside card layouts.
406
433
  */
407
- "size": number;
434
+ "size": number | undefined;
408
435
  /**
409
436
  * Ring thickness — number (px) or TokoMo length. Defaults to `--dimension-size-200` (16px).
410
437
  * @default TOKEN_DEFAULTS.size200
@@ -554,13 +581,6 @@ export namespace Components {
554
581
  "fieldId": string | undefined;
555
582
  "label": string;
556
583
  }
557
- interface DsHeader {
558
- /**
559
- * @default 'secondary'
560
- */
561
- "background": HeaderBackground;
562
- "heading": string | undefined;
563
- }
564
584
  interface DsIcon {
565
585
  /**
566
586
  * Semantic foreground color token, or a raw CSS var reference.
@@ -817,19 +837,23 @@ export namespace Components {
817
837
  */
818
838
  "value": string;
819
839
  }
820
- interface DsScrollbar {
840
+ /**
841
+ * Dropdown select — unfilled-button chrome (label + trailing ChevronDown) in
842
+ * control-density sizes, with `ds-menu` for the option list.
843
+ */
844
+ interface DsSelect {
821
845
  /**
846
+ * When a value is selected, render the selected interaction fill (same recipe as unfilled-button `activeFill`). Default `true`. Pass `false` for foreground-only selection (primary label, no fill). Selected/open promotes the label to primary; chevron stays secondary.
822
847
  * @default true
823
848
  */
824
- "showTrackOnHover": boolean;
825
- /**
826
- * @default 'default'
827
- */
828
- "variant": ScrollbarVariant;
829
- }
830
- interface DsSelect {
849
+ "activeFill": boolean;
831
850
  "ariaLabel": string | undefined;
832
851
  "ariaLabelledby": string | undefined;
852
+ /**
853
+ * Show a 1px secondary inset border. Default on (matches unfilled button).
854
+ * @default true
855
+ */
856
+ "hasBorder": boolean;
833
857
  /**
834
858
  * Disables interaction (25% opacity via ds-control-inactive).
835
859
  * @default false
@@ -843,14 +867,24 @@ export namespace Components {
843
867
  "options": SelectOption[];
844
868
  /**
845
869
  * Placeholder shown when no value is selected.
846
- * @default 'Select option'
870
+ * @default 'Select'
847
871
  */
848
872
  "placeholder": string;
873
+ /**
874
+ * Control density (height, padding, icon, type).
875
+ * @default 'md'
876
+ */
877
+ "size": SelectSize;
849
878
  /**
850
879
  * Currently selected value.
851
880
  * @default ''
852
881
  */
853
882
  "value": string;
883
+ /**
884
+ * Width fit — fill the parent (default) or hug content.
885
+ * @default 'fill'
886
+ */
887
+ "width": SelectWidth;
854
888
  }
855
889
  interface DsShellGradientPicker {
856
890
  /**
@@ -1088,6 +1122,9 @@ export namespace Components {
1088
1122
  * @default TOKEN_DEFAULTS.animationDelayMedium3
1089
1123
  */
1090
1124
  "delay": number | string;
1125
+ /**
1126
+ * Tooltip text. Empty/whitespace skips show — useful when the wrapper must stay mounted for layout/animation stability (e.g. PanelNav expand/collapse).
1127
+ */
1091
1128
  "label": string;
1092
1129
  "shortcutKey": string | undefined;
1093
1130
  /**
@@ -1162,6 +1199,10 @@ export interface DsButtonUnfilledCustomEvent<T> extends CustomEvent<T> {
1162
1199
  detail: T;
1163
1200
  target: HTMLDsButtonUnfilledElement;
1164
1201
  }
1202
+ export interface DsCardDataVizDonutCustomEvent<T> extends CustomEvent<T> {
1203
+ detail: T;
1204
+ target: HTMLDsCardDataVizDonutElement;
1205
+ }
1165
1206
  export interface DsCardSettingCustomEvent<T> extends CustomEvent<T> {
1166
1207
  detail: T;
1167
1208
  target: HTMLDsCardSettingElement;
@@ -1325,15 +1366,35 @@ declare global {
1325
1366
  new (): HTMLDsButtonUnfilledElement;
1326
1367
  };
1327
1368
  /**
1328
- * Copied from CardSetting as a starting scaffold header edit affordance removed for now
1329
- * (data-viz widgets don't have an obvious "edit" action the way settings fields do); revisit
1330
- * once the data-viz card's real header actions (menu, caption, footer stat) are designed.
1369
+ * Shared card chrome width + matching min-height tokens, header (title + actions),
1370
+ * and a flex body that fills leftover space. Compose this from settings / data-viz cards.
1331
1371
  */
1332
- interface HTMLDsCardDataVizElement extends Components.DsCardDataViz, HTMLStencilElement {
1372
+ interface HTMLDsCardElement extends Components.DsCard, HTMLStencilElement {
1333
1373
  }
1334
- var HTMLDsCardDataVizElement: {
1335
- prototype: HTMLDsCardDataVizElement;
1336
- new (): HTMLDsCardDataVizElement;
1374
+ var HTMLDsCardElement: {
1375
+ prototype: HTMLDsCardElement;
1376
+ new (): HTMLDsCardElement;
1377
+ };
1378
+ interface HTMLDsCardDataVizDonutElementEventMap {
1379
+ "dsFilterClick": void;
1380
+ }
1381
+ /**
1382
+ * Donut data-viz card — shared `ds-card` chrome with a fill chart region and
1383
+ * content-sized legend. Hover sync between chart and legend stays here.
1384
+ */
1385
+ interface HTMLDsCardDataVizDonutElement extends Components.DsCardDataVizDonut, HTMLStencilElement {
1386
+ addEventListener<K extends keyof HTMLDsCardDataVizDonutElementEventMap>(type: K, listener: (this: HTMLDsCardDataVizDonutElement, ev: DsCardDataVizDonutCustomEvent<HTMLDsCardDataVizDonutElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1387
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1388
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1389
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1390
+ removeEventListener<K extends keyof HTMLDsCardDataVizDonutElementEventMap>(type: K, listener: (this: HTMLDsCardDataVizDonutElement, ev: DsCardDataVizDonutCustomEvent<HTMLDsCardDataVizDonutElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1391
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1392
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1393
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1394
+ }
1395
+ var HTMLDsCardDataVizDonutElement: {
1396
+ prototype: HTMLDsCardDataVizDonutElement;
1397
+ new (): HTMLDsCardDataVizDonutElement;
1337
1398
  };
1338
1399
  interface HTMLDsCardSettingElementEventMap {
1339
1400
  "dsEditingChange": boolean;
@@ -1463,12 +1524,6 @@ declare global {
1463
1524
  prototype: HTMLDsFieldElement;
1464
1525
  new (): HTMLDsFieldElement;
1465
1526
  };
1466
- interface HTMLDsHeaderElement extends Components.DsHeader, HTMLStencilElement {
1467
- }
1468
- var HTMLDsHeaderElement: {
1469
- prototype: HTMLDsHeaderElement;
1470
- new (): HTMLDsHeaderElement;
1471
- };
1472
1527
  interface HTMLDsIconElement extends Components.DsIcon, HTMLStencilElement {
1473
1528
  }
1474
1529
  var HTMLDsIconElement: {
@@ -1613,15 +1668,13 @@ declare global {
1613
1668
  prototype: HTMLDsRadioGroupElement;
1614
1669
  new (): HTMLDsRadioGroupElement;
1615
1670
  };
1616
- interface HTMLDsScrollbarElement extends Components.DsScrollbar, HTMLStencilElement {
1617
- }
1618
- var HTMLDsScrollbarElement: {
1619
- prototype: HTMLDsScrollbarElement;
1620
- new (): HTMLDsScrollbarElement;
1621
- };
1622
1671
  interface HTMLDsSelectElementEventMap {
1623
1672
  "dsChange": string;
1624
1673
  }
1674
+ /**
1675
+ * Dropdown select — unfilled-button chrome (label + trailing ChevronDown) in
1676
+ * control-density sizes, with `ds-menu` for the option list.
1677
+ */
1625
1678
  interface HTMLDsSelectElement extends Components.DsSelect, HTMLStencilElement {
1626
1679
  addEventListener<K extends keyof HTMLDsSelectElementEventMap>(type: K, listener: (this: HTMLDsSelectElement, ev: DsSelectCustomEvent<HTMLDsSelectElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1627
1680
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
@@ -1813,7 +1866,8 @@ declare global {
1813
1866
  "ds-bar-nav": HTMLDsBarNavElement;
1814
1867
  "ds-button-filled": HTMLDsButtonFilledElement;
1815
1868
  "ds-button-unfilled": HTMLDsButtonUnfilledElement;
1816
- "ds-card-data-viz": HTMLDsCardDataVizElement;
1869
+ "ds-card": HTMLDsCardElement;
1870
+ "ds-card-data-viz-donut": HTMLDsCardDataVizDonutElement;
1817
1871
  "ds-card-setting": HTMLDsCardSettingElement;
1818
1872
  "ds-chart-bar": HTMLDsChartBarElement;
1819
1873
  "ds-chart-donut": HTMLDsChartDonutElement;
@@ -1824,7 +1878,6 @@ declare global {
1824
1878
  "ds-divider": HTMLDsDividerElement;
1825
1879
  "ds-empty-state": HTMLDsEmptyStateElement;
1826
1880
  "ds-field": HTMLDsFieldElement;
1827
- "ds-header": HTMLDsHeaderElement;
1828
1881
  "ds-icon": HTMLDsIconElement;
1829
1882
  "ds-input": HTMLDsInputElement;
1830
1883
  "ds-loader": HTMLDsLoaderElement;
@@ -1834,7 +1887,6 @@ declare global {
1834
1887
  "ds-panel-nav": HTMLDsPanelNavElement;
1835
1888
  "ds-panel-tools": HTMLDsPanelToolsElement;
1836
1889
  "ds-radio-group": HTMLDsRadioGroupElement;
1837
- "ds-scrollbar": HTMLDsScrollbarElement;
1838
1890
  "ds-select": HTMLDsSelectElement;
1839
1891
  "ds-shell-gradient-picker": HTMLDsShellGradientPickerElement;
1840
1892
  "ds-shell-gradient-swatch": HTMLDsShellGradientSwatchElement;
@@ -2036,10 +2088,15 @@ declare namespace LocalJSX {
2036
2088
  * @default 'label'
2037
2089
  */
2038
2090
  "variant"?: ButtonFilledVariant;
2091
+ /**
2092
+ * Width fit — hug content (default) or fill the parent.
2093
+ * @default 'hug'
2094
+ */
2095
+ "width"?: ButtonFilledWidth;
2039
2096
  }
2040
2097
  interface DsButtonUnfilled {
2041
2098
  /**
2042
- * When active, render the selected interaction fill. Default `true` for general UI. Shell chrome (nav / tool rails) should pass `false` so selection is foreground-only.
2099
+ * When active, render the selected interaction fill. Default `true` for general UI. Shell chrome (nav / tool rails) should pass `false` so selection is foreground-only (primary color, no fill).
2043
2100
  * @default true
2044
2101
  */
2045
2102
  "activeFill"?: boolean;
@@ -2064,7 +2121,7 @@ declare namespace LocalJSX {
2064
2121
  */
2065
2122
  "focusTabIndex"?: number;
2066
2123
  /**
2067
- * Show a 1px tertiary inset border. Default on; shell chrome can pass `false`.
2124
+ * Show a 1px secondary inset border. Default on; shell chrome can pass `false`.
2068
2125
  * @default true
2069
2126
  */
2070
2127
  "hasBorder"?: boolean;
@@ -2075,7 +2132,7 @@ declare namespace LocalJSX {
2075
2132
  */
2076
2133
  "icon"?: string;
2077
2134
  /**
2078
- * Active/selected visual state.
2135
+ * Active/selected visual state. Always promotes foreground to primary.
2079
2136
  * @default false
2080
2137
  */
2081
2138
  "isActive"?: boolean;
@@ -2107,26 +2164,54 @@ declare namespace LocalJSX {
2107
2164
  * @default 'label'
2108
2165
  */
2109
2166
  "variant"?: ButtonUnfilledVariant;
2167
+ /**
2168
+ * Width fit — hug content (default) or fill the parent.
2169
+ * @default 'hug'
2170
+ */
2171
+ "width"?: ButtonUnfilledWidth;
2110
2172
  }
2111
2173
  /**
2112
- * Copied from CardSetting as a starting scaffold header edit affordance removed for now
2113
- * (data-viz widgets don't have an obvious "edit" action the way settings fields do); revisit
2114
- * once the data-viz card's real header actions (menu, caption, footer stat) are designed.
2174
+ * Shared card chrome width + matching min-height tokens, header (title + actions),
2175
+ * and a flex body that fills leftover space. Compose this from settings / data-viz cards.
2115
2176
  */
2116
- interface DsCardDataViz {
2177
+ interface DsCard {
2117
2178
  /**
2118
- * Card width token.
2179
+ * Chrome recipe — `editing` applies the settings edit wash.
2180
+ * @default 'default'
2181
+ */
2182
+ "appearance"?: CardAppearance;
2183
+ /**
2184
+ * Card width token (`sm` / `md` / `lg`). Also sets host `min-height` to the matching `--dimension-card-height-*` so empty bodies still fill the card.
2119
2185
  * @default 'md'
2120
2186
  */
2121
- "cardWidth"?: CardDataVizWidth;
2187
+ "cardWidth"?: CardWidth;
2188
+ /**
2189
+ * Section heading shown in the card header.
2190
+ */
2191
+ "heading": string;
2192
+ }
2193
+ /**
2194
+ * Donut data-viz card — shared `ds-card` chrome with a fill chart region and
2195
+ * content-sized legend. Hover sync between chart and legend stays here.
2196
+ */
2197
+ interface DsCardDataVizDonut {
2198
+ /**
2199
+ * Card width token — also sets matching min-height.
2200
+ * @default 'md'
2201
+ */
2202
+ "cardWidth"?: CardDataVizDonutWidth;
2122
2203
  /**
2123
2204
  * Widget heading shown in the card header.
2124
2205
  */
2125
2206
  "heading": string;
2207
+ /**
2208
+ * Emits when the header filter control is activated.
2209
+ */
2210
+ "onDsFilterClick"?: (event: DsCardDataVizDonutCustomEvent<void>) => void;
2126
2211
  }
2127
2212
  interface DsCardSetting {
2128
2213
  /**
2129
- * Card width token.
2214
+ * Card width token (`sm` / `md` / `lg`). Also sets host `min-height` to the matching `--dimension-card-height-*` so the body fills available space even when the slot is empty.
2130
2215
  * @default 'md'
2131
2216
  */
2132
2217
  "cardWidth"?: CardSettingWidth;
@@ -2193,9 +2278,9 @@ declare namespace LocalJSX {
2193
2278
  */
2194
2279
  "onDsSliceHover"?: (event: DsChartDonutCustomEvent<ChartDatum | null>) => void;
2195
2280
  /**
2196
- * @default 175
2281
+ * Explicit diameter in px. When unset, the donut sizes to its container (ResizeObserver) clamped between `--dimension-size-base * 16` (128px) and `* 24` (192px), and stays centered in the leftover space. Prefer unset inside card layouts.
2197
2282
  */
2198
- "size"?: number;
2283
+ "size"?: number | undefined;
2199
2284
  /**
2200
2285
  * Ring thickness — number (px) or TokoMo length. Defaults to `--dimension-size-200` (16px).
2201
2286
  * @default TOKEN_DEFAULTS.size200
@@ -2358,13 +2443,6 @@ declare namespace LocalJSX {
2358
2443
  "fieldId"?: string | undefined;
2359
2444
  "label": string;
2360
2445
  }
2361
- interface DsHeader {
2362
- /**
2363
- * @default 'secondary'
2364
- */
2365
- "background"?: HeaderBackground;
2366
- "heading"?: string | undefined;
2367
- }
2368
2446
  interface DsIcon {
2369
2447
  /**
2370
2448
  * Semantic foreground color token, or a raw CSS var reference.
@@ -2652,19 +2730,23 @@ declare namespace LocalJSX {
2652
2730
  */
2653
2731
  "value"?: string;
2654
2732
  }
2655
- interface DsScrollbar {
2733
+ /**
2734
+ * Dropdown select — unfilled-button chrome (label + trailing ChevronDown) in
2735
+ * control-density sizes, with `ds-menu` for the option list.
2736
+ */
2737
+ interface DsSelect {
2656
2738
  /**
2739
+ * When a value is selected, render the selected interaction fill (same recipe as unfilled-button `activeFill`). Default `true`. Pass `false` for foreground-only selection (primary label, no fill). Selected/open promotes the label to primary; chevron stays secondary.
2657
2740
  * @default true
2658
2741
  */
2659
- "showTrackOnHover"?: boolean;
2660
- /**
2661
- * @default 'default'
2662
- */
2663
- "variant"?: ScrollbarVariant;
2664
- }
2665
- interface DsSelect {
2742
+ "activeFill"?: boolean;
2666
2743
  "ariaLabel"?: string | undefined;
2667
2744
  "ariaLabelledby"?: string | undefined;
2745
+ /**
2746
+ * Show a 1px secondary inset border. Default on (matches unfilled button).
2747
+ * @default true
2748
+ */
2749
+ "hasBorder"?: boolean;
2668
2750
  /**
2669
2751
  * Disables interaction (25% opacity via ds-control-inactive).
2670
2752
  * @default false
@@ -2682,14 +2764,24 @@ declare namespace LocalJSX {
2682
2764
  "options"?: SelectOption[];
2683
2765
  /**
2684
2766
  * Placeholder shown when no value is selected.
2685
- * @default 'Select option'
2767
+ * @default 'Select'
2686
2768
  */
2687
2769
  "placeholder"?: string;
2770
+ /**
2771
+ * Control density (height, padding, icon, type).
2772
+ * @default 'md'
2773
+ */
2774
+ "size"?: SelectSize;
2688
2775
  /**
2689
2776
  * Currently selected value.
2690
2777
  * @default ''
2691
2778
  */
2692
2779
  "value"?: string;
2780
+ /**
2781
+ * Width fit — fill the parent (default) or hug content.
2782
+ * @default 'fill'
2783
+ */
2784
+ "width"?: SelectWidth;
2693
2785
  }
2694
2786
  interface DsShellGradientPicker {
2695
2787
  "onDsChange"?: (event: DsShellGradientPickerCustomEvent<ShellGradientPreset1>) => void;
@@ -2937,6 +3029,9 @@ declare namespace LocalJSX {
2937
3029
  * @default TOKEN_DEFAULTS.animationDelayMedium3
2938
3030
  */
2939
3031
  "delay"?: number | string;
3032
+ /**
3033
+ * Tooltip text. Empty/whitespace skips show — useful when the wrapper must stay mounted for layout/animation stability (e.g. PanelNav expand/collapse).
3034
+ */
2940
3035
  "label": string;
2941
3036
  "shortcutKey"?: string | undefined;
2942
3037
  /**
@@ -3032,6 +3127,7 @@ declare namespace LocalJSX {
3032
3127
  interface DsButtonFilledAttributes {
3033
3128
  "variant": ButtonFilledVariant;
3034
3129
  "size": ButtonFilledSize;
3130
+ "width": ButtonFilledWidth;
3035
3131
  "label": string;
3036
3132
  "icon": string;
3037
3133
  "intent": ButtonFilledIntent;
@@ -3043,6 +3139,7 @@ declare namespace LocalJSX {
3043
3139
  interface DsButtonUnfilledAttributes {
3044
3140
  "variant": ButtonUnfilledVariant;
3045
3141
  "size": ButtonUnfilledSize;
3142
+ "width": ButtonUnfilledWidth;
3046
3143
  "label": string;
3047
3144
  "icon": string;
3048
3145
  "isActive": boolean;
@@ -3060,9 +3157,14 @@ declare namespace LocalJSX {
3060
3157
  "pressed": boolean | undefined;
3061
3158
  "focusTabIndex": number;
3062
3159
  }
3063
- interface DsCardDataVizAttributes {
3160
+ interface DsCardAttributes {
3064
3161
  "heading": string;
3065
- "cardWidth": CardDataVizWidth;
3162
+ "cardWidth": CardWidth;
3163
+ "appearance": CardAppearance;
3164
+ }
3165
+ interface DsCardDataVizDonutAttributes {
3166
+ "heading": string;
3167
+ "cardWidth": CardDataVizDonutWidth;
3066
3168
  }
3067
3169
  interface DsCardSettingAttributes {
3068
3170
  "heading": string;
@@ -3074,7 +3176,7 @@ declare namespace LocalJSX {
3074
3176
  "height": number;
3075
3177
  }
3076
3178
  interface DsChartDonutAttributes {
3077
- "size": number;
3179
+ "size": number | undefined;
3078
3180
  "thickness": string;
3079
3181
  "cornerRadius": string;
3080
3182
  "gap": number;
@@ -3123,10 +3225,6 @@ declare namespace LocalJSX {
3123
3225
  "label": string;
3124
3226
  "fieldId": string | undefined;
3125
3227
  }
3126
- interface DsHeaderAttributes {
3127
- "heading": string | undefined;
3128
- "background": HeaderBackground;
3129
- }
3130
3228
  interface DsIconAttributes {
3131
3229
  "name": string;
3132
3230
  "size": IconSize;
@@ -3199,14 +3297,14 @@ declare namespace LocalJSX {
3199
3297
  "ariaLabel": string | undefined;
3200
3298
  "ariaLabelledby": string | undefined;
3201
3299
  }
3202
- interface DsScrollbarAttributes {
3203
- "variant": ScrollbarVariant;
3204
- "showTrackOnHover": boolean;
3205
- }
3206
3300
  interface DsSelectAttributes {
3207
3301
  "value": string;
3208
3302
  "placeholder": string;
3303
+ "size": SelectSize;
3304
+ "width": SelectWidth;
3209
3305
  "isInactive": boolean;
3306
+ "activeFill": boolean;
3307
+ "hasBorder": boolean;
3210
3308
  "ariaLabel": string | undefined;
3211
3309
  "ariaLabelledby": string | undefined;
3212
3310
  }
@@ -3309,7 +3407,8 @@ declare namespace LocalJSX {
3309
3407
  "ds-bar-nav": Omit<DsBarNav, keyof DsBarNavAttributes> & { [K in keyof DsBarNav & keyof DsBarNavAttributes]?: DsBarNav[K] } & { [K in keyof DsBarNav & keyof DsBarNavAttributes as `attr:${K}`]?: DsBarNavAttributes[K] } & { [K in keyof DsBarNav & keyof DsBarNavAttributes as `prop:${K}`]?: DsBarNav[K] };
3310
3408
  "ds-button-filled": Omit<DsButtonFilled, keyof DsButtonFilledAttributes> & { [K in keyof DsButtonFilled & keyof DsButtonFilledAttributes]?: DsButtonFilled[K] } & { [K in keyof DsButtonFilled & keyof DsButtonFilledAttributes as `attr:${K}`]?: DsButtonFilledAttributes[K] } & { [K in keyof DsButtonFilled & keyof DsButtonFilledAttributes as `prop:${K}`]?: DsButtonFilled[K] };
3311
3409
  "ds-button-unfilled": Omit<DsButtonUnfilled, keyof DsButtonUnfilledAttributes> & { [K in keyof DsButtonUnfilled & keyof DsButtonUnfilledAttributes]?: DsButtonUnfilled[K] } & { [K in keyof DsButtonUnfilled & keyof DsButtonUnfilledAttributes as `attr:${K}`]?: DsButtonUnfilledAttributes[K] } & { [K in keyof DsButtonUnfilled & keyof DsButtonUnfilledAttributes as `prop:${K}`]?: DsButtonUnfilled[K] };
3312
- "ds-card-data-viz": Omit<DsCardDataViz, keyof DsCardDataVizAttributes> & { [K in keyof DsCardDataViz & keyof DsCardDataVizAttributes]?: DsCardDataViz[K] } & { [K in keyof DsCardDataViz & keyof DsCardDataVizAttributes as `attr:${K}`]?: DsCardDataVizAttributes[K] } & { [K in keyof DsCardDataViz & keyof DsCardDataVizAttributes as `prop:${K}`]?: DsCardDataViz[K] } & OneOf<"heading", DsCardDataViz["heading"], DsCardDataVizAttributes["heading"]>;
3410
+ "ds-card": Omit<DsCard, keyof DsCardAttributes> & { [K in keyof DsCard & keyof DsCardAttributes]?: DsCard[K] } & { [K in keyof DsCard & keyof DsCardAttributes as `attr:${K}`]?: DsCardAttributes[K] } & { [K in keyof DsCard & keyof DsCardAttributes as `prop:${K}`]?: DsCard[K] } & OneOf<"heading", DsCard["heading"], DsCardAttributes["heading"]>;
3411
+ "ds-card-data-viz-donut": Omit<DsCardDataVizDonut, keyof DsCardDataVizDonutAttributes> & { [K in keyof DsCardDataVizDonut & keyof DsCardDataVizDonutAttributes]?: DsCardDataVizDonut[K] } & { [K in keyof DsCardDataVizDonut & keyof DsCardDataVizDonutAttributes as `attr:${K}`]?: DsCardDataVizDonutAttributes[K] } & { [K in keyof DsCardDataVizDonut & keyof DsCardDataVizDonutAttributes as `prop:${K}`]?: DsCardDataVizDonut[K] } & OneOf<"heading", DsCardDataVizDonut["heading"], DsCardDataVizDonutAttributes["heading"]>;
3313
3412
  "ds-card-setting": Omit<DsCardSetting, keyof DsCardSettingAttributes> & { [K in keyof DsCardSetting & keyof DsCardSettingAttributes]?: DsCardSetting[K] } & { [K in keyof DsCardSetting & keyof DsCardSettingAttributes as `attr:${K}`]?: DsCardSettingAttributes[K] } & { [K in keyof DsCardSetting & keyof DsCardSettingAttributes as `prop:${K}`]?: DsCardSetting[K] } & OneOf<"heading", DsCardSetting["heading"], DsCardSettingAttributes["heading"]>;
3314
3413
  "ds-chart-bar": Omit<DsChartBar, keyof DsChartBarAttributes> & { [K in keyof DsChartBar & keyof DsChartBarAttributes]?: DsChartBar[K] } & { [K in keyof DsChartBar & keyof DsChartBarAttributes as `attr:${K}`]?: DsChartBarAttributes[K] } & { [K in keyof DsChartBar & keyof DsChartBarAttributes as `prop:${K}`]?: DsChartBar[K] };
3315
3414
  "ds-chart-donut": Omit<DsChartDonut, keyof DsChartDonutAttributes> & { [K in keyof DsChartDonut & keyof DsChartDonutAttributes]?: DsChartDonut[K] } & { [K in keyof DsChartDonut & keyof DsChartDonutAttributes as `attr:${K}`]?: DsChartDonutAttributes[K] } & { [K in keyof DsChartDonut & keyof DsChartDonutAttributes as `prop:${K}`]?: DsChartDonut[K] };
@@ -3320,7 +3419,6 @@ declare namespace LocalJSX {
3320
3419
  "ds-divider": Omit<DsDivider, keyof DsDividerAttributes> & { [K in keyof DsDivider & keyof DsDividerAttributes]?: DsDivider[K] } & { [K in keyof DsDivider & keyof DsDividerAttributes as `attr:${K}`]?: DsDividerAttributes[K] } & { [K in keyof DsDivider & keyof DsDividerAttributes as `prop:${K}`]?: DsDivider[K] };
3321
3420
  "ds-empty-state": Omit<DsEmptyState, keyof DsEmptyStateAttributes> & { [K in keyof DsEmptyState & keyof DsEmptyStateAttributes]?: DsEmptyState[K] } & { [K in keyof DsEmptyState & keyof DsEmptyStateAttributes as `attr:${K}`]?: DsEmptyStateAttributes[K] } & { [K in keyof DsEmptyState & keyof DsEmptyStateAttributes as `prop:${K}`]?: DsEmptyState[K] };
3322
3421
  "ds-field": Omit<DsField, keyof DsFieldAttributes> & { [K in keyof DsField & keyof DsFieldAttributes]?: DsField[K] } & { [K in keyof DsField & keyof DsFieldAttributes as `attr:${K}`]?: DsFieldAttributes[K] } & { [K in keyof DsField & keyof DsFieldAttributes as `prop:${K}`]?: DsField[K] } & OneOf<"label", DsField["label"], DsFieldAttributes["label"]>;
3323
- "ds-header": Omit<DsHeader, keyof DsHeaderAttributes> & { [K in keyof DsHeader & keyof DsHeaderAttributes]?: DsHeader[K] } & { [K in keyof DsHeader & keyof DsHeaderAttributes as `attr:${K}`]?: DsHeaderAttributes[K] } & { [K in keyof DsHeader & keyof DsHeaderAttributes as `prop:${K}`]?: DsHeader[K] };
3324
3422
  "ds-icon": Omit<DsIcon, keyof DsIconAttributes> & { [K in keyof DsIcon & keyof DsIconAttributes]?: DsIcon[K] } & { [K in keyof DsIcon & keyof DsIconAttributes as `attr:${K}`]?: DsIconAttributes[K] } & { [K in keyof DsIcon & keyof DsIconAttributes as `prop:${K}`]?: DsIcon[K] };
3325
3423
  "ds-input": Omit<DsInput, keyof DsInputAttributes> & { [K in keyof DsInput & keyof DsInputAttributes]?: DsInput[K] } & { [K in keyof DsInput & keyof DsInputAttributes as `attr:${K}`]?: DsInputAttributes[K] } & { [K in keyof DsInput & keyof DsInputAttributes as `prop:${K}`]?: DsInput[K] };
3326
3424
  "ds-loader": Omit<DsLoader, keyof DsLoaderAttributes> & { [K in keyof DsLoader & keyof DsLoaderAttributes]?: DsLoader[K] } & { [K in keyof DsLoader & keyof DsLoaderAttributes as `attr:${K}`]?: DsLoaderAttributes[K] } & { [K in keyof DsLoader & keyof DsLoaderAttributes as `prop:${K}`]?: DsLoader[K] };
@@ -3330,7 +3428,6 @@ declare namespace LocalJSX {
3330
3428
  "ds-panel-nav": Omit<DsPanelNav, keyof DsPanelNavAttributes> & { [K in keyof DsPanelNav & keyof DsPanelNavAttributes]?: DsPanelNav[K] } & { [K in keyof DsPanelNav & keyof DsPanelNavAttributes as `attr:${K}`]?: DsPanelNavAttributes[K] } & { [K in keyof DsPanelNav & keyof DsPanelNavAttributes as `prop:${K}`]?: DsPanelNav[K] };
3331
3429
  "ds-panel-tools": Omit<DsPanelTools, keyof DsPanelToolsAttributes> & { [K in keyof DsPanelTools & keyof DsPanelToolsAttributes]?: DsPanelTools[K] } & { [K in keyof DsPanelTools & keyof DsPanelToolsAttributes as `attr:${K}`]?: DsPanelToolsAttributes[K] } & { [K in keyof DsPanelTools & keyof DsPanelToolsAttributes as `prop:${K}`]?: DsPanelTools[K] };
3332
3430
  "ds-radio-group": Omit<DsRadioGroup, keyof DsRadioGroupAttributes> & { [K in keyof DsRadioGroup & keyof DsRadioGroupAttributes]?: DsRadioGroup[K] } & { [K in keyof DsRadioGroup & keyof DsRadioGroupAttributes as `attr:${K}`]?: DsRadioGroupAttributes[K] } & { [K in keyof DsRadioGroup & keyof DsRadioGroupAttributes as `prop:${K}`]?: DsRadioGroup[K] };
3333
- "ds-scrollbar": Omit<DsScrollbar, keyof DsScrollbarAttributes> & { [K in keyof DsScrollbar & keyof DsScrollbarAttributes]?: DsScrollbar[K] } & { [K in keyof DsScrollbar & keyof DsScrollbarAttributes as `attr:${K}`]?: DsScrollbarAttributes[K] } & { [K in keyof DsScrollbar & keyof DsScrollbarAttributes as `prop:${K}`]?: DsScrollbar[K] };
3334
3431
  "ds-select": Omit<DsSelect, keyof DsSelectAttributes> & { [K in keyof DsSelect & keyof DsSelectAttributes]?: DsSelect[K] } & { [K in keyof DsSelect & keyof DsSelectAttributes as `attr:${K}`]?: DsSelectAttributes[K] } & { [K in keyof DsSelect & keyof DsSelectAttributes as `prop:${K}`]?: DsSelect[K] };
3335
3432
  "ds-shell-gradient-picker": Omit<DsShellGradientPicker, keyof DsShellGradientPickerAttributes> & { [K in keyof DsShellGradientPicker & keyof DsShellGradientPickerAttributes]?: DsShellGradientPicker[K] } & { [K in keyof DsShellGradientPicker & keyof DsShellGradientPickerAttributes as `attr:${K}`]?: DsShellGradientPickerAttributes[K] } & { [K in keyof DsShellGradientPicker & keyof DsShellGradientPickerAttributes as `prop:${K}`]?: DsShellGradientPicker[K] };
3336
3433
  "ds-shell-gradient-swatch": Omit<DsShellGradientSwatch, keyof DsShellGradientSwatchAttributes> & { [K in keyof DsShellGradientSwatch & keyof DsShellGradientSwatchAttributes]?: DsShellGradientSwatch[K] } & { [K in keyof DsShellGradientSwatch & keyof DsShellGradientSwatchAttributes as `attr:${K}`]?: DsShellGradientSwatchAttributes[K] } & { [K in keyof DsShellGradientSwatch & keyof DsShellGradientSwatchAttributes as `prop:${K}`]?: DsShellGradientSwatch[K] };
@@ -3357,11 +3454,15 @@ declare module "@stencil/core" {
3357
3454
  "ds-button-filled": LocalJSX.IntrinsicElements["ds-button-filled"] & JSXBase.HTMLAttributes<HTMLDsButtonFilledElement>;
3358
3455
  "ds-button-unfilled": LocalJSX.IntrinsicElements["ds-button-unfilled"] & JSXBase.HTMLAttributes<HTMLDsButtonUnfilledElement>;
3359
3456
  /**
3360
- * Copied from CardSetting as a starting scaffold header edit affordance removed for now
3361
- * (data-viz widgets don't have an obvious "edit" action the way settings fields do); revisit
3362
- * once the data-viz card's real header actions (menu, caption, footer stat) are designed.
3457
+ * Shared card chrome width + matching min-height tokens, header (title + actions),
3458
+ * and a flex body that fills leftover space. Compose this from settings / data-viz cards.
3363
3459
  */
3364
- "ds-card-data-viz": LocalJSX.IntrinsicElements["ds-card-data-viz"] & JSXBase.HTMLAttributes<HTMLDsCardDataVizElement>;
3460
+ "ds-card": LocalJSX.IntrinsicElements["ds-card"] & JSXBase.HTMLAttributes<HTMLDsCardElement>;
3461
+ /**
3462
+ * Donut data-viz card — shared `ds-card` chrome with a fill chart region and
3463
+ * content-sized legend. Hover sync between chart and legend stays here.
3464
+ */
3465
+ "ds-card-data-viz-donut": LocalJSX.IntrinsicElements["ds-card-data-viz-donut"] & JSXBase.HTMLAttributes<HTMLDsCardDataVizDonutElement>;
3365
3466
  "ds-card-setting": LocalJSX.IntrinsicElements["ds-card-setting"] & JSXBase.HTMLAttributes<HTMLDsCardSettingElement>;
3366
3467
  "ds-chart-bar": LocalJSX.IntrinsicElements["ds-chart-bar"] & JSXBase.HTMLAttributes<HTMLDsChartBarElement>;
3367
3468
  "ds-chart-donut": LocalJSX.IntrinsicElements["ds-chart-donut"] & JSXBase.HTMLAttributes<HTMLDsChartDonutElement>;
@@ -3384,7 +3485,6 @@ declare module "@stencil/core" {
3384
3485
  "ds-divider": LocalJSX.IntrinsicElements["ds-divider"] & JSXBase.HTMLAttributes<HTMLDsDividerElement>;
3385
3486
  "ds-empty-state": LocalJSX.IntrinsicElements["ds-empty-state"] & JSXBase.HTMLAttributes<HTMLDsEmptyStateElement>;
3386
3487
  "ds-field": LocalJSX.IntrinsicElements["ds-field"] & JSXBase.HTMLAttributes<HTMLDsFieldElement>;
3387
- "ds-header": LocalJSX.IntrinsicElements["ds-header"] & JSXBase.HTMLAttributes<HTMLDsHeaderElement>;
3388
3488
  "ds-icon": LocalJSX.IntrinsicElements["ds-icon"] & JSXBase.HTMLAttributes<HTMLDsIconElement>;
3389
3489
  "ds-input": LocalJSX.IntrinsicElements["ds-input"] & JSXBase.HTMLAttributes<HTMLDsInputElement>;
3390
3490
  "ds-loader": LocalJSX.IntrinsicElements["ds-loader"] & JSXBase.HTMLAttributes<HTMLDsLoaderElement>;
@@ -3394,7 +3494,10 @@ declare module "@stencil/core" {
3394
3494
  "ds-panel-nav": LocalJSX.IntrinsicElements["ds-panel-nav"] & JSXBase.HTMLAttributes<HTMLDsPanelNavElement>;
3395
3495
  "ds-panel-tools": LocalJSX.IntrinsicElements["ds-panel-tools"] & JSXBase.HTMLAttributes<HTMLDsPanelToolsElement>;
3396
3496
  "ds-radio-group": LocalJSX.IntrinsicElements["ds-radio-group"] & JSXBase.HTMLAttributes<HTMLDsRadioGroupElement>;
3397
- "ds-scrollbar": LocalJSX.IntrinsicElements["ds-scrollbar"] & JSXBase.HTMLAttributes<HTMLDsScrollbarElement>;
3497
+ /**
3498
+ * Dropdown select — unfilled-button chrome (label + trailing ChevronDown) in
3499
+ * control-density sizes, with `ds-menu` for the option list.
3500
+ */
3398
3501
  "ds-select": LocalJSX.IntrinsicElements["ds-select"] & JSXBase.HTMLAttributes<HTMLDsSelectElement>;
3399
3502
  "ds-shell-gradient-picker": LocalJSX.IntrinsicElements["ds-shell-gradient-picker"] & JSXBase.HTMLAttributes<HTMLDsShellGradientPickerElement>;
3400
3503
  "ds-shell-gradient-swatch": LocalJSX.IntrinsicElements["ds-shell-gradient-swatch"] & JSXBase.HTMLAttributes<HTMLDsShellGradientSwatchElement>;