@ds-mo/ui 13.16.1 → 13.18.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 +268 -17
  4. package/dist/angular/ds-filter-menu.d.ts +44 -0
  5. package/dist/angular/ds-filter-menu.js +57 -0
  6. package/dist/angular/ds-select.d.ts +12 -1
  7. package/dist/angular/ds-select.js +10 -4
  8. package/dist/angular/index.d.ts +1 -1
  9. package/dist/angular/index.js +1 -0
  10. package/dist/angular/proxies.d.ts +1 -0
  11. package/dist/angular/proxies.js +1 -0
  12. package/dist/components/ds-agent-activity.js +1 -1
  13. package/dist/components/ds-agent-questionnaire.js +1 -1
  14. package/dist/components/ds-agent-response.js +1 -1
  15. package/dist/components/ds-agent-source-list.js +1 -1
  16. package/dist/components/ds-agent-tool-call.js +1 -1
  17. package/dist/components/ds-attachment-list.js +1 -1
  18. package/dist/components/ds-badge.js +1 -1
  19. package/dist/components/ds-banner.js +1 -1
  20. package/dist/components/ds-bar-nav.js +1 -1
  21. package/dist/components/ds-bar-title.js +1 -1
  22. package/dist/components/ds-bar-workflow.js +1 -1
  23. package/dist/components/ds-bar-workflow.js.map +1 -1
  24. package/dist/components/ds-breadcrumb.js +1 -1
  25. package/dist/components/ds-button-filled.js +1 -1
  26. package/dist/components/ds-button-unfilled.js +1 -1
  27. package/dist/components/ds-card-chart.js +1 -1
  28. package/dist/components/ds-card-overview.js +1 -1
  29. package/dist/components/ds-card-overview.js.map +1 -1
  30. package/dist/components/ds-card-setting.js +1 -1
  31. package/dist/components/ds-chart-legend.js +1 -1
  32. package/dist/components/ds-chart.js +1 -1
  33. package/dist/components/ds-checkbox.js +1 -1
  34. package/dist/components/ds-chip.js +1 -1
  35. package/dist/components/ds-code-block.js +1 -1
  36. package/dist/components/ds-conversation-list-item.js +1 -1
  37. package/dist/components/ds-conversation-list-item.js.map +1 -1
  38. package/dist/components/ds-conversation-list-section.js +1 -1
  39. package/dist/components/ds-empty-state.js +1 -1
  40. package/dist/components/ds-field.js +1 -1
  41. package/dist/components/ds-filter-menu.d.ts +11 -0
  42. package/dist/components/ds-filter-menu.js +2 -0
  43. package/dist/components/ds-filter-menu.js.map +1 -0
  44. package/dist/components/ds-input.js +1 -1
  45. package/dist/components/ds-input.js.map +1 -1
  46. package/dist/components/ds-markdown.js +1 -1
  47. package/dist/components/ds-menu.js +1 -1
  48. package/dist/components/ds-message-actions.js +1 -1
  49. package/dist/components/ds-message-bubble.js +1 -1
  50. package/dist/components/ds-message-composer.js +1 -1
  51. package/dist/components/ds-message-scroller.js +1 -1
  52. package/dist/components/ds-message.js +1 -1
  53. package/dist/components/ds-mobile-bar-nav.js +1 -1
  54. package/dist/components/ds-mobile-header.js +1 -1
  55. package/dist/components/ds-mobile-section-switcher.js +1 -1
  56. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  57. package/dist/components/ds-modal.js +1 -1
  58. package/dist/components/ds-modal.js.map +1 -1
  59. package/dist/components/ds-panel-nav.js +1 -1
  60. package/dist/components/ds-panel-sub-nav.js +1 -1
  61. package/dist/components/ds-panel-tool-header.js +1 -1
  62. package/dist/components/ds-panel-tool-search.js +1 -1
  63. package/dist/components/ds-panel-tools.js +1 -1
  64. package/dist/components/ds-radio.js +1 -1
  65. package/dist/components/ds-scroll-overlay.js +1 -1
  66. package/dist/components/ds-select.js +1 -1
  67. package/dist/components/ds-select.js.map +1 -1
  68. package/dist/components/ds-shell-app.js +1 -1
  69. package/dist/components/ds-shell-app.js.map +1 -1
  70. package/dist/components/ds-shell-page.js +1 -1
  71. package/dist/components/ds-shell-tools.js +1 -1
  72. package/dist/components/ds-skeleton.js +1 -1
  73. package/dist/components/ds-slider.js +1 -1
  74. package/dist/components/ds-swatch-picker.js +1 -1
  75. package/dist/components/ds-switch.js +1 -1
  76. package/dist/components/ds-tab-group.js +1 -1
  77. package/dist/components/ds-table.js +1 -1
  78. package/dist/components/ds-table.js.map +1 -1
  79. package/dist/components/ds-tag.js +1 -1
  80. package/dist/components/ds-text.js +1 -1
  81. package/dist/components/ds-toast.js +1 -1
  82. package/dist/components/ds-tooltip-chart.js +1 -1
  83. package/dist/components/ds-tooltip.js +1 -1
  84. package/dist/components/ds-typing-indicator.js +1 -1
  85. package/dist/components/p-5uI3i2vg.js +2 -0
  86. package/dist/components/p-5uI3i2vg.js.map +1 -0
  87. package/dist/components/p-BAgjMUt3.js +2 -0
  88. package/dist/components/p-BAgjMUt3.js.map +1 -0
  89. package/dist/components/{p-CdKz-QT2.js → p-BCfgU8Fh.js} +2 -2
  90. package/dist/components/{p-CsXC1cHI.js → p-BDsAON4I.js} +2 -2
  91. package/dist/components/p-BMq4DJWh.js +2 -0
  92. package/dist/components/{p-D9FdOR_m.js.map → p-BMq4DJWh.js.map} +1 -1
  93. package/dist/components/{p-GWUTrIlk.js → p-BOCrvs-v.js} +2 -2
  94. package/dist/components/{p-B69Re7HW.js → p-BOjGzd5N.js} +2 -2
  95. package/dist/components/{p-BAAjiAIF.js → p-BQkZ8FIl.js} +2 -2
  96. package/dist/components/p-BaiGt_o6.js +2 -0
  97. package/dist/components/{p-D4jQy3Ps.js.map → p-BaiGt_o6.js.map} +1 -1
  98. package/dist/components/p-BqFKxWVl.js +2 -0
  99. package/dist/components/p-BqFKxWVl.js.map +1 -0
  100. package/dist/components/p-BtY2nJW4.js +2 -0
  101. package/dist/components/{p-m5CSrx_s.js.map → p-BtY2nJW4.js.map} +1 -1
  102. package/dist/components/{p-DStd98dM.js → p-BxQlH4gl.js} +2 -2
  103. package/dist/components/{p-DStd98dM.js.map → p-BxQlH4gl.js.map} +1 -1
  104. package/dist/components/{p-00or0yGw.js → p-C7ywYAzN.js} +2 -2
  105. package/dist/components/p-C8keZ4k6.js +2 -0
  106. package/dist/components/{p-BMAZWEDa.js.map → p-C8keZ4k6.js.map} +1 -1
  107. package/dist/components/p-CB8iBV_M.js +2 -0
  108. package/dist/components/p-CB8iBV_M.js.map +1 -0
  109. package/dist/components/p-CP2W8qxB.js +2 -0
  110. package/dist/components/{p-D5sIwLjA.js.map → p-CP2W8qxB.js.map} +1 -1
  111. package/dist/components/p-CUQTEeLp.js +2 -0
  112. package/dist/components/{p-B94M62Tx.js.map → p-CUQTEeLp.js.map} +1 -1
  113. package/dist/components/{p-D4j0deyd.js → p-C_tqXl5P.js} +2 -2
  114. package/dist/components/p-Csq6XDgm.js +2 -0
  115. package/dist/components/{p-D9CDoQBx.js.map → p-Csq6XDgm.js.map} +1 -1
  116. package/dist/components/p-CswBI711.js +2 -0
  117. package/dist/components/{p-CnUq7E8S.js.map → p-CswBI711.js.map} +1 -1
  118. package/dist/components/p-CtSxm6PI.js +2 -0
  119. package/dist/components/{p-DyqLVdJp.js.map → p-CtSxm6PI.js.map} +1 -1
  120. package/dist/components/{p-dEouiXJ8.js → p-D8nnhQNJ.js} +2 -2
  121. package/dist/components/p-DTMxwYQj.js +2 -0
  122. package/dist/components/{p-B2SoinWf.js.map → p-DTMxwYQj.js.map} +1 -1
  123. package/dist/components/{p-C891ueIx.js → p-DYoCb_sj.js} +2 -2
  124. package/dist/components/{p-Dhx_3_tf.js → p-DZFilC--.js} +2 -2
  125. package/dist/components/p-DZFilC--.js.map +1 -0
  126. package/dist/components/{p-GbTasczF.js → p-Dcnd5ZX5.js} +2 -2
  127. package/dist/components/{p-BRze4tRe.js → p-DeBto13S.js} +2 -2
  128. package/dist/components/p-DtvJTPds.js +2 -0
  129. package/dist/components/{p-B53Vpuqq.js.map → p-DtvJTPds.js.map} +1 -1
  130. package/dist/components/{p-DrvEhJhO.js → p-N4m0evkj.js} +2 -2
  131. package/dist/components/p-NdahPypA.js +2 -0
  132. package/dist/components/p-NdahPypA.js.map +1 -0
  133. package/dist/components/{p-D4AfoIu6.js → p-NuRg_IoA.js} +2 -2
  134. package/dist/components/{p-CqDJRVT8.js → p-NzOcZg8r.js} +2 -2
  135. package/dist/components/p-PzI11fs8.js +2 -0
  136. package/dist/components/p-PzI11fs8.js.map +1 -0
  137. package/dist/components/{p-Cohb8T7G.js → p-QdI17bl-.js} +2 -2
  138. package/dist/components/{p-chA2WA5x.js → p-Qzh-wyTg.js} +2 -2
  139. package/dist/components/{p-CnIvWEVm.js → p-Xr9OO-Ao.js} +2 -2
  140. package/dist/components/{p-Qf-os3lG.js → p-oyZjjoYV.js} +2 -2
  141. package/dist/components/{p-Dbobj7DI.js → p-smzwm_EW.js} +2 -2
  142. package/dist/components/p-tR8INOIN.js +2 -0
  143. package/dist/components/p-tR8INOIN.js.map +1 -0
  144. package/dist/docs/components.json +1299 -93
  145. package/dist/lib/utils/choice-list.d.ts +10 -0
  146. package/dist/lib/utils/index.js +4 -1
  147. package/dist/lib/utils/index.js.map +2 -2
  148. package/dist/lib/utils/token-defaults.d.ts +2 -0
  149. package/dist/mcp-data/registry/agent-source-list.json +2 -2
  150. package/dist/mcp-data/registry/bar-nav.json +2 -2
  151. package/dist/mcp-data/registry/breadcrumb.json +2 -2
  152. package/dist/mcp-data/registry/filter-menu.json +643 -0
  153. package/dist/mcp-data/registry/menu.json +11 -8
  154. package/dist/mcp-data/registry/modal.json +3 -3
  155. package/dist/mcp-data/registry/registry.json +270 -16
  156. package/dist/mcp-data/registry/select.json +131 -7
  157. package/dist/mcp-data/registry/table.json +8 -8
  158. package/dist/mcp-data/registry/text.json +2 -2
  159. package/dist/react/components.d.ts +1 -0
  160. package/dist/react/components.js +1 -0
  161. package/dist/react/ds-filter-menu.d.ts +17 -0
  162. package/dist/react/ds-filter-menu.js +19 -0
  163. package/dist/react/ds-select.d.ts +3 -1
  164. package/dist/react/ds-select.js +3 -1
  165. package/dist/styles/prose.css +19 -3
  166. package/dist/styles/table.css +106 -3
  167. package/dist/types/components/FilterMenu/FilterMenu.d.ts +137 -0
  168. package/dist/types/components/Menu/Menu.d.ts +1 -1
  169. package/dist/types/components/Menu/menu-types.d.ts +9 -0
  170. package/dist/types/components/Modal/Modal.d.ts +1 -0
  171. package/dist/types/components/Select/Select.d.ts +34 -0
  172. package/dist/types/components/Table/Table.d.ts +2 -3
  173. package/dist/types/components/Table/table-layout-controller.d.ts +0 -3
  174. package/dist/types/components.d.ts +368 -2
  175. package/dist/types/utils/choice-list-parts.d.ts +17 -0
  176. package/dist/types/utils/choice-list.d.ts +10 -0
  177. package/dist/types/utils/select-controller.d.ts +2 -0
  178. package/dist/types/utils/token-defaults.d.ts +2 -0
  179. package/package.json +2 -1
  180. package/dist/components/p-B2SoinWf.js +0 -2
  181. package/dist/components/p-B53Vpuqq.js +0 -2
  182. package/dist/components/p-B94M62Tx.js +0 -2
  183. package/dist/components/p-BMAZWEDa.js +0 -2
  184. package/dist/components/p-BtUgncSJ.js +0 -2
  185. package/dist/components/p-BtUgncSJ.js.map +0 -1
  186. package/dist/components/p-CMbcRN92.js +0 -2
  187. package/dist/components/p-CMbcRN92.js.map +0 -1
  188. package/dist/components/p-CXduurfd.js +0 -2
  189. package/dist/components/p-CXduurfd.js.map +0 -1
  190. package/dist/components/p-CnUq7E8S.js +0 -2
  191. package/dist/components/p-D4jQy3Ps.js +0 -2
  192. package/dist/components/p-D5sIwLjA.js +0 -2
  193. package/dist/components/p-D9CDoQBx.js +0 -2
  194. package/dist/components/p-D9FdOR_m.js +0 -2
  195. package/dist/components/p-DO5-fplZ.js +0 -2
  196. package/dist/components/p-DO5-fplZ.js.map +0 -1
  197. package/dist/components/p-Dhx_3_tf.js.map +0 -1
  198. package/dist/components/p-DyqLVdJp.js +0 -2
  199. package/dist/components/p-NQOI5gN1.js +0 -2
  200. package/dist/components/p-NQOI5gN1.js.map +0 -1
  201. package/dist/components/p-m5CSrx_s.js +0 -2
  202. package/dist/components/p-ymtdhOU5.js +0 -2
  203. package/dist/components/p-ymtdhOU5.js.map +0 -1
  204. /package/dist/components/{p-CdKz-QT2.js.map → p-BCfgU8Fh.js.map} +0 -0
  205. /package/dist/components/{p-CsXC1cHI.js.map → p-BDsAON4I.js.map} +0 -0
  206. /package/dist/components/{p-GWUTrIlk.js.map → p-BOCrvs-v.js.map} +0 -0
  207. /package/dist/components/{p-B69Re7HW.js.map → p-BOjGzd5N.js.map} +0 -0
  208. /package/dist/components/{p-BAAjiAIF.js.map → p-BQkZ8FIl.js.map} +0 -0
  209. /package/dist/components/{p-00or0yGw.js.map → p-C7ywYAzN.js.map} +0 -0
  210. /package/dist/components/{p-D4j0deyd.js.map → p-C_tqXl5P.js.map} +0 -0
  211. /package/dist/components/{p-dEouiXJ8.js.map → p-D8nnhQNJ.js.map} +0 -0
  212. /package/dist/components/{p-C891ueIx.js.map → p-DYoCb_sj.js.map} +0 -0
  213. /package/dist/components/{p-GbTasczF.js.map → p-Dcnd5ZX5.js.map} +0 -0
  214. /package/dist/components/{p-BRze4tRe.js.map → p-DeBto13S.js.map} +0 -0
  215. /package/dist/components/{p-DrvEhJhO.js.map → p-N4m0evkj.js.map} +0 -0
  216. /package/dist/components/{p-D4AfoIu6.js.map → p-NuRg_IoA.js.map} +0 -0
  217. /package/dist/components/{p-CqDJRVT8.js.map → p-NzOcZg8r.js.map} +0 -0
  218. /package/dist/components/{p-Cohb8T7G.js.map → p-QdI17bl-.js.map} +0 -0
  219. /package/dist/components/{p-chA2WA5x.js.map → p-Qzh-wyTg.js.map} +0 -0
  220. /package/dist/components/{p-CnIvWEVm.js.map → p-Xr9OO-Ao.js.map} +0 -0
  221. /package/dist/components/{p-Qf-os3lG.js.map → p-oyZjjoYV.js.map} +0 -0
  222. /package/dist/components/{p-Dbobj7DI.js.map → p-smzwm_EW.js.map} +0 -0
