@ds-mo/ui 13.18.0 → 14.0.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 (218) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +2 -2
  3. package/dist/agent.json +137 -17
  4. package/dist/angular/ds-bar-action.d.ts +18 -0
  5. package/dist/angular/ds-bar-action.js +42 -0
  6. package/dist/angular/ds-table.d.ts +1 -4
  7. package/dist/angular/ds-table.js +2 -5
  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-avatar.js +1 -1
  19. package/dist/components/ds-banner.js +1 -1
  20. package/dist/components/ds-bar-action.d.ts +11 -0
  21. package/dist/components/ds-bar-action.js +2 -0
  22. package/dist/components/ds-bar-action.js.map +1 -0
  23. package/dist/components/ds-bar-nav.js +1 -1
  24. package/dist/components/ds-bar-title.js +1 -1
  25. package/dist/components/ds-bar-workflow.js +1 -1
  26. package/dist/components/ds-bar-workflow.js.map +1 -1
  27. package/dist/components/ds-button-filled.js +1 -1
  28. package/dist/components/ds-button-unfilled.js +1 -1
  29. package/dist/components/ds-card-chart.js +1 -1
  30. package/dist/components/ds-card-overview.js +1 -1
  31. package/dist/components/ds-card-setting.js +1 -1
  32. package/dist/components/ds-chip.js +1 -1
  33. package/dist/components/ds-code-block.js +1 -1
  34. package/dist/components/ds-conversation-list-item.js +1 -1
  35. package/dist/components/ds-conversation-list-item.js.map +1 -1
  36. package/dist/components/ds-conversation-list-section.js +1 -1
  37. package/dist/components/ds-empty-state.js +1 -1
  38. package/dist/components/ds-field.js +1 -1
  39. package/dist/components/ds-filter-menu.js +1 -1
  40. package/dist/components/ds-filter-menu.js.map +1 -1
  41. package/dist/components/ds-icon.js +1 -1
  42. package/dist/components/ds-input.js +1 -1
  43. package/dist/components/ds-markdown.js +1 -1
  44. package/dist/components/ds-menu.js +1 -1
  45. package/dist/components/ds-message-actions.js +1 -1
  46. package/dist/components/ds-message-composer.js +1 -1
  47. package/dist/components/ds-message-scroller.js +1 -1
  48. package/dist/components/ds-message.js +1 -1
  49. package/dist/components/ds-mobile-bar-nav.js +1 -1
  50. package/dist/components/ds-mobile-header.js +1 -1
  51. package/dist/components/ds-mobile-section-switcher.js +1 -1
  52. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  53. package/dist/components/ds-modal.js +1 -1
  54. package/dist/components/ds-panel-nav.js +1 -1
  55. package/dist/components/ds-panel-tool-header.js +1 -1
  56. package/dist/components/ds-panel-tool-search.js +1 -1
  57. package/dist/components/ds-panel-tools.js +1 -1
  58. package/dist/components/ds-select.js +1 -1
  59. package/dist/components/ds-select.js.map +1 -1
  60. package/dist/components/ds-shell-app.js +1 -1
  61. package/dist/components/ds-shell-app.js.map +1 -1
  62. package/dist/components/ds-shell-page.js +1 -1
  63. package/dist/components/ds-shell-tools.js +1 -1
  64. package/dist/components/ds-swatch-picker.js +1 -1
  65. package/dist/components/ds-tab-group.js +1 -1
  66. package/dist/components/ds-table.js +1 -1
  67. package/dist/components/ds-table.js.map +1 -1
  68. package/dist/components/ds-tag.js +1 -1
  69. package/dist/components/ds-toast.js +1 -1
  70. package/dist/components/ds-typing-indicator.js +1 -1
  71. package/dist/components/{p-BxQlH4gl.js → p--z-DWRkg.js} +2 -2
  72. package/dist/components/p--z-DWRkg.js.map +1 -0
  73. package/dist/components/{p-DtvJTPds.js → p-1KtrhAC7.js} +2 -2
  74. package/dist/components/p-1KtrhAC7.js.map +1 -0
  75. package/dist/components/{p-BqFKxWVl.js → p-B7Hf86NF.js} +2 -2
  76. package/dist/components/{p-BCfgU8Fh.js → p-BDCrM8-1.js} +2 -2
  77. package/dist/components/p-BFfLvMZd.js +2 -0
  78. package/dist/components/p-BFfLvMZd.js.map +1 -0
  79. package/dist/components/p-BKsWDUnX.js +2 -0
  80. package/dist/components/p-BKsWDUnX.js.map +1 -0
  81. package/dist/components/{p-BOjGzd5N.js → p-BagXfn1G.js} +2 -2
  82. package/dist/components/{p-DeBto13S.js → p-Bf_D3crn.js} +2 -2
  83. package/dist/components/{p-CUQTEeLp.js → p-CElfUmMp.js} +2 -2
  84. package/dist/components/{p-BMq4DJWh.js → p-CIhETsHv.js} +2 -2
  85. package/dist/components/{p-5uI3i2vg.js → p-CQS5aWiC.js} +2 -2
  86. package/dist/components/{p-oyZjjoYV.js → p-CUeuemsF.js} +2 -2
  87. package/dist/components/{p-BQkZ8FIl.js → p-Cae9PFPE.js} +2 -2
  88. package/dist/components/{p-C_tqXl5P.js → p-Cih1XCy3.js} +2 -2
  89. package/dist/components/{p-N4m0evkj.js → p-CoTD4Mmb.js} +2 -2
  90. package/dist/components/{p-C7ywYAzN.js → p-D-kWb8cF.js} +2 -2
  91. package/dist/components/{p-BtY2nJW4.js → p-D0i_J2rj.js} +2 -2
  92. package/dist/components/{p-Qzh-wyTg.js → p-DLkNcCY0.js} +2 -2
  93. package/dist/components/p-DXHq_AfZ.js +2 -0
  94. package/dist/components/{p-CP2W8qxB.js.map → p-DXHq_AfZ.js.map} +1 -1
  95. package/dist/components/{p-Xr9OO-Ao.js → p-DXgSSxyB.js} +2 -2
  96. package/dist/components/{p-CswBI711.js → p-DY_sA9Jz.js} +2 -2
  97. package/dist/components/{p-BDsAON4I.js → p-DatlGTJp.js} +2 -2
  98. package/dist/components/{p-NzOcZg8r.js → p-DcPVSNDr.js} +2 -2
  99. package/dist/components/{p-CB8iBV_M.js → p-DofS_hVZ.js} +2 -2
  100. package/dist/components/p-DofS_hVZ.js.map +1 -0
  101. package/dist/components/{p-smzwm_EW.js → p-S9IjLCGj.js} +2 -2
  102. package/dist/components/{p-C8keZ4k6.js → p-ZtJM0cZm.js} +2 -2
  103. package/dist/components/{p-NuRg_IoA.js → p-nMkoXLC0.js} +2 -2
  104. package/dist/docs/components.json +170 -30
  105. package/dist/mcp-data/registry/agent-activity.json +2 -2
  106. package/dist/mcp-data/registry/agent-questionnaire.json +2 -2
  107. package/dist/mcp-data/registry/agent-response.json +2 -2
  108. package/dist/mcp-data/registry/agent-source-list.json +2 -2
  109. package/dist/mcp-data/registry/agent-tool-call.json +2 -2
  110. package/dist/mcp-data/registry/attachment-list.json +2 -2
  111. package/dist/mcp-data/registry/avatar.json +2 -2
  112. package/dist/mcp-data/registry/badge.json +2 -2
  113. package/dist/mcp-data/registry/banner.json +2 -2
  114. package/dist/mcp-data/registry/bar-action.json +237 -0
  115. package/dist/mcp-data/registry/bar-nav.json +2 -2
  116. package/dist/mcp-data/registry/bar-title.json +2 -2
  117. package/dist/mcp-data/registry/bar-workflow.json +2 -2
  118. package/dist/mcp-data/registry/breadcrumb.json +2 -2
  119. package/dist/mcp-data/registry/button-filled.json +2 -2
  120. package/dist/mcp-data/registry/button-unfilled.json +8 -8
  121. package/dist/mcp-data/registry/card-chart.json +2 -2
  122. package/dist/mcp-data/registry/card-overview.json +3 -3
  123. package/dist/mcp-data/registry/card-setting.json +2 -2
  124. package/dist/mcp-data/registry/chart-legend.json +2 -2
  125. package/dist/mcp-data/registry/chart.json +2 -2
  126. package/dist/mcp-data/registry/checkbox.json +2 -2
  127. package/dist/mcp-data/registry/chip.json +2 -2
  128. package/dist/mcp-data/registry/code-block.json +2 -2
  129. package/dist/mcp-data/registry/conversation-list-item.json +2 -2
  130. package/dist/mcp-data/registry/conversation-list-section.json +2 -2
  131. package/dist/mcp-data/registry/conversation-list.json +2 -2
  132. package/dist/mcp-data/registry/divider.json +2 -2
  133. package/dist/mcp-data/registry/empty-state.json +2 -2
  134. package/dist/mcp-data/registry/field.json +2 -2
  135. package/dist/mcp-data/registry/filter-menu.json +5 -4
  136. package/dist/mcp-data/registry/icon.json +3 -3
  137. package/dist/mcp-data/registry/input.json +2 -2
  138. package/dist/mcp-data/registry/loader.json +2 -2
  139. package/dist/mcp-data/registry/markdown.json +2 -2
  140. package/dist/mcp-data/registry/menu.json +3 -3
  141. package/dist/mcp-data/registry/message-actions.json +2 -2
  142. package/dist/mcp-data/registry/message-bubble.json +2 -2
  143. package/dist/mcp-data/registry/message-composer.json +2 -2
  144. package/dist/mcp-data/registry/message-scroller.json +2 -2
  145. package/dist/mcp-data/registry/message.json +2 -2
  146. package/dist/mcp-data/registry/mobile-bar-nav.json +2 -2
  147. package/dist/mcp-data/registry/mobile-header.json +2 -2
  148. package/dist/mcp-data/registry/mobile-section-switcher.json +2 -2
  149. package/dist/mcp-data/registry/mobile-sheet-nav.json +2 -2
  150. package/dist/mcp-data/registry/modal.json +2 -2
  151. package/dist/mcp-data/registry/panel-nav.json +2 -2
  152. package/dist/mcp-data/registry/panel-sub-nav.json +2 -2
  153. package/dist/mcp-data/registry/panel-tool-header.json +3 -3
  154. package/dist/mcp-data/registry/panel-tool-search.json +2 -2
  155. package/dist/mcp-data/registry/panel-tools.json +2 -2
  156. package/dist/mcp-data/registry/radio.json +2 -2
  157. package/dist/mcp-data/registry/registry.json +141 -18
  158. package/dist/mcp-data/registry/scroll-overlay.json +3 -3
  159. package/dist/mcp-data/registry/select.json +4 -3
  160. package/dist/mcp-data/registry/shell-app.json +3 -3
  161. package/dist/mcp-data/registry/shell-page.json +2 -2
  162. package/dist/mcp-data/registry/shell-tools.json +3 -3
  163. package/dist/mcp-data/registry/skeleton.json +2 -2
  164. package/dist/mcp-data/registry/slider.json +2 -2
  165. package/dist/mcp-data/registry/swatch-picker.json +2 -2
  166. package/dist/mcp-data/registry/switch.json +2 -2
  167. package/dist/mcp-data/registry/tab-group.json +2 -2
  168. package/dist/mcp-data/registry/table.json +16 -29
  169. package/dist/mcp-data/registry/tag.json +2 -2
  170. package/dist/mcp-data/registry/text.json +2 -2
  171. package/dist/mcp-data/registry/toast.json +2 -2
  172. package/dist/mcp-data/registry/tooltip-chart.json +2 -2
  173. package/dist/mcp-data/registry/tooltip.json +2 -2
  174. package/dist/mcp-data/registry/typing-indicator.json +2 -2
  175. package/dist/react/components.d.ts +1 -0
  176. package/dist/react/components.js +1 -0
  177. package/dist/react/ds-bar-action.d.ts +12 -0
  178. package/dist/react/ds-bar-action.js +12 -0
  179. package/dist/react/ds-table.d.ts +1 -2
  180. package/dist/react/ds-table.js +0 -1
  181. package/dist/styles/table.css +16 -4
  182. package/dist/types/components/BarAction/BarAction.d.ts +25 -0
  183. package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +2 -2
  184. package/dist/types/components/Table/Table.d.ts +2 -3
  185. package/dist/types/components/Table/index.d.ts +1 -1
  186. package/dist/types/components/Table/table-model.d.ts +1 -2
  187. package/dist/types/components/Table/table-types.d.ts +1 -4
  188. package/dist/types/components.d.ts +84 -8
  189. package/package.json +5 -5
  190. package/dist/components/p-BxQlH4gl.js.map +0 -1
  191. package/dist/components/p-C8U5BsJf.js +0 -2
  192. package/dist/components/p-C8U5BsJf.js.map +0 -1
  193. package/dist/components/p-CB8iBV_M.js.map +0 -1
  194. package/dist/components/p-CP2W8qxB.js +0 -2
  195. package/dist/components/p-Csq6XDgm.js +0 -2
  196. package/dist/components/p-Csq6XDgm.js.map +0 -1
  197. package/dist/components/p-DtvJTPds.js.map +0 -1
  198. /package/dist/components/{p-BqFKxWVl.js.map → p-B7Hf86NF.js.map} +0 -0
  199. /package/dist/components/{p-BCfgU8Fh.js.map → p-BDCrM8-1.js.map} +0 -0
  200. /package/dist/components/{p-BOjGzd5N.js.map → p-BagXfn1G.js.map} +0 -0
  201. /package/dist/components/{p-DeBto13S.js.map → p-Bf_D3crn.js.map} +0 -0
  202. /package/dist/components/{p-CUQTEeLp.js.map → p-CElfUmMp.js.map} +0 -0
  203. /package/dist/components/{p-BMq4DJWh.js.map → p-CIhETsHv.js.map} +0 -0
  204. /package/dist/components/{p-5uI3i2vg.js.map → p-CQS5aWiC.js.map} +0 -0
  205. /package/dist/components/{p-oyZjjoYV.js.map → p-CUeuemsF.js.map} +0 -0
  206. /package/dist/components/{p-BQkZ8FIl.js.map → p-Cae9PFPE.js.map} +0 -0
  207. /package/dist/components/{p-C_tqXl5P.js.map → p-Cih1XCy3.js.map} +0 -0
  208. /package/dist/components/{p-N4m0evkj.js.map → p-CoTD4Mmb.js.map} +0 -0
  209. /package/dist/components/{p-C7ywYAzN.js.map → p-D-kWb8cF.js.map} +0 -0
  210. /package/dist/components/{p-BtY2nJW4.js.map → p-D0i_J2rj.js.map} +0 -0
  211. /package/dist/components/{p-Qzh-wyTg.js.map → p-DLkNcCY0.js.map} +0 -0
  212. /package/dist/components/{p-Xr9OO-Ao.js.map → p-DXgSSxyB.js.map} +0 -0
  213. /package/dist/components/{p-CswBI711.js.map → p-DY_sA9Jz.js.map} +0 -0
  214. /package/dist/components/{p-BDsAON4I.js.map → p-DatlGTJp.js.map} +0 -0
  215. /package/dist/components/{p-NzOcZg8r.js.map → p-DcPVSNDr.js.map} +0 -0
  216. /package/dist/components/{p-smzwm_EW.js.map → p-S9IjLCGj.js.map} +0 -0
  217. /package/dist/components/{p-C8keZ4k6.js.map → p-ZtJM0cZm.js.map} +0 -0
  218. /package/dist/components/{p-NuRg_IoA.js.map → p-nMkoXLC0.js.map} +0 -0
