@ds-mo/ui 15.5.0 → 15.6.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 (256) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +48 -23
  4. package/dist/angular/ds-data-preferences.d.ts +1 -1
  5. package/dist/angular/ds-data-preferences.js +3 -3
  6. package/dist/angular/ds-menu.d.ts +7 -1
  7. package/dist/angular/ds-menu.js +5 -2
  8. package/dist/angular/ds-table.d.ts +1 -1
  9. package/dist/angular/ds-table.js +3 -3
  10. package/dist/components/THIRD-PARTY-NOTICES +1 -1
  11. package/dist/components/bundled-dependencies.json +1 -1
  12. package/dist/components/ds-agent-questionnaire.js +1 -1
  13. package/dist/components/ds-agent-response.js +1 -1
  14. package/dist/components/ds-banner.js +1 -1
  15. package/dist/components/ds-bar-nav.js +1 -1
  16. package/dist/components/ds-bar-page-title.js +1 -1
  17. package/dist/components/ds-bar-title.js +1 -1
  18. package/dist/components/ds-bar-workflow.js +1 -1
  19. package/dist/components/ds-button-filled.js +1 -1
  20. package/dist/components/ds-button-unfilled.js +1 -1
  21. package/dist/components/ds-calendar.js +1 -1
  22. package/dist/components/ds-card-chart.js +1 -1
  23. package/dist/components/ds-card-overview.js +1 -1
  24. package/dist/components/ds-card-setting.js +1 -1
  25. package/dist/components/ds-code-block.js +1 -1
  26. package/dist/components/ds-data-customize.js +1 -1
  27. package/dist/components/ds-data-filter.js +1 -1
  28. package/dist/components/ds-data-group.js +1 -1
  29. package/dist/components/ds-data-preferences.js +1 -1
  30. package/dist/components/ds-data-preferences.js.map +1 -1
  31. package/dist/components/ds-data-saved-views.js +1 -1
  32. package/dist/components/ds-data-search.js +1 -1
  33. package/dist/components/ds-data-search.js.map +1 -1
  34. package/dist/components/ds-data-sort.js +1 -1
  35. package/dist/components/ds-filter-menu.js +1 -1
  36. package/dist/components/ds-input-date.js +1 -1
  37. package/dist/components/ds-input-time.js +1 -1
  38. package/dist/components/ds-input.js +1 -1
  39. package/dist/components/ds-map-entity-marker.js +1 -1
  40. package/dist/components/ds-map-entity-marker.js.map +1 -1
  41. package/dist/components/ds-markdown.js +1 -1
  42. package/dist/components/ds-menu.js +1 -1
  43. package/dist/components/ds-message-actions.js +1 -1
  44. package/dist/components/ds-message-composer.js +1 -1
  45. package/dist/components/ds-message-scroller.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-pagination.js +1 -1
  51. package/dist/components/ds-panel-nav.js +1 -1
  52. package/dist/components/ds-panel-tool-header.js +1 -1
  53. package/dist/components/ds-panel-tool-search.js +1 -1
  54. package/dist/components/ds-panel-tools.js +1 -1
  55. package/dist/components/ds-select.js +1 -1
  56. package/dist/components/ds-shell-app.js +1 -1
  57. package/dist/components/ds-shell-tools.js +1 -1
  58. package/dist/components/ds-table.js +1 -1
  59. package/dist/components/ds-table.js.map +1 -1
  60. package/dist/components/ds-toast.js +1 -1
  61. package/dist/components/ds-toast.js.map +1 -1
  62. package/dist/components/ds-tooltip.js +1 -1
  63. package/dist/components/{p-BO5URdZF.js → p-B-pkoIX9.js} +2 -2
  64. package/dist/components/{p--STJbKuN.js → p-B3o9zn3Y.js} +2 -2
  65. package/dist/components/p-BR9Pjp15.js +2 -0
  66. package/dist/components/{p-Bq_ypMSy.js.map → p-BR9Pjp15.js.map} +1 -1
  67. package/dist/components/{p-rmPIcWED.js → p-BZY40-pE.js} +2 -2
  68. package/dist/components/{p-D-J7GgjY.js → p-BqipGGua.js} +2 -2
  69. package/dist/components/{p-D-J7GgjY.js.map → p-BqipGGua.js.map} +1 -1
  70. package/dist/components/{p-PtxCwf5S.js → p-C6kUn-vb.js} +2 -2
  71. package/dist/components/p-CElsKlxj.js +2 -0
  72. package/dist/components/{p-C1oczmAc.js.map → p-CElsKlxj.js.map} +1 -1
  73. package/dist/components/p-CIMyD_6H.js +2 -0
  74. package/dist/components/{p-C5BBIDVm.js.map → p-CIMyD_6H.js.map} +1 -1
  75. package/dist/components/{p-BcpIK9S6.js → p-CSxwWcwW.js} +2 -2
  76. package/dist/components/p-CUYLGe5d.js +2 -0
  77. package/dist/components/{p-D9_iDlkT.js.map → p-CUYLGe5d.js.map} +1 -1
  78. package/dist/components/{p-wRhYxngW.js → p-CaFXrn_8.js} +2 -2
  79. package/dist/components/{p-BYeG0b5N.js → p-DObhRLBa.js} +2 -2
  80. package/dist/components/{p-C_9VGgPf.js → p-DP07JCed.js} +2 -2
  81. package/dist/components/{p-Dg6hnCc2.js → p-DVsGfz7J.js} +2 -2
  82. package/dist/components/{p-Dg6hnCc2.js.map → p-DVsGfz7J.js.map} +1 -1
  83. package/dist/components/p-DYGllrVT.js +2 -0
  84. package/dist/components/{p-DEYCF-oJ.js.map → p-DYGllrVT.js.map} +1 -1
  85. package/dist/components/{p-BGSG6xIS.js → p-DYtVsnDS.js} +2 -2
  86. package/dist/components/p-DbW8S5qe.js +2 -0
  87. package/dist/components/p-DbW8S5qe.js.map +1 -0
  88. package/dist/components/p-DcxY_pdJ.js +2 -0
  89. package/dist/components/{p-CA3iQ1ME.js.map → p-DcxY_pdJ.js.map} +1 -1
  90. package/dist/components/{p-B6TX55c5.js → p-DdFeWC-e.js} +2 -2
  91. package/dist/components/p-DlCLfwP4.js +2 -0
  92. package/dist/components/p-DuCfCvPs.js +2 -0
  93. package/dist/components/p-DuCfCvPs.js.map +1 -0
  94. package/dist/components/{p-BYrBU_U9.js → p-HMDczkQf.js} +2 -2
  95. package/dist/components/p-HfZ1gI2q.js +2 -0
  96. package/dist/components/{p-jp7hwRtC.js.map → p-HfZ1gI2q.js.map} +1 -1
  97. package/dist/components/{p-DR_8IPn9.js → p-KA8srEed.js} +2 -2
  98. package/dist/components/{p-CXGjCWSh.js → p-OJ5WeR05.js} +2 -2
  99. package/dist/components/p-Ouk6FCxc.js +2 -0
  100. package/dist/components/{p-PzYJqN8B.js.map → p-Ouk6FCxc.js.map} +1 -1
  101. package/dist/components/p-leZFu-cd.js +2 -0
  102. package/dist/components/{p-DPFg5d4_.js.map → p-leZFu-cd.js.map} +1 -1
  103. package/dist/components/{p-DjbT9kKm.js → p-wXKIVUTn.js} +2 -2
  104. package/dist/components/p-xMBaOeKa.js +2 -0
  105. package/dist/components/p-xMBaOeKa.js.map +1 -0
  106. package/dist/docs/components.json +208 -30
  107. package/dist/lint/index.js +1 -1
  108. package/dist/mcp-data/registry/agent-activity.json +1 -1
  109. package/dist/mcp-data/registry/agent-questionnaire.json +1 -1
  110. package/dist/mcp-data/registry/agent-response.json +1 -1
  111. package/dist/mcp-data/registry/agent-source-list.json +1 -1
  112. package/dist/mcp-data/registry/agent-tool-call.json +1 -1
  113. package/dist/mcp-data/registry/attachment-list.json +1 -1
  114. package/dist/mcp-data/registry/avatar.json +1 -1
  115. package/dist/mcp-data/registry/badge.json +1 -1
  116. package/dist/mcp-data/registry/banner.json +1 -1
  117. package/dist/mcp-data/registry/bar-action.json +1 -1
  118. package/dist/mcp-data/registry/bar-nav.json +1 -1
  119. package/dist/mcp-data/registry/bar-page-title.json +1 -1
  120. package/dist/mcp-data/registry/bar-title.json +1 -1
  121. package/dist/mcp-data/registry/bar-workflow.json +1 -1
  122. package/dist/mcp-data/registry/breadcrumb.json +1 -1
  123. package/dist/mcp-data/registry/button-filled.json +2 -2
  124. package/dist/mcp-data/registry/button-inverted.json +1 -1
  125. package/dist/mcp-data/registry/button-unfilled.json +1 -1
  126. package/dist/mcp-data/registry/calendar.json +1 -1
  127. package/dist/mcp-data/registry/card-action-center.json +1 -1
  128. package/dist/mcp-data/registry/card-chart.json +1 -1
  129. package/dist/mcp-data/registry/card-navigation.json +1 -1
  130. package/dist/mcp-data/registry/card-overview.json +1 -1
  131. package/dist/mcp-data/registry/card-setting.json +1 -1
  132. package/dist/mcp-data/registry/card-settings-scope.json +1 -1
  133. package/dist/mcp-data/registry/chart-legend.json +1 -1
  134. package/dist/mcp-data/registry/chart.json +1 -1
  135. package/dist/mcp-data/registry/checkbox-group.json +1 -1
  136. package/dist/mcp-data/registry/checkbox.json +1 -1
  137. package/dist/mcp-data/registry/chip.json +1 -1
  138. package/dist/mcp-data/registry/code-block.json +1 -1
  139. package/dist/mcp-data/registry/conversation-list-item.json +1 -1
  140. package/dist/mcp-data/registry/conversation-list-section.json +1 -1
  141. package/dist/mcp-data/registry/conversation-list.json +1 -1
  142. package/dist/mcp-data/registry/data-customize.json +1 -1
  143. package/dist/mcp-data/registry/data-filter.json +1 -1
  144. package/dist/mcp-data/registry/data-group.json +1 -1
  145. package/dist/mcp-data/registry/data-preferences.json +22 -6
  146. package/dist/mcp-data/registry/data-saved-views.json +1 -1
  147. package/dist/mcp-data/registry/data-search.json +1 -1
  148. package/dist/mcp-data/registry/data-sort.json +1 -1
  149. package/dist/mcp-data/registry/data-toolbar.json +1 -1
  150. package/dist/mcp-data/registry/divider.json +1 -1
  151. package/dist/mcp-data/registry/empty-state.json +1 -1
  152. package/dist/mcp-data/registry/field.json +1 -1
  153. package/dist/mcp-data/registry/filter-menu.json +1 -1
  154. package/dist/mcp-data/registry/icon.json +1 -1
  155. package/dist/mcp-data/registry/inline-banner-settings.json +1 -1
  156. package/dist/mcp-data/registry/input-date.json +1 -1
  157. package/dist/mcp-data/registry/input-time.json +1 -1
  158. package/dist/mcp-data/registry/input.json +1 -1
  159. package/dist/mcp-data/registry/loader.json +1 -1
  160. package/dist/mcp-data/registry/map-cluster-marker.json +1 -1
  161. package/dist/mcp-data/registry/map-entity-marker.json +6 -6
  162. package/dist/mcp-data/registry/markdown.json +1 -1
  163. package/dist/mcp-data/registry/menu.json +31 -12
  164. package/dist/mcp-data/registry/message-actions.json +1 -1
  165. package/dist/mcp-data/registry/message-bubble.json +1 -1
  166. package/dist/mcp-data/registry/message-composer.json +1 -1
  167. package/dist/mcp-data/registry/message-scroller.json +1 -1
  168. package/dist/mcp-data/registry/message.json +1 -1
  169. package/dist/mcp-data/registry/mobile-bar-nav.json +1 -1
  170. package/dist/mcp-data/registry/mobile-header.json +1 -1
  171. package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
  172. package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
  173. package/dist/mcp-data/registry/modal.json +1 -1
  174. package/dist/mcp-data/registry/pagination.json +1 -1
  175. package/dist/mcp-data/registry/panel-nav.json +1 -1
  176. package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
  177. package/dist/mcp-data/registry/panel-tool-header.json +1 -1
  178. package/dist/mcp-data/registry/panel-tool-search.json +1 -1
  179. package/dist/mcp-data/registry/panel-tools.json +1 -1
  180. package/dist/mcp-data/registry/paper-texture.json +1 -1
  181. package/dist/mcp-data/registry/radio-tile.json +1 -1
  182. package/dist/mcp-data/registry/radio.json +1 -1
  183. package/dist/mcp-data/registry/registry.json +48 -23
  184. package/dist/mcp-data/registry/score.json +1 -1
  185. package/dist/mcp-data/registry/scroll-overlay.json +1 -1
  186. package/dist/mcp-data/registry/select.json +1 -1
  187. package/dist/mcp-data/registry/setting-row-checkbox.json +1 -1
  188. package/dist/mcp-data/registry/setting-row-radio.json +1 -1
  189. package/dist/mcp-data/registry/setting-row-toggle.json +1 -1
  190. package/dist/mcp-data/registry/shell-app.json +1 -1
  191. package/dist/mcp-data/registry/shell-page.json +1 -1
  192. package/dist/mcp-data/registry/shell-tools.json +1 -1
  193. package/dist/mcp-data/registry/skeleton.json +1 -1
  194. package/dist/mcp-data/registry/slider.json +1 -1
  195. package/dist/mcp-data/registry/swatch-picker.json +1 -1
  196. package/dist/mcp-data/registry/switch.json +1 -1
  197. package/dist/mcp-data/registry/tab-group.json +1 -1
  198. package/dist/mcp-data/registry/table.json +59 -19
  199. package/dist/mcp-data/registry/tag.json +1 -1
  200. package/dist/mcp-data/registry/text.json +1 -1
  201. package/dist/mcp-data/registry/textarea.json +1 -1
  202. package/dist/mcp-data/registry/time-picker.json +1 -1
  203. package/dist/mcp-data/registry/toast.json +1 -1
  204. package/dist/mcp-data/registry/tooltip-chart.json +1 -1
  205. package/dist/mcp-data/registry/tooltip.json +1 -1
  206. package/dist/mcp-data/registry/typing-indicator.json +1 -1
  207. package/dist/react/ds-menu.d.ts +2 -1
  208. package/dist/react/ds-menu.js +1 -0
  209. package/dist/styles/table.css +41 -0
  210. package/dist/types/components/DataPreferences/DataPreferences.d.ts +3 -0
  211. package/dist/types/components/MapEntityMarker/MapEntityMarker.d.ts +1 -1
  212. package/dist/types/components/Menu/Menu.d.ts +5 -1
  213. package/dist/types/components/Menu/menu-types.d.ts +36 -0
  214. package/dist/types/components/Table/Table.d.ts +11 -2
  215. package/dist/types/components/Table/index.d.ts +1 -1
  216. package/dist/types/components/Table/table-column-customizer.d.ts +23 -4
  217. package/dist/types/components/Table/table-layout-controller.d.ts +2 -1
  218. package/dist/types/components/Table/table-types.d.ts +3 -1
  219. package/dist/types/components.d.ts +44 -8
  220. package/dist/vue/ds-data-preferences.js +1 -0
  221. package/dist/vue/ds-menu.js +2 -0
  222. package/dist/vue/ds-table.js +2 -0
  223. package/package.json +3 -3
  224. package/dist/components/p-Bq_ypMSy.js +0 -2
  225. package/dist/components/p-C1oczmAc.js +0 -2
  226. package/dist/components/p-C5BBIDVm.js +0 -2
  227. package/dist/components/p-CA3iQ1ME.js +0 -2
  228. package/dist/components/p-CE6MaXBg.js +0 -2
  229. package/dist/components/p-CE6MaXBg.js.map +0 -1
  230. package/dist/components/p-D9_iDlkT.js +0 -2
  231. package/dist/components/p-DEYCF-oJ.js +0 -2
  232. package/dist/components/p-DPFg5d4_.js +0 -2
  233. package/dist/components/p-DvGrsLgt.js +0 -2
  234. package/dist/components/p-DvGrsLgt.js.map +0 -1
  235. package/dist/components/p-PzYJqN8B.js +0 -2
  236. package/dist/components/p-aD5cw_m2.js +0 -2
  237. package/dist/components/p-aD5cw_m2.js.map +0 -1
  238. package/dist/components/p-jp7hwRtC.js +0 -2
  239. package/dist/components/p-kDZ0sEII.js +0 -2
  240. package/dist/components/p-t2Ebn8si.js +0 -2
  241. package/dist/components/p-t2Ebn8si.js.map +0 -1
  242. /package/dist/components/{p-BO5URdZF.js.map → p-B-pkoIX9.js.map} +0 -0
  243. /package/dist/components/{p--STJbKuN.js.map → p-B3o9zn3Y.js.map} +0 -0
  244. /package/dist/components/{p-rmPIcWED.js.map → p-BZY40-pE.js.map} +0 -0
  245. /package/dist/components/{p-PtxCwf5S.js.map → p-C6kUn-vb.js.map} +0 -0
  246. /package/dist/components/{p-BcpIK9S6.js.map → p-CSxwWcwW.js.map} +0 -0
  247. /package/dist/components/{p-wRhYxngW.js.map → p-CaFXrn_8.js.map} +0 -0
  248. /package/dist/components/{p-BYeG0b5N.js.map → p-DObhRLBa.js.map} +0 -0
  249. /package/dist/components/{p-C_9VGgPf.js.map → p-DP07JCed.js.map} +0 -0
  250. /package/dist/components/{p-BGSG6xIS.js.map → p-DYtVsnDS.js.map} +0 -0
  251. /package/dist/components/{p-B6TX55c5.js.map → p-DdFeWC-e.js.map} +0 -0
  252. /package/dist/components/{p-kDZ0sEII.js.map → p-DlCLfwP4.js.map} +0 -0
  253. /package/dist/components/{p-BYrBU_U9.js.map → p-HMDczkQf.js.map} +0 -0
  254. /package/dist/components/{p-DR_8IPn9.js.map → p-KA8srEed.js.map} +0 -0
  255. /package/dist/components/{p-CXGjCWSh.js.map → p-OJ5WeR05.js.map} +0 -0
  256. /package/dist/components/{p-DjbT9kKm.js.map → p-wXKIVUTn.js.map} +0 -0
