@ds-mo/ui 13.17.0 → 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 (220) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +264 -13
  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 +266 -12
  156. package/dist/mcp-data/registry/select.json +131 -7
  157. package/dist/mcp-data/registry/table.json +2 -2
  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 +1 -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.d.ts +368 -2
  173. package/dist/types/utils/choice-list-parts.d.ts +17 -0
  174. package/dist/types/utils/choice-list.d.ts +10 -0
  175. package/dist/types/utils/select-controller.d.ts +2 -0
  176. package/dist/types/utils/token-defaults.d.ts +2 -0
  177. package/package.json +2 -1
  178. package/dist/components/p-B2SoinWf.js +0 -2
  179. package/dist/components/p-B53Vpuqq.js +0 -2
  180. package/dist/components/p-B94M62Tx.js +0 -2
  181. package/dist/components/p-BMAZWEDa.js +0 -2
  182. package/dist/components/p-BtUgncSJ.js +0 -2
  183. package/dist/components/p-BtUgncSJ.js.map +0 -1
  184. package/dist/components/p-CMbcRN92.js +0 -2
  185. package/dist/components/p-CMbcRN92.js.map +0 -1
  186. package/dist/components/p-CXduurfd.js +0 -2
  187. package/dist/components/p-CXduurfd.js.map +0 -1
  188. package/dist/components/p-CnUq7E8S.js +0 -2
  189. package/dist/components/p-D4jQy3Ps.js +0 -2
  190. package/dist/components/p-D5sIwLjA.js +0 -2
  191. package/dist/components/p-D9CDoQBx.js +0 -2
  192. package/dist/components/p-D9FdOR_m.js +0 -2
  193. package/dist/components/p-DO5-fplZ.js +0 -2
  194. package/dist/components/p-DO5-fplZ.js.map +0 -1
  195. package/dist/components/p-Dhx_3_tf.js.map +0 -1
  196. package/dist/components/p-DyqLVdJp.js +0 -2
  197. package/dist/components/p-NQOI5gN1.js +0 -2
  198. package/dist/components/p-NQOI5gN1.js.map +0 -1
  199. package/dist/components/p-m5CSrx_s.js +0 -2
  200. package/dist/components/p-ymtdhOU5.js +0 -2
  201. package/dist/components/p-ymtdhOU5.js.map +0 -1
  202. /package/dist/components/{p-CdKz-QT2.js.map → p-BCfgU8Fh.js.map} +0 -0
  203. /package/dist/components/{p-CsXC1cHI.js.map → p-BDsAON4I.js.map} +0 -0
  204. /package/dist/components/{p-GWUTrIlk.js.map → p-BOCrvs-v.js.map} +0 -0
  205. /package/dist/components/{p-B69Re7HW.js.map → p-BOjGzd5N.js.map} +0 -0
  206. /package/dist/components/{p-BAAjiAIF.js.map → p-BQkZ8FIl.js.map} +0 -0
  207. /package/dist/components/{p-00or0yGw.js.map → p-C7ywYAzN.js.map} +0 -0
  208. /package/dist/components/{p-D4j0deyd.js.map → p-C_tqXl5P.js.map} +0 -0
  209. /package/dist/components/{p-dEouiXJ8.js.map → p-D8nnhQNJ.js.map} +0 -0
  210. /package/dist/components/{p-C891ueIx.js.map → p-DYoCb_sj.js.map} +0 -0
  211. /package/dist/components/{p-GbTasczF.js.map → p-Dcnd5ZX5.js.map} +0 -0
  212. /package/dist/components/{p-BRze4tRe.js.map → p-DeBto13S.js.map} +0 -0
  213. /package/dist/components/{p-DrvEhJhO.js.map → p-N4m0evkj.js.map} +0 -0
  214. /package/dist/components/{p-D4AfoIu6.js.map → p-NuRg_IoA.js.map} +0 -0
  215. /package/dist/components/{p-CqDJRVT8.js.map → p-NzOcZg8r.js.map} +0 -0
  216. /package/dist/components/{p-Cohb8T7G.js.map → p-QdI17bl-.js.map} +0 -0
  217. /package/dist/components/{p-chA2WA5x.js.map → p-Qzh-wyTg.js.map} +0 -0
  218. /package/dist/components/{p-CnIvWEVm.js.map → p-Xr9OO-Ao.js.map} +0 -0
  219. /package/dist/components/{p-Qf-os3lG.js.map → p-oyZjjoYV.js.map} +0 -0
  220. /package/dist/components/{p-Dbobj7DI.js.map → p-smzwm_EW.js.map} +0 -0
@@ -30,6 +30,8 @@ import { CheckboxSize } from "./components/Checkbox/Checkbox";
30
30
  import { ChipSize, ChipState } from "./components/Chip/Chip";
31
31
  import { ConversationListActionLayout } from "./components/ConversationList/ConversationList";
32
32
  import { DividerBackground, DividerInset, DividerLength, DividerOrientation } from "./components/Divider/Divider";
33
+ import { FilterMenuChangeDetail, FilterMenuFilter, FilterMenuSize, FilterMenuValues, FilterMenuWidth } from "./components/FilterMenu/FilterMenu";
34
+ import { AnchoredAlign, AnchoredSide } from "./utils/anchored-position";
33
35
  import { IconColor as IconColor1, IconSize } from "./components/Icon/Icon";
34
36
  import { InputSize, InputType, InputWidth } from "./components/Input/Input";
35
37
  import { LoaderColor, LoaderSize } from "./components/Loader/Loader";
@@ -51,7 +53,7 @@ import { PanelSubNavBackground } from "./components/PanelSubNav/PanelSubNav";
51
53
  import { PanelToolsHeaderAction, PanelToolsHeaders, PanelToolsItem, PanelToolsToolId } from "./components/PanelTools/panel-tools-types";
52
54
  import { RadioOption, RadioSize } from "./components/Radio/Radio";
53
55
  import { ScrollOverlayScrollDetail } from "./components/ScrollOverlay/ScrollOverlay";