@@ -277,8 +277,8 @@
277
277
  },
278
278
  "peerDependencies": {
279
279
  "required": [
280
- "@ds-mo/tokens ^6.2.1",
281
- "@ds-mo/icons ^6.6.0"
280
+ "@ds-mo/tokens ^6.2.2",
281
+ "@ds-mo/icons ^7.0.0"
282
282
  ],
283
283
  "frameworks": "Custom Elements; React 18/19 wrappers; Angular 19-22 standalone adapters."
284
284
  }
@@ -98,8 +98,8 @@
98
98
  },
99
99
  "peerDependencies": {
100
100
  "required": [
101
- "@ds-mo/tokens ^6.2.1",
102
- "@ds-mo/icons ^6.6.0"
101
+ "@ds-mo/tokens ^6.2.2",
102
+ "@ds-mo/icons ^7.0.0"
103
103
  ],
104
104
  "frameworks": "Custom Elements; React 18/19 wrappers; Angular 19-22 standalone adapters."
105
105
  }
@@ -11,6 +11,7 @@ export { DsAttachmentList } from "./ds-attachment-list.js";
11
11
  export { DsAvatar } from "./ds-avatar.js";
12
12
  export { DsBadge } from "./ds-badge.js";
13
13
  export { DsBanner } from "./ds-banner.js";