@@ -125,9 +125,25 @@
125
125
 
126
126
  :where(.ds-prose)
127
127
  :where(a):not(:where([data-ds-prose='off'], [data-ds-prose='off'] *)) {
128
- color: var(--color-foreground-brand);
129
- text-decoration: underline;
130
- text-decoration-color: var(--color-foreground-tertiary);
128
+ color: var(--color-foreground-bold-brand);
129
+ text-decoration-line: none;
130
+ text-decoration-color: currentcolor;
131
+ text-decoration-thickness: var(--ds-text-decoration-thickness, var(--dimension-stroke-width-012));
132
+ text-underline-offset: var(--ds-text-decoration-offset, var(--dimension-space-025));
133
+ }
134
+
135
+ @media (hover: hover) and (pointer: fine) {
136
+ :where(.ds-prose)
137
+ :where(a):not(:where([data-ds-prose='off'], [data-ds-prose='off'] *)):hover {
138
+ text-decoration-line: underline;
139
+ }
140
+ }
141
+
142
+ @media (forced-colors: active) {
143
+ :where(.ds-prose)
144
+ :where(a):not(:where([data-ds-prose='off'], [data-ds-prose='off'] *)) {
145
+ text-decoration-line: underline;
146
+ }
131
147
  }
132
148
 