54
- import { SelectBackground, SelectOption, SelectSection, SelectSize, SelectValue, SelectWidth } from "./components/Select/Select";
56
+ import { SelectBackground, SelectOption, SelectOptionActionDetail, SelectPopupAlign, SelectSection, SelectSize, SelectValue, SelectWidth } from "./components/Select/Select";
55
57
  import { ShellAppComposition, ShellNavigationConfig, ShellPageChromeConfig, ShellToolsConfig } from "./components/ShellApp/shell-app-types";
56
58
  import { ShellGradientPreset } from "./shell/shell-gradient-presets";
57
59
  import { ShellPageCapacity, ShellPageContentInset, ShellPageContentSurface, ShellPageHeaderPresentation } from "./components/ShellPage/shell-page-types";
@@ -91,6 +93,8 @@ export { CheckboxSize } from "./components/Checkbox/Checkbox";
91
93
  export { ChipSize, ChipState } from "./components/Chip/Chip";
92
94
  export { ConversationListActionLayout } from "./components/ConversationList/ConversationList";
93
95
  export { DividerBackground, DividerInset, DividerLength, DividerOrientation } from "./components/Divider/Divider";
96
+ export { FilterMenuChangeDetail, FilterMenuFilter, FilterMenuSize, FilterMenuValues, FilterMenuWidth } from "./components/FilterMenu/FilterMenu";
97
+ export { AnchoredAlign, AnchoredSide } from "./utils/anchored-position";
94
98
  export { IconColor as IconColor1, IconSize } from "./components/Icon/Icon";
95
99
  export { InputSize, InputType, InputWidth } from "./components/Input/Input";
96
100
  export { LoaderColor, LoaderSize } from "./components/Loader/Loader";
@@ -112,7 +116,7 @@ export { PanelSubNavBackground } from "./components/PanelSubNav/PanelSubNav";
112
116
  export { PanelToolsHeaderAction, PanelToolsHeaders, PanelToolsItem, PanelToolsToolId } from "./components/PanelTools/panel-tools-types";
113
117
  export { RadioOption, RadioSize } from "./components/Radio/Radio";
114
118
  export { ScrollOverlayScrollDetail } from "./components/ScrollOverlay/ScrollOverlay";
115
- export { SelectBackground, SelectOption, SelectSection, SelectSize, SelectValue, SelectWidth } from "./components/Select/Select";
119
+ export { SelectBackground, SelectOption, SelectOptionActionDetail, SelectPopupAlign, SelectSection, SelectSize, SelectValue, SelectWidth } from "./components/Select/Select";
116
120
  export { ShellAppComposition, ShellNavigationConfig, ShellPageChromeConfig, ShellToolsConfig } from "./components/ShellApp/shell-app-types";
117
121
  export { ShellGradientPreset } from "./shell/shell-gradient-presets";
118
122
  export { ShellPageCapacity, ShellPageContentInset, ShellPageContentSurface, ShellPageHeaderPresentation } from "./components/ShellPage/shell-page-types";
@@ -1147,6 +1151,119 @@ export namespace Components {
1147
1151
  */
1148
1152
  "label": string;
1149
1153
  }
