@ds-mo/ui 15.10.1 → 15.11.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 (155) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +13 -11
  4. package/dist/angular/ds-shell-app.d.ts +3 -8
  5. package/dist/angular/ds-shell-tools.d.ts +3 -8
  6. package/dist/components/ds-agent-questionnaire.js +1 -1
  7. package/dist/components/ds-agent-response.js +1 -1
  8. package/dist/components/ds-banner.js +1 -1
  9. package/dist/components/ds-bar-nav.js +1 -1
  10. package/dist/components/ds-bar-page-title.js +1 -1
  11. package/dist/components/ds-bar-title.js +1 -1
  12. package/dist/components/ds-bar-workflow.js +1 -1
  13. package/dist/components/ds-button-unfilled.js +1 -1
  14. package/dist/components/ds-calendar.js +1 -1
  15. package/dist/components/ds-card-chart.js +1 -1
  16. package/dist/components/ds-card-overview.js +1 -1
  17. package/dist/components/ds-card-overview.js.map +1 -1
  18. package/dist/components/ds-card-setting.js +1 -1
  19. package/dist/components/ds-chart.js +1 -1
  20. package/dist/components/ds-chart.js.map +1 -1
  21. package/dist/components/ds-code-block.js +1 -1
  22. package/dist/components/ds-data-customize.js +1 -1
  23. package/dist/components/ds-data-filter.js +1 -1
  24. package/dist/components/ds-data-group.js +1 -1
  25. package/dist/components/ds-data-preferences.js +1 -1
  26. package/dist/components/ds-data-saved-views.js +1 -1
  27. package/dist/components/ds-data-search.js +1 -1
  28. package/dist/components/ds-data-sort.js +1 -1
  29. package/dist/components/ds-filter-menu.js +1 -1
  30. package/dist/components/ds-input-date.js +1 -1
  31. package/dist/components/ds-input-time.js +1 -1
  32. package/dist/components/ds-input.js +1 -1
  33. package/dist/components/ds-markdown.js +1 -1
  34. package/dist/components/ds-menu.js +1 -1
  35. package/dist/components/ds-message-actions.js +1 -1
  36. package/dist/components/ds-message-composer.js +1 -1
  37. package/dist/components/ds-message-scroller.js +1 -1
  38. package/dist/components/ds-mobile-bar-nav.js +1 -1
  39. package/dist/components/ds-mobile-header.js +1 -1
  40. package/dist/components/ds-mobile-section-switcher.js +1 -1
  41. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  42. package/dist/components/ds-modal.js +1 -1
  43. package/dist/components/ds-pagination.js +1 -1
  44. package/dist/components/ds-panel-nav.js +1 -1
  45. package/dist/components/ds-panel-tool-header.js +1 -1
  46. package/dist/components/ds-panel-tool-search.js +1 -1
  47. package/dist/components/ds-panel-tools.js +1 -1
  48. package/dist/components/ds-scroll-overlay.js +1 -1
  49. package/dist/components/ds-select.js +1 -1
  50. package/dist/components/ds-shell-app.js +1 -1
  51. package/dist/components/ds-shell-app.js.map +1 -1
  52. package/dist/components/ds-shell-page.js +1 -1
  53. package/dist/components/ds-shell-tools.js +1 -1
  54. package/dist/components/ds-table.js +1 -1
  55. package/dist/components/ds-table.js.map +1 -1
  56. package/dist/components/ds-toast.js +1 -1
  57. package/dist/components/ds-toast.js.map +1 -1
  58. package/dist/components/ds-tooltip.js +1 -1
  59. package/dist/components/{p-PNY7auMh.js → p-B5rN3slq.js} +2 -2
  60. package/dist/components/{p-kQ6wvk-r.js → p-B9Q7fXxW.js} +2 -2
  61. package/dist/components/p-BNnw_O4e.js +2 -0
  62. package/dist/components/p-BNnw_O4e.js.map +1 -0
  63. package/dist/components/{p-BgpzSEWv.js → p-BT6xQogY.js} +2 -2
  64. package/dist/components/{p-YmJYwnhW.js → p-Ba-dSshd.js} +2 -2
  65. package/dist/components/{p-YmJYwnhW.js.map → p-Ba-dSshd.js.map} +1 -1
  66. package/dist/components/p-BkajUPiA.js +2 -0
  67. package/dist/components/p-BkajUPiA.js.map +1 -0
  68. package/dist/components/{p-lJeAJKa5.js → p-BqIRExej.js} +2 -2
  69. package/dist/components/{p-BtSEQ-FW.js → p-C8D853vs.js} +2 -2
  70. package/dist/components/{p-CHYYRdRJ.js → p-CEB8RFih.js} +2 -2
  71. package/dist/components/{p-DuCCuJKI.js → p-CGKjjJZm.js} +2 -2
  72. package/dist/components/{p-2ZV8JA88.js → p-CMrHRjjH.js} +2 -2
  73. package/dist/components/{p-DwuqJhR5.js → p-CPNA8raE.js} +2 -2
  74. package/dist/components/{p-ioGH5SoA.js → p-CVYjLzYI.js} +2 -2
  75. package/dist/components/p-CVYjLzYI.js.map +1 -0
  76. package/dist/components/p-CW-7vLUB.js +2 -0
  77. package/dist/components/p-CW-7vLUB.js.map +1 -0
  78. package/dist/components/{p-BrB05_X8.js → p-CaNMVLhm.js} +2 -2
  79. package/dist/components/{p-hmvu1lmP.js → p-Cxk1A7Sx.js} +2 -2
  80. package/dist/components/p-Cxk1A7Sx.js.map +1 -0
  81. package/dist/components/{p-BjLGayCj.js → p-D-cZ6cRI.js} +2 -2
  82. package/dist/components/{p-DQeUT9o2.js → p-D4r6oWyQ.js} +2 -2
  83. package/dist/components/{p-DoRgzvup.js → p-DGDF4NMV.js} +2 -2
  84. package/dist/components/{p-DSpKpoSG.js → p-DKG26pp5.js} +2 -2
  85. package/dist/components/p-DfphSI9S.js +2 -0
  86. package/dist/components/p-DfphSI9S.js.map +1 -0
  87. package/dist/components/p-DfwvHxYi.js +2 -0
  88. package/dist/components/p-DfwvHxYi.js.map +1 -0
  89. package/dist/components/{p-BQE2Uj4p.js → p-DfzXyVoM.js} +2 -2
  90. package/dist/components/{p-BQE2Uj4p.js.map → p-DfzXyVoM.js.map} +1 -1
  91. package/dist/components/{p-z_8aZHHo.js → p-DixX2_Bd.js} +2 -2
  92. package/dist/components/{p-CipTqNIr.js → p-Djkk338n.js} +2 -2
  93. package/dist/components/{p-Dx7wJaLv.js → p-DvMCOJwc.js} +2 -2
  94. package/dist/components/{p-ChsBscqZ.js → p-DwFnt0W0.js} +2 -2
  95. package/dist/components/{p-uAtciSyr.js → p-OFJpWJcN.js} +2 -2
  96. package/dist/components/{p-Bx_72ylJ.js → p-S5QCVAdH.js} +2 -2
  97. package/dist/docs/components.json +13 -13
  98. package/dist/lib/utils/index.js +3 -1
  99. package/dist/lib/utils/index.js.map +2 -2
  100. package/dist/lib/utils/resolve-css-length-px.d.ts +1 -1
  101. package/dist/mcp-data/registry/card-overview.json +1 -1
  102. package/dist/mcp-data/registry/chart.json +3 -3
  103. package/dist/mcp-data/registry/code-block.json +3 -2
  104. package/dist/mcp-data/registry/mobile-bar-nav.json +3 -3
  105. package/dist/mcp-data/registry/mobile-header.json +3 -3
  106. package/dist/mcp-data/registry/mobile-section-switcher.json +3 -2
  107. package/dist/mcp-data/registry/mobile-sheet-nav.json +6 -6
  108. package/dist/mcp-data/registry/modal.json +1 -1
  109. package/dist/mcp-data/registry/panel-tools.json +1 -1
  110. package/dist/mcp-data/registry/registry.json +12 -10
  111. package/dist/mcp-data/registry/shell-app.json +3 -3
  112. package/dist/mcp-data/registry/shell-tools.json +4 -4
  113. package/dist/mcp-data/registry/table.json +2 -2
  114. package/dist/mcp-data/registry/toast.json +1 -1
  115. package/dist/react/ds-shell-app.d.ts +2 -5
  116. package/dist/react/ds-shell-tools.d.ts +2 -5
  117. package/dist/styles/responsive.css +293 -0
  118. package/dist/types/components/CodeBlock/CodeBlock.d.ts +8 -0
  119. package/dist/types/components/ShellApp/ShellApp.d.ts +2 -5
  120. package/dist/types/components/ShellTools/ShellTools.d.ts +2 -5
  121. package/dist/types/components.d.ts +4 -10
  122. package/dist/types/utils/resolve-css-length-px.d.ts +1 -1
  123. package/package.json +2 -1
  124. package/dist/components/p-BE9ladwu.js +0 -2
  125. package/dist/components/p-BE9ladwu.js.map +0 -1
  126. package/dist/components/p-BfdYb8L4.js +0 -2
  127. package/dist/components/p-BfdYb8L4.js.map +0 -1
  128. package/dist/components/p-BuwYiPCW.js +0 -2
  129. package/dist/components/p-BuwYiPCW.js.map +0 -1
  130. package/dist/components/p-cktJHlYv.js +0 -2
  131. package/dist/components/p-cktJHlYv.js.map +0 -1
  132. package/dist/components/p-hmvu1lmP.js.map +0 -1
  133. package/dist/components/p-iEhBF5Oi.js +0 -2
  134. package/dist/components/p-iEhBF5Oi.js.map +0 -1
  135. package/dist/components/p-ioGH5SoA.js.map +0 -1
  136. /package/dist/components/{p-PNY7auMh.js.map → p-B5rN3slq.js.map} +0 -0
  137. /package/dist/components/{p-kQ6wvk-r.js.map → p-B9Q7fXxW.js.map} +0 -0
  138. /package/dist/components/{p-BgpzSEWv.js.map → p-BT6xQogY.js.map} +0 -0
  139. /package/dist/components/{p-lJeAJKa5.js.map → p-BqIRExej.js.map} +0 -0
  140. /package/dist/components/{p-BtSEQ-FW.js.map → p-C8D853vs.js.map} +0 -0
  141. /package/dist/components/{p-CHYYRdRJ.js.map → p-CEB8RFih.js.map} +0 -0
  142. /package/dist/components/{p-DuCCuJKI.js.map → p-CGKjjJZm.js.map} +0 -0
  143. /package/dist/components/{p-2ZV8JA88.js.map → p-CMrHRjjH.js.map} +0 -0
  144. /package/dist/components/{p-DwuqJhR5.js.map → p-CPNA8raE.js.map} +0 -0
  145. /package/dist/components/{p-BrB05_X8.js.map → p-CaNMVLhm.js.map} +0 -0
  146. /package/dist/components/{p-BjLGayCj.js.map → p-D-cZ6cRI.js.map} +0 -0
  147. /package/dist/components/{p-DQeUT9o2.js.map → p-D4r6oWyQ.js.map} +0 -0
  148. /package/dist/components/{p-DoRgzvup.js.map → p-DGDF4NMV.js.map} +0 -0
  149. /package/dist/components/{p-DSpKpoSG.js.map → p-DKG26pp5.js.map} +0 -0
  150. /package/dist/components/{p-z_8aZHHo.js.map → p-DixX2_Bd.js.map} +0 -0
  151. /package/dist/components/{p-CipTqNIr.js.map → p-Djkk338n.js.map} +0 -0
  152. /package/dist/components/{p-Dx7wJaLv.js.map → p-DvMCOJwc.js.map} +0 -0
  153. /package/dist/components/{p-ChsBscqZ.js.map → p-DwFnt0W0.js.map} +0 -0
  154. /package/dist/components/{p-uAtciSyr.js.map → p-OFJpWJcN.js.map} +0 -0
  155. /package/dist/components/{p-Bx_72ylJ.js.map → p-S5QCVAdH.js.map} +0 -0