14
+ export { DsBarAction } from "./ds-bar-action.js";
14
15
  export { DsBarNav } from "./ds-bar-nav.js";
15
16
  export { DsBarTitle } from "./ds-bar-title.js";
16
17
  export { DsBarWorkflow } from "./ds-bar-workflow.js";
@@ -12,6 +12,7 @@ export { DsAttachmentList } from "./ds-attachment-list.js";
12
12
  export { DsAvatar } from "./ds-avatar.js";
13
13
  export { DsBadge } from "./ds-badge.js";
14
14
  export { DsBanner } from "./ds-banner.js";
15
+ export { DsBarAction } from "./ds-bar-action.js";
15
16
  export { DsBarNav } from "./ds-bar-nav.js";
16
17
  export { DsBarTitle } from "./ds-bar-title.js";
17
18
  export { DsBarWorkflow } from "./ds-bar-workflow.js";
@@ -0,0 +1,12 @@
1
+ /**
2
+ * This file was automatically generated by the Stencil React Output Target.
3
+ * Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
4
+ */
5
+ import type { EventName, StencilReactComponent } from './react-runtime.js';
6
+ import { type DsBarActionCustomEvent } from "@ds-mo/ui";
7
+ import type { Components } from "@ds-mo/ui/dist/components";
8
+ import { DsBarAction as DsBarActionElement } from "@ds-mo/ui/dist/components/ds-bar-action.js";
9
+ export type DsBarActionEvents = {
10
+ onDsClear: EventName<DsBarActionCustomEvent<MouseEvent>>;
11
+ };
12
+ export declare const DsBarAction: StencilReactComponent<DsBarActionElement, DsBarActionEvents, Components.DsBarAction>;
@@ -0,0 +1,12 @@
1
+ 'use client';
2
+ import { createComponent } from './react-runtime.js';
3
+ import React from 'react';
4
+ import { DsBarAction as DsBarActionElement, defineCustomElement as defineDsBarAction } from "@ds-mo/ui/dist/components/ds-bar-action.js";
5
+ export const DsBarAction = /*@__PURE__*/ createComponent({
6
+ tagName: 'ds-bar-action',
7
+ elementClass: DsBarActionElement,
8
+ // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
9
+ react: React,
10
+ events: { onDsClear: 'dsClear' },
11
+ defineCustomElement: defineDsBarAction
12
+ });
@@ -3,12 +3,11 @@
3
3
  * Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
4
4
  */
5
5
  import type { EventName, StencilReactComponent } from './react-runtime.js';
6
- import { type DsTableCustomEvent, type TableCellActionDetail, type TableGroupCollapseChangeDetail, type TableGroupingChangeDetail, type TableLoadMoreDetail, type TableRowActivateDetail, type TableSelectionChangeDetail, type TableSortChangeDetail } from "@ds-mo/ui";
6
+ import { type DsTableCustomEvent, type TableCellActionDetail, type TableGroupCollapseChangeDetail, type TableLoadMoreDetail, type TableRowActivateDetail, type TableSelectionChangeDetail, type TableSortChangeDetail } from "@ds-mo/ui";
7
7
  import type { Components } from "@ds-mo/ui/dist/components";
8
8
  import { DsTable as DsTableElement } from "@ds-mo/ui/dist/components/ds-table.js";