1154
+ interface DsFilterMenu {
1155
+ /**
1156
+ * Show selected interaction fill when one or more criteria are active.
1157
+ * @default false
1158
+ */
1159
+ "activeFill": boolean;
1160
+ /**
1161
+ * Controlled category shown in the option pane.
1162
+ */
1163
+ "activeFilterId": string | undefined;
1164
+ /**
1165
+ * Cross-axis alignment against the trigger.
1166
+ * @default 'end'
1167
+ */
1168
+ "align": AnchoredAlign;
1169
+ /**
1170
+ * Cross-axis offset — number in px or a TokoMo length.
1171
+ * @default 0
1172
+ */
1173
+ "alignOffset": number | string;
1174
+ /**
1175
+ * External trigger element to position against.
1176
+ */
1177
+ "anchor": HTMLElement | undefined;
1178
+ /**
1179
+ * ID of the external trigger element used for positioning and focus return.
1180
+ */
1181
+ "anchorId": string | undefined;
1182
+ /**
1183
+ * Direct accessible name for the internal select trigger.
1184
+ * @default null
1185
+ */
1186
+ "ariaLabel": string | null;
1187
+ /**
1188
+ * Accessible name for the category tab list.
1189
+ * @default 'Filter categories'
1190
+ */
1191
+ "categoriesLabel": string;
1192
+ /**
1193
+ * Footer action and date-clear accessible label.
1194
+ * @default 'Clear'
1195
+ */
1196
+ "clearLabel": string;
1197
+ /**
1198
+ * Product-owned filter categories and option definitions.
1199
+ * @default []
1200
+ */
1201
+ "filters": FilterMenuFilter[];
1202
+ /**
1203
+ * Show the surface-aware inset border around the select trigger.
1204
+ * @default true
1205
+ */
1206
+ "hasBorder": boolean;
1207
+ /**
1208
+ * Optional select trigger prefix icon name.
1209
+ * @default 'Filters'
1210
+ */
1211
+ "icon": string | undefined;
1212
+ /**
1213
+ * Show a visible focus ring on initial entry after keyboard activation.
1214
+ * @default false
1215
+ */
1216
+ "initialFocusVisible": boolean;
1217
+ /**
1218
+ * ID applied to the internal select trigger.
1219
+ */
1220
+ "inputId": string | undefined;
1221
+ /**
1222
+ * Accessible name for the non-modal filter dialog.
1223
+ * @default 'Filters'
1224
+ */
1225
+ "menuLabel": string;
1226
+ /**
1227
+ * Popup width. It remains clamped to the viewport by the component recipe.
1228
+ * @default TOKEN_CSS_LENGTHS.menuWidthLg
1229
+ */
1230
+ "menuWidth": string;
1231
+ /**
1232
+ * Controlled popup visibility.
1233
+ * @default false
1234
+ */
1235
+ "open": boolean;
1236
+ /**
1237
+ * Preferred popup side; collision handling may flip it.
1238
+ * @default 'bottom'
1239
+ */
1240
+ "side": AnchoredSide;
1241
+ /**
1242
+ * Gap between trigger and popup — number in px or a TokoMo length.
1243
+ * @default TOKEN_CSS_LENGTHS.space050
1244
+ */
1245
+ "sideOffset": number | string;
1246
+ /**
1247
+ * Select trigger density.
1248
+ * @default 'md'
1249
+ */
1250
+ "size": FilterMenuSize;
1251
+ /**
1252
+ * Select trigger text. The selected count is appended automatically.
1253
+ * @default 'Filters'
1254
+ */
1255
+ "triggerLabel": string;
1256
+ /**
1257
+ * Controlled values keyed by filter id.
1258
+ * @default {}
1259
+ */
1260
+ "values": FilterMenuValues;
1261
+ /**
1262
+ * Select trigger width fit.
1263
+ * @default 'hug'
1264
+ */
1265
+ "width": FilterMenuWidth;
1266
+ }
1150
1267
  interface DsIcon {
1151
1268
  /**
1152
1269
  * Semantic foreground color token, or a raw CSS var reference. `tertiary` and the still-fainter `quaternary` are restricted to icons inside genuinely inactive/disabled UI or to purely decorative icons; informative icons must retain sufficient contrast.
@@ -2061,6 +2178,11 @@ export namespace Components {
2061
2178
  * @default false
2062
2179
  */
2063
2180
  "disabled": boolean;
2181
+ /**
2182
+ * Show a supplemental notification dot beside the trigger label.
2183
+ * @default false
2184
+ */
2185
+ "dot": boolean;
2064
2186
  /**
2065
2187
  * Show invalid visual state.
2066
2188
  * @default false
@@ -2070,6 +2192,10 @@ export namespace Components {
2070
2192
  * Error text rendered below the trigger when error is true.
2071
2193
  */
2072
2194
  "errorMessage": string | undefined;
2195
+ /**
2196
+ * Optional text action shown in the popup footer instead of the clear action.
2197
+ */
2198
+ "footerActionLabel": string | undefined;
2073
2199
  /**
2074
2200
  * Show the surface-aware inset border, including focused and invalid strokes.
2075
2201
  * @default true
@@ -2127,6 +2253,11 @@ export namespace Components {
2127
2253
  * @default 'Select'
2128
2254
  */
2129
2255
  "placeholder": string;
2256
+ /**
2257
+ * Align the popup's choice edge to the trigger start or end edge.
2258
+ * @default 'start'
2259
+ */
2260
+ "popupAlign": SelectPopupAlign;
2130
2261
  /**
2131
2262
  * Require one valid selected value.
2132
2263
  * @default false
@@ -2163,6 +2294,15 @@ export namespace Components {
2163
2294
  * @default 'md'
2164
2295
  */
2165
2296
  "size": SelectSize;
2297
+ /**
2298
+ * Optional scalar-mode trigger text that does not change the selected option label.
2299
+ */
2300
+ "triggerLabel": string | undefined;
2301
+ /**
2302
+ * Present triggerLabel with placeholder emphasis while preserving the selected value.
2303
+ * @default false
2304
+ */
2305
+ "triggerLabelPlaceholder": boolean;
2166
2306
  /**
2167
2307
  * Selected scalar or array value according to `multiple`.
2168
2308
  * @default ''
@@ -3077,6 +3217,10 @@ export interface DsConversationListItemCustomEvent<T> extends CustomEvent<T> {
3077
3217
  detail: T;
3078
3218
  target: HTMLDsConversationListItemElement;
3079
3219
  }
3220
+ export interface DsFilterMenuCustomEvent<T> extends CustomEvent<T> {
3221
+ detail: T;
3222
+ target: HTMLDsFilterMenuElement;
3223
+ }
3080
3224
  export interface DsInputCustomEvent<T> extends CustomEvent<T> {
3081
3225
  detail: T;
3082
3226
  target: HTMLDsInputElement;
@@ -3583,6 +3727,28 @@ declare global {
3583
3727
  prototype: HTMLDsFieldElement;
3584
3728
  new (): HTMLDsFieldElement;
3585
3729
  };
3730
+ interface HTMLDsFilterMenuElementEventMap {
3731
+ "dsChange": FilterMenuChangeDetail;
3732
+ "dsClear": void;
3733
+ "dsActiveFilterChange": string;
3734
+ "dsClose": void;
3735
+ "dsOpenChange": boolean;
3736
+ "dsAfterClose": void;
3737
+ }
3738
+ interface HTMLDsFilterMenuElement extends Components.DsFilterMenu, HTMLStencilElement {
3739
+ addEventListener<K extends keyof HTMLDsFilterMenuElementEventMap>(type: K, listener: (this: HTMLDsFilterMenuElement, ev: DsFilterMenuCustomEvent<HTMLDsFilterMenuElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
3740
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3741
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3742
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3743
+ removeEventListener<K extends keyof HTMLDsFilterMenuElementEventMap>(type: K, listener: (this: HTMLDsFilterMenuElement, ev: DsFilterMenuCustomEvent<HTMLDsFilterMenuElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
3744
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3745
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3746
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3747
+ }
3748
+ var HTMLDsFilterMenuElement: {
3749
+ prototype: HTMLDsFilterMenuElement;
3750
+ new (): HTMLDsFilterMenuElement;
3751
+ };
3586
3752
  interface HTMLDsIconElement extends Components.DsIcon, HTMLStencilElement {
3587
3753
  }
3588
3754
  var HTMLDsIconElement: {
@@ -3942,6 +4108,8 @@ declare global {
3942
4108
  "dsChange": SelectValue;
3943
4109
  "dsClear": void;
3944
4110
  "dsOpenChange": boolean;
4111
+ "dsFooterAction": void;
4112
+ "dsOptionAction": SelectOptionActionDetail;
3945
4113
  }
3946
4114
  interface HTMLDsSelectElement extends Components.DsSelect, HTMLStencilElement {
3947
4115
  addEventListener<K extends keyof HTMLDsSelectElementEventMap>(type: K, listener: (this: HTMLDsSelectElement, ev: DsSelectCustomEvent<HTMLDsSelectElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
@@ -4231,6 +4399,7 @@ declare global {
4231
4399
  "ds-divider": HTMLDsDividerElement;
4232
4400
  "ds-empty-state": HTMLDsEmptyStateElement;
4233
4401
  "ds-field": HTMLDsFieldElement;
4402
+ "ds-filter-menu": HTMLDsFilterMenuElement;
4234
4403
  "ds-icon": HTMLDsIconElement;
4235
4404
  "ds-input": HTMLDsInputElement;
4236
4405
  "ds-loader": HTMLDsLoaderElement;
@@ -5378,6 +5547,143 @@ declare namespace LocalJSX {
5378
5547
  */
5379
5548
  "label": string;
5380
5549
  }
