@ds-mo/ui 2.11.2 → 2.13.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 (262) hide show
  1. package/README.md +13 -13
  2. package/dist/.build-stamp +1 -1
  3. package/dist/components/ds-app-shell.js +1 -1
  4. package/dist/components/ds-banner.js +1 -1
  5. package/dist/components/ds-banner.js.map +1 -1
  6. package/dist/components/ds-bar-nav.js +1 -1
  7. package/dist/components/ds-bar-nav.js.map +1 -1
  8. package/dist/components/ds-button-filled.js +1 -1
  9. package/dist/components/{ds-accordion.d.ts → ds-button-unfilled.d.ts} +4 -4
  10. package/dist/components/ds-button-unfilled.js +2 -0
  11. package/dist/components/{ds-card-data-viz.d.ts → ds-card-data-viz-donut.d.ts} +4 -4
  12. package/dist/components/ds-card-data-viz-donut.js +2 -0
  13. package/dist/components/ds-card-data-viz-donut.js.map +1 -0
  14. package/dist/components/ds-card-setting.js +1 -1
  15. package/dist/components/ds-card-setting.js.map +1 -1
  16. package/dist/components/{ds-fade.d.ts → ds-card.d.ts} +4 -4
  17. package/dist/components/ds-card.js +2 -0
  18. package/dist/components/ds-card.js.map +1 -0
  19. package/dist/components/ds-chart-bar.js +1 -1
  20. package/dist/components/ds-chart-bar.js.map +1 -1
  21. package/dist/components/ds-chart-donut.js +1 -1
  22. package/dist/components/ds-chart-donut.js.map +1 -1
  23. package/dist/components/ds-chart-legend.js +1 -1
  24. package/dist/components/ds-chart-legend.js.map +1 -1
  25. package/dist/components/ds-chart-line.js +1 -1
  26. package/dist/components/ds-checkbox.js +1 -1
  27. package/dist/components/ds-checkbox.js.map +1 -1
  28. package/dist/components/ds-chip.js +1 -1
  29. package/dist/components/ds-chip.js.map +1 -1
  30. package/dist/components/ds-empty-state.js +1 -1
  31. package/dist/components/ds-empty-state.js.map +1 -1
  32. package/dist/components/ds-field.js +1 -1
  33. package/dist/components/ds-icon.js +1 -1
  34. package/dist/components/ds-input.js +1 -1
  35. package/dist/components/ds-input.js.map +1 -1
  36. package/dist/components/ds-loader.js +1 -1
  37. package/dist/components/ds-loader.js.map +1 -1
  38. package/dist/components/ds-menu.js +1 -1
  39. package/dist/components/ds-modal.js +1 -1
  40. package/dist/components/ds-pagination.js +1 -1
  41. package/dist/components/ds-pagination.js.map +1 -1
  42. package/dist/components/ds-panel-nav.js +1 -1
  43. package/dist/components/ds-panel-nav.js.map +1 -1
  44. package/dist/components/ds-panel-tools.js +1 -1
  45. package/dist/components/ds-panel-tools.js.map +1 -1
  46. package/dist/components/ds-radio-group.js +1 -1
  47. package/dist/components/ds-radio-group.js.map +1 -1
  48. package/dist/components/ds-select.js +1 -1
  49. package/dist/components/ds-select.js.map +1 -1
  50. package/dist/components/ds-shell-gradient-picker.js +1 -1
  51. package/dist/components/ds-shell-gradient-swatch.js +1 -1
  52. package/dist/components/ds-skeleton.js +1 -1
  53. package/dist/components/ds-skeleton.js.map +1 -1
  54. package/dist/components/ds-slider.js +1 -1
  55. package/dist/components/ds-slider.js.map +1 -1
  56. package/dist/components/ds-tab-group-nav.js +1 -1
  57. package/dist/components/ds-tab-group.js +1 -1
  58. package/dist/components/ds-tab-group.js.map +1 -1
  59. package/dist/components/ds-table.js +1 -1
  60. package/dist/components/ds-table.js.map +1 -1
  61. package/dist/components/ds-tag.js +1 -1
  62. package/dist/components/ds-tag.js.map +1 -1
  63. package/dist/components/ds-text.js +1 -1
  64. package/dist/components/ds-toggle.js +1 -1
  65. package/dist/components/ds-toggle.js.map +1 -1
  66. package/dist/components/ds-tooltip-data-viz.js +1 -1
  67. package/dist/components/ds-tooltip-data-viz.js.map +1 -1
  68. package/dist/components/ds-tooltip.js +1 -1
  69. package/dist/components/ds-tooltip.js.map +1 -1
  70. package/dist/components/p-1m8r0wFg.js +2 -0
  71. package/dist/components/p-1m8r0wFg.js.map +1 -0
  72. package/dist/components/p-3FLHei19.js +2 -0
  73. package/dist/components/p-3FLHei19.js.map +1 -0
  74. package/dist/components/p-B2_D4IDN.js +2 -0
  75. package/dist/components/p-B2_D4IDN.js.map +1 -0
  76. package/dist/components/p-B5NcWtpp.js +2 -0
  77. package/dist/components/p-B5NcWtpp.js.map +1 -0
  78. package/dist/components/{p-8Nt92j1-.js → p-B82KZX9D.js} +2 -2
  79. package/dist/components/p-BQq26pt9.js.map +1 -1
  80. package/dist/components/p-B_g8X0eh.js +2 -0
  81. package/dist/components/p-B_g8X0eh.js.map +1 -0
  82. package/dist/components/{p-DdFUTZ3y.js → p-Be3PHv34.js} +2 -2
  83. package/dist/components/p-CQmf2CeW.js +2 -0
  84. package/dist/components/p-CQmf2CeW.js.map +1 -0
  85. package/dist/components/{p-DOU4cbpc.js → p-CtwNUCnp.js} +2 -2
  86. package/dist/components/p-CuRjYmBk.js +2 -0
  87. package/dist/components/p-CuRjYmBk.js.map +1 -0
  88. package/dist/components/p-CwARVsZQ.js +2 -0
  89. package/dist/components/p-CwARVsZQ.js.map +1 -0
  90. package/dist/components/p-DohXlNCJ.js +2 -0
  91. package/dist/components/p-DohXlNCJ.js.map +1 -0
  92. package/dist/components/p-DuFm-ieS.js +2 -0
  93. package/dist/components/p-DuFm-ieS.js.map +1 -0
  94. package/dist/components/p-EK1hOP19.js.map +1 -1
  95. package/dist/lib/nav/index.js +3 -0
  96. package/dist/lib/nav/index.js.map +2 -2
  97. package/dist/lib/utils/control-width.d.ts +4 -0
  98. package/dist/lib/utils/index.d.ts +2 -0
  99. package/dist/lib/utils/index.js +20 -1
  100. package/dist/lib/utils/index.js.map +3 -3
  101. package/dist/lib/utils/token-defaults.d.ts +7 -0
  102. package/dist/types/components/ButtonFilled/ButtonFilled.d.ts +21 -3
  103. package/dist/types/components/ButtonFilled/index.d.ts +1 -1
  104. package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +70 -0
  105. package/dist/types/components/ButtonUnfilled/index.d.ts +2 -0
  106. package/dist/types/components/Card/Card.d.ts +20 -0
  107. package/dist/types/components/Card/index.d.ts +2 -0
  108. package/dist/types/components/CardDataVizDonut/CardDataVizDonut.d.ts +26 -0
  109. package/dist/types/components/CardDataVizDonut/index.d.ts +2 -0
  110. package/dist/types/components/CardSetting/CardSetting.d.ts +7 -2
  111. package/dist/types/components/ChartDonut/ChartDonut.d.ts +31 -1
  112. package/dist/types/components/Checkbox/Checkbox.d.ts +1 -1
  113. package/dist/types/components/Chip/Chip.d.ts +18 -14
  114. package/dist/types/components/Chip/index.d.ts +1 -1
  115. package/dist/types/components/Input/Input.d.ts +1 -1
  116. package/dist/types/components/Pagination/Pagination.d.ts +1 -1
  117. package/dist/types/components/PanelNav/PanelNav.d.ts +2 -0
  118. package/dist/types/components/PanelTools/panel-tools-types.d.ts +1 -1
  119. package/dist/types/components/RadioGroup/RadioGroup.d.ts +2 -2
  120. package/dist/types/components/Select/Select.d.ts +34 -2
  121. package/dist/types/components/Select/index.d.ts +2 -0
  122. package/dist/types/components/ShellGradientSwatch/ShellGradientSwatch.d.ts +1 -1
  123. package/dist/types/components/Slider/Slider.d.ts +1 -1
  124. package/dist/types/components/TabGroup/TabGroup.d.ts +1 -1
  125. package/dist/types/components/TabGroup/tab-item-utils.d.ts +2 -1
  126. package/dist/types/components/TabGroupNav/TabGroupNav.d.ts +1 -1
  127. package/dist/types/components/Tag/Tag.d.ts +0 -2
  128. package/dist/types/components/Tag/index.d.ts +1 -1
  129. package/dist/types/components/Toggle/Toggle.d.ts +1 -1
  130. package/dist/types/components/Tooltip/Tooltip.d.ts +25 -6
  131. package/dist/types/components/TooltipDataViz/TooltipDataViz.d.ts +18 -0
  132. package/dist/types/components.d.ts +474 -576
  133. package/dist/types/utils/control-width.d.ts +5 -0
  134. package/dist/types/utils/index.d.ts +2 -0
  135. package/dist/types/utils/token-defaults.d.ts +7 -0
  136. package/package.json +7 -4
  137. package/src/angular/index.ts +3 -9
  138. package/src/angular/proxies.ts +62 -215
  139. package/src/react/components.ts +3 -9
  140. package/src/react/ds-button-unfilled.ts +33 -0
  141. package/src/react/ds-card-data-viz-donut.ts +27 -0
  142. package/src/react/{ds-fade.ts → ds-card.ts} +7 -7
  143. package/src/react/ds-chip.ts +2 -10
  144. package/src/wc/components/BarNav/BarNav.tsx +3 -2
  145. package/src/wc/components/BarNav/bar-nav-tabs-menu-utils.ts +1 -1
  146. package/src/wc/components/ButtonFilled/ButtonFilled.tsx +97 -11
  147. package/src/wc/components/ButtonFilled/index.ts +7 -1
  148. package/src/wc/components/ButtonUnfilled/ButtonUnfilled.tsx +230 -0
  149. package/src/wc/components/ButtonUnfilled/index.ts +7 -0
  150. package/src/wc/components/Card/Card.tsx +79 -0
  151. package/src/wc/components/Card/index.ts +1 -0
  152. package/src/wc/components/{CardDataViz/CardDataViz.tsx → CardDataVizDonut/CardDataVizDonut.tsx} +47 -41
  153. package/src/wc/components/CardDataVizDonut/index.ts +1 -0
  154. package/src/wc/components/CardSetting/CardSetting.tsx +21 -36
  155. package/src/wc/components/ChartDonut/ChartDonut.tsx +159 -11
  156. package/src/wc/components/ChartLegend/ChartLegend.tsx +3 -0
  157. package/src/wc/components/Checkbox/Checkbox.tsx +5 -5
  158. package/src/wc/components/Chip/Chip.tsx +50 -67
  159. package/src/wc/components/Chip/index.ts +1 -1
  160. package/src/wc/components/Input/Input.tsx +4 -4
  161. package/src/wc/components/Menu/Menu.tsx +7 -4
  162. package/src/wc/components/Pagination/Pagination.tsx +6 -6
  163. package/src/wc/components/PanelNav/PanelNav.tsx +77 -48
  164. package/src/wc/components/PanelTools/PanelTools.tsx +19 -16
  165. package/src/wc/components/PanelTools/panel-tools-types.ts +1 -1
  166. package/src/wc/components/PanelTools/panel-tools-utils.ts +1 -1
  167. package/src/wc/components/RadioGroup/RadioGroup.tsx +7 -7
  168. package/src/wc/components/Select/Select.tsx +145 -64
  169. package/src/wc/components/Select/index.ts +1 -0
  170. package/src/wc/components/ShellGradientSwatch/ShellGradientSwatch.tsx +4 -3
  171. package/src/wc/components/Slider/Slider.tsx +7 -3
  172. package/src/wc/components/TabGroup/TabGroup.tsx +13 -7
  173. package/src/wc/components/TabGroup/tab-item-utils.ts +2 -1
  174. package/src/wc/components/TabGroupNav/TabGroupNav.tsx +14 -13
  175. package/src/wc/components/Tag/Tag.tsx +25 -24
  176. package/src/wc/components/Tag/index.ts +1 -1
  177. package/src/wc/components/Toggle/Toggle.tsx +6 -6
  178. package/src/wc/components/Tooltip/Tooltip.tsx +166 -64
  179. package/src/wc/components/TooltipDataViz/TooltipDataViz.tsx +57 -2
  180. package/src/wc/components.d.ts +474 -579
  181. package/src/wc/utils/control-density.css +42 -0
  182. package/src/wc/utils/control-inactive.css +20 -0
  183. package/src/wc/utils/control-width.css +28 -0
  184. package/src/wc/utils/control-width.ts +10 -0
  185. package/src/wc/utils/index.ts +2 -0
  186. package/src/wc/utils/interaction-fill.css +162 -0
  187. package/src/wc/utils/scroll-edge-fade.css +5 -0
  188. package/src/wc/utils/token-defaults.ts +10 -0
  189. package/dist/components/ds-accordion.js +0 -2
  190. package/dist/components/ds-accordion.js.map +0 -1
  191. package/dist/components/ds-breadcrumb.d.ts +0 -11
  192. package/dist/components/ds-breadcrumb.js +0 -2
  193. package/dist/components/ds-breadcrumb.js.map +0 -1
  194. package/dist/components/ds-button-unfilled-icon.d.ts +0 -11
  195. package/dist/components/ds-button-unfilled-icon.js +0 -2
  196. package/dist/components/ds-card-data-viz.js +0 -2
  197. package/dist/components/ds-card-data-viz.js.map +0 -1
  198. package/dist/components/ds-fade.js +0 -2
  199. package/dist/components/ds-fade.js.map +0 -1
  200. package/dist/components/ds-header.d.ts +0 -11
  201. package/dist/components/ds-header.js +0 -2
  202. package/dist/components/ds-header.js.map +0 -1
  203. package/dist/components/ds-scrollbar.d.ts +0 -11
  204. package/dist/components/ds-scrollbar.js +0 -2
  205. package/dist/components/ds-scrollbar.js.map +0 -1
  206. package/dist/components/ds-surface.d.ts +0 -11
  207. package/dist/components/ds-surface.js +0 -2
  208. package/dist/components/ds-surface.js.map +0 -1
  209. package/dist/components/ds-toast-provider.d.ts +0 -11
  210. package/dist/components/ds-toast-provider.js +0 -2
  211. package/dist/components/ds-toast-provider.js.map +0 -1
  212. package/dist/components/p-BMQbEIrQ.js +0 -2
  213. package/dist/components/p-BMQbEIrQ.js.map +0 -1
  214. package/dist/components/p-BSFgy5r6.js +0 -2
  215. package/dist/components/p-BSFgy5r6.js.map +0 -1
  216. package/dist/components/p-CBUIn8dk.js +0 -2
  217. package/dist/components/p-CBUIn8dk.js.map +0 -1
  218. package/dist/components/p-ChVwCVHy.js +0 -2
  219. package/dist/components/p-ChVwCVHy.js.map +0 -1
  220. package/dist/components/p-CpNIQXz6.js +0 -2
  221. package/dist/components/p-CpNIQXz6.js.map +0 -1
  222. package/dist/components/p-CvgHQfvT.js +0 -2
  223. package/dist/components/p-CvgHQfvT.js.map +0 -1
  224. package/dist/components/p-bDf6yBQd.js +0 -2
  225. package/dist/components/p-bDf6yBQd.js.map +0 -1
  226. package/dist/types/components/Accordion/Accordion.d.ts +0 -28
  227. package/dist/types/components/Breadcrumb/Breadcrumb.d.ts +0 -16
  228. package/dist/types/components/ButtonUnfilledIcon/ButtonUnfilledIcon.d.ts +0 -45
  229. package/dist/types/components/ButtonUnfilledIcon/index.d.ts +0 -2
  230. package/dist/types/components/CardDataViz/CardDataViz.d.ts +0 -22
  231. package/dist/types/components/CardDataViz/index.d.ts +0 -2
  232. package/dist/types/components/Fade/Fade.d.ts +0 -22
  233. package/dist/types/components/Fade/index.d.ts +0 -2
  234. package/dist/types/components/Header/Header.d.ts +0 -7
  235. package/dist/types/components/Scrollbar/Scrollbar.d.ts +0 -27
  236. package/dist/types/components/Surface/Surface.d.ts +0 -22
  237. package/dist/types/components/Toast/Toast.d.ts +0 -16
  238. package/dist/types/components/Toast/toast-service.d.ts +0 -24
  239. package/src/react/ds-accordion.ts +0 -27
  240. package/src/react/ds-breadcrumb.ts +0 -27
  241. package/src/react/ds-button-unfilled-icon.ts +0 -33
  242. package/src/react/ds-card-data-viz.ts +0 -26
  243. package/src/react/ds-header.ts +0 -26
  244. package/src/react/ds-scrollbar.ts +0 -26
  245. package/src/react/ds-surface.ts +0 -26
  246. package/src/react/ds-toast-provider.ts +0 -26
  247. package/src/wc/components/Accordion/Accordion.tsx +0 -144
  248. package/src/wc/components/Breadcrumb/Breadcrumb.tsx +0 -61
  249. package/src/wc/components/ButtonUnfilledIcon/ButtonUnfilledIcon.tsx +0 -129
  250. package/src/wc/components/ButtonUnfilledIcon/index.ts +0 -1
  251. package/src/wc/components/CardDataViz/index.ts +0 -1
  252. package/src/wc/components/Fade/Fade.tsx +0 -58
  253. package/src/wc/components/Fade/index.ts +0 -1
  254. package/src/wc/components/Header/Header.tsx +0 -33
  255. package/src/wc/components/Scrollbar/Scrollbar.tsx +0 -189
  256. package/src/wc/components/Surface/Surface.tsx +0 -81
  257. package/src/wc/components/Toast/Toast.tsx +0 -179
  258. package/src/wc/components/Toast/toast-service.ts +0 -67
  259. /package/dist/components/{ds-button-unfilled-icon.js.map → ds-button-unfilled.js.map} +0 -0
  260. /package/dist/components/{p-8Nt92j1-.js.map → p-B82KZX9D.js.map} +0 -0
  261. /package/dist/components/{p-DdFUTZ3y.js.map → p-Be3PHv34.js.map} +0 -0
  262. /package/dist/components/{p-DOU4cbpc.js.map → p-CtwNUCnp.js.map} +0 -0