@@ -167,7 +167,7 @@
167
167
  },
168
168
  "peerDependencies": {
169
169
  "required": [
170
- "@ds-mo/tokens ^6.6.1",
170
+ "@ds-mo/tokens ^6.7.0",
171
171
  "@ds-mo/icons ^8.1.1"
172
172
  ],
173
173
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -127,7 +127,7 @@
127
127
  },
128
128
  "peerDependencies": {
129
129
  "required": [
130
- "@ds-mo/tokens ^6.6.1",
130
+ "@ds-mo/tokens ^6.7.0",
131
131
  "@ds-mo/icons ^8.1.1"
132
132
  ],
133
133
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -285,7 +285,7 @@
285
285
  },
286
286
  "peerDependencies": {
287
287
  "required": [
288
- "@ds-mo/tokens ^6.6.1",
288
+ "@ds-mo/tokens ^6.7.0",
289
289
  "@ds-mo/icons ^8.1.1"
290
290
  ],
291
291
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -212,7 +212,7 @@
212
212
  },
213
213
  "peerDependencies": {
214
214
  "required": [
215
- "@ds-mo/tokens ^6.6.1",
215
+ "@ds-mo/tokens ^6.7.0",
216
216
  "@ds-mo/icons ^8.1.1"
217
217
  ],
218
218
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -259,7 +259,7 @@
259
259
  },