133
149
  :where(.ds-prose)
@@ -163,6 +163,66 @@
163
163
  --_table-selection-column-contribution: var(--_table-selection-column-inline-size);
164
164
  }
165
165
 
166
+ /*
167
+ * A contained grouped table uses native sticky positioning without a scroll
168
+ * listener or duplicated section lane. Turning its table formatting boxes into
169
+ * explicit blocks makes every real tbody a section boundary; shared grid tracks
170
+ * retain exact header/body alignment while the browser performs push-off in the
171
+ * same layout pass as scrolling and container resize.
172
+ */
173
+ :where(.ds-table__table--native-group-sticky) {
174
+ display: block;
175
+ }
176
+
177
+ :where(.ds-table__table--native-group-sticky > colgroup) {
178
+ display: none;
179
+ }
180
+
181
+ :where(.ds-table__table--native-group-sticky > .ds-table__head),
182
+ :where(.ds-table__table--native-group-sticky > .ds-table__body) {
183
+ display: block;
184
+ inline-size: 100%;
185
+ }
186
+
187
+ :where(.ds-table__table--native-group-sticky > .ds-table__group) {
188
+ position: relative;
189
+ contain: layout style;
190
+ }
191
+
192
+ :where(.ds-table__table--native-group-sticky .ds-table__header-row),
193
+ :where(.ds-table__table--native-group-sticky .ds-table__row),
194
+ :where(.ds-table__table--native-group-sticky .ds-table__skeleton-row) {
195
+ display: grid;
196
+ grid-template-columns: var(--_table-grid-template-columns);
197
+ inline-size: 100%;
198
+ }
199
+
200
+ :where(.ds-table__table--native-group-sticky .ds-table__group-row),
201
+ :where(.ds-table__table--native-group-sticky .ds-table__state-row),
202
+ :where(.ds-table__table--native-group-sticky .ds-table__load-row) {
203
+ display: block;
204
+ inline-size: 100%;
205
+ }
206
+
207
+ :where(.ds-table__table--native-group-sticky .ds-table__header-cell),
208
+ :where(.ds-table__table--native-group-sticky .ds-table__cell),
209
+ :where(.ds-table__table--native-group-sticky .ds-table__group-cell),
210
+ :where(.ds-table__table--native-group-sticky .ds-table__state-cell),
211
+ :where(.ds-table__table--native-group-sticky .ds-table__load-cell) {
212
+ display: block;
213
+ inline-size: auto;
214
+ width: auto;
215
+ max-inline-size: none;
216
+ max-width: none;
217
+ }
218
+
219
+ :where(.ds-table__table--native-group-sticky .ds-table__group-cell),
220
+ :where(.ds-table__table--native-group-sticky .ds-table__state-cell),
221
+ :where(.ds-table__table--native-group-sticky .ds-table__load-cell) {
222
+ inline-size: 100%;
223
+ width: 100%;
224
+ }
225
+
166
226
  :where(.ds-table__caption-bar),
