@ds-mo/ui 2.11.1 → 2.12.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.
- package/README.md +13 -13
- package/dist/.build-stamp +1 -1
- package/dist/components/ds-app-shell.js +1 -1
- package/dist/components/ds-banner.js +1 -1
- package/dist/components/ds-banner.js.map +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-nav.js.map +1 -1
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/{ds-accordion.d.ts → ds-button-unfilled.d.ts} +4 -4
- package/dist/components/ds-button-unfilled.js +2 -0
- package/dist/components/ds-card-data-viz.js +1 -1
- package/dist/components/ds-card-data-viz.js.map +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-card-setting.js.map +1 -1
- package/dist/components/ds-chart-bar.js +1 -1
- package/dist/components/ds-chart-bar.js.map +1 -1
- package/dist/components/ds-chart-donut.js +1 -1
- package/dist/components/ds-chart-donut.js.map +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart-legend.js.map +1 -1
- package/dist/components/ds-chart-line.js +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-checkbox.js.map +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-chip.js.map +1 -1
- package/dist/components/ds-divider.js +1 -1
- package/dist/components/ds-empty-state.js +1 -1
- package/dist/components/ds-empty-state.js.map +1 -1
- package/dist/components/ds-field.js +1 -1
- package/dist/components/ds-field.js.map +1 -1
- package/dist/components/ds-header.js +1 -1
- package/dist/components/ds-header.js.map +1 -1
- package/dist/components/ds-icon.js +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-input.js.map +1 -1
- package/dist/components/ds-loader.js +1 -1
- package/dist/components/ds-loader.js.map +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-pagination.js +1 -1
- package/dist/components/ds-pagination.js.map +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-nav.js.map +1 -1
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-panel-tools.js.map +1 -1
- package/dist/components/ds-radio-group.js +1 -1
- package/dist/components/ds-radio-group.js.map +1 -1
- package/dist/components/ds-scrollbar.js +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-select.js.map +1 -1
- package/dist/components/ds-shell-gradient-picker.js +1 -1
- package/dist/components/ds-shell-gradient-swatch.js +1 -1
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-skeleton.js.map +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-slider.js.map +1 -1
- package/dist/components/ds-tab-group-nav.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-tab-group.js.map +1 -1
- package/dist/components/ds-table.js +1 -1
- package/dist/components/ds-table.js.map +1 -1
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-tag.js.map +1 -1
- package/dist/components/ds-text.js +1 -1
- package/dist/components/ds-toggle.js +1 -1
- package/dist/components/ds-toggle.js.map +1 -1
- package/dist/components/ds-tooltip-data-viz.js +1 -1
- package/dist/components/ds-tooltip-data-viz.js.map +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/ds-tooltip.js.map +1 -1
- package/dist/components/p-B9dHCgY-.js +2 -0
- package/dist/components/p-B9dHCgY-.js.map +1 -0
- package/dist/components/p-BPK76IsW.js +2 -0
- package/dist/components/p-BPK76IsW.js.map +1 -0
- package/dist/components/p-BQq26pt9.js.map +1 -1
- package/dist/components/p-BTC9Njj6.js +2 -0
- package/dist/components/p-BTC9Njj6.js.map +1 -0
- package/dist/components/p-BZIOTcnM.js +2 -0
- package/dist/components/p-BZIOTcnM.js.map +1 -0
- package/dist/components/{p-DdFUTZ3y.js → p-C3ORQUOp.js} +2 -2
- package/dist/components/{p-8Nt92j1-.js → p-CyFVn2Sc.js} +2 -2
- package/dist/components/p-DKdI8T8v.js +2 -0
- package/dist/components/p-DKdI8T8v.js.map +1 -0
- package/dist/components/{p-DOU4cbpc.js → p-DRqxVEye.js} +2 -2
- package/dist/components/p-DkcH8mRl.js +2 -0
- package/dist/components/p-DkcH8mRl.js.map +1 -0
- package/dist/components/p-DusYu-if.js +2 -0
- package/dist/components/p-DusYu-if.js.map +1 -0
- package/dist/components/p-EK1hOP19.js.map +1 -1
- package/dist/components/p-UbKTMQjv.js +2 -0
- package/dist/components/p-UbKTMQjv.js.map +1 -0
- package/dist/lib/nav/index.js +3 -0
- package/dist/lib/nav/index.js.map +2 -2
- package/dist/lib/utils/index.js +6 -0
- package/dist/lib/utils/index.js.map +2 -2
- package/dist/lib/utils/token-defaults.d.ts +3 -0
- package/dist/types/components/ButtonFilled/ButtonFilled.d.ts +17 -3
- package/dist/types/components/ButtonFilled/index.d.ts +1 -1
- package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +66 -0
- package/dist/types/components/ButtonUnfilled/index.d.ts +2 -0
- package/dist/types/components/CardDataViz/CardDataViz.d.ts +5 -1
- package/dist/types/components/CardSetting/CardSetting.d.ts +1 -1
- package/dist/types/components/ChartDonut/ChartDonut.d.ts +7 -0
- package/dist/types/components/Checkbox/Checkbox.d.ts +1 -1
- package/dist/types/components/Chip/Chip.d.ts +18 -14
- package/dist/types/components/Chip/index.d.ts +1 -1
- package/dist/types/components/Input/Input.d.ts +1 -1
- package/dist/types/components/Pagination/Pagination.d.ts +1 -1
- package/dist/types/components/PanelNav/PanelNav.d.ts +2 -0
- package/dist/types/components/PanelTools/panel-tools-types.d.ts +1 -1
- package/dist/types/components/RadioGroup/RadioGroup.d.ts +2 -2
- package/dist/types/components/Select/Select.d.ts +2 -2
- package/dist/types/components/ShellGradientSwatch/ShellGradientSwatch.d.ts +1 -1
- package/dist/types/components/Slider/Slider.d.ts +1 -1
- package/dist/types/components/TabGroup/TabGroup.d.ts +1 -1
- package/dist/types/components/TabGroup/tab-item-utils.d.ts +2 -1
- package/dist/types/components/TabGroupNav/TabGroupNav.d.ts +1 -1
- package/dist/types/components/Tag/Tag.d.ts +0 -2
- package/dist/types/components/Tag/index.d.ts +1 -1
- package/dist/types/components/Toggle/Toggle.d.ts +1 -1
- package/dist/types/components/Tooltip/Tooltip.d.ts +25 -6
- package/dist/types/components/TooltipDataViz/TooltipDataViz.d.ts +18 -0
- package/dist/types/components.d.ts +277 -476
- package/dist/types/utils/token-defaults.d.ts +3 -0
- package/package.json +6 -3
- package/src/angular/index.ts +1 -6
- package/src/angular/proxies.ts +33 -170
- package/src/react/components.ts +1 -6
- package/src/react/ds-button-unfilled.ts +33 -0
- package/src/react/ds-chip.ts +2 -10
- package/src/wc/components/BarNav/BarNav.tsx +3 -2
- package/src/wc/components/BarNav/bar-nav-tabs-menu-utils.ts +1 -1
- package/src/wc/components/ButtonFilled/ButtonFilled.tsx +90 -11
- package/src/wc/components/ButtonFilled/index.ts +6 -1
- package/src/wc/components/ButtonUnfilled/ButtonUnfilled.tsx +223 -0
- package/src/wc/components/ButtonUnfilled/index.ts +6 -0
- package/src/wc/components/CardDataViz/CardDataViz.tsx +36 -2
- package/src/wc/components/CardSetting/CardSetting.tsx +4 -6
- package/src/wc/components/ChartDonut/ChartDonut.tsx +50 -3
- package/src/wc/components/ChartLegend/ChartLegend.tsx +3 -0
- package/src/wc/components/Checkbox/Checkbox.tsx +5 -5
- package/src/wc/components/Chip/Chip.tsx +50 -67
- package/src/wc/components/Chip/index.ts +1 -1
- package/src/wc/components/Input/Input.tsx +4 -4
- package/src/wc/components/Menu/Menu.tsx +7 -4
- package/src/wc/components/Pagination/Pagination.tsx +6 -6
- package/src/wc/components/PanelNav/PanelNav.tsx +77 -48
- package/src/wc/components/PanelTools/PanelTools.tsx +19 -16
- package/src/wc/components/PanelTools/panel-tools-types.ts +1 -1
- package/src/wc/components/PanelTools/panel-tools-utils.ts +1 -1
- package/src/wc/components/RadioGroup/RadioGroup.tsx +7 -7
- package/src/wc/components/Select/Select.tsx +5 -5
- package/src/wc/components/ShellGradientSwatch/ShellGradientSwatch.tsx +4 -3
- package/src/wc/components/Slider/Slider.tsx +7 -3
- package/src/wc/components/TabGroup/TabGroup.tsx +13 -7
- package/src/wc/components/TabGroup/tab-item-utils.ts +2 -1
- package/src/wc/components/TabGroupNav/TabGroupNav.tsx +14 -13
- package/src/wc/components/Tag/Tag.tsx +25 -24
- package/src/wc/components/Tag/index.ts +1 -1
- package/src/wc/components/Toggle/Toggle.tsx +6 -6
- package/src/wc/components/Tooltip/Tooltip.tsx +166 -64
- package/src/wc/components/TooltipDataViz/TooltipDataViz.tsx +57 -2
- package/src/wc/components.d.ts +277 -476
- package/src/wc/utils/control-density.css +42 -0
- package/src/wc/utils/control-inactive.css +20 -0
- package/src/wc/utils/interaction-fill.css +162 -0
- package/src/wc/utils/scroll-edge-fade.css +5 -0
- package/src/wc/utils/token-defaults.ts +6 -0
- package/dist/components/ds-accordion.js +0 -2
- package/dist/components/ds-accordion.js.map +0 -1
- package/dist/components/ds-breadcrumb.d.ts +0 -11
- package/dist/components/ds-breadcrumb.js +0 -2
- package/dist/components/ds-breadcrumb.js.map +0 -1
- package/dist/components/ds-button-unfilled-icon.d.ts +0 -11
- package/dist/components/ds-button-unfilled-icon.js +0 -2
- package/dist/components/ds-fade.d.ts +0 -11
- package/dist/components/ds-fade.js +0 -2
- package/dist/components/ds-fade.js.map +0 -1
- package/dist/components/ds-surface.d.ts +0 -11
- package/dist/components/ds-surface.js +0 -2
- package/dist/components/ds-surface.js.map +0 -1
- package/dist/components/ds-toast-provider.d.ts +0 -11
- package/dist/components/ds-toast-provider.js +0 -2
- package/dist/components/ds-toast-provider.js.map +0 -1
- package/dist/components/p-BMQbEIrQ.js +0 -2
- package/dist/components/p-BMQbEIrQ.js.map +0 -1
- package/dist/components/p-BSFgy5r6.js +0 -2
- package/dist/components/p-BSFgy5r6.js.map +0 -1
- package/dist/components/p-CBUIn8dk.js +0 -2
- package/dist/components/p-CBUIn8dk.js.map +0 -1
- package/dist/components/p-ChVwCVHy.js +0 -2
- package/dist/components/p-ChVwCVHy.js.map +0 -1
- package/dist/components/p-CpNIQXz6.js +0 -2
- package/dist/components/p-CpNIQXz6.js.map +0 -1
- package/dist/components/p-CvgHQfvT.js +0 -2
- package/dist/components/p-CvgHQfvT.js.map +0 -1
- package/dist/components/p-bDf6yBQd.js +0 -2
- package/dist/components/p-bDf6yBQd.js.map +0 -1
- package/dist/types/components/Accordion/Accordion.d.ts +0 -28
- package/dist/types/components/Breadcrumb/Breadcrumb.d.ts +0 -16
- package/dist/types/components/ButtonUnfilledIcon/ButtonUnfilledIcon.d.ts +0 -45
- package/dist/types/components/ButtonUnfilledIcon/index.d.ts +0 -2
- package/dist/types/components/Fade/Fade.d.ts +0 -22
- package/dist/types/components/Fade/index.d.ts +0 -2
- package/dist/types/components/Surface/Surface.d.ts +0 -22
- package/dist/types/components/Toast/Toast.d.ts +0 -16
- package/dist/types/components/Toast/toast-service.d.ts +0 -24
- package/src/react/ds-accordion.ts +0 -27
- package/src/react/ds-breadcrumb.ts +0 -27
- package/src/react/ds-button-unfilled-icon.ts +0 -33
- package/src/react/ds-fade.ts +0 -26
- package/src/react/ds-surface.ts +0 -26
- package/src/react/ds-toast-provider.ts +0 -26
- package/src/wc/components/Accordion/Accordion.tsx +0 -144
- package/src/wc/components/Breadcrumb/Breadcrumb.tsx +0 -61
- package/src/wc/components/ButtonUnfilledIcon/ButtonUnfilledIcon.tsx +0 -129
- package/src/wc/components/ButtonUnfilledIcon/index.ts +0 -1
- package/src/wc/components/Fade/Fade.tsx +0 -58
- package/src/wc/components/Fade/index.ts +0 -1
- package/src/wc/components/Surface/Surface.tsx +0 -81
- package/src/wc/components/Toast/Toast.tsx +0 -179
- package/src/wc/components/Toast/toast-service.ts +0 -67
- /package/dist/components/{ds-button-unfilled-icon.js.map → ds-button-unfilled.js.map} +0 -0
- /package/dist/components/{p-DdFUTZ3y.js.map → p-C3ORQUOp.js.map} +0 -0
- /package/dist/components/{p-8Nt92j1-.js.map → p-CyFVn2Sc.js.map} +0 -0
- /package/dist/components/{p-DOU4cbpc.js.map → p-DRqxVEye.js.map} +0 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Control density recipes — shared metrics for md / sm / xs interactive controls
|
|
3
|
+
* (Tag, PanelNav items, BarNav tabs, Menu items, Chip, etc.).
|
|
4
|
+
*
|
|
5
|
+
* Apply `.ds-control--md|sm|xs` on the control (host or inner row). Then use the
|
|
6
|
+
* `--ds-control-*` vars for height, padding, icon box, label inset, gap, and radius.
|
|
7
|
+
*
|
|
8
|
+
* Both `:host(.ds-control--*)` and `.ds-control--*` are listed so Stencil scoped
|
|
9
|
+
* components work whether the class is on the host (Tag) or an inner item (PanelNav).
|
|
10
|
+
*
|
|
11
|
+
* @see AGENTS.md — "Control density recipes"
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
:host(.ds-control--md),
|
|
15
|
+
.ds-control--md {
|
|
16
|
+
--ds-control-height: var(--dimension-size-400);
|
|
17
|
+
--ds-control-icon: var(--dimension-iconography-md);
|
|
18
|
+
--ds-control-padding-inline: var(--dimension-space-075);
|
|
19
|
+
--ds-control-label-inset: var(--dimension-space-025);
|
|
20
|
+
--ds-control-gap: var(--dimension-space-050);
|
|
21
|
+
--ds-control-radius: var(--dimension-radius-025);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
:host(.ds-control--sm),
|
|
25
|
+
.ds-control--sm {
|
|
26
|
+
--ds-control-height: var(--dimension-size-300);
|
|
27
|
+
--ds-control-icon: var(--dimension-iconography-sm);
|
|
28
|
+
--ds-control-padding-inline: var(--dimension-space-050);
|
|
29
|
+
--ds-control-label-inset: var(--dimension-space-025);
|
|
30
|
+
--ds-control-gap: var(--dimension-space-025);
|
|
31
|
+
--ds-control-radius: var(--dimension-radius-025);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
:host(.ds-control--xs),
|
|
35
|
+
.ds-control--xs {
|
|
36
|
+
--ds-control-height: var(--dimension-size-200);
|
|
37
|
+
--ds-control-icon: var(--dimension-iconography-xs);
|
|
38
|
+
--ds-control-padding-inline: var(--dimension-space-025);
|
|
39
|
+
--ds-control-label-inset: var(--dimension-space-025);
|
|
40
|
+
--ds-control-gap: var(--dimension-space-025);
|
|
41
|
+
--ds-control-radius: var(--dimension-radius-025);
|
|
42
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Control inactive — shared disabled/inactive visual for interactive controls.
|
|
3
|
+
*
|
|
4
|
+
* Apply `.ds-control-inactive` when the control’s `isInactive` prop (or item
|
|
5
|
+
* `isInactive` field) is true. Opacity is 25% so inactive chrome stays
|
|
6
|
+
* recognizable but clearly non-interactive.
|
|
7
|
+
*
|
|
8
|
+
* Both `:host(.ds-control-inactive)` and `.ds-control-inactive` are listed so
|
|
9
|
+
* Stencil scoped components work whether the class is on the host (Chip) or an
|
|
10
|
+
* inner control (button, menu item, tab).
|
|
11
|
+
*
|
|
12
|
+
* @see AGENTS.md — "Control inactive"
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
:host(.ds-control-inactive),
|
|
16
|
+
.ds-control-inactive {
|
|
17
|
+
opacity: 0.25;
|
|
18
|
+
pointer-events: none;
|
|
19
|
+
cursor: not-allowed;
|
|
20
|
+
}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interaction fill — selected (`::before`) + hover/press (`::after`) overlays.
|
|
3
|
+
*
|
|
4
|
+
* Paint translucent interaction tokens *over* the control’s own background —
|
|
5
|
+
* never by swapping `background-color` on `:hover` / `:active`, and never via
|
|
6
|
+
* `color-mix(bg, fg)` for control chrome.
|
|
7
|
+
*
|
|
8
|
+
* Paint order (bottom → top):
|
|
9
|
+
* 1. Element background (intent / surface)
|
|
10
|
+
* 2. `::before` — selected / active (opt-in via `.ds-interaction-fill--selected`)
|
|
11
|
+
* 3. Label / icon / badge content (`.ds-interaction-fill__content` or z-index: 2)
|
|
12
|
+
* 4. `::after` — hover / press wash + optional inset border + inset focus ring
|
|
13
|
+
*
|
|
14
|
+
* Apply `.ds-interaction-fill` on the interactive element (host or inner row).
|
|
15
|
+
* Omit `.ds-interaction-fill--selected` when chrome wants icon-color-only
|
|
16
|
+
* selection (`activeFill={false}` on unfilled icon buttons).
|
|
17
|
+
*
|
|
18
|
+
* Fills use positive z-index so they paint *above* an opaque host background
|
|
19
|
+
* (Chip, ButtonFilled). Content sits under the hover wash so badge dots are
|
|
20
|
+
* covered; raise label/icon with `.ds-interaction-fill__content` (z-index: 2)
|
|
21
|
+
* — never above `::after` (z-index: 3).
|
|
22
|
+
*
|
|
23
|
+
* Inset borders must paint on `::after` (not the element’s own `box-shadow`)
|
|
24
|
+
* so the stroke stays visible above selected / hover washes. Set
|
|
25
|
+
* `--ds-interaction-border-*` or use `.ds-interaction-fill--bordered`.
|
|
26
|
+
* Do not use a layout `border` on interaction targets.
|
|
27
|
+
*
|
|
28
|
+
* If the control uses `all: unset`, re-assert `position: relative; z-index: 0`
|
|
29
|
+
* after the unset so this util’s stacking context still applies.
|
|
30
|
+
*
|
|
31
|
+
* Surface helpers remap tokens + `--ds-focus-ring-color`:
|
|
32
|
+
* `.ds-interaction-fill--on-medium|bold|strong|always-dark|navigation`
|
|
33
|
+
*
|
|
34
|
+
* Override hooks: `--ds-interaction-hover`, `--ds-interaction-pressed`,
|
|
35
|
+
* `--ds-interaction-active`, `--ds-interaction-border-color`,
|
|
36
|
+
* `--ds-interaction-border-width`.
|
|
37
|
+
*
|
|
38
|
+
* @see AGENTS.md — "Interaction fill"
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
:host(.ds-interaction-fill),
|
|
42
|
+
.ds-interaction-fill {
|
|
43
|
+
position: relative;
|
|
44
|
+
z-index: 0;
|
|
45
|
+
--ds-interaction-hover: var(--color-interaction-hover);
|
|
46
|
+
--ds-interaction-pressed: var(--color-interaction-pressed);
|
|
47
|
+
--ds-interaction-active: var(--color-interaction-active);
|
|
48
|
+
/* Inset stroke on ::after — default off (transparent / zero width). */
|
|
49
|
+
--ds-interaction-border-width: 0px;
|
|
50
|
+
--ds-interaction-border-color: transparent;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
:host(.ds-interaction-fill)::before,
|
|
54
|
+
.ds-interaction-fill::before,
|
|
55
|
+
:host(.ds-interaction-fill)::after,
|
|
56
|
+
.ds-interaction-fill::after {
|
|
57
|
+
content: '';
|
|
58
|
+
position: absolute;
|
|
59
|
+
inset: 0;
|
|
60
|
+
border-radius: inherit;
|
|
61
|
+
background: transparent;
|
|
62
|
+
pointer-events: none;
|
|
63
|
+
transition: none;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* Layer stack (bottom → top): selected → content → hover/press + border (topmost). */
|
|
67
|
+
:host(.ds-interaction-fill)::before,
|
|
68
|
+
.ds-interaction-fill::before {
|
|
69
|
+
z-index: 1;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
:host(.ds-interaction-fill)::after,
|
|
73
|
+
.ds-interaction-fill::after {
|
|
74
|
+
z-index: 3;
|
|
75
|
+
/* Border above selected (::before) and this pseudo’s own hover wash. */
|
|
76
|
+
box-shadow: inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/* Opt-in tertiary inset border (override color via `--ds-interaction-border-color`). */
|
|
80
|
+
:host(.ds-interaction-fill--bordered),
|
|
81
|
+
.ds-interaction-fill--bordered {
|
|
82
|
+
--ds-interaction-border-width: var(--dimension-stroke-width-012);
|
|
83
|
+
--ds-interaction-border-color: var(--color-border-tertiary);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
:host(.ds-interaction-fill--selected)::before,
|
|
87
|
+
.ds-interaction-fill--selected::before {
|
|
88
|
+
background: var(--ds-interaction-active);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/*
|
|
92
|
+
* Notification-dot halo: when selected fill is on, set `--ds-interaction-dot-ring`
|
|
93
|
+
* to the active wash so rings can match. Prefer also remapping the consumer’s
|
|
94
|
+
* surface ring token (e.g. `--ds-button-unfilled-dot-ring`) or passing
|
|
95
|
+
* `background="var(--ds-interaction-active)"` from the parent when selected —
|
|
96
|
+
* custom-property fallbacks through nested scoped hosts are easy to miss.
|
|
97
|
+
* Omit `--selected` (chrome `activeFill={false}`) to keep the surface ring.
|
|
98
|
+
*/
|
|
99
|
+
:host(.ds-interaction-fill--selected),
|
|
100
|
+
.ds-interaction-fill--selected {
|
|
101
|
+
--ds-interaction-dot-ring: var(--ds-interaction-active);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
:host(.ds-interaction-fill:hover:not(:disabled))::after,
|
|
105
|
+
.ds-interaction-fill:hover:not(:disabled)::after {
|
|
106
|
+
background: var(--ds-interaction-hover);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
:host(.ds-interaction-fill:active:not(:disabled))::after,
|
|
110
|
+
.ds-interaction-fill:active:not(:disabled)::after {
|
|
111
|
+
background: var(--ds-interaction-pressed);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* Content under the hover wash (so badge dots are covered by ::after). */
|
|
115
|
+
:host(.ds-interaction-fill) > .ds-interaction-fill__content,
|
|
116
|
+
.ds-interaction-fill > .ds-interaction-fill__content,
|
|
117
|
+
.ds-interaction-fill__content {
|
|
118
|
+
position: relative;
|
|
119
|
+
z-index: 2;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/* ── Surface context ─────────────────────────────────────────────────────── */
|
|
123
|
+
|
|
124
|
+
:host(.ds-interaction-fill--on-medium),
|
|
125
|
+
.ds-interaction-fill--on-medium {
|
|
126
|
+
--ds-interaction-hover: var(--color-interaction-on-medium-background-hover);
|
|
127
|
+
--ds-interaction-pressed: var(--color-interaction-on-medium-background-pressed);
|
|
128
|
+
--ds-interaction-active: var(--color-interaction-on-medium-background-active);
|
|
129
|
+
--ds-focus-ring-color: var(--color-interaction-on-medium-background-focus);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
:host(.ds-interaction-fill--on-bold),
|
|
133
|
+
.ds-interaction-fill--on-bold {
|
|
134
|
+
--ds-interaction-hover: var(--color-interaction-on-bold-background-hover);
|
|
135
|
+
--ds-interaction-pressed: var(--color-interaction-on-bold-background-pressed);
|
|
136
|
+
--ds-interaction-active: var(--color-interaction-on-bold-background-active);
|
|
137
|
+
--ds-focus-ring-color: var(--color-interaction-on-bold-background-focus);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
:host(.ds-interaction-fill--on-strong),
|
|
141
|
+
.ds-interaction-fill--on-strong {
|
|
142
|
+
--ds-interaction-hover: var(--color-interaction-on-strong-background-hover);
|
|
143
|
+
--ds-interaction-pressed: var(--color-interaction-on-strong-background-pressed);
|
|
144
|
+
--ds-interaction-active: var(--color-interaction-on-strong-background-active);
|
|
145
|
+
--ds-focus-ring-color: var(--color-interaction-on-strong-background-focus);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
:host(.ds-interaction-fill--on-always-dark),
|
|
149
|
+
.ds-interaction-fill--on-always-dark {
|
|
150
|
+
--ds-interaction-hover: var(--color-always-dark-interaction-hover);
|
|
151
|
+
--ds-interaction-pressed: var(--color-always-dark-interaction-pressed);
|
|
152
|
+
--ds-interaction-active: var(--color-always-dark-interaction-active);
|
|
153
|
+
--ds-focus-ring-color: var(--color-always-dark-interaction-focus);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
:host(.ds-interaction-fill--on-navigation),
|
|
157
|
+
.ds-interaction-fill--on-navigation {
|
|
158
|
+
--ds-interaction-hover: var(--color-navigation-interaction-hover);
|
|
159
|
+
--ds-interaction-pressed: var(--color-navigation-interaction-pressed);
|
|
160
|
+
--ds-interaction-active: var(--color-navigation-interaction-active);
|
|
161
|
+
--ds-focus-ring-color: var(--color-navigation-interaction-focus);
|
|
162
|
+
}
|
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
--ds-scroll-edge-fade-size: var(--dimension-size-600);
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
/* Mask gradients use #000 / transparent as luminance stops — not theme colors. */
|
|
14
|
+
/* stylelint-disable color-no-hex */
|
|
15
|
+
|
|
13
16
|
.scroll-edge-fade--top {
|
|
14
17
|
-webkit-mask-image: linear-gradient(to bottom, #000 0, #000 50%, transparent 100%);
|
|
15
18
|
mask-image: linear-gradient(to bottom, #000 0, #000 50%, transparent 100%);
|
|
@@ -73,3 +76,5 @@
|
|
|
73
76
|
-webkit-mask-image: none;
|
|
74
77
|
mask-image: none;
|
|
75
78
|
}
|
|
79
|
+
|
|
80
|
+
/* stylelint-enable color-no-hex */
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
dimensionRadius025,
|
|
10
10
|
dimensionSize200,
|
|
11
11
|
dimensionSize300,
|
|
12
|
+
dimensionSize400,
|
|
12
13
|
dimensionSize600,
|
|
13
14
|
dimensionSize800,
|
|
14
15
|
dimensionSpace050,
|
|
@@ -20,6 +21,8 @@ import {
|
|
|
20
21
|
typographyLineheightXs,
|
|
21
22
|
effectAnimationDelayLong2,
|
|
22
23
|
effectAnimationDelayMedium1,
|
|
24
|
+
effectAnimationDelayMedium3,
|
|
25
|
+
effectAnimationDelayInstant,
|
|
23
26
|
effectAnimationDelayShort2,
|
|
24
27
|
effectAnimationDurationMedium1,
|
|
25
28
|
effectAnimationDurationShort3,
|
|
@@ -34,6 +37,7 @@ export const TOKEN_DEFAULTS = {
|
|
|
34
37
|
radius025: dimensionRadius025,
|
|
35
38
|
size200: dimensionSize200,
|
|
36
39
|
size300: dimensionSize300,
|
|
40
|
+
size400: dimensionSize400,
|
|
37
41
|
size600: dimensionSize600,
|
|
38
42
|
size800: dimensionSize800,
|
|
39
43
|
iconographyMd: dimensionIconographyMd,
|
|
@@ -52,7 +56,9 @@ export const TOKEN_DEFAULTS = {
|
|
|
52
56
|
motionShort3: effectMotionShort3,
|
|
53
57
|
animationDurationShort3: effectAnimationDurationShort3,
|
|
54
58
|
animationDurationMedium1: effectAnimationDurationMedium1,
|
|
59
|
+
animationDelayInstant: effectAnimationDelayInstant,
|
|
55
60
|
animationDelayMedium1: effectAnimationDelayMedium1,
|
|
61
|
+
animationDelayMedium3: effectAnimationDelayMedium3,
|
|
56
62
|
animationDelayShort2: effectAnimationDelayShort2,
|
|
57
63
|
animationDelayLong2: effectAnimationDelayLong2,
|
|
58
64
|
/** Unmeasured menu height fallback: 20× base (160px at default scale). */
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{p as e,t as s,H as o,c as t,h as i,a as n}from"./index.js";const r=()=>`.sc-ds-accordion-h{display:flex;flex-direction:column}.item.sc-ds-accordion{border-bottom:1px solid var(--color-border-secondary)}.item.sc-ds-accordion:first-child{border-top:1px solid var(--color-border-secondary)}.item--inactive.sc-ds-accordion{opacity:0.5;pointer-events:none}.trigger.sc-ds-accordion{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--dimension-space-100) var(--dimension-space-050);background:none;border:none;cursor:pointer;color:var(--color-foreground-primary);border-radius:var(--dimension-radius-050);transition:background-color var(--effect-motion-short-2);-webkit-user-select:none;user-select:none;box-sizing:border-box;text-align:left}.trigger.sc-ds-accordion:hover{background-color:var(--color-interaction-hover)}.trigger.sc-ds-accordion:active{background-color:var(--color-interaction-pressed)}.trigger.sc-ds-accordion:focus-visible{outline:var(--dimension-stroke-width-025) solid var(--color-interaction-focus);outline-offset:var(--dimension-space-025)}.chevron.sc-ds-accordion{font-size:18px;line-height:1;transform:rotate(0deg);transition:transform var(--effect-motion-short-3);color:var(--color-foreground-secondary);flex-shrink:0}.chevron--open.sc-ds-accordion{transform:rotate(90deg)}.body.sc-ds-accordion{overflow:hidden;transition:height var(--effect-motion-short-3)}.body-inner.sc-ds-accordion{padding:var(--dimension-space-050) var(--dimension-space-050) var(--dimension-space-100);color:var(--color-foreground-secondary)}`;let c=0;const a=e(class e extends o{constructor(e){super();if(e!==false){this.__registerHost()}this.dsExpandedChange=t(this,"dsExpandedChange");this.items=[];this.multiple=false;this.expandedIds="";this.internalIds=[];this.heights={};this.instanceId=++c;this.resizeObservers=new Map}get activeIds(){if(this.expandedIds)return this.expandedIds.split(",").map((e=>e.trim())).filter(Boolean);return this.internalIds}componentDidLoad(){this.bindResizeObservers()}disconnectedCallback(){this.resizeObservers.forEach((e=>e.disconnect()));this.resizeObservers.clear()}onItemsChange(){requestAnimationFrame((()=>{this.bindResizeObservers();this.measureAll()}))}bindResizeObservers(){this.resizeObservers.forEach((e=>e.disconnect()));this.resizeObservers.clear();this.items.forEach((e=>{const s=this.el.querySelector(`[data-inner="${e.id}"]`);if(!s)return;const o=new ResizeObserver((()=>{this.heights={...this.heights,[e.id]:s.scrollHeight}}));o.observe(s);this.resizeObservers.set(e.id,o)}))}measureAll(){const e={...this.heights};this.items.forEach((s=>{const o=this.el.querySelector(`[data-inner="${s.id}"]`);if(o)e[s.id]=o.scrollHeight}));this.heights=e}toggle(e){const s=this.activeIds;let o;if(s.includes(e)){o=s.filter((s=>s!==e))}else{o=this.multiple?[...s,e]:[e]}this.internalIds=o;this.dsExpandedChange.emit(o)}render(){const e=this.activeIds;return i(n,{key:"e34b49b748fd0a561c616d4ef5b2069d2e809831",class:"accordion"},this.items.map((s=>{const o=e.includes(s.id);const t=`ds-accordion-${this.instanceId}-trigger-${s.id}`;const n=`ds-accordion-${this.instanceId}-panel-${s.id}`;const r=this.heights[s.id]??0;return i("div",{key:s.id,class:{item:true,"item--inactive":!!s.inactive}},i("button",{type:"button",id:t,class:"trigger",onClick:()=>!s.inactive&&this.toggle(s.id),"aria-expanded":o,"aria-controls":n,"aria-disabled":s.inactive||undefined,tabIndex:s.inactive?-1:0},i("span",{class:"text-body-medium-emphasis"},s.label),i("span",{class:{chevron:true,"chevron--open":o},"aria-hidden":"true"},"›")),i("div",{id:n,role:"region","aria-labelledby":t,class:"body",style:{height:o?`${r}px`:"0"},"aria-hidden":!o},i("div",{class:"body-inner","data-inner":s.id},s.content?i("span",{class:"text-body-medium"},s.content):i("slot",{name:s.id}))))})))}get el(){return this}static get watchers(){return{items:[{onItemsChange:0}]}}static get style(){return r()}},[262,"ds-accordion",{items:[16],multiple:[4],expandedIds:[1025,"expanded-ids"],internalIds:[32],heights:[32]},undefined,{items:[{onItemsChange:0}]}]);function d(){if(typeof customElements==="undefined"){return}const e=["ds-accordion"];e.forEach((e=>{switch(e){case"ds-accordion":if(!customElements.get(s(e))){customElements.define(s(e),a)}break}}))}d();const l=a;const h=d;export{l as DsAccordion,h as defineCustomElement};
|
|
2
|
-
//# sourceMappingURL=ds-accordion.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["accordionCss","idCounter","Accordion","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","items","multiple","expandedIds","internalIds","heights","instanceId","resizeObservers","Map","activeIds","split","map","s","trim","filter","Boolean","componentDidLoad","bindResizeObservers","disconnectedCallback","forEach","ro","disconnect","clear","onItemsChange","requestAnimationFrame","measureAll","item","inner","el","querySelector","id","ResizeObserver","scrollHeight","observe","set","next","toggle","current","includes","x","dsExpandedChange","emit","render","h","Host","key","class","isExpanded","triggerId","panelId","bodyHeight","inactive","type","onClick","undefined","tabIndex","label","chevron","role","style","height","content","name"],"sources":["src/wc/components/Accordion/Accordion.css?tag=ds-accordion&encapsulation=scoped","src/wc/components/Accordion/Accordion.tsx"],"sourcesContent":[":host {\n display: flex;\n flex-direction: column;\n}\n\n.item {\n border-bottom: 1px solid var(--color-border-secondary);\n}\n\n.item:first-child {\n border-top: 1px solid var(--color-border-secondary);\n}\n\n.item--inactive {\n opacity: 0.5;\n pointer-events: none;\n}\n\n.trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: var(--dimension-space-100) var(--dimension-space-050);\n background: none;\n border: none;\n cursor: pointer;\n color: var(--color-foreground-primary);\n border-radius: var(--dimension-radius-050);\n transition: background-color var(--effect-motion-short-2);\n -webkit-user-select: none;\n user-select: none;\n box-sizing: border-box;\n text-align: left;\n}\n\n.trigger:hover { background-color: var(--color-interaction-hover); }\n.trigger:active { background-color: var(--color-interaction-pressed); }\n\n.trigger:focus-visible {\n outline: var(--dimension-stroke-width-025) solid var(--color-interaction-focus);\n outline-offset: var(--dimension-space-025);\n}\n\n.chevron {\n font-size: 18px;\n line-height: 1;\n transform: rotate(0deg);\n transition: transform var(--effect-motion-short-3);\n color: var(--color-foreground-secondary);\n flex-shrink: 0;\n}\n\n.chevron--open { transform: rotate(90deg); }\n\n.body {\n overflow: hidden;\n transition: height var(--effect-motion-short-3);\n}\n\n.body-inner {\n padding: var(--dimension-space-050) var(--dimension-space-050) var(--dimension-space-100);\n color: var(--color-foreground-secondary);\n}\n","import { Component, Prop, State, Event, EventEmitter, Element, Watch, h, Host } from '@stencil/core';\n\nexport interface AccordionItemData {\n id: string;\n label: string;\n content?: string;\n inactive?: boolean;\n}\n\nlet idCounter = 0;\n\n@Component({\n tag: 'ds-accordion',\n styleUrl: 'Accordion.css',\n scoped: true,\n})\nexport class Accordion {\n @Element() el!: HTMLElement;\n\n @Prop() items: AccordionItemData[] = [];\n @Prop() multiple: boolean = false;\n /** Comma-separated list of expanded item IDs for controlled mode. */\n @Prop({ mutable: true }) expandedIds: string = '';\n\n @State() private internalIds: string[] = [];\n @State() private heights: Record<string, number> = {};\n\n @Event() dsExpandedChange!: EventEmitter<string[]>;\n\n private instanceId = ++idCounter;\n private resizeObservers: Map<string, ResizeObserver> = new Map();\n\n private get activeIds(): string[] {\n if (this.expandedIds) return this.expandedIds.split(',').map(s => s.trim()).filter(Boolean);\n return this.internalIds;\n }\n\n componentDidLoad() {\n this.bindResizeObservers();\n }\n\n disconnectedCallback() {\n this.resizeObservers.forEach(ro => ro.disconnect());\n this.resizeObservers.clear();\n }\n\n @Watch('items')\n onItemsChange() {\n requestAnimationFrame(() => {\n this.bindResizeObservers();\n this.measureAll();\n });\n }\n\n private bindResizeObservers() {\n this.resizeObservers.forEach(ro => ro.disconnect());\n this.resizeObservers.clear();\n\n this.items.forEach(item => {\n const inner = this.el.querySelector(`[data-inner=\"${item.id}\"]`) as HTMLElement | null;\n if (!inner) return;\n const ro = new ResizeObserver(() => {\n this.heights = { ...this.heights, [item.id]: inner.scrollHeight };\n });\n ro.observe(inner);\n this.resizeObservers.set(item.id, ro);\n });\n }\n\n private measureAll() {\n const next: Record<string, number> = { ...this.heights };\n this.items.forEach(item => {\n const inner = this.el.querySelector(`[data-inner=\"${item.id}\"]`) as HTMLElement | null;\n if (inner) next[item.id] = inner.scrollHeight;\n });\n this.heights = next;\n }\n\n private toggle(id: string) {\n const current = this.activeIds;\n let next: string[];\n if (current.includes(id)) {\n next = current.filter(x => x !== id);\n } else {\n next = this.multiple ? [...current, id] : [id];\n }\n this.internalIds = next;\n this.dsExpandedChange.emit(next);\n }\n\n render() {\n const activeIds = this.activeIds;\n\n return (\n <Host class=\"accordion\">\n {this.items.map(item => {\n const isExpanded = activeIds.includes(item.id);\n const triggerId = `ds-accordion-${this.instanceId}-trigger-${item.id}`;\n const panelId = `ds-accordion-${this.instanceId}-panel-${item.id}`;\n const bodyHeight = this.heights[item.id] ?? 0;\n\n return (\n <div\n key={item.id}\n class={{ item: true, 'item--inactive': !!item.inactive }}\n >\n <button\n type=\"button\"\n id={triggerId}\n class=\"trigger\"\n onClick={() => !item.inactive && this.toggle(item.id)}\n aria-expanded={isExpanded}\n aria-controls={panelId}\n aria-disabled={item.inactive || undefined}\n tabIndex={item.inactive ? -1 : 0}\n >\n <span class=\"text-body-medium-emphasis\">{item.label}</span>\n <span\n class={{ chevron: true, 'chevron--open': isExpanded }}\n aria-hidden=\"true\"\n >›</span>\n </button>\n <div\n id={panelId}\n role=\"region\"\n aria-labelledby={triggerId}\n class=\"body\"\n style={{ height: isExpanded ? `${bodyHeight}px` : '0' }}\n aria-hidden={!isExpanded}\n >\n <div class=\"body-inner\" data-inner={item.id}>\n {item.content\n ? <span class=\"text-body-medium\">{item.content}</span>\n : <slot name={item.id} />\n }\n </div>\n </div>\n </div>\n );\n })}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Components, JSX } from "../types/components";
|
|
2
|
-
|
|
3
|
-
interface DsBreadcrumb extends Components.DsBreadcrumb, HTMLElement {}
|
|
4
|
-
export const DsBreadcrumb: {
|
|
5
|
-
prototype: DsBreadcrumb;
|
|
6
|
-
new (): DsBreadcrumb;
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* Used to define this component and all nested components recursively.
|
|
10
|
-
*/
|
|
11
|
-
export const defineCustomElement: () => void;
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{p as e,H as r,c as s,h as a,a as i,t as c}from"./index.js";const n=()=>`.breadcrumb.sc-ds-breadcrumb{display:flex;align-items:center}.list.sc-ds-breadcrumb{display:flex;align-items:center;list-style:none;margin:0;padding:0;gap:var(--dimension-space-050)}.item.sc-ds-breadcrumb{display:flex;align-items:center;gap:var(--dimension-space-050)}.item-inner.sc-ds-breadcrumb{display:flex;align-items:center;gap:var(--dimension-space-050)}.link.sc-ds-breadcrumb{color:var(--color-foreground-secondary);text-decoration:none;padding:var(--dimension-space-025) var(--dimension-space-050);border-radius:var(--dimension-radius-050);transition:background-color var(--effect-motion-short-2), color var(--effect-motion-short-2)}.link.sc-ds-breadcrumb:hover{background-color:var(--color-interaction-hover);color:var(--color-foreground-primary)}.link.sc-ds-breadcrumb:active{background-color:var(--color-interaction-pressed)}.link.sc-ds-breadcrumb:focus-visible{outline:var(--dimension-stroke-width-025) solid var(--color-interaction-focus);outline-offset:var(--dimension-space-025)}.separator.sc-ds-breadcrumb{color:var(--color-foreground-tertiary);-webkit-user-select:none;user-select:none}.current.sc-ds-breadcrumb{color:var(--color-foreground-primary);padding:var(--dimension-space-025) var(--dimension-space-050)}`;const o=e(class e extends r{constructor(e){super();if(e!==false){this.__registerHost()}this.dsNavigate=s(this,"dsNavigate");this.items=[];this.separator="/"}handleClick(e,r,s){if(!e.href){s.preventDefault()}this.dsNavigate.emit({item:e,index:r})}render(){return a(i,{key:"18a93bad46568264a308c3aa3067dca124a42aac"},a("nav",{key:"a19a1a8233e23ea548544f09658cbc49211b9a75","aria-label":"Breadcrumb",class:"breadcrumb"},a("ol",{key:"1edb429d1686e8285bf707da5f0b46f410283d79",class:"list"},this.items.map(((e,r)=>{const s=r===this.items.length-1;return a("li",{class:"item",key:r},s?a("span",{class:"text-body-medium-emphasis current","aria-current":"page"},e.label):a("span",{class:"item-inner"},a("a",{href:e.href??"#",class:"link text-body-medium",onClick:s=>this.handleClick(e,r,s)},e.label),a("span",{class:"separator text-body-small","aria-hidden":"true"},this.separator)))})))))}static get style(){return n()}},[2,"ds-breadcrumb",{items:[16],separator:[1]}]);function t(){if(typeof customElements==="undefined"){return}const e=["ds-breadcrumb"];e.forEach((e=>{switch(e){case"ds-breadcrumb":if(!customElements.get(c(e))){customElements.define(c(e),o)}break}}))}t();const d=o;const l=t;export{d as DsBreadcrumb,l as defineCustomElement};
|
|
2
|
-
//# sourceMappingURL=ds-breadcrumb.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["breadcrumbCss","Breadcrumb","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","items","separator","handleClick","item","index","e","href","preventDefault","dsNavigate","emit","render","h","Host","key","class","map","i","isLast","length","label","onClick"],"sources":["src/wc/components/Breadcrumb/Breadcrumb.css?tag=ds-breadcrumb&encapsulation=scoped","src/wc/components/Breadcrumb/Breadcrumb.tsx"],"sourcesContent":[".breadcrumb {\n display: flex;\n align-items: center;\n}\n\n.list {\n display: flex;\n align-items: center;\n list-style: none;\n margin: 0;\n padding: 0;\n gap: var(--dimension-space-050);\n}\n\n.item {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-050);\n}\n\n.item-inner {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-050);\n}\n\n.link {\n color: var(--color-foreground-secondary);\n text-decoration: none;\n padding: var(--dimension-space-025) var(--dimension-space-050);\n border-radius: var(--dimension-radius-050);\n transition: background-color var(--effect-motion-short-2), color var(--effect-motion-short-2);\n}\n\n.link:hover {\n background-color: var(--color-interaction-hover);\n color: var(--color-foreground-primary);\n}\n\n.link:active { background-color: var(--color-interaction-pressed); }\n\n.link:focus-visible {\n outline: var(--dimension-stroke-width-025) solid var(--color-interaction-focus);\n outline-offset: var(--dimension-space-025);\n}\n\n.separator {\n color: var(--color-foreground-tertiary);\n -webkit-user-select: none;\n user-select: none;\n}\n\n.current {\n color: var(--color-foreground-primary);\n padding: var(--dimension-space-025) var(--dimension-space-050);\n}\n","import { Component, Prop, Event, EventEmitter, h, Host } from '@stencil/core';\n\nexport interface BreadcrumbItem {\n label: string;\n href?: string;\n}\n\n@Component({\n tag: 'ds-breadcrumb',\n styleUrl: 'Breadcrumb.css',\n scoped: true,\n})\nexport class Breadcrumb {\n @Prop() items: BreadcrumbItem[] = [];\n @Prop() separator: string = '/';\n\n @Event() dsNavigate!: EventEmitter<{ item: BreadcrumbItem; index: number }>;\n\n private handleClick(item: BreadcrumbItem, index: number, e: MouseEvent) {\n if (!item.href) {\n e.preventDefault();\n }\n this.dsNavigate.emit({ item, index });\n }\n\n render() {\n return (\n <Host>\n <nav aria-label=\"Breadcrumb\" class=\"breadcrumb\">\n <ol class=\"list\">\n {this.items.map((item, i) => {\n const isLast = i === this.items.length - 1;\n return (\n <li class=\"item\" key={i}>\n {isLast ? (\n <span class=\"text-body-medium-emphasis current\" aria-current=\"page\">\n {item.label}\n </span>\n ) : (\n <span class=\"item-inner\">\n <a\n href={item.href ?? '#'}\n class=\"link text-body-medium\"\n onClick={e => this.handleClick(item, i, e)}\n >\n {item.label}\n </a>\n <span class=\"separator text-body-small\" aria-hidden=\"true\">\n {this.separator}\n </span>\n </span>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n </Host>\n );\n }\n}\n"],"mappings":"kEAAA,MAAMA,EAAgB,IAAM,gtC,MCYfC,EAAUC,EAAA,MAAAD,UAAAE,EALvB,WAAAC,CAAAC,G,iFAMUC,KAAAC,MAA0B,GAC1BD,KAAAE,UAAoB,GA8C7B,CA1CS,WAAAC,CAAYC,EAAsBC,EAAeC,GACvD,IAAKF,EAAKG,KAAM,CACdD,EAAEE,gB,CAEJR,KAAKS,WAAWC,KAAK,CAAEN,OAAMC,S,CAG/B,MAAAM,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,wDAAgB,aAAaC,MAAM,cACjCH,EAAA,MAAAE,IAAA,2CAAIC,MAAM,QACPf,KAAKC,MAAMe,KAAI,CAACZ,EAAMa,KACrB,MAAMC,EAASD,IAAMjB,KAAKC,MAAMkB,OAAS,EACzC,OACEP,EAAA,MAAIG,MAAM,OAAOD,IAAKG,GACnBC,EACCN,EAAA,QAAMG,MAAM,oCAAmC,eAAc,QAC1DX,EAAKgB,OAGRR,EAAA,QAAMG,MAAM,cACVH,EAAA,KACEL,KAAMH,EAAKG,MAAQ,IACnBQ,MAAM,wBACNM,QAASf,GAAKN,KAAKG,YAAYC,EAAMa,EAAGX,IAEvCF,EAAKgB,OAERR,EAAA,QAAMG,MAAM,4BAA2B,cAAa,QACjDf,KAAKE,YAIT,M","ignoreList":[]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Components, JSX } from "../types/components";
|
|
2
|
-
|
|
3
|
-
interface DsButtonUnfilledIcon extends Components.DsButtonUnfilledIcon, HTMLElement {}
|
|
4
|
-
export const DsButtonUnfilledIcon: {
|
|
5
|
-
prototype: DsButtonUnfilledIcon;
|
|
6
|
-
new (): DsButtonUnfilledIcon;
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* Used to define this component and all nested components recursively.
|
|
10
|
-
*/
|
|
11
|
-
export const defineCustomElement: () => void;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Components, JSX } from "../types/components";
|
|
2
|
-
|
|
3
|
-
interface DsFade extends Components.DsFade, HTMLElement {}
|
|
4
|
-
export const DsFade: {
|
|
5
|
-
prototype: DsFade;
|
|
6
|
-
new (): DsFade;
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* Used to define this component and all nested components recursively.
|
|
10
|
-
*/
|
|
11
|
-
export const defineCustomElement: () => void;
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{p as e,H as s,h as a,a as t,t as d}from"./index.js";import{s as i,a as r}from"./p-CBUIn8dk.js";const o=()=>`.scroll-edge-fade.sc-ds-fade{--ds-scroll-edge-fade-size:var(--dimension-size-600)}.scroll-edge-fade--top.sc-ds-fade{-webkit-mask-image:linear-gradient(to bottom, #000 0, #000 50%, transparent 100%);mask-image:linear-gradient(to bottom, #000 0, #000 50%, transparent 100%);-webkit-mask-size:100% 100%;mask-size:100% 100%}.scroll-edge-fade--bottom.sc-ds-fade{-webkit-mask-image:linear-gradient( to bottom, #000 0, #000 calc(100% - var(--ds-scroll-edge-fade-size)), transparent 100% );mask-image:linear-gradient( to bottom, #000 0, #000 calc(100% - var(--ds-scroll-edge-fade-size)), transparent 100% );-webkit-mask-size:100% 100%;mask-size:100% 100%}.scroll-edge-fade--left.sc-ds-fade{-webkit-mask-image:linear-gradient( to right, #000 0, #000 calc(100% - var(--ds-scroll-edge-fade-size)), transparent 100% );mask-image:linear-gradient( to right, #000 0, #000 calc(100% - var(--ds-scroll-edge-fade-size)), transparent 100% );-webkit-mask-size:100% 100%;mask-size:100% 100%}.scroll-edge-fade--right.sc-ds-fade{-webkit-mask-image:linear-gradient( to left, #000 0, #000 calc(100% - var(--ds-scroll-edge-fade-size)), transparent 100% );mask-image:linear-gradient( to left, #000 0, #000 calc(100% - var(--ds-scroll-edge-fade-size)), transparent 100% );-webkit-mask-size:100% 100%;mask-size:100% 100%}.scroll-edge-fade--at-end.sc-ds-fade,.scroll-edge-fade--hidden.sc-ds-fade{-webkit-mask-image:none;mask-image:none}.sc-ds-fade-h{display:block;height:100%;box-sizing:border-box}.fade__scroll.sc-ds-fade{height:100%;overflow:auto;box-sizing:border-box}`;const n=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.side="bottom";this.size="size-600";this.visible=true}render(){return a(t,{key:"167df54396bc0d4fff2335254bd48398785ee117"},a("div",{key:"576b3aff27a66ab3d6a5067627f333fe2c64330e",class:{fade__scroll:true,...r({edges:this.side,hidden:!this.visible})},style:i(this.size,this.height)},a("slot",{key:"3f8afcaf1f1f06c08291e6ed9317f8d39d0acc6c"})))}static get style(){return o()}},[262,"ds-fade",{side:[1],size:[1],height:[1],visible:[4]}]);function l(){if(typeof customElements==="undefined"){return}const e=["ds-fade"];e.forEach((e=>{switch(e){case"ds-fade":if(!customElements.get(d(e))){customElements.define(d(e),n)}break}}))}l();const c=n;const f=l;export{c as DsFade,f as defineCustomElement};
|
|
2
|
-
//# sourceMappingURL=ds-fade.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["fadeCss","Fade","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","side","size","visible","render","h","Host","key","class","fade__scroll","scrollEdgeFadeClassMap","edges","hidden","style","scrollEdgeFadeSizeStyle","height"],"sources":["src/wc/components/Fade/Fade.css?tag=ds-fade&encapsulation=scoped","src/wc/components/Fade/Fade.tsx"],"sourcesContent":["@import '../../utils/scroll-edge-fade.css';\n\n:host {\n display: block;\n height: 100%;\n box-sizing: border-box;\n}\n\n.fade__scroll {\n height: 100%;\n overflow: auto;\n box-sizing: border-box;\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\nimport {\n scrollEdgeFadeClassMap,\n scrollEdgeFadeSizeStyle,\n type ScrollEdgeFadeEdge,\n type ScrollEdgeFadeSize,\n type ScrollEdgeFadeSizeToken,\n} from '../../utils/scroll-edge-fade';\n\n/** @deprecated Use `ScrollEdgeFadeEdge` from `@ds-mo/ui/utils`. */\nexport type FadeSide = ScrollEdgeFadeEdge;\n\n/** @deprecated Use `ScrollEdgeFadeSizeToken` from `@ds-mo/ui/utils`. */\nexport type FadeSizeToken = ScrollEdgeFadeSizeToken;\n\n/** @deprecated Use `ScrollEdgeFadeSize` from `@ds-mo/ui/utils`. */\nexport type FadeSize = ScrollEdgeFadeSize;\n\n@Component({\n tag: 'ds-fade',\n styleUrl: 'Fade.css',\n scoped: true,\n})\nexport class Fade {\n /** Edge where content fades as it approaches the scroll boundary. */\n @Prop() side: FadeSide = 'bottom';\n\n /** Fade depth along the fade axis. Accepts dimension size token names or any CSS length. */\n @Prop() size: FadeSize = 'size-600';\n\n /**\n * Deprecated alias for size. Kept for existing consumers that pass a raw CSS length.\n * Prefer `size`.\n */\n @Prop() height: string | undefined;\n\n /** Controls the mask without removing the scroll container from layout. */\n @Prop() visible: boolean = true;\n\n render() {\n return (\n <Host>\n <div\n class={{\n 'fade__scroll': true,\n ...scrollEdgeFadeClassMap({\n edges: this.side,\n hidden: !this.visible,\n }),\n }}\n style={scrollEdgeFadeSizeStyle(this.size, this.height) as Record<string, string>}\n >\n <slot />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"sGAAA,MAAMA,EAAU,IAAM,onD,MCuBTC,EAAIC,EAAA,MAAAD,UAAAE,EALjB,WAAAC,CAAAC,G,4CAOUC,KAAAC,KAAiB,SAGjBD,KAAAE,KAAiB,WASjBF,KAAAG,QAAmB,IAoB5B,CAlBC,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CACEC,MAAO,CACLC,aAAgB,QACbC,EAAuB,CACxBC,MAAOX,KAAKC,KACZW,QAASZ,KAAKG,WAGlBU,MAAOC,EAAwBd,KAAKE,KAAMF,KAAKe,SAE/CV,EAAA,QAAAE,IAAA,8C","ignoreList":[]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Components, JSX } from "../types/components";
|
|
2
|
-
|
|
3
|
-
interface DsSurface extends Components.DsSurface, HTMLElement {}
|
|
4
|
-
export const DsSurface: {
|
|
5
|
-
prototype: DsSurface;
|
|
6
|
-
new (): DsSurface;
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* Used to define this component and all nested components recursively.
|
|
10
|
-
*/
|
|
11
|
-
export const defineCustomElement: () => void;
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{p as r,H as o,h as e,a,t as s}from"./index.js";const n=()=>`.surface.sc-ds-surface{box-sizing:border-box;position:relative;border:none;padding:0;margin:0;font:inherit;color:inherit;background:none;text-decoration:none;text-align:left;cursor:default;appearance:none;-webkit-appearance:none}.bg-primary.sc-ds-surface{background-color:var(--color-background-primary)}.bg-secondary.sc-ds-surface{background-color:var(--color-background-secondary)}.bg-transparent.sc-ds-surface{background-color:transparent}.bg-translucent.sc-ds-surface{background-color:var(--color-background-translucent);backdrop-filter:blur(var(--effect-blur-md));-webkit-backdrop-filter:blur(var(--effect-blur-md))}.intent-brand-faint.sc-ds-surface{background-color:var(--color-background-faint-brand)}.intent-brand-medium.sc-ds-surface{background-color:var(--color-background-medium-brand)}.intent-brand-bold.sc-ds-surface{background-color:var(--color-background-bold-brand)}.intent-brand-strong.sc-ds-surface{background-color:var(--color-background-strong-brand)}.intent-positive-faint.sc-ds-surface{background-color:var(--color-background-faint-positive)}.intent-positive-medium.sc-ds-surface{background-color:var(--color-background-medium-positive)}.intent-positive-bold.sc-ds-surface{background-color:var(--color-background-bold-positive)}.intent-positive-strong.sc-ds-surface{background-color:var(--color-background-strong-positive)}.intent-negative-faint.sc-ds-surface{background-color:var(--color-background-faint-negative)}.intent-negative-medium.sc-ds-surface{background-color:var(--color-background-medium-negative)}.intent-negative-bold.sc-ds-surface{background-color:var(--color-background-bold-negative)}.intent-negative-strong.sc-ds-surface{background-color:var(--color-background-strong-negative)}.intent-warning-faint.sc-ds-surface{background-color:var(--color-background-faint-warning)}.intent-warning-medium.sc-ds-surface{background-color:var(--color-background-medium-warning)}.intent-warning-bold.sc-ds-surface{background-color:var(--color-background-bold-warning)}.intent-warning-strong.sc-ds-surface{background-color:var(--color-background-strong-warning)}.intent-caution-faint.sc-ds-surface{background-color:var(--color-background-faint-caution)}.intent-caution-medium.sc-ds-surface{background-color:var(--color-background-medium-caution)}.intent-caution-bold.sc-ds-surface{background-color:var(--color-background-bold-caution)}.intent-caution-strong.sc-ds-surface{background-color:var(--color-background-strong-caution)}.intent-ai-faint.sc-ds-surface{background-color:var(--color-background-faint-ai)}.intent-ai-medium.sc-ds-surface{background-color:var(--color-background-medium-ai)}.intent-ai-bold.sc-ds-surface{background-color:var(--color-background-bold-ai)}.intent-ai-strong.sc-ds-surface{background-color:var(--color-background-strong-ai)}.intent-neutral-faint.sc-ds-surface{background-color:var(--color-background-faint-neutral)}.intent-neutral-medium.sc-ds-surface{background-color:var(--color-background-medium-neutral)}.intent-neutral-bold.sc-ds-surface{background-color:var(--color-background-bold-neutral)}.intent-neutral-strong.sc-ds-surface{background-color:var(--color-background-strong-neutral)}.intent-walkthrough-faint.sc-ds-surface{background-color:var(--color-background-faint-walkthrough)}.intent-walkthrough-medium.sc-ds-surface{background-color:var(--color-background-medium-walkthrough)}.intent-walkthrough-bold.sc-ds-surface{background-color:var(--color-background-bold-walkthrough)}.intent-walkthrough-strong.sc-ds-surface{background-color:var(--color-background-strong-walkthrough)}.intent-guide-faint.sc-ds-surface{background-color:var(--color-background-faint-guide)}.intent-guide-medium.sc-ds-surface{background-color:var(--color-background-medium-guide)}.intent-guide-bold.sc-ds-surface{background-color:var(--color-background-bold-guide)}.intent-guide-strong.sc-ds-surface{background-color:var(--color-background-strong-guide)}.elevation-depressed.sc-ds-surface{box-shadow:var(--effect-elevation-depressed-sm)}.elevation-depressed-md.sc-ds-surface{box-shadow:var(--effect-elevation-depressed-md)}.elevation-flat.sc-ds-surface{box-shadow:var(--effect-elevation-elevated-sm)}.elevation-elevated.sc-ds-surface{box-shadow:var(--effect-elevation-elevated-md)}.elevation-floating.sc-ds-surface{box-shadow:var(--effect-elevation-elevated-floating)}.elevation-overlayTop.sc-ds-surface{box-shadow:var(--effect-elevation-elevated-panel-top)}.elevation-overlayRight.sc-ds-surface{box-shadow:var(--effect-elevation-elevated-panel-right)}.elevation-overlayBottom.sc-ds-surface{box-shadow:var(--effect-elevation-elevated-panel-bottom)}.elevation-overlayLeft.sc-ds-surface{box-shadow:var(--effect-elevation-elevated-panel-left)}.edge-top.sc-ds-surface{border-top:var(--dimension-stroke-width-015) solid var(--color-border-tertiary)}.edge-right.sc-ds-surface{border-right:var(--dimension-stroke-width-015) solid var(--color-border-tertiary)}.edge-bottom.sc-ds-surface{border-bottom:var(--dimension-stroke-width-015) solid var(--color-border-tertiary)}.edge-left.sc-ds-surface{border-left:var(--dimension-stroke-width-015) solid var(--color-border-tertiary)}.radius-none.sc-ds-surface{border-radius:var(--dimension-radius-000)}.radius-xs.sc-ds-surface{border-radius:var(--dimension-radius-050)}.radius-sm.sc-ds-surface{border-radius:var(--dimension-radius-075)}.radius-md.sc-ds-surface{border-radius:var(--dimension-radius-100)}.radius-lg.sc-ds-surface{border-radius:var(--dimension-radius-125)}.radius-xl.sc-ds-surface{border-radius:var(--dimension-radius-175)}.radius-2xl.sc-ds-surface{border-radius:var(--dimension-radius-200)}.radius-full.sc-ds-surface{border-radius:var(--dimension-radius-half)}.interactive.sc-ds-surface{cursor:pointer;transition:transform var(--effect-motion-short-2);--_hover-bg:var(--color-interaction-hover);--_pressed-bg:var(--color-interaction-pressed)}.interactive.sc-ds-surface:hover{background-color:var(--_hover-bg)}.interactive.sc-ds-surface:active{background-color:var(--_pressed-bg);transform:scale(var(--dimension-scale-subtle))}.interactive.sc-ds-surface:focus-visible{outline:var(--dimension-stroke-width-025) solid var(--color-interaction-focus);outline-offset:var(--dimension-space-025)}.selected.sc-ds-surface::before{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:0;background-color:var(--color-interaction-hover)}.selected.sc-ds-surface>*.sc-ds-surface{position:relative;z-index:1}.inactive.sc-ds-surface{opacity:0.5;cursor:not-allowed;pointer-events:none}`;const c=new Set(["none","xs","sm","md","lg","xl","2xl","full"]);const t=r(class r extends o{constructor(r){super();if(r!==false){this.__registerHost()}this.background="transparent";this.contrast="faint";this.elevation="none";this.interactive=false;this.selected=false;this.inactive=false;this.as="div"}render(){const r=this.as;const o=this.intent?`intent-${this.intent}-${this.contrast}`:`bg-${this.background}`;const s=`elevation-${this.elevation}`;const n=this.edge&&this.elevation==="none"?this.edge.trim().split(/\s+/).map((r=>`edge-${r}`)):[];const t=this.radius&&c.has(this.radius)?`radius-${this.radius}`:"";const d=this.radius&&!c.has(this.radius)?this.radius:undefined;const i=["surface",o,s,...n,t,this.interactive?"interactive":"",this.selected?"selected":"",this.inactive?"inactive":""].filter(Boolean).join(" ");return e(a,{key:"336d95fbb17cb9f4a02e7f5a338b41000dc8605d",style:{display:"contents"}},e(r,{key:"c9b8daaef99b94527604ab5008650bb2839c8aa8",class:i,style:d?{borderRadius:d}:undefined},e("slot",{key:"e2ac706676c2d7a980b3aaa115d17eb9b0bc7e50"})))}static get style(){return n()}},[262,"ds-surface",{background:[1],intent:[1],contrast:[1],elevation:[1],edge:[1],radius:[1],interactive:[4],selected:[4],inactive:[4],as:[1]}]);function d(){if(typeof customElements==="undefined"){return}const r=["ds-surface"];r.forEach((r=>{switch(r){case"ds-surface":if(!customElements.get(s(r))){customElements.define(s(r),t)}break}}))}d();const i=t;const u=d;export{i as DsSurface,u as defineCustomElement};
|
|
2
|
-
//# sourceMappingURL=ds-surface.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["surfaceCss","RADIUS_PRESETS","Set","Surface","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","background","contrast","elevation","interactive","selected","inactive","as","render","Tag","intentClass","intent","elevClass","edgeClasses","edge","trim","split","map","e","radiusClass","radius","has","customRadius","undefined","cls","filter","Boolean","join","h","Host","key","style","display","class","borderRadius"],"sources":["src/wc/components/Surface/Surface.css?tag=ds-surface&encapsulation=scoped","src/wc/components/Surface/Surface.tsx"],"sourcesContent":[".surface {\n box-sizing: border-box;\n position: relative;\n border: none;\n padding: 0;\n margin: 0;\n font: inherit;\n color: inherit;\n background: none;\n text-decoration: none;\n text-align: left;\n cursor: default;\n appearance: none;\n -webkit-appearance: none;\n}\n\n/* Backgrounds */\n.bg-primary { background-color: var(--color-background-primary); }\n.bg-secondary { background-color: var(--color-background-secondary); }\n.bg-transparent { background-color: transparent; }\n.bg-translucent {\n background-color: var(--color-background-translucent);\n backdrop-filter: blur(var(--effect-blur-md));\n -webkit-backdrop-filter: blur(var(--effect-blur-md));\n}\n\n/* Intent × Contrast */\n.intent-brand-faint { background-color: var(--color-background-faint-brand); }\n.intent-brand-medium { background-color: var(--color-background-medium-brand); }\n.intent-brand-bold { background-color: var(--color-background-bold-brand); }\n.intent-brand-strong { background-color: var(--color-background-strong-brand); }\n.intent-positive-faint { background-color: var(--color-background-faint-positive); }\n.intent-positive-medium { background-color: var(--color-background-medium-positive); }\n.intent-positive-bold { background-color: var(--color-background-bold-positive); }\n.intent-positive-strong { background-color: var(--color-background-strong-positive); }\n.intent-negative-faint { background-color: var(--color-background-faint-negative); }\n.intent-negative-medium { background-color: var(--color-background-medium-negative); }\n.intent-negative-bold { background-color: var(--color-background-bold-negative); }\n.intent-negative-strong { background-color: var(--color-background-strong-negative); }\n.intent-warning-faint { background-color: var(--color-background-faint-warning); }\n.intent-warning-medium { background-color: var(--color-background-medium-warning); }\n.intent-warning-bold { background-color: var(--color-background-bold-warning); }\n.intent-warning-strong { background-color: var(--color-background-strong-warning); }\n.intent-caution-faint { background-color: var(--color-background-faint-caution); }\n.intent-caution-medium { background-color: var(--color-background-medium-caution); }\n.intent-caution-bold { background-color: var(--color-background-bold-caution); }\n.intent-caution-strong { background-color: var(--color-background-strong-caution); }\n.intent-ai-faint { background-color: var(--color-background-faint-ai); }\n.intent-ai-medium { background-color: var(--color-background-medium-ai); }\n.intent-ai-bold { background-color: var(--color-background-bold-ai); }\n.intent-ai-strong { background-color: var(--color-background-strong-ai); }\n.intent-neutral-faint { background-color: var(--color-background-faint-neutral); }\n.intent-neutral-medium { background-color: var(--color-background-medium-neutral); }\n.intent-neutral-bold { background-color: var(--color-background-bold-neutral); }\n.intent-neutral-strong { background-color: var(--color-background-strong-neutral); }\n.intent-walkthrough-faint { background-color: var(--color-background-faint-walkthrough); }\n.intent-walkthrough-medium { background-color: var(--color-background-medium-walkthrough); }\n.intent-walkthrough-bold { background-color: var(--color-background-bold-walkthrough); }\n.intent-walkthrough-strong { background-color: var(--color-background-strong-walkthrough); }\n.intent-guide-faint { background-color: var(--color-background-faint-guide); }\n.intent-guide-medium { background-color: var(--color-background-medium-guide); }\n.intent-guide-bold { background-color: var(--color-background-bold-guide); }\n.intent-guide-strong { background-color: var(--color-background-strong-guide); }\n\n/* Elevation */\n.elevation-none {}\n.elevation-depressed { box-shadow: var(--effect-elevation-depressed-sm); }\n.elevation-depressed-md { box-shadow: var(--effect-elevation-depressed-md); }\n.elevation-flat { box-shadow: var(--effect-elevation-elevated-sm); }\n.elevation-elevated { box-shadow: var(--effect-elevation-elevated-md); }\n.elevation-floating { box-shadow: var(--effect-elevation-elevated-floating); }\n.elevation-overlayTop { box-shadow: var(--effect-elevation-elevated-panel-top); }\n.elevation-overlayRight { box-shadow: var(--effect-elevation-elevated-panel-right); }\n.elevation-overlayBottom { box-shadow: var(--effect-elevation-elevated-panel-bottom); }\n.elevation-overlayLeft { box-shadow: var(--effect-elevation-elevated-panel-left); }\n\n/* Edges */\n.edge-top { border-top: var(--dimension-stroke-width-015) solid var(--color-border-tertiary); }\n.edge-right { border-right: var(--dimension-stroke-width-015) solid var(--color-border-tertiary); }\n.edge-bottom { border-bottom: var(--dimension-stroke-width-015) solid var(--color-border-tertiary); }\n.edge-left { border-left: var(--dimension-stroke-width-015) solid var(--color-border-tertiary); }\n\n/* Radius */\n.radius-none { border-radius: var(--dimension-radius-000); }\n.radius-xs { border-radius: var(--dimension-radius-050); }\n.radius-sm { border-radius: var(--dimension-radius-075); }\n.radius-md { border-radius: var(--dimension-radius-100); }\n.radius-lg { border-radius: var(--dimension-radius-125); }\n.radius-xl { border-radius: var(--dimension-radius-175); }\n.radius-2xl { border-radius: var(--dimension-radius-200); }\n.radius-full { border-radius: var(--dimension-radius-half); }\n\n/* Interactive */\n.interactive {\n cursor: pointer;\n transition: transform var(--effect-motion-short-2);\n --_hover-bg: var(--color-interaction-hover);\n --_pressed-bg: var(--color-interaction-pressed);\n}\n.interactive:hover { background-color: var(--_hover-bg); }\n.interactive:active { background-color: var(--_pressed-bg); transform: scale(var(--dimension-scale-subtle)); }\n.interactive:focus-visible {\n outline: var(--dimension-stroke-width-025) solid var(--color-interaction-focus);\n outline-offset: var(--dimension-space-025);\n}\n\n/* Selected */\n.selected::before {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: inherit;\n pointer-events: none;\n z-index: 0;\n background-color: var(--color-interaction-hover);\n}\n.selected > * { position: relative; z-index: 1; }\n\n/* Inactive */\n.inactive { opacity: 0.5; cursor: not-allowed; pointer-events: none; }\n","import { Component, Prop, h, Host } from '@stencil/core';\n\nexport type SurfaceIntent =\n | 'brand' | 'positive' | 'negative' | 'warning' | 'caution'\n | 'ai' | 'neutral' | 'walkthrough' | 'guide';\nexport type SurfaceBackground = 'primary' | 'secondary' | 'transparent' | 'translucent';\nexport type SurfaceContrast = 'faint' | 'medium' | 'bold' | 'strong';\nexport type SurfaceElevation =\n | 'none' | 'depressed' | 'depressed-md' | 'flat' | 'elevated' | 'floating'\n | 'overlayTop' | 'overlayRight' | 'overlayBottom' | 'overlayLeft';\nexport type SurfaceEdge = 'top' | 'right' | 'bottom' | 'left';\nexport type SurfaceRadius = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | (string & {});\nexport type SurfaceElement = 'div' | 'section' | 'aside' | 'article' | 'header' | 'footer' | 'main' | 'nav' | 'span';\n\nconst RADIUS_PRESETS = new Set(['none', 'xs', 'sm', 'md', 'lg', 'xl', '2xl', 'full']);\n\n@Component({\n tag: 'ds-surface',\n styleUrl: 'Surface.css',\n scoped: true,\n})\nexport class Surface {\n @Prop() background: SurfaceBackground = 'transparent';\n @Prop() intent: SurfaceIntent | undefined;\n @Prop() contrast: SurfaceContrast = 'faint';\n @Prop() elevation: SurfaceElevation = 'none';\n /** Space-separated list of edges: \"top bottom\" etc. Only applies when elevation='none'. */\n @Prop() edge: string | undefined;\n @Prop() radius: SurfaceRadius | undefined;\n @Prop() interactive: boolean = false;\n @Prop() selected: boolean = false;\n @Prop() inactive: boolean = false;\n @Prop() as: SurfaceElement = 'div';\n\n render() {\n // Polymorphic element: TSX treats a variable tag as a component, so a\n // dynamic intrinsic element name must be cast to `any` to render.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const Tag = this.as as any;\n\n const intentClass = this.intent\n ? `intent-${this.intent}-${this.contrast}`\n : `bg-${this.background}`;\n\n const elevClass = `elevation-${this.elevation}`;\n\n const edgeClasses = this.edge && this.elevation === 'none'\n ? this.edge.trim().split(/\\s+/).map(e => `edge-${e}`)\n : [];\n\n const radiusClass = this.radius && RADIUS_PRESETS.has(this.radius)\n ? `radius-${this.radius}`\n : '';\n\n const customRadius = this.radius && !RADIUS_PRESETS.has(this.radius)\n ? this.radius\n : undefined;\n\n const cls = [\n 'surface',\n intentClass,\n elevClass,\n ...edgeClasses,\n radiusClass,\n this.interactive ? 'interactive' : '',\n this.selected ? 'selected' : '',\n this.inactive ? 'inactive' : '',\n ].filter(Boolean).join(' ');\n\n return (\n <Host style={{ display: 'contents' }}>\n <Tag\n class={cls}\n style={customRadius ? { borderRadius: customRadius } : undefined}\n >\n <slot />\n </Tag>\n </Host>\n );\n }\n}\n"],"mappings":"sDAAA,MAAMA,EAAa,IAAM,01MCczB,MAAMC,EAAiB,IAAIC,IAAI,CAAC,OAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,S,MAOhEC,EAAOC,EAAA,MAAAD,UAAAE,EALpB,WAAAC,CAAAC,G,4CAMUC,KAAAC,WAAgC,cAEhCD,KAAAE,SAA4B,QAC5BF,KAAAG,UAA8B,OAI9BH,KAAAI,YAAuB,MACvBJ,KAAAK,SAAoB,MACpBL,KAAAM,SAAoB,MACpBN,KAAAO,GAAqB,KAgD9B,CA9CC,MAAAC,GAIE,MAAMC,EAAMT,KAAKO,GAEjB,MAAMG,EAAcV,KAAKW,OACrB,UAAUX,KAAKW,UAAUX,KAAKE,WAC9B,MAAMF,KAAKC,aAEf,MAAMW,EAAY,aAAaZ,KAAKG,YAEpC,MAAMU,EAAcb,KAAKc,MAAQd,KAAKG,YAAc,OAChDH,KAAKc,KAAKC,OAAOC,MAAM,OAAOC,KAAIC,GAAK,QAAQA,MAC/C,GAEJ,MAAMC,EAAcnB,KAAKoB,QAAU3B,EAAe4B,IAAIrB,KAAKoB,QACvD,UAAUpB,KAAKoB,SACf,GAEJ,MAAME,EAAetB,KAAKoB,SAAW3B,EAAe4B,IAAIrB,KAAKoB,QACzDpB,KAAKoB,OACLG,UAEJ,MAAMC,EAAM,CACV,UACAd,EACAE,KACGC,EACHM,EACAnB,KAAKI,YAAc,cAAgB,GACnCJ,KAAKK,SAAW,WAAa,GAC7BL,KAAKM,SAAW,WAAa,IAC7BmB,OAAOC,SAASC,KAAK,KAEvB,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,MAAO,CAAEC,QAAS,aACtBJ,EAACnB,EAAG,CAAAqB,IAAA,2CACFG,MAAOT,EACPO,MAAOT,EAAe,CAAEY,aAAcZ,GAAiBC,WAEvDK,EAAA,QAAAE,IAAA,8C","ignoreList":[]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Components, JSX } from "../types/components";
|
|
2
|
-
|
|
3
|
-
interface DsToastProvider extends Components.DsToastProvider, HTMLElement {}
|
|
4
|
-
export const DsToastProvider: {
|
|
5
|
-
prototype: DsToastProvider;
|
|
6
|
-
new (): DsToastProvider;
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* Used to define this component and all nested components recursively.
|
|
10
|
-
*/
|
|
11
|
-
export const defineCustomElement: () => void;
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{p as t,H as e,h as s,a as i,t as o}from"./index.js";import{r as n}from"./p-C1cBr-Ri.js";import{T as r}from"./p-bDf6yBQd.js";let a=[];const c=new Set;let d=0;function l(){c.forEach((t=>t()))}function u(t){c.add(t);return()=>c.delete(t)}function m(){return a}function f(){return n(r.animationDelayLong2,r.animationDelayLong2)}const p={show(t){const e=`ds-toast-${++d}`;const s=t.duration??f();a=[...a,{id:e,intent:"neutral",...t,duration:s}];l();return e},success(t,e){return p.show({message:t,intent:"positive",...e})},error(t,e){return p.show({message:t,intent:"negative",...e})},warning(t,e){return p.show({message:t,intent:"warning",...e})},info(t,e){return p.show({message:t,intent:"neutral",...e})},dismiss(t){a=a.filter((e=>e.id!==t));l()},dismissAll(){a=[];l()}};const h=()=>`.toast.sc-ds-toast-provider{animation:toastSlideIn var(--effect-motion-short-3) ease-out;width:100%;max-width:var(--dimension-panel-width-md)}.toast--exit.sc-ds-toast-provider{animation:toastFadeOut var(--effect-motion-short-3) ease-in forwards}.toast-dismiss.sc-ds-toast-provider{background:none;border:none;color:inherit;cursor:pointer;padding:var(--dimension-space-025);margin-left:auto;font-size:16px;line-height:1;opacity:0.7;border-radius:var(--dimension-radius-050);transition:opacity var(--effect-motion-short-2);flex-shrink:0}.toast-dismiss.sc-ds-toast-provider:hover{opacity:1}@keyframes toastSlideIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes toastFadeOut{from{opacity:1}to{opacity:0}}`;const g={neutral:"var(--color-background-bold-neutral)",brand:"var(--color-background-bold-brand)",positive:"var(--color-background-bold-positive)",negative:"var(--color-background-bold-negative)",warning:"var(--color-background-bold-warning)",caution:"var(--color-background-bold-caution)"};const b=t(class t extends e{constructor(t){super();if(t!==false){this.__registerHost()}this.position="top-center";this.items=[];this.unsubscribe=null}get fadeOutMs(){return n(r.motionShort3,r.animationDurationShort3)}connectedCallback(){this.unsubscribe=u((()=>this.syncFromStore()));this.syncFromStore()}disconnectedCallback(){this.items.forEach((t=>{if(t.timer)clearTimeout(t.timer)}));this.unsubscribe?.()}syncFromStore(){const t=m();const e=new Set(this.items.map((t=>t.data.id)));const s=new Set(t.map((t=>t.id)));const i=this.items.filter((t=>s.has(t.data.id)));const o=t.filter((t=>!e.has(t.id))).map((t=>{const e={data:t,exiting:false,timer:null,remaining:t.duration,startedAt:0,paused:false};if(t.duration>0){e.startedAt=Date.now();e.timer=setTimeout((()=>this.dismissItem(t.id)),t.duration)}return e}));this.items=[...i,...o]}dismissItem(t){this.items=this.items.map((e=>e.data.id===t?{...e,exiting:true,timer:null}:e));setTimeout((()=>{this.items=this.items.filter((e=>e.data.id!==t));p.dismiss(t)}),this.fadeOutMs)}pauseItem(t){this.items=this.items.map((e=>{if(e.data.id!==t||e.paused||!e.timer)return e;clearTimeout(e.timer);const s=Date.now()-e.startedAt;return{...e,paused:true,timer:null,remaining:Math.max(0,e.remaining-s)}}))}resumeItem(t){this.items=this.items.map((e=>{if(e.data.id!==t||!e.paused||e.remaining<=0)return e;const s=setTimeout((()=>this.dismissItem(t)),e.remaining);return{...e,paused:false,timer:s,startedAt:Date.now()}}))}getPositionStyle(){const t={position:"fixed",zIndex:"9999",display:"flex",flexDirection:"column",gap:"var(--dimension-space-075)",pointerEvents:"none",padding:"var(--dimension-space-100)",maxWidth:`var(${r.panelWidthMd})`,width:"100%",boxSizing:"border-box"};switch(this.position){case"top-center":return{...t,top:"0",left:"50%",transform:"translateX(-50%)",alignItems:"center"};case"top-right":return{...t,top:"0",right:"0",alignItems:"flex-end"};case"bottom-center":return{...t,bottom:"0",left:"50%",transform:"translateX(-50%)",alignItems:"center"};case"bottom-right":return{...t,bottom:"0",right:"0",alignItems:"flex-end"}}}render(){return s(i,{key:"c03f35b5e6068283fa7c528b1fbef957918a691a",style:{display:"contents"}},s("div",{key:"c028d9166a58251f967f0304b6d511e3c0f59375",class:"toast-container",role:"region","aria-label":"Notifications","aria-live":"polite",style:this.getPositionStyle()},this.items.map((t=>s("div",{key:t.data.id,class:{toast:true,"toast--exit":t.exiting},role:t.data.intent==="negative"?"alert":"status",style:{backgroundColor:g[t.data.intent],borderRadius:"var(--dimension-radius-125)",boxShadow:"var(--effect-elevation-elevated-floating)",display:"flex",alignItems:"center",gap:"var(--dimension-space-075)",padding:"var(--dimension-space-075) var(--dimension-space-100)",minHeight:"var(--dimension-size-400)",pointerEvents:"auto",color:"var(--color-foreground-on-bold-background-primary)",boxSizing:"border-box"},onMouseEnter:()=>this.pauseItem(t.data.id),onMouseLeave:()=>this.resumeItem(t.data.id)},s("span",{class:"text-body-medium",style:{flex:"1"}},t.data.message),s("button",{type:"button",class:"toast-dismiss",onClick:()=>this.dismissItem(t.data.id),"aria-label":"Dismiss"},"×"))))))}static get style(){return h()}},[2,"ds-toast-provider",{position:[1],items:[32]}]);function v(){if(typeof customElements==="undefined"){return}const t=["ds-toast-provider"];t.forEach((t=>{switch(t){case"ds-toast-provider":if(!customElements.get(o(t))){customElements.define(o(t),b)}break}}))}v();const y=b;const x=v;export{y as DsToastProvider,x as defineCustomElement};
|
|
2
|
-
//# sourceMappingURL=ds-toast-provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["toasts","listeners","Set","idCounter","emit","forEach","fn","subscribeToToasts","add","delete","getToasts","defaultToastDurationMs","resolveCssTimeMs","TOKEN_DEFAULTS","animationDelayLong2","toast","show","options","id","duration","intent","success","message","error","warning","info","dismiss","filter","t","dismissAll","toastCss","INTENT_BG","neutral","brand","positive","negative","caution","ToastProvider","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","position","items","unsubscribe","fadeOutMs","motionShort3","animationDurationShort3","connectedCallback","syncFromStore","disconnectedCallback","item","timer","clearTimeout","storeToasts","existingIds","map","i","data","storeIds","kept","has","newItems","state","exiting","remaining","startedAt","paused","Date","now","setTimeout","dismissItem","toastService","pauseItem","elapsed","Math","max","resumeItem","getPositionStyle","base","zIndex","display","flexDirection","gap","pointerEvents","padding","maxWidth","panelWidthMd","width","boxSizing","top","left","transform","alignItems","right","bottom","render","h","Host","key","style","class","role","backgroundColor","borderRadius","boxShadow","minHeight","color","onMouseEnter","onMouseLeave","flex","type","onClick"],"sources":["src/wc/components/Toast/toast-service.ts","src/wc/components/Toast/Toast.css?tag=ds-toast-provider&encapsulation=scoped","src/wc/components/Toast/Toast.tsx"],"sourcesContent":["import { resolveCssTimeMs, TOKEN_DEFAULTS } from '../../utils';\n\nexport type ToastIntent = 'neutral' | 'brand' | 'positive' | 'negative' | 'warning' | 'caution';\n\nexport interface ToastData {\n id: string;\n message: string;\n intent: ToastIntent;\n duration: number;\n}\n\nexport interface ToastOptions {\n message: string;\n intent?: ToastIntent;\n duration?: number;\n}\n\nlet toasts: ToastData[] = [];\nconst listeners = new Set<() => void>();\nlet idCounter = 0;\n\nfunction emit() {\n listeners.forEach(fn => fn());\n}\n\nexport function subscribeToToasts(fn: () => void): () => void {\n listeners.add(fn);\n return () => listeners.delete(fn);\n}\n\nexport function getToasts(): ToastData[] {\n return toasts;\n}\n\nfunction defaultToastDurationMs(): number {\n return resolveCssTimeMs(TOKEN_DEFAULTS.animationDelayLong2, TOKEN_DEFAULTS.animationDelayLong2);\n}\n\nexport const toast = {\n show(options: ToastOptions): string {\n const id = `ds-toast-${++idCounter}`;\n const duration = options.duration ?? defaultToastDurationMs();\n toasts = [...toasts, { id, intent: 'neutral', ...options, duration }];\n emit();\n return id;\n },\n success(message: string, options?: Partial<ToastOptions>): string {\n return toast.show({ message, intent: 'positive', ...options });\n },\n error(message: string, options?: Partial<ToastOptions>): string {\n return toast.show({ message, intent: 'negative', ...options });\n },\n warning(message: string, options?: Partial<ToastOptions>): string {\n return toast.show({ message, intent: 'warning', ...options });\n },\n info(message: string, options?: Partial<ToastOptions>): string {\n return toast.show({ message, intent: 'neutral', ...options });\n },\n dismiss(id: string) {\n toasts = toasts.filter(t => t.id !== id);\n emit();\n },\n dismissAll() {\n toasts = [];\n emit();\n },\n};\n",".toast {\n animation: toastSlideIn var(--effect-motion-short-3) ease-out;\n width: 100%;\n max-width: var(--dimension-panel-width-md);\n}\n\n.toast--exit {\n animation: toastFadeOut var(--effect-motion-short-3) ease-in forwards;\n}\n\n.toast-dismiss {\n background: none;\n border: none;\n color: inherit;\n cursor: pointer;\n padding: var(--dimension-space-025);\n margin-left: auto;\n font-size: 16px;\n line-height: 1;\n opacity: 0.7;\n border-radius: var(--dimension-radius-050);\n transition: opacity var(--effect-motion-short-2);\n flex-shrink: 0;\n}\n\n.toast-dismiss:hover { opacity: 1; }\n\n@keyframes toastSlideIn {\n from { opacity: 0; transform: translateY(-8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n@keyframes toastFadeOut {\n from { opacity: 1; }\n to { opacity: 0; }\n}\n","import { Component, Prop, State, h, Host } from '@stencil/core';\nimport { resolveCssTimeMs, TOKEN_DEFAULTS } from '../../utils';\nimport { subscribeToToasts, getToasts, toast as toastService, type ToastData, type ToastIntent } from './toast-service';\n\nexport type ToastPosition = 'top-center' | 'top-right' | 'bottom-center' | 'bottom-right';\n\nconst INTENT_BG: Record<ToastIntent, string> = {\n neutral: 'var(--color-background-bold-neutral)',\n brand: 'var(--color-background-bold-brand)',\n positive: 'var(--color-background-bold-positive)',\n negative: 'var(--color-background-bold-negative)',\n warning: 'var(--color-background-bold-warning)',\n caution: 'var(--color-background-bold-caution)',\n};\n\ninterface ToastItemState {\n data: ToastData;\n exiting: boolean;\n timer: ReturnType<typeof setTimeout> | null;\n remaining: number;\n startedAt: number;\n paused: boolean;\n}\n\n@Component({\n tag: 'ds-toast-provider',\n styleUrl: 'Toast.css',\n scoped: true,\n})\nexport class ToastProvider {\n @Prop() position: ToastPosition = 'top-center';\n\n @State() private items: ToastItemState[] = [];\n\n private unsubscribe: (() => void) | null = null;\n\n private get fadeOutMs(): number {\n return resolveCssTimeMs(TOKEN_DEFAULTS.motionShort3, TOKEN_DEFAULTS.animationDurationShort3);\n }\n\n connectedCallback() {\n this.unsubscribe = subscribeToToasts(() => this.syncFromStore());\n this.syncFromStore();\n }\n\n disconnectedCallback() {\n this.items.forEach(item => { if (item.timer) clearTimeout(item.timer); });\n this.unsubscribe?.();\n }\n\n private syncFromStore() {\n const storeToasts = getToasts();\n const existingIds = new Set(this.items.map(i => i.data.id));\n const storeIds = new Set(storeToasts.map(t => t.id));\n\n // Remove items no longer in store (instant, no animation since dismiss() already fires animation)\n const kept = this.items.filter(i => storeIds.has(i.data.id));\n\n // Add new items\n const newItems: ToastItemState[] = storeToasts\n .filter(t => !existingIds.has(t.id))\n .map(data => {\n const state: ToastItemState = {\n data,\n exiting: false,\n timer: null,\n remaining: data.duration,\n startedAt: 0,\n paused: false,\n };\n if (data.duration > 0) {\n state.startedAt = Date.now();\n state.timer = setTimeout(() => this.dismissItem(data.id), data.duration);\n }\n return state;\n });\n\n this.items = [...kept, ...newItems];\n }\n\n private dismissItem(id: string) {\n this.items = this.items.map(i =>\n i.data.id === id ? { ...i, exiting: true, timer: null } : i\n );\n setTimeout(() => {\n this.items = this.items.filter(i => i.data.id !== id);\n toastService.dismiss(id);\n }, this.fadeOutMs);\n }\n\n private pauseItem(id: string) {\n this.items = this.items.map(i => {\n if (i.data.id !== id || i.paused || !i.timer) return i;\n clearTimeout(i.timer);\n const elapsed = Date.now() - i.startedAt;\n return { ...i, paused: true, timer: null, remaining: Math.max(0, i.remaining - elapsed) };\n });\n }\n\n private resumeItem(id: string) {\n this.items = this.items.map(i => {\n if (i.data.id !== id || !i.paused || i.remaining <= 0) return i;\n const timer = setTimeout(() => this.dismissItem(id), i.remaining);\n return { ...i, paused: false, timer, startedAt: Date.now() };\n });\n }\n\n private getPositionStyle(): Record<string, string> {\n const base: Record<string, string> = {\n position: 'fixed',\n zIndex: '9999',\n display: 'flex',\n flexDirection: 'column',\n gap: 'var(--dimension-space-075)',\n pointerEvents: 'none',\n padding: 'var(--dimension-space-100)',\n maxWidth: `var(${TOKEN_DEFAULTS.panelWidthMd})`,\n width: '100%',\n boxSizing: 'border-box',\n };\n switch (this.position) {\n case 'top-center':\n return { ...base, top: '0', left: '50%', transform: 'translateX(-50%)', alignItems: 'center' };\n case 'top-right':\n return { ...base, top: '0', right: '0', alignItems: 'flex-end' };\n case 'bottom-center':\n return { ...base, bottom: '0', left: '50%', transform: 'translateX(-50%)', alignItems: 'center' };\n case 'bottom-right':\n return { ...base, bottom: '0', right: '0', alignItems: 'flex-end' };\n }\n }\n\n render() {\n return (\n <Host style={{ display: 'contents' }}>\n <div\n class=\"toast-container\"\n role=\"region\"\n aria-label=\"Notifications\"\n aria-live=\"polite\"\n style={this.getPositionStyle()}\n >\n {this.items.map(item => (\n <div\n key={item.data.id}\n class={{ toast: true, 'toast--exit': item.exiting }}\n role={item.data.intent === 'negative' ? 'alert' : 'status'}\n style={{\n backgroundColor: INTENT_BG[item.data.intent],\n borderRadius: 'var(--dimension-radius-125)',\n boxShadow: 'var(--effect-elevation-elevated-floating)',\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--dimension-space-075)',\n padding: 'var(--dimension-space-075) var(--dimension-space-100)',\n minHeight: 'var(--dimension-size-400)',\n pointerEvents: 'auto',\n color: 'var(--color-foreground-on-bold-background-primary)',\n boxSizing: 'border-box',\n }}\n onMouseEnter={() => this.pauseItem(item.data.id)}\n onMouseLeave={() => this.resumeItem(item.data.id)}\n >\n <span class=\"text-body-medium\" style={{ flex: '1' }}>{item.data.message}</span>\n <button\n type=\"button\"\n class=\"toast-dismiss\"\n onClick={() => this.dismissItem(item.data.id)}\n aria-label=\"Dismiss\"\n >\n ×\n </button>\n </div>\n ))}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{p as t,H as o,c as n,h as l,a as i,t as d}from"./index.js";import{d as e}from"./p-8Nt92j1-.js";const r=()=>`.sc-ds-button-filled-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-button-filled: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-button-filled{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-button-filled:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-button-filled: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-button-filled{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-button-filled::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.sc-ds-button-filled-h{display:inline-flex;flex:0 0 auto;width:var(--dimension-size-400);height:var(--dimension-size-400);min-width:var(--dimension-size-400);min-height:var(--dimension-size-400);outline:none;--ds-button-filled-bg:var(--color-background-bold-brand);--ds-button-filled-fg:var(--color-foreground-faint-brand)}.button-filled.sc-ds-button-filled{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;padding:var(--dimension-space-075);border:none;border-radius:var(--dimension-radius-025);background-color:var(--ds-button-filled-bg);color:var(--ds-button-filled-fg);cursor:pointer;box-sizing:border-box;-webkit-user-select:none;user-select:none;position:relative;overflow:hidden;transition:background-color var(--effect-motion-short-2), color var(--effect-motion-short-2), transform var(--effect-motion-short-2)}.button-filled.sc-ds-button-filled::before,.button-filled.sc-ds-button-filled::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;transition:none}.button-filled.sc-ds-button-filled::before{z-index:1}.button-filled.sc-ds-button-filled::after{z-index:2}.button-filled.sc-ds-button-filled:hover:not(.button-filled--inactive)::before{background:color-mix(in oklch, var(--ds-button-filled-bg) 85%, var(--ds-button-filled-fg))}.button-filled.sc-ds-button-filled:active:not(.button-filled--inactive){transform:scale(var(--dimension-scale-subtle))}.button-filled.sc-ds-button-filled:active:not(.button-filled--inactive)::before{background:color-mix(in oklch, var(--ds-button-filled-bg) 80%, var(--ds-button-filled-fg))}.button-filled--inactive.sc-ds-button-filled{opacity:0.5;cursor:not-allowed;pointer-events:none}.button-filled__icon-wrap.sc-ds-button-filled{position:relative;width:var(--dimension-iconography-md);height:var(--dimension-iconography-md);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;z-index:2}.button-filled--intent-neutral.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-bold-neutral);--ds-button-filled-fg:var(--color-foreground-faint-neutral)}.button-filled--intent-brand.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-bold-brand);--ds-button-filled-fg:var(--color-foreground-faint-brand)}.button-filled--intent-ai.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-bold-ai);--ds-button-filled-fg:var(--color-foreground-faint-ai)}.button-filled--intent-negative.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-bold-negative);--ds-button-filled-fg:var(--color-foreground-faint-negative)}.button-filled--intent-warning.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-bold-warning);--ds-button-filled-fg:var(--color-foreground-faint-warning)}.button-filled--intent-caution.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-bold-caution);--ds-button-filled-fg:var(--color-foreground-faint-caution)}.button-filled--intent-positive.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-bold-positive);--ds-button-filled-fg:var(--color-foreground-faint-positive)}.button-filled--intent-guide.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-bold-guide);--ds-button-filled-fg:var(--color-foreground-faint-guide)}.button-filled--intent-walkthrough.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-bold-walkthrough);--ds-button-filled-fg:var(--color-foreground-faint-walkthrough)}.button-filled--contrast-strong.button-filled--intent-neutral.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-strong-neutral);--ds-button-filled-fg:var(--color-foreground-medium-neutral)}.button-filled--contrast-strong.button-filled--intent-brand.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-strong-brand);--ds-button-filled-fg:var(--color-foreground-medium-brand)}.button-filled--contrast-strong.button-filled--intent-ai.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-strong-ai);--ds-button-filled-fg:var(--color-foreground-medium-ai)}.button-filled--contrast-strong.button-filled--intent-negative.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-strong-negative);--ds-button-filled-fg:var(--color-foreground-medium-negative)}.button-filled--contrast-strong.button-filled--intent-warning.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-strong-warning);--ds-button-filled-fg:var(--color-foreground-medium-warning)}.button-filled--contrast-strong.button-filled--intent-caution.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-strong-caution);--ds-button-filled-fg:var(--color-foreground-medium-caution)}.button-filled--contrast-strong.button-filled--intent-positive.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-strong-positive);--ds-button-filled-fg:var(--color-foreground-medium-positive)}.button-filled--contrast-strong.button-filled--intent-guide.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-strong-guide);--ds-button-filled-fg:var(--color-foreground-medium-guide)}.button-filled--contrast-strong.button-filled--intent-walkthrough.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-strong-walkthrough);--ds-button-filled-fg:var(--color-foreground-medium-walkthrough)}.button-filled--contrast-medium.button-filled--intent-neutral.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-medium-neutral);--ds-button-filled-fg:var(--color-foreground-strong-neutral)}.button-filled--contrast-medium.button-filled--intent-brand.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-medium-brand);--ds-button-filled-fg:var(--color-foreground-strong-brand)}.button-filled--contrast-medium.button-filled--intent-ai.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-medium-ai);--ds-button-filled-fg:var(--color-foreground-strong-ai)}.button-filled--contrast-medium.button-filled--intent-negative.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-medium-negative);--ds-button-filled-fg:var(--color-foreground-strong-negative)}.button-filled--contrast-medium.button-filled--intent-warning.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-medium-warning);--ds-button-filled-fg:var(--color-foreground-strong-warning)}.button-filled--contrast-medium.button-filled--intent-caution.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-medium-caution);--ds-button-filled-fg:var(--color-foreground-strong-caution)}.button-filled--contrast-medium.button-filled--intent-positive.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-medium-positive);--ds-button-filled-fg:var(--color-foreground-strong-positive)}.button-filled--contrast-medium.button-filled--intent-guide.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-medium-guide);--ds-button-filled-fg:var(--color-foreground-strong-guide)}.button-filled--contrast-medium.button-filled--intent-walkthrough.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-medium-walkthrough);--ds-button-filled-fg:var(--color-foreground-strong-walkthrough)}.button-filled--contrast-faint.button-filled--intent-neutral.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-faint-neutral);--ds-button-filled-fg:var(--color-foreground-bold-neutral)}.button-filled--contrast-faint.button-filled--intent-brand.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-faint-brand);--ds-button-filled-fg:var(--color-foreground-bold-brand)}.button-filled--contrast-faint.button-filled--intent-ai.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-faint-ai);--ds-button-filled-fg:var(--color-foreground-bold-ai)}.button-filled--contrast-faint.button-filled--intent-negative.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-faint-negative);--ds-button-filled-fg:var(--color-foreground-bold-negative)}.button-filled--contrast-faint.button-filled--intent-warning.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-faint-warning);--ds-button-filled-fg:var(--color-foreground-bold-warning)}.button-filled--contrast-faint.button-filled--intent-caution.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-faint-caution);--ds-button-filled-fg:var(--color-foreground-bold-caution)}.button-filled--contrast-faint.button-filled--intent-positive.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-faint-positive);--ds-button-filled-fg:var(--color-foreground-bold-positive)}.button-filled--contrast-faint.button-filled--intent-guide.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-faint-guide);--ds-button-filled-fg:var(--color-foreground-bold-guide)}.button-filled--contrast-faint.button-filled--intent-walkthrough.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-faint-walkthrough);--ds-button-filled-fg:var(--color-foreground-bold-walkthrough)}`;const s=t(class t extends o{constructor(t){super();if(t!==false){this.__registerHost()}this.dsClick=n(this,"dsClick");this.icon="";this.intent="brand";this.contrast="bold";this.inactive=false;this.type="button";this.ariaLabel="action";this.buttonEl=null;this.handleClick=t=>{if(this.inactive)return;this.dsClick.emit(t)}}async setFocus(){this.buttonEl?.focus()}render(){const t={"button-filled":true,"ds-focus-ring-inset":true,"button-filled--inactive":this.inactive,[`button-filled--intent-${this.intent}`]:true,[`button-filled--contrast-${this.contrast}`]:this.contrast!=="bold"};return l(i,{key:"aec4966e1b9991fd889db25ae02f7fdcc52f553b",tabIndex:-1},l("button",{key:"fb98aafd42093830d8760bff073ad3c99e78e02b",ref:t=>{this.buttonEl=t??null},type:this.type,class:t,disabled:this.inactive,"aria-label":this.ariaLabel,onClick:this.handleClick},l("span",{key:"4122a00b653c487af06589b6d424b5ddf53f6dd1",class:"button-filled__icon-wrap"},l("ds-icon",{key:"e67d2d10871bac70bbb6e7dbe8f8603d817c8af3",name:this.icon,size:"md",color:"inherit"}))))}get el(){return this}static get style(){return r()}},[2,"ds-button-filled",{icon:[1],intent:[1],contrast:[1],inactive:[4],type:[1],ariaLabel:[1,"aria-label"],setFocus:[64]}]);function u(){if(typeof customElements==="undefined"){return}const t=["ds-button-filled","ds-icon"];t.forEach((t=>{switch(t){case"ds-button-filled":if(!customElements.get(d(t))){customElements.define(d(t),s)}break;case"ds-icon":if(!customElements.get(d(t))){e()}break}}))}u();export{s as B,u as d};
|
|
2
|
-
//# sourceMappingURL=p-BMQbEIrQ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["buttonFilledCss","ButtonFilled","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","icon","intent","contrast","inactive","type","ariaLabel","buttonEl","handleClick","event","dsClick","emit","setFocus","focus","render","cls","h","Host","key","tabIndex","ref","el","class","disabled","onClick","name","size","color"],"sources":["src/wc/components/ButtonFilled/ButtonFilled.css?tag=ds-button-filled&encapsulation=scoped","src/wc/components/ButtonFilled/ButtonFilled.tsx"],"sourcesContent":["@import '../../utils/focus-ring.css';\n\n:host {\n display: inline-flex;\n flex: 0 0 auto;\n width: var(--dimension-size-400);\n height: var(--dimension-size-400);\n min-width: var(--dimension-size-400);\n min-height: var(--dimension-size-400);\n outline: none;\n --ds-button-filled-bg: var(--color-background-bold-brand);\n --ds-button-filled-fg: var(--color-foreground-faint-brand);\n}\n\n.button-filled {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n padding: var(--dimension-space-075);\n border: none;\n border-radius: var(--dimension-radius-025);\n background-color: var(--ds-button-filled-bg);\n color: var(--ds-button-filled-fg);\n cursor: pointer;\n box-sizing: border-box;\n -webkit-user-select: none;\n user-select: none;\n position: relative;\n overflow: hidden;\n transition:\n background-color var(--effect-motion-short-2),\n color var(--effect-motion-short-2),\n transform var(--effect-motion-short-2);\n}\n\n.button-filled::before,\n.button-filled::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: inherit;\n background: transparent;\n pointer-events: none;\n transition: none;\n}\n\n.button-filled::before {\n z-index: 1;\n}\n\n.button-filled::after {\n z-index: 2;\n}\n\n.button-filled:hover:not(.button-filled--inactive)::before {\n background: color-mix(in oklch, var(--ds-button-filled-bg) 85%, var(--ds-button-filled-fg));\n}\n\n.button-filled:active:not(.button-filled--inactive) {\n transform: scale(var(--dimension-scale-subtle));\n}\n\n.button-filled:active:not(.button-filled--inactive)::before {\n background: color-mix(in oklch, var(--ds-button-filled-bg) 80%, var(--ds-button-filled-fg));\n}\n\n.button-filled--inactive {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n.button-filled__icon-wrap {\n position: relative;\n width: var(--dimension-iconography-md);\n height: var(--dimension-iconography-md);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n z-index: 2;\n}\n\n/* ── Intent + contrast (bold default) ─────────────────────────────────────── */\n\n.button-filled--intent-neutral {\n --ds-button-filled-bg: var(--color-background-bold-neutral);\n --ds-button-filled-fg: var(--color-foreground-faint-neutral);\n}\n\n.button-filled--intent-brand {\n --ds-button-filled-bg: var(--color-background-bold-brand);\n --ds-button-filled-fg: var(--color-foreground-faint-brand);\n}\n\n.button-filled--intent-ai {\n --ds-button-filled-bg: var(--color-background-bold-ai);\n --ds-button-filled-fg: var(--color-foreground-faint-ai);\n}\n\n.button-filled--intent-negative {\n --ds-button-filled-bg: var(--color-background-bold-negative);\n --ds-button-filled-fg: var(--color-foreground-faint-negative);\n}\n\n.button-filled--intent-warning {\n --ds-button-filled-bg: var(--color-background-bold-warning);\n --ds-button-filled-fg: var(--color-foreground-faint-warning);\n}\n\n.button-filled--intent-caution {\n --ds-button-filled-bg: var(--color-background-bold-caution);\n --ds-button-filled-fg: var(--color-foreground-faint-caution);\n}\n\n.button-filled--intent-positive {\n --ds-button-filled-bg: var(--color-background-bold-positive);\n --ds-button-filled-fg: var(--color-foreground-faint-positive);\n}\n\n.button-filled--intent-guide {\n --ds-button-filled-bg: var(--color-background-bold-guide);\n --ds-button-filled-fg: var(--color-foreground-faint-guide);\n}\n\n.button-filled--intent-walkthrough {\n --ds-button-filled-bg: var(--color-background-bold-walkthrough);\n --ds-button-filled-fg: var(--color-foreground-faint-walkthrough);\n}\n\n/* strong → medium fg */\n.button-filled--contrast-strong.button-filled--intent-neutral {\n --ds-button-filled-bg: var(--color-background-strong-neutral);\n --ds-button-filled-fg: var(--color-foreground-medium-neutral);\n}\n\n.button-filled--contrast-strong.button-filled--intent-brand {\n --ds-button-filled-bg: var(--color-background-strong-brand);\n --ds-button-filled-fg: var(--color-foreground-medium-brand);\n}\n\n.button-filled--contrast-strong.button-filled--intent-ai {\n --ds-button-filled-bg: var(--color-background-strong-ai);\n --ds-button-filled-fg: var(--color-foreground-medium-ai);\n}\n\n.button-filled--contrast-strong.button-filled--intent-negative {\n --ds-button-filled-bg: var(--color-background-strong-negative);\n --ds-button-filled-fg: var(--color-foreground-medium-negative);\n}\n\n.button-filled--contrast-strong.button-filled--intent-warning {\n --ds-button-filled-bg: var(--color-background-strong-warning);\n --ds-button-filled-fg: var(--color-foreground-medium-warning);\n}\n\n.button-filled--contrast-strong.button-filled--intent-caution {\n --ds-button-filled-bg: var(--color-background-strong-caution);\n --ds-button-filled-fg: var(--color-foreground-medium-caution);\n}\n\n.button-filled--contrast-strong.button-filled--intent-positive {\n --ds-button-filled-bg: var(--color-background-strong-positive);\n --ds-button-filled-fg: var(--color-foreground-medium-positive);\n}\n\n.button-filled--contrast-strong.button-filled--intent-guide {\n --ds-button-filled-bg: var(--color-background-strong-guide);\n --ds-button-filled-fg: var(--color-foreground-medium-guide);\n}\n\n.button-filled--contrast-strong.button-filled--intent-walkthrough {\n --ds-button-filled-bg: var(--color-background-strong-walkthrough);\n --ds-button-filled-fg: var(--color-foreground-medium-walkthrough);\n}\n\n/* medium → strong fg */\n.button-filled--contrast-medium.button-filled--intent-neutral {\n --ds-button-filled-bg: var(--color-background-medium-neutral);\n --ds-button-filled-fg: var(--color-foreground-strong-neutral);\n}\n\n.button-filled--contrast-medium.button-filled--intent-brand {\n --ds-button-filled-bg: var(--color-background-medium-brand);\n --ds-button-filled-fg: var(--color-foreground-strong-brand);\n}\n\n.button-filled--contrast-medium.button-filled--intent-ai {\n --ds-button-filled-bg: var(--color-background-medium-ai);\n --ds-button-filled-fg: var(--color-foreground-strong-ai);\n}\n\n.button-filled--contrast-medium.button-filled--intent-negative {\n --ds-button-filled-bg: var(--color-background-medium-negative);\n --ds-button-filled-fg: var(--color-foreground-strong-negative);\n}\n\n.button-filled--contrast-medium.button-filled--intent-warning {\n --ds-button-filled-bg: var(--color-background-medium-warning);\n --ds-button-filled-fg: var(--color-foreground-strong-warning);\n}\n\n.button-filled--contrast-medium.button-filled--intent-caution {\n --ds-button-filled-bg: var(--color-background-medium-caution);\n --ds-button-filled-fg: var(--color-foreground-strong-caution);\n}\n\n.button-filled--contrast-medium.button-filled--intent-positive {\n --ds-button-filled-bg: var(--color-background-medium-positive);\n --ds-button-filled-fg: var(--color-foreground-strong-positive);\n}\n\n.button-filled--contrast-medium.button-filled--intent-guide {\n --ds-button-filled-bg: var(--color-background-medium-guide);\n --ds-button-filled-fg: var(--color-foreground-strong-guide);\n}\n\n.button-filled--contrast-medium.button-filled--intent-walkthrough {\n --ds-button-filled-bg: var(--color-background-medium-walkthrough);\n --ds-button-filled-fg: var(--color-foreground-strong-walkthrough);\n}\n\n/* faint → bold fg */\n.button-filled--contrast-faint.button-filled--intent-neutral {\n --ds-button-filled-bg: var(--color-background-faint-neutral);\n --ds-button-filled-fg: var(--color-foreground-bold-neutral);\n}\n\n.button-filled--contrast-faint.button-filled--intent-brand {\n --ds-button-filled-bg: var(--color-background-faint-brand);\n --ds-button-filled-fg: var(--color-foreground-bold-brand);\n}\n\n.button-filled--contrast-faint.button-filled--intent-ai {\n --ds-button-filled-bg: var(--color-background-faint-ai);\n --ds-button-filled-fg: var(--color-foreground-bold-ai);\n}\n\n.button-filled--contrast-faint.button-filled--intent-negative {\n --ds-button-filled-bg: var(--color-background-faint-negative);\n --ds-button-filled-fg: var(--color-foreground-bold-negative);\n}\n\n.button-filled--contrast-faint.button-filled--intent-warning {\n --ds-button-filled-bg: var(--color-background-faint-warning);\n --ds-button-filled-fg: var(--color-foreground-bold-warning);\n}\n\n.button-filled--contrast-faint.button-filled--intent-caution {\n --ds-button-filled-bg: var(--color-background-faint-caution);\n --ds-button-filled-fg: var(--color-foreground-bold-caution);\n}\n\n.button-filled--contrast-faint.button-filled--intent-positive {\n --ds-button-filled-bg: var(--color-background-faint-positive);\n --ds-button-filled-fg: var(--color-foreground-bold-positive);\n}\n\n.button-filled--contrast-faint.button-filled--intent-guide {\n --ds-button-filled-bg: var(--color-background-faint-guide);\n --ds-button-filled-fg: var(--color-foreground-bold-guide);\n}\n\n.button-filled--contrast-faint.button-filled--intent-walkthrough {\n --ds-button-filled-bg: var(--color-background-faint-walkthrough);\n --ds-button-filled-fg: var(--color-foreground-bold-walkthrough);\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Method, Prop } from '@stencil/core';\n\nexport type ButtonFilledIntent =\n | 'neutral'\n | 'brand'\n | 'ai'\n | 'negative'\n | 'warning'\n | 'caution'\n | 'positive'\n | 'guide'\n | 'walkthrough';\n\nexport type ButtonFilledContrast = 'bold' | 'strong' | 'medium' | 'faint';\n\n@Component({\n tag: 'ds-button-filled',\n styleUrl: 'ButtonFilled.css',\n scoped: true,\n})\nexport class ButtonFilled {\n @Element() el!: HTMLElement;\n\n /** Icon name passed to <ds-icon>. */\n @Prop() icon: string = '';\n\n /** Semantic colour intent. */\n @Prop() intent: ButtonFilledIntent = 'brand';\n\n /**\n * Background fill weight. Foreground uses the paired contrast token:\n * bold → faint, strong → medium, medium → strong, faint → bold.\n */\n @Prop() contrast: ButtonFilledContrast = 'bold';\n\n /** Disables interaction. */\n @Prop() inactive: boolean = false;\n\n /** Native button type. */\n @Prop() type: 'button' | 'submit' | 'reset' = 'button';\n\n @Prop({ attribute: 'aria-label' }) ariaLabel: string = 'action';\n\n @Event() dsClick!: EventEmitter<MouseEvent>;\n\n private buttonEl: HTMLButtonElement | null = null;\n\n @Method()\n async setFocus() {\n this.buttonEl?.focus();\n }\n\n private handleClick = (event: MouseEvent) => {\n if (this.inactive) return;\n this.dsClick.emit(event);\n };\n\n render() {\n const cls: Record<string, boolean> = {\n 'button-filled': true,\n 'ds-focus-ring-inset': true,\n 'button-filled--inactive': this.inactive,\n [`button-filled--intent-${this.intent}`]: true,\n [`button-filled--contrast-${this.contrast}`]: this.contrast !== 'bold',\n };\n\n return (\n <Host tabIndex={-1}>\n <button\n ref={el => {\n this.buttonEl = el ?? null;\n }}\n type={this.type}\n class={cls}\n disabled={this.inactive}\n aria-label={this.ariaLabel}\n onClick={this.handleClick}\n >\n <span class=\"button-filled__icon-wrap\">\n <ds-icon name={this.icon} size=\"md\" color=\"inherit\" />\n </span>\n </button>\n </Host>\n );\n }\n}\n"],"mappings":"sGAAA,MAAMA,EAAkB,IAAM,4uT,MCoBjBC,EAAYC,EAAA,MAAAD,UAAAE,EALzB,WAAAC,CAAAC,G,2EASUC,KAAAC,KAAe,GAGfD,KAAAE,OAA6B,QAM7BF,KAAAG,SAAiC,OAGjCH,KAAAI,SAAoB,MAGpBJ,KAAAK,KAAsC,SAEXL,KAAAM,UAAoB,SAI/CN,KAAAO,SAAqC,KAOrCP,KAAAQ,YAAeC,IACrB,GAAIT,KAAKI,SAAU,OACnBJ,KAAKU,QAAQC,KAAKF,EAAM,CA+B3B,CArCC,cAAMG,GACJZ,KAAKO,UAAUM,O,CAQjB,MAAAC,GACE,MAAMC,EAA+B,CACnC,gBAAiB,KACjB,sBAAuB,KACvB,0BAA2Bf,KAAKI,SAChC,CAAC,yBAAyBJ,KAAKE,UAAW,KAC1C,CAAC,2BAA2BF,KAAKG,YAAaH,KAAKG,WAAa,QAGlE,OACEa,EAACC,EAAI,CAAAC,IAAA,2CAACC,UAAU,GACdH,EAAA,UAAAE,IAAA,2CACEE,IAAKC,IACHrB,KAAKO,SAAWc,GAAM,IAAI,EAE5BhB,KAAML,KAAKK,KACXiB,MAAOP,EACPQ,SAAUvB,KAAKI,SAAQ,aACXJ,KAAKM,UACjBkB,QAASxB,KAAKQ,aAEdQ,EAAA,QAAAE,IAAA,2CAAMI,MAAM,4BACVN,EAAA,WAAAE,IAAA,2CAASO,KAAMzB,KAAKC,KAAMyB,KAAK,KAAKC,MAAM,c","ignoreList":[]}
|