@@ -353,7 +353,7 @@
353
353
  "files": [
354
354
  {
355
355
  "path": "src/wc/components/Toast/Toast.css",
356
- "content": "@import '../../utils/visually-hidden.css';\n@import '../../utils/forced-colors.css';\n@import '../../utils/radius.css';\n\n:host {\n display: contents;\n}\n\n.toast-region {\n position: fixed;\n inset: 0;\n z-index: var(--dimension-z-index-floating);\n pointer-events: none;\n outline: none;\n}\n\n.toast-viewport {\n position: absolute;\n right: var(--dimension-space-200);\n bottom: var(--dimension-space-200);\n display: grid;\n width: min(var(--dimension-card-width-sm), calc(100vw - 2 * var(--dimension-space-200)));\n}\n\n@media (max-width: 767px) {\n :host([avoid-mobile-shell-bar]) .toast-viewport {\n bottom: calc(\n var(--dimension-space-200) + var(--dimension-stroke-width-012) + var(--dimension-space-100) +\n var(--dimension-size-500) + max(var(--dimension-space-100), env(safe-area-inset-bottom))\n );\n }\n}\n\n.toast-positioner {\n grid-area: 1 / 1;\n align-self: end;\n justify-self: center;\n width: 100%;\n pointer-events: auto;\n transform: translateY(calc(-1 * var(--toast-index) * var(--dimension-space-100)));\n transition:\n transform var(--effect-motion-short-3),\n width var(--effect-motion-short-3);\n}\n\n.toast-viewport:not([data-expanded]) .toast-positioner {\n width: calc(100% - 2 * var(--toast-index) * var(--dimension-space-100));\n}\n\n.toast-viewport[data-expanded] .toast-positioner {\n transform: translateY(calc(-1 * var(--toast-offset-y)));\n}\n\n.toast-positioner[data-limited] {\n visibility: hidden;\n pointer-events: none;\n}\n\n.toast-positioner--anchored {\n position: fixed;\n width: min(var(--dimension-card-width-sm), calc(100vw - 2 * var(--dimension-space-200)));\n transform: none;\n}\n\n.toast-positioner--anchored[data-positioned='false'] {\n visibility: hidden;\n}\n\n.toast-surface {\n position: relative;\n display: block;\n box-sizing: border-box;\n width: 100%;\n height: var(--toast-height, auto);\n padding: var(--dimension-space-200);\n overflow: hidden;\n color: var(--color-foreground-primary);\n background-color: var(--color-background-primary);\n border-radius: var(--ds-radius-modal);\n box-shadow: var(--effect-elevation-elevated-floating);\n transform: translate(var(--toast-swipe-movement-x), var(--toast-swipe-movement-y));\n animation: toast-enter var(--effect-motion-short-2) both;\n}\n\n.toast-positioner--ending .toast-surface {\n animation: toast-exit var(--effect-motion-short-3) both;\n}\n\n.toast-surface--swiping {\n transition: none;\n user-select: none;\n}\n\n.toast-content {\n display: flex;\n flex-direction: column;\n min-width: 0;\n padding-inline-end: var(--dimension-size-500);\n transition: opacity var(--effect-motion-short-3);\n}\n\n.toast-copy {\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: var(--typography-lineheight-md);\n margin-block: calc(-1 * var(--dimension-space-025));\n gap: var(--dimension-space-050);\n}\n\n.toast-title,\n.toast-description {\n min-width: 0;\n}\n\n.toast-action {\n align-self: start;\n margin-top: calc(var(--dimension-space-200) + var(--dimension-space-025));\n}\n\n.toast-close {\n position: absolute;\n top: var(--dimension-space-100);\n right: var(--dimension-space-100);\n transition: opacity var(--effect-motion-short-3);\n}\n\n.toast-viewport:not([data-expanded]) .toast-positioner[data-behind] .toast-content,\n.toast-viewport:not([data-expanded]) .toast-positioner[data-behind] .toast-close {\n opacity: 0;\n}\n\n@keyframes toast-enter {\n from {\n opacity: 0;\n transform: translateY(var(--dimension-space-100));\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes toast-exit {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .toast-positioner,\n .toast-surface,\n .toast-content,\n .toast-close,\n .toast-positioner--ending .toast-surface {\n transition: none;\n animation: none;\n }\n\n .toast-positioner--ending .toast-surface {\n opacity: 0;\n }\n}\n\n@media (forced-colors: active) {\n .toast-surface {\n box-shadow: none;\n outline: var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);\n outline-offset: calc(-1 * var(--dimension-stroke-width-012));\n }\n}\n",
356
+ "content": "@import '../../utils/visually-hidden.css';\n@import '../../utils/forced-colors.css';\n@import '../../utils/radius.css';\n\n:host {\n display: contents;\n}\n\n.toast-region {\n position: fixed;\n inset: 0;\n z-index: var(--dimension-z-index-floating);\n pointer-events: none;\n outline: none;\n}\n\n.toast-viewport {\n position: absolute;\n right: var(--dimension-space-200);\n bottom: var(--dimension-space-200);\n display: grid;\n width: min(var(--dimension-card-width-sm), calc(100vw - 2 * var(--dimension-space-200)));\n}\n\n@media (width < 768px) {\n :host([avoid-mobile-shell-bar]) .toast-viewport {\n bottom: calc(\n var(--dimension-space-200) + var(--dimension-space-100) + var(--dimension-size-400) +\n max(var(--dimension-space-100), env(safe-area-inset-bottom))\n );\n }\n}\n\n.toast-positioner {\n grid-area: 1 / 1;\n align-self: end;\n justify-self: center;\n width: 100%;\n pointer-events: auto;\n transform: translateY(calc(-1 * var(--toast-index) * var(--dimension-space-100)));\n transition:\n transform var(--effect-motion-short-3),\n width var(--effect-motion-short-3);\n}\n\n.toast-viewport:not([data-expanded]) .toast-positioner {\n width: calc(100% - 2 * var(--toast-index) * var(--dimension-space-100));\n}\n\n.toast-viewport[data-expanded] .toast-positioner {\n transform: translateY(calc(-1 * var(--toast-offset-y)));\n}\n\n.toast-positioner[data-limited] {\n visibility: hidden;\n pointer-events: none;\n}\n\n.toast-positioner--anchored {\n position: fixed;\n width: min(var(--dimension-card-width-sm), calc(100vw - 2 * var(--dimension-space-200)));\n transform: none;\n}\n\n.toast-positioner--anchored[data-positioned='false'] {\n visibility: hidden;\n}\n\n.toast-surface {\n position: relative;\n display: block;\n box-sizing: border-box;\n width: 100%;\n height: var(--toast-height, auto);\n padding: var(--dimension-space-200);\n overflow: hidden;\n color: var(--color-foreground-primary);\n background-color: var(--color-background-primary);\n border-radius: var(--ds-radius-modal);\n box-shadow: var(--effect-elevation-elevated-floating);\n transform: translate(var(--toast-swipe-movement-x), var(--toast-swipe-movement-y));\n animation: toast-enter var(--effect-motion-short-2) both;\n}\n\n.toast-positioner--ending .toast-surface {\n animation: toast-exit var(--effect-motion-short-3) both;\n}\n\n.toast-surface--swiping {\n transition: none;\n user-select: none;\n}\n\n.toast-content {\n display: flex;\n flex-direction: column;\n min-width: 0;\n padding-inline-end: var(--dimension-size-500);\n transition: opacity var(--effect-motion-short-3);\n}\n\n.toast-copy {\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: var(--typography-lineheight-md);\n margin-block: calc(-1 * var(--dimension-space-025));\n gap: var(--dimension-space-050);\n}\n\n.toast-title,\n.toast-description {\n min-width: 0;\n}\n\n.toast-action {\n align-self: start;\n margin-top: calc(var(--dimension-space-200) + var(--dimension-space-025));\n}\n\n.toast-close {\n position: absolute;\n top: var(--dimension-space-100);\n right: var(--dimension-space-100);\n transition: opacity var(--effect-motion-short-3);\n}\n\n.toast-viewport:not([data-expanded]) .toast-positioner[data-behind] .toast-content,\n.toast-viewport:not([data-expanded]) .toast-positioner[data-behind] .toast-close {\n opacity: 0;\n}\n\n@keyframes toast-enter {\n from {\n opacity: 0;\n transform: translateY(var(--dimension-space-100));\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes toast-exit {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .toast-positioner,\n .toast-surface,\n .toast-content,\n .toast-close,\n .toast-positioner--ending .toast-surface {\n transition: none;\n animation: none;\n }\n\n .toast-positioner--ending .toast-surface {\n opacity: 0;\n }\n}\n\n@media (forced-colors: active) {\n .toast-surface {\n box-shadow: none;\n outline: var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);\n outline-offset: calc(-1 * var(--dimension-stroke-width-012));\n }\n}\n",
357
357
  "type": "registry:ui"
358
358
  },
359
359
  {
@@ -3,7 +3,7 @@
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 BreadcrumbSelectDetail, type DsShellAppCustomEvent, type NavChromeStyle, type PanelNavChildSelectDetail, type PanelNavUserActionDetail, type PanelToolsRailAccessoryActionDetail, type PanelToolsToolId, type ShellResponsiveMode } from "@ds-mo/ui";
6
+ import { type BreadcrumbSelectDetail, type DsShellAppCustomEvent, type NavChromeStyle, type PanelNavChildSelectDetail, type PanelNavUserActionDetail, type PanelToolsHeaderActionDetail, type PanelToolsRailAccessoryActionDetail, type PanelToolsToolId, type ShellResponsiveMode } from "@ds-mo/ui";
7
7
  import type { Components } from "@ds-mo/ui/dist/components";
8
8
  import { DsShellApp as DsShellAppElement } from "@ds-mo/ui/dist/components/ds-shell-app.js";
9
9
  export type DsShellAppEvents = {
@@ -24,10 +24,7 @@ export type DsShellAppEvents = {
24
24
  onDsHeaderBack: EventName<DsShellAppCustomEvent<{
25
25
  tool: PanelToolsToolId;
26
26
  }>>;
27
- onDsHeaderAction: EventName<DsShellAppCustomEvent<{
28
- tool: PanelToolsToolId;
29
- id: string;
30
- }>>;
27
+ onDsHeaderAction: EventName<DsShellAppCustomEvent<PanelToolsHeaderActionDetail>>;
31
28
  onDsRailAccessoryAction: EventName<DsShellAppCustomEvent<PanelToolsRailAccessoryActionDetail>>;
32
29
  onDsPresentationChange: EventName<DsShellAppCustomEvent<{
33
30
  presentation: 'drawer' | 'fullscreen';
@@ -3,7 +3,7 @@
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 DsShellToolsCustomEvent, type PanelToolsRailAccessoryActionDetail, type PanelToolsToolId } from "@ds-mo/ui";
6
+ import { type DsShellToolsCustomEvent, type PanelToolsHeaderActionDetail, type PanelToolsRailAccessoryActionDetail, type PanelToolsToolId } from "@ds-mo/ui";
7
7
  import type { Components } from "@ds-mo/ui/dist/components";
8
8
  import { DsShellTools as DsShellToolsElement } from "@ds-mo/ui/dist/components/ds-shell-tools.js";
9
9
  export type DsShellToolsEvents = {
@@ -17,10 +17,7 @@ export type DsShellToolsEvents = {
17
17
  onDsHeaderBack: EventName<DsShellToolsCustomEvent<{
18
18
  tool: PanelToolsToolId;
19
19
  }>>;
20
- onDsHeaderAction: EventName<DsShellToolsCustomEvent<{
21
- tool: PanelToolsToolId;
22
- id: string;
23
- }>>;
20
+ onDsHeaderAction: EventName<DsShellToolsCustomEvent<PanelToolsHeaderActionDetail>>;
24
21
  onDsRailAccessoryAction: EventName<DsShellToolsCustomEvent<PanelToolsRailAccessoryActionDetail>>;
25
22
  };
26
23
  export declare const DsShellTools: StencilReactComponent<DsShellToolsElement, DsShellToolsEvents, Components.DsShellTools>;
@@ -0,0 +1,293 @@
1
+ /*
2
+ * Import after @ds-mo/tokens at the application root.
3
+ * Every dimensional category uses the same mobile multiplier.
4
+ * Capture independent length tokens on html before replacing their inherited
5
+ * values on body. A self-reference on the same element would create a cycle.
6
+ * Percentages, transform scales, z-index, and the activation breakpoint retain
7
+ * their structural meaning; only spatial lengths are scaled.
8
+ */
9
+ @media (width < 768px) {
10
+ :root {
11
+ --ds-responsive-scale: 1.25;
12
+ --dimension-size-base: calc(var(--dimension-base) * var(--ds-responsive-scale));
13
+ --dimension-space-base: calc(var(--dimension-base) * var(--ds-responsive-scale));
14
+ --dimension-radius-base: calc(var(--dimension-base) * var(--ds-responsive-scale));
15
+ --dimension-stroke-width-base: calc(var(--dimension-base) * var(--ds-responsive-scale));
16
+
17
+ --ds-responsive-source-typography-fontsize-xs: var(--typography-fontsize-xs);
18
+ --ds-responsive-source-typography-fontsize-sm: var(--typography-fontsize-sm);
19
+ --ds-responsive-source-typography-fontsize-md: var(--typography-fontsize-md);
20
+ --ds-responsive-source-typography-fontsize-lg: var(--typography-fontsize-lg);
21
+ --ds-responsive-source-typography-fontsize-xl: var(--typography-fontsize-xl);
22
+ --ds-responsive-source-typography-fontsize-2xl: var(--typography-fontsize-2xl);
23
+ --ds-responsive-source-typography-fontsize-3xl: var(--typography-fontsize-3xl);
24
+ --ds-responsive-source-typography-lineheight-xs: var(--typography-lineheight-xs);
25
+ --ds-responsive-source-typography-lineheight-sm: var(--typography-lineheight-sm);
26
+ --ds-responsive-source-typography-lineheight-md: var(--typography-lineheight-md);
27
+ --ds-responsive-source-typography-lineheight-lg: var(--typography-lineheight-lg);
28
+ --ds-responsive-source-typography-lineheight-xl: var(--typography-lineheight-xl);
29
+ --ds-responsive-source-typography-lineheight-2xl: var(--typography-lineheight-2xl);
30
+ --ds-responsive-source-typography-lineheight-3xl: var(--typography-lineheight-3xl);
31
+ --ds-responsive-source-typography-letterspacing-none: var(--typography-letterspacing-none);
32
+ --ds-responsive-source-typography-letterspacing-positive: var(
33
+ --typography-letterspacing-positive
34
+ );
35
+ --ds-responsive-source-typography-letterspacing-negative-half: var(
36
+ --typography-letterspacing-negative-half
37
+ );
38
+ --ds-responsive-source-typography-letterspacing-negative: var(
39
+ --typography-letterspacing-negative
40
+ );
41
+ --ds-responsive-source-typography-letterspacing-negative-double: var(
42
+ --typography-letterspacing-negative-double
43
+ );
44
+ --ds-responsive-source-typography-paragraphspacing-none: var(
45
+ --typography-paragraphspacing-none
46
+ );
47
+ --ds-responsive-source-typography-paragraphspacing-sm: var(--typography-paragraphspacing-sm);
48
+ --ds-responsive-source-typography-paragraphspacing-md: var(--typography-paragraphspacing-md);
49
+ --ds-responsive-source-typography-paragraphspacing-lg: var(--typography-paragraphspacing-lg);
50
+ --ds-responsive-source-dimension-card-width-xs: var(--dimension-card-width-xs);
51
+ --ds-responsive-source-dimension-card-width-sm: var(--dimension-card-width-sm);
52
+ --ds-responsive-source-dimension-card-width-md: var(--dimension-card-width-md);
53
+ --ds-responsive-source-dimension-card-width-lg: var(--dimension-card-width-lg);
54
+ --ds-responsive-source-dimension-modal-width-xs: var(--dimension-modal-width-xs);
55
+ --ds-responsive-source-dimension-modal-width-sm: var(--dimension-modal-width-sm);
56
+ --ds-responsive-source-dimension-modal-width-md: var(--dimension-modal-width-md);
57
+ --ds-responsive-source-dimension-modal-width-lg: var(--dimension-modal-width-lg);
58
+ --ds-responsive-source-dimension-modal-width-xl: var(--dimension-modal-width-xl);
59
+ --ds-responsive-source-dimension-modal-width-2xl: var(--dimension-modal-width-2xl);
60
+ --ds-responsive-source-dimension-form-width-xs: var(--dimension-form-width-xs);
61
+ --ds-responsive-source-dimension-form-width-sm: var(--dimension-form-width-sm);
62
+ --ds-responsive-source-dimension-form-width-md: var(--dimension-form-width-md);
63
+ --ds-responsive-source-dimension-form-width-lg: var(--dimension-form-width-lg);
64
+ --ds-responsive-source-dimension-form-width-xl: var(--dimension-form-width-xl);
65
+ --ds-responsive-source-dimension-table-column-width-xs: var(--dimension-table-column-width-xs);
66
+ --ds-responsive-source-dimension-table-column-width-sm: var(--dimension-table-column-width-sm);
67
+ --ds-responsive-source-dimension-table-column-width-md: var(--dimension-table-column-width-md);
68
+ --ds-responsive-source-dimension-table-column-width-lg: var(--dimension-table-column-width-lg);
69
+ --ds-responsive-source-dimension-table-column-width-xl: var(--dimension-table-column-width-xl);
70
+ --ds-responsive-source-dimension-menu-width-xs: var(--dimension-menu-width-xs);
71
+ --ds-responsive-source-dimension-menu-width-sm: var(--dimension-menu-width-sm);
72
+ --ds-responsive-source-dimension-menu-width-md: var(--dimension-menu-width-md);
73
+ --ds-responsive-source-dimension-menu-width-lg: var(--dimension-menu-width-lg);
74
+ --ds-responsive-source-dimension-tooltip-width-sm: var(--dimension-tooltip-width-sm);
75
+ --ds-responsive-source-dimension-tooltip-width-md: var(--dimension-tooltip-width-md);
76
+ --ds-responsive-source-dimension-tooltip-width-lg: var(--dimension-tooltip-width-lg);
77
+ --ds-responsive-source-dimension-panel-width-2xs: var(--dimension-panel-width-2xs);
78
+ --ds-responsive-source-dimension-panel-width-xs: var(--dimension-panel-width-xs);
79
+ --ds-responsive-source-dimension-panel-width-sm: var(--dimension-panel-width-sm);
80
+ --ds-responsive-source-dimension-panel-width-md: var(--dimension-panel-width-md);
81
+ --ds-responsive-source-dimension-panel-width-lg: var(--dimension-panel-width-lg);
82
+ --ds-responsive-source-dimension-panel-width-xl: var(--dimension-panel-width-xl);
83
+ --ds-responsive-source-dimension-panel-width-2xl: var(--dimension-panel-width-2xl);
84
+ --ds-responsive-source-dimension-card-height-xs: var(--dimension-card-height-xs);
85
+ --ds-responsive-source-dimension-card-height-sm: var(--dimension-card-height-sm);
86
+ --ds-responsive-source-dimension-card-height-md: var(--dimension-card-height-md);
87
+ --ds-responsive-source-dimension-card-height-lg: var(--dimension-card-height-lg);
88
+ --ds-responsive-source-dimension-modal-height-xs: var(--dimension-modal-height-xs);
89
+ --ds-responsive-source-dimension-modal-height-sm: var(--dimension-modal-height-sm);
90
+ --ds-responsive-source-dimension-modal-height-md: var(--dimension-modal-height-md);
91
+ --ds-responsive-source-dimension-modal-height-lg: var(--dimension-modal-height-lg);
92
+ }
93
+
94
+ body {
95
+ --typography-fontsize-xs: calc(
96
+ var(--ds-responsive-source-typography-fontsize-xs) * var(--ds-responsive-scale)
97
+ );
98
+ --typography-fontsize-sm: calc(
99
+ var(--ds-responsive-source-typography-fontsize-sm) * var(--ds-responsive-scale)
100
+ );
101
+ --typography-fontsize-md: calc(
102
+ var(--ds-responsive-source-typography-fontsize-md) * var(--ds-responsive-scale)
103
+ );
104
+ --typography-fontsize-lg: calc(
105
+ var(--ds-responsive-source-typography-fontsize-lg) * var(--ds-responsive-scale)
106
+ );
107
+ --typography-fontsize-xl: calc(
108
+ var(--ds-responsive-source-typography-fontsize-xl) * var(--ds-responsive-scale)
109
+ );
110
+ --typography-fontsize-2xl: calc(
111
+ var(--ds-responsive-source-typography-fontsize-2xl) * var(--ds-responsive-scale)
112
+ );
113
+ --typography-fontsize-3xl: calc(
114
+ var(--ds-responsive-source-typography-fontsize-3xl) * var(--ds-responsive-scale)
115
+ );
116
+ --typography-lineheight-xs: calc(
117
+ var(--ds-responsive-source-typography-lineheight-xs) * var(--ds-responsive-scale)
118
+ );
119
+ --typography-lineheight-sm: calc(
120
+ var(--ds-responsive-source-typography-lineheight-sm) * var(--ds-responsive-scale)
121
+ );
122
+ --typography-lineheight-md: calc(
123
+ var(--ds-responsive-source-typography-lineheight-md) * var(--ds-responsive-scale)
124
+ );
125
+ --typography-lineheight-lg: calc(
126
+ var(--ds-responsive-source-typography-lineheight-lg) * var(--ds-responsive-scale)
127
+ );
128
+ --typography-lineheight-xl: calc(
129
+ var(--ds-responsive-source-typography-lineheight-xl) * var(--ds-responsive-scale)
130
+ );
131
+ --typography-lineheight-2xl: calc(
132
+ var(--ds-responsive-source-typography-lineheight-2xl) * var(--ds-responsive-scale)
133
+ );
134
+ --typography-lineheight-3xl: calc(
135
+ var(--ds-responsive-source-typography-lineheight-3xl) * var(--ds-responsive-scale)
136
+ );
137
+ --typography-letterspacing-none: calc(
138
+ var(--ds-responsive-source-typography-letterspacing-none) * var(--ds-responsive-scale)
139
+ );
140
+ --typography-letterspacing-positive: calc(
141
+ var(--ds-responsive-source-typography-letterspacing-positive) * var(--ds-responsive-scale)
142
+ );
143
+ --typography-letterspacing-negative-half: calc(
144
+ var(--ds-responsive-source-typography-letterspacing-negative-half) *
145
+ var(--ds-responsive-scale)
146
+ );
147
+ --typography-letterspacing-negative: calc(
148
+ var(--ds-responsive-source-typography-letterspacing-negative) * var(--ds-responsive-scale)
149
+ );
150
+ --typography-letterspacing-negative-double: calc(
151
+ var(--ds-responsive-source-typography-letterspacing-negative-double) *
152
+ var(--ds-responsive-scale)
153
+ );
154
+ --typography-paragraphspacing-none: calc(
155
+ var(--ds-responsive-source-typography-paragraphspacing-none) * var(--ds-responsive-scale)
156
+ );
157
+ --typography-paragraphspacing-sm: calc(
158
+ var(--ds-responsive-source-typography-paragraphspacing-sm) * var(--ds-responsive-scale)
159
+ );
160
+ --typography-paragraphspacing-md: calc(
161
+ var(--ds-responsive-source-typography-paragraphspacing-md) * var(--ds-responsive-scale)
162
+ );
163
+ --typography-paragraphspacing-lg: calc(
164
+ var(--ds-responsive-source-typography-paragraphspacing-lg) * var(--ds-responsive-scale)
165
+ );
166
+ --dimension-card-width-xs: calc(
167
+ var(--ds-responsive-source-dimension-card-width-xs) * var(--ds-responsive-scale)
168
+ );
169
+ --dimension-card-width-sm: calc(
170
+ var(--ds-responsive-source-dimension-card-width-sm) * var(--ds-responsive-scale)
171
+ );
172
+ --dimension-card-width-md: calc(
173
+ var(--ds-responsive-source-dimension-card-width-md) * var(--ds-responsive-scale)
174
+ );
175
+ --dimension-card-width-lg: calc(
176
+ var(--ds-responsive-source-dimension-card-width-lg) * var(--ds-responsive-scale)
177
+ );
178
+ --dimension-modal-width-xs: calc(
179
+ var(--ds-responsive-source-dimension-modal-width-xs) * var(--ds-responsive-scale)
180
+ );
181
+ --dimension-modal-width-sm: calc(
182
+ var(--ds-responsive-source-dimension-modal-width-sm) * var(--ds-responsive-scale)
183
+ );
184
+ --dimension-modal-width-md: calc(
185
+ var(--ds-responsive-source-dimension-modal-width-md) * var(--ds-responsive-scale)
186
+ );
187
+ --dimension-modal-width-lg: calc(
188
+ var(--ds-responsive-source-dimension-modal-width-lg) * var(--ds-responsive-scale)
189
+ );
190
+ --dimension-modal-width-xl: calc(
191
+ var(--ds-responsive-source-dimension-modal-width-xl) * var(--ds-responsive-scale)
192
+ );
193
+ --dimension-modal-width-2xl: calc(
194
+ var(--ds-responsive-source-dimension-modal-width-2xl) * var(--ds-responsive-scale)
195
+ );
196
+ --dimension-form-width-xs: calc(
197
+ var(--ds-responsive-source-dimension-form-width-xs) * var(--ds-responsive-scale)
198
+ );
199
+ --dimension-form-width-sm: calc(
200
+ var(--ds-responsive-source-dimension-form-width-sm) * var(--ds-responsive-scale)
201
+ );
202
+ --dimension-form-width-md: calc(
203
+ var(--ds-responsive-source-dimension-form-width-md) * var(--ds-responsive-scale)
204
+ );
205
+ --dimension-form-width-lg: calc(
206
+ var(--ds-responsive-source-dimension-form-width-lg) * var(--ds-responsive-scale)
207
+ );
208
+ --dimension-form-width-xl: calc(
209
+ var(--ds-responsive-source-dimension-form-width-xl) * var(--ds-responsive-scale)
210
+ );
211
+ --dimension-table-column-width-xs: calc(
212
+ var(--ds-responsive-source-dimension-table-column-width-xs) * var(--ds-responsive-scale)
213
+ );
214
+ --dimension-table-column-width-sm: calc(
215
+ var(--ds-responsive-source-dimension-table-column-width-sm) * var(--ds-responsive-scale)
216
+ );
217
+ --dimension-table-column-width-md: calc(
218
+ var(--ds-responsive-source-dimension-table-column-width-md) * var(--ds-responsive-scale)
219
+ );
220
+ --dimension-table-column-width-lg: calc(
221
+ var(--ds-responsive-source-dimension-table-column-width-lg) * var(--ds-responsive-scale)
222
+ );
223
+ --dimension-table-column-width-xl: calc(
224
+ var(--ds-responsive-source-dimension-table-column-width-xl) * var(--ds-responsive-scale)
225
+ );
226
+ --dimension-menu-width-xs: calc(
227
+ var(--ds-responsive-source-dimension-menu-width-xs) * var(--ds-responsive-scale)
228
+ );
229
+ --dimension-menu-width-sm: calc(
230
+ var(--ds-responsive-source-dimension-menu-width-sm) * var(--ds-responsive-scale)
231
+ );
232
+ --dimension-menu-width-md: calc(
233
+ var(--ds-responsive-source-dimension-menu-width-md) * var(--ds-responsive-scale)
234
+ );
235
+ --dimension-menu-width-lg: calc(
236
+ var(--ds-responsive-source-dimension-menu-width-lg) * var(--ds-responsive-scale)
237
+ );
238
+ --dimension-tooltip-width-sm: calc(
239
+ var(--ds-responsive-source-dimension-tooltip-width-sm) * var(--ds-responsive-scale)
240
+ );
241
+ --dimension-tooltip-width-md: calc(
242
+ var(--ds-responsive-source-dimension-tooltip-width-md) * var(--ds-responsive-scale)
243
+ );
244
+ --dimension-tooltip-width-lg: calc(
245
+ var(--ds-responsive-source-dimension-tooltip-width-lg) * var(--ds-responsive-scale)
246
+ );
247
+ --dimension-panel-width-2xs: calc(
248
+ var(--ds-responsive-source-dimension-panel-width-2xs) * var(--ds-responsive-scale)
249
+ );
250
+ --dimension-panel-width-xs: calc(
251
+ var(--ds-responsive-source-dimension-panel-width-xs) * var(--ds-responsive-scale)
252
+ );
253
+ --dimension-panel-width-sm: calc(
254
+ var(--ds-responsive-source-dimension-panel-width-sm) * var(--ds-responsive-scale)
255
+ );
256
+ --dimension-panel-width-md: calc(
257
+ var(--ds-responsive-source-dimension-panel-width-md) * var(--ds-responsive-scale)
258
+ );
259
+ --dimension-panel-width-lg: calc(
260
+ var(--ds-responsive-source-dimension-panel-width-lg) * var(--ds-responsive-scale)
261
+ );
262
+ --dimension-panel-width-xl: calc(
263
+ var(--ds-responsive-source-dimension-panel-width-xl) * var(--ds-responsive-scale)
264
+ );
265
+ --dimension-panel-width-2xl: calc(
266
+ var(--ds-responsive-source-dimension-panel-width-2xl) * var(--ds-responsive-scale)
267
+ );
268
+ --dimension-card-height-xs: calc(
269
+ var(--ds-responsive-source-dimension-card-height-xs) * var(--ds-responsive-scale)
270
+ );
271
+ --dimension-card-height-sm: calc(
272
+ var(--ds-responsive-source-dimension-card-height-sm) * var(--ds-responsive-scale)
273
+ );
274
+ --dimension-card-height-md: calc(
275
+ var(--ds-responsive-source-dimension-card-height-md) * var(--ds-responsive-scale)
276
+ );
277
+ --dimension-card-height-lg: calc(
278
+ var(--ds-responsive-source-dimension-card-height-lg) * var(--ds-responsive-scale)
279
+ );
280
+ --dimension-modal-height-xs: calc(
281
+ var(--ds-responsive-source-dimension-modal-height-xs) * var(--ds-responsive-scale)
282
+ );
283
+ --dimension-modal-height-sm: calc(
284
+ var(--ds-responsive-source-dimension-modal-height-sm) * var(--ds-responsive-scale)
285
+ );
286
+ --dimension-modal-height-md: calc(
287
+ var(--ds-responsive-source-dimension-modal-height-md) * var(--ds-responsive-scale)
288
+ );
289
+ --dimension-modal-height-lg: calc(
290
+ var(--ds-responsive-source-dimension-modal-height-lg) * var(--ds-responsive-scale)
291
+ );
292
+ }
293
+ }
@@ -3,8 +3,16 @@ export declare class CodeBlock {
3
3
  language: string;
4
4
  filename: string;
5
5
  private copied;
6
+ private scrollable;
7
+ private viewport?;
8
+ private content?;
9
+ private resizeObserver?;
6
10
  private readonly copyFeedback;
7
11
  connectedCallback(): void;
12
+ componentDidLoad(): void;
13
+ componentDidRender(): void;
14
+ private observeOverflow;
15
+ private syncOverflow;
8
16
  handleCodeChange(): void;
9
17
  disconnectedCallback(): void;
10
18
  private copy;
@@ -1,6 +1,6 @@
1
1
  import { EventEmitter } from '../../stencil-public-runtime';
2
2
  import type { NavChromeStyle } from '../../shell/nav-chrome';
3
- import type { PanelToolsRailAccessoryActionDetail, PanelToolsToolId } from '../PanelTools/panel-tools-types';
3
+ import type { PanelToolsHeaderActionDetail, PanelToolsRailAccessoryActionDetail, PanelToolsToolId } from '../PanelTools/panel-tools-types';
4
4
  import type { BreadcrumbSelectDetail } from '../Breadcrumb/breadcrumb-types';
5
5
  import { type ShellGradientPreset } from '../../shell/shell-gradient-presets';
6
6
  import { type MobileDestination, type ShellResponsiveMode } from '../../shell/shell-responsive';
@@ -63,10 +63,7 @@ export declare class ShellApp {
63
63
  tool: PanelToolsToolId;
64
64
  }>;
65
65
  /** Managed tool-header action intent. */
66
- dsHeaderAction: EventEmitter<{
67
- tool: PanelToolsToolId;
68
- id: string;
69
- }>;
66
+ dsHeaderAction: EventEmitter<PanelToolsHeaderActionDetail>;
70
67
  /** Managed desktop/tablet rail accessory intent. */
71
68
  dsRailAccessoryAction: EventEmitter<PanelToolsRailAccessoryActionDetail>;
72
69
  /** Managed drawer/fullscreen presentation state. */
@@ -1,5 +1,5 @@
1
1
  import { EventEmitter } from '../../stencil-public-runtime';
2
- import { type PanelToolsHeaders, type PanelToolsItem, type PanelToolsRailAccessory, type PanelToolsRailAccessoryActionDetail, type PanelToolsToolId } from '../PanelTools/panel-tools-types';
2
+ import { type PanelToolsHeaderActionDetail, type PanelToolsHeaders, type PanelToolsItem, type PanelToolsRailAccessory, type PanelToolsRailAccessoryActionDetail, type PanelToolsToolId } from '../PanelTools/panel-tools-types';
3
3
  import { type ShellResponsiveMode } from '../../shell/shell-responsive';
4
4
  export declare class ShellTools {
5
5
  el: HTMLElement;
@@ -29,10 +29,7 @@ export declare class ShellTools {
29
29
  dsHeaderBack: EventEmitter<{
30
30
  tool: PanelToolsToolId;
31
31
  }>;
32
- dsHeaderAction: EventEmitter<{
33
- tool: PanelToolsToolId;
34
- id: string;
35
- }>;
32
+ dsHeaderAction: EventEmitter<PanelToolsHeaderActionDetail>;
36
33
  dsRailAccessoryAction: EventEmitter<PanelToolsRailAccessoryActionDetail>;
37
34
  private panelToolsEl;
38
35
  private get resolvedItems();
@@ -6786,7 +6786,7 @@ declare global {
6786
6786
  "dsPageAction": string;
6787
6787
  "dsToolChange": { id: PanelToolsToolId; selected: boolean };
6788
6788
  "dsHeaderBack": { tool: PanelToolsToolId };
6789
- "dsHeaderAction": { tool: PanelToolsToolId; id: string };
6789
+ "dsHeaderAction": PanelToolsHeaderActionDetail;
6790
6790
  "dsRailAccessoryAction": PanelToolsRailAccessoryActionDetail;
6791
6791
  "dsPresentationChange": { presentation: 'drawer' | 'fullscreen' };
6792
6792
  "dsBrowseContextChange": NavChromeStyle;
@@ -6824,10 +6824,7 @@ declare global {
6824
6824
  "dsHeaderBack": {
6825
6825
  tool: PanelToolsToolId;
6826
6826
  };
6827
- "dsHeaderAction": {
6828
- tool: PanelToolsToolId;
6829
- id: string;
6830
- };
6827
+ "dsHeaderAction": PanelToolsHeaderActionDetail;
6831
6828
  "dsRailAccessoryAction": PanelToolsRailAccessoryActionDetail;
6832
6829
  }
6833
6830
  interface HTMLDsShellToolsElement extends Components.DsShellTools, HTMLStencilElement {
@@ -11361,7 +11358,7 @@ declare namespace LocalJSX {
11361
11358
  /**
11362
11359
  * Managed tool-header action intent.
11363
11360
  */
11364
- "onDsHeaderAction"?: (event: DsShellAppCustomEvent<{ tool: PanelToolsToolId; id: string }>) => void;
11361
+ "onDsHeaderAction"?: (event: DsShellAppCustomEvent<PanelToolsHeaderActionDetail>) => void;
11365
11362
  /**
11366
11363
  * Managed tool-header Back intent.
11367
11364
  */
@@ -11518,10 +11515,7 @@ declare namespace LocalJSX {
11518
11515
  * @default []
11519
11516
  */
11520
11517
  "items"?: PanelToolsItem[];
11521
- "onDsHeaderAction"?: (event: DsShellToolsCustomEvent<{
11522
- tool: PanelToolsToolId;
11523
- id: string;
11524
- }>) => void;
11518
+ "onDsHeaderAction"?: (event: DsShellToolsCustomEvent<PanelToolsHeaderActionDetail>) => void;
11525
11519
  "onDsHeaderBack"?: (event: DsShellToolsCustomEvent<{
11526
11520
  tool: PanelToolsToolId;
11527
11521
  }>) => void;
@@ -2,7 +2,7 @@
2
2
  export declare function clearCssLengthPxCache(): void;
3
3
  /**
4
4
  * Resolve a CSS length to pixels for layout math. Dynamic expressions are read
5
- * from the current document and optional component scope on every call. Relative
5
+ * from the body (application token scope) or explicit component scope on every call. Relative
6
6
  * font units use that scope; percentage lengths use the viewport's inline size.
7
7
  */
8
8
  export declare function resolveCssLengthPx(value: number | string | undefined, fallback: number | string, context?: Element): number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ds-mo/ui",
3
- "version": "15.10.1",
3
+ "version": "15.11.0",
4
4
  "description": "CompoMo — composable web components styled with TokoMo design tokens",
5
5
  "keywords": [
6
6
  "web-components",
@@ -72,6 +72,7 @@
72
72
  "./control-elevation.css": "./dist/styles/control-elevation.css",
73
73
  "./prose.css": "./dist/styles/prose.css",
74
74
  "./table.css": "./dist/styles/table.css",
75
+ "./responsive.css": "./dist/styles/responsive.css",
75
76
  "./agent": "./dist/agent.json",
76
77
  "./agent/patterns": "./dist/agent-patterns.json",
77
78
  "./dist/components/*": "./dist/components/*",
@@ -1,2 +0,0 @@
1
- import{p as e,H as o,h as s,a as t,t as a}from"./index.js";import{C as d}from"./p-BnhGV__o.js";import{d as i}from"./p-CzTJAO2J.js";import{d as n}from"./p-BrB05_X8.js";import{d as c}from"./p-BVsVUnAw.js";import{d as r}from"./p-0XTyQNRG.js";import{d as l}from"./p-CTAF7SkL.js";import{d as b}from"./p-PNY7auMh.js";const f=()=>`.sc-ds-code-block-h{display:block;width:100%;min-width:0;box-sizing:border-box;-webkit-user-select:none;user-select:none}.code-block.sc-ds-code-block{width:100%;min-width:0;margin:0;overflow:hidden;border-radius:var(--dimension-radius-050);background:var(--color-background-strong-neutral);color:var(--color-foreground-faint-neutral);box-sizing:border-box}.code-block__header.sc-ds-code-block{display:flex;align-items:center;justify-content:space-between;gap:var(--dimension-space-100);min-height:var(--dimension-size-400);padding:var(--dimension-space-050) var(--dimension-space-100);background:var(--color-background-strong-neutral);box-sizing:border-box}pre.sc-ds-code-block{margin:0;padding:var(--dimension-space-150);overflow:auto;font-family:var( --typography-font-family-code, 'Fira Code', ui-monospace, 'SFMono-Regular', 'Cascadia Code', 'Roboto Mono', Menlo, Monaco, Consolas, 'Liberation Mono', monospace );font-size:var(--typography-fontsize-sm);font-variant-ligatures:var(--ds-code-font-variant-ligatures, normal);font-weight:var(--typography-weight-regular);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none);tab-size:2;-webkit-user-select:text;user-select:text}code.sc-ds-code-block{font:inherit;white-space:pre}`;const p=e(class e extends o{constructor(e){super();if(e!==false){this.__registerHost()}this.code="";this.language="";this.filename="";this.copied=false;this.copyFeedback=new d((e=>{this.copied=e}));this.copy=async()=>{await this.copyFeedback.copy(this.code)}}connectedCallback(){this.copyFeedback.connect()}handleCodeChange(){this.copyFeedback.reset()}disconnectedCallback(){this.copyFeedback.disconnect()}render(){const e=this.filename||this.language||"Code";return s(t,{key:"bf59b12fad24ccce0f645f96d7e3d165faa7a99e"},s("figure",{key:"a570ec37303143c6141a4d582f5e3d97d57d61b7",class:"code-block"},s("figcaption",{key:"53563363469413b4b8d6a203893b30902041653e",class:"code-block__header"},s("ds-text",{key:"e3e08fad862786ac543f206701693765e9d1402f",as:"span",variant:"text-caption",emphasis:true,color:"on-strong"},e),s("ds-tooltip",{key:"fd6d1a26fb85a706bcb0902dbe60923ad6c4265a",label:this.copied?"Copied":"Copy code",side:"bottom",size:"sm"},s("ds-button-unfilled",{key:"d878626be70801df24eb67899c38fdf52626124c",variant:"icon",icon:this.copied?"Check":"Copy",size:"xs","aria-label":this.copied?"Copied":"Copy code",hasBorder:false,onDsClick:this.copy}))),s("pre",{key:"46dac40da59cbb9650f1f7e8995d59a2f31c78e2"},s("code",{key:"2429b29d700529adc19cd6332f3de79741784442"},this.code))))}static get watchers(){return{code:[{handleCodeChange:0}]}}static get style(){return f()}},[2,"ds-code-block",{code:[1],language:[1],filename:[1],copied:[32]},undefined,{code:[{handleCodeChange:0}]}]);function m(){if(typeof customElements==="undefined"){return}const e=["ds-code-block","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-code-block":if(!customElements.get(a(e))){customElements.define(a(e),p)}break;case"ds-badge":if(!customElements.get(a(e))){i()}break;case"ds-button-unfilled":if(!customElements.get(a(e))){n()}break;case"ds-icon":if(!customElements.get(a(e))){c()}break;case"ds-loader":if(!customElements.get(a(e))){r()}break;case"ds-text":if(!customElements.get(a(e))){l()}break;case"ds-tooltip":if(!customElements.get(a(e))){b()}break}}))}m();export{p as C,m as d};
2
- //# sourceMappingURL=p-BE9ladwu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["codeBlockCss","CodeBlock","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","code","language","filename","copied","copyFeedback","ClipboardFeedbackController","copy","async","connectedCallback","connect","handleCodeChange","reset","disconnectedCallback","disconnect","render","label","h","Host","key","class","as","variant","emphasis","color","side","size","icon","hasBorder","onDsClick"],"sources":["src/wc/components/CodeBlock/CodeBlock.css?tag=ds-code-block&encapsulation=scoped","src/wc/components/CodeBlock/CodeBlock.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n min-width: 0;\n box-sizing: border-box;\n -webkit-user-select: none;\n user-select: none;\n}\n\n.code-block {\n width: 100%;\n min-width: 0;\n margin: 0;\n overflow: hidden;\n border-radius: var(--dimension-radius-050);\n background: var(--color-background-strong-neutral);\n color: var(--color-foreground-faint-neutral);\n box-sizing: border-box;\n}\n\n.code-block__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--dimension-space-100);\n min-height: var(--dimension-size-400);\n padding: var(--dimension-space-050) var(--dimension-space-100);\n background: var(--color-background-strong-neutral);\n box-sizing: border-box;\n}\n\npre {\n margin: 0;\n padding: var(--dimension-space-150);\n overflow: auto;\n font-family: var(\n --typography-font-family-code,\n 'Fira Code',\n ui-monospace,\n 'SFMono-Regular',\n 'Cascadia Code',\n 'Roboto Mono',\n Menlo,\n Monaco,\n Consolas,\n 'Liberation Mono',\n monospace\n );\n font-size: var(--typography-fontsize-sm);\n font-variant-ligatures: var(--ds-code-font-variant-ligatures, normal);\n font-weight: var(--typography-weight-regular);\n line-height: var(--typography-lineheight-sm);\n letter-spacing: var(--typography-letterspacing-none);\n tab-size: 2;\n -webkit-user-select: text;\n user-select: text;\n}\n\ncode {\n font: inherit;\n white-space: pre;\n}\n","import { Component, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { ClipboardFeedbackController } from '../../utils/clipboard';\n\n@Component({\n tag: 'ds-code-block',\n styleUrl: 'CodeBlock.css',\n scoped: true,\n})\nexport class CodeBlock {\n @Prop() code: string = '';\n @Prop() language: string = '';\n @Prop() filename: string = '';\n\n @State() private copied: boolean = false;\n private readonly copyFeedback = new ClipboardFeedbackController(copied => {\n this.copied = copied;\n });\n\n connectedCallback() {\n this.copyFeedback.connect();\n }\n\n @Watch('code')\n handleCodeChange() {\n this.copyFeedback.reset();\n }\n\n disconnectedCallback() {\n this.copyFeedback.disconnect();\n }\n\n private copy = async () => {\n await this.copyFeedback.copy(this.code);\n };\n\n render() {\n const label = this.filename || this.language || 'Code';\n return (\n <Host>\n <figure class=\"code-block\">\n <figcaption class=\"code-block__header\">\n <ds-text as=\"span\" variant=\"text-caption\" emphasis color=\"on-strong\">\n {label}\n </ds-text>\n <ds-tooltip label={this.copied ? 'Copied' : 'Copy code'} side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n variant=\"icon\"\n icon={this.copied ? 'Check' : 'Copy'}\n size=\"xs\"\n aria-label={this.copied ? 'Copied' : 'Copy code'}\n hasBorder={false}\n onDsClick={this.copy}\n />\n </ds-tooltip>\n </figcaption>\n <pre>\n <code>{this.code}</code>\n </pre>\n </figure>\n </Host>\n );\n }\n}\n"],"mappings":"uTAAA,MAAMA,EAAe,IAAM,wyC,MCQdC,EAASC,EAAA,MAAAD,UAAAE,EALtB,WAAAC,CAAAC,G,4CAMUC,KAAAC,KAAe,GACfD,KAAAE,SAAmB,GACnBF,KAAAG,SAAmB,GAEVH,KAAAI,OAAkB,MAClBJ,KAAAK,aAAe,IAAIC,GAA4BF,IAC9DJ,KAAKI,OAASA,CAAM,IAgBdJ,KAAAO,KAAOC,gBACPR,KAAKK,aAAaE,KAAKP,KAAKC,KAAK,CA8B1C,CA5CC,iBAAAQ,GACET,KAAKK,aAAaK,S,CAIpB,gBAAAC,GACEX,KAAKK,aAAaO,O,CAGpB,oBAAAC,GACEb,KAAKK,aAAaS,Y,CAOpB,MAAAC,GACE,MAAMC,EAAQhB,KAAKG,UAAYH,KAAKE,UAAY,OAChD,OACEe,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,UAAAE,IAAA,2CAAQC,MAAM,cACZH,EAAA,cAAAE,IAAA,2CAAYC,MAAM,sBAChBH,EAAA,WAAAE,IAAA,2CAASE,GAAG,OAAOC,QAAQ,eAAeC,SAAQ,KAACC,MAAM,aACtDR,GAEHC,EAAA,cAAAE,IAAA,2CAAYH,MAAOhB,KAAKI,OAAS,SAAW,YAAaqB,KAAK,SAASC,KAAK,MAC1ET,EAAA,sBAAAE,IAAA,2CACEG,QAAQ,OACRK,KAAM3B,KAAKI,OAAS,QAAU,OAC9BsB,KAAK,KAAI,aACG1B,KAAKI,OAAS,SAAW,YACrCwB,UAAW,MACXC,UAAW7B,KAAKO,SAItBU,EAAA,OAAAE,IAAA,4CACEF,EAAA,QAAAE,IAAA,4CAAOnB,KAAKC,Q","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{p as s,H as o,c as d,h as e,a,t as i}from"./index.js";import{C as t}from"./p-DlsjHRU3.js";import{d as r}from"./p-CzTJAO2J.js";import{d as n}from"./p-BrB05_X8.js";import{d as c}from"./p-BVsVUnAw.js";import{d as l}from"./p-0XTyQNRG.js";import{d as m}from"./p-CTAF7SkL.js";import{d as h}from"./p-PNY7auMh.js";import{b as p,T as f}from"./p-CeXf9-X3.js";const u=()=>`.sc-ds-modal-h,.sc-ds-modal:where(.ds-table),.sc-ds-modal:where(.tooltip-popup),.sc-ds-modal:where(.ds-radius){--ds-radius-control:var(--dimension-radius-025);--ds-radius-card:var(--dimension-radius-050);--ds-radius-modal:var(--dimension-radius-050);--ds-radius-menu:var(--dimension-radius-075);--ds-radius-tooltip-control:var(--dimension-radius-025);--ds-radius-tooltip-menu:var(--dimension-radius-075);--ds-radius-table:var(--dimension-radius-050)}.ds-control--lg.sc-ds-modal,.ds-control--lg.sc-ds-modal-h,.ds-control--md.sc-ds-modal-h,.ds-control--md.sc-ds-modal,.ds-control--sm.sc-ds-modal-h,.ds-control--sm.sc-ds-modal,.ds-control--xs.sc-ds-modal-h,.ds-control--xs.sc-ds-modal{--ds-control-radius:var(--ds-radius-control)}.ds-control--lg.sc-ds-modal-h,.ds-control--lg.sc-ds-modal{--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-modal-h,.ds-control--md.sc-ds-modal{--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-modal-h,.ds-control--sm.sc-ds-modal{--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-modal-h,.ds-control--xs.sc-ds-modal{--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-chrome-header.sc-ds-modal{display:flex;align-items:center;box-sizing:border-box;min-width:0;min-block-size:var(--dimension-size-600);padding:var(--dimension-space-100);gap:var(--dimension-space-100)}.ds-chrome-header--wrapping.sc-ds-modal{flex-wrap:wrap}.ds-chrome-header--bounded.sc-ds-modal{border-block-end:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}.ds-chrome-header__leading.sc-ds-modal,.ds-chrome-header__trailing.sc-ds-modal{display:flex;align-items:center;flex:0 0 auto;min-width:0}.ds-chrome-header__trailing.sc-ds-modal{margin-inline-start:auto;gap:var(--dimension-space-100)}.ds-chrome-header__copy.sc-ds-modal{display:flex;flex:1 1 0;min-width:0;padding:var(--ds-control-padding-inline, var(--dimension-space-075));box-sizing:border-box}.ds-chrome-header__copy--wrapping.sc-ds-modal{align-items:baseline;flex-wrap:wrap;column-gap:var(--dimension-space-100);row-gap:var(--dimension-space-050)}.ds-chrome-header__copy--stacked.sc-ds-modal{align-items:stretch;flex-direction:column;gap:var(--dimension-space-050)}.ds-chrome-header__heading.sc-ds-modal,.ds-chrome-header__description.sc-ds-modal{width:auto;min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025));box-sizing:border-box}.ds-chrome-header__heading.sc-ds-modal{flex:0 1 auto}.ds-chrome-header__copy--wrapping.sc-ds-modal .ds-chrome-header__description.sc-ds-modal{flex:1 1 var(--dimension-card-width-xs)}.ds-chrome-space--sm.sc-ds-modal-h,.ds-chrome-space--sm.sc-ds-modal{--ds-chrome-padding:var(--ds-chrome-space-sm-padding, var(--dimension-space-050));--ds-chrome-gap:var(--dimension-space-050)}.ds-chrome-space--md.sc-ds-modal-h,.ds-chrome-space--md.sc-ds-modal{--ds-chrome-padding:var(--dimension-space-100);--ds-chrome-gap:var(--dimension-space-100)}.ds-chrome-space--lg.sc-ds-modal-h,.ds-chrome-space--lg.sc-ds-modal{--ds-chrome-padding:var(--dimension-space-200);--ds-chrome-gap:var(--dimension-space-200)}.ds-chrome-row.sc-ds-modal-h,.ds-chrome-row.sc-ds-modal,.ds-chrome-column.sc-ds-modal-h,.ds-chrome-column.sc-ds-modal,.ds-chrome-grid.sc-ds-modal-h,.ds-chrome-grid.sc-ds-modal{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-modal-h,.ds-chrome-row.sc-ds-modal{flex-direction:row;align-items:center}.ds-chrome-column.sc-ds-modal-h,.ds-chrome-column.sc-ds-modal{flex-direction:column}.ds-chrome-grid.sc-ds-modal-h,.ds-chrome-grid.sc-ds-modal{display:grid;align-items:center}@media (forced-colors: active){.sc-ds-modal:root,.sc-ds-modal-h,.ds-forced-colors-scope.sc-ds-modal{--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-modal-h{display:contents}.modal-dialog.sc-ds-modal{display:none;flex-direction:column;max-width:none;max-height:calc(100vh - 2 * var(--dimension-space-200));margin:auto;padding:0;overflow:hidden;color:var(--color-foreground-primary);background-color:var(--color-background-primary);border:0;border-radius:var(--ds-radius-modal);box-shadow:var(--effect-elevation-elevated-floating);outline:none;box-sizing:border-box;animation:modalDialogIn var(--effect-motion-short-2) forwards}.modal-dialog[open].sc-ds-modal{display:flex}.modal-dialog.sc-ds-modal::backdrop{background-color:var(--color-background-shade);animation:modalBackdropIn var(--effect-motion-short-2) forwards}.modal-dialog--closing.sc-ds-modal{animation:modalDialogOut var(--effect-motion-short-2) forwards}.modal-dialog--closing.sc-ds-modal::backdrop{animation:modalBackdropOut var(--effect-motion-short-2) forwards}@keyframes modalBackdropIn{from{opacity:0}to{opacity:1}}@keyframes modalBackdropOut{from{opacity:1}to{opacity:0}}@keyframes modalDialogIn{from{opacity:0;transform:scale(0.97) translateY(4px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes modalDialogOut{from{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(0.97) translateY(4px)}}@media (prefers-reduced-motion: reduce){.modal-dialog[open].sc-ds-modal,.modal-dialog--closing.sc-ds-modal{animation:none;transform:none}.modal-dialog.sc-ds-modal::backdrop{animation:none;opacity:1}.modal-dialog--closing.sc-ds-modal,.modal-dialog--closing.sc-ds-modal::backdrop{opacity:0}}.modal-header.sc-ds-modal{align-items:flex-start;flex:0 0 auto;color:var(--color-foreground-primary)}.modal-copy.sc-ds-modal,ds-text.modal-heading.sc-ds-modal,ds-text.modal-description.sc-ds-modal{width:auto;text-align:left}ds-text.modal-heading.sc-ds-modal{-webkit-user-select:none;user-select:none}.modal-close-tooltip.sc-ds-modal{flex:0 0 auto}.modal-content.sc-ds-modal{min-height:0;padding:var(--dimension-space-200);overflow-y:auto;flex:1 1 auto;box-sizing:border-box}.modal-footer.sc-ds-modal{justify-content:flex-start;height:var(--dimension-size-800);flex:0 0 auto;border-top:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}.modal-footer__actions.sc-ds-modal{display:flex;align-items:center;gap:var(--dimension-space-100);min-width:0}.modal-footer--empty.sc-ds-modal{display:none}.modal-footer__actions.sc-ds-modal slot.sc-ds-modal{display:contents}@media (forced-colors: active){.modal-dialog.sc-ds-modal{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 g={sm:"var(--dimension-modal-width-sm)",md:"var(--dimension-modal-width-md)",lg:"var(--dimension-modal-width-lg)"};const b=["a[href]","area[href]","button:not([disabled])",'input:not([disabled]):not([type="hidden"])',"select:not([disabled])","textarea:not([disabled])","iframe",'[contenteditable="true"]','[tabindex]:not([tabindex="-1"])'].join(",");let v=0;const y=s(class s extends o{constructor(s){super();if(s!==false){this.__registerHost()}this.dsClose=d(this,"dsClose",7);this.dsAfterClose=d(this,"dsAfterClose",7);this.open=false;this.description="";this.closeAriaLabel="Close";this.modalWidth="md";this.closing=false;this.hasFooter=false;this.titleId=`ds-modal-title-${++v}`;this.descriptionId=`${this.titleId}-description`;this.dialogEl=null;this.previousFocus=null;this.closeTimer=null;this.loaded=false;this.tasks=new t((()=>this.el.isConnected))}connectedCallback(){if(!this.loaded)return;this.updateFooterPresence();this.onOpenChange(this.open)}componentDidLoad(){this.loaded=true;this.updateFooterPresence();if(this.open)this.onOpenChange(true)}componentDidRender(){if(!this.el.isConnected)return;if(!this.closing||!this.dialogEl?.open||this.closeTimer)return;const s=this.closeAnimationMs;if(s<=0){this.finishClose();return}this.closeTimer=setTimeout((()=>{this.closeTimer=null;this.finishClose()}),s)}disconnectedCallback(){this.tasks.cancel();this.clearCloseTimer();if(this.dialogEl?.open)this.dialogEl.close();this.closing=false;this.previousFocus=null}onOpenChange(s){if(!this.loaded||!this.el.isConnected)return;this.tasks.cancel();if(s){this.clearCloseTimer();const s=!!this.dialogEl?.open;this.closing=false;if(!this.dialogEl||s)return;this.previousFocus=this.el.ownerDocument.activeElement;this.dialogEl.showModal();this.tasks.frame((()=>{if(this.open&&this.dialogEl?.open)this.focusClose()}))}else if(this.dialogEl?.open){this.closing=true}}focusClose(){const s=this.el.querySelector("ds-button-unfilled.modal-close");void s?.setFocus?.()}clearCloseTimer(){if(this.closeTimer){clearTimeout(this.closeTimer);this.closeTimer=null}}requestClose(s,o){if(!this.open||this.closing||!this.dialogEl?.open)return;this.dsClose.emit({reason:s,originalEvent:o});this.open=false}updateFooterPresence(s){const o=s?.assignedNodes()??[];this.hasFooter=o.some((s=>s.nodeType!==Node.TEXT_NODE||!!s.textContent?.trim()))||this.el.querySelector('[slot="footer"]')!==null}handleCancel(s){s.preventDefault();this.requestClose("escape",s)}handleBackdropPointerDown(s){if(s.target===this.dialogEl)this.requestClose("backdrop",s)}handleKeyDown(s){if(s.key==="Escape"){s.preventDefault();this.requestClose("escape",s);return}if(s.key!=="Tab"||!this.dialogEl)return;const o=Array.from(this.dialogEl.querySelectorAll(b)).filter((s=>!s.hasAttribute("disabled")&&s.getAttribute("aria-hidden")!=="true"));if(!o.length){s.preventDefault();this.dialogEl.focus();return}const d=o[0];const e=o[o.length-1];const a=document.activeElement;if(s.shiftKey&&(a===d||a===this.dialogEl)){s.preventDefault();e.focus()}else if(!s.shiftKey&&a===e){s.preventDefault();d.focus()}}get resolvedWidth(){if(this.modalWidth==="sm"||this.modalWidth==="md"||this.modalWidth==="lg"){return g[this.modalWidth]}return this.modalWidth}get describedBy(){const s=[this.description?this.descriptionId:"",this.ariaDescribedby??""].filter(Boolean);return s.length>0?s.join(" "):undefined}get closeAnimationMs(){return p(f.motionShort2,f.animationDurationShort3)}finishClose(){if(this.open||!this.el.isConnected||!this.dialogEl?.open)return;this.dialogEl.close();this.closing=false;this.clearCloseTimer();this.previousFocus?.focus?.();this.previousFocus=null;this.dsAfterClose.emit()}render(){return e(a,{key:"d2075fa906020435b5c58d5ac22ccba516d52001"},e("dialog",{key:"596ac03c1b449092e82af87bade3ee5aae421e30",ref:s=>{this.dialogEl=s??null},class:{"modal-dialog":true,"modal-dialog--closing":this.closing},"aria-labelledby":this.titleId,"aria-describedby":this.describedBy,onCancel:s=>this.handleCancel(s),onPointerDown:s=>this.handleBackdropPointerDown(s),onKeyDown:s=>this.handleKeyDown(s),style:{width:`min(${this.resolvedWidth}, calc(100vw - 2 * var(--dimension-space-200)))`}},e("div",{key:"3e5e0f2720fe843627905df9af74c71c0c620563",class:"modal-header ds-chrome-header ds-chrome-header--bounded"},e("div",{key:"6478eaa4b3f2ffad571a772292e10a29cc339bf2",class:"modal-copy ds-chrome-header__copy ds-chrome-header__copy--stacked ds-control--md"},e("ds-text",{key:"8e10e180895342c5293ea7e539e5b7615c319512",class:"modal-heading ds-chrome-header__heading",as:"h2",variant:"text-title-small",emphasis:true,color:"primary",lineTruncation:1,textId:this.titleId},this.heading),this.description?e("ds-text",{class:"modal-description ds-chrome-header__description",as:"p",variant:"text-body-medium",color:"secondary",wrap:"wrap",textId:this.descriptionId},this.description):null),e("ds-tooltip",{key:"9615e2c0067f29f5ccf94fb7bf0d0483dbae174f",class:"modal-close-tooltip ds-chrome-header__trailing",label:this.closeAriaLabel,side:"bottom",size:"sm"},e("ds-button-unfilled",{key:"d317f0ef4c0fb0451191185a9591ca01e8708bfe",class:"modal-close",variant:"icon",icon:"Cross",size:"md","aria-label":this.closeAriaLabel,activeFill:false,hasBorder:false,onDsClick:s=>this.requestClose("close-button",s.detail)}))),e("div",{key:"60c74c8424f3504c27f5401b0690ca942b2f08a4",class:"modal-content"},e("slot",{key:"ad9d251efc6b47f8e12ffb4edeea828c7ca64753"})),e("div",{key:"f1b901c808c9418c9d6aed04cb401cd11108eff2",class:{"modal-footer":true,"ds-chrome-row":true,"ds-chrome-space--lg":true,"modal-footer--empty":!this.hasFooter}},e("div",{key:"2a8fa4ba539d793f55eb72671ae8c8ceee92b397",class:"modal-footer__actions"},e("slot",{key:"ca74e39cd447a33bd4464427ec5a721265de784f",name:"footer",onSlotchange:s=>this.updateFooterPresence(s.currentTarget)})))))}get el(){return this}static get watchers(){return{open:[{onOpenChange:0}]}}static get style(){return u()}},[262,"ds-modal",{open:[1028],heading:[1],description:[1],closeAriaLabel:[1,"close-aria-label"],modalWidth:[1,"modal-width"],ariaDescribedby:[1,"aria-describedby"],closing:[32],hasFooter:[32]},undefined,{open:[{onOpenChange:0}]}]);function x(){if(typeof customElements==="undefined"){return}const s=["ds-modal","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-text","ds-tooltip"];s.forEach((s=>{switch(s){case"ds-modal":if(!customElements.get(i(s))){customElements.define(i(s),y)}break;case"ds-badge":if(!customElements.get(i(s))){r()}break;case"ds-button-unfilled":if(!customElements.get(i(s))){n()}break;case"ds-icon":if(!customElements.get(i(s))){c()}break;case"ds-loader":if(!customElements.get(i(s))){l()}break;case"ds-text":if(!customElements.get(i(s))){m()}break;case"ds-tooltip":if(!customElements.get(i(s))){h()}break}}))}x();export{y as M,x as d};
2
- //# sourceMappingURL=p-BfdYb8L4.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["modalCss","WIDTH_MAP","sm","md","lg","FOCUSABLE_SEL","join","modalIdCounter","Modal","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","open","description","closeAriaLabel","modalWidth","closing","hasFooter","titleId","descriptionId","dialogEl","previousFocus","closeTimer","loaded","tasks","ConnectionTasks","el","isConnected","connectedCallback","updateFooterPresence","onOpenChange","componentDidLoad","componentDidRender","closeAnimationMs","finishClose","setTimeout","disconnectedCallback","cancel","clearCloseTimer","close","isOpen","alreadyOpen","ownerDocument","activeElement","showModal","frame","focusClose","querySelector","setFocus","clearTimeout","requestClose","reason","originalEvent","dsClose","emit","slot","assignedNodes","some","node","nodeType","Node","TEXT_NODE","textContent","trim","handleCancel","event","preventDefault","handleBackdropPointerDown","target","handleKeyDown","key","focusables","Array","from","querySelectorAll","filter","element","hasAttribute","getAttribute","length","focus","first","last","active","document","shiftKey","resolvedWidth","describedBy","ids","ariaDescribedby","Boolean","undefined","resolveMotionTimeMs","TOKEN_DEFAULTS","motionShort2","animationDurationShort3","dsAfterClose","render","h","Host","ref","class","onCancel","onPointerDown","onKeyDown","style","width","as","variant","emphasis","color","lineTruncation","textId","heading","wrap","label","side","size","icon","activeFill","hasBorder","onDsClick","detail","name","onSlotchange","currentTarget"],"sources":["src/wc/components/Modal/Modal.css?tag=ds-modal&encapsulation=scoped","src/wc/components/Modal/Modal.tsx"],"sourcesContent":["@import '../../utils/radius.css';\n@import '../../utils/chrome-header.css';\n@import '../../utils/chrome-layout.css';\n@import '../../utils/forced-colors.css';\n\n:host {\n display: contents;\n}\n\n.modal-dialog {\n display: none;\n flex-direction: column;\n max-width: none;\n max-height: calc(100vh - 2 * var(--dimension-space-200));\n margin: auto;\n padding: 0;\n overflow: hidden;\n color: var(--color-foreground-primary);\n background-color: var(--color-background-primary);\n border: 0;\n border-radius: var(--ds-radius-modal);\n box-shadow: var(--effect-elevation-elevated-floating);\n outline: none;\n box-sizing: border-box;\n animation: modalDialogIn var(--effect-motion-short-2) forwards;\n}\n\n.modal-dialog[open] {\n display: flex;\n}\n\n.modal-dialog::backdrop {\n background-color: var(--color-background-shade);\n animation: modalBackdropIn var(--effect-motion-short-2) forwards;\n}\n\n.modal-dialog--closing {\n animation: modalDialogOut var(--effect-motion-short-2) forwards;\n}\n\n.modal-dialog--closing::backdrop {\n animation: modalBackdropOut var(--effect-motion-short-2) forwards;\n}\n\n@keyframes modalBackdropIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes modalBackdropOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n@keyframes modalDialogIn {\n from {\n opacity: 0;\n transform: scale(0.97) translateY(4px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n\n@keyframes modalDialogOut {\n from {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n to {\n opacity: 0;\n transform: scale(0.97) translateY(4px);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .modal-dialog[open],\n .modal-dialog--closing {\n animation: none;\n transform: none;\n }\n\n .modal-dialog::backdrop {\n animation: none;\n opacity: 1;\n }\n\n .modal-dialog--closing,\n .modal-dialog--closing::backdrop {\n opacity: 0;\n }\n}\n\n.modal-header {\n align-items: flex-start;\n flex: 0 0 auto;\n color: var(--color-foreground-primary);\n}\n\n.modal-copy,\nds-text.modal-heading,\nds-text.modal-description {\n width: auto;\n text-align: left;\n}\n\nds-text.modal-heading {\n -webkit-user-select: none;\n user-select: none;\n}\n\n.modal-close-tooltip {\n flex: 0 0 auto;\n}\n\n.modal-content {\n min-height: 0;\n padding: var(--dimension-space-200);\n overflow-y: auto;\n flex: 1 1 auto;\n box-sizing: border-box;\n}\n\n.modal-footer {\n justify-content: flex-start;\n height: var(--dimension-size-800);\n flex: 0 0 auto;\n border-top: var(--dimension-stroke-width-012) solid var(--color-border-tertiary);\n}\n\n.modal-footer__actions {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-100);\n min-width: 0;\n}\n\n.modal-footer--empty {\n display: none;\n}\n\n.modal-footer__actions slot {\n display: contents;\n}\n\n@media (forced-colors: active) {\n .modal-dialog {\n box-shadow: none;\n outline: var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);\n outline-offset: calc(-1 * var(--dimension-stroke-width-012));\n }\n}\n","import {\n Component,\n Prop,\n State,\n Event,\n EventEmitter,\n Element,\n Watch,\n h,\n Host,\n} from '@stencil/core';\nimport { resolveMotionTimeMs, TOKEN_DEFAULTS } from '../../utils';\nimport { ConnectionTasks } from '../../utils/connection-tasks';\n\nexport type ModalWidth = 'sm' | 'md' | 'lg';\nexport type ModalCloseReason = 'close-button' | 'escape' | 'backdrop';\n\nexport interface ModalCloseDetail {\n reason: ModalCloseReason;\n originalEvent: Event;\n}\n\nconst WIDTH_MAP: Record<ModalWidth, string> = {\n sm: 'var(--dimension-modal-width-sm)',\n md: 'var(--dimension-modal-width-md)',\n lg: 'var(--dimension-modal-width-lg)',\n};\n\nconst FOCUSABLE_SEL = [\n 'a[href]',\n 'area[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'iframe',\n '[contenteditable=\"true\"]',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\nlet modalIdCounter = 0;\n\n@Component({\n tag: 'ds-modal',\n styleUrl: 'Modal.css',\n scoped: true,\n})\nexport class Modal {\n @Element() el!: HTMLElement;\n\n @Prop({ mutable: true }) open: boolean = false;\n @Prop() heading!: string;\n /** Optional supporting copy shown below the heading. */\n @Prop() description: string = '';\n @Prop() closeAriaLabel: string = 'Close';\n @Prop() modalWidth: ModalWidth | string = 'md';\n /** Optional id reference for explanatory content in the default slot. */\n @Prop({ attribute: 'aria-describedby' }) ariaDescribedby: string | undefined;\n\n @State() private closing: boolean = false;\n @State() private hasFooter: boolean = false;\n\n /** Emitted when an internal dismissal control requests that the modal close. */\n @Event() dsClose!: EventEmitter<ModalCloseDetail>;\n /** Emitted after exit motion completes, the top layer closes, and focus is restored. */\n @Event() dsAfterClose!: EventEmitter<void>;\n\n private titleId = `ds-modal-title-${++modalIdCounter}`;\n private descriptionId = `${this.titleId}-description`;\n private dialogEl: HTMLDialogElement | null = null;\n private previousFocus: HTMLElement | null = null;\n private closeTimer: ReturnType<typeof setTimeout> | null = null;\n private loaded = false;\n private readonly tasks = new ConnectionTasks(() => this.el.isConnected);\n\n connectedCallback() {\n if (!this.loaded) return;\n this.updateFooterPresence();\n this.onOpenChange(this.open);\n }\n\n componentDidLoad() {\n this.loaded = true;\n this.updateFooterPresence();\n if (this.open) this.onOpenChange(true);\n }\n\n componentDidRender() {\n if (!this.el.isConnected) return;\n if (!this.closing || !this.dialogEl?.open || this.closeTimer) return;\n const closeAnimationMs = this.closeAnimationMs;\n if (closeAnimationMs <= 0) {\n this.finishClose();\n return;\n }\n this.closeTimer = setTimeout(() => {\n this.closeTimer = null;\n this.finishClose();\n }, closeAnimationMs);\n }\n\n disconnectedCallback() {\n this.tasks.cancel();\n this.clearCloseTimer();\n if (this.dialogEl?.open) this.dialogEl.close();\n this.closing = false;\n this.previousFocus = null;\n }\n\n @Watch('open')\n onOpenChange(isOpen: boolean) {\n if (!this.loaded || !this.el.isConnected) return;\n this.tasks.cancel();\n if (isOpen) {\n this.clearCloseTimer();\n const alreadyOpen = !!this.dialogEl?.open;\n this.closing = false;\n if (!this.dialogEl || alreadyOpen) return;\n this.previousFocus = this.el.ownerDocument.activeElement as HTMLElement | null;\n this.dialogEl.showModal();\n this.tasks.frame(() => {\n if (this.open && this.dialogEl?.open) this.focusClose();\n });\n } else if (this.dialogEl?.open) {\n this.closing = true;\n }\n }\n\n private focusClose() {\n const close = this.el.querySelector('ds-button-unfilled.modal-close') as\n | (HTMLElement & { setFocus?: () => Promise<void> })\n | null;\n void close?.setFocus?.();\n }\n\n private clearCloseTimer() {\n if (this.closeTimer) {\n clearTimeout(this.closeTimer);\n this.closeTimer = null;\n }\n }\n\n private requestClose(reason: ModalCloseReason, originalEvent: Event) {\n if (!this.open || this.closing || !this.dialogEl?.open) return;\n this.dsClose.emit({ reason, originalEvent });\n this.open = false;\n }\n\n private updateFooterPresence(slot?: HTMLSlotElement) {\n const assignedNodes = slot?.assignedNodes() ?? [];\n this.hasFooter =\n assignedNodes.some(node => node.nodeType !== Node.TEXT_NODE || !!node.textContent?.trim()) ||\n this.el.querySelector('[slot=\"footer\"]') !== null;\n }\n\n private handleCancel(event: Event) {\n event.preventDefault();\n this.requestClose('escape', event);\n }\n\n private handleBackdropPointerDown(event: PointerEvent) {\n if (event.target === this.dialogEl) this.requestClose('backdrop', event);\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.requestClose('escape', event);\n return;\n }\n if (event.key !== 'Tab' || !this.dialogEl) return;\n const focusables = Array.from(\n this.dialogEl.querySelectorAll<HTMLElement>(FOCUSABLE_SEL)\n ).filter(\n element => !element.hasAttribute('disabled') && element.getAttribute('aria-hidden') !== 'true'\n );\n if (!focusables.length) {\n event.preventDefault();\n this.dialogEl.focus();\n return;\n }\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n const active = document.activeElement;\n if (event.shiftKey && (active === first || active === this.dialogEl)) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && active === last) {\n event.preventDefault();\n first.focus();\n }\n }\n\n private get resolvedWidth(): string {\n if (this.modalWidth === 'sm' || this.modalWidth === 'md' || this.modalWidth === 'lg') {\n return WIDTH_MAP[this.modalWidth];\n }\n return this.modalWidth as string;\n }\n\n private get describedBy(): string | undefined {\n const ids = [this.description ? this.descriptionId : '', this.ariaDescribedby ?? ''].filter(\n Boolean\n );\n return ids.length > 0 ? ids.join(' ') : undefined;\n }\n\n private get closeAnimationMs(): number {\n return resolveMotionTimeMs(TOKEN_DEFAULTS.motionShort2, TOKEN_DEFAULTS.animationDurationShort3);\n }\n\n private finishClose() {\n if (this.open || !this.el.isConnected || !this.dialogEl?.open) return;\n this.dialogEl.close();\n this.closing = false;\n this.clearCloseTimer();\n this.previousFocus?.focus?.();\n this.previousFocus = null;\n this.dsAfterClose.emit();\n }\n\n render() {\n return (\n <Host>\n <dialog\n ref={(element?: HTMLDialogElement) => {\n this.dialogEl = element ?? null;\n }}\n class={{ 'modal-dialog': true, 'modal-dialog--closing': this.closing }}\n aria-labelledby={this.titleId}\n aria-describedby={this.describedBy}\n onCancel={(event: Event) => this.handleCancel(event)}\n onPointerDown={(event: PointerEvent) => this.handleBackdropPointerDown(event)}\n onKeyDown={(event: KeyboardEvent) => this.handleKeyDown(event)}\n style={{\n width: `min(${this.resolvedWidth}, calc(100vw - 2 * var(--dimension-space-200)))`,\n }}\n >\n <div class=\"modal-header ds-chrome-header ds-chrome-header--bounded\">\n <div class=\"modal-copy ds-chrome-header__copy ds-chrome-header__copy--stacked ds-control--md\">\n <ds-text\n class=\"modal-heading ds-chrome-header__heading\"\n as=\"h2\"\n variant=\"text-title-small\"\n emphasis\n color=\"primary\"\n lineTruncation={1}\n textId={this.titleId}\n >\n {this.heading}\n </ds-text>\n {this.description ? (\n <ds-text\n class=\"modal-description ds-chrome-header__description\"\n as=\"p\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n wrap=\"wrap\"\n textId={this.descriptionId}\n >\n {this.description}\n </ds-text>\n ) : null}\n </div>\n <ds-tooltip\n class=\"modal-close-tooltip ds-chrome-header__trailing\"\n label={this.closeAriaLabel}\n side=\"bottom\"\n size=\"sm\"\n >\n <ds-button-unfilled\n class=\"modal-close\"\n variant=\"icon\"\n icon=\"Cross\"\n size=\"md\"\n aria-label={this.closeAriaLabel}\n activeFill={false}\n hasBorder={false}\n onDsClick={(event: CustomEvent<MouseEvent>) =>\n this.requestClose('close-button', event.detail)\n }\n />\n </ds-tooltip>\n </div>\n <div class=\"modal-content\">\n <slot />\n </div>\n <div\n class={{\n 'modal-footer': true,\n 'ds-chrome-row': true,\n 'ds-chrome-space--lg': true,\n 'modal-footer--empty': !this.hasFooter,\n }}\n >\n <div class=\"modal-footer__actions\">\n <slot\n name=\"footer\"\n onSlotchange={(event: Event) =>\n this.updateFooterPresence(event.currentTarget as HTMLSlotElement)\n }\n />\n </div>\n </div>\n </dialog>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}