167
227
  :where(.ds-table__footer) {
168
228
  box-sizing: border-box;
@@ -184,6 +244,20 @@
184
244
  color: var(--color-foreground-primary);
185
245
  }
186
246
 
247
+ :where(.ds-table__caption-content) {
248
+ display: grid;
249
+ flex: 1 1 auto;
250
+ grid-template-columns: minmax(0, 1fr);
251
+ align-items: center;
252
+ box-sizing: border-box;
253
+ min-inline-size: 0;
254
+ max-inline-size: 100%;
255
+ }
256
+
257
+ :where(.ds-table__caption-content > slot) {
258
+ display: contents;
259
+ }
260
+
187
261
  :where(.ds-table--caption-visible .ds-table__frame),
188
262
  :where(.ds-table--caption-visible .ds-table__viewport) {
189
263
  border-start-start-radius: 0;
@@ -306,9 +380,18 @@
306
380
  inline-size: 100%;
307
381
  block-size: var(--_table-row-min-block-size);
308
382
  overflow: hidden;
383
+ }
384
+
385
+ :where(.ds-table--document-sticky-header .ds-table__sticky-group) {
309
386
  will-change: inset-block-start;
310
387
  }
311
388
 
389
+ :where(.ds-table--contained-sticky-header .ds-table__sticky-group) {
390
+ inset-block-start: var(--_table-header-min-block-size);
391
+ transform: translateY(var(--_table-sticky-group-push, 0));
392
+ will-change: transform;
393
+ }
394
+
312
395
  :where(.ds-table__sticky-group .ds-table__group-content) {
313
396
  position: relative;
314
397
  }
