@ds-mo/ui 14.23.0 → 14.24.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 (112) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +10 -7
  3. package/dist/agent.json +57 -14
  4. package/dist/angular/ds-bar-title.d.ts +1 -1
  5. package/dist/angular/ds-bar-title.js +3 -3
  6. package/dist/angular/ds-button-filled.d.ts +3 -1
  7. package/dist/angular/ds-button-filled.js +7 -4
  8. package/dist/angular/ds-button-unfilled.d.ts +3 -1
  9. package/dist/angular/ds-button-unfilled.js +7 -4
  10. package/dist/components/ds-agent-questionnaire.js +1 -1
  11. package/dist/components/ds-agent-response.js +1 -1
  12. package/dist/components/ds-banner.js +1 -1
  13. package/dist/components/ds-bar-nav.js +1 -1
  14. package/dist/components/ds-bar-title.js +1 -1
  15. package/dist/components/ds-bar-workflow.js +1 -1
  16. package/dist/components/ds-button-filled.js +1 -1
  17. package/dist/components/ds-button-unfilled.js +1 -1
  18. package/dist/components/ds-card-chart.js +1 -1
  19. package/dist/components/ds-card-setting.js +1 -1
  20. package/dist/components/ds-code-block.js +1 -1
  21. package/dist/components/ds-filter-menu.js +1 -1
  22. package/dist/components/ds-input.js +1 -1
  23. package/dist/components/ds-markdown.js +1 -1
  24. package/dist/components/ds-message-actions.js +1 -1
  25. package/dist/components/ds-message-composer.js +1 -1
  26. package/dist/components/ds-message-scroller.js +1 -1
  27. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  28. package/dist/components/ds-modal.js +1 -1
  29. package/dist/components/ds-pagination.js +1 -1
  30. package/dist/components/ds-panel-nav.js +1 -1
  31. package/dist/components/ds-panel-tool-header.js +1 -1
  32. package/dist/components/ds-panel-tool-search.js +1 -1
  33. package/dist/components/ds-panel-tools.js +1 -1
  34. package/dist/components/ds-select.js +1 -1
  35. package/dist/components/ds-shell-app.js +1 -1
  36. package/dist/components/ds-shell-app.js.map +1 -1
  37. package/dist/components/ds-shell-tools.js +1 -1
  38. package/dist/components/ds-table-filter.js +1 -1
  39. package/dist/components/ds-table-group.js +1 -1
  40. package/dist/components/ds-table-saved-views.js +1 -1
  41. package/dist/components/ds-table-search.js +1 -1
  42. package/dist/components/ds-table-sort.js +1 -1
  43. package/dist/components/ds-table.js +1 -1
  44. package/dist/components/ds-toast.js +1 -1
  45. package/dist/components/p-BR1ayqMU.js +2 -0
  46. package/dist/components/p-BR1ayqMU.js.map +1 -0
  47. package/dist/components/{p-DzVYGJJv.js → p-BSRIF4m8.js} +2 -2
  48. package/dist/components/{p-FitB53eM.js → p-BZlhBJZL.js} +2 -2
  49. package/dist/components/{p-BmqnrfTf.js → p-Bo6uW_8T.js} +2 -2
  50. package/dist/components/{p-BIaHDBfP.js → p-Bq8svcPs.js} +2 -2
  51. package/dist/components/{p-DAFR4U9P.js → p-BqbdABo3.js} +2 -2
  52. package/dist/components/{p-nVv71P3f.js → p-CEXchU5N.js} +2 -2
  53. package/dist/components/p-CEfxLsbX.js +2 -0
  54. package/dist/components/p-CEfxLsbX.js.map +1 -0
  55. package/dist/components/{p-DXbryJHz.js → p-CYMKmJ2s.js} +2 -2
  56. package/dist/components/{p-C13fWp2x.js → p-CZHIkVgj.js} +2 -2
  57. package/dist/components/{p-CL0tECXf.js → p-CZjjDhUl.js} +2 -2
  58. package/dist/components/{p-Bd-Kpekh.js → p-C_FFU6W3.js} +2 -2
  59. package/dist/components/{p-CilwchJH.js → p-CglHiyY2.js} +2 -2
  60. package/dist/components/{p-9M0ak2q_.js → p-DLaN9BPq.js} +2 -2
  61. package/dist/components/{p-CrYJnDev.js → p-DiS5BgLA.js} +2 -2
  62. package/dist/components/{p-DiyO47xX.js → p-PXdvBMXB.js} +2 -2
  63. package/dist/components/{p-7MWaWl8w.js → p-kslioYhf.js} +2 -2
  64. package/dist/components/p-kslioYhf.js.map +1 -0
  65. package/dist/docs/components.json +257 -30
  66. package/dist/lib/components/BarTitle/bar-title-types.d.ts +54 -1
  67. package/dist/lib/components/ButtonFilled/ButtonFilled.d.ts +12 -1
  68. package/dist/lib/components/ShellApp/shell-app-types.d.ts +3 -1
  69. package/dist/lib/shell/index.d.ts +1 -0
  70. package/dist/mcp-data/registry/bar-title.json +34 -12
  71. package/dist/mcp-data/registry/button-filled.json +60 -6
  72. package/dist/mcp-data/registry/button-unfilled.json +60 -6
  73. package/dist/mcp-data/registry/registry.json +56 -13
  74. package/dist/mcp-data/registry/shell-app.json +6 -2
  75. package/dist/react/ds-button-filled.d.ts +1 -0
  76. package/dist/react/ds-button-filled.js +4 -1
  77. package/dist/react/ds-button-unfilled.d.ts +1 -0
  78. package/dist/react/ds-button-unfilled.js +1 -0
  79. package/dist/types/components/BarTitle/BarTitle.d.ts +19 -6
  80. package/dist/types/components/BarTitle/bar-title-actions.d.ts +11 -0
  81. package/dist/types/components/BarTitle/bar-title-types.d.ts +54 -1
  82. package/dist/types/components/BarTitle/index.d.ts +1 -1
  83. package/dist/types/components/ButtonFilled/ButtonFilled.d.ts +12 -1
  84. package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +12 -1
  85. package/dist/types/components/ShellApp/ShellApp.d.ts +12 -0
  86. package/dist/types/components/ShellApp/shell-app-types.d.ts +3 -1
  87. package/dist/types/components.d.ts +60 -4
  88. package/dist/types/shell/index.d.ts +1 -0
  89. package/dist/types/utils/button-story-foundation.d.ts +2 -0
  90. package/dist/vue/ds-bar-title.js +1 -0
  91. package/dist/vue/ds-button-filled.js +6 -2
  92. package/dist/vue/ds-button-unfilled.js +4 -0
  93. package/package.json +1 -1
  94. package/dist/components/p--68f7nIx.js +0 -2
  95. package/dist/components/p--68f7nIx.js.map +0 -1
  96. package/dist/components/p-7MWaWl8w.js.map +0 -1
  97. package/dist/components/p-BnTPuV3x.js +0 -2
  98. package/dist/components/p-BnTPuV3x.js.map +0 -1
  99. /package/dist/components/{p-DzVYGJJv.js.map → p-BSRIF4m8.js.map} +0 -0
  100. /package/dist/components/{p-FitB53eM.js.map → p-BZlhBJZL.js.map} +0 -0
  101. /package/dist/components/{p-BmqnrfTf.js.map → p-Bo6uW_8T.js.map} +0 -0
  102. /package/dist/components/{p-BIaHDBfP.js.map → p-Bq8svcPs.js.map} +0 -0
  103. /package/dist/components/{p-DAFR4U9P.js.map → p-BqbdABo3.js.map} +0 -0
  104. /package/dist/components/{p-nVv71P3f.js.map → p-CEXchU5N.js.map} +0 -0
  105. /package/dist/components/{p-DXbryJHz.js.map → p-CYMKmJ2s.js.map} +0 -0
  106. /package/dist/components/{p-C13fWp2x.js.map → p-CZHIkVgj.js.map} +0 -0
  107. /package/dist/components/{p-CL0tECXf.js.map → p-CZjjDhUl.js.map} +0 -0
  108. /package/dist/components/{p-Bd-Kpekh.js.map → p-C_FFU6W3.js.map} +0 -0
  109. /package/dist/components/{p-CilwchJH.js.map → p-CglHiyY2.js.map} +0 -0
  110. /package/dist/components/{p-9M0ak2q_.js.map → p-DLaN9BPq.js.map} +0 -0
  111. /package/dist/components/{p-CrYJnDev.js.map → p-DiS5BgLA.js.map} +0 -0
  112. /package/dist/components/{p-DiyO47xX.js.map → p-PXdvBMXB.js.map} +0 -0
