@ds-mo/ui 13.12.0 → 13.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +68 -16
  4. package/dist/angular/ds-button-filled.d.ts +1 -1
  5. package/dist/angular/ds-button-filled.js +3 -3
  6. package/dist/angular/ds-button-unfilled.d.ts +1 -1
  7. package/dist/angular/ds-button-unfilled.js +3 -3
  8. package/dist/angular/ds-table.d.ts +7 -1
  9. package/dist/angular/ds-table.js +10 -4
  10. package/dist/angular/ds-tag.d.ts +1 -1
  11. package/dist/angular/ds-tag.js +3 -3
  12. package/dist/components/ds-agent-activity.js +1 -1
  13. package/dist/components/ds-agent-response.js +1 -1
  14. package/dist/components/ds-agent-source-list.js +1 -1
  15. package/dist/components/ds-agent-tool-call.js +1 -1
  16. package/dist/components/ds-attachment-list.js +1 -1
  17. package/dist/components/ds-avatar.js +1 -1
  18. package/dist/components/ds-banner.js +1 -1
  19. package/dist/components/ds-bar-nav.js +1 -1
  20. package/dist/components/ds-bar-title.js +1 -1
  21. package/dist/components/ds-bar-workflow.js +1 -1
  22. package/dist/components/ds-button-filled.js +1 -1
  23. package/dist/components/ds-button-unfilled.js +1 -1
  24. package/dist/components/ds-card-chart.js +1 -1
  25. package/dist/components/ds-card-overview.js +1 -1
  26. package/dist/components/ds-card-overview.js.map +1 -1
  27. package/dist/components/ds-card-setting.js +1 -1
  28. package/dist/components/ds-chart-legend.js +1 -1
  29. package/dist/components/ds-chart-legend.js.map +1 -1
  30. package/dist/components/ds-checkbox.js +1 -1
  31. package/dist/components/ds-chip.js +1 -1
  32. package/dist/components/ds-chip.js.map +1 -1
  33. package/dist/components/ds-code-block.js +1 -1
  34. package/dist/components/ds-conversation-list-item.js +1 -1
  35. package/dist/components/ds-conversation-list-item.js.map +1 -1
  36. package/dist/components/ds-empty-state.js +1 -1
  37. package/dist/components/ds-icon.js +1 -1
  38. package/dist/components/ds-input.js +1 -1
  39. package/dist/components/ds-input.js.map +1 -1
  40. package/dist/components/ds-markdown.js +1 -1
  41. package/dist/components/ds-menu.js +1 -1
  42. package/dist/components/ds-message-actions.js +1 -1
  43. package/dist/components/ds-message-composer.js +1 -1
  44. package/dist/components/ds-message-scroller.js +1 -1
  45. package/dist/components/ds-mobile-bar-nav.js +1 -1
  46. package/dist/components/ds-mobile-header.js +1 -1
  47. package/dist/components/ds-mobile-section-switcher.js +1 -1
  48. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  49. package/dist/components/ds-modal.js +1 -1
  50. package/dist/components/ds-panel-nav.js +1 -1
  51. package/dist/components/ds-panel-sub-nav.js +1 -1
  52. package/dist/components/ds-panel-sub-nav.js.map +1 -1
  53. package/dist/components/ds-panel-tool-header.js +1 -1
  54. package/dist/components/ds-panel-tool-search.js +1 -1
  55. package/dist/components/ds-panel-tools.js +1 -1
  56. package/dist/components/ds-radio.js +1 -1
  57. package/dist/components/ds-radio.js.map +1 -1
  58. package/dist/components/ds-select.js +1 -1
  59. package/dist/components/ds-select.js.map +1 -1
  60. package/dist/components/ds-shell-app.js +1 -1
  61. package/dist/components/ds-shell-tools.js +1 -1
  62. package/dist/components/ds-tab-group.js +1 -1
  63. package/dist/components/ds-table.js +1 -1
  64. package/dist/components/ds-table.js.map +1 -1
  65. package/dist/components/ds-tag.js +1 -1
  66. package/dist/components/ds-toast.js +1 -1
  67. package/dist/components/ds-typing-indicator.js +1 -1
  68. package/dist/components/p-Azjx2SsL.js +2 -0
  69. package/dist/components/p-Azjx2SsL.js.map +1 -0
  70. package/dist/components/p-B1JB0Zn-.js +2 -0
  71. package/dist/components/{p-BYre-ZDg.js.map → p-B1JB0Zn-.js.map} +1 -1
  72. package/dist/components/p-B2t8alvH.js +2 -0
  73. package/dist/components/{p-DK4PGrHm.js.map → p-B2t8alvH.js.map} +1 -1
  74. package/dist/components/{p-DBchq8Zw.js → p-B6linhwY.js} +2 -2
  75. package/dist/components/p-B8HG9OFh.js +2 -0
  76. package/dist/components/p-B8HG9OFh.js.map +1 -0
  77. package/dist/components/{p-DcmqsAMP.js → p-BJVzrR_P.js} +2 -2
  78. package/dist/components/p-BL0JHLJp.js +2 -0
  79. package/dist/components/{p-BFXN4ioL.js.map → p-BL0JHLJp.js.map} +1 -1
  80. package/dist/components/p-BPS17WvI.js +2 -0
  81. package/dist/components/{p-x9jO4lZ7.js.map → p-BPS17WvI.js.map} +1 -1
  82. package/dist/components/{p-BX57q1Lo.js → p-BSdAFIcG.js} +2 -2
  83. package/dist/components/{p-DGkWMhHO.js → p-BULWzaBs.js} +2 -2
  84. package/dist/components/{p-B_eqa09C.js → p-C-aCs6ID.js} +2 -2
  85. package/dist/components/{p-BRajO-Za.js → p-C5ecLNZA.js} +2 -2
  86. package/dist/components/p-C8U5BsJf.js +2 -0
  87. package/dist/components/p-C8U5BsJf.js.map +1 -0
  88. package/dist/components/{p-DKftz0O8.js → p-COmqMfQo.js} +2 -2
  89. package/dist/components/{p-DxygUurH.js → p-CeyoHpPn.js} +2 -2
  90. package/dist/components/{p-CdFnvBem.js → p-CiUciD5Z.js} +2 -2
  91. package/dist/components/p-CuwopElg.js.map +1 -1
  92. package/dist/components/p-DAM4CDXT.js +2 -0
  93. package/dist/components/{p-BxJurXEn.js.map → p-DAM4CDXT.js.map} +1 -1
  94. package/dist/components/{p-DBJJiSP0.js → p-DMJEOAwP.js} +2 -2
  95. package/dist/components/p-DYAQVvOu.js +2 -0
  96. package/dist/components/{p-CIlO_j3q.js.map → p-DYAQVvOu.js.map} +1 -1
  97. package/dist/components/p-DyDkQ8H9.js +2 -0
  98. package/dist/components/p-DyDkQ8H9.js.map +1 -0
  99. package/dist/components/{p-DkhE3BsH.js → p-Dz3Ufmr4.js} +2 -2
  100. package/dist/components/p-cPh32CFB.js +2 -0
  101. package/dist/components/{p-Bj7KrXzw.js.map → p-cPh32CFB.js.map} +1 -1
  102. package/dist/components/{p-Doz2uwRv.js → p-fkQhr5s9.js} +2 -2
  103. package/dist/components/p-oOKTL-yx.js +2 -0
  104. package/dist/components/{p-C5gZHZHU.js.map → p-oOKTL-yx.js.map} +1 -1
  105. package/dist/docs/components.json +362 -10
  106. package/dist/lib/components/ButtonFilled/ButtonFilled.d.ts +6 -0
  107. package/dist/lib/utils/control-text.d.ts +2 -0
  108. package/dist/lib/utils/index.d.ts +1 -1
  109. package/dist/lib/utils/index.js.map +2 -2
  110. package/dist/mcp-data/registry/agent-activity.json +1 -1
  111. package/dist/mcp-data/registry/agent-response.json +1 -1
  112. package/dist/mcp-data/registry/agent-source-list.json +1 -1
  113. package/dist/mcp-data/registry/agent-tool-call.json +1 -1
  114. package/dist/mcp-data/registry/attachment-list.json +1 -1
  115. package/dist/mcp-data/registry/avatar.json +1 -1
  116. package/dist/mcp-data/registry/badge.json +1 -1
  117. package/dist/mcp-data/registry/banner.json +1 -1
  118. package/dist/mcp-data/registry/bar-nav.json +1 -1
  119. package/dist/mcp-data/registry/bar-title.json +1 -1
  120. package/dist/mcp-data/registry/bar-workflow.json +1 -1
  121. package/dist/mcp-data/registry/breadcrumb.json +1 -1
  122. package/dist/mcp-data/registry/button-filled.json +39 -2
  123. package/dist/mcp-data/registry/button-unfilled.json +45 -6
  124. package/dist/mcp-data/registry/card-chart.json +1 -1
  125. package/dist/mcp-data/registry/card-overview.json +1 -1
  126. package/dist/mcp-data/registry/card-setting.json +1 -1
  127. package/dist/mcp-data/registry/chart-legend.json +1 -1
  128. package/dist/mcp-data/registry/chart.json +1 -1
  129. package/dist/mcp-data/registry/checkbox.json +1 -1
  130. package/dist/mcp-data/registry/chip.json +1 -1
  131. package/dist/mcp-data/registry/code-block.json +1 -1
  132. package/dist/mcp-data/registry/conversation-list-item.json +1 -1
  133. package/dist/mcp-data/registry/conversation-list-section.json +1 -1
  134. package/dist/mcp-data/registry/conversation-list.json +1 -1
  135. package/dist/mcp-data/registry/divider.json +1 -1
  136. package/dist/mcp-data/registry/empty-state.json +1 -1
  137. package/dist/mcp-data/registry/field.json +1 -1
  138. package/dist/mcp-data/registry/icon.json +2 -2
  139. package/dist/mcp-data/registry/input.json +1 -1
  140. package/dist/mcp-data/registry/loader.json +1 -1
  141. package/dist/mcp-data/registry/markdown.json +1 -1
  142. package/dist/mcp-data/registry/menu.json +1 -1
  143. package/dist/mcp-data/registry/message-actions.json +1 -1
  144. package/dist/mcp-data/registry/message-bubble.json +1 -1
  145. package/dist/mcp-data/registry/message-composer.json +1 -1
  146. package/dist/mcp-data/registry/message-scroller.json +1 -1
  147. package/dist/mcp-data/registry/message.json +1 -1
  148. package/dist/mcp-data/registry/mobile-bar-nav.json +1 -1
  149. package/dist/mcp-data/registry/mobile-header.json +1 -1
  150. package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
  151. package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
  152. package/dist/mcp-data/registry/modal.json +1 -1
  153. package/dist/mcp-data/registry/panel-nav.json +1 -1
  154. package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
  155. package/dist/mcp-data/registry/panel-tool-header.json +1 -1
  156. package/dist/mcp-data/registry/panel-tool-search.json +1 -1
  157. package/dist/mcp-data/registry/panel-tools.json +1 -1
  158. package/dist/mcp-data/registry/radio.json +1 -1
  159. package/dist/mcp-data/registry/registry.json +68 -16
  160. package/dist/mcp-data/registry/scroll-overlay.json +1 -1
  161. package/dist/mcp-data/registry/select.json +1 -1
  162. package/dist/mcp-data/registry/shell-app.json +1 -1
  163. package/dist/mcp-data/registry/shell-page.json +1 -1
  164. package/dist/mcp-data/registry/shell-tools.json +1 -1
  165. package/dist/mcp-data/registry/skeleton.json +1 -1
  166. package/dist/mcp-data/registry/slider.json +1 -1
  167. package/dist/mcp-data/registry/swatch-picker.json +1 -1
  168. package/dist/mcp-data/registry/switch.json +1 -1
  169. package/dist/mcp-data/registry/tab-group.json +1 -1
  170. package/dist/mcp-data/registry/table.json +141 -21
  171. package/dist/mcp-data/registry/tag.json +23 -5
  172. package/dist/mcp-data/registry/text.json +1 -1
  173. package/dist/mcp-data/registry/toast.json +1 -1
  174. package/dist/mcp-data/registry/tooltip-chart.json +1 -1
  175. package/dist/mcp-data/registry/tooltip.json +1 -1
  176. package/dist/mcp-data/registry/typing-indicator.json +1 -1
  177. package/dist/react/ds-table.d.ts +3 -1
  178. package/dist/react/ds-table.js +3 -1
  179. package/dist/styles/table.css +491 -76
  180. package/dist/types/components/ButtonFilled/ButtonFilled.d.ts +6 -0
  181. package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +13 -1
  182. package/dist/types/components/Table/Table.d.ts +41 -22
  183. package/dist/types/components/Table/index.d.ts +1 -1
  184. package/dist/types/components/Table/table-cell-model.d.ts +44 -0
  185. package/dist/types/components/Table/table-layout-controller.d.ts +65 -0
  186. package/dist/types/components/Table/table-load-controller.d.ts +49 -0
  187. package/dist/types/components/Table/table-model.d.ts +25 -0
  188. package/dist/types/components/Table/table-render-model.d.ts +41 -0
  189. package/dist/types/components/Table/table-types.d.ts +34 -2
  190. package/dist/types/components/Tag/Tag.d.ts +3 -0
  191. package/dist/types/components.d.ts +108 -8
  192. package/dist/types/utils/control-text.d.ts +2 -0
  193. package/dist/types/utils/index.d.ts +1 -1
  194. package/package.json +3 -3
  195. package/dist/components/p-BFXN4ioL.js +0 -2
  196. package/dist/components/p-BYre-ZDg.js +0 -2
  197. package/dist/components/p-Bj7KrXzw.js +0 -2
  198. package/dist/components/p-BxJurXEn.js +0 -2
  199. package/dist/components/p-C5gZHZHU.js +0 -2
  200. package/dist/components/p-CFNG0K3m.js +0 -2
  201. package/dist/components/p-CFNG0K3m.js.map +0 -1
  202. package/dist/components/p-CIlO_j3q.js +0 -2
  203. package/dist/components/p-DAbaMtEX.js +0 -2
  204. package/dist/components/p-DAbaMtEX.js.map +0 -1
  205. package/dist/components/p-DK4PGrHm.js +0 -2
  206. package/dist/components/p-DumWT7NN.js +0 -2
  207. package/dist/components/p-DumWT7NN.js.map +0 -1
  208. package/dist/components/p-c1pY-Mqq.js +0 -2
  209. package/dist/components/p-c1pY-Mqq.js.map +0 -1
  210. package/dist/components/p-x9jO4lZ7.js +0 -2
  211. /package/dist/components/{p-DBchq8Zw.js.map → p-B6linhwY.js.map} +0 -0
  212. /package/dist/components/{p-DcmqsAMP.js.map → p-BJVzrR_P.js.map} +0 -0
  213. /package/dist/components/{p-BX57q1Lo.js.map → p-BSdAFIcG.js.map} +0 -0
  214. /package/dist/components/{p-DGkWMhHO.js.map → p-BULWzaBs.js.map} +0 -0
  215. /package/dist/components/{p-B_eqa09C.js.map → p-C-aCs6ID.js.map} +0 -0
  216. /package/dist/components/{p-BRajO-Za.js.map → p-C5ecLNZA.js.map} +0 -0
  217. /package/dist/components/{p-DKftz0O8.js.map → p-COmqMfQo.js.map} +0 -0
  218. /package/dist/components/{p-DxygUurH.js.map → p-CeyoHpPn.js.map} +0 -0
  219. /package/dist/components/{p-CdFnvBem.js.map → p-CiUciD5Z.js.map} +0 -0
  220. /package/dist/components/{p-DBJJiSP0.js.map → p-DMJEOAwP.js.map} +0 -0
  221. /package/dist/components/{p-DkhE3BsH.js.map → p-Dz3Ufmr4.js.map} +0 -0
  222. /package/dist/components/{p-Doz2uwRv.js.map → p-fkQhr5s9.js.map} +0 -0