@@ -452,6 +535,21 @@
452
535
  vertical-align: top;
453
536
  }
454
537
 
538
+ /*
539
+ * Native table cells add their block padding outside the declared content
540
+ * height and grow together with their row. Grid items use border-box sizing,
541
+ * so restore intrinsic sizing and grid-track stretch for the grouped-sticky
542
+ * renderer instead of turning the native recipe's base sizes into hard caps.
543
+ */
544
+ :where(.ds-table__table--native-group-sticky .ds-table__header-cell) {
545
+ min-block-size: var(--_table-header-min-block-size);
546
+ block-size: auto;
547
+ }
548
+
549
+ :where(.ds-table__table--native-group-sticky .ds-table__cell) {
550
+ block-size: auto;
551
+ }
552
+
455
553
  :where(.ds-table__header-cell + .ds-table__header-cell) {
456
554
  border-inline-start: 0;
457
555
  }
@@ -710,9 +808,7 @@
710
808
  }
711
809
 
712
810
  :where(.ds-table__cell-tag-stack--tag-with-text .ds-table__cell-tag-text) {
713
- padding-inline: calc(
714
- var(--_table-cell-track-padding-inline) + var(--_table-cell-track-label-inset)
715
- );
811
+ padding-inline: var(--_table-cell-track-padding-inline);
716
812
  padding-block: var(--dimension-space-025);
717
813
  min-block-size: 0;
718
814
  }
@@ -991,6 +1087,13 @@
991
1087
  background: transparent;
992
1088
  }
993
1089
 