@@ -89,6 +89,12 @@ export declare class ShellApp {
89
89
  private managedMobileSheetNavOpen;
90
90
  private managedInboxTool;
91
91
  private managedBrowseContext;
92
+ private mobileActionMenuOpen;
93
+ private mobileActionMenuInitialFocusVisible;
94
+ private readonly instanceId;
95
+ private readonly mobileActionMenuTriggerId;
96
+ private readonly mobileActionMenuId;
97
+ private mobileActionTriggerEl;
92
98
  private resizeObserver;
93
99
  private hasLoaded;
94
100
  private foregroundRefreshTimer;
@@ -114,6 +120,7 @@ export declare class ShellApp {
114
120
  disconnectedCallback(): void;
115
121
  onShellPropsChange(): void;
116
122
  handleNavigationChange(): void;
123
+ handlePageChromeChange(): void;
117
124
  handleToolsChange(): void;
118
125
  onMobileStateChange(_next: unknown, previous: unknown): void;
119
126
  private updateResponsiveMode;
@@ -184,6 +191,11 @@ export declare class ShellApp {
184
191
  private renderManagedMobileBarNav;
185
192
  private renderManagedMobileLeading;
186
193
  private renderManagedMobileActions;
194
+ private get resolvedHeaderActions();
195
+ private get mobileActionMenuSections();
196
+ private closeMobileActionMenu;
197
+ private handleMobileActionSelect;
198
+ private renderManagedMobileActionMenu;
187
199
  private get barTitleSections();
188
200
  private renderManagedBarTitle;
189
201
  private renderManagedPage;
@@ -1,5 +1,5 @@
1
1
  import type { BarNavTab } from '../BarNav/bar-nav-types';
2
- import type { BarTitleActionItem, BarTitlePrimaryAction } from '../BarTitle/bar-title-types';
2
+ import type { BarTitleActionConfigItem, BarTitleActionItem, BarTitlePrimaryAction } from '../BarTitle/bar-title-types';
3
3
  import type { BreadcrumbItem } from '../Breadcrumb/breadcrumb-types';
4
4
  import type { MobileHeaderTone } from '../MobileHeader/mobile-header-types';
5
5
  import type { PanelNavGroup, PanelNavItem, PanelNavRouterMode } from '../PanelNav/panel-nav-types';
@@ -67,6 +67,8 @@ export interface ShellPageChromeConfig {
67
67
  breadcrumbAriaLabel?: string;
68
68
  primaryAction?: BarTitlePrimaryAction | null;
69
69
  actions?: BarTitleActionItem[];
70
+ /** Ordered desktop, tablet, and mobile page-action model. */
71
+ actionItems?: BarTitleActionConfigItem[];
70
72
  /** Icon actions rendered in the mobile header's trailing lane. */
71
73
  mobileActions?: PanelToolsHeaderAction[];
72
74
  actionsAriaLabel?: string;
@@ -13,7 +13,7 @@ import { BannerAnnouncement, BannerContrast, BannerIntent, BannerOrientation } f
13
13
  import { NavChromeStyle } from "./shell/nav-chrome";
14
14
  import { BarNavTab } from "./components/BarNav/bar-nav-types";
15
15
  import { BreadcrumbItem, BreadcrumbSelectDetail } from "./components/Breadcrumb/breadcrumb-types";
16
- import { BarTitleActionItem, BarTitlePlacement, BarTitlePrimaryAction, BarTitleSectionItem, BarTitleVariant } from "./components/BarTitle/bar-title-types";
16
+ import { BarTitleActionConfigItem, BarTitleActionItem, BarTitlePlacement, BarTitlePrimaryAction, BarTitleSectionItem, BarTitleVariant } from "./components/BarTitle/bar-title-types";
17
17
  import { BarWorkflowStep, BarWorkflowSubmitAction } from "./components/BarWorkflow/bar-workflow-types";
18
18
  import { MobileDestination, ShellResponsiveMode } from "./shell/shell-responsive";
19
19
  import { ButtonFilledBackground, ButtonFilledContrast, ButtonFilledIntent, ButtonFilledPopup, ButtonFilledSize, ButtonFilledVariant, ButtonFilledWidth } from "./components/ButtonFilled/ButtonFilled";
@@ -83,7 +83,7 @@ export { BannerAnnouncement, BannerContrast, BannerIntent, BannerOrientation } f
83
83
  export { NavChromeStyle } from "./shell/nav-chrome";
84
84
  export { BarNavTab } from "./components/BarNav/bar-nav-types";
85
85
  export { BreadcrumbItem, BreadcrumbSelectDetail } from "./components/Breadcrumb/breadcrumb-types";
86
- export { BarTitleActionItem, BarTitlePlacement, BarTitlePrimaryAction, BarTitleSectionItem, BarTitleVariant } from "./components/BarTitle/bar-title-types";
86
+ export { BarTitleActionConfigItem, BarTitleActionItem, BarTitlePlacement, BarTitlePrimaryAction, BarTitleSectionItem, BarTitleVariant } from "./components/BarTitle/bar-title-types";
87
87
  export { BarWorkflowStep, BarWorkflowSubmitAction } from "./components/BarWorkflow/bar-workflow-types";
88
88
  export { MobileDestination, ShellResponsiveMode } from "./shell/shell-responsive";
89
89
  export { ButtonFilledBackground, ButtonFilledContrast, ButtonFilledIntent, ButtonFilledPopup, ButtonFilledSize, ButtonFilledVariant, ButtonFilledWidth } from "./components/ButtonFilled/ButtonFilled";
@@ -420,6 +420,10 @@ export namespace Components {
420
420
  "value": string;
421
421
  }
422
422
  interface DsBarTitle {
423
+ /**
424
+ * Ordered page-header actions. When supplied, this replaces the legacy primaryAction/actions presentation while preserving the same dsAction event.
425
+ */
426
+ "actionItems"?: BarTitleActionConfigItem[];
423
427
  /**
424
428
  * Secondary page actions shown in the overflow menu. Dividers create groups.
425
429
  * @default []
@@ -644,6 +648,11 @@ export namespace Components {
644
648
  * @default true
645
649
  */
646
650
  "labelEmphasis": boolean;
651
+ /**
652
+ * Accessible name for the appended menu segment in split mode.
653
+ * @default 'More options'
654
+ */
655
+ "menuAriaLabel": string;
647
656
  /**
648
657
  * Scale down during a physical pointer press. Disable when an owning composite requires fixed child or background geometry.
649
658
  * @default true
@@ -654,12 +663,17 @@ export namespace Components {
654
663
  * @default false
655
664
  */
656
665
  "rounded": boolean;
657
- "setFocus": () => Promise<void>;
666
+ "setFocus": (segment?: "primary" | "menu") => Promise<void>;
658
667
  /**
659
668
  * Control density (height, padding, icon, type).
660
669
  * @default 'md'
661
670
  */
662
671
  "size": ButtonFilledSize;
672
+ /**
673
+ * Append a separate ChevronDown menu segment while preserving this button's variant, size, intent, contrast, loading, inactive, and width treatment.
674
+ * @default false
675
+ */
676
+ "split": boolean;
663
677
  /**
664
678
  * Native button type.
665
679
  * @default 'button'
@@ -761,6 +775,11 @@ export namespace Components {
761
775
  * @default true
762
776
  */
763
777
  "labelEmphasis": boolean;
778
+ /**
779
+ * Accessible name for the appended menu segment in split mode.
780
+ * @default 'More options'
781
+ */
782
+ "menuAriaLabel": string;
764
783
  /**
765
784
  * Scale down during a physical pointer press. Disable when an owning composite requires fixed child or background geometry.
766
785
  * @default true
@@ -775,12 +794,17 @@ export namespace Components {
775
794
  * @default false
776
795
  */
777
796
  "rounded": boolean;
778
- "setFocus": () => Promise<void>;
797
+ "setFocus": (segment?: "primary" | "menu") => Promise<void>;
779
798
  /**
780
799
  * Control density (height, padding, icon, type).
781
800
  * @default 'md'
782
801
  */
783
802
  "size": ButtonUnfilledSize;
803
+ /**
804
+ * Append a separate ChevronDown menu segment while preserving this button's variant, size, surface, active, loading, border, and width treatment.
805
+ * @default false
806
+ */
807
+ "split": boolean;
784
808
  /**
785
809
  * Native button type.
786
810
  * @default 'button'
@@ -4166,6 +4190,7 @@ declare global {
4166
4190
  };
4167
4191
  interface HTMLDsButtonFilledElementEventMap {
4168
4192
  "dsClick": MouseEvent;
4193
+ "dsMenuClick": MouseEvent;
4169
4194
  }
4170
4195
  interface HTMLDsButtonFilledElement extends Components.DsButtonFilled, HTMLStencilElement {
4171
4196
  addEventListener<K extends keyof HTMLDsButtonFilledElementEventMap>(type: K, listener: (this: HTMLDsButtonFilledElement, ev: DsButtonFilledCustomEvent<HTMLDsButtonFilledElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
@@ -4183,6 +4208,7 @@ declare global {
4183
4208
  };
4184
4209
  interface HTMLDsButtonUnfilledElementEventMap {
4185
4210
  "dsClick": MouseEvent;
4211
+ "dsMenuClick": MouseEvent;
4186
4212
  "dsChange": boolean;
4187
4213
  }
4188
4214
  interface HTMLDsButtonUnfilledElement extends Components.DsButtonUnfilled, HTMLStencilElement {
@@ -5543,6 +5569,10 @@ declare namespace LocalJSX {
5543
5569
  "value"?: string;
5544
5570
  }
5545
5571
  interface DsBarTitle {
5572
+ /**
5573
+ * Ordered page-header actions. When supplied, this replaces the legacy primaryAction/actions presentation while preserving the same dsAction event.
5574
+ */
5575
+ "actionItems"?: BarTitleActionConfigItem[];
5546
5576
  /**
5547
5577
  * Secondary page actions shown in the overflow menu. Dividers create groups.
5548
5578
  * @default []
@@ -5799,7 +5829,13 @@ declare namespace LocalJSX {
5799
5829
  * @default true
5800
5830
  */
5801
5831
  "labelEmphasis"?: boolean;
5832
+ /**
5833
+ * Accessible name for the appended menu segment in split mode.
5834
+ * @default 'More options'
5835
+ */
5836
+ "menuAriaLabel"?: string;
5802
5837
  "onDsClick"?: (event: DsButtonFilledCustomEvent<MouseEvent>) => void;
5838
+ "onDsMenuClick"?: (event: DsButtonFilledCustomEvent<MouseEvent>) => void;
5803
5839
  /**
5804
5840
  * Scale down during a physical pointer press. Disable when an owning composite requires fixed child or background geometry.
5805
5841
  * @default true
@@ -5815,6 +5851,11 @@ declare namespace LocalJSX {
5815
5851
  * @default 'md'
5816
5852
  */
5817
5853
  "size"?: ButtonFilledSize;
5854
+ /**
5855
+ * Append a separate ChevronDown menu segment while preserving this button's variant, size, intent, contrast, loading, inactive, and width treatment.
5856
+ * @default false
5857
+ */
5858
+ "split"?: boolean;
5818
5859
  /**
5819
5860
  * Native button type.
5820
5861
  * @default 'button'
@@ -5916,8 +5957,14 @@ declare namespace LocalJSX {
5916
5957
  * @default true
5917
5958
  */
5918
5959
  "labelEmphasis"?: boolean;
5960
+ /**
5961
+ * Accessible name for the appended menu segment in split mode.
5962
+ * @default 'More options'
5963
+ */
5964
+ "menuAriaLabel"?: string;
5919
5965
  "onDsChange"?: (event: DsButtonUnfilledCustomEvent<boolean>) => void;
5920
5966
  "onDsClick"?: (event: DsButtonUnfilledCustomEvent<MouseEvent>) => void;
5967
+ "onDsMenuClick"?: (event: DsButtonUnfilledCustomEvent<MouseEvent>) => void;
5921
5968
  /**
5922
5969
  * Scale down during a physical pointer press. Disable when an owning composite requires fixed child or background geometry.
5923
5970
  * @default true
@@ -5937,6 +5984,11 @@ declare namespace LocalJSX {
5937
5984
  * @default 'md'
5938
5985
  */
5939
5986
  "size"?: ButtonUnfilledSize;
5987
+ /**
5988
+ * Append a separate ChevronDown menu segment while preserving this button's variant, size, surface, active, loading, border, and width treatment.
5989
+ * @default false
5990
+ */
5991
+ "split"?: boolean;
5940
5992
  /**
5941
5993
  * Native button type.
5942
5994
  * @default 'button'
@@ -9355,6 +9407,8 @@ declare namespace LocalJSX {
9355
9407
  "controls": string | undefined;
9356
9408
  "expanded": boolean | undefined;
9357
9409
  "haspopup": ButtonFilledPopup | undefined;
9410
+ "split": boolean;
9411
+ "menuAriaLabel": string;
9358
9412
  "hasMenu": boolean;
9359
9413
  }
9360
9414
  interface DsButtonUnfilledAttributes {
@@ -9380,6 +9434,8 @@ declare namespace LocalJSX {
9380
9434
  "controls": string | undefined;
9381
9435
  "expanded": boolean | undefined;
9382
9436
  "haspopup": ButtonUnfilledPopup | undefined;
9437
+ "split": boolean;
9438
+ "menuAriaLabel": string;
9383
9439
  "pressed": boolean | undefined;
9384
9440
  "collapseLabel": boolean;
9385
9441
  "hasMenu": boolean;
@@ -1,6 +1,7 @@
1
1
  export type { NavChromeStyle } from './nav-chrome';
2
2
  export type { PanelNavChildItem, PanelNavChildSelectDetail, PanelNavGroup, PanelNavItem, PanelNavPresentation, } from '../components/PanelNav/panel-nav-types';
3
3
  export type { BarNavTab } from '../components/BarNav/bar-nav-types';
4
+ export type { BarTitleAction, BarTitleActionAppearance, BarTitleActionCollapse, BarTitleActionConfigItem, BarTitleActionItem, BarTitleActionMobile, BarTitleButtonAction, BarTitleDivider, BarTitleIconAction, BarTitleMenuAction, BarTitleMenuChoice, BarTitleMenuChoiceItem, BarTitleOverflowAction, BarTitlePrimaryAction, BarTitleSplitAction, } from '../components/BarTitle/bar-title-types';
4
5
  export type { ShellPageContentInset, ShellPageContentSurface, ShellPageDesktopHeaderPlacement, } from '../components/ShellPage/shell-page-types';
5
6
  export type { ShellAppComposition, ShellNavigationConfig, ShellNavigationSelectDetail, ShellPageChromeConfig, ShellSectionNavigation, ShellToolsConfig, } from '../components/ShellApp/shell-app-types';
6
7
  export type { PanelToolsHeaderAction, PanelToolsHeaderActionDetail, PanelToolHeaderActionDetail, PanelToolsHeaderConfig, PanelToolsHeaders, PanelToolsItem, PanelToolsRailAccessory, PanelToolsRailAccessoryAction, PanelToolsRailAccessoryActionDetail, PanelToolsRailAccessorySecondaryAction, PanelToolsRailAccessoryVisual, PanelToolsRailDividerAccessory, PanelToolsRailPlacement, PanelToolsRailShortcutAccessory, PanelToolsRailTransientAccessory, PanelToolsRailTransientTone, PanelToolsToolId, } from '../components/PanelTools/panel-tools-types';
@@ -6,4 +6,6 @@ export declare const BUTTON_STORY_COLUMN = "display:flex;flex-direction:column;g
6
6
  export declare const BUTTON_STORY_SURFACE = "display:flex;gap:var(--dimension-space-100);align-items:center;padding:var(--dimension-space-150);border-radius:var(--dimension-radius-100);";
7
7
  /** Shared Storybook wiring for the two semantic menu-button components. */
8
8
  export declare function wireButtonStoryMenuTriggers(root: Element | undefined): void;
9
+ /** Shared Storybook wiring for native split mode on either button family. */
10
+ export declare function wireButtonStorySplitTriggers(root: Element | undefined): void;
9
11
  //# sourceMappingURL=button-story-foundation.d.ts.map
@@ -16,6 +16,7 @@ export const DsBarTitle = /*@__PURE__*/ defineContainer('ds-bar-title', defineDs
16
16
  'sectionsAriaLabel',
17
17
  'primaryAction',
18
18
  'actions',
19
+ 'actionItems',
19
20
  'actionsAriaLabel',
20
21
  'variant',
21
22
  'placement',
@@ -25,8 +25,12 @@ export const DsButtonFilled = /*@__PURE__*/ defineContainer('ds-button-filled',
25
25
  'controls',
26
26
  'expanded',
27
27
  'haspopup',
28
+ 'split',
29
+ 'menuAriaLabel',
28
30
  'hasMenu',
29
- 'dsClick'
31
+ 'dsClick',
32
+ 'dsMenuClick'
30
33
  ], [
31
- 'dsClick'
34
+ 'dsClick',
35
+ 'dsMenuClick'
32
36
  ]);
@@ -26,13 +26,17 @@ export const DsButtonUnfilled = /*@__PURE__*/ defineContainer('ds-button-unfille
26
26
  'controls',
27
27
  'expanded',
28
28
  'haspopup',
29
+ 'split',
30
+ 'menuAriaLabel',
29
31
  'pressed',
30
32
  'collapseLabel',
31
33
  'hasMenu',
32
34
  'focusTabIndex',
33
35
  'dsClick',
36
+ 'dsMenuClick',
34
37
  'dsChange'
35
38
  ], [
36
39
  'dsClick',
40
+ 'dsMenuClick',
37
41
  'dsChange'
38
42
  ]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ds-mo/ui",
3
- "version": "14.23.0",
3
+ "version": "14.24.0",
4
4
  "description": "CompoMo — composable web components styled with TokoMo design tokens",
5
5
  "keywords": [
6
6
  "web-components",
@@ -1,2 +0,0 @@
1
- import{p as i,H as t,c as e,h as s,a as r,t as n}from"./index.js";import{d as a}from"./p-DzPtYdXy.js";import{d as o}from"./p-BcxidW9k.js";import{d}from"./p-BnTPuV3x.js";import{d as c}from"./p-7MWaWl8w.js";import{d as l}from"./p-Cea7rROU.js";import{d as h}from"./p-0XTyQNRG.js";import{d as b}from"./p-DeK_6Uym.js";import{d as u}from"./p-XaCYqck3.js";import{d as p}from"./p-DGkn8FwV.js";import{d as f}from"./p-DbLLH3hr.js";import{d as v}from"./p-Cd1JnnVK.js";import{d as m}from"./p-9X_p0bHr.js";function g(i){return"type"in i&&i.type==="divider"}const _=()=>`.ds-control--lg.sc-ds-bar-title,.ds-control--lg.sc-ds-bar-title-h,.ds-control--md.sc-ds-bar-title-h,.ds-control--md.sc-ds-bar-title,.ds-control--sm.sc-ds-bar-title-h,.ds-control--sm.sc-ds-bar-title,.ds-control--xs.sc-ds-bar-title-h,.ds-control--xs.sc-ds-bar-title{--ds-control-radius:var(--dimension-radius-025)}.ds-control--lg.sc-ds-bar-title-h,.ds-control--lg.sc-ds-bar-title{--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-bar-title-h,.ds-control--md.sc-ds-bar-title{--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-bar-title-h,.ds-control--sm.sc-ds-bar-title{--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-bar-title-h,.ds-control--xs.sc-ds-bar-title{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0}.ds-control--lg.sc-ds-bar-title,.ds-control--lg.sc-ds-bar-title-h,.ds-control--md.sc-ds-bar-title-h,.ds-control--md.sc-ds-bar-title,.ds-control--sm.sc-ds-bar-title-h,.ds-control--sm.sc-ds-bar-title,.ds-control--xs.sc-ds-bar-title-h,.ds-control--xs.sc-ds-bar-title{--ds-control-radius:var(--dimension-radius-025)}.ds-control--lg.sc-ds-bar-title-h,.ds-control--lg.sc-ds-bar-title{--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-bar-title-h,.ds-control--md.sc-ds-bar-title{--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-bar-title-h,.ds-control--sm.sc-ds-bar-title{--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-bar-title-h,.ds-control--xs.sc-ds-bar-title{--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-bar-title{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-bar-title{flex-wrap:wrap}.ds-chrome-header--bounded.sc-ds-bar-title{border-block-end:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}.ds-chrome-header__leading.sc-ds-bar-title,.ds-chrome-header__trailing.sc-ds-bar-title{display:flex;align-items:center;flex:0 0 auto;min-width:0}.ds-chrome-header__trailing.sc-ds-bar-title{margin-inline-start:auto;gap:var(--dimension-space-100)}.ds-chrome-header__copy.sc-ds-bar-title{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-bar-title{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-bar-title{align-items:stretch;flex-direction:column;gap:var(--dimension-space-050)}.ds-chrome-header__heading.sc-ds-bar-title,.ds-chrome-header__description.sc-ds-bar-title{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-bar-title{flex:0 1 auto}.ds-chrome-header__copy--wrapping.sc-ds-bar-title .ds-chrome-header__description.sc-ds-bar-title{flex:1 1 var(--dimension-card-width-xs)}@media (forced-colors: active){.sc-ds-bar-title:root,.sc-ds-bar-title-h,.ds-forced-colors-scope.sc-ds-bar-title{--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-bar-title-h{--ds-focus-ring-width:var(--dimension-stroke-width-025, 2px);--ds-focus-ring-offset:var(--dimension-space-025, 2px);--ds-focus-ring-color:var(--color-interaction-focus)}.ds-focus-ring.sc-ds-bar-title-h,.ds-focus-ring.sc-ds-bar-title,.ds-focus-ring-inset.sc-ds-bar-title-h,.ds-focus-ring-inset.sc-ds-bar-title{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-bar-title-h:focus-visible,.ds-focus-ring.sc-ds-bar-title:focus-visible{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring.ds-focus-ring--visible.sc-ds-bar-title-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-bar-title{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring-inset.sc-ds-bar-title-h:focus-visible,.ds-focus-ring-inset.sc-ds-bar-title:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-bar-title-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-bar-title:focus-visible::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-bar-title-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-bar-title{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-bar-title-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-bar-title::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}@media (forced-colors: active){.sc-ds-bar-title-h{--ds-focus-ring-color:var(--ds-forced-color-selected)}}@media (forced-colors: active){.sc-ds-bar-title:root,.sc-ds-bar-title-h,.ds-forced-colors-scope.sc-ds-bar-title{--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}}.ds-interaction-fill.sc-ds-bar-title-h,.ds-interaction-fill.sc-ds-bar-title{position:var(--ds-interaction-position, relative);z-index:var(--ds-interaction-z-index, 0);cursor:default;--ds-interaction-hover:var(--color-interaction-hover);--ds-interaction-pressed:var(--color-interaction-pressed);--ds-interaction-active:var(--color-interaction-active-brand);--ds-interaction-border-width:0px;--ds-interaction-border-color:transparent;--ds-interaction-divider-width:0px;--ds-interaction-divider-color:transparent;--ds-interaction-divider-inline-start-width:0px;--ds-interaction-divider-inline-start-color:transparent;--ds-interaction-divider-inline-end-width:0px;--ds-interaction-divider-inline-end-color:transparent}.ds-interaction-fill.sc-ds-bar-title-h::before,.ds-interaction-fill.sc-ds-bar-title::before,.ds-interaction-fill.sc-ds-bar-title-h::after,.ds-interaction-fill.sc-ds-bar-title::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-bar-title-h::before,.ds-interaction-fill.sc-ds-bar-title::before{z-index:1}.ds-interaction-fill.sc-ds-bar-title-h::after,.ds-interaction-fill.sc-ds-bar-title::after{z-index:3;box-shadow:inset 0 calc(-1 * var(--ds-interaction-divider-width)) 0 var(--ds-interaction-divider-color), inset var(--ds-interaction-divider-inline-start-width) 0 0 var(--ds-interaction-divider-inline-start-color), inset calc(-1 * var(--ds-interaction-divider-inline-end-width)) 0 0 var(--ds-interaction-divider-inline-end-color), inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-bar-title-h,.ds-interaction-fill--bordered.sc-ds-bar-title{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-bar-title-h::before,.ds-interaction-fill--selected.sc-ds-bar-title::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-bar-title-h,.ds-interaction-fill--selected.sc-ds-bar-title{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-bar-title-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-bar-title:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-bar-title-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-bar-title:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill--grouped.sc-ds-bar-title-h::after,.ds-interaction-fill--grouped.sc-ds-bar-title::after,.ds-interaction-fill--grouped.sc-ds-bar-title-h:active:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-bar-title:active:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill--grouped.sc-ds-bar-title-h:hover:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-bar-title:hover:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}}.ds-interaction-fill--grouped.sc-ds-bar-title-h,.ds-interaction-fill--grouped.sc-ds-bar-title{--ds-interaction-divider-width:var(--ds-interaction-group-divider-width, 0px);--ds-interaction-divider-color:var(--ds-interaction-group-divider-color, transparent);--ds-interaction-divider-inline-start-width:var( --ds-interaction-group-divider-inline-start-width, 0px );--ds-interaction-divider-inline-start-color:var( --ds-interaction-group-divider-inline-start-color, transparent );--ds-interaction-divider-inline-end-width:var( --ds-interaction-group-divider-inline-end-width, 0px );--ds-interaction-divider-inline-end-color:var( --ds-interaction-group-divider-inline-end-color, transparent )}.ds-interaction-fill.sc-ds-bar-title-h>.ds-interaction-fill__content.sc-ds-bar-title,.ds-interaction-fill.sc-ds-bar-title>.ds-interaction-fill__content.sc-ds-bar-title,.ds-interaction-fill__content.sc-ds-bar-title{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-bar-title-h,.ds-interaction-fill--on-faint.sc-ds-bar-title{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-bar-title-h,.ds-interaction-fill--on-medium.sc-ds-bar-title{--ds-interaction-hover:var(--color-interaction-on-medium-background-hover);--ds-interaction-pressed:var(--color-interaction-on-medium-background-pressed);--ds-interaction-active:var(--color-interaction-on-medium-background-active);--ds-focus-ring-color:var(--color-interaction-on-medium-background-focus)}.ds-interaction-fill--on-bold.sc-ds-bar-title-h,.ds-interaction-fill--on-bold.sc-ds-bar-title{--ds-interaction-hover:var(--color-interaction-on-bold-background-hover);--ds-interaction-pressed:var(--color-interaction-on-bold-background-pressed);--ds-interaction-active:var(--color-interaction-on-bold-background-active);--ds-focus-ring-color:var(--color-interaction-on-bold-background-focus)}.ds-interaction-fill--on-strong.sc-ds-bar-title-h,.ds-interaction-fill--on-strong.sc-ds-bar-title{--ds-interaction-hover:var(--color-interaction-on-strong-background-hover);--ds-interaction-pressed:var(--color-interaction-on-strong-background-pressed);--ds-interaction-active:var(--color-interaction-on-strong-background-active);--ds-focus-ring-color:var(--color-interaction-on-strong-background-focus)}.ds-interaction-fill--on-translucent.sc-ds-bar-title-h,.ds-interaction-fill--on-translucent.sc-ds-bar-title{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active-brand);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-bar-title-h,.ds-interaction-fill--on-inverted.sc-ds-bar-title{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active-brand);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-bar-title-h,.ds-interaction-fill--on-media.sc-ds-bar-title{--ds-interaction-hover:var(--color-media-interaction-hover);--ds-interaction-pressed:var(--color-media-interaction-pressed);--ds-interaction-active:var(--color-media-interaction-active);--ds-focus-ring-color:var(--color-media-interaction-focus)}.ds-interaction-fill--on-always-dark.sc-ds-bar-title-h,.ds-interaction-fill--on-always-dark.sc-ds-bar-title{--ds-interaction-hover:var(--color-always-dark-interaction-hover);--ds-interaction-pressed:var(--color-always-dark-interaction-pressed);--ds-interaction-active:var(--color-always-dark-interaction-active-brand);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-bar-title-h,.ds-interaction-fill--on-navigation.sc-ds-bar-title{--ds-interaction-hover:var(--color-navigation-interaction-hover);--ds-interaction-pressed:var(--color-navigation-interaction-pressed);--ds-interaction-active:var(--color-navigation-interaction-active);--ds-focus-ring-color:var(--color-navigation-interaction-focus)}@media (forced-colors: active){.ds-interaction-fill.sc-ds-bar-title-h::after,.ds-interaction-fill.sc-ds-bar-title::after{box-shadow:none;outline:var(--ds-interaction-border-width) solid var(--ds-forced-color-control-boundary);outline-offset:calc(-1 * var(--ds-interaction-border-width))}.ds-interaction-fill--selected.sc-ds-bar-title-h::before,.ds-interaction-fill--selected.sc-ds-bar-title::before{background:transparent;outline:var(--dimension-stroke-width-025) solid var(--ds-forced-color-selected);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}}@media (forced-colors: active) and (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-bar-title-h:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill.sc-ds-bar-title:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after{outline-color:var(--ds-forced-color-selected);outline-width:var(--dimension-stroke-width-012)}}.sc-ds-bar-title-h{display:block;min-width:0;box-sizing:border-box;background:var(--_shell-page-header-background, var(--color-background-primary))}[placement='shell-bar'].sc-ds-bar-title-h{--_shell-page-header-background:var(--color-background-secondary)}ds-shell-app.sc-ds-bar-title-h:not([gradient-preset='none'])[placement='shell-bar'],ds-shell-app:not([gradient-preset='none']) [placement='shell-bar'].sc-ds-bar-title-h,ds-shell-app.sc-ds-bar-title-h:not([gradient-preset='none'])[placement='shell-bar'] .bar-title.sc-ds-bar-title,ds-shell-app:not([gradient-preset='none']) [placement='shell-bar'].sc-ds-bar-title-h .bar-title.sc-ds-bar-title,ds-shell-app.shell-app--paper-texture[placement='shell-bar'].sc-ds-bar-title-h,ds-shell-app.shell-app--paper-texture [placement='shell-bar'].sc-ds-bar-title-h,ds-shell-app.shell-app--paper-texture[placement='shell-bar'].sc-ds-bar-title-h .bar-title.sc-ds-bar-title,ds-shell-app.shell-app--paper-texture [placement='shell-bar'].sc-ds-bar-title-h .bar-title.sc-ds-bar-title{background:transparent}[data-shell-page-syncing].sc-ds-bar-title-h{visibility:hidden}.bar-title.sc-ds-bar-title{position:relative;min-width:0;box-sizing:border-box;background:var(--_shell-page-header-background, var(--color-background-primary))}.bar-title.sc-ds-bar-title::after{content:'';position:absolute;inset:auto var(--ds-bar-title-divider-inset, var(--dimension-space-400)) 0;height:var(--dimension-stroke-width-012);background:var(--color-border-tertiary);pointer-events:none}.bar-title--divider-hidden.sc-ds-bar-title::after{display:none}.bar-title__inner.sc-ds-bar-title{position:relative;display:flex;flex-direction:column;align-items:stretch;gap:var(--dimension-space-100);padding:var(--dimension-space-400);box-sizing:border-box}.bar-title__row.sc-ds-bar-title{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--dimension-space-100);min-height:var(--dimension-size-400);min-width:0}.bar-title-host--expanded.sc-ds-bar-title-h .bar-title__row.sc-ds-bar-title{gap:var(--dimension-space-400)}.bar-title__leading.sc-ds-bar-title{display:flex;flex:1 1 auto;flex-direction:column;gap:var(--dimension-space-100);min-width:0}.bar-title__title-row.sc-ds-bar-title{display:flex;align-items:center;gap:var(--dimension-space-100);min-width:0;min-height:var(--dimension-size-400)}.bar-title__identity.sc-ds-bar-title{display:flex;flex:0 1 auto;align-items:center;gap:var(--dimension-space-050);min-width:0}.bar-title__back.sc-ds-bar-title,.bar-title__section-chevron.sc-ds-bar-title{flex:0 0 auto}.bar-title__breadcrumb.sc-ds-bar-title{display:block;width:100%;min-width:0}.bar-title__heading.sc-ds-bar-title{display:block;width:auto;min-width:0;user-select:none}.bar-title__divider.sc-ds-bar-title{width:var(--dimension-stroke-width-012);height:var(--dimension-size-250);margin-inline-start:var(--dimension-space-100);flex:0 0 var(--dimension-stroke-width-012);background:var(--color-border-tertiary)}.bar-title__section-selector.sc-ds-bar-title{display:flex;flex:0 1 auto;min-width:0;max-width:var(--dimension-panel-width-sm)}.bar-title__section-trigger.sc-ds-bar-title{--ds-control-radius:var(--dimension-radius-half);display:inline-flex;align-items:center;justify-content:center;gap:var(--ds-control-gap);height:var(--ds-control-height);min-width:0;max-width:100%;padding-inline:var(--ds-control-padding-inline);border:none;border-radius:var(--ds-control-radius);box-sizing:border-box;background:transparent;color:var(--color-foreground-secondary);cursor:default;font-family:inherit;user-select:none}.bar-title__section-trigger--expanded.sc-ds-bar-title{color:var(--color-foreground-primary);--ds-interaction-hover:var(--ds-interaction-pressed)}.bar-title__section-trigger--expanded.sc-ds-bar-title::after{background:var(--ds-interaction-pressed)}.bar-title__section-label.sc-ds-bar-title{min-width:0;padding-inline:var(--ds-control-label-inset)}.bar-title__actions.sc-ds-bar-title{display:flex;align-items:center;gap:var(--dimension-space-100);flex:0 0 auto}.bar-title__description.sc-ds-bar-title{display:block;min-width:0;max-width:100%}.bar-title-host--compact.sc-ds-bar-title-h .bar-title.sc-ds-bar-title{height:var(--dimension-size-600)}.bar-title-host--compact.sc-ds-bar-title-h .bar-title.sc-ds-bar-title::after{inset-inline:0}.bar-title-host--compact.sc-ds-bar-title-h .bar-title__inner.sc-ds-bar-title{flex:1 1 auto;height:100%;min-width:0;padding:0;gap:0}.bar-title-host--compact.sc-ds-bar-title-h .bar-title__row.sc-ds-bar-title{height:100%;align-items:center}.bar-title-host--compact.sc-ds-bar-title-h .bar-title__identity.sc-ds-bar-title{height:var(--dimension-size-400)}.bar-title-host--compact.sc-ds-bar-title-h .bar-title__divider.sc-ds-bar-title{margin-inline-start:0}.bar-title-host--compact.sc-ds-bar-title-h .bar-title__heading.sc-ds-bar-title{display:inline-flex;flex:1 1 auto;align-items:center;height:var(--dimension-size-400);padding-inline:calc(var(--ds-control-padding-inline) + var(--ds-control-label-inset));box-sizing:border-box}`;let x=0;const w=i(class i extends t{constructor(i){super();if(i!==false){this.__registerHost()}this.dsBack=e(this,"dsBack",7);this.dsBreadcrumbSelect=e(this,"dsBreadcrumbSelect",7);this.dsSectionChange=e(this,"dsSectionChange",7);this.dsAction=e(this,"dsAction",7);this.description="";this.showBack=false;this.backAriaLabel="Back";this.backLabel="Back";this.breadcrumbs=[];this.breadcrumbAriaLabel="Breadcrumb";this.sections=[];this.value="";this.sectionsAriaLabel="Change page section";this.primaryAction=null;this.actions=[];this.actionsAriaLabel="More page actions";this.variant="expanded";this.placement="page";this.showDivider=true;this.sectionMenuOpen=false;this.actionMenuOpen=false;this.sectionMenuInitialFocusVisible=false;this.actionMenuInitialFocusVisible=false;this.instanceId=x++;this.sectionMenuTriggerId=`bar-title-section-trigger-${this.instanceId}`;this.sectionMenuId=`bar-title-section-menu-${this.instanceId}`;this.actionMenuTriggerId=`bar-title-action-trigger-${this.instanceId}`;this.actionMenuId=`bar-title-action-menu-${this.instanceId}`;this.sectionTriggerEl=null;this.actionTriggerEl=null;this.toggleSectionMenu=i=>{this.sectionMenuInitialFocusVisible=i.detail===0;this.actionMenuOpen=false;this.sectionMenuOpen=!this.sectionMenuOpen};this.closeSectionMenu=()=>{this.sectionMenuOpen=false};this.handleSectionSelect=i=>{const t=String(i.detail?.value??"");const e=this.selectableSections.find((i=>i.id===t));if(!e||e.isInactive)return;this.closeSectionMenu();this.dsSectionChange.emit(t);requestAnimationFrame((()=>this.sectionTriggerEl?.focus()))};this.toggleActionMenu=i=>{this.actionMenuInitialFocusVisible=i.detail===0;this.sectionMenuOpen=false;this.actionMenuOpen=!this.actionMenuOpen};this.closeActionMenu=()=>{this.actionMenuOpen=false};this.handleActionSelect=i=>{const t=String(i.detail?.value??"");const e=this.primaryCollapsed&&this.primaryAction?.id===t;const s=this.selectableActions.find((i=>i.id===t));if(!e&&!s)return;if(e&&(this.primaryAction?.isInactive||this.primaryAction?.isLoading)||s?.isInactive){return}this.closeActionMenu();this.dsAction.emit(t);requestAnimationFrame((()=>void this.actionTriggerEl?.setFocus?.()))};this.handleBreadcrumbSelect=i=>{if(this.breadcrumbs.length===0){this.dsBack.emit(i.detail.originalEvent);return}const t=this.dsBreadcrumbSelect.emit(i.detail);if(t.defaultPrevented)i.preventDefault()}}componentWillLoad(){if(this.el.closest("ds-shell-page")){this.el.setAttribute("data-shell-page-syncing","")}}handleSectionsChange(){if(!this.hasSectionSelector)this.closeSectionMenu()}handleActionsChange(){if(!this.showActionMenuTrigger)this.closeActionMenu()}get compact(){return this.effectiveVariant!=="expanded"}get effectiveVariant(){return this.placement==="shell-bar"?"compact":this.variant}get dividerVisible(){return this.compact?this.showCompactDivider??this.showDivider:this.showDivider}get expandedBreadcrumbItems(){if(this.breadcrumbs.length>0)return this.breadcrumbs;if(!this.showBack)return[];return[{id:"back",label:this.backLabel,ariaLabel:this.backAriaLabel}]}get backTooltipLabel(){return"Go back"}get primaryCollapsed(){return this.effectiveVariant==="constrained"&&this.primaryAction!==null&&(this.primaryAction.collapse??"auto")==="auto"}get selectableSections(){return this.sections.filter((i=>!g(i)))}get hasSectionSelector(){return this.selectableSections.length>1}get effectiveValue(){return this.selectableSections.some((i=>i.id===this.value))?this.value:this.selectableSections[0]?.id??""}get selectedSectionLabel(){return this.selectableSections.find((i=>i.id===this.effectiveValue))?.label??""}get sectionTriggerAriaLabel(){return`${this.sectionsAriaLabel}. Current section: ${this.selectedSectionLabel}`}groupsFromItems(i,t){const e=[];let s=[];const r=()=>{if(s.length>0)e.push({items:s});s=[]};for(const e of i){if(g(e)){r()}else{s.push(t(e))}}r();return e}get sectionMenuSections(){return this.groupsFromItems(this.sections,(i=>({label:i.label,value:i.id,isSelected:i.id===this.effectiveValue,isInactive:i.isInactive})))}get selectableActions(){return this.actions.filter((i=>!g(i)))}get showActionMenuTrigger(){return this.selectableActions.length>0||this.primaryCollapsed&&this.primaryAction!==null}actionMenuItem(i){const t=i;return{label:i.label,value:i.id,isInactive:i.isInactive||t.isLoading,isDestructive:i.isDestructive||t.intent==="negative"}}get actionMenuSections(){const i=this.groupsFromItems(this.actions,(i=>this.actionMenuItem(i)));if(!this.primaryCollapsed||!this.primaryAction)return i;return[{items:[this.actionMenuItem(this.primaryAction)]},...i]}renderSectionSelector(){if(!this.hasSectionSelector)return null;return[s("div",{class:"bar-title__divider","aria-hidden":"true"}),s("div",{class:"bar-title__section-selector"},s("button",{ref:i=>{this.sectionTriggerEl=i??null},id:this.sectionMenuTriggerId,class:{"bar-title__section-trigger":true,"bar-title__section-trigger--expanded":this.sectionMenuOpen,"ds-control--md":true,"ds-focus-ring-inset":true,"ds-interaction-fill":true},type:"button","aria-haspopup":"menu","aria-controls":this.sectionMenuId,"aria-expanded":String(this.sectionMenuOpen),"aria-label":this.sectionTriggerAriaLabel,onClick:this.toggleSectionMenu},s("ds-text",{class:"bar-title__section-label ds-interaction-fill__content",as:"span",variant:"text-body-medium",emphasis:true,color:"primary",lineTruncation:1},this.selectedSectionLabel),s("ds-icon",{class:"bar-title__section-chevron ds-interaction-fill__content",name:"ChevronUpDown",size:"md",color:"inherit","aria-hidden":"true"})))]}renderActions(){const i=this.primaryAction;if(!i&&!this.showActionMenuTrigger)return null;return s("div",{class:"bar-title__actions"},i&&!this.primaryCollapsed?s("ds-button-filled",{class:"bar-title__primary-action",variant:i.icon?"icon-label":"label",icon:i.icon??"",label:i.label,intent:i.intent??"brand",contrast:i.contrast??"bold",size:"md",type:i.type??"button",isInactive:i.isInactive,isLoading:i.isLoading,onDsClick:()=>this.dsAction.emit(i.id)}):null,this.showActionMenuTrigger?s("ds-tooltip",{label:"Page options",side:"bottom",size:"sm"},s("ds-button-unfilled",{ref:i=>{this.actionTriggerEl=i??null},id:this.actionMenuTriggerId,class:"bar-title__more-actions",variant:"icon",icon:"Ellipses","aria-label":this.actionsAriaLabel,size:"md",activeFill:!this.compact,hasBorder:i!==null&&!this.primaryCollapsed,haspopup:"menu",controls:this.actionMenuId,expanded:this.actionMenuOpen,onDsClick:i=>this.toggleActionMenu(i.detail)})):null)}renderBreadcrumb(){const i=this.expandedBreadcrumbItems;if(i.length===0)return null;return s("ds-breadcrumb",{class:"bar-title__breadcrumb",items:i,ariaLabel:this.breadcrumbAriaLabel,onDsSelect:this.handleBreadcrumbSelect})}renderBack(){if(!this.showBack)return null;return s("ds-tooltip",{label:this.backTooltipLabel,side:"bottom",size:"sm"},s("ds-button-unfilled",{class:"bar-title__back",variant:"icon",icon:"ChevronLeft","aria-label":this.backAriaLabel,size:"md",activeFill:false,hasBorder:false,onDsClick:i=>this.dsBack.emit(i.detail)}))}render(){const i=this.compact;return s(r,{key:"4763857037e9660fd1a8f980b803b4189f873a96",class:{"bar-title-host--compact":i,"bar-title-host--expanded":this.effectiveVariant==="expanded","bar-title-host--constrained":this.effectiveVariant==="constrained","bar-title-host--has-description":!!this.description,"bar-title-host--has-back":this.showBack,"bar-title-host--has-breadcrumb":!i&&this.expandedBreadcrumbItems.length>0,"bar-title-host--shell-bar":this.placement==="shell-bar"}},s("div",{key:"4d82aa08996a598dfc46d8d8d595becf5dec0993",class:{"bar-title":true,"bar-title--divider-hidden":!this.dividerVisible,"ds-chrome-header":i}},s("div",{key:"dca3f5e14b16d2c71902a052fff94d51cdd3a8df",class:"bar-title__inner"},!i?this.renderBreadcrumb():null,s("div",{key:"a0b55dfa2178bb0f012dc3612a63a1f5f3768dc5",class:"bar-title__row"},s("div",{key:"0249db9eaf0ed7eaa6d3d3580846d0beae2ddeb2",class:"bar-title__leading"},s("div",{key:"dbad8c1f5e27e06b7e9da83987349261332e0ab9",class:"bar-title__title-row","data-shell-page-header-anchor":true},s("div",{key:"7bcd2a4e77d68b87541b5fd1c712d779194226a5",class:"bar-title__identity"},i?this.renderBack():null,s("ds-text",{key:"27ed8f611ac873e04b03ea238f75a032f68c1c9b",class:"bar-title__heading ds-control--md",variant:i?"text-title-small":"text-title-medium",emphasis:true,color:"primary",as:"h1",lineTruncation:1},this.heading)),this.renderSectionSelector()),this.description&&!i?s("ds-text",{class:"bar-title__description",variant:"text-body-small",color:"secondary",lineTruncation:2,wrap:"wrap",as:"p"},this.description):null),this.renderActions()))),this.hasSectionSelector?s("ds-menu",{id:this.sectionMenuId,class:"bar-title__section-menu",anchorId:this.sectionMenuTriggerId,menuLabel:this.sectionsAriaLabel,open:this.sectionMenuOpen,initialFocusVisible:this.sectionMenuInitialFocusVisible,sections:this.sectionMenuSections,onDsClose:this.closeSectionMenu,onDsSelect:this.handleSectionSelect}):null,this.showActionMenuTrigger?s("ds-menu",{id:this.actionMenuId,class:"bar-title__action-menu",anchorId:this.actionMenuTriggerId,align:"end",menuLabel:this.actionsAriaLabel,open:this.actionMenuOpen,initialFocusVisible:this.actionMenuInitialFocusVisible,sections:this.actionMenuSections,onDsClose:this.closeActionMenu,onDsSelect:this.handleActionSelect}):null)}get el(){return this}static get watchers(){return{sections:[{handleSectionsChange:0}],actions:[{handleActionsChange:0}],primaryAction:[{handleActionsChange:0}]}}static get style(){return _()}},[2,"ds-bar-title",{heading:[1],description:[1],showBack:[4,"show-back"],backAriaLabel:[1,"back-aria-label"],backLabel:[1,"back-label"],breadcrumbs:[16],breadcrumbAriaLabel:[1,"breadcrumb-aria-label"],sections:[16],value:[1],sectionsAriaLabel:[1,"sections-aria-label"],primaryAction:[16],actions:[16],actionsAriaLabel:[1,"actions-aria-label"],variant:[1],placement:[513],showDivider:[4,"show-divider"],showCompactDivider:[4,"show-compact-divider"],sectionMenuOpen:[32],actionMenuOpen:[32],sectionMenuInitialFocusVisible:[32],actionMenuInitialFocusVisible:[32]},undefined,{sections:[{handleSectionsChange:0}],actions:[{handleActionsChange:0}],primaryAction:[{handleActionsChange:0}]}]);function k(){if(typeof customElements==="undefined"){return}const i=["ds-bar-title","ds-badge","ds-breadcrumb","ds-button-filled","ds-button-unfilled","ds-icon","ds-loader","ds-menu","ds-swatch-picker","ds-switch","ds-tag","ds-text","ds-tooltip"];i.forEach((i=>{switch(i){case"ds-bar-title":if(!customElements.get(n(i))){customElements.define(n(i),w)}break;case"ds-badge":if(!customElements.get(n(i))){a()}break;case"ds-breadcrumb":if(!customElements.get(n(i))){o()}break;case"ds-button-filled":if(!customElements.get(n(i))){d()}break;case"ds-button-unfilled":if(!customElements.get(n(i))){c()}break;case"ds-icon":if(!customElements.get(n(i))){l()}break;case"ds-loader":if(!customElements.get(n(i))){h()}break;case"ds-menu":if(!customElements.get(n(i))){b()}break;case"ds-swatch-picker":if(!customElements.get(n(i))){u()}break;case"ds-switch":if(!customElements.get(n(i))){p()}break;case"ds-tag":if(!customElements.get(n(i))){f()}break;case"ds-text":if(!customElements.get(n(i))){v()}break;case"ds-tooltip":if(!customElements.get(n(i))){m()}break}}))}k();export{w as B,k as d};
2
- //# sourceMappingURL=p--68f7nIx.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["isBarTitleDivider","item","type","barTitleCss","nextBarTitleId","BarTitle","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","description","showBack","backAriaLabel","backLabel","breadcrumbs","breadcrumbAriaLabel","sections","value","sectionsAriaLabel","primaryAction","actions","actionsAriaLabel","variant","placement","showDivider","sectionMenuOpen","actionMenuOpen","sectionMenuInitialFocusVisible","actionMenuInitialFocusVisible","instanceId","sectionMenuTriggerId","sectionMenuId","actionMenuTriggerId","actionMenuId","sectionTriggerEl","actionTriggerEl","toggleSectionMenu","event","detail","closeSectionMenu","handleSectionSelect","id","String","selected","selectableSections","find","section","isInactive","dsSectionChange","emit","requestAnimationFrame","focus","toggleActionMenu","closeActionMenu","handleActionSelect","primaryMatches","primaryCollapsed","action","selectableActions","candidate","isLoading","dsAction","setFocus","handleBreadcrumbSelect","length","dsBack","originalEvent","forwarded","dsBreadcrumbSelect","defaultPrevented","preventDefault","componentWillLoad","el","closest","setAttribute","handleSectionsChange","hasSectionSelector","handleActionsChange","showActionMenuTrigger","compact","effectiveVariant","dividerVisible","showCompactDivider","expandedBreadcrumbItems","label","ariaLabel","backTooltipLabel","collapse","filter","effectiveValue","some","selectedSectionLabel","sectionTriggerAriaLabel","groupsFromItems","source","map","groups","items","commit","push","sectionMenuSections","isSelected","actionMenuItem","primary","isDestructive","intent","actionMenuSections","renderSectionSelector","h","class","ref","onClick","as","emphasis","color","lineTruncation","name","size","renderActions","icon","contrast","onDsClick","side","activeFill","hasBorder","haspopup","controls","expanded","renderBreadcrumb","onDsSelect","renderBack","render","Host","key","heading","wrap","anchorId","menuLabel","open","initialFocusVisible","onDsClose","align"],"sources":["src/wc/components/BarTitle/bar-title-types.ts","src/wc/components/BarTitle/BarTitle.css?tag=ds-bar-title&encapsulation=scoped","src/wc/components/BarTitle/BarTitle.tsx"],"sourcesContent":["import type { ButtonFilledContrast, ButtonFilledIntent } from '../ButtonFilled/ButtonFilled';\n\nexport interface BarTitleSection {\n id: string;\n label: string;\n isInactive?: boolean;\n}\n\nexport interface BarTitleDivider {\n type: 'divider';\n}\n\nexport type BarTitleSectionItem = BarTitleSection | BarTitleDivider;\n\nexport interface BarTitleAction {\n id: string;\n label: string;\n isInactive?: boolean;\n isDestructive?: boolean;\n}\n\nexport interface BarTitlePrimaryAction extends BarTitleAction {\n icon?: string;\n intent?: ButtonFilledIntent;\n contrast?: ButtonFilledContrast;\n isLoading?: boolean;\n type?: 'button' | 'submit' | 'reset';\n collapse?: BarTitlePrimaryActionCollapse;\n}\n\nexport type BarTitleActionItem = BarTitleAction | BarTitleDivider;\n\nexport type BarTitleVariant = 'expanded' | 'compact' | 'constrained';\nexport type BarTitlePlacement = 'page' | 'shell-bar';\n\nexport type BarTitlePrimaryActionCollapse = 'auto' | 'never';\n\nexport function isBarTitleDivider(\n item: BarTitleSectionItem | BarTitleActionItem\n): item is BarTitleDivider {\n return 'type' in item && item.type === 'divider';\n}\n","@import '../../utils/control-density.css';\n@import '../../utils/chrome-header.css';\n@import '../../utils/focus-ring.css';\n@import '../../utils/interaction-fill.css';\n\n:host {\n display: block;\n min-width: 0;\n box-sizing: border-box;\n background: var(--_shell-page-header-background, var(--color-background-primary));\n}\n\n:host([placement='shell-bar']) {\n --_shell-page-header-background: var(--color-background-secondary);\n}\n\n:host-context(ds-shell-app:not([gradient-preset='none']))[placement='shell-bar'],\n:host-context(ds-shell-app:not([gradient-preset='none']))[placement='shell-bar'] .bar-title,\n:host-context(ds-shell-app.shell-app--paper-texture)[placement='shell-bar'],\n:host-context(ds-shell-app.shell-app--paper-texture)[placement='shell-bar'] .bar-title {\n background: transparent;\n}\n\n:host([data-shell-page-syncing]) {\n visibility: hidden;\n}\n\n.bar-title {\n position: relative;\n min-width: 0;\n box-sizing: border-box;\n background: var(--_shell-page-header-background, var(--color-background-primary));\n}\n\n.bar-title::after {\n content: '';\n position: absolute;\n inset: auto var(--ds-bar-title-divider-inset, var(--dimension-space-400)) 0;\n height: var(--dimension-stroke-width-012);\n background: var(--color-border-tertiary);\n pointer-events: none;\n}\n\n.bar-title--divider-hidden::after {\n display: none;\n}\n\n.bar-title__inner {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--dimension-space-100);\n padding: var(--dimension-space-400);\n box-sizing: border-box;\n}\n\n.bar-title__row {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--dimension-space-100);\n min-height: var(--dimension-size-400);\n min-width: 0;\n}\n\n:host(.bar-title-host--expanded) .bar-title__row {\n gap: var(--dimension-space-400);\n}\n\n.bar-title__leading {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n gap: var(--dimension-space-100);\n min-width: 0;\n}\n\n.bar-title__title-row {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-100);\n min-width: 0;\n min-height: var(--dimension-size-400);\n}\n\n.bar-title__identity {\n display: flex;\n flex: 0 1 auto;\n align-items: center;\n gap: var(--dimension-space-050);\n min-width: 0;\n}\n\n.bar-title__back,\n.bar-title__section-chevron {\n flex: 0 0 auto;\n}\n\n.bar-title__breadcrumb {\n display: block;\n width: 100%;\n min-width: 0;\n}\n\n.bar-title__heading {\n display: block;\n width: auto;\n min-width: 0;\n user-select: none;\n}\n\n.bar-title__divider {\n width: var(--dimension-stroke-width-012);\n height: var(--dimension-size-250);\n margin-inline-start: var(--dimension-space-100);\n flex: 0 0 var(--dimension-stroke-width-012);\n background: var(--color-border-tertiary);\n}\n\n.bar-title__section-selector {\n display: flex;\n flex: 0 1 auto;\n min-width: 0;\n max-width: var(--dimension-panel-width-sm);\n}\n\n.bar-title__section-trigger {\n --ds-control-radius: var(--dimension-radius-half);\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--ds-control-gap);\n height: var(--ds-control-height);\n min-width: 0;\n max-width: 100%;\n padding-inline: var(--ds-control-padding-inline);\n border: none;\n border-radius: var(--ds-control-radius);\n box-sizing: border-box;\n background: transparent;\n color: var(--color-foreground-secondary);\n cursor: default;\n font-family: inherit;\n user-select: none;\n}\n\n.bar-title__section-trigger--expanded {\n color: var(--color-foreground-primary);\n --ds-interaction-hover: var(--ds-interaction-pressed);\n}\n\n.bar-title__section-trigger--expanded::after {\n background: var(--ds-interaction-pressed);\n}\n\n.bar-title__section-label {\n min-width: 0;\n padding-inline: var(--ds-control-label-inset);\n}\n\n.bar-title__actions {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-100);\n flex: 0 0 auto;\n}\n\n.bar-title__description {\n display: block;\n min-width: 0;\n max-width: 100%;\n}\n\n:host(.bar-title-host--compact) .bar-title {\n height: var(--dimension-size-600);\n}\n\n:host(.bar-title-host--compact) .bar-title::after {\n inset-inline: 0;\n}\n\n:host(.bar-title-host--compact) .bar-title__inner {\n flex: 1 1 auto;\n height: 100%;\n min-width: 0;\n padding: 0;\n gap: 0;\n}\n\n:host(.bar-title-host--compact) .bar-title__row {\n height: 100%;\n align-items: center;\n}\n\n:host(.bar-title-host--compact) .bar-title__identity {\n height: var(--dimension-size-400);\n}\n\n:host(.bar-title-host--compact) .bar-title__divider {\n margin-inline-start: 0;\n}\n\n:host(.bar-title-host--compact) .bar-title__heading {\n display: inline-flex;\n flex: 1 1 auto;\n align-items: center;\n height: var(--dimension-size-400);\n padding-inline: calc(var(--ds-control-padding-inline) + var(--ds-control-label-inset));\n box-sizing: border-box;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport type { BreadcrumbItem, BreadcrumbSelectDetail } from '../Breadcrumb/breadcrumb-types';\nimport type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport {\n isBarTitleDivider,\n type BarTitleAction,\n type BarTitleActionItem,\n type BarTitlePrimaryAction,\n type BarTitleSection,\n type BarTitleSectionItem,\n type BarTitlePlacement,\n type BarTitleVariant,\n} from './bar-title-types';\n\nlet nextBarTitleId = 0;\n\ntype FocusableButton = HTMLElement & { setFocus?: () => Promise<void> };\n\n@Component({\n tag: 'ds-bar-title',\n styleUrl: 'BarTitle.css',\n scoped: true,\n})\nexport class BarTitle {\n @Element() el!: HTMLElement;\n\n /** The page's single visible h1. */\n @Prop() heading!: string;\n\n /** Optional supporting copy shown in the expanded presentation. */\n @Prop() description: string = '';\n\n /** Show the leading page-level Back action. */\n @Prop({ attribute: 'show-back' }) showBack: boolean = false;\n\n /** Accessible name for the leading Back action. */\n @Prop() backAriaLabel: string = 'Back';\n\n /** Visible parent-page label used by the expanded breadcrumb when breadcrumbs is empty. */\n @Prop() backLabel: string = 'Back';\n\n /** Optional expanded ancestor path. Compact variants continue to use the Back action. */\n @Prop() breadcrumbs: BreadcrumbItem[] = [];\n\n /** Accessible name for the expanded breadcrumb navigation landmark. */\n @Prop() breadcrumbAriaLabel: string = 'Breadcrumb';\n\n /** Optional page sections exposed through the active-section menu. */\n @Prop() sections: BarTitleSectionItem[] = [];\n\n /** Id of the active page section. */\n @Prop() value: string = '';\n\n /** Accessible name for the page-section menu. */\n @Prop() sectionsAriaLabel: string = 'Change page section';\n\n /** The one highest-emphasis page action. */\n @Prop() primaryAction: BarTitlePrimaryAction | null = null;\n\n /** Secondary page actions shown in the overflow menu. Dividers create groups. */\n @Prop() actions: BarTitleActionItem[] = [];\n\n /** Accessible name for the page-actions menu. */\n @Prop() actionsAriaLabel: string = 'More page actions';\n\n /** Explicit visual/capacity variant. ShellPage owns automatic selection. */\n @Prop() variant: BarTitleVariant = 'expanded';\n\n /** Page-header placement, or compact application-shell bar placement. */\n @Prop({ reflect: true }) placement: BarTitlePlacement = 'page';\n\n /** Draw the page-title divider beneath the header. */\n @Prop() showDivider: boolean = true;\n\n /** Override divider visibility for compact and constrained variants. */\n @Prop() showCompactDivider?: boolean;\n\n /** Emitted when the leading Back action is activated. */\n @Event() dsBack!: EventEmitter<MouseEvent>;\n\n /** Emitted when an authored expanded breadcrumb item is activated. */\n @Event({ cancelable: true }) dsBreadcrumbSelect!: EventEmitter<BreadcrumbSelectDetail>;\n\n /** Emitted with the newly selected page-section id. */\n @Event() dsSectionChange!: EventEmitter<string>;\n\n /** Emitted with the activated primary or overflow action id. */\n @Event() dsAction!: EventEmitter<string>;\n\n @State() private sectionMenuOpen = false;\n @State() private actionMenuOpen = false;\n @State() private sectionMenuInitialFocusVisible = false;\n @State() private actionMenuInitialFocusVisible = false;\n\n private readonly instanceId = nextBarTitleId++;\n private readonly sectionMenuTriggerId = `bar-title-section-trigger-${this.instanceId}`;\n private readonly sectionMenuId = `bar-title-section-menu-${this.instanceId}`;\n private readonly actionMenuTriggerId = `bar-title-action-trigger-${this.instanceId}`;\n private readonly actionMenuId = `bar-title-action-menu-${this.instanceId}`;\n private sectionTriggerEl: HTMLButtonElement | null = null;\n private actionTriggerEl: FocusableButton | null = null;\n\n componentWillLoad() {\n if (this.el.closest('ds-shell-page')) {\n this.el.setAttribute('data-shell-page-syncing', '');\n }\n }\n\n @Watch('sections')\n handleSectionsChange() {\n if (!this.hasSectionSelector) this.closeSectionMenu();\n }\n\n @Watch('actions')\n @Watch('primaryAction')\n handleActionsChange() {\n if (!this.showActionMenuTrigger) this.closeActionMenu();\n }\n\n private get compact(): boolean {\n return this.effectiveVariant !== 'expanded';\n }\n\n private get effectiveVariant(): BarTitleVariant {\n return this.placement === 'shell-bar' ? 'compact' : this.variant;\n }\n\n private get dividerVisible(): boolean {\n return this.compact ? (this.showCompactDivider ?? this.showDivider) : this.showDivider;\n }\n\n private get expandedBreadcrumbItems(): BreadcrumbItem[] {\n if (this.breadcrumbs.length > 0) return this.breadcrumbs;\n if (!this.showBack) return [];\n return [\n {\n id: 'back',\n label: this.backLabel,\n ariaLabel: this.backAriaLabel,\n },\n ];\n }\n\n /** Tooltip copy is fixed and generic; backAriaLabel/actionsAriaLabel stay page-specific. */\n private get backTooltipLabel(): string {\n return 'Go back';\n }\n\n private get primaryCollapsed(): boolean {\n return (\n this.effectiveVariant === 'constrained' &&\n this.primaryAction !== null &&\n (this.primaryAction.collapse ?? 'auto') === 'auto'\n );\n }\n\n private get selectableSections(): BarTitleSection[] {\n return this.sections.filter((item): item is BarTitleSection => !isBarTitleDivider(item));\n }\n\n private get hasSectionSelector(): boolean {\n return this.selectableSections.length > 1;\n }\n\n private get effectiveValue(): string {\n return this.selectableSections.some(section => section.id === this.value)\n ? this.value\n : (this.selectableSections[0]?.id ?? '');\n }\n\n private get selectedSectionLabel(): string {\n return this.selectableSections.find(section => section.id === this.effectiveValue)?.label ?? '';\n }\n\n private get sectionTriggerAriaLabel(): string {\n return `${this.sectionsAriaLabel}. Current section: ${this.selectedSectionLabel}`;\n }\n\n private groupsFromItems<T extends BarTitleSection | BarTitleAction>(\n source: Array<T | { type: 'divider' }>,\n map: (item: T) => MenuItemData\n ): MenuSection[] {\n const groups: MenuSection[] = [];\n let items: MenuItemData[] = [];\n const commit = () => {\n if (items.length > 0) groups.push({ items });\n items = [];\n };\n\n for (const item of source) {\n if (isBarTitleDivider(item)) {\n commit();\n } else {\n items.push(map(item));\n }\n }\n commit();\n return groups;\n }\n\n private get sectionMenuSections(): MenuSection[] {\n return this.groupsFromItems(this.sections, section => ({\n label: section.label,\n value: section.id,\n isSelected: section.id === this.effectiveValue,\n isInactive: section.isInactive,\n }));\n }\n\n private get selectableActions(): BarTitleAction[] {\n return this.actions.filter((item): item is BarTitleAction => !isBarTitleDivider(item));\n }\n\n private get showActionMenuTrigger(): boolean {\n return (\n this.selectableActions.length > 0 || (this.primaryCollapsed && this.primaryAction !== null)\n );\n }\n\n private actionMenuItem(action: BarTitleAction | BarTitlePrimaryAction): MenuItemData {\n const primary = action as BarTitlePrimaryAction;\n return {\n label: action.label,\n value: action.id,\n isInactive: action.isInactive || primary.isLoading,\n isDestructive: action.isDestructive || primary.intent === 'negative',\n };\n }\n\n private get actionMenuSections(): MenuSection[] {\n const groups = this.groupsFromItems(this.actions, action => this.actionMenuItem(action));\n if (!this.primaryCollapsed || !this.primaryAction) return groups;\n return [{ items: [this.actionMenuItem(this.primaryAction)] }, ...groups];\n }\n\n private toggleSectionMenu = (event: MouseEvent) => {\n this.sectionMenuInitialFocusVisible = event.detail === 0;\n this.actionMenuOpen = false;\n this.sectionMenuOpen = !this.sectionMenuOpen;\n };\n\n private closeSectionMenu = () => {\n this.sectionMenuOpen = false;\n };\n\n private handleSectionSelect = (event: CustomEvent<MenuItemData>) => {\n const id = String(event.detail?.value ?? '');\n const selected = this.selectableSections.find(section => section.id === id);\n if (!selected || selected.isInactive) return;\n this.closeSectionMenu();\n this.dsSectionChange.emit(id);\n requestAnimationFrame(() => this.sectionTriggerEl?.focus());\n };\n\n private toggleActionMenu = (event: MouseEvent) => {\n this.actionMenuInitialFocusVisible = event.detail === 0;\n this.sectionMenuOpen = false;\n this.actionMenuOpen = !this.actionMenuOpen;\n };\n\n private closeActionMenu = () => {\n this.actionMenuOpen = false;\n };\n\n private handleActionSelect = (event: CustomEvent<MenuItemData>) => {\n const id = String(event.detail?.value ?? '');\n const primaryMatches = this.primaryCollapsed && this.primaryAction?.id === id;\n const action = this.selectableActions.find(candidate => candidate.id === id);\n if (!primaryMatches && !action) return;\n if (\n (primaryMatches && (this.primaryAction?.isInactive || this.primaryAction?.isLoading)) ||\n action?.isInactive\n ) {\n return;\n }\n this.closeActionMenu();\n this.dsAction.emit(id);\n requestAnimationFrame(() => void this.actionTriggerEl?.setFocus?.());\n };\n\n private renderSectionSelector() {\n if (!this.hasSectionSelector) return null;\n return [\n <div class=\"bar-title__divider\" aria-hidden=\"true\" />,\n <div class=\"bar-title__section-selector\">\n <button\n ref={el => {\n this.sectionTriggerEl = el ?? null;\n }}\n id={this.sectionMenuTriggerId}\n class={{\n 'bar-title__section-trigger': true,\n 'bar-title__section-trigger--expanded': this.sectionMenuOpen,\n 'ds-control--md': true,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': true,\n }}\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-controls={this.sectionMenuId}\n aria-expanded={String(this.sectionMenuOpen)}\n aria-label={this.sectionTriggerAriaLabel}\n onClick={this.toggleSectionMenu}\n >\n <ds-text\n class=\"bar-title__section-label ds-interaction-fill__content\"\n as=\"span\"\n variant=\"text-body-medium\"\n emphasis\n color=\"primary\"\n lineTruncation={1}\n >\n {this.selectedSectionLabel}\n </ds-text>\n <ds-icon\n class=\"bar-title__section-chevron ds-interaction-fill__content\"\n name=\"ChevronUpDown\"\n size=\"md\"\n color=\"inherit\"\n aria-hidden=\"true\"\n />\n </button>\n </div>,\n ];\n }\n\n private renderActions() {\n const primary = this.primaryAction;\n if (!primary && !this.showActionMenuTrigger) return null;\n\n return (\n <div class=\"bar-title__actions\">\n {primary && !this.primaryCollapsed ? (\n <ds-button-filled\n class=\"bar-title__primary-action\"\n variant={primary.icon ? 'icon-label' : 'label'}\n icon={primary.icon ?? ''}\n label={primary.label}\n intent={primary.intent ?? 'brand'}\n contrast={primary.contrast ?? 'bold'}\n size=\"md\"\n type={primary.type ?? 'button'}\n isInactive={primary.isInactive}\n isLoading={primary.isLoading}\n onDsClick={() => this.dsAction.emit(primary.id)}\n />\n ) : null}\n {this.showActionMenuTrigger ? (\n <ds-tooltip label=\"Page options\" side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n ref={el => {\n this.actionTriggerEl = el ?? null;\n }}\n id={this.actionMenuTriggerId}\n class=\"bar-title__more-actions\"\n variant=\"icon\"\n icon=\"Ellipses\"\n aria-label={this.actionsAriaLabel}\n size=\"md\"\n activeFill={!this.compact}\n hasBorder={primary !== null && !this.primaryCollapsed}\n haspopup=\"menu\"\n controls={this.actionMenuId}\n expanded={this.actionMenuOpen}\n onDsClick={(event: CustomEvent<MouseEvent>) => this.toggleActionMenu(event.detail)}\n />\n </ds-tooltip>\n ) : null}\n </div>\n );\n }\n\n private handleBreadcrumbSelect = (event: CustomEvent<BreadcrumbSelectDetail>) => {\n if (this.breadcrumbs.length === 0) {\n this.dsBack.emit(event.detail.originalEvent);\n return;\n }\n const forwarded = this.dsBreadcrumbSelect.emit(event.detail);\n if (forwarded.defaultPrevented) event.preventDefault();\n };\n\n private renderBreadcrumb() {\n const items = this.expandedBreadcrumbItems;\n if (items.length === 0) return null;\n return (\n <ds-breadcrumb\n class=\"bar-title__breadcrumb\"\n items={items}\n ariaLabel={this.breadcrumbAriaLabel}\n onDsSelect={this.handleBreadcrumbSelect}\n />\n );\n }\n\n private renderBack() {\n if (!this.showBack) return null;\n return (\n <ds-tooltip label={this.backTooltipLabel} side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n class=\"bar-title__back\"\n variant=\"icon\"\n icon=\"ChevronLeft\"\n aria-label={this.backAriaLabel}\n size=\"md\"\n activeFill={false}\n hasBorder={false}\n onDsClick={(event: CustomEvent<MouseEvent>) => this.dsBack.emit(event.detail)}\n />\n </ds-tooltip>\n );\n }\n\n render() {\n const compact = this.compact;\n return (\n <Host\n class={{\n 'bar-title-host--compact': compact,\n 'bar-title-host--expanded': this.effectiveVariant === 'expanded',\n 'bar-title-host--constrained': this.effectiveVariant === 'constrained',\n 'bar-title-host--has-description': !!this.description,\n 'bar-title-host--has-back': this.showBack,\n 'bar-title-host--has-breadcrumb': !compact && this.expandedBreadcrumbItems.length > 0,\n 'bar-title-host--shell-bar': this.placement === 'shell-bar',\n }}\n >\n <div\n class={{\n 'bar-title': true,\n 'bar-title--divider-hidden': !this.dividerVisible,\n 'ds-chrome-header': compact,\n }}\n >\n <div class=\"bar-title__inner\">\n {!compact ? this.renderBreadcrumb() : null}\n <div class=\"bar-title__row\">\n <div class=\"bar-title__leading\">\n <div class=\"bar-title__title-row\" data-shell-page-header-anchor>\n <div class=\"bar-title__identity\">\n {compact ? this.renderBack() : null}\n <ds-text\n class=\"bar-title__heading ds-control--md\"\n variant={compact ? 'text-title-small' : 'text-title-medium'}\n emphasis\n color=\"primary\"\n as=\"h1\"\n lineTruncation={1}\n >\n {this.heading}\n </ds-text>\n </div>\n {this.renderSectionSelector()}\n </div>\n {this.description && !compact ? (\n <ds-text\n class=\"bar-title__description\"\n variant=\"text-body-small\"\n color=\"secondary\"\n lineTruncation={2}\n wrap=\"wrap\"\n as=\"p\"\n >\n {this.description}\n </ds-text>\n ) : null}\n </div>\n {this.renderActions()}\n </div>\n </div>\n </div>\n\n {this.hasSectionSelector ? (\n <ds-menu\n id={this.sectionMenuId}\n class=\"bar-title__section-menu\"\n anchorId={this.sectionMenuTriggerId}\n menuLabel={this.sectionsAriaLabel}\n open={this.sectionMenuOpen}\n initialFocusVisible={this.sectionMenuInitialFocusVisible}\n sections={this.sectionMenuSections}\n onDsClose={this.closeSectionMenu}\n onDsSelect={this.handleSectionSelect}\n />\n ) : null}\n\n {this.showActionMenuTrigger ? (\n <ds-menu\n id={this.actionMenuId}\n class=\"bar-title__action-menu\"\n anchorId={this.actionMenuTriggerId}\n align=\"end\"\n menuLabel={this.actionsAriaLabel}\n open={this.actionMenuOpen}\n initialFocusVisible={this.actionMenuInitialFocusVisible}\n sections={this.actionMenuSections}\n onDsClose={this.closeActionMenu}\n onDsSelect={this.handleActionSelect}\n />\n ) : null}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["TABLE_CAPTION_COMPACT_MAX_PX","isTableCaptionCompact","width","tableCaptionInlineSize","entry","contentBoxSize","inlineSize","contentRect","observeTableCaptionCompact","host","onChange","ResizeObserver","undefined","table","closest","sync","observer","entries","observe","clientWidth","disconnect","buttonUnfilledCss","ButtonUnfilled","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","variant","size","isInset","insetDepth","label","labelEmphasis","icon","isActive","activeFill","hasBorder","rounded","pressScale","dot","isInactive","isLoading","type","ariaLabel","collapseLabel","hasMenu","captionCompact","buttonEl","hasLoaded","handleClick","event","preventDefault","stopPropagation","dsClick","emit","pressed","dsChange","componentDidLoad","syncCaptionCompactObserver","connectedCallback","disconnectedCallback","disconnectCaptionCompactObserver","onCollapseLabelChange","setFocus","focus","captionIconOnly","Boolean","visualVariant","showDot","captionCompactDisconnect","el","compact","resolvedHaspopup","haspopup","doubleInset","expandedPopup","expanded","visuallyActive","dotRing","accessibleName","render","bg","background","cls","button","h","key","ref","class","disabled","tabIndex","focusTabIndex","controls","String","onPointerDown","beginElevatedControlPress","onClick","renderButtonContent","namespace","visible","Host","controlWidthClass","side"],"sources":["src/wc/utils/table-caption-compact.ts","src/wc/components/ButtonUnfilled/ButtonUnfilled.css?tag=ds-button-unfilled&encapsulation=scoped","src/wc/components/ButtonUnfilled/ButtonUnfilled.tsx"],"sourcesContent":["/** Matches `@container ds-table (max-width: 899px)` on caption Filter/Group/Sort. */\nexport const TABLE_CAPTION_COMPACT_MAX_PX = 899;\n\nexport function isTableCaptionCompact(width: number): boolean {\n return width > 0 && width <= TABLE_CAPTION_COMPACT_MAX_PX;\n}\n\nexport function tableCaptionInlineSize(entry: ResizeObserverEntry): number {\n return entry.contentBoxSize[0]?.inlineSize ?? entry.contentRect.width;\n}\n\nexport function observeTableCaptionCompact(\n host: HTMLElement,\n onChange: (compact: boolean) => void\n): () => void {\n if (typeof ResizeObserver === 'undefined') {\n onChange(false);\n return () => undefined;\n }\n\n const table = host.closest('ds-table');\n if (!table) {\n onChange(false);\n return () => undefined;\n }\n\n const sync = (width: number) => {\n if (width <= 0) return;\n onChange(isTableCaptionCompact(width));\n };\n\n const observer = new ResizeObserver(entries => {\n sync(entries[0] ? tableCaptionInlineSize(entries[0]) : 0);\n });\n observer.observe(table);\n sync(table.clientWidth);\n return () => observer.disconnect();\n}\n","@import '../../utils/button-base.css';\n@import '../../utils/table-caption-control.css';\n\n:host {\n --ds-button-unfilled-fg: var(--color-foreground-secondary);\n --ds-button-unfilled-fg-active: var(--color-foreground-primary);\n --ds-button-unfilled-dot-ring: var(--color-background-secondary);\n --ds-button-unfilled-border: var(--color-border-secondary);\n}\n\n.button-unfilled {\n background: transparent;\n color: var(--ds-button-unfilled-fg);\n /* Hover/press/selected fill: `.ds-interaction-fill` (+ `--selected` / `--on-*`).\n Active foreground changes remain independent from popup-open pressed paint. */\n}\n\n.button-unfilled--active {\n color: var(--ds-button-unfilled-fg-active);\n}\n\n/*\n * An open popup is a transient pressed state, not a selected state. Keep the\n * pressed wash visible for the popup's complete rendered lifecycle without\n * promoting the resting foreground or selected fill.\n */\n/* Inset stroke via interaction-fill ::after (above selected / hover washes). */\n.button-unfilled--bordered {\n --ds-interaction-border-color: var(--ds-button-unfilled-border);\n}\n\n/* Inactive: `.ds-control-inactive` (50% opacity). */\n\n/* Foreground / chrome tokens per surface — interaction tokens come from util `--on-*`. */\n.button-unfilled--background-medium {\n --ds-button-unfilled-fg: var(--color-foreground-on-medium-background-secondary);\n --ds-button-unfilled-fg-active: var(--color-foreground-on-medium-background-primary);\n --ds-button-unfilled-dot-ring: var(--color-background-medium-neutral);\n --ds-button-unfilled-border: var(--color-border-on-medium-background-secondary);\n}\n\n.button-unfilled--background-bold {\n --ds-button-unfilled-fg: var(--color-foreground-on-bold-background-secondary);\n --ds-button-unfilled-fg-active: var(--color-foreground-on-bold-background-primary);\n --ds-button-unfilled-dot-ring: var(--color-background-bold-neutral);\n --ds-button-unfilled-border: var(--color-border-on-bold-background-secondary);\n}\n\n.button-unfilled--background-strong {\n --ds-button-unfilled-fg: var(--color-foreground-on-strong-background-secondary);\n --ds-button-unfilled-fg-active: var(--color-foreground-on-strong-background-primary);\n --ds-button-unfilled-dot-ring: var(--color-background-strong-neutral);\n --ds-button-unfilled-border: var(--color-border-on-strong-background-secondary);\n}\n\n.button-unfilled--background-translucent {\n --ds-button-unfilled-fg: var(--color-translucent-foreground-secondary);\n --ds-button-unfilled-fg-active: var(--color-translucent-foreground-primary);\n --ds-button-unfilled-dot-ring: var(--color-translucent-translucent);\n --ds-button-unfilled-border: var(--color-translucent-border-secondary);\n}\n\n.button-unfilled--background-inverted {\n --ds-button-unfilled-fg: var(--color-inverted-foreground-secondary);\n --ds-button-unfilled-fg-active: var(--color-inverted-foreground-primary);\n --ds-button-unfilled-dot-ring: var(--color-inverted-background);\n --ds-button-unfilled-border: var(--color-inverted-border-secondary);\n}\n\n.button-unfilled--background-media {\n --ds-button-unfilled-fg: var(--color-media-foreground-secondary);\n --ds-button-unfilled-fg-active: var(--color-media-foreground-primary);\n --ds-button-unfilled-dot-ring: var(--color-media-background);\n --ds-button-unfilled-border: var(--color-media-border-secondary);\n}\n\n.button-unfilled--on-always-dark {\n --ds-button-unfilled-fg: var(--color-always-dark-foreground-secondary);\n --ds-button-unfilled-fg-active: var(--color-always-dark-foreground-primary);\n --ds-button-unfilled-dot-ring: var(--color-always-dark-background);\n --ds-button-unfilled-border: var(--color-always-dark-border-secondary);\n}\n\n/*\n * After surface ring defaults: selected fill remaps the knock-out to the active\n * wash so the badge halo matches the selected background.\n */\n.button-unfilled.ds-interaction-fill--selected {\n --ds-button-unfilled-dot-ring: var(--ds-interaction-active);\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { controlWidthClass } from '../../utils';\nimport { beginElevatedControlPress } from '../../utils/control-press';\nimport { renderButtonContent } from '../../utils/button-render';\nimport type { ControlInsetDepth } from '../../utils/control-text';\nimport { observeTableCaptionCompact } from '../../utils/table-caption-compact';\nimport type { ButtonPopup, ButtonSize, ButtonVariant, ButtonWidth } from '../../utils/button-types';\n\nexport type ButtonUnfilledBackground =\n | 'faint'\n | 'medium'\n | 'bold'\n | 'strong'\n | 'translucent'\n | 'inverted'\n | 'media'\n | 'always-dark';\n\nexport type ButtonUnfilledVariant = ButtonVariant;\nexport type ButtonUnfilledSize = ButtonSize;\nexport type ButtonUnfilledWidth = ButtonWidth;\nexport type ButtonUnfilledPopup = ButtonPopup;\n\n@Component({\n tag: 'ds-button-unfilled',\n styleUrl: 'ButtonUnfilled.css',\n scoped: true,\n})\nexport class ButtonUnfilled {\n @Element() el!: HTMLElement;\n\n /**\n * Content layout. Default is label-only; pass `icon` for icon-only chrome\n * (nav / tool rails) or `icon-label` for leading icon + text.\n */\n @Prop() variant: ButtonUnfilledVariant = 'label';\n\n /** Control density (height, padding, icon, type). */\n @Prop() size: ButtonUnfilledSize = 'md';\n\n /** Use reduced outer geometry when nested inside a control of the same size. */\n @Prop() isInset: boolean = false;\n\n /** Single removes 4px overall; double removes 8px overall (xs stays single). */\n @Prop() insetDepth: ControlInsetDepth = 'single';\n\n /** Width fit — hug content (default) or fill the parent. */\n @Prop() width: ButtonUnfilledWidth = 'hug';\n\n /** Visible text for `label` / `icon-label` variants. */\n @Prop() label: string = '';\n\n /** Whether the visible label uses the emphasized weight. */\n @Prop() labelEmphasis: boolean = true;\n\n /** Icon name passed to <ds-icon> for `icon` / `icon-label` variants. */\n @Prop() icon: string = '';\n\n /**\n * Owner-controlled visual emphasis inside a composite. This does not add\n * toggle semantics and does not emit dsChange.\n */\n @Prop() isActive: boolean = false;\n\n /**\n * When active, render the selected interaction fill.\n * Default `true` for general UI. Shell chrome (nav / tool rails) should pass\n * `false` so selection is foreground-only (primary color, no fill).\n */\n @Prop() activeFill: boolean = true;\n\n /** Show a 1px secondary inset border. Default on; shell chrome can pass `false`. */\n @Prop() hasBorder: boolean = true;\n\n /** Use the half-radius treatment instead of the default control radius. */\n @Prop() rounded: boolean = false;\n\n /**\n * Scale down during a physical pointer press.\n * Disable when an owning composite requires fixed child or background geometry.\n */\n @Prop() pressScale: boolean = true;\n\n /** Show a notification dot at the top-right of the icon zone (icon variant only). */\n @Prop() dot: boolean = false;\n\n /** Disables interaction. */\n @Prop() isInactive: boolean = false;\n\n /** Shows an inline loader and prevents interaction without applying inactive opacity. */\n @Prop() isLoading: boolean = false;\n\n /** Native button type. */\n @Prop() type: 'button' | 'submit' | 'reset' = 'button';\n\n /** Actual parent surface context. Omit on primary and secondary surfaces. */\n @Prop() background: ButtonUnfilledBackground | undefined;\n\n /** Accessible name override. Required for icon-only buttons. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n @Prop() controls: string | undefined;\n /**\n * Controlled disclosure or popup state forwarded to `aria-expanded`.\n * Popup triggers hold only the pressed wash while open; their resting\n * foreground is unchanged. Ordinary disclosures remain visually neutral.\n */\n @Prop() expanded: boolean | undefined;\n @Prop() haspopup: ButtonUnfilledPopup | undefined;\n /**\n * Controlled state for a genuine toggle button. Adds aria-pressed, promotes\n * active styling, and makes activation emit dsChange with the requested state.\n */\n @Prop() pressed: boolean | undefined;\n\n /**\n * Collapse the visible label and chevron to an icon-only control when the\n * owning `ds-table` caption is narrower than 900px. The trigger omits those\n * parts rather than clipping them.\n */\n @Prop({ reflect: true }) collapseLabel: boolean = false;\n\n /**\n * Mark the button as a Menu trigger. Implies `aria-haspopup=\"menu\"` and covers\n * both menu-button shapes:\n *\n * - `label` / `icon-label` — the action *has* a menu; a trailing chevron carries\n * the affordance.\n * - `icon` — the button *is* a menu. No chevron is added, so the glyph must\n * convey the menu on its own. Use `Ellipses` for generic more-options;\n * use a specific icon when the menu has a named purpose, such as\n * `Table` for Customize table.\n *\n * Use `haspopup` directly for non-menu popups.\n */\n @Prop() hasMenu: boolean = false;\n\n /**\n * Native `tabindex` for roving keyboard groups in shell chrome.\n * Omit for the default button tab stop (`0`).\n */\n @Prop({ attribute: 'tab-index' }) focusTabIndex?: number;\n\n @Event() dsClick!: EventEmitter<MouseEvent>;\n @Event() dsChange!: EventEmitter<boolean>;\n\n @State() private captionCompact = false;\n\n private buttonEl: HTMLButtonElement | null = null;\n private captionCompactDisconnect: (() => void) | undefined;\n private hasLoaded = false;\n\n componentDidLoad(): void {\n this.hasLoaded = true;\n this.syncCaptionCompactObserver();\n }\n\n connectedCallback(): void {\n if (this.hasLoaded) this.syncCaptionCompactObserver();\n }\n\n disconnectedCallback(): void {\n this.disconnectCaptionCompactObserver();\n }\n\n @Watch('collapseLabel')\n onCollapseLabelChange() {\n this.syncCaptionCompactObserver();\n }\n\n @Method()\n async setFocus() {\n this.buttonEl?.focus();\n }\n\n private handleClick = (event: MouseEvent) => {\n if (this.isInactive || this.isLoading) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n this.dsClick.emit(event);\n if (this.pressed !== undefined) this.dsChange.emit(!this.pressed);\n };\n\n private get captionIconOnly(): boolean {\n return (\n this.collapseLabel &&\n this.captionCompact &&\n this.variant === 'icon-label' &&\n Boolean(this.icon)\n );\n }\n\n private get visualVariant(): ButtonUnfilledVariant {\n return this.captionIconOnly ? 'icon' : this.variant;\n }\n\n private get showDot(): boolean {\n return this.variant === 'icon' && this.dot && !this.isLoading;\n }\n\n private syncCaptionCompactObserver(): void {\n this.disconnectCaptionCompactObserver();\n if (!this.collapseLabel) {\n if (this.captionCompact) this.captionCompact = false;\n return;\n }\n this.captionCompactDisconnect = observeTableCaptionCompact(this.el, compact => {\n if (this.captionCompact !== compact) this.captionCompact = compact;\n });\n }\n\n private disconnectCaptionCompactObserver(): void {\n this.captionCompactDisconnect?.();\n this.captionCompactDisconnect = undefined;\n }\n\n private get resolvedHaspopup(): ButtonUnfilledPopup | undefined {\n return this.haspopup ?? (this.hasMenu ? 'menu' : undefined);\n }\n\n private get doubleInset(): boolean {\n return this.isInset && this.insetDepth === 'double' && this.size !== 'xs';\n }\n\n /** Only popup triggers hold a pressed visual while expanded. */\n private get expandedPopup(): boolean {\n return this.expanded === true && this.resolvedHaspopup !== undefined && !this.isInactive;\n }\n\n private get visuallyActive(): boolean {\n return this.isActive || this.pressed === true;\n }\n\n /** Knock-out ring: selected fill → active wash; otherwise surface token. */\n private get dotRing(): string {\n if ((this.isActive || this.pressed === true) && this.activeFill) {\n return 'var(--ds-interaction-active)';\n }\n return 'var(--ds-button-unfilled-dot-ring)';\n }\n\n private get accessibleName(): string | undefined {\n if (this.ariaLabel) return this.ariaLabel;\n if (this.isLoading && this.variant === 'label' && this.label) return this.label;\n return undefined;\n }\n\n render() {\n const bg = this.background;\n const cls: Record<string, boolean> = {\n 'button-unfilled': true,\n 'ds-button': true,\n 'ds-focus-ring-inset': true,\n 'ds-control-press-scale': this.pressScale,\n 'ds-interaction-fill': true,\n 'ds-interaction-fill--selected':\n (this.isActive || this.pressed === true) && this.activeFill && !this.isInactive,\n 'ds-interaction-fill--on-faint': bg === 'faint',\n 'ds-interaction-fill--on-medium': bg === 'medium',\n 'ds-interaction-fill--on-bold': bg === 'bold',\n 'ds-interaction-fill--on-strong': bg === 'strong',\n 'ds-interaction-fill--on-translucent': bg === 'translucent',\n 'ds-interaction-fill--on-inverted': bg === 'inverted',\n 'ds-interaction-fill--on-media': bg === 'media',\n 'ds-interaction-fill--on-always-dark': bg === 'always-dark',\n 'button-unfilled--active': this.visuallyActive,\n 'button-unfilled--expanded': this.expandedPopup,\n 'ds-button--expanded': this.expandedPopup,\n 'button-unfilled--bordered': this.hasBorder,\n 'ds-button--bordered': this.hasBorder,\n 'button-unfilled--rounded': this.rounded,\n 'ds-button--rounded': this.rounded,\n 'ds-control-inactive': this.isInactive,\n 'ds-control--lg': this.size === 'lg',\n 'ds-control--md': this.size === 'md',\n 'ds-control--sm': this.size === 'sm',\n 'ds-control--xs': this.size === 'xs',\n 'ds-control--inset': this.isInset && !this.doubleInset,\n 'ds-control--inset-double': this.doubleInset,\n 'ds-control-frame': true,\n 'button-unfilled--icon': this.visualVariant === 'icon',\n 'ds-button--icon': this.visualVariant === 'icon',\n 'button-unfilled--label': this.visualVariant === 'label',\n 'button-unfilled--icon-label': this.visualVariant === 'icon-label',\n 'button-unfilled--background-faint': bg === 'faint',\n 'button-unfilled--background-medium': bg === 'medium',\n 'button-unfilled--background-bold': bg === 'bold',\n 'button-unfilled--background-strong': bg === 'strong',\n 'button-unfilled--background-translucent': bg === 'translucent',\n 'button-unfilled--background-inverted': bg === 'inverted',\n 'button-unfilled--background-media': bg === 'media',\n 'button-unfilled--on-always-dark': bg === 'always-dark',\n };\n\n const button = (\n <button\n ref={el => {\n this.buttonEl = el ?? null;\n }}\n type={this.type}\n class={cls}\n disabled={this.isInactive}\n tabIndex={this.focusTabIndex ?? 0}\n aria-label={this.accessibleName}\n aria-busy={this.isLoading ? 'true' : undefined}\n aria-disabled={this.isLoading ? 'true' : undefined}\n aria-controls={this.controls}\n aria-expanded={this.expanded === undefined ? undefined : String(this.expanded)}\n aria-haspopup={this.resolvedHaspopup}\n aria-pressed={this.pressed === undefined ? undefined : String(this.pressed)}\n onPointerDown={event =>\n beginElevatedControlPress(event, this.pressScale && !this.isInactive && !this.isLoading)\n }\n onClick={this.handleClick}\n >\n {renderButtonContent({\n namespace: 'button-unfilled',\n variant: this.visualVariant,\n size: this.size,\n label: this.label,\n labelEmphasis: this.labelEmphasis,\n icon: this.icon,\n hasMenu: this.hasMenu,\n isLoading: this.isLoading,\n dot: {\n visible: this.showDot,\n background: this.dotRing,\n },\n })}\n </button>\n );\n\n return (\n <Host\n class={{\n 'button-unfilled-host': true,\n 'button-unfilled-host--icon': this.visualVariant === 'icon',\n 'ds-button-host--icon': this.visualVariant === 'icon',\n 'ds-control--lg': this.size === 'lg',\n 'ds-control--md': this.size === 'md',\n 'ds-control--sm': this.size === 'sm',\n 'ds-control--xs': this.size === 'xs',\n 'ds-control--inset': this.isInset && !this.doubleInset,\n 'ds-control--inset-double': this.doubleInset,\n 'ds-table-caption-control': this.collapseLabel,\n 'ds-table-caption-control--compact': this.captionIconOnly,\n ...controlWidthClass(this.width),\n }}\n tabIndex={-1}\n >\n {this.collapseLabel ? (\n <ds-tooltip\n label={this.captionIconOnly ? this.label || this.accessibleName || '' : ''}\n side=\"top\"\n size=\"sm\"\n >\n {button}\n </ds-tooltip>\n ) : (\n button\n )}\n </Host>\n );\n }\n}\n"],"mappings":"qUACO,MAAMA,EAA+B,IAEtC,SAAUC,EAAsBC,GACpC,OAAOA,EAAQ,GAAKA,GAASF,CAC/B,CAEM,SAAUG,EAAuBC,GACrC,OAAOA,EAAMC,eAAe,IAAIC,YAAcF,EAAMG,YAAYL,KAClE,CAEM,SAAUM,EACdC,EACAC,GAEA,UAAWC,iBAAmB,YAAa,CACzCD,EAAS,OACT,MAAO,IAAME,S,CAGf,MAAMC,EAAQJ,EAAKK,QAAQ,YAC3B,IAAKD,EAAO,CACVH,EAAS,OACT,MAAO,IAAME,S,CAGf,MAAMG,EAAQb,IACZ,GAAIA,GAAS,EAAG,OAChBQ,EAAST,EAAsBC,GAAO,EAGxC,MAAMc,EAAW,IAAIL,gBAAeM,IAClCF,EAAKE,EAAQ,GAAKd,EAAuBc,EAAQ,IAAM,EAAE,IAE3DD,EAASE,QAAQL,GACjBE,EAAKF,EAAMM,aACX,MAAO,IAAMH,EAASI,YACxB,CCrCA,MAAMC,EAAoB,IAAM,mrxB,MCuCnBC,EAAcC,EAAA,MAAAD,UAAAE,EAL3B,WAAAC,CAAAC,G,gHAYUC,KAAAC,QAAiC,QAGjCD,KAAAE,KAA2B,KAG3BF,KAAAG,QAAmB,MAGnBH,KAAAI,WAAgC,SAGhCJ,KAAAzB,MAA6B,MAG7ByB,KAAAK,MAAgB,GAGhBL,KAAAM,cAAyB,KAGzBN,KAAAO,KAAe,GAMfP,KAAAQ,SAAoB,MAOpBR,KAAAS,WAAsB,KAGtBT,KAAAU,UAAqB,KAGrBV,KAAAW,QAAmB,MAMnBX,KAAAY,WAAsB,KAGtBZ,KAAAa,IAAe,MAGfb,KAAAc,WAAsB,MAGtBd,KAAAe,UAAqB,MAGrBf,KAAAgB,KAAsC,SAMXhB,KAAAiB,UAA2B,KAoBrCjB,KAAAkB,cAAyB,MAe1ClB,KAAAmB,QAAmB,MAWVnB,KAAAoB,eAAiB,MAE1BpB,KAAAqB,SAAqC,KAErCrB,KAAAsB,UAAY,MAyBZtB,KAAAuB,YAAeC,IACrB,GAAIxB,KAAKc,YAAcd,KAAKe,UAAW,CACrCS,EAAMC,iBACND,EAAME,kBACN,M,CAEF1B,KAAK2B,QAAQC,KAAKJ,GAClB,GAAIxB,KAAK6B,UAAY5C,UAAWe,KAAK8B,SAASF,MAAM5B,KAAK6B,QAAQ,CAwLpE,CAtNC,gBAAAE,GACE/B,KAAKsB,UAAY,KACjBtB,KAAKgC,4B,CAGP,iBAAAC,GACE,GAAIjC,KAAKsB,UAAWtB,KAAKgC,4B,CAG3B,oBAAAE,GACElC,KAAKmC,kC,CAIP,qBAAAC,GACEpC,KAAKgC,4B,CAIP,cAAMK,GACJrC,KAAKqB,UAAUiB,O,CAajB,mBAAYC,GACV,OACEvC,KAAKkB,eACLlB,KAAKoB,gBACLpB,KAAKC,UAAY,cACjBuC,QAAQxC,KAAKO,K,CAIjB,iBAAYkC,GACV,OAAOzC,KAAKuC,gBAAkB,OAASvC,KAAKC,O,CAG9C,WAAYyC,GACV,OAAO1C,KAAKC,UAAY,QAAUD,KAAKa,MAAQb,KAAKe,S,CAG9C,0BAAAiB,GACNhC,KAAKmC,mCACL,IAAKnC,KAAKkB,cAAe,CACvB,GAAIlB,KAAKoB,eAAgBpB,KAAKoB,eAAiB,MAC/C,M,CAEFpB,KAAK2C,yBAA2B9D,EAA2BmB,KAAK4C,IAAIC,IAClE,GAAI7C,KAAKoB,iBAAmByB,EAAS7C,KAAKoB,eAAiByB,CAAO,G,CAI9D,gCAAAV,GACNnC,KAAK2C,6BACL3C,KAAK2C,yBAA2B1D,S,CAGlC,oBAAY6D,GACV,OAAO9C,KAAK+C,WAAa/C,KAAKmB,QAAU,OAASlC,U,CAGnD,eAAY+D,GACV,OAAOhD,KAAKG,SAAWH,KAAKI,aAAe,UAAYJ,KAAKE,OAAS,I,CAIvE,iBAAY+C,GACV,OAAOjD,KAAKkD,WAAa,MAAQlD,KAAK8C,mBAAqB7D,YAAce,KAAKc,U,CAGhF,kBAAYqC,GACV,OAAOnD,KAAKQ,UAAYR,KAAK6B,UAAY,I,CAI3C,WAAYuB,GACV,IAAKpD,KAAKQ,UAAYR,KAAK6B,UAAY,OAAS7B,KAAKS,WAAY,CAC/D,MAAO,8B,CAET,MAAO,oC,CAGT,kBAAY4C,GACV,GAAIrD,KAAKiB,UAAW,OAAOjB,KAAKiB,UAChC,GAAIjB,KAAKe,WAAaf,KAAKC,UAAY,SAAWD,KAAKK,MAAO,OAAOL,KAAKK,MAC1E,OAAOpB,S,CAGT,MAAAqE,GACE,MAAMC,EAAKvD,KAAKwD,WAChB,MAAMC,EAA+B,CACnC,kBAAmB,KACnB,YAAa,KACb,sBAAuB,KACvB,yBAA0BzD,KAAKY,WAC/B,sBAAuB,KACvB,iCACGZ,KAAKQ,UAAYR,KAAK6B,UAAY,OAAS7B,KAAKS,aAAeT,KAAKc,WACvE,gCAAiCyC,IAAO,QACxC,iCAAkCA,IAAO,SACzC,+BAAgCA,IAAO,OACvC,iCAAkCA,IAAO,SACzC,sCAAuCA,IAAO,cAC9C,mCAAoCA,IAAO,WAC3C,gCAAiCA,IAAO,QACxC,sCAAuCA,IAAO,cAC9C,0BAA2BvD,KAAKmD,eAChC,4BAA6BnD,KAAKiD,cAClC,sBAAuBjD,KAAKiD,cAC5B,4BAA6BjD,KAAKU,UAClC,sBAAuBV,KAAKU,UAC5B,2BAA4BV,KAAKW,QACjC,qBAAsBX,KAAKW,QAC3B,sBAAuBX,KAAKc,WAC5B,iBAAkBd,KAAKE,OAAS,KAChC,iBAAkBF,KAAKE,OAAS,KAChC,iBAAkBF,KAAKE,OAAS,KAChC,iBAAkBF,KAAKE,OAAS,KAChC,oBAAqBF,KAAKG,UAAYH,KAAKgD,YAC3C,2BAA4BhD,KAAKgD,YACjC,mBAAoB,KACpB,wBAAyBhD,KAAKyC,gBAAkB,OAChD,kBAAmBzC,KAAKyC,gBAAkB,OAC1C,yBAA0BzC,KAAKyC,gBAAkB,QACjD,8BAA+BzC,KAAKyC,gBAAkB,aACtD,oCAAqCc,IAAO,QAC5C,qCAAsCA,IAAO,SAC7C,mCAAoCA,IAAO,OAC3C,qCAAsCA,IAAO,SAC7C,0CAA2CA,IAAO,cAClD,uCAAwCA,IAAO,WAC/C,oCAAqCA,IAAO,QAC5C,kCAAmCA,IAAO,eAG5C,MAAMG,EACJC,EAAA,UAAAC,IAAA,2CACEC,IAAKjB,IACH5C,KAAKqB,SAAWuB,GAAM,IAAI,EAE5B5B,KAAMhB,KAAKgB,KACX8C,MAAOL,EACPM,SAAU/D,KAAKc,WACfkD,SAAUhE,KAAKiE,eAAiB,EAAC,aACrBjE,KAAKqD,eAAc,YACpBrD,KAAKe,UAAY,OAAS9B,UAAS,gBAC/Be,KAAKe,UAAY,OAAS9B,UAAS,gBACnCe,KAAKkE,SAAQ,gBACblE,KAAKkD,WAAajE,UAAYA,UAAYkF,OAAOnE,KAAKkD,UAAS,gBAC/DlD,KAAK8C,iBAAgB,eACtB9C,KAAK6B,UAAY5C,UAAYA,UAAYkF,OAAOnE,KAAK6B,SACnEuC,cAAe5C,GACb6C,EAA0B7C,EAAOxB,KAAKY,aAAeZ,KAAKc,aAAed,KAAKe,WAEhFuD,QAAStE,KAAKuB,aAEbgD,EAAoB,CACnBC,UAAW,kBACXvE,QAASD,KAAKyC,cACdvC,KAAMF,KAAKE,KACXG,MAAOL,KAAKK,MACZC,cAAeN,KAAKM,cACpBC,KAAMP,KAAKO,KACXY,QAASnB,KAAKmB,QACdJ,UAAWf,KAAKe,UAChBF,IAAK,CACH4D,QAASzE,KAAK0C,QACdc,WAAYxD,KAAKoD,YAMzB,OACEO,EAACe,EAAI,CAAAd,IAAA,2CACHE,MAAO,CACL,uBAAwB,KACxB,6BAA8B9D,KAAKyC,gBAAkB,OACrD,uBAAwBzC,KAAKyC,gBAAkB,OAC/C,iBAAkBzC,KAAKE,OAAS,KAChC,iBAAkBF,KAAKE,OAAS,KAChC,iBAAkBF,KAAKE,OAAS,KAChC,iBAAkBF,KAAKE,OAAS,KAChC,oBAAqBF,KAAKG,UAAYH,KAAKgD,YAC3C,2BAA4BhD,KAAKgD,YACjC,2BAA4BhD,KAAKkB,cACjC,oCAAqClB,KAAKuC,mBACvCoC,EAAkB3E,KAAKzB,QAE5ByF,UAAU,GAEThE,KAAKkB,cACJyC,EAAA,cACEtD,MAAOL,KAAKuC,gBAAkBvC,KAAKK,OAASL,KAAKqD,gBAAkB,GAAK,GACxEuB,KAAK,MACL1E,KAAK,MAEJwD,GACU,E","ignoreList":[]}