5550
+ interface DsFilterMenu {
5551
+ /**
5552
+ * Show selected interaction fill when one or more criteria are active.
5553
+ * @default false
5554
+ */
5555
+ "activeFill"?: boolean;
5556
+ /**
5557
+ * Controlled category shown in the option pane.
5558
+ */
5559
+ "activeFilterId"?: string | undefined;
5560
+ /**
5561
+ * Cross-axis alignment against the trigger.
5562
+ * @default 'end'
5563
+ */
5564
+ "align"?: AnchoredAlign;
5565
+ /**
5566
+ * Cross-axis offset — number in px or a TokoMo length.
5567
+ * @default 0
5568
+ */
5569
+ "alignOffset"?: number | string;
5570
+ /**
5571
+ * External trigger element to position against.
5572
+ */
5573
+ "anchor"?: HTMLElement | undefined;
5574
+ /**
5575
+ * ID of the external trigger element used for positioning and focus return.
5576
+ */
5577
+ "anchorId"?: string | undefined;
5578
+ /**
5579
+ * Direct accessible name for the internal select trigger.
5580
+ * @default null
5581
+ */
5582
+ "ariaLabel"?: string | null;
5583
+ /**
5584
+ * Accessible name for the category tab list.
5585
+ * @default 'Filter categories'
5586
+ */
5587
+ "categoriesLabel"?: string;
5588
+ /**
5589
+ * Footer action and date-clear accessible label.
5590
+ * @default 'Clear'
5591
+ */
5592
+ "clearLabel"?: string;
5593
+ /**
5594
+ * Product-owned filter categories and option definitions.
5595
+ * @default []
5596
+ */
5597
+ "filters"?: FilterMenuFilter[];
5598
+ /**
5599
+ * Show the surface-aware inset border around the select trigger.
5600
+ * @default true
5601
+ */
5602
+ "hasBorder"?: boolean;
5603
+ /**
5604
+ * Optional select trigger prefix icon name.
5605
+ * @default 'Filters'
5606
+ */
5607
+ "icon"?: string | undefined;
5608
+ /**
5609
+ * Show a visible focus ring on initial entry after keyboard activation.
5610
+ * @default false
5611
+ */
5612
+ "initialFocusVisible"?: boolean;
5613
+ /**
5614
+ * ID applied to the internal select trigger.
5615
+ */
5616
+ "inputId"?: string | undefined;
5617
+ /**
5618
+ * Accessible name for the non-modal filter dialog.
5619
+ * @default 'Filters'
5620
+ */
5621
+ "menuLabel"?: string;
5622
+ /**
5623
+ * Popup width. It remains clamped to the viewport by the component recipe.
5624
+ * @default TOKEN_CSS_LENGTHS.menuWidthLg
5625
+ */
5626
+ "menuWidth"?: string;
5627
+ /**
5628
+ * Requests a controlled active-category replacement.
5629
+ */
5630
+ "onDsActiveFilterChange"?: (event: DsFilterMenuCustomEvent<string>) => void;
5631
+ /**
5632
+ * Emitted after exit motion and rendered popup removal complete.
5633
+ */
5634
+ "onDsAfterClose"?: (event: DsFilterMenuCustomEvent<void>) => void;
5635
+ /**
5636
+ * Requests a controlled value replacement without closing the popup.
5637
+ */
5638
+ "onDsChange"?: (event: DsFilterMenuCustomEvent<FilterMenuChangeDetail>) => void;
5639
+ /**
5640
+ * Requests that the consumer clear every filter value.
5641
+ */
5642
+ "onDsClear"?: (event: DsFilterMenuCustomEvent<void>) => void;
5643
+ /**
5644
+ * Requests that the controlled popup close.
5645
+ */
5646
+ "onDsClose"?: (event: DsFilterMenuCustomEvent<void>) => void;
5647
+ /**
5648
+ * Emitted whenever internal select-trigger activation changes popup visibility.
5649
+ */
5650
+ "onDsOpenChange"?: (event: DsFilterMenuCustomEvent<boolean>) => void;
5651
+ /**
5652
+ * Controlled popup visibility.
5653
+ * @default false
5654
+ */
5655
+ "open"?: boolean;
5656
+ /**
5657
+ * Preferred popup side; collision handling may flip it.
5658
+ * @default 'bottom'
5659
+ */
5660
+ "side"?: AnchoredSide;
5661
+ /**
5662
+ * Gap between trigger and popup — number in px or a TokoMo length.
5663
+ * @default TOKEN_CSS_LENGTHS.space050
5664
+ */
5665
+ "sideOffset"?: number | string;
5666
+ /**
5667
+ * Select trigger density.
5668
+ * @default 'md'
5669
+ */
5670
+ "size"?: FilterMenuSize;
5671
+ /**
5672
+ * Select trigger text. The selected count is appended automatically.
5673
+ * @default 'Filters'
5674
+ */
5675
+ "triggerLabel"?: string;
5676
+ /**
5677
+ * Controlled values keyed by filter id.
5678
+ * @default {}
5679
+ */
5680
+ "values"?: FilterMenuValues;
5681
+ /**
5682
+ * Select trigger width fit.
5683
+ * @default 'hug'
5684
+ */
5685
+ "width"?: FilterMenuWidth;
5686
+ }
5381
5687
  interface DsIcon {
5382
5688
  /**
5383
5689
  * Semantic foreground color token, or a raw CSS var reference. `tertiary` and the still-fainter `quaternary` are restricted to icons inside genuinely inactive/disabled UI or to purely decorative icons; informative icons must retain sufficient contrast.
@@ -6361,6 +6667,11 @@ declare namespace LocalJSX {
6361
6667
  * @default false
6362
6668
  */
6363
6669
  "disabled"?: boolean;
6670
+ /**
6671
+ * Show a supplemental notification dot beside the trigger label.
6672
+ * @default false
6673
+ */
6674
+ "dot"?: boolean;
6364
6675
  /**
6365
6676
  * Show invalid visual state.
6366
6677
  * @default false
@@ -6370,6 +6681,10 @@ declare namespace LocalJSX {
6370
6681
  * Error text rendered below the trigger when error is true.
6371
6682
  */
6372
6683
  "errorMessage"?: string | undefined;
6684
+ /**
6685
+ * Optional text action shown in the popup footer instead of the clear action.
6686
+ */
6687
+ "footerActionLabel"?: string | undefined;
6373
6688
  /**
6374
6689
  * The `id` of a `<form>` element to associate this element with.
6375
6690
  */
@@ -6424,10 +6739,18 @@ declare namespace LocalJSX {
6424
6739
  * Emitted after the footer clear action.
6425
6740
  */
6426
6741
  "onDsClear"?: (event: DsSelectCustomEvent<void>) => void;
6742
+ /**
6743
+ * Emitted when the optional popup footer action is activated.
6744
+ */
6745
+ "onDsFooterAction"?: (event: DsSelectCustomEvent<void>) => void;
6427
6746
  /**
6428
6747
  * Emitted whenever popup visibility changes.
6429
6748
  */
6430
6749
  "onDsOpenChange"?: (event: DsSelectCustomEvent<boolean>) => void;
6750
+ /**
6751
+ * Emitted when an option's contextual ellipsis action is activated.
6752
+ */
6753
+ "onDsOptionAction"?: (event: DsSelectCustomEvent<SelectOptionActionDetail>) => void;
6431
6754
  /**
6432
6755
  * Controlled popup visibility.
6433
6756
  * @default false
@@ -6443,6 +6766,11 @@ declare namespace LocalJSX {
6443
6766
  * @default 'Select'
6444
6767
  */
6445
6768
  "placeholder"?: string;
6769
+ /**
6770
+ * Align the popup's choice edge to the trigger start or end edge.
6771
+ * @default 'start'
6772
+ */
6773
+ "popupAlign"?: SelectPopupAlign;
6446
6774
  /**
6447
6775
  * Require one valid selected value.
6448
6776
  * @default false
@@ -6478,6 +6806,15 @@ declare namespace LocalJSX {
6478
6806
  * @default 'md'
6479
6807
  */
6480
6808
  "size"?: SelectSize;
6809
+ /**
6810
+ * Optional scalar-mode trigger text that does not change the selected option label.
6811
+ */
6812
+ "triggerLabel"?: string | undefined;
6813
+ /**
6814
+ * Present triggerLabel with placeholder emphasis while preserving the selected value.
6815
+ * @default false
6816
+ */
6817
+ "triggerLabelPlaceholder"?: boolean;
6481
6818
  /**
6482
6819
  * Selected scalar or array value according to `multiple`.
6483
6820
  * @default ''
@@ -7641,6 +7978,28 @@ declare namespace LocalJSX {
7641
7978
  "error": boolean;
7642
7979
  "errorMessage": string | undefined;
7643
7980
  }
7981
+ interface DsFilterMenuAttributes {
7982
+ "open": boolean;
7983
+ "triggerLabel": string;
7984
+ "icon": string | undefined;
7985
+ "size": FilterMenuSize;
7986
+ "width": FilterMenuWidth;
7987
+ "hasBorder": boolean;
7988
+ "activeFill": boolean;
7989
+ "inputId": string | undefined;
7990
+ "ariaLabel": string | null;
7991
+ "activeFilterId": string | undefined;
7992
+ "anchorId": string | undefined;
7993
+ "side": AnchoredSide;
7994
+ "align": AnchoredAlign;
7995
+ "sideOffset": string;
7996
+ "alignOffset": string;
7997
+ "menuWidth": string;
7998
+ "menuLabel": string;
7999
+ "categoriesLabel": string;
8000
+ "clearLabel": string;
8001
+ "initialFocusVisible": boolean;
8002
+ }
7644
8003
  interface DsIconAttributes {
7645
8004
  "name": string;
7646
8005
  "size": IconSize;
@@ -7866,8 +8225,12 @@ declare namespace LocalJSX {
7866
8225
  "required": boolean;
7867
8226
  "requiredMessage": string;
7868
8227
  "placeholder": string;
8228
+ "triggerLabel": string | undefined;
8229
+ "triggerLabelPlaceholder": boolean;
8230
+ "dot": boolean;
7869
8231
  "size": SelectSize;
7870
8232
  "width": SelectWidth;
8233
+ "popupAlign": SelectPopupAlign;
7871
8234
  "isInactive": boolean;
7872
8235
  "isLoading": boolean;
7873
8236
  "activeFill": boolean;
@@ -7876,6 +8239,7 @@ declare namespace LocalJSX {
7876
8239
  "allowClear": boolean;
7877
8240
  "clearLabel": string;
7878
8241
  "selectedLabel": string;
8242
+ "footerActionLabel": string | undefined;
7879
8243
  "searchable": boolean;
7880
8244
  "searchPlaceholder": string;
7881
8245
  "noResultsText": string;
@@ -8107,6 +8471,7 @@ declare namespace LocalJSX {
8107
8471
  "ds-divider": Omit<DsDivider, keyof DsDividerAttributes> & { [K in keyof DsDivider & keyof DsDividerAttributes]?: DsDivider[K] } & { [K in keyof DsDivider & keyof DsDividerAttributes as `attr:${K}`]?: DsDividerAttributes[K] } & { [K in keyof DsDivider & keyof DsDividerAttributes as `prop:${K}`]?: DsDivider[K] };
8108
8472
  "ds-empty-state": Omit<DsEmptyState, keyof DsEmptyStateAttributes> & { [K in keyof DsEmptyState & keyof DsEmptyStateAttributes]?: DsEmptyState[K] } & { [K in keyof DsEmptyState & keyof DsEmptyStateAttributes as `attr:${K}`]?: DsEmptyStateAttributes[K] } & { [K in keyof DsEmptyState & keyof DsEmptyStateAttributes as `prop:${K}`]?: DsEmptyState[K] };
8109
8473
  "ds-field": Omit<DsField, keyof DsFieldAttributes> & { [K in keyof DsField & keyof DsFieldAttributes]?: DsField[K] } & { [K in keyof DsField & keyof DsFieldAttributes as `attr:${K}`]?: DsFieldAttributes[K] } & { [K in keyof DsField & keyof DsFieldAttributes as `prop:${K}`]?: DsField[K] } & OneOf<"label", DsField["label"], DsFieldAttributes["label"]>;
8474
+ "ds-filter-menu": Omit<DsFilterMenu, keyof DsFilterMenuAttributes> & { [K in keyof DsFilterMenu & keyof DsFilterMenuAttributes]?: DsFilterMenu[K] } & { [K in keyof DsFilterMenu & keyof DsFilterMenuAttributes as `attr:${K}`]?: DsFilterMenuAttributes[K] } & { [K in keyof DsFilterMenu & keyof DsFilterMenuAttributes as `prop:${K}`]?: DsFilterMenu[K] };
8110
8475
  "ds-icon": Omit<DsIcon, keyof DsIconAttributes> & { [K in keyof DsIcon & keyof DsIconAttributes]?: DsIcon[K] } & { [K in keyof DsIcon & keyof DsIconAttributes as `attr:${K}`]?: DsIconAttributes[K] } & { [K in keyof DsIcon & keyof DsIconAttributes as `prop:${K}`]?: DsIcon[K] };
8111
8476
  "ds-input": Omit<DsInput, keyof DsInputAttributes> & { [K in keyof DsInput & keyof DsInputAttributes]?: DsInput[K] } & { [K in keyof DsInput & keyof DsInputAttributes as `attr:${K}`]?: DsInputAttributes[K] } & { [K in keyof DsInput & keyof DsInputAttributes as `prop:${K}`]?: DsInput[K] };
8112
8477
  "ds-loader": Omit<DsLoader, keyof DsLoaderAttributes> & { [K in keyof DsLoader & keyof DsLoaderAttributes]?: DsLoader[K] } & { [K in keyof DsLoader & keyof DsLoaderAttributes as `attr:${K}`]?: DsLoaderAttributes[K] } & { [K in keyof DsLoader & keyof DsLoaderAttributes as `prop:${K}`]?: DsLoader[K] };
@@ -8196,6 +8561,7 @@ declare module "@stencil/core" {
8196
8561
  "ds-divider": LocalJSX.IntrinsicElements["ds-divider"] & JSXBase.HTMLAttributes<HTMLDsDividerElement>;
8197
8562
  "ds-empty-state": LocalJSX.IntrinsicElements["ds-empty-state"] & JSXBase.HTMLAttributes<HTMLDsEmptyStateElement>;
8198
8563
  "ds-field": LocalJSX.IntrinsicElements["ds-field"] & JSXBase.HTMLAttributes<HTMLDsFieldElement>;
8564
+ "ds-filter-menu": LocalJSX.IntrinsicElements["ds-filter-menu"] & JSXBase.HTMLAttributes<HTMLDsFilterMenuElement>;
8199
8565
  "ds-icon": LocalJSX.IntrinsicElements["ds-icon"] & JSXBase.HTMLAttributes<HTMLDsIconElement>;
8200
8566
  "ds-input": LocalJSX.IntrinsicElements["ds-input"] & JSXBase.HTMLAttributes<HTMLDsInputElement>;
8201
8567
  "ds-loader": LocalJSX.IntrinsicElements["ds-loader"] & JSXBase.HTMLAttributes<HTMLDsLoaderElement>;
@@ -20,9 +20,20 @@ interface ChoiceFooterProps {
20
20
  size?: ControlSize;
21
21
  clearLabel: string;
22
22
  summary?: string;
23
+ compactSummary?: string;
24
+ useCompactSummary?: boolean;
25
+ contentRef?: (element: HTMLDivElement | null) => void;
26
+ summaryMeasureRef?: (element: HTMLElement | null) => void;
27
+ clearRef?: (element: HTMLButtonElement | null) => void;
23
28
  onClear: (event: MouseEvent) => void;
24
29
  }
25
30
  export declare const ChoiceFooter: FunctionalComponent<ChoiceFooterProps>;
31
+ interface ChoiceActionFooterProps {
32
+ size?: ControlSize;
33
+ label: string;
34
+ onAction: (event: MouseEvent) => void;
35
+ }
36
+ export declare const ChoiceActionFooter: FunctionalComponent<ChoiceActionFooterProps>;
26
37
  interface ChoiceOptionRowProps {
27
38
  size?: ControlSize;
28
39
  id: string;
@@ -32,6 +43,12 @@ interface ChoiceOptionRowProps {
32
43
  focusRingVisible: boolean;
33
44
  usesSubtext: boolean;
34
45
  leading?: VNode;
46
+ action?: VNode;
47
+ actionOpen?: boolean;
48
+ popupRole?: 'listbox' | 'grid';
49
+ tabIndex?: number;
50
+ onFocus?: () => void;
51
+ onKeyDown?: (event: KeyboardEvent) => void;
35
52
  onHover: () => void;
36
53
  onSelect: () => void;
37
54
  }
@@ -5,6 +5,16 @@ export interface ChoiceOption {
5
5
  /** Rendered only when every option in the complete list supplies an icon. */
6
6
  icon?: string;
7
7
  isInactive?: boolean;
8
+ /** Optional contextual action shown at the trailing edge of this option. */
9
+ action?: ChoiceOptionAction;
10
+ }
11
+ export interface ChoiceOptionAction {
12
+ /** Accessible name for the fixed ellipsis action. */
13
+ label: string;
14
+ /** ID of the popup controlled by the action. */
15
+ controls?: string;
16
+ /** Keep the action visible and expose its controlled popup state. */
17
+ expanded?: boolean;
8
18
  }
9
19
  export interface ChoiceSection {
10
20
  header?: string;
@@ -11,6 +11,7 @@ export interface SelectControllerState<T extends ChoiceOption> {
11
11
  readonly isLoading: boolean;
12
12
  readonly isDisabled: boolean;
13
13
  readonly preferredIndex: number;
14
+ readonly popupAlign: 'start' | 'end';
14
15
  open: boolean;
15
16
  activeIndex: number;
16
17
  searchTerm: string;
@@ -46,6 +47,7 @@ export declare class SelectController<T extends ChoiceOption> {
46
47
  setFocus(): void;
47
48
  optionsChanged(): void;
48
49
  loadingChanged(): void;
50
+ positionChanged(): void;
49
51
  openChanged(open: boolean): void;
50
52
  searchChanged(): void;
51
53
  activeIndexChanged(): void;
@@ -21,6 +21,7 @@ export declare const TOKEN_DEFAULTS: {
21
21
  readonly panelWidthMd: "--dimension-panel-width-md";
22
22
  readonly panelWidthLg: "--dimension-panel-width-lg";
23
23
  readonly menuWidthXs: "--dimension-menu-width-xs";
24
+ readonly menuWidthLg: "--dimension-menu-width-lg";
24
25
  readonly lineheightLg: "--typography-lineheight-lg";
25
26
  readonly lineheightMd: "--typography-lineheight-md";
26
27
  readonly lineheightSm: "--typography-lineheight-sm";
@@ -50,5 +51,6 @@ export declare const TOKEN_CSS_LENGTHS: {
50
51
  readonly space050: "var(--dimension-space-050)";
51
52
  readonly space200: "var(--dimension-space-200)";
52
53
  readonly menuWidthXs: "var(--dimension-menu-width-xs)";
54
+ readonly menuWidthLg: "var(--dimension-menu-width-lg)";
53
55
  };
54
56
  //# sourceMappingURL=token-defaults.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ds-mo/ui",
3
- "version": "13.17.0",
3
+ "version": "13.18.0",
4
4
  "description": "CompoMo — composable web components styled with TokoMo design tokens",
5
5
  "keywords": [
6
6
  "web-components",
@@ -141,6 +141,7 @@
141
141
  "@ds-mo/icons": "^6.6.0",
142
142
  "@ds-mo/tokens": "^6.2.1",
143
143
  "@eslint/js": "^10.0.1",
144
+ "@fontsource-variable/inter": "^5.3.0",
144
145
  "@fontsource/fira-code": "^5.3.0",
145
146
  "@modelcontextprotocol/client": "^2.0.0",
146
147
  "@modelcontextprotocol/server": "^2.0.0",
@@ -1,2 +0,0 @@
1
- import{p as o,H as t,h as s,a as i,t as r}from"./index.js";import{d as e}from"./p-Dhx_3_tf.js";import{T as c,r as a}from"./p-CXduurfd.js";import{C as n,a as d}from"./p-CuwopElg.js";const l=()=>`.ds-control--lg.sc-ds-tooltip-chart,.ds-control--lg.sc-ds-tooltip-chart-h,.ds-control--md.sc-ds-tooltip-chart-h,.ds-control--md.sc-ds-tooltip-chart,.ds-control--sm.sc-ds-tooltip-chart-h,.ds-control--sm.sc-ds-tooltip-chart,.ds-control--xs.sc-ds-tooltip-chart-h,.ds-control--xs.sc-ds-tooltip-chart{--ds-control-radius:var(--dimension-radius-025)}.ds-control--lg.sc-ds-tooltip-chart-h,.ds-control--lg.sc-ds-tooltip-chart{--ds-control-height:var(--dimension-size-500);--ds-control-icon:var(--dimension-iconography-lg);--ds-control-padding-inline:var(--dimension-space-100);--ds-control-label-inset:var(--dimension-space-050);--ds-control-gap:var(--dimension-space-050)}.ds-control--md.sc-ds-tooltip-chart-h,.ds-control--md.sc-ds-tooltip-chart{--ds-control-height:var(--dimension-size-400);--ds-control-icon:var(--dimension-iconography-md);--ds-control-padding-inline:var(--dimension-space-075);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-050)}.ds-control--sm.sc-ds-tooltip-chart-h,.ds-control--sm.sc-ds-tooltip-chart{--ds-control-height:var(--dimension-size-300);--ds-control-icon:var(--dimension-iconography-sm);--ds-control-padding-inline:var(--dimension-space-050);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-025)}.ds-control--xs.sc-ds-tooltip-chart-h,.ds-control--xs.sc-ds-tooltip-chart{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0}.ds-control-frame.sc-ds-tooltip-chart{display:inline-flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:var(--ds-control-padding-inline, var(--dimension-space-075));gap:var(--ds-control-gap, var(--dimension-space-050));border-radius:var(--ds-control-radius, var(--dimension-radius-025))}.ds-control-section-heading.sc-ds-tooltip-chart{display:flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:calc( var(--ds-control-padding-inline, var(--dimension-space-075)) + var(--ds-control-label-inset, var(--dimension-space-025)) )}.ds-control-icon-box.sc-ds-tooltip-chart{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md))}.ds-control-label-box.sc-ds-tooltip-chart{min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025))}.ds-chrome-space--sm.sc-ds-tooltip-chart-h,.ds-chrome-space--sm.sc-ds-tooltip-chart{--ds-chrome-padding:var(--dimension-space-050);--ds-chrome-gap:var(--dimension-space-050)}.ds-chrome-space--md.sc-ds-tooltip-chart-h,.ds-chrome-space--md.sc-ds-tooltip-chart{--ds-chrome-padding:var(--dimension-space-100);--ds-chrome-gap:var(--dimension-space-100)}.ds-chrome-space--lg.sc-ds-tooltip-chart-h,.ds-chrome-space--lg.sc-ds-tooltip-chart{--ds-chrome-padding:var(--dimension-space-200);--ds-chrome-gap:var(--dimension-space-200)}.ds-chrome-row.sc-ds-tooltip-chart-h,.ds-chrome-row.sc-ds-tooltip-chart,.ds-chrome-column.sc-ds-tooltip-chart-h,.ds-chrome-column.sc-ds-tooltip-chart,.ds-chrome-grid.sc-ds-tooltip-chart-h,.ds-chrome-grid.sc-ds-tooltip-chart{display:flex;box-sizing:border-box;gap:var(--ds-chrome-gap, var(--dimension-space-100));padding:var(--ds-chrome-padding, var(--dimension-space-100))}.ds-chrome-row.sc-ds-tooltip-chart-h,.ds-chrome-row.sc-ds-tooltip-chart{flex-direction:row;align-items:center}.ds-chrome-column.sc-ds-tooltip-chart-h,.ds-chrome-column.sc-ds-tooltip-chart{flex-direction:column}.ds-chrome-grid.sc-ds-tooltip-chart-h,.ds-chrome-grid.sc-ds-tooltip-chart{display:grid;align-items:center}@media (forced-colors: active){.sc-ds-tooltip-chart:root,.sc-ds-tooltip-chart-h,.ds-forced-colors-scope.sc-ds-tooltip-chart{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.sc-ds-tooltip-chart-h{position:absolute;z-index:var(--dimension-z-index-tooltip);background-color:var(--color-translucent-translucent);backdrop-filter:blur(var(--effect-blur-md));-webkit-backdrop-filter:blur(var(--effect-blur-md));border-radius:var(--dimension-radius-075);box-shadow:var(--effect-elevation-elevated-floating);white-space:nowrap;pointer-events:none;opacity:0}.tooltip-chart--visible.sc-ds-tooltip-chart-h{animation:tooltip-chart-fade-in var(--effect-motion-short-2) forwards}.tooltip-chart__item.sc-ds-tooltip-chart{width:100%;border-radius:var(--ds-control-radius, var(--dimension-radius-025))}.tooltip-chart__items.sc-ds-tooltip-chart{display:contents}.tooltip-chart__swatch-box.sc-ds-tooltip-chart{pointer-events:none}.tooltip-chart__swatch.sc-ds-tooltip-chart{width:var(--dimension-size-100);height:var(--dimension-size-100);flex:none;border-radius:var(--dimension-radius-half);background:var(--ds-tooltip-chart-swatch)}.tooltip-chart__value.sc-ds-tooltip-chart{margin-inline-start:auto;text-align:end}.tooltip-chart__label.sc-ds-tooltip-chart,.tooltip-chart__value.sc-ds-tooltip-chart{flex:none}@keyframes tooltip-chart-fade-in{from{opacity:0}to{opacity:1}}@media (prefers-reduced-motion: reduce){.tooltip-chart--visible.sc-ds-tooltip-chart-h{animation:none;opacity:1}}@media (forced-colors: active){.sc-ds-tooltip-chart-h{box-shadow:none;outline:var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);outline-offset:calc(-1 * var(--dimension-stroke-width-012))}}`;const h=12;const p=8;const m=o(class o extends t{constructor(o){super();if(o!==false){this.__registerHost()}this.value="";this.label="";this.x=0;this.y=0;this.delay=c.animationDelayInstant;this.side="right";this.align="bottom";this.visible=false;this.delayTimer=null}componentDidLoad(){this.scheduleShow();this.calculatePlacement()}disconnectedCallback(){this.clearDelayTimer()}onAnchorChange(){requestAnimationFrame((()=>this.calculatePlacement()))}onDelayChange(){if(!this.visible)this.scheduleShow()}get showDelayMs(){return a(this.delay,c.animationDelayInstant)}clearDelayTimer(){if(this.delayTimer){clearTimeout(this.delayTimer);this.delayTimer=null}}scheduleShow(){this.clearDelayTimer();this.visible=false;const o=this.showDelayMs;if(o<=0){this.visible=true;return}this.delayTimer=setTimeout((()=>{this.delayTimer=null;this.visible=true;requestAnimationFrame((()=>this.calculatePlacement()))}),o)}calculatePlacement(){const o=this.el.getBoundingClientRect();if(!o.width||!o.height)return;const t=o.right>window.innerWidth-p?"left":"right";const s=o.bottom>window.innerHeight-p?"top":"bottom";if(t!==this.side)this.side=t;if(s!==this.align)this.align=s}render(){const o=this.side==="right"?`${h}px`:`calc(-100% - ${h}px)`;const t=this.align==="bottom"?`${h}px`:`calc(-100% - ${h}px)`;const r=this.items??[{label:this.label,value:this.value}];const e=r.some((o=>Boolean(o.color)));return s(i,{key:"61f006cddc134d6ff8b2b899483bacd3de8f82c1",class:{"tooltip-chart":true,"tooltip-chart--visible":this.visible,"ds-chrome-column":true,"ds-chrome-space--sm":true},style:{left:`${this.x}px`,top:`${this.y}px`,transform:`translate(${o}, ${t})`}},this.heading&&s("ds-text",{key:"eb622d67c7a577f3e34df44140dd37a77145c6ae",class:"tooltip-chart__heading ds-control-section-heading ds-control--md",as:"span",variant:d.md,emphasis:true,color:"var(--color-foreground-primary)"},this.heading),s("div",{key:"c4448830cd43bdc77fe6c87da9b0fa83f988f9f1",class:"tooltip-chart__items"},r.map(((o,t)=>s("div",{class:"tooltip-chart__item ds-control-frame ds-control--md",key:`${o.label}-${t}`},e&&s("span",{class:"tooltip-chart__swatch-box ds-control-icon-box","aria-hidden":"true"},o.color&&s("span",{class:"tooltip-chart__swatch",style:{"--ds-tooltip-chart-swatch":o.color}})),s("ds-text",{class:"tooltip-chart__label ds-control-label-box",as:"span",variant:n.md,color:"var(--color-foreground-secondary)"},o.label),s("ds-text",{class:"tooltip-chart__value ds-control-label-box",as:"span",variant:n.md,emphasis:true,color:"var(--color-foreground-primary)"},o.value))))))}get el(){return this}static get watchers(){return{x:[{onAnchorChange:0}],y:[{onAnchorChange:0}],delay:[{onDelayChange:0}]}}static get style(){return l()}},[2,"ds-tooltip-chart",{value:[8],label:[1],heading:[1],items:[16],x:[2],y:[2],delay:[8],side:[32],align:[32],visible:[32]},undefined,{x:[{onAnchorChange:0}],y:[{onAnchorChange:0}],delay:[{onDelayChange:0}]}]);function g(){if(typeof customElements==="undefined"){return}const o=["ds-tooltip-chart","ds-text"];o.forEach((o=>{switch(o){case"ds-tooltip-chart":if(!customElements.get(r(o))){customElements.define(r(o),m)}break;case"ds-text":if(!customElements.get(r(o))){e()}break}}))}g();export{m as T,g as d};
2
- //# sourceMappingURL=p-B2SoinWf.js.map