1090
+ /* Each real section owns one sticky row and its own push-off boundary. */
1091
+ :where(.ds-table--contained-sticky-header .ds-table__group-row--native-sticky) {
1092
+ position: sticky;
1093
+ inset-block-start: var(--_table-header-min-block-size);
1094
+ z-index: 5;
1095
+ }
1096
+
994
1097
  /* Intentful groups resolve from their faint signal into neutral at the trailing edge. */
995
1098
  :where(.ds-table__group-cell--intent-brand),
996
1099
  :where(.ds-table__group-cell--intent-negative),
@@ -0,0 +1,137 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ import { type ControlWidth } from '../../utils';
3
+ import type { AnchoredAlign, AnchoredSide } from '../../utils/anchored-position';
4
+ export type FilterMenuFilterKind = 'single' | 'multiple' | 'boolean' | 'date';
5
+ export type FilterMenuSize = 'lg' | 'md' | 'sm' | 'xs';
6
+ export type FilterMenuWidth = ControlWidth;
7
+ export interface FilterMenuOption {
8
+ label: string;
9
+ value: string;
10
+ description?: string;
11
+ isInactive?: boolean;
12
+ }
13
+ export interface FilterMenuFilter {
14
+ id: string;
15
+ label: string;
16
+ kind: FilterMenuFilterKind;
17
+ options?: FilterMenuOption[];
18
+ description?: string;
19
+ fieldLabel?: string;
20
+ /** Draw a standard menu-section divider after this category. */
21
+ divider?: boolean;
22
+ }
23
+ export type FilterMenuValue = string[] | boolean | string;
24
+ export type FilterMenuValues = Record<string, FilterMenuValue | undefined>;
25
+ export interface FilterMenuChangeDetail {
26
+ filterId: string;
27
+ value: FilterMenuValue;
28
+ }
29
+ export declare class FilterMenu {
30
+ el: HTMLElement;
31
+ /** Controlled popup visibility. */
32
+ open: boolean;
33
+ /** Select trigger text. The selected count is appended automatically. */
34
+ triggerLabel: string;
35
+ /** Optional select trigger prefix icon name. */
36
+ icon: string | undefined;
37
+ /** Select trigger density. */
38
+ size: FilterMenuSize;
39
+ /** Select trigger width fit. */
40
+ width: FilterMenuWidth;
41
+ /** Show the surface-aware inset border around the select trigger. */
42
+ hasBorder: boolean;
43
+ /** Show selected interaction fill when one or more criteria are active. */
44
+ activeFill: boolean;
45
+ /** ID applied to the internal select trigger. */
46
+ inputId: string | undefined;
47
+ /** Direct accessible name for the internal select trigger. */
48
+ ariaLabel: string | null;
49
+ /** Product-owned filter categories and option definitions. */
50
+ filters: FilterMenuFilter[];
51
+ /** Controlled values keyed by filter id. */
52
+ values: FilterMenuValues;
53
+ /** Controlled category shown in the option pane. */
54
+ activeFilterId: string | undefined;
55
+ /** External trigger element to position against. */
56
+ anchor: HTMLElement | undefined;
57
+ /** ID of the external trigger element used for positioning and focus return. */
58
+ anchorId: string | undefined;
59
+ /** Preferred popup side; collision handling may flip it. */
60
+ side: AnchoredSide;
61
+ /** Cross-axis alignment against the trigger. */
62
+ align: AnchoredAlign;
63
+ /** Gap between trigger and popup — number in px or a TokoMo length. */
64
+ sideOffset: number | string;
65
+ /** Cross-axis offset — number in px or a TokoMo length. */
66
+ alignOffset: number | string;
67
+ /** Popup width. It remains clamped to the viewport by the component recipe. */
68
+ menuWidth: string;
69
+ /** Accessible name for the non-modal filter dialog. */
70
+ menuLabel: string;
71
+ /** Accessible name for the category tab list. */
72
+ categoriesLabel: string;
73
+ /** Footer action and date-clear accessible label. */
74
+ clearLabel: string;
75
+ /** Show a visible focus ring on initial entry after keyboard activation. */
76
+ initialFocusVisible: boolean;
77
+ private shouldRender;
78
+ private closing;
79
+ private positionReady;
80
+ private pos;
81
+ private focusRingVisible;
82
+ private activeOptionIndex;
83
+ /** Requests a controlled value replacement without closing the popup. */
84
+ dsChange: EventEmitter<FilterMenuChangeDetail>;
85
+ /** Requests that the consumer clear every filter value. */
86
+ dsClear: EventEmitter<void>;
87
+ /** Requests a controlled active-category replacement. */
88
+ dsActiveFilterChange: EventEmitter<string>;
89
+ /** Requests that the controlled popup close. */
90
+ dsClose: EventEmitter<void>;
91
+ /** Emitted whenever internal select-trigger activation changes popup visibility. */
92
+ dsOpenChange: EventEmitter<boolean>;
93
+ /** Emitted after exit motion and rendered popup removal complete. */
94
+ dsAfterClose: EventEmitter<void>;
95
+ private readonly generatedId;
96
+ private outsideHandler;
97
+ private triggerElement;
98
+ private pendingInitialFocusVisible;
99
+ private closeTimer;
100
+ private closingSnapshot;
101
+ private readonly position;
102
+ componentDidLoad(): void;
103
+ disconnectedCallback(): void;
104
+ onOpenChange(isOpen: boolean): void;
105
+ onPositionInputChange(): void;
106
+ handleKeyDown(event: KeyboardEvent): void;
107
+ private get resolvedAnchor();
108
+ private get usesInternalTrigger();
109
+ private get anchorFocusTarget();
110
+ private get viewportPad();
111
+ private get popupFallbackWidth();
112
+ private get popupFallbackHeight();
113
+ private setupListeners;
114
+ private teardownListeners;
115
+ private close;
116
+ private toggleFromTrigger;
117
+ private handleTriggerKeyDown;
118
+ private finishClose;
119
+ private captureClosingSnapshot;
120
+ private focusAnchor;
121
+ private focusInitialCategory;
122
+ private tabLeavesPopup;
123
+ private moveFocusAfterTab;
124
+ private selectedFilter;
125
+ private selectedCount;
126
+ private totalSelected;
127
+ private activeFilterCount;
128
+ private selectCategory;
129
+ private handleCategoryKeyDown;
130
+ private handlePanelKeyDown;
131
+ private handleOptionKeyDown;
132
+ private toggleMultiple;
133
+ private selectOption;
134
+ private renderOptions;
135
+ render(): any;
136
+ }
137
+ //# sourceMappingURL=FilterMenu.d.ts.map
@@ -1,7 +1,7 @@
1
1
  import { EventEmitter } from '../../stencil-public-runtime';