260
260
  "peerDependencies": {
261
261
  "required": [
262
- "@ds-mo/tokens ^6.6.1",
262
+ "@ds-mo/tokens ^6.7.0",
263
263
  "@ds-mo/icons ^8.1.1"
264
264
  ],
265
265
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -429,7 +429,7 @@
429
429
  "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: currentArea.",
430
430
  "peerDependencies": {
431
431
  "required": [
432
- "@ds-mo/tokens ^6.6.1",
432
+ "@ds-mo/tokens ^6.7.0",
433
433
  "@ds-mo/icons ^8.1.1"
434
434
  ],
435
435
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -368,7 +368,7 @@
368
368
  "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: sections, subsections.",
369
369
  "peerDependencies": {
370
370
  "required": [
371
- "@ds-mo/tokens ^6.6.1",
371
+ "@ds-mo/tokens ^6.7.0",
372
372
  "@ds-mo/icons ^8.1.1"
373
373
  ],
374
374
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -228,7 +228,7 @@
228
228
  "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: sections.",
229
229
  "peerDependencies": {
230
230
  "required": [
231
- "@ds-mo/tokens ^6.6.1",
231
+ "@ds-mo/tokens ^6.7.0",
232
232
  "@ds-mo/icons ^8.1.1"
233
233
  ],
234
234
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -390,7 +390,7 @@
390
390
  "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: dashboardGroups, settingsGroups.",
391
391
  "peerDependencies": {
392
392
  "required": [
393
- "@ds-mo/tokens ^6.6.1",
393
+ "@ds-mo/tokens ^6.7.0",
394
394
  "@ds-mo/icons ^8.1.1"
395
395
  ],
396
396
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -298,7 +298,7 @@
298
298
  },
299
299
  "peerDependencies": {
300
300
  "required": [
301
- "@ds-mo/tokens ^6.6.1",
301
+ "@ds-mo/tokens ^6.7.0",
302
302
  "@ds-mo/icons ^8.1.1"
303
303
  ],
304
304
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -410,7 +410,7 @@
410
410
  "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: pageSizeOptions.",
411
411
  "peerDependencies": {
412
412
  "required": [
413
- "@ds-mo/tokens ^6.6.1",
413
+ "@ds-mo/tokens ^6.7.0",
414
414
  "@ds-mo/icons ^8.1.1"
415
415
  ],
416
416
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -711,7 +711,7 @@
711
711
  },
712
712
  "peerDependencies": {
713
713
  "required": [
714
- "@ds-mo/tokens ^6.6.1",
714
+ "@ds-mo/tokens ^6.7.0",
715
715
  "@ds-mo/icons ^8.1.1"
716
716
  ],
717
717
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -245,7 +245,7 @@
245
245
  "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: items.",
246
246
  "peerDependencies": {
247
247
  "required": [
248
- "@ds-mo/tokens ^6.6.1",
248
+ "@ds-mo/tokens ^6.7.0",
249
249
  "@ds-mo/icons ^8.1.1"
250
250
  ],
251
251
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -361,7 +361,7 @@
361
361
  "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: actions.",
362
362
  "peerDependencies": {
363
363
  "required": [
364
- "@ds-mo/tokens ^6.6.1",
364
+ "@ds-mo/tokens ^6.7.0",
365
365
  "@ds-mo/icons ^8.1.1"
366
366
  ],
367
367
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -403,7 +403,7 @@
403
403
  },
404
404
  "peerDependencies": {
405
405
  "required": [
406
- "@ds-mo/tokens ^6.6.1",
406
+ "@ds-mo/tokens ^6.7.0",
407
407
  "@ds-mo/icons ^8.1.1"
408
408
  ],
409
409
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -518,7 +518,7 @@
518
518
  "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: accessories, headers, items.",
519
519
  "peerDependencies": {
520
520
  "required": [
521
- "@ds-mo/tokens ^6.6.1",
521
+ "@ds-mo/tokens ^6.7.0",
522
522
  "@ds-mo/icons ^8.1.1"
523
523
  ],
524
524
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -119,7 +119,7 @@
119
119
  "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: config.",
120
120
  "peerDependencies": {
121
121
  "required": [
122
- "@ds-mo/tokens ^6.6.1",
122
+ "@ds-mo/tokens ^6.7.0",
123
123
  "@ds-mo/icons ^8.1.1"
124
124
  ],
125
125
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -370,7 +370,7 @@
370
370
  "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: options.",
371
371
  "peerDependencies": {
372
372
  "required": [
373
- "@ds-mo/tokens ^6.6.1",
373
+ "@ds-mo/tokens ^6.7.0",
374
374
  "@ds-mo/icons ^8.1.1"
375
375
  ],
376
376
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -442,7 +442,7 @@
442
442
  "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: options.",
443
443
  "peerDependencies": {
444
444
  "required": [
445
- "@ds-mo/tokens ^6.6.1",
445
+ "@ds-mo/tokens ^6.7.0",
446
446
  "@ds-mo/icons ^8.1.1"
447
447
  ],
448
448
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -12,7 +12,7 @@
12
12
  "themeSetup": "Set data-theme=\"dark\" on <html> for dark mode. Light is default.",
13
13
  "peerDependencies": {
14
14
  "required": [
15
- "@ds-mo/tokens ^6.6.1",
15
+ "@ds-mo/tokens ^6.7.0",
16
16
  "@ds-mo/icons ^8.1.1"
17
17
  ],
18
18
  "optional": [],
@@ -6062,9 +6062,9 @@
6062
6062
  "Borderless toolbar compositions omit resting control borders while retaining focus and interaction feedback.",
6063
6063
  "Apply-required filtering stages edits locally, including match mode. Clear immediately clears all filters and discards pending edits. The footer appears when filters are selected or applied; Apply stays in place and inactive without pending changes; applying emits controlled changes. Closing discards unapplied edits.",
6064
6064
  "Embedded presentation delegates its active tab, draft state, Apply, Reset, and dismissal to the owning panel; it renders vertical filter and grouping content without a popup trigger.",
6065
- "Customize builds its catalog from fields. catalogReorderable defaults to true for a table: rows drag to reorder and the last visible entry stays locked. Pass false for a show-and-hide catalog, where rows are switches with no drag handle and every entry may be hidden.",
6065
+ "Customize builds its catalog from fields. catalogReorderable defaults to true for a table: each row independently controls visibility and left-side pinning, pinned and unpinned sections constrain drag reorder to their own partition, and the last visible entry stays locked. Pass false for a show-and-hide catalog, where rows are switches with no drag handle or pin action and every entry may be hidden.",
6066
6066
  "catalogHeader overrides the catalog section header, which otherwise reads Columns whenever customizeOptions supply a second section. customizeLabel names the Customize menu, so a non-table surface can announce Customize view rather than Customize table.",
6067
- "Both catalog modes emit dsFieldsConfigChange with hiddenFieldIds and fieldOrder, so a consumer that never reorders can ignore fieldOrder and keep using hiddenFieldIds."
6067
+ "Both catalog modes emit dsFieldsConfigChange with hiddenFieldIds, fieldOrder, and pinnedFieldIds. Toggle-only catalogs preserve pin state unchanged; table catalogs report pin and partitioned order intent."
6068
6068
  ],
6069
6069
  "accessibility": [
6070
6070
  "An icon-only Preferences trigger opens a named dialog. TabGroup owns section keyboard navigation; Escape and outside activation dismiss, returning focus to the trigger."
@@ -6176,6 +6176,10 @@
6176
6176
  "type": "FilterMenuMatchModes",
6177
6177
  "required": false
6178
6178
  },
6179
+ "pinnedFieldIds": {
6180
+ "type": "string[]",
6181
+ "required": false
6182
+ },
6179
6183
  "sort": {
6180
6184
  "type": "DataSortState | null",
6181
6185
  "required": false
@@ -9125,8 +9129,8 @@
9125
9129
  "states": [
9126
9130
  "Unknown represents unavailable current motion and uses the existing stale-background token. The application resolves stale telemetry to Unknown regardless of previous motion; a known Immobilized state takes precedence.",
9127
9131
  "The dashed outline is an independent visual option. Unknown is solid unless the owner explicitly requests dashes.",
9128
- "immobilized always renders the upright MapKey glyph instead of the entity icon so the state is identifiable without interpreting bearing.",
9129
- "bearing rotates only MapEntityTravelGroup and MapEntityVehicle glyphs and is normalized to a clockwise value from 0 through 359 degrees. Immobilized, asset, person, and other glyphs remain upright.",
9132
+ "immobilized is a vehicle-only state. A MapEntityVehicle marker in that state renders the upright MapKey glyph so immobilization is identifiable without interpreting bearing; other entity icons are preserved.",
9133
+ "bearing rotates only MapEntityTravelGroup and MapEntityVehicle glyphs and is normalized to a clockwise value from 0 through 359 degrees. The immobilized vehicle replacement, asset, person, and other glyphs remain upright.",
9130
9134
  "dimmed is visual de-emphasis only. The map owner decides when selection context should dim peer markers and keeps every marker operable. A dimmed marker returns to full opacity while hovered or keyboard-focused so its revealed caption remains legible.",
9131
9135
  "Activation emits dsClick without changing application selection internally."
9132
9136
  ],
@@ -9330,7 +9334,7 @@
9330
9334
  {
9331
9335
  "name": "menu",
9332
9336
  "title": "Menu",
9333
- "description": "Anchored action menu with flat commands, grouped sections, single-selection choices, supplemental notification dots or trailing tags, prefix icons, reorderable rows, switches, and destructive actions.",
9337
+ "description": "Anchored action menu with flat commands, grouped sections, single-selection choices, supplemental notification dots or trailing tags, prefix icons, reorderable rows, switches, independent trailing actions, separate trailing toggles, and destructive actions.",
9334
9338
  "type": "registry:ui",
9335
9339
  "meta": {
9336
9340
  "library": "@ds-mo/ui",
@@ -9341,7 +9345,7 @@
9341
9345
  "intent": {
9342
9346
  "audience": "general",
9343
9347
  "status": "stable",
9344
- "summary": "Anchored action menu with flat commands, grouped sections, single-selection choices, supplemental notification dots or trailing tags, prefix icons, reorderable rows, switches, and destructive actions.",
9348
+ "summary": "Anchored action menu with flat commands, grouped sections, single-selection choices, supplemental notification dots or trailing tags, prefix icons, reorderable rows, switches, independent trailing actions, separate trailing toggles, and destructive actions.",
9345
9349
  "useWhen": [
9346
9350
  "A trigger reveals a short contextual list of commands or state-changing actions.",
9347
9351
  "Actions need grouping, mutually exclusive selected state, supplemental notification dots or trailing tags, prefix icons, reorderable switch or command rows, or destructive treatment."
@@ -9388,7 +9392,9 @@
9388
9392
  "When the anchor is inside an open shadow tree, pass its HTMLElement through anchor. Outside activation, focus return, and forward Tab continuation follow the composed tree across that boundary.",
9389
9393
  "Use notification dots only as supplemental status and not as the sole indication of important information.",
9390
9394
  "Trailing tags are non-interactive supplemental content; their visible label remains part of the menu item's accessible name.",
9391
- "Reorderable rows keep a presentation Drag handle. Pointer drag on the handle and Alt+Arrow Up or Down emit dsReorder without closing. Pointer cancellation abandons the pending move. Hide-locked reorderable rows expose aria-disabled for the unavailable toggle but stay focusable so they can move; fully locked rows stay out of the contiguous reorderable run.",
9395
+ "Reorderable rows keep a presentation Drag handle. Pointer drag on the handle and Alt+Arrow Up or Down emit dsReorder without closing. Pointer cancellation abandons the pending move. Hide-locked reorderable rows expose aria-disabled for the unavailable toggle but stay focusable so they can move; fully locked rows stay out of the contiguous reorderable run. Use reorderHandleInactive to retain quaternary Drag dots without exposing drag interaction when a temporarily fixed row still needs visual alignment.",
9396
+ "A row may append one separately focusable icon toggle after a decorative tertiary divider. The popup uses non-modal dialog semantics for this composite content, the row retains its primary command or visibility toggle, and dsItemToggle reports the requested controlled state without closing the surface.",
9397
+ "A composite row may expose independent trailing icon actions without making its non-actionable row surface appear clickable. Active Drag handles and trailing actions own separate inset hover and pressed feedback. Each action has its own accessible name, does not use aria-pressed, and reports its stable action identity through dsItemToggle without closing the surface.",
9392
9398
  "Announce the new position through a polite live region that is a sibling of the role=menu popup, so the menu retains only permitted descendants."
9393
9399
  ],
9394
9400
  "states": [
@@ -9402,7 +9408,7 @@
9402
9408
  "Use a swatch-picker section for a small curated visual preference and apply dsSwatchSelect immediately without closing the popup.",
9403
9409
  "Ordinary rows, section headings, and supporting text consume the Menu size. At xs, both the primary label and supporting text use caption metrics.",
9404
9410
  "A trailing tag resolves one density smaller than its menu row and uses the inset recipe so it nests without changing row height. Do not combine tag, dot, and switch suffixes on one item.",
9405
- "Reorderable rows use the Drag prefix and ignore icon. Prefix and drag-handle icons inherit the choice-popup secondary foreground, matching Select. When any row in a section has an icon or is reorderable, the remaining rows get a spacer so labels align.",
9411
+ "Reorderable rows use the Drag prefix and ignore icon. Active drag handles inherit the choice-popup secondary foreground; inactive drag handles use quaternary foreground. When any row in a section has an icon, an active handle, or an inactive handle, the remaining rows get a spacer so labels align.",
9406
9412
  "Embedded mode renders the same controlled content inside a parent-owned surface; the parent owns positioning, initial focus, Escape, Tab exit, and dismissal."
9407
9413
  ],
9408
9414
  "responsiveBehavior": [
@@ -9416,13 +9422,13 @@
9416
9422
  "frameworkCaveats": {
9417
9423
  "customElements": [
9418
9424
  "Assign items, sections, and HTMLElement anchors as properties after the element is defined.",
9419
- "Handle dsReorder by replacing the items or section items with the emitted items array; Menu never mutates order."
9425
+ "Handle dsReorder by replacing the items or section items with the emitted items array; Menu never mutates order. Handle dsItemToggle by replacing either the controlled trailingToggle state or the requested trailingActions state without changing unrelated row state."
9420
9426
  ],
9421
9427
  "react": [
9422
- "Pass arrays and objects as wrapper props and handle generated onDsSelect, onDsReorder, and onDsClose event props."
9428
+ "Pass arrays and objects as wrapper props and handle generated onDsSelect, onDsItemToggle, onDsReorder, and onDsClose event props."
9423
9429
  ],
9424
9430
  "angular": [
9425
- "Use property bindings for arrays, objects, and anchors and event bindings for dsSelect, dsReorder, and dsClose."
9431
+ "Use property bindings for arrays, objects, and anchors and event bindings for dsSelect, dsItemToggle, dsReorder, and dsClose."
9426
9432
  ]
9427
9433
  },
9428
9434
  "references": [
@@ -9548,6 +9554,10 @@
9548
9554
  "name": "dsClose",
9549
9555
  "detail": "void"
9550
9556
  },
9557
+ {
9558
+ "name": "dsItemToggle",
9559
+ "detail": "MenuItemToggleDetail"
9560
+ },
9551
9561
  {
9552
9562
  "name": "dsReorder",
9553
9563
  "detail": "MenuReorderDetail"
@@ -9576,6 +9586,7 @@
9576
9586
  ],
9577
9587
  "registryDependencies": [
9578
9588
  "badge",
9589
+ "button-unfilled",
9579
9590
  "icon",
9580
9591
  "swatch-picker",
9581
9592
  "switch",
@@ -15310,7 +15321,7 @@
15310
15321
  {
15311
15322
  "name": "table",
15312
15323
  "title": "Table",
15313
- "description": "Semantic, controlled data table with durable visual primitives for cell geometry, wrapping multiple-Tag cells, grouping, sorting, multi-selection, sticky overflow, incremental loading, top-level pagination, and optional row virtualization.",
15324
+ "description": "Semantic, controlled data table with contained or edge-to-edge chrome, durable visual primitives for cell geometry, wrapping multiple-Tag cells, grouping, sorting, multi-selection, sticky overflow, incremental loading, top-level pagination, and optional row virtualization.",
15314
15325
  "type": "registry:ui",
15315
15326
  "meta": {
15316
15327
  "library": "@ds-mo/ui",
@@ -15321,11 +15332,12 @@
15321
15332
  "intent": {
15322
15333
  "audience": "general",
15323
15334
  "status": "stable",
15324
- "summary": "Semantic, controlled data table with durable visual primitives for cell geometry, wrapping multiple-Tag cells, grouping, sorting, multi-selection, sticky overflow, incremental loading, top-level pagination, and optional row virtualization.",
15335
+ "summary": "Semantic, controlled data table with contained or edge-to-edge chrome, durable visual primitives for cell geometry, wrapping multiple-Tag cells, grouping, sorting, multi-selection, sticky overflow, incremental loading, top-level pagination, and optional row virtualization.",
15325
15336
  "useWhen": [
15326
15337
  "A structured dataset needs native row and column relationships, optional one-level grouping, or comparable values across records.",
15327
15338
  "An application needs controlled sorting, loaded-row selection, infinite loading, pagination, virtual row recycling, or opted-in table-owned data-mode and column controls while retaining ownership of the data query, catalog, and persistence.",
15328
- "A product table needs a token-backed recipe whose individual header, group, row, cell, selection, state, and load-more layers remain easy to restyle."
15339
+ "A product table needs a token-backed recipe whose individual header, group, row, cell, selection, state, and load-more layers remain easy to restyle.",
15340
+ "A full-bleed page needs edge-to-edge toolbar and footer surfaces around an inset data frame with a tertiary outer border while other tables retain the contained composition."
15329
15341
  ],
15330
15342
  "avoidWhen": [
15331
15343
  "Content is primarily editorial prose; use semantic product-owned markup with the prose recipe instead.",
@@ -15356,7 +15368,7 @@
15356
15368
  "accessibility": [
15357
15369
  "The rendered structure uses a native table, caption, column headers, row groups, and data cells; keep the caption non-empty. The native caption remains visually hidden as the table's accessible name. When caption visibility is enabled, a 48px header bar renders as component chrome outside the data scrollport. It defaults to a presentational caption title that does not duplicate the accessible name. Application-owned labeled controls supplied through the single named header slot replace that fallback and share one horizontal caption overflow row with table-owned actions inside the component-owned 8px inset. Table caption buttons keep pressed interaction paint without physically scaling. When columnCustomizer is enabled, the table adds a trailing Customize control named Customize table. Its label uses regular weight and its resting foreground remains neutral when hidden or reordered columns differ from the catalog default. The control is icon-label at typical widths and the icon-only Customize menu button below 900px, where a tooltip preserves the Customize label. The always-icon-only table-variant control also exposes its label through a tooltip. Otherwise the header slot receives the complete content width.",
15358
15370
  "The data-mode switcher is the shared Menu of the table's supported infinite, pagination, and virtual modes. It uses an Ellipses trigger. The switcher is the final caption-bar action; when the column customizer is also present, a decorative vertical divider separates the two controls. dataMode remains controlled, and the application responds to change intent by supplying the matching records, pagination state, loading behavior, and query consequences. Escape, dismissal, and selection return focus to the trigger.",
15359
- "The column customizer is the shared Menu of switch rows, not a table-owned dialog. Data columns can be shown, hidden, and reordered. Action columns and the selection checkbox never appear in the menu. The last remaining visible data column cannot be hidden, but it stays focusable so it can still be reordered. Escape and outside click restore focus to the trigger. Persistence stays in the application.",
15371
+ "The column customizer is the shared Menu surface of composite preference rows. Data columns can be shown, hidden, left-pinned, and reordered. Visibility and pin state are independent, so hidden pinned columns retain their pin state. A tertiary divider separates the visibility switch from an unbordered Pin toggle. Pinned and unpinned sections constrain drag reorder to their own partition; a single pinned row keeps its drag handle visible but inactive in quaternary foreground. Action columns and the selection checkbox remain system-managed and never appear in the menu. Escape and outside click restore focus to the trigger. Persistence stays in the application.",
15360
15372
  "Sorting controls remain buttons inside column headers and expose the table's one controlled member-row sort through aria-sort. ds-data-sort in the toolbar trailing cluster is the matching menu of Data and Order sections; it emits the same dsSortChange shape so header clicks and menu choices stay in sync. Grouping never adds a second sort indicator or header control; ds-data-group controls the grouping data point and ascending or descending group-section order while the application supplies the resulting groups. Optional column help underlines the header label with the shared dotted decoration and shows ds-tooltip from that label; it does not add a second header control or replace the column name.",
15361
15373
  "Selection controls expose checkbox semantics and explicit row names; select-all affects selectable loaded rows only and preserves selected identities outside the loaded window. In virtual mode the supplied in-memory rows are that loaded set, including rows whose DOM is recycled. When grouping is active with multi-selection, each group section header also exposes a checkbox that selects or clears that group's selectable loaded rows.",
15362
15374
  "Interactive rows are focusable as native rows, activate with Enter or Space, and do not steal activation from their nested selection, action, overflow-menu, or primary-text link controls. When an application-owned details surface navigates between records, scrollRowIntoView reveals the newly associated row with nearest scrolling while preserving focus in that surface. It resolves false when the identity is absent from the supplied, expanded table model so the application can first load data, change its controlled page, or expand its group.",
@@ -15370,9 +15382,9 @@
15370
15382
  "Cell presentation moves the complete content stack for deliberate middle or bottom alignment; the default remains first-track alignment. Semantic highlight borders require an accessible explanation, and flags require labels. Presentation metadata never changes the cell value or the shared text, icon, tag and action track anatomy.",
15371
15383
  "Report merges name ordered row and column identities. Only a complete contiguous non-overlapping rectangle is accepted, and invalid definitions leave original values visible. Selection checkboxes are never merged. Merges cannot cross pin or elastic-spacer boundaries, and grouped or editable grids do not merge. Cross-row merges require non-windowed reports; column-only merges can use virtual rows. Applications recompute spans with their final data order and retain covered values.",
15372
15384
  "Editing has two opt-in ungrouped modes for scalar values. Edit mode keeps normal table semantics and reveals a floating pencil on cell hover or keyboard focus; touch keeps the pencil visible. Grid mode adds per-cell hover/press feedback, keyboard focus and controlled rectangular ranges. Arrows and Home/End skip read-only cells; Shift+click or Shift+arrows extends the range without selecting read-only cells or opening an editor. A single click, Enter, F2 or typing opens the grid editor, while edit mode requires the pencil. Both modes share validation and controlled change events: Enter or Tab proposes a change; Escape or leaving the editor cancels. Tab advances to the next editable cell or pencil. Read-only content is muted without fading dividers, and those cells cannot receive cell selection or hover feedback. Native controls retain their own keyboard behavior. Plain TSV grid paste is bounded and rejected atomically for invalid, disabled, out-of-range or read-only destinations. Applications accept or reject proposed edits, own persistence and domain validation, and replace controlled data. Row checkbox selection remains independent of cell selection.",
15373
- "Columns, rows, groups, grouping, sorting, selected row IDs, collapsed group IDs, highlightTerms, highlightFieldIds, hiddenFieldIds, fieldOrder, dataMode, pagination, displayedCount, totalCount, and incremental-loading state are controlled inputs. Events communicate intent and never mutate those inputs. The optional header is one composable table-local surface: the component owns its 48px chrome, 8px inset on every side, and sticky placement while the application owns the leading slot's internal layout, controls, labels, filtering behavior, and action handling. highlightTerms only marks matching table-owned text and never filters rows, changes query semantics, or highlights Tag labels. highlightFieldIds optionally narrows that marking to matching column IDs or compound header-segment sort keys. Opting into dataModeSwitcher and columnCustomizer adds their trailing Menu triggers and requires caption visibility. When both are present, Customize precedes a decorative divider and the data-mode trigger remains the final action. The Customize trigger keeps one stable label and neutral resting foreground whether or not hiddenFieldIds or fieldOrder differ from the catalog default; the configured state remains visible inside the Menu. The table closes one trailing Menu before opening the other. The footer retains its compact-bar composition: application-owned leading status sits left while a controlled result summary or Pagination aligns right, before any trailing action. Content-sized tables remain natural for sparse or fixed-count results. height bounds the complete header, frame, and footer composition. fitViewport reserves the compact-state composition height in the nearest vertical scrollport while growing the visible table into that reservation as surrounding page chrome collapses.",
15385
+ "Columns, rows, groups, grouping, sorting, selected row IDs, collapsed group IDs, highlightTerms, highlightFieldIds, hiddenFieldIds, fieldOrder, pinnedFieldIds, dataMode, pagination, displayedCount, totalCount, and incremental-loading state are controlled inputs. Events communicate intent and never mutate those inputs. The optional header is one composable table-local surface: the component owns its 48px chrome, 8px inset on every side, and sticky placement while the application owns the leading slot's internal layout, controls, labels, filtering behavior, and action handling. highlightTerms only marks matching table-owned text and never filters rows, changes query semantics, or highlights Tag labels. highlightFieldIds optionally narrows that marking to matching column IDs or compound header-segment sort keys. Opting into dataModeSwitcher and columnCustomizer adds their trailing Menu triggers and requires caption visibility. When both are present, Customize precedes a decorative divider and the data-mode trigger remains the final action. The Customize trigger keeps one stable label and neutral resting foreground whether or not column configuration differs from the catalog default; the configured state remains visible inside the Menu. The table closes one trailing Menu before opening the other. The footer retains its compact-bar composition: application-owned leading status sits left while a controlled result summary or Pagination aligns right, before any trailing action. Content-sized tables remain natural for sparse or fixed-count results. height bounds the complete header, frame, and footer composition. fitViewport reserves the compact-state composition height in the nearest vertical scrollport while growing the visible table into that reservation as surrounding page chrome collapses.",
15374
15386
  "Grouping supports one level. The application supplies groups in a fixed product-defined order and supplies ordered member rows independently. Group section headers show an emphasized text-body-medium label at the start and plain secondary loaded progress at the trailing edge beside the disclosure. A 20px tertiary divider centered on the label track marks the action-column boundary between the count and disclosure. The loaded value comes from the supplied member rows and the total comes from totalCount. A localized countLabel total phrase remains available for the complete assistive progress announcement. Virtual mode shows totals only, for example 166, because there is no loaded window. A collapsed section with no supplied member rows uses that same total-only copy so collapse does not advertise a zero loaded window, including 0 when no total is known. An expanded empty section still shows loaded progress, for example 0 of 166. Optional accessories occupy a second 24px track under the label, middle-dot separated, at most four items. An accessory with help uses the shared dotted underline and a bottom-start ds-tooltip from that copy; explicit line breaks create an unbulleted list. Without accessories the section stays the single-track row height; with accessories it matches a two-track body row, with the checkbox, trailing count, divider, and disclosure kept on the label track. An optional hero accessory sits before the label. The first supported hero is a safety-score fill. Its one-track presentation uses the default ds-score at sm and aligns to the label track on either row height. Setting hero tracks to 2 creates or spans the two-track header, renders the default ds-score at lg, and centers it across the label and accessory tracks. In selectable tables the two-track score starts at the selection-column boundary; selectionMode none omits that lane and uses the regular group-content start inset. A score hero does not use group intent coloring. Hero presentation does not change the 40 or 64 row-height contract beyond the explicitly requested second track. Groups without intent use the secondary background surface. Groups may declare an optional intent (brand, neutral, negative, warning, caution, positive) that paints an LTR gradient from the faint intent surface at the label edge into faint neutral at the trailing edge, plus a bold intent title color. Neutral groups remain solid faint neutral. Section separators are painted inside that viewport-width surface so translucent border tokens composite with each intent background. Internal sections keep their separators; a collapsed or empty section header yields its separator only when it is the table's final rendered item. The complete section header is the expand/collapse target and paints hover and press on that viewport-width surface. The section separator stays on the dedicated trailing-edge rule so the interaction wash cannot replace it. Trailing loaded progress sits on the label track beside a visually neutral icon-only ButtonUnfilled. The centered 20px tertiary divider at the action-column boundary separates the count from the 24px md double-inset disclosure. The disclosure keeps its accessible name and does not paint its own hover or press wash, showing ChevronUp while expanded and ChevronDown while collapsed. While any group is expanded, a ChevronDownUp action uses the xs sort-control recipe widened to a table-owned 24px lane and collapses every group. It appears at the inline-end edge of the trailing column declared with kind action when one exists; otherwise a button-hugging 24px by 16px medium-elevation surface floats at the visible scrollport's header edge so the action remains reachable while member columns scroll beneath it. With stickyHeader enabled, each contained section uses its one real section row as a native sticky header inside its real row-group boundary. The browser therefore owns pinning, push-off, scrolling, and resize layout in one pass without a duplicated lane, active-section state, transforms, or scroll-time geometry. Shared grid tracks retain exact header and member-cell alignment. The section surface also stays pinned to the visible horizontal scrollport and spans the smaller of the visible viewport or table width. Virtual grouped tables flatten headers and members into that same scrollport; expanding a section never introduces an inner scroller.",
15375
- "When columnCustomizer is false, columns render in catalog order. When it is true, columns remains the catalog: hiddenFieldIds and fieldOrder control visibility and data-column sequence, action columns stay last, cannot be hidden, and remain absent from the customizer Menu, and dsFieldsConfigChange reports the next hidden ids and data-column order without mutating those inputs. The customizer Menu live-applies show/hide and data-column reorder. The table does not persist preferences.",
15387
+ "When columnCustomizer is false, columns render in catalog order. When it is true, columns remains the catalog: hiddenFieldIds, fieldOrder, and pinnedFieldIds control visibility, partitioned data-column sequence, and user-managed sticky-start columns. Fixed sticky columns remain system-managed. User-pinned columns require a resolved fixed width, append to the pinned block when pinned, and become the first unpinned column when released. Action columns stay last, cannot be hidden or user-pinned, and remain absent from the customizer. dsFieldsConfigChange reports all three next values without mutating inputs. The table does not persist preferences.",
15376
15388
  "An active member sort toggles only between ascending and descending; activating a different sortable label moves the one sorting state to that key. Applications may still clear the controlled sort state explicitly. Grouping does not introduce another interactive direction.",
15377
15389
  "Compound headers can expose multiple related labels with independent sort keys. Each label owns only its content-width interaction target while the active direction remains in the column's alignment-aware sort lane.",
15378
15390
  "Initial loading defaults to ten row-shaped skeletons and preserves row dividers, column dividers, selection lanes, and sticky boundaries. A selectable table renders a checkbox-sized control skeleton in its selection lane so loading geometry matches the real checkbox instead of a generic icon. Each column may declare representative text, multiline text, image, Tag, icon, icon-and-text, action, or intentionally blank loading geometry; the table applies the matching resolved-cell padding and track anatomy so the placeholder row has the same height and rhythm as its data row. Columns without a declaration use one text line, while action columns infer an icon action placeholder. chromeLoading replaces opted-in table-owned caption controls with non-interactive control skeletons in the same slots and at the same dimensions, without changing dataMode or the surrounding caption geometry. Empty and initial error replace only the body with ds-empty-state, using Inbox or ErrorTriangle plus the table heading and body copy. In height-bounded and maxHeight tables that region fills the remaining viewport below the column header; content-sized tables keep a minimum empty-region height. Empty, initial error, load-more, retry, loading-more, and terminal bands remain fixed to the visible table width while data columns scroll horizontally beneath them. Incremental loading retains existing rows and supports automatic sentinel, manual load-more, retry, and terminal states. When grouping is active, each expanded group owns its load band at the end of its member rows; internal group load bands keep their bottom divider, while a terminal group load band yields it to the table edge or footer. The global bottom-of-table loader is not rendered.",
@@ -15390,8 +15402,8 @@
15390
15402
  ],
15391
15403
  "responsiveBehavior": [
15392
15404
  "Editable cells compose the shared borderless controls with cell-owned interaction and focus chrome. Only the active cell mounts a field. Single-select choices complete the edit immediately; multiline fields reserve Enter for a newline and use Ctrl/Command+Enter to commit. Date and time fields keep their picker keyboard behavior and emit canonical scalar values. Drafts stay local until a controlled change is proposed.",
15393
- "Horizontal scrolling is the default. Opted-in cards reuse the same native table in a narrow-container layout: a record is one card with vertically stacked labeled fields, inset separators aligned to the content origin, and space between labels and values. One row-owned interaction surface covers the card. Actions and selection sit together at the top-right, separated by a short divider. The content region owns card gutters and gaps; the toolbar and footer remain separate edge-to-edge surfaces. Page owners remove their outer table inset at the responsive breakpoint. Column headers remain available to assistive technology but are visually hidden and contain no interactive controls in card mode. Row selection and action controls preserve focus across resizing instead of mounting a duplicate mobile tree. Merged reports and grid interaction retain table layout. Card compositions do not use the duplicated document-flow sticky header.",
15394
- "Inside the named ds-table container, caption Search retains its standard maximum width and flexes smaller only when the complete row needs space. Filter, Group, and Sort controls that opt into collapseLabel become icon-only below 900px by omitting their labels and chevrons. Active filtering or grouping promotes the visible icon to primary. Sort keeps resting secondary chrome because its selection lives in the menu and headers. Customize switches to the icon-only Customize menu button below 900px and keeps its neutral resting foreground regardless of the controlled column configuration. The caption, frame, and footer remain within the table host at every width. The complete caption row scrolls together only when those compact controls no longer fit, while data columns scroll inside the viewport; table-owned trailing actions never stay pinned over the scrolling toolbar.",
15405
+ "Horizontal scrolling is the default. Opted-in cards reuse the same native table below the 768px browser viewport breakpoint: a record is one card with vertically stacked labeled fields, inset separators aligned to the content origin, and space between labels and values. A narrow table on a desktop viewport remains a table. One row-owned interaction surface covers the card. Actions and selection sit together at the top-right, separated by a short divider. The content region owns card gutters and gaps; the toolbar and footer remain separate edge-to-edge surfaces. The edge-to-edge chrome layout removes its desktop frame inset and outer border while cards provide their own gutters. Column headers remain available to assistive technology but are visually hidden and contain no interactive controls in card mode. Row selection and action controls preserve focus across resizing instead of mounting a duplicate mobile tree. Merged reports and grid interaction retain table layout. Card compositions do not use the duplicated document-flow sticky header.",
15406
+ "Inside the named ds-table container, caption Search retains its standard maximum width and flexes smaller only when the complete row needs space. Filter, Group, and Sort controls that opt into collapseLabel become icon-only below 900px by omitting their labels and chevrons. Active filtering or grouping promotes the visible icon to primary. Sort keeps resting secondary chrome because its selection lives in the menu and headers. Customize switches to the icon-only Customize menu button below 900px and keeps its neutral resting foreground regardless of the controlled column configuration. Contained chrome is the default. Edge-to-edge chrome keeps the caption and footer flush to the host, gives the footer a tertiary divider painted outside its content box, and places the data frame in a transparent, token-backed 16px inset with a tertiary outer border so the owning page surface remains visible. The complete caption row scrolls together only when those compact controls no longer fit, while data columns scroll inside the viewport; table-owned trailing actions never stay pinned over the scrolling toolbar.",
15395
15407
  "stickyHeader follows the active vertical scroll owner: a maxHeight, height, or fitViewport table keeps its native header and group sections inside one bounded table scrollport, while a document-flow table retains a semantic native header and renders a sticky control header whose columns follow the body's native inline scroll timeline. Consumers set --ds-table-sticky-header-offset when page chrome occupies an unbounded document scrollport edge. When the 48px table header bar is visible, it sticks at that external offset and the column header stacks immediately below it.",
15396
15408
  "fitViewport uses viewportInsetBlockStart and viewportInsetBlockEnd to describe compact surrounding chrome and page gutters relative to the nearest vertical scroll owner. Before the table reaches that compact position, its host reserves the eventual height while the visible composition grows and vertical input remains owned by the outer page. Once settled, the internal table viewport becomes the vertical scroll owner. Bounded grouped tables use browser-native sticky section rows inside real block row-group boundaries, so scroll and resize do not run component JavaScript or trigger reactive section swaps. Document-flow tables retain the synchronized visual lane required by their separate horizontal scrollport.",
15397
15409
  "Without maxHeight the table grows the document and automatic lazy loading observes the browser viewport. Horizontal scrolling chains vertical wheel and trackpad movement to the page instead of trapping it.",
@@ -15402,12 +15414,12 @@
15402
15414
  ],
15403
15415
  "frameworkCaveats": {
15404
15416
  "customElements": [
15405
- "Assign columns, rows, groups, grouping, sort, selectedRowIds, collapsedGroupIds, highlightTerms, highlightFieldIds, hiddenFieldIds, fieldOrder, pagination, displayedCount, and totalCount through JavaScript properties rather than HTML attribute strings.",
15417
+ "Assign columns, rows, groups, grouping, sort, selectedRowIds, collapsedGroupIds, highlightTerms, highlightFieldIds, hiddenFieldIds, fieldOrder, pinnedFieldIds, pagination, displayedCount, and totalCount through JavaScript properties rather than HTML attribute strings.",
15406
15418
  "dataMode=virtual recycles row DOM over the supplied in-memory rows or groups and requires height, maxHeight, or fitViewport. It does not fetch or paginate.",
15407
15419
  "When an action cell supplies items, the table opens one shared ds-menu from the Ellipses trigger; dsCellAction fires for the selected command, not for opening or closing the menu.",
15408
- "When columnCustomizer is enabled, the Table trigger opens the same shared ds-menu of reorderable switch rows; toggling a switch or reordering a row emits dsFieldsConfigChange and does not close the menu.",
15420
+ "When columnCustomizer is enabled, the Table trigger opens the same shared ds-menu of reorderable visibility rows with independent pin toggles; changing visibility, pinning, or partition-local order emits dsFieldsConfigChange and does not close the menu.",
15409
15421
  "Overflowing text tracks present one shared ds-tooltip with the omitted value. Unlimited wrapping tracks and disabled rows never show it. The tooltip is not linked with aria-describedby because the full string remains in the cell.",
15410
- "Replace controlled property values in response to dsSortChange, dsGroupCollapseChange, dsSelectionChange, dsLoadMore, dsGroupLoadMore, dsPaginationChange, and dsFieldsConfigChange; route dsRowActivate in the application owner. When columnCustomizer is enabled, keep columns as the full catalog and replace hiddenFieldIds and fieldOrder from that event."
15422
+ "Replace controlled property values in response to dsSortChange, dsGroupCollapseChange, dsSelectionChange, dsLoadMore, dsGroupLoadMore, dsPaginationChange, and dsFieldsConfigChange; route dsRowActivate in the application owner. When columnCustomizer is enabled, keep columns as the full catalog and replace hiddenFieldIds, fieldOrder, and pinnedFieldIds from that event."
15411
15423
  ],
15412
15424
  "react": [
15413
15425
  "Pass new array and state-object references when the controlled data or query state changes.",
@@ -15480,6 +15492,11 @@
15480
15492
  "source": "src/wc/styles/table.css",
15481
15493
  "reason": "Public table recipe customization; preserve semantic table and scroll behavior."
15482
15494
  },
15495
+ {
15496
+ "name": "--ds-table-frame-inset",
15497
+ "source": "src/wc/styles/table.css",
15498
+ "reason": "Controls the data-frame inset in the edge-to-edge chrome layout."
15499
+ },
15483
15500
  {
15484
15501
  "name": "--ds-table-inline-scroll-max-offset",
15485
15502
  "source": "src/wc/styles/table.css",
@@ -15559,6 +15576,10 @@
15559
15576
  "type": "TableCellSpan[]",
15560
15577
  "required": false
15561
15578
  },
15579
+ "chromeLayout": {
15580
+ "type": "TableChromeLayout",
15581
+ "required": false
15582
+ },
15562
15583
  "chromeLoading": {
15563
15584
  "type": "boolean",
15564
15585
  "required": false
@@ -15743,6 +15764,10 @@
15743
15764
  "type": "string",
15744
15765
  "required": false
15745
15766
  },
15767
+ "pinnedFieldIds": {
15768
+ "type": "string[]",
15769
+ "required": false
15770
+ },
15746
15771
  "responsiveLayout": {
15747
15772
  "type": "'scroll' | 'cards'",
15748
15773
  "required": false
@@ -258,7 +258,7 @@
258
258
  },
259
259
  "peerDependencies": {
260
260
  "required": [
261
- "@ds-mo/tokens ^6.6.1",
261
+ "@ds-mo/tokens ^6.7.0",
262
262
  "@ds-mo/icons ^8.1.1"
263
263
  ],
264
264
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -166,7 +166,7 @@
166
166
  },
167
167
  "peerDependencies": {
168
168
  "required": [
169
- "@ds-mo/tokens ^6.6.1",
169
+ "@ds-mo/tokens ^6.7.0",
170
170
  "@ds-mo/icons ^8.1.1"
171
171
  ],
172
172
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -1156,7 +1156,7 @@
1156
1156
  "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: anchor, boundary, options, sections.",
1157
1157
  "peerDependencies": {
1158
1158
  "required": [
1159
- "@ds-mo/tokens ^6.6.1",
1159
+ "@ds-mo/tokens ^6.7.0",
1160
1160
  "@ds-mo/icons ^8.1.1"
1161
1161
  ],
1162
1162
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -168,7 +168,7 @@
168
168
  },
169
169
  "peerDependencies": {
170
170
  "required": [
171
- "@ds-mo/tokens ^6.6.1",
171
+ "@ds-mo/tokens ^6.7.0",
172
172
  "@ds-mo/icons ^8.1.1"
173
173
  ],
174
174
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -167,7 +167,7 @@
167
167
  },
168
168
  "peerDependencies": {
169
169
  "required": [
170
- "@ds-mo/tokens ^6.6.1",
170
+ "@ds-mo/tokens ^6.7.0",
171
171
  "@ds-mo/icons ^8.1.1"
172
172
  ],
173
173
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -203,7 +203,7 @@
203
203
  },
204
204
  "peerDependencies": {
205
205
  "required": [
206
- "@ds-mo/tokens ^6.6.1",
206
+ "@ds-mo/tokens ^6.7.0",
207
207
  "@ds-mo/icons ^8.1.1"
208
208
  ],
209
209
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -690,7 +690,7 @@
690
690
  "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: navigation, pageChrome, paperTexture, tools.",
691
691
  "peerDependencies": {
692
692
  "required": [
693
- "@ds-mo/tokens ^6.6.1",
693
+ "@ds-mo/tokens ^6.7.0",
694
694
  "@ds-mo/icons ^8.1.1"
695
695
  ],
696
696
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -332,7 +332,7 @@
332
332
  },
333
333
  "peerDependencies": {
334
334
  "required": [
335
- "@ds-mo/tokens ^6.6.1",
335
+ "@ds-mo/tokens ^6.7.0",
336
336
  "@ds-mo/icons ^8.1.1"
337
337
  ],
338
338
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -457,7 +457,7 @@
457
457
  "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: accessories, headers, items.",
458
458
  "peerDependencies": {
459
459
  "required": [
460
- "@ds-mo/tokens ^6.6.1",
460
+ "@ds-mo/tokens ^6.7.0",
461
461
  "@ds-mo/icons ^8.1.1"
462
462
  ],
463
463
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -300,7 +300,7 @@
300
300
  },
301
301
  "peerDependencies": {
302
302
  "required": [
303
- "@ds-mo/tokens ^6.6.1",
303
+ "@ds-mo/tokens ^6.7.0",
304
304
  "@ds-mo/icons ^8.1.1"
305
305
  ],
306
306
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -695,7 +695,7 @@
695
695
  "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: formatOptions, ticks, valueTexts.",
696
696
  "peerDependencies": {
697
697
  "required": [
698
- "@ds-mo/tokens ^6.6.1",
698
+ "@ds-mo/tokens ^6.7.0",
699
699
  "@ds-mo/icons ^8.1.1"
700
700
  ],
701
701
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -227,7 +227,7 @@
227
227
  "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: options, sections.",
228
228
  "peerDependencies": {
229
229
  "required": [
230
- "@ds-mo/tokens ^6.6.1",
230
+ "@ds-mo/tokens ^6.7.0",
231
231
  "@ds-mo/icons ^8.1.1"
232
232
  ],
233
233
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
@@ -378,7 +378,7 @@
378
378
  },
379
379
  "peerDependencies": {
380
380
  "required": [
381
- "@ds-mo/tokens ^6.6.1",
381
+ "@ds-mo/tokens ^6.7.0",
382
382
  "@ds-mo/icons ^8.1.1"
383
383
  ],
384
384
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."