@@ -1,5 +1,6 @@
1
1
  import { EventEmitter } from '../../stencil-public-runtime';
2
2
  import type { ChoiceBackground } from '../../utils/choice-list';
3
+ import type { ControlInsetDepth } from '../../utils/control-text';
3
4
  import type { ButtonPopup, ButtonSize, ButtonVariant, ButtonWidth } from '../../utils/button-types';
4
5
  export type ButtonFilledIntent = 'neutral' | 'brand' | 'ai' | 'negative' | 'warning' | 'caution' | 'positive' | 'guide' | 'walkthrough';
5
6
  export type ButtonFilledContrast = 'bold' | 'strong' | 'medium' | 'faint';
@@ -17,6 +18,10 @@ export declare class ButtonFilled {
17
18
  variant: ButtonFilledVariant;
18
19
  /** Control density (height, padding, icon, type). */
19
20
  size: ButtonFilledSize;
21
+ /** Use reduced outer geometry when nested inside a control of the same size. */
22
+ isInset: boolean;
23
+ /** Single removes 4px overall; double removes 8px overall (xs stays single). */
24
+ insetDepth: ControlInsetDepth;
20
25
  /** Width fit — hug content (default) or fill the parent. */
21
26
  width: ButtonFilledWidth;
22
27
  /** Visible text for `label` / `icon-label` variants. */
@@ -79,6 +84,7 @@ export declare class ButtonFilled {
79
84
  private handleClick;
80
85
  private get resolvedHaspopup();
81
86
  private get accessibleName();
87
+ private get doubleInset();
82
88
  render(): any;
83
89
  }
84
90
  //# sourceMappingURL=ButtonFilled.d.ts.map
@@ -1,4 +1,5 @@
1
1
  import { EventEmitter } from '../../stencil-public-runtime';
2
+ import type { ControlInsetDepth } from '../../utils/control-text';
2
3
  import type { ButtonPopup, ButtonSize, ButtonVariant, ButtonWidth } from '../../utils/button-types';
3
4
  export type ButtonUnfilledBackground = 'faint' | 'medium' | 'bold' | 'strong' | 'translucent' | 'inverted' | 'media' | 'always-dark';
4
5
  export type ButtonUnfilledVariant = ButtonVariant;
@@ -14,6 +15,10 @@ export declare class ButtonUnfilled {
14
15
  variant: ButtonUnfilledVariant;
15
16
  /** Control density (height, padding, icon, type). */
16
17
  size: ButtonUnfilledSize;
18
+ /** Use reduced outer geometry when nested inside a control of the same size. */
19
+ isInset: boolean;
20
+ /** Single removes 4px overall; double removes 8px overall (xs stays single). */
21
+ insetDepth: ControlInsetDepth;
17
22
  /** Width fit — hug content (default) or fill the parent. */
18
23
  width: ButtonUnfilledWidth;
19
24
  /** Visible text for `label` / `icon-label` variants. */
@@ -53,6 +58,11 @@ export declare class ButtonUnfilled {
53
58
  /** Accessible name override. Required for icon-only buttons. */
54
59
  ariaLabel: string | null;
55
60
  controls: string | undefined;
61
+ /**
62
+ * Controlled disclosure or popup state forwarded to `aria-expanded`.
63
+ * Popup triggers hold a pressed visual while open; ordinary disclosures
64
+ * retain the normal resting appearance.
65
+ */
56
66
  expanded: boolean | undefined;
57
67
  haspopup: ButtonUnfilledPopup | undefined;
58
68
  /**
@@ -84,7 +94,9 @@ export declare class ButtonUnfilled {
84
94
  private handleClick;
85
95
  private get showDot();
86
96
  private get resolvedHaspopup();
87
- /** An expanded popup trigger is visually active even when selection is controlled separately. */
97
+ private get doubleInset();
98
+ /** Only popup triggers hold a pressed visual while expanded. */
99
+ private get expandedPopup();
88
100
  private get visuallyActive();
89
101
  /** Knock-out ring: selected fill → active wash; otherwise surface token. */
90
102
  private get dotRing();
@@ -1,5 +1,5 @@
1
1
  import { EventEmitter } from '../../stencil-public-runtime';
2
- import type { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableGroup, TableGroupingChangeDetail, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableRow, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from './table-types';
2
+ import type { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableGroup, TableGroupCollapseChangeDetail, TableGroupingChangeDetail, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from './table-types';
3
3
  export declare class Table {
4
4
  /** Stable column definitions. Assign through JavaScript. */
5
5
  columns: TableColumn[];
@@ -11,9 +11,20 @@ export declare class Table {
11
11
  grouping: TableGroupingState | null;
12
12
  /** Controlled member-row sort state. */
13
13
  sort: TableSortState | null;
14
- /** Required accessible table name, rendered as a native caption. */
14
+ /** Controlled collapsed group identities. Groups not listed remain expanded. */
15
+ collapsedGroupIds: string[];
16
+ /** Required accessible table name, retained as a native caption. */
15
17
  caption: string;
18
+ /** Shows a matching presentational title bar above the native table frame. */
16
19
  captionVisibility: TableCaptionVisibility;
20
+ /**
21
+ * Optional result summary footer. When both `displayedCount` and `totalCount`
22
+ * are finite numbers, the table shows “Displaying {displayed} of {total}”.
23
+ */
24
+ displayedCount: number | undefined;
25
+ totalCount: number | undefined;
26
+ /** Supports {displayed} and {total} placeholders. */
27
+ resultSummaryLabel: string;
17
28
  stickyHeader: boolean;
18
29
  /** Maximum scroll-region height. Numbers resolve to CSS pixels. */
19
30
  maxHeight: string | number | undefined;
@@ -50,26 +61,27 @@ export declare class Table {
50
61
  rowsLoadedLabel: string;
51
62
  dsSortChange: EventEmitter<TableSortChangeDetail>;
52
63
  dsGroupingChange: EventEmitter<TableGroupingChangeDetail>;
64
+ dsGroupCollapseChange: EventEmitter<TableGroupCollapseChangeDetail>;
53
65
  dsSelectionChange: EventEmitter<TableSelectionChangeDetail>;
54
66
  dsLoadMore: EventEmitter<TableLoadMoreDetail>;
55
67
  dsCellAction: EventEmitter<TableCellActionDetail>;
68
+ dsRowActivate: EventEmitter<TableRowActivateDetail>;
56
69
  private overflowStart;
57
70
  private overflowEnd;
58
71
  private scrollable;
59
- private intersectionSupported;
60
72
  private announcement;
61
73
  private viewportEl;
74
+ private frameEl;
75
+ private interactiveHeadEl;
76
+ private collapseAllOverlayEl;
77
+ private stickyHeaderTableEl;
62
78
  private tableEl;
63
79
  private sentinelEl;
64
- private resizeObserver;
65
- private intersectionObserver;
66
- private observedSentinel;
67
- private requestPending;
68
- private requestedRowCount;
69
- private previousLoadedRowCount;
70
80
  private previousModelWarning;
71
81
  private hasLoaded;
72
- private reconnectFrame;
82
+ private renderedModel;
83
+ private readonly layoutController;
84
+ private readonly loadController;
73
85
  componentWillLoad(): void;
74
86
  componentDidLoad(): void;
75
87
  componentDidRender(): void;
@@ -84,32 +96,39 @@ export declare class Table {
84
96
  handleHasMoreChange(hasMore: boolean, hadMore: boolean): void;
85
97
  private get grouped();
86
98
  private get selectable();
87
- private get loadedRows();
88
- private get hasData();
89
- private get totalColumns();
90
- private get selectedSet();
91
- private get selectionState();
99
+ private get documentStickyHeader();
100
+ private currentLoadedRows;
101
+ private currentLoadedRowCount;
102
+ private createRenderModel;
92
103
  private get resolvedMaxHeight();
93
- private get tableStyle();
94
104
  private warnModelIssues;
95
- private connectViewportObserver;
96
- private syncOverflow;
97
- private resetLoadRequest;
98
- private disconnectIntersectionObserver;
99
- private connectIntersectionObserver;
100
- private requestLoadMore;
101
105
  private emitSort;
102
106
  private sortButtonLabel;
103
107
  private emitRowSelection;
104
108
  private emitAllSelection;
109
+ private emitGroupSelection;
110
+ private rowEventOwnsActivation;
111
+ private emitRowActivation;
112
+ private handleRowKeydown;
105
113
  private renderSelectionControl;
114
+ private renderStickyEdge;
115
+ private renderCollapseAllButton;
116
+ private renderFloatingCollapseAll;
106
117
  private renderColumnHeader;
118
+ private renderColgroup;
119
+ private renderHeader;
107
120
  private renderCellValue;
108
121
  private renderRow;
122
+ private emitGroupCollapse;
123
+ private emitAllGroupsCollapse;
109
124
  private renderDataBodies;
110
125
  private renderSkeletonBody;
111
126
  private renderStateBody;
112
127
  private renderLazyBody;
128
+ private renderDocumentStickyHeader;
129
+ private get resultSummary();
130
+ private renderResultFooter;
131
+ private renderCaptionBar;
113
132
  render(): any;
114
133
  }
115
134
  //# sourceMappingURL=Table.d.ts.map
@@ -1,2 +1,2 @@
1
- export type { TableCaptionVisibility, TableCellAlign, TableCellAction, TableCellActionDetail, TableCellBlank, TableCellEmpty, TableCellIcon, TableCellImage, TableCellPrimaryText, TableCellText, TableCellTag, TableCellTagVariant, TableCellValue, TableColumn, TableColumnWidth, TableGroup, TableHeaderSegment, TableGroupingChangeDetail, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableLoadMoreReason, TableRow, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortDirection, TableSortState, } from './table-types';
1
+ export type { TableCaptionVisibility, TableCellAlign, TableCellAction, TableCellActionDetail, TableCellBlank, TableCellEmpty, TableCellIcon, TableCellImage, TableCellPrimaryText, TableCellText, TableCellTag, TableCellTagVariant, TableCellValue, TableColumn, TableColumnSticky, TableColumnWidth, TableGroup, TableGroupCollapseChangeDetail, TableGroupIntent, TableHeaderSegment, TableGroupingChangeDetail, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableLoadMoreReason, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortDirection, TableSortState, } from './table-types';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,44 @@
1
+ import type { TableCellAction, TableCellBlank, TableCellEmpty, TableCellIcon, TableCellImage, TableCellTag, TableCellTagVariant, TableCellValue, TableColumn } from './table-types';
2
+ export interface ResolvedTableCellText {
3
+ primary: string | number;
4
+ secondary?: string | number;
5
+ wrap?: boolean;
6
+ fontFeature?: 'normal' | 'tabular-nums';
7
+ }
8
+ export type TableCellPresentation = {
9
+ kind: 'blank';
10
+ cellType: 'blank';
11
+ value: TableCellBlank;
12
+ } | {
13
+ kind: 'empty';
14
+ cellType: 'empty';
15
+ value: TableCellEmpty | null | undefined;
16
+ } | {
17
+ kind: 'icon';
18
+ cellType: 'icon';
19
+ value: TableCellIcon;
20
+ } | {
21
+ kind: 'image';
22
+ cellType: 'image';
23
+ value: TableCellImage;
24
+ } | {
25
+ kind: 'action';
26
+ cellType: 'action';
27
+ value: TableCellAction;
28
+ } | {
29
+ kind: 'tag';
30
+ cellType: 'tag';
31
+ value: TableCellTag;
32
+ variant: TableCellTagVariant;
33
+ } | {
34
+ kind: 'text';
35
+ cellType: 'text' | 'primary-text';
36
+ value: ResolvedTableCellText;
37
+ primaryText: boolean;
38
+ singleLine: boolean;
39
+ variant: 'single' | 'multi' | 'primary-pair';
40
+ wraps: boolean;
41
+ };
42
+ /** Resolve a cell's semantic and visual recipe once for both markup and classes. */
43
+ export declare function resolveTableCellPresentation(value: TableCellValue, column: TableColumn): TableCellPresentation;
44
+ //# sourceMappingURL=table-cell-model.d.ts.map
@@ -0,0 +1,65 @@
1
+ export interface TableLayoutElements {
2
+ viewport: HTMLElement | null;
3
+ table: HTMLTableElement | null;
4
+ stickyHeaderTable: HTMLTableElement | null;
5
+ collapseAllOverlay: HTMLElement | null;
6
+ frame: HTMLElement | null;
7
+ interactiveHead: HTMLTableSectionElement | null;
8
+ }
9
+ export interface TableLayoutMode {
10
+ documentStickyHeader: boolean;
11
+ floatingCollapseAll: boolean;
12
+ }
13
+ export interface TableOverflowState {
14
+ start: boolean;
15
+ end: boolean;
16
+ scrollable: boolean;
17
+ }
18
+ export interface TableLayoutControllerOptions {
19
+ elements: () => TableLayoutElements;
20
+ mode: () => TableLayoutMode;
21
+ overflowChanged: (state: TableOverflowState) => void;
22
+ }
23
+ export interface TableLayoutMetricInput {
24
+ viewportInlineSize: number;
25
+ viewportBlockSize: number;
26
+ scrollInlineSize: number;
27
+ scrollBlockSize: number;
28
+ scrollInlineOffset: number;
29
+ tableInlineSize: number;
30
+ collapseHeadBlockStart?: number;
31
+ collapseFrameBlockStart?: number;
32
+ }
33
+ export interface TableLayoutMetrics {
34
+ visibleInlineSize: number;
35
+ overflow: TableOverflowState;
36
+ inlineOffset: number;
37
+ maxInlineOffset: number;
38
+ collapseBlockOffset: number | null;
39
+ }
40
+ /** Pure geometry resolution shared by the controller and focused tests. */
41
+ export declare function resolveTableLayoutMetrics(input: TableLayoutMetricInput): TableLayoutMetrics;
42
+ /**
43
+ * Owns table viewport observation. It resolves newly rendered geometry
44
+ * immediately so the first paint has the correct viewport-width chrome, then
45
+ * batches observer-driven scroll and resize reads/writes into one animation frame.
46
+ * The component remains responsible only for refs and reactive overflow state.
47
+ */
48
+ export declare class TableLayoutController {
49
+ private readonly options;
50
+ private connected;
51
+ private connectedViewport;
52
+ private observedTable;
53
+ private resizeObserver;
54
+ private frame;
55
+ private overflow;
56
+ constructor(options: TableLayoutControllerOptions);
57
+ connect(): void;
58
+ disconnect(): void;
59
+ /** Reconcile newly rendered refs, observers, and pending geometry. */
60
+ refresh(): void;
61
+ private schedule;
62
+ private sync;
63
+ private setProperty;
64
+ }
65
+ //# sourceMappingURL=table-layout-controller.d.ts.map
@@ -0,0 +1,49 @@
1
+ import type { TableLoadMoreDetail, TableLoadMoreMode, TableLoadMoreReason } from './table-types';
2
+ export interface TableLoadControllerState {
3
+ lazyLoading: boolean;
4
+ loadMoreMode: TableLoadMoreMode;
5
+ hasMore: boolean;
6
+ loadingMore: boolean;
7
+ loadMoreError: string | undefined;
8
+ loadIdentity: string | number;
9
+ loadMoreThreshold: number;
10
+ containedScroll: boolean;
11
+ loadingMoreLabel: string;
12
+ endOfResultsLabel: string;
13
+ rowsLoadedLabel: string;
14
+ loadedRowCount: number;
15
+ viewport: HTMLElement | null;
16
+ sentinel: HTMLElement | null;
17
+ }
18
+ export interface TableLoadControllerOptions {
19
+ state: () => TableLoadControllerState;
20
+ announce: (message: string) => void;
21
+ request: (detail: TableLoadMoreDetail) => void;
22
+ }
23
+ /** Owns incremental-loading request guards, announcements, and observation. */
24
+ export declare class TableLoadController {
25
+ private readonly options;
26
+ readonly intersectionSupported: boolean;
27
+ private connected;
28
+ private intersectionObserver;
29
+ private observedSentinel;
30
+ private requestPending;
31
+ private requestedRowCount;
32
+ private previousLoadedRowCount;
33
+ constructor(options: TableLoadControllerOptions);
34
+ initialize(): void;
35
+ connect(): void;
36
+ disconnect(): void;
37
+ refresh(): void;
38
+ structureChanged(): void;
39
+ dataChanged(): void;
40
+ identityChanged(): void;
41
+ configurationChanged(): void;
42
+ loadingChanged(loading: boolean): void;
43
+ errorChanged(error: string | undefined): void;
44
+ hasMoreChanged(hasMore: boolean, hadMore: boolean): void;
45
+ request(reason: TableLoadMoreReason): void;
46
+ private resetRequest;
47
+ private disconnectObserver;
48
+ }
49
+ //# sourceMappingURL=table-load-controller.d.ts.map
@@ -17,13 +17,38 @@ export declare function tableCellPrimary(value: TableCellValue): string | number
17
17
  export declare function tableRowSelectionLabel(row: TableRow, columns: TableColumn[]): string;
18
18
  export declare function nextTableSortState(current: TableSortState | null | undefined, columnId: string): TableSortState;
19
19
  export declare function nextTableGroupOrder(grouping: TableGroupingState): TableGroupingState;
20
+ export declare function toggleTableGroupCollapsed(collapsedGroupIds: string[], groupId: string): string[];
21
+ export declare function nextTableGroupsCollapsed(collapsedGroupIds: string[], groupIds: string[]): string[];
22
+ /** Host for grouped collapse-all: the trailing action lane or a scrollport-owned overlay. */
23
+ export type TableCollapseAllHost = {
24
+ columnId: string;
25
+ mode: 'action';
26
+ } | {
27
+ mode: 'floating';
28
+ };
29
+ export declare function tableCollapseAllHost(columns: TableColumn[]): TableCollapseAllHost | undefined;
20
30
  export declare function clampTableColumnSize(column: TableColumn): number | undefined;
21
31
  export declare function tableColumnSize(column: TableColumn): string | undefined;
32
+ /**
33
+ * When every column has an explicit width, one ordinary lane must absorb spare
34
+ * table width so fixed selection and action lanes are not expanded by the
35
+ * native fixed-table layout algorithm.
36
+ */
37
+ export declare function tableFlexibleColumnId(columns: TableColumn[]): string | undefined;
22
38
  export declare function tableExplicitMinWidth(columns: TableColumn[]): string | undefined;
23
39
  export declare function tableRows(rows: TableRow[], groups: TableGroup[], grouped: boolean): TableRow[];
24
40
  export declare function deriveTableSelectionState(rows: TableRow[], selectedRowIds: readonly string[]): TableSelectionState;
25
41
  export declare function toggleTableRowSelection(selectedRowIds: readonly string[], row: TableRow): string[];
26
42
  export declare function toggleAllLoadedTableRows(selectedRowIds: readonly string[], loadedRows: TableRow[]): string[];
43
+ /** Toggle every selectable loaded row that belongs to a group. */
44
+ export declare function toggleTableGroupSelection(selectedRowIds: readonly string[], groupRows: TableRow[]): string[];
27
45
  export declare function resolvedTableGroupCount(group: TableGroup): number;
46
+ export declare const TABLE_GROUP_INTENTS: readonly ["brand", "neutral", "negative", "warning", "caution", "positive"];
47
+ export declare function isTableGroupIntent(value: unknown): value is (typeof TABLE_GROUP_INTENTS)[number];
48
+ export declare function tableGroupIntentClass(intent: (typeof TABLE_GROUP_INTENTS)[number] | undefined): string | undefined;
49
+ /** Title color for an intentful group label; defaults to primary when unset. */
50
+ export declare function tableGroupLabelColor(intent: (typeof TABLE_GROUP_INTENTS)[number] | undefined): 'primary' | 'brand' | 'negative' | 'warning' | 'caution' | 'positive' | `var(--${string})`;
51
+ /** Formats the optional table result footer. Returns null when either count is missing. */
52
+ export declare function formatTableResultSummary(displayed: number | null | undefined, total: number | null | undefined, label?: string, locale?: string): string | null;
28
53
  export declare function tableModelIssues(columns: TableColumn[], rows: TableRow[], groups: TableGroup[], grouped: boolean): string[];
29
54
  //# sourceMappingURL=table-model.d.ts.map
@@ -0,0 +1,41 @@
1
+ import { tableGroupLabelColor, type TableCollapseAllHost, type TableSelectionState } from './table-model';
2
+ import type { TableColumn, TableGroup, TableGroupIntent, TableRow, TableSelectionMode } from './table-types';
3
+ export interface TableGroupRenderModel {
4
+ group: TableGroup;
5
+ count: number;
6
+ countLabel: string;
7
+ countIntent: TableGroupIntent;
8
+ intent: TableGroupIntent | undefined;
9
+ intentClass: string | undefined;
10
+ labelColor: ReturnType<typeof tableGroupLabelColor>;
11
+ collapsed: boolean;
12
+ selection: TableSelectionState | null;
13
+ }
14
+ export interface TableRenderModel {
15
+ grouped: boolean;
16
+ selectable: boolean;
17
+ loadedRows: TableRow[];
18
+ hasData: boolean;
19
+ selectedRowIds: ReadonlySet<string>;
20
+ selection: TableSelectionState;
21
+ collapsedGroupIds: ReadonlySet<string>;
22
+ groups: TableGroupRenderModel[];
23
+ totalColumns: number;
24
+ allGroupsCollapsed: boolean;
25
+ showCollapseAll: boolean;
26
+ collapseAllHost: TableCollapseAllHost | undefined;
27
+ flexibleColumnId: string | undefined;
28
+ tableStyle: Record<string, string> | undefined;
29
+ }
30
+ export interface TableRenderModelInput {
31
+ columns: TableColumn[];
32
+ rows: TableRow[];
33
+ groups: TableGroup[];
34
+ grouped: boolean;
35
+ selectionMode: TableSelectionMode;
36
+ selectedRowIds: string[];
37
+ collapsedGroupIds: string[];
38
+ }
39
+ /** Create one immutable snapshot of all derived state consumed during a render. */
40
+ export declare function createTableRenderModel(input: TableRenderModelInput): TableRenderModel;
41
+ //# sourceMappingURL=table-render-model.d.ts.map
@@ -3,10 +3,13 @@ import type { IconColor } from '../Icon/Icon';
3
3
  export type TableSortDirection = 'asc' | 'desc';
4
4
  export type TableSelectionMode = 'none' | 'multiple';
5
5
  export type TableCellAlign = 'start' | 'center' | 'end';
6
+ export type TableColumnSticky = 'start' | 'end';
6
7
  export type TableCaptionVisibility = 'visible' | 'hidden';
7
8
  export type TableLoadMoreMode = 'auto' | 'manual';
8
9
  export type TableLoadMoreReason = 'auto' | 'manual' | 'retry';
9
10
  export type TableColumnWidth = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
11
+ /** Semantic color for a group section header (faint surface + bold title). */
12
+ export type TableGroupIntent = 'brand' | 'neutral' | 'negative' | 'warning' | 'caution' | 'positive';
10
13
  /** Independently sortable label within a compound column header. */
11
14
  export interface TableHeaderSegment {
12
15
  label: string;
@@ -116,7 +119,10 @@ export type TableCellValue = string | number | null | undefined | TableCellText
116
119
  export interface TableColumn {
117
120
  /** Stable column identity. */
118
121
  id: string;
122
+ /** Visible column label. May be empty when headerLabel supplies a non-visual name. */
119
123
  header: string;
124
+ /** Screen-reader-only column name for an intentionally blank visual header. */
125
+ headerLabel?: string;
120
126
  /** Optional labels for columns that present and sort multiple related data points. */
121
127
  headerSegments?: TableHeaderSegment[];
122
128
  align?: TableCellAlign;
@@ -129,6 +135,13 @@ export interface TableColumn {
129
135
  maxSize?: number;
130
136
  /** Wrap cell text instead of truncating it to one line. */
131
137
  wrap?: boolean;
138
+ /** Pin one application column to either inline edge during horizontal scrolling. */
139
+ sticky?: TableColumnSticky;
140
+ /**
141
+ * Declare a trailing application-action lane. Action columns keep fixed
142
+ * geometry and may host grouped table-level controls in their header.
143
+ */
144
+ kind?: 'data' | 'action';
132
145
  }
133
146
  export interface TableRow {
134
147
  /** Stable identity, unique across all groups. */
@@ -140,6 +153,8 @@ export interface TableRow {
140
153
  selectable?: boolean;
141
154
  /** Keep the row visible while disabling its selection control and styling it as inactive. */
142
155
  disabled?: boolean;
156
+ /** Make the complete row a keyboard- and pointer-activatable application target. */
157
+ interactive?: boolean;
143
158
  }
144
159
  export interface TableGroup {
145
160
  /** Stable group identity. */
@@ -148,8 +163,13 @@ export interface TableGroup {
148
163
  value?: string | number;
149
164
  /** Total server-side member count; may exceed the currently loaded row count. */
150
165
  totalCount?: number;
151
- /** Optional localized, display-ready count such as “18 vehicles”. */
166
+ /** Optional localized accessible count phrase such as “18 vehicles”; the visible tag remains numeric. */
152
167
  countLabel?: string;
168
+ /**
169
+ * Optional semantic intent for the group section header. Applies a faint
170
+ * intent background and bold intent title color.
171
+ */
172
+ intent?: TableGroupIntent;
153
173
  rows: TableRow[];
154
174
  }
155
175
  export interface TableSortChangeDetail {
@@ -160,8 +180,10 @@ export interface TableGroupingChangeDetail {
160
180
  }
161
181
  export interface TableSelectionChangeDetail {
162
182
  selectedRowIds: string[];
163
- scope: 'row' | 'all-loaded';
183
+ scope: 'row' | 'all-loaded' | 'group';
164
184
  changedRowId?: string;
185
+ /** Present when scope is `group`. */
186
+ groupId?: string;
165
187
  selected?: boolean;
166
188
  }
167
189
  export interface TableLoadMoreDetail {
@@ -174,5 +196,15 @@ export interface TableCellActionDetail {
174
196
  rowId: string;
175
197
  columnId: string;
176
198
  }
199
+ export interface TableGroupCollapseChangeDetail {
200
+ scope: 'group' | 'all';
201
+ /** Present when a single group was toggled. */
202
+ groupId?: string;
203
+ collapsed: boolean;
204
+ collapsedGroupIds: string[];
205
+ }
206
+ export interface TableRowActivateDetail {
207
+ rowId: string;
208
+ }
177
209
  export {};
178
210
  //# sourceMappingURL=table-types.d.ts.map
@@ -1,4 +1,5 @@
1
1
  import { EventEmitter } from '../../stencil-public-runtime';
2
+ import { type ControlInsetDepth } from '../../utils';
2
3
  export type TagIntent = 'neutral' | 'brand' | 'ai' | 'negative' | 'warning' | 'caution' | 'positive';
3
4
  export type TagContrast = 'strong' | 'bold' | 'medium' | 'faint';
4
5
  export type TagSize = 'md' | 'sm' | 'xs';
@@ -11,6 +12,8 @@ export declare class Tag {
11
12
  size: TagSize;
12
13
  /** Use the reduced outer geometry when nested inside a control of the same size. */
13
14
  isInset: boolean;
15
+ /** Single removes 4px overall; double removes 8px overall (xs stays single). */
16
+ insetDepth: ControlInsetDepth;
14
17
  rounded: boolean;
15
18
  maxWidth: string | number | undefined;
16
19
  /** Render a menu-trigger button with a fixed ChevronUpDown suffix. */