@@ -1,26 +0,0 @@
1
- 'use client';
2
-
3
- /**
4
- * This file was automatically generated by the Stencil React Output Target.
5
- * Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
6
- */
7
-
8
- /* eslint-disable */
9
-
10
- import type { StencilReactComponent } from '@stencil/react-output-target/runtime';
11
- import { createComponent } from '@stencil/react-output-target/runtime';
12
- import React from 'react';
13
-
14
- import type { Components } from "@ds-mo/ui/dist/components";
15
- import { DsHeader as DsHeaderElement, defineCustomElement as defineDsHeader } from "@ds-mo/ui/dist/components/ds-header.js";
16
-
17
- export type DsHeaderEvents = NonNullable<unknown>;
18
-
19
- export const DsHeader: StencilReactComponent<DsHeaderElement, DsHeaderEvents, Components.DsHeader> = /*@__PURE__*/ createComponent<DsHeaderElement, DsHeaderEvents, Components.DsHeader>({
20
- tagName: 'ds-header',
21
- elementClass: DsHeaderElement,
22
- // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
23
- react: React,
24
- events: {} as DsHeaderEvents,
25
- defineCustomElement: defineDsHeader
26
- });
@@ -1,26 +0,0 @@
1
- 'use client';
2
-
3
- /**
4
- * This file was automatically generated by the Stencil React Output Target.
5
- * Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
6
- */
7
-
8
- /* eslint-disable */
9
-
10
- import type { StencilReactComponent } from '@stencil/react-output-target/runtime';
11
- import { createComponent } from '@stencil/react-output-target/runtime';
12
- import React from 'react';
13
-
14
- import type { Components } from "@ds-mo/ui/dist/components";
15
- import { DsScrollbar as DsScrollbarElement, defineCustomElement as defineDsScrollbar } from "@ds-mo/ui/dist/components/ds-scrollbar.js";
16
-
17
- export type DsScrollbarEvents = NonNullable<unknown>;
18
-
19
- export const DsScrollbar: StencilReactComponent<DsScrollbarElement, DsScrollbarEvents, Components.DsScrollbar> = /*@__PURE__*/ createComponent<DsScrollbarElement, DsScrollbarEvents, Components.DsScrollbar>({
20
- tagName: 'ds-scrollbar',
21
- elementClass: DsScrollbarElement,
22
- // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
23
- react: React,
24
- events: {} as DsScrollbarEvents,
25
- defineCustomElement: defineDsScrollbar
26
- });
@@ -1,26 +0,0 @@
1
- 'use client';
2
-
3
- /**
4
- * This file was automatically generated by the Stencil React Output Target.
5
- * Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
6
- */
7
-
8
- /* eslint-disable */
9
-
10
- import type { StencilReactComponent } from '@stencil/react-output-target/runtime';
11
- import { createComponent } from '@stencil/react-output-target/runtime';
12
- import React from 'react';
13
-
14
- import type { Components } from "@ds-mo/ui/dist/components";
15
- import { DsSurface as DsSurfaceElement, defineCustomElement as defineDsSurface } from "@ds-mo/ui/dist/components/ds-surface.js";
16
-
17
- export type DsSurfaceEvents = NonNullable<unknown>;
18
-
19
- export const DsSurface: StencilReactComponent<DsSurfaceElement, DsSurfaceEvents, Components.DsSurface> = /*@__PURE__*/ createComponent<DsSurfaceElement, DsSurfaceEvents, Components.DsSurface>({
20
- tagName: 'ds-surface',
21
- elementClass: DsSurfaceElement,
22
- // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
23
- react: React,
24
- events: {} as DsSurfaceEvents,
25
- defineCustomElement: defineDsSurface
26
- });
@@ -1,26 +0,0 @@
1
- 'use client';
2
-
3
- /**
4
- * This file was automatically generated by the Stencil React Output Target.
5
- * Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
6
- */
7
-
8
- /* eslint-disable */
9
-
10
- import type { StencilReactComponent } from '@stencil/react-output-target/runtime';
11
- import { createComponent } from '@stencil/react-output-target/runtime';
12
- import React from 'react';
13
-
14
- import type { Components } from "@ds-mo/ui/dist/components";
15
- import { DsToastProvider as DsToastProviderElement, defineCustomElement as defineDsToastProvider } from "@ds-mo/ui/dist/components/ds-toast-provider.js";
16
-
17
- export type DsToastProviderEvents = NonNullable<unknown>;
18
-
19
- export const DsToastProvider: StencilReactComponent<DsToastProviderElement, DsToastProviderEvents, Components.DsToastProvider> = /*@__PURE__*/ createComponent<DsToastProviderElement, DsToastProviderEvents, Components.DsToastProvider>({
20
- tagName: 'ds-toast-provider',
21
- elementClass: DsToastProviderElement,
22
- // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
23
- react: React,
24
- events: {} as DsToastProviderEvents,
25
- defineCustomElement: defineDsToastProvider
26
- });
@@ -1,144 +0,0 @@
1
- import { Component, Prop, State, Event, EventEmitter, Element, Watch, h, Host } from '@stencil/core';
2
-
3
- export interface AccordionItemData {
4
- id: string;
5
- label: string;
6
- content?: string;
7
- inactive?: boolean;
8
- }
9
-
10
- let idCounter = 0;
11
-
12
- @Component({
13
- tag: 'ds-accordion',
14
- styleUrl: 'Accordion.css',
15
- scoped: true,
16
- })
17
- export class Accordion {
18
- @Element() el!: HTMLElement;
19
-
20
- @Prop() items: AccordionItemData[] = [];
21
- @Prop() multiple: boolean = false;
22
- /** Comma-separated list of expanded item IDs for controlled mode. */
23
- @Prop({ mutable: true }) expandedIds: string = '';
24
-
25
- @State() private internalIds: string[] = [];
26
- @State() private heights: Record<string, number> = {};
27
-
28
- @Event() dsExpandedChange!: EventEmitter<string[]>;
29
-
30
- private instanceId = ++idCounter;
31
- private resizeObservers: Map<string, ResizeObserver> = new Map();
32
-
33
- private get activeIds(): string[] {
34
- if (this.expandedIds) return this.expandedIds.split(',').map(s => s.trim()).filter(Boolean);
35
- return this.internalIds;
36
- }
37
-
38
- componentDidLoad() {
39
- this.bindResizeObservers();
40
- }
41
-
42
- disconnectedCallback() {
43
- this.resizeObservers.forEach(ro => ro.disconnect());
44
- this.resizeObservers.clear();
45
- }
46
-
47
- @Watch('items')
48
- onItemsChange() {
49
- requestAnimationFrame(() => {
50
- this.bindResizeObservers();
51
- this.measureAll();
52
- });
53
- }
54
-
55
- private bindResizeObservers() {
56
- this.resizeObservers.forEach(ro => ro.disconnect());
57
- this.resizeObservers.clear();
58
-
59
- this.items.forEach(item => {
60
- const inner = this.el.querySelector(`[data-inner="${item.id}"]`) as HTMLElement | null;
61
- if (!inner) return;
62
- const ro = new ResizeObserver(() => {
63
- this.heights = { ...this.heights, [item.id]: inner.scrollHeight };
64
- });
65
- ro.observe(inner);
66
- this.resizeObservers.set(item.id, ro);
67
- });
68
- }
69
-
70
- private measureAll() {
71
- const next: Record<string, number> = { ...this.heights };
72
- this.items.forEach(item => {
73
- const inner = this.el.querySelector(`[data-inner="${item.id}"]`) as HTMLElement | null;
74
- if (inner) next[item.id] = inner.scrollHeight;
75
- });
76
- this.heights = next;
77
- }
78
-
79
- private toggle(id: string) {
80
- const current = this.activeIds;
81
- let next: string[];
82
- if (current.includes(id)) {
83
- next = current.filter(x => x !== id);
84
- } else {
85
- next = this.multiple ? [...current, id] : [id];
86
- }
87
- this.internalIds = next;
88
- this.dsExpandedChange.emit(next);
89
- }
90
-
91
- render() {
92
- const activeIds = this.activeIds;
93
-
94
- return (
95
- <Host class="accordion">
96
- {this.items.map(item => {
97
- const isExpanded = activeIds.includes(item.id);
98
- const triggerId = `ds-accordion-${this.instanceId}-trigger-${item.id}`;
99
- const panelId = `ds-accordion-${this.instanceId}-panel-${item.id}`;
100
- const bodyHeight = this.heights[item.id] ?? 0;
101
-
102
- return (
103
- <div
104
- key={item.id}
105
- class={{ item: true, 'item--inactive': !!item.inactive }}
106
- >
107
- <button
108
- type="button"
109
- id={triggerId}
110
- class="trigger"
111
- onClick={() => !item.inactive && this.toggle(item.id)}
112
- aria-expanded={isExpanded}
113
- aria-controls={panelId}
114
- aria-disabled={item.inactive || undefined}
115
- tabIndex={item.inactive ? -1 : 0}
116
- >
117
- <span class="text-body-medium-emphasis">{item.label}</span>
118
- <span
119
- class={{ chevron: true, 'chevron--open': isExpanded }}
120
- aria-hidden="true"
121
- >&#x203A;</span>
122
- </button>
123
- <div
124
- id={panelId}
125
- role="region"
126
- aria-labelledby={triggerId}
127
- class="body"
128
- style={{ height: isExpanded ? `${bodyHeight}px` : '0' }}
129
- aria-hidden={!isExpanded}
130
- >
131
- <div class="body-inner" data-inner={item.id}>
132
- {item.content
133
- ? <span class="text-body-medium">{item.content}</span>
134
- : <slot name={item.id} />
135
- }
136
- </div>
137
- </div>
138
- </div>
139
- );
140
- })}
141
- </Host>
142
- );
143
- }
144
- }
@@ -1,61 +0,0 @@
1
- import { Component, Prop, Event, EventEmitter, h, Host } from '@stencil/core';
2
-
3
- export interface BreadcrumbItem {
4
- label: string;
5
- href?: string;
6
- }
7
-
8
- @Component({
9
- tag: 'ds-breadcrumb',
10
- styleUrl: 'Breadcrumb.css',
11
- scoped: true,
12
- })
13
- export class Breadcrumb {
14
- @Prop() items: BreadcrumbItem[] = [];
15
- @Prop() separator: string = '/';
16
-
17
- @Event() dsNavigate!: EventEmitter<{ item: BreadcrumbItem; index: number }>;
18
-
19
- private handleClick(item: BreadcrumbItem, index: number, e: MouseEvent) {
20
- if (!item.href) {
21
- e.preventDefault();
22
- }
23
- this.dsNavigate.emit({ item, index });
24
- }
25
-
26
- render() {
27
- return (
28
- <Host>
29
- <nav aria-label="Breadcrumb" class="breadcrumb">
30
- <ol class="list">
31
- {this.items.map((item, i) => {
32
- const isLast = i === this.items.length - 1;
33
- return (
34
- <li class="item" key={i}>
35
- {isLast ? (
36
- <span class="text-body-medium-emphasis current" aria-current="page">
37
- {item.label}
38
- </span>
39
- ) : (
40
- <span class="item-inner">
41
- <a
42
- href={item.href ?? '#'}
43
- class="link text-body-medium"
44
- onClick={e => this.handleClick(item, i, e)}
45
- >
46
- {item.label}
47
- </a>
48
- <span class="separator text-body-small" aria-hidden="true">
49
- {this.separator}
50
- </span>
51
- </span>
52
- )}
53
- </li>
54
- );
55
- })}
56
- </ol>
57
- </nav>
58
- </Host>
59
- );
60
- }
61
- }
@@ -1,129 +0,0 @@
1
- import { Component, Element, Event, EventEmitter, h, Host, Method, Prop } from '@stencil/core';
2
-
3
- export type ButtonUnfilledIconOnBackgroundContrast = 'default' | 'medium' | 'bold' | 'strong';
4
-
5
- export type ButtonUnfilledIconBackground = 'always-dark' | 'navigation';
6
-
7
- @Component({
8
- tag: 'ds-button-unfilled-icon',
9
- styleUrl: 'ButtonUnfilledIcon.css',
10
- scoped: true,
11
- })
12
- export class ButtonUnfilledIcon {
13
- @Element() el!: HTMLElement;
14
-
15
- /** Icon name passed to <ds-icon>. */
16
- @Prop() icon: string = '';
17
-
18
- /** Active/selected visual state. */
19
- @Prop() isActive: boolean = false;
20
-
21
- /** When active, render the active interaction fill. Shell chrome can disable this while keeping active icon colour. */
22
- @Prop() activeFill: boolean = true;
23
-
24
- /** Show a 1px tertiary border without changing the interaction model. */
25
- @Prop() hasBorder: boolean = false;
26
-
27
- /** Show a notification dot at the top-right of the icon zone. */
28
- @Prop() dot: boolean = false;
29
-
30
- /** Disables interaction. */
31
- @Prop() inactive: boolean = false;
32
-
33
- /** Native button type. */
34
- @Prop() type: 'button' | 'submit' | 'reset' = 'button';
35
-
36
- /**
37
- * Foreground and interaction tokens when the button sits on a contrasting parent
38
- * background (default, medium, bold, or strong).
39
- */
40
- @Prop({ attribute: 'on-background-contrast' })
41
- backgroundContrast?: ButtonUnfilledIconOnBackgroundContrast;
42
-
43
- /** Parent surface context for navigation and always-dark chrome. */
44
- @Prop() background: ButtonUnfilledIconBackground | undefined;
45
-
46
- @Prop({ attribute: 'aria-label' }) ariaLabel: string = 'action';
47
- @Prop() controls: string | undefined;
48
- @Prop() expanded: boolean | undefined;
49
- @Prop() haspopup: string | undefined;
50
- @Prop() pressed: boolean | undefined;
51
-
52
- /**
53
- * Native `tabindex` for roving keyboard groups in shell chrome.
54
- * Omit for the default button tab stop (`0`).
55
- */
56
- @Prop({ attribute: 'tab-index' }) focusTabIndex?: number;
57
-
58
- @Event() dsClick!: EventEmitter<MouseEvent>;
59
- @Event() dsChange!: EventEmitter<boolean>;
60
-
61
- private buttonEl: HTMLButtonElement | null = null;
62
-
63
- @Method()
64
- async setFocus() {
65
- this.buttonEl?.focus();
66
- }
67
-
68
- private handleClick = (event: MouseEvent) => {
69
- if (this.inactive) return;
70
- this.dsClick.emit(event);
71
- this.dsChange.emit(!this.isActive);
72
- };
73
-
74
- private effectiveContrast(): ButtonUnfilledIconOnBackgroundContrast {
75
- return this.backgroundContrast ?? 'default';
76
- }
77
-
78
- render() {
79
- const bg = this.background;
80
- const contrast = this.effectiveContrast();
81
-
82
- const cls: Record<string, boolean> = {
83
- 'button-icon': true,
84
- 'ds-focus-ring-inset': true,
85
- 'button-icon--active': this.isActive,
86
- 'button-icon--active-fill': this.isActive && this.activeFill,
87
- 'button-icon--bordered': this.hasBorder,
88
- 'button-icon--inactive': this.inactive,
89
- 'button-icon--contrast-medium': contrast === 'medium',
90
- 'button-icon--contrast-bold': contrast === 'bold',
91
- 'button-icon--contrast-strong': contrast === 'strong',
92
- 'button-icon--on-always-dark': bg === 'always-dark',
93
- 'button-icon--on-navigation': bg === 'navigation',
94
- };
95
-
96
- return (
97
- <Host tabIndex={-1}>
98
- <button
99
- ref={el => {
100
- this.buttonEl = el ?? null;
101
- }}
102
- type={this.type}
103
- class={cls}
104
- disabled={this.inactive}
105
- tabIndex={this.focusTabIndex ?? 0}
106
- aria-label={this.ariaLabel}
107
- aria-controls={this.controls}
108
- aria-expanded={this.expanded === undefined ? undefined : String(this.expanded)}
109
- aria-haspopup={this.haspopup}
110
- aria-pressed={this.pressed === undefined ? undefined : String(this.pressed)}
111
- onClick={this.handleClick}
112
- >
113
- <span class="button-icon__icon-wrap">
114
- <ds-icon name={this.icon} size="md" color="inherit" />
115
- {this.dot && (
116
- <ds-badge
117
- class="button-icon__dot"
118
- variant="dot"
119
- background="var(--ds-button-unfilled-icon-dot-ring)"
120
- label=""
121
- aria-hidden="true"
122
- />
123
- )}
124
- </span>
125
- </button>
126
- </Host>
127
- );
128
- }
129
- }
@@ -1 +0,0 @@
1
- export type { ButtonUnfilledIconBackground, ButtonUnfilledIconOnBackgroundContrast } from './ButtonUnfilledIcon';
@@ -1 +0,0 @@
1
- export type { CardDataVizWidth } from './CardDataViz';
@@ -1,58 +0,0 @@
1
- import { Component, Prop, h, Host } from '@stencil/core';
2
- import {
3
- scrollEdgeFadeClassMap,
4
- scrollEdgeFadeSizeStyle,
5
- type ScrollEdgeFadeEdge,
6
- type ScrollEdgeFadeSize,
7
- type ScrollEdgeFadeSizeToken,
8
- } from '../../utils/scroll-edge-fade';
9
-
10
- /** @deprecated Use `ScrollEdgeFadeEdge` from `@ds-mo/ui/utils`. */
11
- export type FadeSide = ScrollEdgeFadeEdge;
12
-
13
- /** @deprecated Use `ScrollEdgeFadeSizeToken` from `@ds-mo/ui/utils`. */
14
- export type FadeSizeToken = ScrollEdgeFadeSizeToken;
15
-
16
- /** @deprecated Use `ScrollEdgeFadeSize` from `@ds-mo/ui/utils`. */
17
- export type FadeSize = ScrollEdgeFadeSize;
18
-
19
- @Component({
20
- tag: 'ds-fade',
21
- styleUrl: 'Fade.css',
22
- scoped: true,
23
- })
24
- export class Fade {
25
- /** Edge where content fades as it approaches the scroll boundary. */
26
- @Prop() side: FadeSide = 'bottom';
27
-
28
- /** Fade depth along the fade axis. Accepts dimension size token names or any CSS length. */
29
- @Prop() size: FadeSize = 'size-600';
30
-
31
- /**
32
- * Deprecated alias for size. Kept for existing consumers that pass a raw CSS length.
33
- * Prefer `size`.
34
- */
35
- @Prop() height: string | undefined;
36
-
37
- /** Controls the mask without removing the scroll container from layout. */
38
- @Prop() visible: boolean = true;
39
-
40
- render() {
41
- return (
42
- <Host>
43
- <div
44
- class={{
45
- 'fade__scroll': true,
46
- ...scrollEdgeFadeClassMap({
47
- edges: this.side,
48
- hidden: !this.visible,
49
- }),
50
- }}
51
- style={scrollEdgeFadeSizeStyle(this.size, this.height) as Record<string, string>}
52
- >
53
- <slot />
54
- </div>
55
- </Host>
56
- );
57
- }
58
- }
@@ -1 +0,0 @@
1
- export type { FadeSide, FadeSize, FadeSizeToken } from './Fade';
@@ -1,33 +0,0 @@
1
- import { Component, Prop, h, Host } from '@stencil/core';
2
-
3
- export type HeaderBackground = 'primary' | 'secondary' | 'transparent' | 'translucent';
4
-
5
- @Component({
6
- tag: 'ds-header',
7
- styleUrl: 'Header.css',
8
- scoped: true,
9
- })
10
- export class Header {
11
- @Prop() heading: string | undefined;
12
- @Prop() background: HeaderBackground = 'secondary';
13
-
14
- render() {
15
- return (
16
- <Host
17
- class={{ header: true, [`bg-${this.background}`]: true }}
18
- role="banner"
19
- >
20
- <div class="left">
21
- <slot name="left" />
22
- {this.heading && <span class="title text-title-small">{this.heading}</span>}
23
- </div>
24
- <div class="center">
25
- <slot name="center" />
26
- </div>
27
- <div class="right">
28
- <slot name="right" />
29
- </div>
30
- </Host>
31
- );
32
- }
33
- }