2
2
  import { type ChoicePopupAnchorAlignment, type ControlSize } from '../../utils';
3
3
  import type { MenuAlign, MenuSide } from './menu-position';
4
- import type { MenuItemData, MenuSection } from './menu-types';
4
+ import { type MenuItemData, type MenuSection } from './menu-types';
5
5
  export type MenuSelectionMode = 'none' | 'single';
6
6
  export type MenuSize = ControlSize;
7
7
  export declare class Menu {
@@ -1,12 +1,21 @@
1
1
  import type { SwatchPickerOption, SwatchPickerSection } from '../SwatchPicker/swatch-picker-types';
2
+ import type { TagContrast, TagIntent } from '../Tag/Tag';
2
3
  export type { MenuAlign, MenuSide } from './menu-position';
3
4
  export { PANEL_NAV_USER_MENU_PLACEMENT, PANEL_TOOLS_HEADER_MENU_PLACEMENT, type MenuPlacement, } from './menu-placement';
5
+ export interface MenuItemTagData {
6
+ label: string;
7
+ intent?: TagIntent;
8
+ contrast?: TagContrast;
9
+ rounded?: boolean;
10
+ }
4
11
  export interface MenuItemData {
5
12
  label: string;
6
13
  value?: string;
7
14
  subtext?: string;
8
15
  /** Show a supplemental brand notification dot. */
9
16
  dot?: boolean;
17
+ /** Show a non-interactive tag at the trailing edge of the row. */
18
+ tag?: MenuItemTagData;
10
19
  isSelected?: boolean;
11
20
  isInactive?: boolean;
12
21
  isDestructive?: boolean;
@@ -27,6 +27,7 @@ export declare class Modal {
27
27
  private previousFocus;
28
28
  private closeTimer;
29
29
  componentDidLoad(): void;
30
+ componentDidRender(): void;
30
31
  disconnectedCallback(): void;
31
32
  onOpenChange(isOpen: boolean): void;
32
33
  private focusClose;
@@ -6,7 +6,13 @@ export type SelectSection = ChoiceSection;
6
6
  export type SelectBackground = ChoiceBackground;
7
7
  export type SelectSize = 'lg' | 'md' | 'sm' | 'xs';
8
8
  export type SelectWidth = ControlWidth;
9
+ export type SelectPopupAlign = 'start' | 'end';
9
10
  export type SelectValue = string | string[];
11
+ export interface SelectOptionActionDetail {
12
+ value: string;
13
+ anchorId: string;
14
+ originalEvent: MouseEvent;
15
+ }
10
16
  export declare class Select {
11
17
  el: HTMLElement;
12
18
  internals: ElementInternals;
@@ -30,10 +36,18 @@ export declare class Select {
30
36
  requiredMessage: string;
31
37
  /** Trigger text shown when no valid value is selected. */
32
38
  placeholder: string;
39
+ /** Optional scalar-mode trigger text that does not change the selected option label. */
40
+ triggerLabel: string | undefined;
41
+ /** Present triggerLabel with placeholder emphasis while preserving the selected value. */
42
+ triggerLabelPlaceholder: boolean;
43
+ /** Show a supplemental notification dot beside the trigger label. */
44
+ dot: boolean;
33
45
  /** Control density. */
34
46
  size: SelectSize;
35
47
  /** Width fit — hug content (default) or fill the parent. */
36
48
  width: SelectWidth;
49
+ /** Align the popup's choice edge to the trigger start or end edge. */
50
+ popupAlign: SelectPopupAlign;
37
51
  /** Shared inactive treatment; removes interaction and form submission. */
38
52
  isInactive: boolean;
39
53
  /** Replace the prefix with a loader and disable option interaction. */
@@ -50,6 +64,8 @@ export declare class Select {
50
64
  clearLabel: string;
51
65
  /** Localized noun displayed after the selected count in multiple mode. */
52
66
  selectedLabel: string;
67
+ /** Optional text action shown in the popup footer instead of the clear action. */
68
+ footerActionLabel: string | undefined;
53
69
  /** Show immediate local filtering over option labels, subtext, and section headings. */
54
70
  searchable: boolean;
55
71
  /** Localized search-field placeholder and accessible name. */
@@ -78,23 +94,36 @@ export declare class Select {
78
94
  dsClear: EventEmitter<void>;
79
95
  /** Emitted whenever popup visibility changes. */
80
96
  dsOpenChange: EventEmitter<boolean>;
97
+ /** Emitted when the optional popup footer action is activated. */
98
+ dsFooterAction: EventEmitter<void>;
99
+ /** Emitted when an option's contextual ellipsis action is activated. */
100
+ dsOptionAction: EventEmitter<SelectOptionActionDetail>;
81
101
  private activeIndex;
82
102
  private searchTerm;
83
103
  private formDisabled;
84
104
  private position;
85
105
  private positionReady;
86
106
  private focusRingVisible;
107
+ private compactFooterSummary;
87
108
  private readonly generatedId;
88
109
  private readonly listboxId;
89
110
  private readonly errorId;
90
111
  private initialValue;
91
112
  private readonly controller;
113
+ private footerContentElement?;
114
+ private footerSummaryMeasureElement?;
115
+ private footerClearElement?;
116
+ private footerResizeObserver?;
117
+ private observedFooterContentElement?;
118
+ private footerMeasurementFrame?;
92
119
  private createController;
93
120
  componentWillLoad(): void;
94
121
  componentDidLoad(): void;
122
+ componentDidRender(): void;
95
123
  disconnectedCallback(): void;
96
124
  syncFormValue(): void;
97
125
  onLoadingChange(): void;
126
+ onPopupAlignChange(): void;
98
127
  onOpenChange(open: boolean): void;
99
128
  onSearchTermChange(): void;
100
129
  onActiveIndexChange(): void;
@@ -113,10 +142,15 @@ export declare class Select {
113
142
  private get selectedOption();
114
143
  private get hasSelection();
115
144
  private get activeOptionId();
145
+ private get popupRole();
146
+ private observeFooterContent;
147
+ private scheduleFooterSummaryMeasurement;
148
+ private measureFooterSummary;
116
149
  private closePopup;
117
150
  private openPopup;
118
151
  private selectOption;
119
152
  private clearSelection;
153
+ private activateFooterAction;
120
154
  private readonly handleListKeyDown;
121
155
  private readonly handleTriggerKeyDown;
122
156
  private renderOption;
@@ -81,9 +81,7 @@ export declare class Table {
81
81
  private announcement;
82
82
  private activeStickyGroupId;
83
83
  private viewportFitSettled;
84
- private headerLeadingPresent;
85
- private headerCopyPresent;
86
- private headerTrailingPresent;
84
+ private headerPresent;
87
85
  private rootEl;
88
86
  private viewportEl;
89
87
  private frameEl;
@@ -108,6 +106,7 @@ export declare class Table {
108
106
  private syncHeaderSlotPresence;
109
107
  private connectHeaderSlotObserver;
110
108
  private connectStickyGroup;
109
+ private syncStickyGroupConnection;
111
110
  private disconnectStickyGroup;
112
111
  private readonly updateStickyGroup;
113
112
  handleStructureChange(): void;
@@ -1,6 +1,5 @@
1
1
  export interface TableLayoutElements {
2
2
  viewport: HTMLElement | null;
3
- table: HTMLTableElement | null;
4
3
  stickyHeaderTable: HTMLTableElement | null;
5
4
  collapseAllOverlay: HTMLElement | null;
6
5
  frame: HTMLElement | null;
@@ -28,7 +27,6 @@ export interface TableLayoutMetricInput {
28
27
  scrollInlineSize: number;
29
28
  scrollBlockSize: number;
30
29
  scrollInlineOffset: number;
31
- tableInlineSize: number;
32
30
  collapseHeadBlockStart?: number;
33
31
  collapseFrameBlockStart?: number;
34
32
  }
@@ -51,7 +49,6 @@ export declare class TableLayoutController {
51
49
  private readonly options;
52
50
  private connected;
53
51
  private connectedViewport;
54
- private observedTable;
55
52
  private resizeObserver;
56
53
  private frame;
57
54
  private overflow;