9
9
  export type DsTableEvents = {
10
10
  onDsSortChange: EventName<DsTableCustomEvent<TableSortChangeDetail>>;
11
- onDsGroupingChange: EventName<DsTableCustomEvent<TableGroupingChangeDetail>>;
12
11
  onDsGroupCollapseChange: EventName<DsTableCustomEvent<TableGroupCollapseChangeDetail>>;
13
12
  onDsSelectionChange: EventName<DsTableCustomEvent<TableSelectionChangeDetail>>;
14
13
  onDsLoadMore: EventName<DsTableCustomEvent<TableLoadMoreDetail>>;
@@ -9,7 +9,6 @@ export const DsTable = /*@__PURE__*/ createComponent({
9
9
  react: React,
10
10
  events: {
11
11
  onDsSortChange: 'dsSortChange',
12
- onDsGroupingChange: 'dsGroupingChange',
13
12
  onDsGroupCollapseChange: 'dsGroupCollapseChange',
14
13
  onDsSelectionChange: 'dsSelectionChange',
15
14
  onDsLoadMore: 'dsLoadMore',
@@ -27,7 +27,7 @@
27
27
  --_table-row-selected: var(--ds-table-row-selected, var(--color-interaction-active-brand));
28
28
  --_table-border: var(--ds-table-border, var(--color-border-secondary));
29
29
  --_table-column-border: var(--ds-table-column-border, var(--color-border-tertiary));
30
- --_table-sticky-border: var(--ds-table-sticky-border, var(--color-border-secondary));
30
+ --_table-sticky-border: var(--ds-table-sticky-border, var(--color-border-tertiary));
31
31
  --_table-border-strong: var(--ds-table-border-strong, var(--color-border-secondary));
32
32
  --_table-radius: var(--ds-table-radius, var(--dimension-radius-000));
33
33
  --_table-header-min-block-size: var(
@@ -291,16 +291,28 @@
291
291
  padding: var(--ds-control-padding-inline, var(--dimension-space-075));
292
292
  }
293
293
 
294
+ :where(.ds-table__bar-status) {
295
+ display: flex;
296
+ flex: 0 1 auto;
297
+ align-items: center;
298
+ min-inline-size: 0;
299
+ padding-inline: var(--ds-control-label-inset, var(--dimension-space-025));
300
+ }
301
+
294
302
  :where(.ds-table__bar-copy > slot) {
295
303
  display: contents;
296
304
  }
297
305
 
298
- :where(.ds-table__bar-copy > slot)::slotted(*) {
306
+ :where(.ds-table__bar-copy > slot[name='footer'])::slotted(*) {
299
307
  flex: 1 1 auto;
300
308
  min-inline-size: 0;
301
309
  max-inline-size: 100%;
302
310
  }
303
311
 
312
+ :where(.ds-table__footer-summary) {
313
+ margin-inline-start: auto;
314
+ }
315
+
304
316
  :where(.ds-table__bar-text) {
305
317
  display: inline-flex;
306
318
  align-items: center;
@@ -314,7 +326,7 @@
314
326
  :where(.ds-table__footer) {
315
327
  border-end-start-radius: var(--_table-radius);
316
328
  border-end-end-radius: var(--_table-radius);
317
- border-block-start: var(--dimension-stroke-width-012) solid var(--_table-column-border);
329
+ border-block-start: var(--dimension-stroke-width-012) solid var(--_table-border);
318
330
  color: var(--color-foreground-secondary);
319
331
  }
320
332
 
@@ -529,7 +541,7 @@
529
541
  block-size: var(--_table-row-min-block-size);
530
542
  padding: var(--_table-cell-padding-block) var(--_table-cell-padding-inline);
531
543
  --ds-interaction-group-divider-width: var(--dimension-stroke-width-012);
532
- --ds-interaction-group-divider-color: var(--_table-border);
544
+ --ds-interaction-group-divider-color: var(--_table-column-border);
533
545
  border-block-end: 0;
534
546
  background-color: inherit;
535
547
  vertical-align: top;
@@ -0,0 +1,25 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ export declare class BarAction {
3
+ el: HTMLElement;
4
+ /** Number of selected items. The bar is hidden while this is below one. */
5
+ count: number;
6
+ /** Localized noun shown after the count. */
7
+ selectedLabel: string;
8
+ /** Visible Clear control label. */
9
+ clearLabel: string;
10
+ /** Accessible name for the selected-set action group. */
11
+ label: string;
12
+ /** Emitted when Clear is activated. The application owns the selected identities. */
13
+ dsClear: EventEmitter<MouseEvent>;
14
+ private hasActions;
15
+ private actionsObserver?;
16
+ componentWillLoad(): void;
17
+ componentDidLoad(): void;
18
+ disconnectedCallback(): void;
19
+ private get resolvedCount();
20
+ private get isVisible();
21
+ private updateActionsPresence;
22
+ private handleClear;
23
+ render(): any;
24
+ }
25
+ //# sourceMappingURL=BarAction.d.ts.map
@@ -60,8 +60,8 @@ export declare class ButtonUnfilled {
60
60
  controls: string | undefined;
61
61
  /**
62
62
  * Controlled disclosure or popup state forwarded to `aria-expanded`.
63
- * Popup triggers hold a pressed visual while open; ordinary disclosures
64
- * retain the normal resting appearance.
63
+ * Popup triggers hold only the pressed wash while open; their resting
64
+ * foreground is unchanged. Ordinary disclosures remain visually neutral.
65
65
  */
66
66
  expanded: boolean | undefined;
67
67
  haspopup: ButtonUnfilledPopup | undefined;
@@ -1,5 +1,5 @@
1
1
  import { EventEmitter } from '../../stencil-public-runtime';
2
- import type { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableGroup, TableGroupCollapseChangeDetail, TableGroupingChangeDetail, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from './table-types';
2
+ import type { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableGroup, TableGroupCollapseChangeDetail, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from './table-types';
3
3
  export declare class Table {
4
4
  el: HTMLElement;
5
5
  /** Stable column definitions. Assign through JavaScript. */
@@ -8,7 +8,7 @@ export declare class Table {
8
8
  rows: TableRow[];
9
9
  /** One level of application-owned grouped data. Assign through JavaScript. */
10
10
  groups: TableGroup[];
11
- /** Controlled grouping column and group-order direction. */
11
+ /** Controlled grouping column. Applications supply groups in their final fixed order. */
12
12
  grouping: TableGroupingState | null;
13
13
  /** Controlled member-row sort state. */
14
14
  sort: TableSortState | null;
@@ -69,7 +69,6 @@ export declare class Table {
69
69
  /** Supports {count} and {total} placeholders. */
70
70
  rowsLoadedLabel: string;
71
71
  dsSortChange: EventEmitter<TableSortChangeDetail>;
72
- dsGroupingChange: EventEmitter<TableGroupingChangeDetail>;
73
72
  dsGroupCollapseChange: EventEmitter<TableGroupCollapseChangeDetail>;
74
73
  dsSelectionChange: EventEmitter<TableSelectionChangeDetail>;
75
74
  dsLoadMore: EventEmitter<TableLoadMoreDetail>;
@@ -1,2 +1,2 @@
1
- export type { TableCaptionVisibility, TableCellAlign, TableCellAction, TableCellActionDetail, TableCellBlank, TableCellEmpty, TableCellIcon, TableCellImage, TableCellPrimaryText, TableCellText, TableCellTag, TableCellTagVariant, TableCellValue, TableColumn, TableColumnSticky, TableColumnWidth, TableGroup, TableGroupCollapseChangeDetail, TableGroupIntent, TableHeaderSegment, TableGroupingChangeDetail, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableLoadMoreReason, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortDirection, TableSortState, } from './table-types';
1
+ export type { TableCaptionVisibility, TableCellAlign, TableCellAction, TableCellActionDetail, TableCellBlank, TableCellEmpty, TableCellIcon, TableCellImage, TableCellPrimaryText, TableCellText, TableCellTag, TableCellTagVariant, TableCellValue, TableColumn, TableColumnSticky, TableColumnWidth, TableGroup, TableGroupCollapseChangeDetail, TableGroupIntent, TableHeaderSegment, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableLoadMoreReason, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortDirection, TableSortState, } from './table-types';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- import type { TableCellBlank, TableCellAction, TableCellEmpty, TableCellIcon, TableCellImage, TableCellPrimaryText, TableCellText, TableCellTag, TableCellValue, TableColumn, TableGroup, TableGroupingState, TableRow, TableSortState } from './table-types';
1
+ import type { TableCellBlank, TableCellAction, TableCellEmpty, TableCellIcon, TableCellImage, TableCellPrimaryText, TableCellText, TableCellTag, TableCellValue, TableColumn, TableGroup, TableRow, TableSortState } from './table-types';
2
2
  export interface TableSelectionState {
3
3
  selectableRowIds: string[];
4
4
  selectedLoadedCount: number;
@@ -16,7 +16,6 @@ export declare function isTableCellBlank(value: TableCellValue): value is TableC
16
16
  export declare function tableCellPrimary(value: TableCellValue): string | number | null;
17
17
  export declare function tableRowSelectionLabel(row: TableRow, columns: TableColumn[]): string;
18
18
  export declare function nextTableSortState(current: TableSortState | null | undefined, columnId: string): TableSortState;
19
- export declare function nextTableGroupOrder(grouping: TableGroupingState): TableGroupingState;
20
19
  export declare function toggleTableGroupCollapsed(collapsedGroupIds: string[], groupId: string): string[];
21
20
  export declare function nextTableGroupsCollapsed(collapsedGroupIds: string[], groupIds: string[]): string[];
22
21
  /** Host for grouped collapse-all: the trailing action lane or a scrollport-owned overlay. */
@@ -24,7 +24,7 @@ export interface TableSortState {
24
24
  columnId: string;
25
25
  direction: TableSortDirection;
26
26
  }
27
- /** One controlled grouping level plus the supplied group-order direction. */
27
+ /** One controlled grouping level. Applications supply groups in their final fixed order. */
28
28
  export interface TableGroupingState {
29
29
  columnId: string;
30
30
  direction: TableSortDirection;
@@ -178,9 +178,6 @@ export interface TableGroup {
178
178
  export interface TableSortChangeDetail {
179
179
  sort: TableSortState | null;
180
180
  }
181
- export interface TableGroupingChangeDetail {
182
- grouping: TableGroupingState;
183
- }
184
181
  export interface TableSelectionChangeDetail {
185
182
  selectedRowIds: string[];
186
183
  scope: 'row' | 'all-loaded' | 'group';
@@ -63,7 +63,7 @@ import { SliderOrientation, SliderSize, SliderThumbAlignment, SliderValue } from
63
63
  import { SwatchPickerOption, SwatchPickerSection } from "./components/SwatchPicker/swatch-picker-types";
64
64
  import { SwitchSize } from "./components/Switch/Switch";
65
65
  import { TabBackground, TabGroupSize as TabGroupSize1 } from "./components/TabGroup/TabGroup";
66
- import { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableGroup, TableGroupCollapseChangeDetail, TableGroupingChangeDetail, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from "./components/Table/table-types";
66
+ import { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableGroup, TableGroupCollapseChangeDetail, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from "./components/Table/table-types";
67
67
  import { TagContrast, TagIntent, TagSize } from "./components/Tag/Tag";
68
68
  import { ToastActionEventDetail, ToastCloseEventDetail, ToastEventDetail, ToastManager, ToastSwipeDirection } from "./toast";
69
69
  import { TooltipAlign, TooltipSide, TooltipSize } from "./components/Tooltip/Tooltip";
@@ -126,7 +126,7 @@ export { SliderOrientation, SliderSize, SliderThumbAlignment, SliderValue } from
126
126
  export { SwatchPickerOption, SwatchPickerSection } from "./components/SwatchPicker/swatch-picker-types";
127
127
  export { SwitchSize } from "./components/Switch/Switch";
128
128
  export { TabBackground, TabGroupSize as TabGroupSize1 } from "./components/TabGroup/TabGroup";
129
- export { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableGroup, TableGroupCollapseChangeDetail, TableGroupingChangeDetail, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from "./components/Table/table-types";
129
+ export { TableCaptionVisibility, TableCellActionDetail, TableColumn, TableGroup, TableGroupCollapseChangeDetail, TableGroupingState, TableLoadMoreDetail, TableLoadMoreMode, TableRow, TableRowActivateDetail, TableSelectionChangeDetail, TableSelectionMode, TableSortChangeDetail, TableSortState } from "./components/Table/table-types";
130
130
  export { TagContrast, TagIntent, TagSize } from "./components/Tag/Tag";
131
131
  export { ToastActionEventDetail, ToastCloseEventDetail, ToastEventDetail, ToastManager, ToastSwipeDirection } from "./toast";
132
132
  export { TooltipAlign, TooltipSide, TooltipSize } from "./components/Tooltip/Tooltip";
@@ -349,6 +349,28 @@ export namespace Components {
349
349
  */
350
350
  "orientation": BannerOrientation;
351
351
  }
352
+ interface DsBarAction {
353
+ /**
354
+ * Visible Clear control label.
355
+ * @default 'Clear'
356
+ */
357
+ "clearLabel": string;
358
+ /**
359
+ * Number of selected items. The bar is hidden while this is below one.
360
+ * @default 0
361
+ */
362
+ "count": number;
363
+ /**
364
+ * Accessible name for the selected-set action group.
365
+ * @default 'Selected item actions'
366
+ */
367
+ "label": string;
368
+ /**
369
+ * Localized noun shown after the count.
370
+ * @default 'selected'
371
+ */
372
+ "selectedLabel": string;
373
+ }
352
374
  interface DsBarNav {
353
375
  /**
354
376
  * Section base path (e.g. `/dashboard/safety`). Used with `currentUrl` to derive `value`.
@@ -653,7 +675,7 @@ export namespace Components {
653
675
  */
654
676
  "dot": boolean;
655
677
  /**
656
- * Controlled disclosure or popup state forwarded to `aria-expanded`. Popup triggers hold a pressed visual while open; ordinary disclosures retain the normal resting appearance.
678
+ * Controlled disclosure or popup state forwarded to `aria-expanded`. Popup triggers hold only the pressed wash while open; their resting foreground is unchanged. Ordinary disclosures remain visually neutral.
657
679
  */
658
680
  "expanded": boolean | undefined;
659
681
  /**
@@ -2789,7 +2811,7 @@ export namespace Components {
2789
2811
  */
2790
2812
  "fitViewport": boolean;
2791
2813
  /**
2792
- * Controlled grouping column and group-order direction.
2814
+ * Controlled grouping column. Applications supply groups in their final fixed order.
2793
2815
  * @default null
2794
2816
  */
2795
2817
  "grouping": TableGroupingState | null;
@@ -3161,6 +3183,10 @@ export interface DsBannerCustomEvent<T> extends CustomEvent<T> {
3161
3183
  detail: T;
3162
3184
  target: HTMLDsBannerElement;
3163
3185
  }
3186
+ export interface DsBarActionCustomEvent<T> extends CustomEvent<T> {
3187
+ detail: T;
3188
+ target: HTMLDsBarActionElement;
3189
+ }
3164
3190
  export interface DsBarNavCustomEvent<T> extends CustomEvent<T> {
3165
3191
  detail: T;
3166
3192
  target: HTMLDsBarNavElement;
@@ -3430,6 +3456,23 @@ declare global {
3430
3456
  prototype: HTMLDsBannerElement;
3431
3457
  new (): HTMLDsBannerElement;
3432
3458
  };
3459
+ interface HTMLDsBarActionElementEventMap {
3460
+ "dsClear": MouseEvent;
3461
+ }
3462
+ interface HTMLDsBarActionElement extends Components.DsBarAction, HTMLStencilElement {
3463
+ addEventListener<K extends keyof HTMLDsBarActionElementEventMap>(type: K, listener: (this: HTMLDsBarActionElement, ev: DsBarActionCustomEvent<HTMLDsBarActionElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
3464
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3465
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3466
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3467
+ removeEventListener<K extends keyof HTMLDsBarActionElementEventMap>(type: K, listener: (this: HTMLDsBarActionElement, ev: DsBarActionCustomEvent<HTMLDsBarActionElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
3468
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3469
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3470
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3471
+ }
3472
+ var HTMLDsBarActionElement: {
3473
+ prototype: HTMLDsBarActionElement;
3474
+ new (): HTMLDsBarActionElement;
3475
+ };
3433
3476
  interface HTMLDsBarNavElementEventMap {
3434
3477
  "dsTabChange": string;
3435
3478
  }
@@ -4268,7 +4311,6 @@ declare global {
4268
4311
  };
4269
4312
  interface HTMLDsTableElementEventMap {
4270
4313
  "dsSortChange": TableSortChangeDetail;
4271
- "dsGroupingChange": TableGroupingChangeDetail;
4272
4314
  "dsGroupCollapseChange": TableGroupCollapseChangeDetail;
4273
4315
  "dsSelectionChange": TableSelectionChangeDetail;
4274
4316
  "dsLoadMore": TableLoadMoreDetail;
@@ -4379,6 +4421,7 @@ declare global {
4379
4421
  "ds-avatar": HTMLDsAvatarElement;
4380
4422
  "ds-badge": HTMLDsBadgeElement;
4381
4423
  "ds-banner": HTMLDsBannerElement;
4424
+ "ds-bar-action": HTMLDsBarActionElement;
4382
4425
  "ds-bar-nav": HTMLDsBarNavElement;
4383
4426
  "ds-bar-title": HTMLDsBarTitleElement;
4384
4427
  "ds-bar-workflow": HTMLDsBarWorkflowElement;
@@ -4671,6 +4714,32 @@ declare namespace LocalJSX {
4671
4714
  */
4672
4715
  "orientation"?: BannerOrientation;
4673
4716
  }
4717
+ interface DsBarAction {
4718
+ /**
4719
+ * Visible Clear control label.
4720
+ * @default 'Clear'
4721
+ */
4722
+ "clearLabel"?: string;
4723
+ /**
4724
+ * Number of selected items. The bar is hidden while this is below one.
4725
+ * @default 0
4726
+ */
4727
+ "count"?: number;
4728
+ /**
4729
+ * Accessible name for the selected-set action group.
4730
+ * @default 'Selected item actions'
4731
+ */
4732
+ "label"?: string;
4733
+ /**
4734
+ * Emitted when Clear is activated. The application owns the selected identities.
4735
+ */
4736
+ "onDsClear"?: (event: DsBarActionCustomEvent<MouseEvent>) => void;
4737
+ /**
4738
+ * Localized noun shown after the count.
4739
+ * @default 'selected'
4740
+ */
4741
+ "selectedLabel"?: string;
4742
+ }
4674
4743
  interface DsBarNav {
4675
4744
  /**
4676
4745
  * Section base path (e.g. `/dashboard/safety`). Used with `currentUrl` to derive `value`.
@@ -5011,7 +5080,7 @@ declare namespace LocalJSX {
5011
5080
  */
5012
5081
  "dot"?: boolean;
5013
5082
  /**
5014
- * Controlled disclosure or popup state forwarded to `aria-expanded`. Popup triggers hold a pressed visual while open; ordinary disclosures retain the normal resting appearance.
5083
+ * Controlled disclosure or popup state forwarded to `aria-expanded`. Popup triggers hold only the pressed wash while open; their resting foreground is unchanged. Ordinary disclosures remain visually neutral.
5015
5084
  */
5016
5085
  "expanded"?: boolean | undefined;
5017
5086
  /**
@@ -7357,7 +7426,7 @@ declare namespace LocalJSX {
7357
7426
  */
7358
7427
  "fitViewport"?: boolean;
7359
7428
  /**
7360
- * Controlled grouping column and group-order direction.
7429
+ * Controlled grouping column. Applications supply groups in their final fixed order.
7361
7430
  * @default null
7362
7431
  */
7363
7432
  "grouping"?: TableGroupingState | null;
@@ -7417,7 +7486,6 @@ declare namespace LocalJSX {
7417
7486
  "maxHeight"?: string | number | undefined;
7418
7487
  "onDsCellAction"?: (event: DsTableCustomEvent<TableCellActionDetail>) => void;
7419
7488
  "onDsGroupCollapseChange"?: (event: DsTableCustomEvent<TableGroupCollapseChangeDetail>) => void;
7420
- "onDsGroupingChange"?: (event: DsTableCustomEvent<TableGroupingChangeDetail>) => void;
7421
7489
  "onDsLoadMore"?: (event: DsTableCustomEvent<TableLoadMoreDetail>) => void;
7422
7490
  "onDsRowActivate"?: (event: DsTableCustomEvent<TableRowActivateDetail>) => void;
7423
7491
  "onDsSelectionChange"?: (event: DsTableCustomEvent<TableSelectionChangeDetail>) => void;
@@ -7787,6 +7855,12 @@ declare namespace LocalJSX {
7787
7855
  "dismissLabel": string;
7788
7856
  "announcement": BannerAnnouncement;
7789
7857
  }
7858
+ interface DsBarActionAttributes {
7859
+ "count": number;
7860
+ "selectedLabel": string;
7861
+ "clearLabel": string;
7862
+ "label": string;
7863
+ }
7790
7864
  interface DsBarNavAttributes {
7791
7865
  "navStyle": NavChromeStyle;
7792
7866
  "value": string;
@@ -8451,6 +8525,7 @@ declare namespace LocalJSX {
8451
8525
  "ds-avatar": Omit<DsAvatar, keyof DsAvatarAttributes> & { [K in keyof DsAvatar & keyof DsAvatarAttributes]?: DsAvatar[K] } & { [K in keyof DsAvatar & keyof DsAvatarAttributes as `attr:${K}`]?: DsAvatarAttributes[K] } & { [K in keyof DsAvatar & keyof DsAvatarAttributes as `prop:${K}`]?: DsAvatar[K] };
8452
8526
  "ds-badge": Omit<DsBadge, keyof DsBadgeAttributes> & { [K in keyof DsBadge & keyof DsBadgeAttributes]?: DsBadge[K] } & { [K in keyof DsBadge & keyof DsBadgeAttributes as `attr:${K}`]?: DsBadgeAttributes[K] } & { [K in keyof DsBadge & keyof DsBadgeAttributes as `prop:${K}`]?: DsBadge[K] };
8453
8527
  "ds-banner": Omit<DsBanner, keyof DsBannerAttributes> & { [K in keyof DsBanner & keyof DsBannerAttributes]?: DsBanner[K] } & { [K in keyof DsBanner & keyof DsBannerAttributes as `attr:${K}`]?: DsBannerAttributes[K] } & { [K in keyof DsBanner & keyof DsBannerAttributes as `prop:${K}`]?: DsBanner[K] } & OneOf<"description", DsBanner["description"], DsBannerAttributes["description"]>;
8528
+ "ds-bar-action": Omit<DsBarAction, keyof DsBarActionAttributes> & { [K in keyof DsBarAction & keyof DsBarActionAttributes]?: DsBarAction[K] } & { [K in keyof DsBarAction & keyof DsBarActionAttributes as `attr:${K}`]?: DsBarActionAttributes[K] } & { [K in keyof DsBarAction & keyof DsBarActionAttributes as `prop:${K}`]?: DsBarAction[K] };
8454
8529
  "ds-bar-nav": Omit<DsBarNav, keyof DsBarNavAttributes> & { [K in keyof DsBarNav & keyof DsBarNavAttributes]?: DsBarNav[K] } & { [K in keyof DsBarNav & keyof DsBarNavAttributes as `attr:${K}`]?: DsBarNavAttributes[K] } & { [K in keyof DsBarNav & keyof DsBarNavAttributes as `prop:${K}`]?: DsBarNav[K] };
8455
8530
  "ds-bar-title": Omit<DsBarTitle, keyof DsBarTitleAttributes> & { [K in keyof DsBarTitle & keyof DsBarTitleAttributes]?: DsBarTitle[K] } & { [K in keyof DsBarTitle & keyof DsBarTitleAttributes as `attr:${K}`]?: DsBarTitleAttributes[K] } & { [K in keyof DsBarTitle & keyof DsBarTitleAttributes as `prop:${K}`]?: DsBarTitle[K] } & OneOf<"heading", DsBarTitle["heading"], DsBarTitleAttributes["heading"]>;
8456
8531
  "ds-bar-workflow": Omit<DsBarWorkflow, keyof DsBarWorkflowAttributes> & { [K in keyof DsBarWorkflow & keyof DsBarWorkflowAttributes]?: DsBarWorkflow[K] } & { [K in keyof DsBarWorkflow & keyof DsBarWorkflowAttributes as `attr:${K}`]?: DsBarWorkflowAttributes[K] } & { [K in keyof DsBarWorkflow & keyof DsBarWorkflowAttributes as `prop:${K}`]?: DsBarWorkflow[K] } & OneOf<"heading", DsBarWorkflow["heading"], DsBarWorkflowAttributes["heading"]>;
@@ -8525,6 +8600,7 @@ declare module "@stencil/core" {
8525
8600
  "ds-avatar": LocalJSX.IntrinsicElements["ds-avatar"] & JSXBase.HTMLAttributes<HTMLDsAvatarElement>;
8526
8601
  "ds-badge": LocalJSX.IntrinsicElements["ds-badge"] & JSXBase.HTMLAttributes<HTMLDsBadgeElement>;
8527
8602
  "ds-banner": LocalJSX.IntrinsicElements["ds-banner"] & JSXBase.HTMLAttributes<HTMLDsBannerElement>;
8603
+ "ds-bar-action": LocalJSX.IntrinsicElements["ds-bar-action"] & JSXBase.HTMLAttributes<HTMLDsBarActionElement>;
8528
8604
  "ds-bar-nav": LocalJSX.IntrinsicElements["ds-bar-nav"] & JSXBase.HTMLAttributes<HTMLDsBarNavElement>;
8529
8605
  "ds-bar-title": LocalJSX.IntrinsicElements["ds-bar-title"] & JSXBase.HTMLAttributes<HTMLDsBarTitleElement>;
8530
8606
  "ds-bar-workflow": LocalJSX.IntrinsicElements["ds-bar-workflow"] & JSXBase.HTMLAttributes<HTMLDsBarWorkflowElement>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ds-mo/ui",
3
- "version": "13.18.0",
3
+ "version": "14.0.0",
4
4
  "description": "CompoMo — composable web components styled with TokoMo design tokens",
5
5
  "keywords": [
6
6
  "web-components",
@@ -109,8 +109,8 @@
109
109
  "peerDependencies": {
110
110
  "@angular/core": ">=19 <23",
111
111
  "@angular/forms": ">=19 <23",
112
- "@ds-mo/icons": "^6.6.0",
113
- "@ds-mo/tokens": "^6.2.1",
112
+ "@ds-mo/icons": "^7.0.0",
113
+ "@ds-mo/tokens": "^6.2.2",
114
114
  "react": "^18 || ^19",
115
115
  "react-dom": "^18 || ^19",
116
116
  "rxjs": "^7.8.0"
@@ -138,8 +138,8 @@
138
138
  "@angular/core": "^22.0.7",
139
139
  "@angular/forms": "^22.0.7",
140
140
  "@axe-core/playwright": "^4.12.1",
141
- "@ds-mo/icons": "^6.6.0",
142
- "@ds-mo/tokens": "^6.2.1",
141
+ "@ds-mo/icons": "^7.0.0",
142
+ "@ds-mo/tokens": "^6.2.2",
143
143
  "@eslint/js": "^10.0.1",
144
144
  "@fontsource-variable/inter": "^5.3.0",
145
145
  "@fontsource/fira-code": "^5.3.0",
@@ -1 +0,0 @@
1
- {"version":3,"names":["buttonUnfilledCss","ButtonUnfilled","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","variant","size","isInset","insetDepth","width","label","icon","isActive","activeFill","hasBorder","rounded","pressScale","dot","isInactive","isLoading","type","ariaLabel","hasMenu","buttonEl","handleClick","event","preventDefault","stopPropagation","dsClick","emit","pressed","undefined","dsChange","setFocus","focus","showDot","resolvedHaspopup","haspopup","doubleInset","expandedPopup","expanded","visuallyActive","dotRing","accessibleName","render","bg","background","cls","h","Host","key","class","controlWidthClass","tabIndex","ref","el","disabled","focusTabIndex","controls","String","onPointerDown","beginElevatedControlPress","onClick","renderButtonContent","namespace","visible"],"sources":["src/wc/components/ButtonUnfilled/ButtonUnfilled.css?tag=ds-button-unfilled&encapsulation=scoped","src/wc/components/ButtonUnfilled/ButtonUnfilled.tsx"],"sourcesContent":["@import '../../utils/button-base.css';\n\n:host {\n --ds-button-unfilled-fg: var(--color-foreground-secondary);\n --ds-button-unfilled-fg-active: var(--color-foreground-primary);\n --ds-button-unfilled-dot-ring: var(--color-background-secondary);\n --ds-button-unfilled-border: var(--color-border-secondary);\n}\n\n.button-unfilled {\n background: transparent;\n color: var(--ds-button-unfilled-fg);\n /* Hover/press/selected fill: `.ds-interaction-fill` (+ `--selected` / `--on-*`).\n Active and popup-open foreground changes resolve atomically with the fill. */\n}\n\n.button-unfilled--active {\n color: var(--ds-button-unfilled-fg-active);\n}\n\n/*\n * An open popup is a transient pressed state, not a selected state. Keep the\n * pressed wash visible for the popup's complete rendered lifecycle even when\n * shell chrome opts out of selected fills with `activeFill=false`.\n */\n/* Inset stroke via interaction-fill ::after (above selected / hover washes). */\n.button-unfilled--bordered {\n --ds-interaction-border-color: var(--ds-button-unfilled-border);\n}\n\n/* Inactive: `.ds-control-inactive` (50% opacity). */\n\n/* Foreground / chrome tokens per surface — interaction tokens come from util `--on-*`. */\n.button-unfilled--background-medium {\n --ds-button-unfilled-fg: var(--color-foreground-on-medium-background-secondary);\n --ds-button-unfilled-fg-active: var(--color-foreground-on-medium-background-primary);\n --ds-button-unfilled-dot-ring: var(--color-background-medium-neutral);\n --ds-button-unfilled-border: var(--color-border-on-medium-background-secondary);\n}\n\n.button-unfilled--background-bold {\n --ds-button-unfilled-fg: var(--color-foreground-on-bold-background-secondary);\n --ds-button-unfilled-fg-active: var(--color-foreground-on-bold-background-primary);\n --ds-button-unfilled-dot-ring: var(--color-background-bold-neutral);\n --ds-button-unfilled-border: var(--color-border-on-bold-background-secondary);\n}\n\n.button-unfilled--background-strong {\n --ds-button-unfilled-fg: var(--color-foreground-on-strong-background-secondary);\n --ds-button-unfilled-fg-active: var(--color-foreground-on-strong-background-primary);\n --ds-button-unfilled-dot-ring: var(--color-background-strong-neutral);\n --ds-button-unfilled-border: var(--color-border-on-strong-background-secondary);\n}\n\n.button-unfilled--background-translucent {\n --ds-button-unfilled-fg: var(--color-translucent-foreground-secondary);\n --ds-button-unfilled-fg-active: var(--color-translucent-foreground-primary);\n --ds-button-unfilled-dot-ring: var(--color-translucent-translucent);\n --ds-button-unfilled-border: var(--color-translucent-border-secondary);\n}\n\n.button-unfilled--background-inverted {\n --ds-button-unfilled-fg: var(--color-inverted-foreground-secondary);\n --ds-button-unfilled-fg-active: var(--color-inverted-foreground-primary);\n --ds-button-unfilled-dot-ring: var(--color-inverted-background);\n --ds-button-unfilled-border: var(--color-inverted-border-secondary);\n}\n\n.button-unfilled--background-media {\n --ds-button-unfilled-fg: var(--color-media-foreground-secondary);\n --ds-button-unfilled-fg-active: var(--color-media-foreground-primary);\n --ds-button-unfilled-dot-ring: var(--color-media-background);\n --ds-button-unfilled-border: var(--color-media-border-secondary);\n}\n\n.button-unfilled--on-always-dark {\n --ds-button-unfilled-fg: var(--color-always-dark-foreground-secondary);\n --ds-button-unfilled-fg-active: var(--color-always-dark-foreground-primary);\n --ds-button-unfilled-dot-ring: var(--color-always-dark-background);\n --ds-button-unfilled-border: var(--color-always-dark-border-secondary);\n}\n\n/*\n * After surface ring defaults: selected fill remaps the knock-out to the active\n * wash so the badge halo matches the selected background.\n */\n.button-unfilled.ds-interaction-fill--selected {\n --ds-button-unfilled-dot-ring: var(--ds-interaction-active);\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Method, Prop } from '@stencil/core';\nimport { controlWidthClass } from '../../utils';\nimport { beginElevatedControlPress } from '../../utils/control-press';\nimport { renderButtonContent } from '../../utils/button-render';\nimport type { ControlInsetDepth } from '../../utils/control-text';\nimport type {\n ButtonPopup,\n ButtonSize,\n ButtonVariant,\n ButtonWidth,\n} from '../../utils/button-types';\n\nexport type ButtonUnfilledBackground =\n | 'faint'\n | 'medium'\n | 'bold'\n | 'strong'\n | 'translucent'\n | 'inverted'\n | 'media'\n | 'always-dark';\n\nexport type ButtonUnfilledVariant = ButtonVariant;\nexport type ButtonUnfilledSize = ButtonSize;\nexport type ButtonUnfilledWidth = ButtonWidth;\nexport type ButtonUnfilledPopup = ButtonPopup;\n\n@Component({\n tag: 'ds-button-unfilled',\n styleUrl: 'ButtonUnfilled.css',\n scoped: true,\n})\nexport class ButtonUnfilled {\n @Element() el!: HTMLElement;\n\n /**\n * Content layout. Default is label-only; pass `icon` for icon-only chrome\n * (nav / tool rails) or `icon-label` for leading icon + text.\n */\n @Prop() variant: ButtonUnfilledVariant = 'label';\n\n /** Control density (height, padding, icon, type). */\n @Prop() size: ButtonUnfilledSize = 'md';\n\n /** Use reduced outer geometry when nested inside a control of the same size. */\n @Prop() isInset: boolean = false;\n\n /** Single removes 4px overall; double removes 8px overall (xs stays single). */\n @Prop() insetDepth: ControlInsetDepth = 'single';\n\n /** Width fit — hug content (default) or fill the parent. */\n @Prop() width: ButtonUnfilledWidth = 'hug';\n\n /** Visible text for `label` / `icon-label` variants. */\n @Prop() label: string = '';\n\n /** Icon name passed to <ds-icon> for `icon` / `icon-label` variants. */\n @Prop() icon: string = '';\n\n /**\n * Owner-controlled visual emphasis inside a composite. This does not add\n * toggle semantics and does not emit dsChange.\n */\n @Prop() isActive: boolean = false;\n\n /**\n * When active, render the selected interaction fill.\n * Default `true` for general UI. Shell chrome (nav / tool rails) should pass\n * `false` so selection is foreground-only (primary color, no fill).\n */\n @Prop() activeFill: boolean = true;\n\n /** Show a 1px secondary inset border. Default on; shell chrome can pass `false`. */\n @Prop() hasBorder: boolean = true;\n\n /** Use the half-radius treatment instead of the default control radius. */\n @Prop() rounded: boolean = false;\n\n /**\n * Scale down during a physical pointer press.\n * Disable when an owning composite requires fixed child or background geometry.\n */\n @Prop() pressScale: boolean = true;\n\n /** Show a notification dot at the top-right of the icon zone (icon variant only). */\n @Prop() dot: boolean = false;\n\n /** Disables interaction. */\n @Prop() isInactive: boolean = false;\n\n /** Shows an inline loader and prevents interaction without applying inactive opacity. */\n @Prop() isLoading: boolean = false;\n\n /** Native button type. */\n @Prop() type: 'button' | 'submit' | 'reset' = 'button';\n\n /** Actual parent surface context. Omit on primary and secondary surfaces. */\n @Prop() background: ButtonUnfilledBackground | undefined;\n\n /** Accessible name override. Required for icon-only buttons. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n @Prop() controls: string | undefined;\n /**\n * Controlled disclosure or popup state forwarded to `aria-expanded`.\n * Popup triggers hold a pressed visual while open; ordinary disclosures\n * retain the normal resting appearance.\n */\n @Prop() expanded: boolean | undefined;\n @Prop() haspopup: ButtonUnfilledPopup | undefined;\n /**\n * Controlled state for a genuine toggle button. Adds aria-pressed, promotes\n * active styling, and makes activation emit dsChange with the requested state.\n */\n @Prop() pressed: boolean | undefined;\n\n /**\n * Mark the button as a Menu trigger. Implies `aria-haspopup=\"menu\"` and covers\n * both menu-button shapes:\n *\n * - `label` / `icon-label` — the action *has* a menu; a trailing chevron carries\n * the affordance.\n * - `icon` — the button *is* a menu, i.e. the overflow / more-options control.\n * No chevron is added, so the glyph must convey it on its own; use `Ellipses`.\n *\n * Use `haspopup` directly for non-menu popups.\n */\n @Prop() hasMenu: boolean = false;\n\n /**\n * Native `tabindex` for roving keyboard groups in shell chrome.\n * Omit for the default button tab stop (`0`).\n */\n @Prop({ attribute: 'tab-index' }) focusTabIndex?: number;\n\n @Event() dsClick!: EventEmitter<MouseEvent>;\n @Event() dsChange!: EventEmitter<boolean>;\n\n private buttonEl: HTMLButtonElement | null = null;\n\n @Method()\n async setFocus() {\n this.buttonEl?.focus();\n }\n\n private handleClick = (event: MouseEvent) => {\n if (this.isInactive || this.isLoading) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n this.dsClick.emit(event);\n if (this.pressed !== undefined) this.dsChange.emit(!this.pressed);\n };\n\n private get showDot(): boolean {\n return this.variant === 'icon' && this.dot && !this.isLoading;\n }\n\n private get resolvedHaspopup(): ButtonUnfilledPopup | undefined {\n return this.haspopup ?? (this.hasMenu ? 'menu' : undefined);\n }\n\n private get doubleInset(): boolean {\n return this.isInset && this.insetDepth === 'double' && this.size !== 'xs';\n }\n\n /** Only popup triggers hold a pressed visual while expanded. */\n private get expandedPopup(): boolean {\n return this.expanded === true && this.resolvedHaspopup !== undefined && !this.isInactive;\n }\n\n private get visuallyActive(): boolean {\n return this.isActive || this.pressed === true || this.expandedPopup;\n }\n\n /** Knock-out ring: selected fill → active wash; otherwise surface token. */\n private get dotRing(): string {\n if ((this.isActive || this.pressed === true) && this.activeFill) {\n return 'var(--ds-interaction-active)';\n }\n return 'var(--ds-button-unfilled-dot-ring)';\n }\n\n private get accessibleName(): string | undefined {\n if (this.ariaLabel) return this.ariaLabel;\n if (this.isLoading && this.variant === 'label' && this.label) return this.label;\n return undefined;\n }\n\n render() {\n const bg = this.background;\n const cls: Record<string, boolean> = {\n 'button-unfilled': true,\n 'ds-button': true,\n 'ds-focus-ring-inset': true,\n 'ds-control-press-scale': this.pressScale,\n 'ds-interaction-fill': true,\n 'ds-interaction-fill--selected':\n (this.isActive || this.pressed === true) &&\n this.activeFill &&\n !this.isInactive,\n 'ds-interaction-fill--on-faint': bg === 'faint',\n 'ds-interaction-fill--on-medium': bg === 'medium',\n 'ds-interaction-fill--on-bold': bg === 'bold',\n 'ds-interaction-fill--on-strong': bg === 'strong',\n 'ds-interaction-fill--on-translucent': bg === 'translucent',\n 'ds-interaction-fill--on-inverted': bg === 'inverted',\n 'ds-interaction-fill--on-media': bg === 'media',\n 'ds-interaction-fill--on-always-dark': bg === 'always-dark',\n 'button-unfilled--active': this.visuallyActive,\n 'button-unfilled--expanded': this.expandedPopup,\n 'ds-button--expanded': this.expandedPopup,\n 'button-unfilled--bordered': this.hasBorder,\n 'ds-button--bordered': this.hasBorder,\n 'button-unfilled--rounded': this.rounded,\n 'ds-button--rounded': this.rounded,\n 'ds-control-inactive': this.isInactive,\n 'ds-control--lg': this.size === 'lg',\n 'ds-control--md': this.size === 'md',\n 'ds-control--sm': this.size === 'sm',\n 'ds-control--xs': this.size === 'xs',\n 'ds-control--inset': this.isInset && !this.doubleInset,\n 'ds-control--inset-double': this.doubleInset,\n 'ds-control-frame': true,\n 'button-unfilled--icon': this.variant === 'icon',\n 'ds-button--icon': this.variant === 'icon',\n 'button-unfilled--label': this.variant === 'label',\n 'button-unfilled--icon-label': this.variant === 'icon-label',\n 'button-unfilled--background-faint': bg === 'faint',\n 'button-unfilled--background-medium': bg === 'medium',\n 'button-unfilled--background-bold': bg === 'bold',\n 'button-unfilled--background-strong': bg === 'strong',\n 'button-unfilled--background-translucent': bg === 'translucent',\n 'button-unfilled--background-inverted': bg === 'inverted',\n 'button-unfilled--background-media': bg === 'media',\n 'button-unfilled--on-always-dark': bg === 'always-dark',\n };\n\n return (\n <Host\n class={{\n 'button-unfilled-host': true,\n 'button-unfilled-host--icon': this.variant === 'icon',\n 'ds-button-host--icon': this.variant === 'icon',\n 'ds-control--lg': this.size === 'lg',\n 'ds-control--md': this.size === 'md',\n 'ds-control--sm': this.size === 'sm',\n 'ds-control--xs': this.size === 'xs',\n 'ds-control--inset': this.isInset && !this.doubleInset,\n 'ds-control--inset-double': this.doubleInset,\n ...controlWidthClass(this.width),\n }}\n tabIndex={-1}\n >\n <button\n ref={el => {\n this.buttonEl = el ?? null;\n }}\n type={this.type}\n class={cls}\n disabled={this.isInactive}\n tabIndex={this.focusTabIndex ?? 0}\n aria-label={this.accessibleName}\n aria-busy={this.isLoading ? 'true' : undefined}\n aria-disabled={this.isLoading ? 'true' : undefined}\n aria-controls={this.controls}\n aria-expanded={this.expanded === undefined ? undefined : String(this.expanded)}\n aria-haspopup={this.resolvedHaspopup}\n aria-pressed={this.pressed === undefined ? undefined : String(this.pressed)}\n onPointerDown={event =>\n beginElevatedControlPress(\n event,\n this.pressScale && !this.isInactive && !this.isLoading,\n )\n }\n onClick={this.handleClick}\n >\n {renderButtonContent({\n namespace: 'button-unfilled',\n variant: this.variant,\n size: this.size,\n label: this.label,\n icon: this.icon,\n hasMenu: this.hasMenu,\n isLoading: this.isLoading,\n dot: {\n visible: this.showDot,\n background: this.dotRing,\n },\n })}\n </button>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}