@material/web 2.4.2-nightly.fd6fe2a.0 → 2.5.1-nightly.70e259d.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/custom-elements.json +7148 -7166
- package/labs/aria/query-associated.d.ts +23 -0
- package/labs/aria/query-associated.js +36 -0
- package/labs/aria/query-associated.js.map +1 -0
- package/labs/aria/tabs/md-aria-tab.d.ts +11 -0
- package/labs/aria/tabs/md-aria-tab.js +8 -0
- package/labs/aria/tabs/md-aria-tab.js.map +1 -0
- package/labs/aria/tabs/md-aria-tablist.d.ts +11 -0
- package/labs/aria/tabs/md-aria-tablist.js +8 -0
- package/labs/aria/tabs/md-aria-tablist.js.map +1 -0
- package/labs/aria/tabs/md-aria-tabpanel.d.ts +11 -0
- package/labs/aria/tabs/md-aria-tabpanel.js +8 -0
- package/labs/aria/tabs/md-aria-tabpanel.js.map +1 -0
- package/labs/aria/tabs/tab.d.ts +33 -0
- package/labs/aria/tabs/tab.js +88 -0
- package/labs/aria/tabs/tab.js.map +1 -0
- package/labs/aria/tabs/tablist.d.ts +67 -0
- package/labs/aria/tabs/tablist.js +271 -0
- package/labs/aria/tabs/tablist.js.map +1 -0
- package/labs/aria/tabs/tabpanel.d.ts +26 -0
- package/labs/aria/tabs/tabpanel.js +53 -0
- package/labs/aria/tabs/tabpanel.js.map +1 -0
- package/labs/gb/components/appbar/_app-bar-tokens.scss +136 -0
- package/labs/gb/components/appbar/app-bar-element.d.ts +53 -0
- package/labs/gb/components/appbar/app-bar-element.js +144 -0
- package/labs/gb/components/appbar/app-bar-element.js.map +1 -0
- package/labs/gb/components/appbar/app-bar.css +4 -0
- package/labs/gb/components/appbar/app-bar.css.map +1 -0
- package/labs/gb/components/appbar/app-bar.cssresult.d.ts +3 -0
- package/labs/gb/components/appbar/app-bar.cssresult.js +14 -0
- package/labs/gb/components/appbar/app-bar.cssresult.js.map +1 -0
- package/labs/gb/components/appbar/app-bar.d.ts +71 -0
- package/labs/gb/components/appbar/app-bar.js +96 -0
- package/labs/gb/components/appbar/app-bar.js.map +1 -0
- package/labs/gb/components/appbar/app-bar.scss +167 -0
- package/labs/gb/components/appbar/md-gb-app-bar.d.ts +12 -0
- package/labs/gb/components/appbar/md-gb-app-bar.js +8 -0
- package/labs/gb/components/appbar/md-gb-app-bar.js.map +1 -0
- package/labs/gb/components/badge/_badge-tokens.scss +18 -0
- package/labs/gb/components/badge/badge-element.d.ts +15 -0
- package/labs/gb/components/badge/badge-element.js +49 -0
- package/labs/gb/components/badge/badge-element.js.map +1 -0
- package/labs/gb/components/badge/badge.css +4 -0
- package/labs/gb/components/badge/badge.css.map +1 -0
- package/labs/gb/components/badge/badge.cssresult.d.ts +3 -0
- package/labs/gb/components/badge/badge.cssresult.js +14 -0
- package/labs/gb/components/badge/badge.cssresult.js.map +1 -0
- package/labs/gb/components/badge/badge.d.ts +32 -0
- package/labs/gb/components/badge/badge.js +35 -0
- package/labs/gb/components/badge/badge.js.map +1 -0
- package/labs/gb/components/badge/badge.scss +49 -0
- package/labs/gb/components/badge/md-gb-badge.d.ts +12 -0
- package/labs/gb/components/badge/md-gb-badge.js +8 -0
- package/labs/gb/components/badge/md-gb-badge.js.map +1 -0
- package/labs/gb/components/button/_button-tokens.scss +2 -0
- package/labs/gb/components/button/{md-button.d.ts → button-element.d.ts} +22 -7
- package/labs/gb/components/button/{md-button.js → button-element.js} +38 -20
- package/labs/gb/components/button/button-element.js.map +1 -0
- package/labs/gb/components/button/button.css.map +1 -1
- package/labs/gb/components/button/md-gb-button.d.ts +12 -0
- package/labs/gb/components/button/md-gb-button.js +8 -0
- package/labs/gb/components/button/md-gb-button.js.map +1 -0
- package/labs/gb/components/card/_card-tokens.scss +2 -0
- package/labs/gb/components/card/{md-card.d.ts → card-element.d.ts} +12 -7
- package/labs/gb/components/card/{md-card.js → card-element.js} +21 -14
- package/labs/gb/components/card/card-element.js.map +1 -0
- package/labs/gb/components/card/card.css.map +1 -1
- package/labs/gb/components/card/md-gb-card.d.ts +12 -0
- package/labs/gb/components/card/md-gb-card.js +8 -0
- package/labs/gb/components/card/md-gb-card.js.map +1 -0
- package/labs/gb/components/checkbox/_checkbox-tokens.scss +2 -0
- package/labs/gb/components/checkbox/{md-checkbox.d.ts → checkbox-element.d.ts} +15 -7
- package/labs/gb/components/checkbox/{md-checkbox.js → checkbox-element.js} +26 -16
- package/labs/gb/components/checkbox/checkbox-element.js.map +1 -0
- package/labs/gb/components/checkbox/checkbox.css.map +1 -1
- package/labs/gb/components/checkbox/md-gb-checkbox.d.ts +12 -0
- package/labs/gb/components/checkbox/md-gb-checkbox.js +8 -0
- package/labs/gb/components/checkbox/md-gb-checkbox.js.map +1 -0
- package/labs/gb/components/chip/_chip-tokens.scss +167 -0
- package/labs/gb/components/chip/chip-element.d.ts +73 -0
- package/labs/gb/components/chip/chip-element.js +233 -0
- package/labs/gb/components/chip/chip-element.js.map +1 -0
- package/labs/gb/components/chip/chip.css +4 -0
- package/labs/gb/components/chip/chip.css.map +1 -0
- package/labs/gb/components/chip/chip.cssresult.d.ts +3 -0
- package/labs/gb/components/chip/chip.cssresult.js +14 -0
- package/labs/gb/components/chip/chip.cssresult.js.map +1 -0
- package/labs/gb/components/chip/chip.d.ts +77 -0
- package/labs/gb/components/chip/chip.js +99 -0
- package/labs/gb/components/chip/chip.js.map +1 -0
- package/labs/gb/components/chip/chip.scss +97 -0
- package/labs/gb/components/chip/md-gb-chip.d.ts +13 -0
- package/labs/gb/components/chip/md-gb-chip.js +9 -0
- package/labs/gb/components/chip/md-gb-chip.js.map +1 -0
- package/labs/gb/components/divider/_divider-tokens.scss +2 -0
- package/labs/gb/components/divider/{md-divider.d.ts → divider-element.d.ts} +5 -7
- package/labs/gb/components/divider/{md-divider.js → divider-element.js} +10 -10
- package/labs/gb/components/divider/divider-element.js.map +1 -0
- package/labs/gb/components/divider/divider.css.map +1 -1
- package/labs/gb/components/divider/md-gb-divider.d.ts +12 -0
- package/labs/gb/components/divider/md-gb-divider.js +8 -0
- package/labs/gb/components/divider/md-gb-divider.js.map +1 -0
- package/labs/gb/components/fab/_fab-tokens.scss +2 -0
- package/labs/gb/components/fab/fab-element.d.ts +31 -0
- package/labs/gb/components/fab/{md-fab.js → fab-element.js} +22 -11
- package/labs/gb/components/fab/fab-element.js.map +1 -0
- package/labs/gb/components/fab/fab.css.map +1 -1
- package/labs/gb/components/fab/md-gb-fab.d.ts +12 -0
- package/labs/gb/components/fab/md-gb-fab.js +8 -0
- package/labs/gb/components/fab/md-gb-fab.js.map +1 -0
- package/labs/gb/components/iconbutton/_icon-button-tokens.scss +2 -0
- package/labs/gb/components/iconbutton/{md-icon-button.d.ts → icon-button-element.d.ts} +15 -7
- package/labs/gb/components/iconbutton/{md-icon-button.js → icon-button-element.js} +30 -20
- package/labs/gb/components/iconbutton/icon-button-element.js.map +1 -0
- package/labs/gb/components/iconbutton/icon-button.css.map +1 -1
- package/labs/gb/components/iconbutton/md-gb-icon-button.d.ts +12 -0
- package/labs/gb/components/iconbutton/md-gb-icon-button.js +8 -0
- package/labs/gb/components/iconbutton/md-gb-icon-button.js.map +1 -0
- package/labs/gb/components/list/_list-tokens.scss +4 -0
- package/labs/gb/components/list/{md-list.d.ts → list-element.d.ts} +6 -7
- package/labs/gb/components/list/{md-list.js → list-element.js} +11 -10
- package/labs/gb/components/list/list-element.js.map +1 -0
- package/labs/gb/components/list/list-item-element.d.ts +77 -0
- package/labs/gb/components/list/{md-list-item.js → list-item-element.js} +48 -13
- package/labs/gb/components/list/list-item-element.js.map +1 -0
- package/labs/gb/components/list/list.css.map +1 -1
- package/labs/gb/components/list/md-gb-list-item.d.ts +12 -0
- package/labs/gb/components/list/md-gb-list-item.js +8 -0
- package/labs/gb/components/list/md-gb-list-item.js.map +1 -0
- package/labs/gb/components/list/md-gb-list.d.ts +12 -0
- package/labs/gb/components/list/md-gb-list.js +8 -0
- package/labs/gb/components/list/md-gb-list.js.map +1 -0
- package/labs/gb/components/menu/_menu-tokens.scss +4 -0
- package/labs/gb/components/menu/md-gb-menu-group.d.ts +12 -0
- package/labs/gb/components/menu/md-gb-menu-group.js +8 -0
- package/labs/gb/components/menu/md-gb-menu-group.js.map +1 -0
- package/labs/gb/components/menu/md-gb-menu-item.d.ts +12 -0
- package/labs/gb/components/menu/md-gb-menu-item.js +8 -0
- package/labs/gb/components/menu/md-gb-menu-item.js.map +1 -0
- package/labs/gb/components/menu/md-gb-menu.d.ts +12 -0
- package/labs/gb/components/menu/md-gb-menu.js +8 -0
- package/labs/gb/components/menu/md-gb-menu.js.map +1 -0
- package/labs/gb/components/menu/{md-menu.d.ts → menu-element.d.ts} +11 -7
- package/labs/gb/components/menu/{md-menu.js → menu-element.js} +16 -10
- package/labs/gb/components/menu/menu-element.js.map +1 -0
- package/labs/gb/components/menu/{md-menu-group.d.ts → menu-group-element.d.ts} +3 -6
- package/labs/gb/components/menu/{md-menu-group.js → menu-group-element.js} +11 -11
- package/labs/gb/components/menu/menu-group-element.js.map +1 -0
- package/labs/gb/components/menu/menu-item-element.d.ts +56 -0
- package/labs/gb/components/menu/{md-menu-item.js → menu-item-element.js} +41 -13
- package/labs/gb/components/menu/menu-item-element.js.map +1 -0
- package/labs/gb/components/menu/menu.css.map +1 -1
- package/labs/gb/components/menu/menu.js +1 -1
- package/labs/gb/components/menu/menu.js.map +1 -1
- package/labs/gb/components/radio/_radio-tokens.scss +2 -0
- package/labs/gb/components/radio/md-gb-radio.d.ts +12 -0
- package/labs/gb/components/radio/md-gb-radio.js +8 -0
- package/labs/gb/components/radio/md-gb-radio.js.map +1 -0
- package/labs/gb/components/radio/{md-radio.d.ts → radio-element.d.ts} +10 -7
- package/labs/gb/components/radio/{md-radio.js → radio-element.js} +19 -14
- package/labs/gb/components/radio/radio-element.js.map +1 -0
- package/labs/gb/components/radio/radio.css.map +1 -1
- package/labs/gb/components/splitbutton/_split-button-tokens.scss +4 -0
- package/labs/gb/components/splitbutton/md-gb-split-button.d.ts +12 -0
- package/labs/gb/components/splitbutton/md-gb-split-button.js +8 -0
- package/labs/gb/components/splitbutton/md-gb-split-button.js.map +1 -0
- package/labs/gb/components/splitbutton/split-button-element.d.ts +33 -0
- package/labs/gb/components/splitbutton/{md-split-button.js → split-button-element.js} +21 -12
- package/labs/gb/components/splitbutton/split-button-element.js.map +1 -0
- package/labs/gb/components/splitbutton/split-button.css.map +1 -1
- package/labs/gb/components/splitbutton/split-button.d.ts +4 -4
- package/labs/gb/components/splitbutton/split-button.js +4 -4
- package/labs/gb/components/splitbutton/split-button.js.map +1 -1
- package/labs/gb/components/switch/_switch-tokens.scss +2 -0
- package/labs/gb/components/switch/md-gb-switch.d.ts +12 -0
- package/labs/gb/components/switch/md-gb-switch.js +8 -0
- package/labs/gb/components/switch/md-gb-switch.js.map +1 -0
- package/labs/gb/components/switch/{md-switch.d.ts → switch-element.d.ts} +19 -7
- package/labs/gb/components/switch/{md-switch.js → switch-element.js} +28 -14
- package/labs/gb/components/switch/switch-element.js.map +1 -0
- package/labs/gb/components/switch/switch.css.map +1 -1
- package/labs/gb/styles/adopt-styles.js +6 -1
- package/labs/gb/styles/adopt-styles.js.map +1 -1
- package/labs/gb/styles/icon/{md-icon.d.ts → icon-element.d.ts} +1 -7
- package/labs/gb/styles/icon/{md-icon.js → icon-element.js} +8 -10
- package/labs/gb/styles/icon/icon-element.js.map +1 -0
- package/labs/gb/styles/icon/md-gb-icon.d.ts +12 -0
- package/labs/gb/styles/icon/md-gb-icon.js +8 -0
- package/labs/gb/styles/icon/md-gb-icon.js.map +1 -0
- package/package.json +3 -3
- package/labs/gb/components/button/md-button.js.map +0 -1
- package/labs/gb/components/card/md-card.js.map +0 -1
- package/labs/gb/components/checkbox/md-checkbox.js.map +0 -1
- package/labs/gb/components/divider/md-divider.js.map +0 -1
- package/labs/gb/components/fab/md-fab.d.ts +0 -22
- package/labs/gb/components/fab/md-fab.js.map +0 -1
- package/labs/gb/components/iconbutton/md-icon-button.js.map +0 -1
- package/labs/gb/components/list/md-list-item.d.ts +0 -44
- package/labs/gb/components/list/md-list-item.js.map +0 -1
- package/labs/gb/components/list/md-list.js.map +0 -1
- package/labs/gb/components/menu/md-menu-group.js.map +0 -1
- package/labs/gb/components/menu/md-menu-item.d.ts +0 -30
- package/labs/gb/components/menu/md-menu-item.js.map +0 -1
- package/labs/gb/components/menu/md-menu.js.map +0 -1
- package/labs/gb/components/radio/md-radio.js.map +0 -1
- package/labs/gb/components/splitbutton/md-split-button.d.ts +0 -26
- package/labs/gb/components/splitbutton/md-split-button.js.map +0 -1
- package/labs/gb/components/switch/md-switch.js.map +0 -1
- package/labs/gb/styles/icon/md-icon.js.map +0 -1
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2026 Google LLC
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
//
|
|
5
|
+
|
|
6
|
+
// Auto-generated by cascade_tokens
|
|
7
|
+
// Add `// EDIT:` comments for manual adjustments.
|
|
8
|
+
//
|
|
9
|
+
// --prefix=md.comp.chip
|
|
10
|
+
// --states="hovered|focused|pressed|dragged,:unselected|selected,:filter|input,with-leading-icon|with-avatar,with-trailing-icon,disabled"
|
|
11
|
+
// --exclude=motion,state-layer,indicator
|
|
12
|
+
|
|
13
|
+
@mixin root {
|
|
14
|
+
// LINT.IfChange
|
|
15
|
+
--avatar-opacity: unset;
|
|
16
|
+
// md.comp.chip.avatar.shape
|
|
17
|
+
--avatar-shape: var(--md-sys-shape-corner-full);
|
|
18
|
+
// md.comp.chip.avatar.size
|
|
19
|
+
--avatar-size: 24px;
|
|
20
|
+
--container-color: unset;
|
|
21
|
+
// md.comp.chip.container.elevation
|
|
22
|
+
--container-elevation: var(--md-sys-elevation-shadow-0);
|
|
23
|
+
// --container-opacity: unset; // EDIT: unused
|
|
24
|
+
// md.comp.chip.gap.horizontal
|
|
25
|
+
--gap-horizontal: var(--md-sys-space-50);
|
|
26
|
+
// md.comp.chip.height
|
|
27
|
+
--height: 32px;
|
|
28
|
+
// md.comp.chip.label-text
|
|
29
|
+
--label-text: var(--md-sys-typescale-label-lg);
|
|
30
|
+
// ┌┄ md.comp.chip.label-text
|
|
31
|
+
--label-text-axes: var(--md-sys-typescale-label-lg-axes);
|
|
32
|
+
// md.comp.chip.unselected.label-text.color
|
|
33
|
+
--label-text-color: var(--md-sys-color-on-surface-variant);
|
|
34
|
+
// --label-text-opacity: unset; // EDIT: unused
|
|
35
|
+
// ┌┄ md.comp.chip.label-text
|
|
36
|
+
--label-text-tracking: var(--md-sys-typescale-label-lg-tracking);
|
|
37
|
+
// md.comp.chip.unselected.leading-icon.color
|
|
38
|
+
--leading-icon-color: var(--md-sys-color-on-surface-variant);
|
|
39
|
+
// --leading-icon-opacity: unset; // EDIT: unused
|
|
40
|
+
// md.comp.chip.leading-icon.size
|
|
41
|
+
--leading-icon-size: 18px;
|
|
42
|
+
// md.comp.chip.unselected.outline.color
|
|
43
|
+
--outline-color: var(--md-sys-color-outline-variant);
|
|
44
|
+
// --outline-opacity: unset; // EDIT: unused
|
|
45
|
+
// md.comp.chip.unselected.outline.width
|
|
46
|
+
--outline-width: 1px;
|
|
47
|
+
// md.comp.chip.padding.bottom
|
|
48
|
+
--padding-bottom: var(--md-sys-space-75);
|
|
49
|
+
// ┌ md.comp.chip.filter.padding.leading
|
|
50
|
+
--padding-leading: var(--md-sys-space-200);
|
|
51
|
+
// md.comp.chip.padding.top
|
|
52
|
+
--padding-top: var(--md-sys-space-75);
|
|
53
|
+
// ┌ md.comp.chip.filter.padding.trailing
|
|
54
|
+
--padding-trailing: var(--md-sys-space-200);
|
|
55
|
+
// md.comp.chip.unselected.shape
|
|
56
|
+
--shape: var(--md-sys-shape-corner-md);
|
|
57
|
+
// md.comp.chip.unselected.trailing-icon.color
|
|
58
|
+
--trailing-icon-color: var(--md-sys-color-on-surface-variant);
|
|
59
|
+
// --trailing-icon-opacity: unset; // EDIT: unused
|
|
60
|
+
// md.comp.chip.trailing-icon.size
|
|
61
|
+
--trailing-icon-size: 18px;
|
|
62
|
+
// LINT.ThenChange(md-gb-chip.ts) sync with `@cssprop` jsdoc tags
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@mixin pressed {
|
|
66
|
+
// md.comp.chip.pressed.shape
|
|
67
|
+
--shape: var(--md-sys-shape-corner-sm);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@mixin dragged {
|
|
71
|
+
// md.comp.chip.dragged.container.elevation
|
|
72
|
+
--container-elevation: var(--md-sys-elevation-shadow-4);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@mixin selected {
|
|
76
|
+
// md.comp.chip.selected.container.color
|
|
77
|
+
--container-color: var(--md-sys-color-secondary-container);
|
|
78
|
+
// md.comp.chip.selected.label-text.color
|
|
79
|
+
--label-text-color: var(--md-sys-color-on-secondary-container);
|
|
80
|
+
// md.comp.chip.selected.leading-icon.color
|
|
81
|
+
--leading-icon-color: var(--md-sys-color-on-secondary-container);
|
|
82
|
+
// md.comp.chip.selected.outline.width
|
|
83
|
+
--outline-width: 0px;
|
|
84
|
+
// md.comp.chip.selected.shape
|
|
85
|
+
--shape: var(--md-sys-shape-corner-full);
|
|
86
|
+
// md.comp.chip.selected.trailing-icon.color
|
|
87
|
+
--trailing-icon-color: var(--md-sys-color-on-secondary-container);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
@mixin input {
|
|
91
|
+
// md.comp.chip.input.padding.leading
|
|
92
|
+
--padding-leading: var(--md-sys-space-150);
|
|
93
|
+
// md.comp.chip.input.padding.trailing
|
|
94
|
+
--padding-trailing: var(--md-sys-space-150);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@mixin with-leading-icon {
|
|
98
|
+
// md.comp.chip.with-leading-icon.padding.leading
|
|
99
|
+
--padding-leading: var(--md-sys-space-100);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
@mixin with-avatar {
|
|
103
|
+
// md.comp.chip.with-avatar.padding.leading
|
|
104
|
+
--padding-leading: var(--md-sys-space-50);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
@mixin with-trailing-icon {
|
|
108
|
+
// md.comp.chip.with-trailing-icon.padding.trailing
|
|
109
|
+
--padding-trailing: var(--md-sys-space-100);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
@mixin disabled {
|
|
113
|
+
// md.comp.chip.disabled.avatar.opacity
|
|
114
|
+
--avatar-opacity: 0.38;
|
|
115
|
+
// ┌ md.comp.chip.disabled.label-text.opacity
|
|
116
|
+
// md.comp.chip.disabled.label-text.color
|
|
117
|
+
--label-text-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.38);
|
|
118
|
+
// ┌ md.comp.chip.disabled.leading-icon.opacity
|
|
119
|
+
// md.comp.chip.disabled.leading-icon.color
|
|
120
|
+
--leading-icon-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.38);
|
|
121
|
+
// ┌ md.comp.chip.unselected.disabled.outline.opacity
|
|
122
|
+
// md.comp.chip.unselected.disabled.outline.color
|
|
123
|
+
--outline-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.1);
|
|
124
|
+
// ┌ md.comp.chip.disabled.trailing-icon.opacity
|
|
125
|
+
// md.comp.chip.disabled.trailing-icon.color
|
|
126
|
+
--trailing-icon-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.38);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
@mixin disabled-selected {
|
|
130
|
+
// ┌ md.comp.chip.selected.disabled.container.opacity
|
|
131
|
+
// md.comp.chip.selected.disabled.container.color
|
|
132
|
+
--container-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.12);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// EDIT: Manual adjustments
|
|
136
|
+
@mixin filter {
|
|
137
|
+
// Hoisted to root, so empty here to satisfy chip.scss mapping
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
@mixin elevated {
|
|
141
|
+
--container-color: var(--md-sys-color-surface-container-low);
|
|
142
|
+
--container-elevation: var(--md-sys-elevation-shadow-1);
|
|
143
|
+
--label-text-color: var(--md-sys-color-on-surface);
|
|
144
|
+
--outline-width: 0;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
@mixin filled {
|
|
148
|
+
--container-color: var(--md-sys-color-surface-container);
|
|
149
|
+
--container-elevation: var(--md-sys-elevation-shadow-0);
|
|
150
|
+
--label-text-color: var(--md-sys-color-on-surface);
|
|
151
|
+
--outline-width: 0;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
@mixin tonal {
|
|
155
|
+
--container-color: var(--md-sys-color-secondary-container);
|
|
156
|
+
--container-elevation: var(--md-sys-elevation-shadow-0);
|
|
157
|
+
--label-text-color: var(--md-sys-color-on-secondary-container);
|
|
158
|
+
--outline-width: 0;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
@mixin outlined {
|
|
162
|
+
--container-color: transparent;
|
|
163
|
+
--container-elevation: var(--md-sys-elevation-shadow-0);
|
|
164
|
+
--label-text-color: var(--md-sys-color-on-surface);
|
|
165
|
+
--outline-color: var(--md-sys-color-outline);
|
|
166
|
+
--outline-width: 1px;
|
|
167
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { CSSResultOrNative, LitElement } from 'lit';
|
|
7
|
+
import { type ChipColor, type ChipType } from './chip.js';
|
|
8
|
+
/**
|
|
9
|
+
* A Material Design Expressive Chip component (`md-gb-chip`).
|
|
10
|
+
*
|
|
11
|
+
* @slot - Used to display the chip label text.
|
|
12
|
+
* @slot icon - Used to display an optional leading icon, checkmark, or avatar.
|
|
13
|
+
* @slot remove-icon - Used to display the trailing remove button icon when `removable="true"`.
|
|
14
|
+
* @fires {Event} remove - Fired when the remove action is triggered on a removable chip. --bubbles --composed
|
|
15
|
+
* @fires {Event} change - Fired when a filter/toggle chip's selection state changes. --bubbles
|
|
16
|
+
* @fires {InputEvent} input - Fired when a filter/toggle chip's selection state changes. --bubbles --composed
|
|
17
|
+
* @csspart chip - The root container element.
|
|
18
|
+
* @cssprop --avatar-opacity
|
|
19
|
+
* @cssprop --avatar-shape
|
|
20
|
+
* @cssprop --avatar-size
|
|
21
|
+
* @cssprop --container-color
|
|
22
|
+
* @cssprop --container-elevation
|
|
23
|
+
* @cssprop --container-opacity
|
|
24
|
+
* @cssprop --gap-horizontal
|
|
25
|
+
* @cssprop --height
|
|
26
|
+
* @cssprop --label-text
|
|
27
|
+
* @cssprop --label-text-color
|
|
28
|
+
* @cssprop --label-text-opacity
|
|
29
|
+
* @cssprop --leading-icon-color
|
|
30
|
+
* @cssprop --leading-icon-opacity
|
|
31
|
+
* @cssprop --leading-icon-size
|
|
32
|
+
* @cssprop --outline-color
|
|
33
|
+
* @cssprop --outline-opacity
|
|
34
|
+
* @cssprop --outline-width
|
|
35
|
+
* @cssprop --padding-bottom
|
|
36
|
+
* @cssprop --padding-leading
|
|
37
|
+
* @cssprop --padding-top
|
|
38
|
+
* @cssprop --padding-trailing
|
|
39
|
+
* @cssprop --shape
|
|
40
|
+
* @cssprop --trailing-icon-color
|
|
41
|
+
* @cssprop --trailing-icon-opacity
|
|
42
|
+
* @cssprop --trailing-icon-size
|
|
43
|
+
*/
|
|
44
|
+
export declare class ChipElement extends LitElement {
|
|
45
|
+
static styles: CSSResultOrNative[];
|
|
46
|
+
/** The color emphasis of the chip. Defaults to `outlined`. */
|
|
47
|
+
color: ChipColor;
|
|
48
|
+
/** The functional behavior type of the chip (`action`, `filter`, `toggle`, `link`). */
|
|
49
|
+
type: ChipType;
|
|
50
|
+
/** Whether the filter or toggle chip is selected. */
|
|
51
|
+
selected: boolean;
|
|
52
|
+
/** Whether the chip is removable. */
|
|
53
|
+
removable: boolean;
|
|
54
|
+
/** Whether the chip is disabled. */
|
|
55
|
+
disabled: boolean;
|
|
56
|
+
/** Whether the chip is soft-disabled (`aria-disabled="true"` while preserving focusability). */
|
|
57
|
+
softDisabled: boolean;
|
|
58
|
+
/** The URL destination if `type="link"` or if `href` is set. */
|
|
59
|
+
href: string;
|
|
60
|
+
/** Where to display the linked `href` URL for a link chip. */
|
|
61
|
+
target: '_blank' | '_parent' | '_self' | '_top' | '';
|
|
62
|
+
private hasLeadingIcon;
|
|
63
|
+
private hasAvatar;
|
|
64
|
+
private hasRemoveIcon;
|
|
65
|
+
protected render(): import("lit-html").TemplateResult<1>;
|
|
66
|
+
private renderContent;
|
|
67
|
+
private renderLeadingIcon;
|
|
68
|
+
private renderRemoveButton;
|
|
69
|
+
private handleIconSlotChange;
|
|
70
|
+
private handleRemoveIconSlotChange;
|
|
71
|
+
private handleChange;
|
|
72
|
+
private handleRemove;
|
|
73
|
+
}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { __decorate } from "tslib";
|
|
7
|
+
import { css, html, LitElement, nothing } from 'lit';
|
|
8
|
+
import { property, state } from 'lit/decorators.js';
|
|
9
|
+
import { redispatchEvent } from '../../../../internal/events/redispatch-event.js';
|
|
10
|
+
import focusRingStyles from '../focus/focus-ring.cssresult.js';
|
|
11
|
+
import rippleStyles from '../ripple/ripple.cssresult.js';
|
|
12
|
+
import { chip } from './chip.js';
|
|
13
|
+
import { styles as chipStyles } from './chip.cssresult.js';
|
|
14
|
+
/**
|
|
15
|
+
* A Material Design Expressive Chip component (`md-gb-chip`).
|
|
16
|
+
*
|
|
17
|
+
* @slot - Used to display the chip label text.
|
|
18
|
+
* @slot icon - Used to display an optional leading icon, checkmark, or avatar.
|
|
19
|
+
* @slot remove-icon - Used to display the trailing remove button icon when `removable="true"`.
|
|
20
|
+
* @fires {Event} remove - Fired when the remove action is triggered on a removable chip. --bubbles --composed
|
|
21
|
+
* @fires {Event} change - Fired when a filter/toggle chip's selection state changes. --bubbles
|
|
22
|
+
* @fires {InputEvent} input - Fired when a filter/toggle chip's selection state changes. --bubbles --composed
|
|
23
|
+
* @csspart chip - The root container element.
|
|
24
|
+
* @cssprop --avatar-opacity
|
|
25
|
+
* @cssprop --avatar-shape
|
|
26
|
+
* @cssprop --avatar-size
|
|
27
|
+
* @cssprop --container-color
|
|
28
|
+
* @cssprop --container-elevation
|
|
29
|
+
* @cssprop --container-opacity
|
|
30
|
+
* @cssprop --gap-horizontal
|
|
31
|
+
* @cssprop --height
|
|
32
|
+
* @cssprop --label-text
|
|
33
|
+
* @cssprop --label-text-color
|
|
34
|
+
* @cssprop --label-text-opacity
|
|
35
|
+
* @cssprop --leading-icon-color
|
|
36
|
+
* @cssprop --leading-icon-opacity
|
|
37
|
+
* @cssprop --leading-icon-size
|
|
38
|
+
* @cssprop --outline-color
|
|
39
|
+
* @cssprop --outline-opacity
|
|
40
|
+
* @cssprop --outline-width
|
|
41
|
+
* @cssprop --padding-bottom
|
|
42
|
+
* @cssprop --padding-leading
|
|
43
|
+
* @cssprop --padding-top
|
|
44
|
+
* @cssprop --padding-trailing
|
|
45
|
+
* @cssprop --shape
|
|
46
|
+
* @cssprop --trailing-icon-color
|
|
47
|
+
* @cssprop --trailing-icon-opacity
|
|
48
|
+
* @cssprop --trailing-icon-size
|
|
49
|
+
*/
|
|
50
|
+
export class ChipElement extends LitElement {
|
|
51
|
+
constructor() {
|
|
52
|
+
super(...arguments);
|
|
53
|
+
/** The color emphasis of the chip. Defaults to `outlined`. */
|
|
54
|
+
this.color = 'outlined';
|
|
55
|
+
/** The functional behavior type of the chip (`action`, `filter`, `toggle`, `link`). */
|
|
56
|
+
this.type = 'action';
|
|
57
|
+
/** Whether the filter or toggle chip is selected. */
|
|
58
|
+
this.selected = false;
|
|
59
|
+
/** Whether the chip is removable. */
|
|
60
|
+
this.removable = false;
|
|
61
|
+
/** Whether the chip is disabled. */
|
|
62
|
+
this.disabled = false;
|
|
63
|
+
/** Whether the chip is soft-disabled (`aria-disabled="true"` while preserving focusability). */
|
|
64
|
+
this.softDisabled = false;
|
|
65
|
+
/** The URL destination if `type="link"` or if `href` is set. */
|
|
66
|
+
this.href = '';
|
|
67
|
+
/** Where to display the linked `href` URL for a link chip. */
|
|
68
|
+
this.target = '';
|
|
69
|
+
this.hasLeadingIcon = false;
|
|
70
|
+
this.hasAvatar = false;
|
|
71
|
+
this.hasRemoveIcon = false;
|
|
72
|
+
}
|
|
73
|
+
render() {
|
|
74
|
+
const isFilterSelected = (this.type === 'filter' || this.type === 'toggle') && this.selected;
|
|
75
|
+
const withLeadingIcon = this.hasLeadingIcon || isFilterSelected;
|
|
76
|
+
const withAvatar = this.hasAvatar;
|
|
77
|
+
const chipClasses = chip({
|
|
78
|
+
color: this.color,
|
|
79
|
+
type: this.href ? 'link' : this.type,
|
|
80
|
+
selected: this.selected,
|
|
81
|
+
removable: this.removable,
|
|
82
|
+
disabled: this.softDisabled || this.disabled,
|
|
83
|
+
withLeadingIcon: withLeadingIcon && !withAvatar,
|
|
84
|
+
withAvatar,
|
|
85
|
+
withTrailingIcon: this.removable || this.hasRemoveIcon,
|
|
86
|
+
});
|
|
87
|
+
if (this.href || this.type === 'link') {
|
|
88
|
+
return html `<a
|
|
89
|
+
part="chip"
|
|
90
|
+
class="${chipClasses}"
|
|
91
|
+
href=${this.href}
|
|
92
|
+
target=${this.target ||
|
|
93
|
+
nothing}
|
|
94
|
+
aria-disabled=${this.disabled || this.softDisabled ? 'true' : nothing}
|
|
95
|
+
tabindex=${this.disabled && !this.softDisabled ? -1 : nothing}>
|
|
96
|
+
${this.renderContent(withLeadingIcon, isFilterSelected)}
|
|
97
|
+
</a>`;
|
|
98
|
+
}
|
|
99
|
+
if (this.removable) {
|
|
100
|
+
return html `<div
|
|
101
|
+
part="chip"
|
|
102
|
+
class="${chipClasses}"
|
|
103
|
+
role="row"
|
|
104
|
+
aria-pressed=${this.type === 'filter' || this.type === 'toggle'
|
|
105
|
+
? (this.selected ? 'true' : 'false')
|
|
106
|
+
: nothing}
|
|
107
|
+
@change=${this.handleChange}>
|
|
108
|
+
<button
|
|
109
|
+
class="chip-action focus-ring-target"
|
|
110
|
+
type="button"
|
|
111
|
+
?disabled=${this.disabled}
|
|
112
|
+
aria-disabled=${this.softDisabled ? 'true' : nothing}>
|
|
113
|
+
${this.renderContent(withLeadingIcon, isFilterSelected)}
|
|
114
|
+
</button>
|
|
115
|
+
${this.renderRemoveButton()}
|
|
116
|
+
</div>`;
|
|
117
|
+
}
|
|
118
|
+
return html `<button
|
|
119
|
+
part="chip"
|
|
120
|
+
class="${chipClasses}"
|
|
121
|
+
type="button"
|
|
122
|
+
?disabled=${this.disabled}
|
|
123
|
+
aria-disabled=${this.softDisabled ? 'true' : nothing}
|
|
124
|
+
aria-pressed=${this.type === 'filter' || this.type === 'toggle'
|
|
125
|
+
? (this.selected ? 'true' : 'false')
|
|
126
|
+
: nothing}
|
|
127
|
+
@change=${this.handleChange}>
|
|
128
|
+
${this.renderContent(withLeadingIcon, isFilterSelected)}
|
|
129
|
+
</button>`;
|
|
130
|
+
}
|
|
131
|
+
renderContent(withLeadingIcon, isFilterSelected) {
|
|
132
|
+
return html `
|
|
133
|
+
${this.renderLeadingIcon(withLeadingIcon, isFilterSelected)}
|
|
134
|
+
<slot></slot>
|
|
135
|
+
`;
|
|
136
|
+
}
|
|
137
|
+
renderLeadingIcon(withLeadingIcon, isFilterSelected) {
|
|
138
|
+
return html `<span
|
|
139
|
+
class="chip-icon"
|
|
140
|
+
style="${withLeadingIcon ? '' : 'display: none;'}">
|
|
141
|
+
<slot name="icon" @slotchange=${this.handleIconSlotChange}>
|
|
142
|
+
${isFilterSelected ? html `✓` : nothing}
|
|
143
|
+
</slot>
|
|
144
|
+
</span>`;
|
|
145
|
+
}
|
|
146
|
+
renderRemoveButton() {
|
|
147
|
+
return html `<button
|
|
148
|
+
class="chip-remove focus-ring-outer"
|
|
149
|
+
type="button"
|
|
150
|
+
aria-label="Remove"
|
|
151
|
+
?disabled=${this.disabled}
|
|
152
|
+
aria-disabled=${this.softDisabled ? 'true' : nothing}
|
|
153
|
+
@click=${this.handleRemove}>
|
|
154
|
+
<slot
|
|
155
|
+
name="remove-icon"
|
|
156
|
+
@slotchange=${this.handleRemoveIconSlotChange}
|
|
157
|
+
>✕</slot
|
|
158
|
+
>
|
|
159
|
+
</button>`;
|
|
160
|
+
}
|
|
161
|
+
handleIconSlotChange(event) {
|
|
162
|
+
const slot = event.target;
|
|
163
|
+
const elements = slot.assignedElements({ flatten: true });
|
|
164
|
+
this.hasLeadingIcon = elements.length > 0;
|
|
165
|
+
this.hasAvatar = elements.some((el) => el.classList.contains('chip-avatar'));
|
|
166
|
+
}
|
|
167
|
+
handleRemoveIconSlotChange(event) {
|
|
168
|
+
const slot = event.target;
|
|
169
|
+
this.hasRemoveIcon = slot.assignedNodes({ flatten: true }).length > 0;
|
|
170
|
+
}
|
|
171
|
+
handleChange(event) {
|
|
172
|
+
this.selected = event.target.ariaPressed === 'true';
|
|
173
|
+
redispatchEvent(this, event);
|
|
174
|
+
}
|
|
175
|
+
handleRemove(event) {
|
|
176
|
+
event.stopPropagation();
|
|
177
|
+
if (this.disabled || this.softDisabled)
|
|
178
|
+
return;
|
|
179
|
+
this.dispatchEvent(new Event('remove', { bubbles: true, composed: true }));
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
ChipElement.styles = [
|
|
183
|
+
focusRingStyles,
|
|
184
|
+
rippleStyles,
|
|
185
|
+
chipStyles,
|
|
186
|
+
css `
|
|
187
|
+
:host {
|
|
188
|
+
display: inline-flex;
|
|
189
|
+
vertical-align: middle;
|
|
190
|
+
}
|
|
191
|
+
.chip {
|
|
192
|
+
flex: 1;
|
|
193
|
+
}
|
|
194
|
+
.chip-icon {
|
|
195
|
+
display: inline-flex;
|
|
196
|
+
align-items: center;
|
|
197
|
+
}
|
|
198
|
+
`,
|
|
199
|
+
];
|
|
200
|
+
__decorate([
|
|
201
|
+
property()
|
|
202
|
+
], ChipElement.prototype, "color", void 0);
|
|
203
|
+
__decorate([
|
|
204
|
+
property()
|
|
205
|
+
], ChipElement.prototype, "type", void 0);
|
|
206
|
+
__decorate([
|
|
207
|
+
property({ type: Boolean, reflect: true })
|
|
208
|
+
], ChipElement.prototype, "selected", void 0);
|
|
209
|
+
__decorate([
|
|
210
|
+
property({ type: Boolean, reflect: true })
|
|
211
|
+
], ChipElement.prototype, "removable", void 0);
|
|
212
|
+
__decorate([
|
|
213
|
+
property({ type: Boolean, reflect: true })
|
|
214
|
+
], ChipElement.prototype, "disabled", void 0);
|
|
215
|
+
__decorate([
|
|
216
|
+
property({ type: Boolean, attribute: 'soft-disabled', reflect: true })
|
|
217
|
+
], ChipElement.prototype, "softDisabled", void 0);
|
|
218
|
+
__decorate([
|
|
219
|
+
property()
|
|
220
|
+
], ChipElement.prototype, "href", void 0);
|
|
221
|
+
__decorate([
|
|
222
|
+
property()
|
|
223
|
+
], ChipElement.prototype, "target", void 0);
|
|
224
|
+
__decorate([
|
|
225
|
+
state()
|
|
226
|
+
], ChipElement.prototype, "hasLeadingIcon", void 0);
|
|
227
|
+
__decorate([
|
|
228
|
+
state()
|
|
229
|
+
], ChipElement.prototype, "hasAvatar", void 0);
|
|
230
|
+
__decorate([
|
|
231
|
+
state()
|
|
232
|
+
], ChipElement.prototype, "hasRemoveIcon", void 0);
|
|
233
|
+
//# sourceMappingURL=chip-element.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chip-element.js","sourceRoot":"","sources":["chip-element.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2026 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {css, CSSResultOrNative, html, LitElement, nothing} from 'lit';\nimport {property, state} from 'lit/decorators.js';\nimport {redispatchEvent} from '../../../../internal/events/redispatch-event.js';\nimport focusRingStyles from '../focus/focus-ring.cssresult.js';\nimport rippleStyles from '../ripple/ripple.cssresult.js';\nimport {chip, type ChipColor, type ChipType} from './chip.js';\nimport {styles as chipStyles} from './chip.cssresult.js';\n\n/**\n * A Material Design Expressive Chip component (`md-gb-chip`).\n *\n * @slot - Used to display the chip label text.\n * @slot icon - Used to display an optional leading icon, checkmark, or avatar.\n * @slot remove-icon - Used to display the trailing remove button icon when `removable=\"true\"`.\n * @fires {Event} remove - Fired when the remove action is triggered on a removable chip. --bubbles --composed\n * @fires {Event} change - Fired when a filter/toggle chip's selection state changes. --bubbles\n * @fires {InputEvent} input - Fired when a filter/toggle chip's selection state changes. --bubbles --composed\n * @csspart chip - The root container element.\n * @cssprop --avatar-opacity\n * @cssprop --avatar-shape\n * @cssprop --avatar-size\n * @cssprop --container-color\n * @cssprop --container-elevation\n * @cssprop --container-opacity\n * @cssprop --gap-horizontal\n * @cssprop --height\n * @cssprop --label-text\n * @cssprop --label-text-color\n * @cssprop --label-text-opacity\n * @cssprop --leading-icon-color\n * @cssprop --leading-icon-opacity\n * @cssprop --leading-icon-size\n * @cssprop --outline-color\n * @cssprop --outline-opacity\n * @cssprop --outline-width\n * @cssprop --padding-bottom\n * @cssprop --padding-leading\n * @cssprop --padding-top\n * @cssprop --padding-trailing\n * @cssprop --shape\n * @cssprop --trailing-icon-color\n * @cssprop --trailing-icon-opacity\n * @cssprop --trailing-icon-size\n */\nexport class ChipElement extends LitElement {\n static override styles: CSSResultOrNative[] = [\n focusRingStyles,\n rippleStyles,\n chipStyles,\n css`\n :host {\n display: inline-flex;\n vertical-align: middle;\n }\n .chip {\n flex: 1;\n }\n .chip-icon {\n display: inline-flex;\n align-items: center;\n }\n `,\n ];\n\n /** The color emphasis of the chip. Defaults to `outlined`. */\n @property() color: ChipColor = 'outlined';\n\n /** The functional behavior type of the chip (`action`, `filter`, `toggle`, `link`). */\n @property() type: ChipType = 'action';\n\n /** Whether the filter or toggle chip is selected. */\n @property({type: Boolean, reflect: true}) selected = false;\n\n /** Whether the chip is removable. */\n @property({type: Boolean, reflect: true}) removable = false;\n\n /** Whether the chip is disabled. */\n @property({type: Boolean, reflect: true}) disabled = false;\n\n /** Whether the chip is soft-disabled (`aria-disabled=\"true\"` while preserving focusability). */\n @property({type: Boolean, attribute: 'soft-disabled', reflect: true})\n softDisabled = false;\n\n /** The URL destination if `type=\"link\"` or if `href` is set. */\n @property() href = '';\n\n /** Where to display the linked `href` URL for a link chip. */\n @property() target: '_blank' | '_parent' | '_self' | '_top' | '' = '';\n\n @state() private hasLeadingIcon = false;\n @state() private hasAvatar = false;\n @state() private hasRemoveIcon = false;\n\n protected override render() {\n const isFilterSelected =\n (this.type === 'filter' || this.type === 'toggle') && this.selected;\n const withLeadingIcon = this.hasLeadingIcon || isFilterSelected;\n const withAvatar = this.hasAvatar;\n\n const chipClasses = chip({\n color: this.color,\n type: this.href ? 'link' : this.type,\n selected: this.selected,\n removable: this.removable,\n disabled: this.softDisabled || this.disabled,\n withLeadingIcon: withLeadingIcon && !withAvatar,\n withAvatar,\n withTrailingIcon: this.removable || this.hasRemoveIcon,\n });\n\n if (this.href || this.type === 'link') {\n return html`<a\n part=\"chip\"\n class=\"${chipClasses}\"\n href=${this.href}\n target=${(this.target as '_blank' | '_parent' | '_self' | '_top') ||\n nothing}\n aria-disabled=${this.disabled || this.softDisabled ? 'true' : nothing}\n tabindex=${this.disabled && !this.softDisabled ? -1 : nothing}>\n ${this.renderContent(withLeadingIcon, isFilterSelected)}\n </a>`;\n }\n\n if (this.removable) {\n return html`<div\n part=\"chip\"\n class=\"${chipClasses}\"\n role=\"row\"\n aria-pressed=${this.type === 'filter' || this.type === 'toggle'\n ? (this.selected ? 'true' : 'false')\n : nothing}\n @change=${this.handleChange}>\n <button\n class=\"chip-action focus-ring-target\"\n type=\"button\"\n ?disabled=${this.disabled}\n aria-disabled=${this.softDisabled ? 'true' : nothing}>\n ${this.renderContent(withLeadingIcon, isFilterSelected)}\n </button>\n ${this.renderRemoveButton()}\n </div>`;\n }\n\n return html`<button\n part=\"chip\"\n class=\"${chipClasses}\"\n type=\"button\"\n ?disabled=${this.disabled}\n aria-disabled=${this.softDisabled ? 'true' : nothing}\n aria-pressed=${this.type === 'filter' || this.type === 'toggle'\n ? (this.selected ? 'true' : 'false')\n : nothing}\n @change=${this.handleChange}>\n ${this.renderContent(withLeadingIcon, isFilterSelected)}\n </button>`;\n }\n\n private renderContent(withLeadingIcon: boolean, isFilterSelected: boolean) {\n return html`\n ${this.renderLeadingIcon(withLeadingIcon, isFilterSelected)}\n <slot></slot>\n `;\n }\n\n private renderLeadingIcon(\n withLeadingIcon: boolean,\n isFilterSelected: boolean,\n ) {\n return html`<span\n class=\"chip-icon\"\n style=\"${withLeadingIcon ? '' : 'display: none;'}\">\n <slot name=\"icon\" @slotchange=${this.handleIconSlotChange}>\n ${isFilterSelected ? html`✓` : nothing}\n </slot>\n </span>`;\n }\n\n private renderRemoveButton() {\n return html`<button\n class=\"chip-remove focus-ring-outer\"\n type=\"button\"\n aria-label=\"Remove\"\n ?disabled=${this.disabled}\n aria-disabled=${this.softDisabled ? 'true' : nothing}\n @click=${this.handleRemove}>\n <slot\n name=\"remove-icon\"\n @slotchange=${this.handleRemoveIconSlotChange}\n >✕</slot\n >\n </button>`;\n }\n\n private handleIconSlotChange(event: Event) {\n const slot = event.target as HTMLSlotElement;\n const elements = slot.assignedElements({flatten: true});\n this.hasLeadingIcon = elements.length > 0;\n this.hasAvatar = elements.some((el) => el.classList.contains('chip-avatar'));\n }\n\n private handleRemoveIconSlotChange(event: Event) {\n const slot = event.target as HTMLSlotElement;\n this.hasRemoveIcon = slot.assignedNodes({flatten: true}).length > 0;\n }\n\n private handleChange(event: Event) {\n this.selected = (event.target as HTMLElement).ariaPressed === 'true';\n redispatchEvent(this, event);\n }\n\n private handleRemove(event: Event) {\n event.stopPropagation();\n if (this.disabled || this.softDisabled) return;\n this.dispatchEvent(new Event('remove', {bubbles: true, composed: true}));\n }\n}\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright 2026 Google LLC
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/@layer md.sys, md.comp.ripple, md.comp.focus-ring;@layer md.comp.chip{.chip{--avatar-opacity: unset;--avatar-shape: var(--md-sys-shape-corner-full);--avatar-size: 24px;--container-color: unset;--container-elevation: var(--md-sys-elevation-shadow-0);--gap-horizontal: var(--md-sys-space-50);--height: 32px;--label-text: var(--md-sys-typescale-label-lg);--label-text-axes: var(--md-sys-typescale-label-lg-axes);--label-text-color: var(--md-sys-color-on-surface-variant);--label-text-tracking: var(--md-sys-typescale-label-lg-tracking);--leading-icon-color: var(--md-sys-color-on-surface-variant);--leading-icon-size: 18px;--outline-color: var(--md-sys-color-outline-variant);--outline-width: 1px;--padding-bottom: var(--md-sys-space-75);--padding-leading: var(--md-sys-space-200);--padding-top: var(--md-sys-space-75);--padding-trailing: var(--md-sys-space-200);--shape: var(--md-sys-shape-corner-md);--trailing-icon-color: var(--md-sys-color-on-surface-variant);--trailing-icon-size: 18px}.chip.chip-elevated{--container-color: var(--md-sys-color-surface-container-low);--container-elevation: var(--md-sys-elevation-shadow-1);--label-text-color: var(--md-sys-color-on-surface);--outline-width: 0}.chip.chip-filled{--container-color: var(--md-sys-color-surface-container);--container-elevation: var(--md-sys-elevation-shadow-0);--label-text-color: var(--md-sys-color-on-surface);--outline-width: 0}.chip.chip-tonal{--container-color: var(--md-sys-color-secondary-container);--container-elevation: var(--md-sys-elevation-shadow-0);--label-text-color: var(--md-sys-color-on-secondary-container);--outline-width: 0}.chip.chip-outlined{--container-color: transparent;--container-elevation: var(--md-sys-elevation-shadow-0);--label-text-color: var(--md-sys-color-on-surface);--outline-color: var(--md-sys-color-outline);--outline-width: 1px}.chip:is(.chip-selected,[aria-pressed=true]){--container-color: var(--md-sys-color-secondary-container);--label-text-color: var(--md-sys-color-on-secondary-container);--leading-icon-color: var(--md-sys-color-on-secondary-container);--outline-width: 0px;--shape: var(--md-sys-shape-corner-full);--trailing-icon-color: var(--md-sys-color-on-secondary-container)}.chip.chip-input{--padding-leading: var(--md-sys-space-150);--padding-trailing: var(--md-sys-space-150)}.chip.chip-with-leading-icon{--padding-leading: var(--md-sys-space-100)}.chip.chip-with-trailing-icon{--padding-trailing: var(--md-sys-space-100)}.chip.chip-with-avatar{--padding-leading: var(--md-sys-space-50)}.chip:is(:disabled,.disabled,[aria-disabled=true]){--avatar-opacity: 0.38;--label-text-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.38);--leading-icon-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.38);--outline-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.1);--trailing-icon-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.38)}.chip{display:inline-flex;align-items:center;justify-content:center;height:var(--height);gap:var(--gap-horizontal);padding-inline:var(--padding-leading) var(--padding-trailing);padding-block:var(--padding-top) var(--padding-bottom);border:var(--outline-width) solid var(--outline-color);border-radius:var(--shape);box-shadow:var(--container-elevation);background-color:var(--container-color);color:var(--label-text-color);font:var(--label-text);box-sizing:border-box;user-select:none;white-space:nowrap;--md-icon-color: var(--leading-icon-color);--md-icon-size: var(--leading-icon-size)}.chip:not(:disabled,.disabled,[aria-disabled=true]){cursor:pointer}.chip .chip-action,.chip .chip-remove{display:inline-flex;align-items:center;justify-content:center;gap:var(--gap-horizontal);background:rgba(0,0,0,0);border:none;outline:none;color:inherit;font:inherit;padding:0;margin:0;height:100%;cursor:inherit}.chip .chip-remove{border-radius:50%;aspect-ratio:1;margin-inline-start:4px;outline:var(--focus-ring-outline);--md-icon-color: var(--trailing-icon-color);--md-icon-size: var(--trailing-icon-size)}}/*# sourceMappingURL=chip.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["chip.scss","_chip-tokens.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA,GASA,kDACA,oBACE,MCGA,wBAEA,gDAEA,oBACA,yBAEA,wDAGA,yCAEA,eAEA,+CAEA,yDAEA,2DAGA,iEAEA,6DAGA,0BAEA,qDAGA,qBAEA,yCAEA,2CAEA,sCAEA,4CAEA,uCAEA,8DAGA,2BD/CE,oBC+HF,6DACA,wDACA,mDACA,mBD/HE,kBCmIF,yDACA,wDACA,mDACA,mBDnIE,iBCuIF,2DACA,wDACA,+DACA,mBDvIE,oBC2IF,+BACA,wDACA,mDACA,6CACA,qBD5IE,6CCmDF,2DAEA,+DAEA,iEAEA,qBAEA,yCAEA,kEDvDE,iBC4DF,2CAEA,4CD3DE,6BCgEF,2CD7DE,8BCuEF,4CDpEE,uBC+DF,0CD5DE,mDCsEF,uBAGA,0EAGA,4EAGA,sEAGA,6ED9EE,MACE,oBACA,mBACA,uBACA,qBACA,0BACA,8DACA,uDACA,uDACA,2BACA,sCACA,wCACA,8BACA,uBACA,sBACA,iBACA,mBACA,2CACA,yCAEF,oDACE,eAGF,sCAEE,oBACA,mBACA,uBACA,0BACA,yBACA,YACA,aACA,cACA,aACA,UACA,SACA,YACA,eAEF,mBACE,kBACA,eACA,wBACA,kCACA,4CACA","file":"chip.css"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
// Generated stylesheet for ./labs/gb/components/chip/chip.css.
|
|
7
|
+
import { css } from 'lit';
|
|
8
|
+
export const styles = css `/*!
|
|
9
|
+
* Copyright 2026 Google LLC
|
|
10
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
11
|
+
*/@layer md.sys, md.comp.ripple, md.comp.focus-ring;@layer md.comp.chip{.chip{--avatar-opacity: unset;--avatar-shape: var(--md-sys-shape-corner-full);--avatar-size: 24px;--container-color: unset;--container-elevation: var(--md-sys-elevation-shadow-0);--gap-horizontal: var(--md-sys-space-50);--height: 32px;--label-text: var(--md-sys-typescale-label-lg);--label-text-axes: var(--md-sys-typescale-label-lg-axes);--label-text-color: var(--md-sys-color-on-surface-variant);--label-text-tracking: var(--md-sys-typescale-label-lg-tracking);--leading-icon-color: var(--md-sys-color-on-surface-variant);--leading-icon-size: 18px;--outline-color: var(--md-sys-color-outline-variant);--outline-width: 1px;--padding-bottom: var(--md-sys-space-75);--padding-leading: var(--md-sys-space-200);--padding-top: var(--md-sys-space-75);--padding-trailing: var(--md-sys-space-200);--shape: var(--md-sys-shape-corner-md);--trailing-icon-color: var(--md-sys-color-on-surface-variant);--trailing-icon-size: 18px}.chip.chip-elevated{--container-color: var(--md-sys-color-surface-container-low);--container-elevation: var(--md-sys-elevation-shadow-1);--label-text-color: var(--md-sys-color-on-surface);--outline-width: 0}.chip.chip-filled{--container-color: var(--md-sys-color-surface-container);--container-elevation: var(--md-sys-elevation-shadow-0);--label-text-color: var(--md-sys-color-on-surface);--outline-width: 0}.chip.chip-tonal{--container-color: var(--md-sys-color-secondary-container);--container-elevation: var(--md-sys-elevation-shadow-0);--label-text-color: var(--md-sys-color-on-secondary-container);--outline-width: 0}.chip.chip-outlined{--container-color: transparent;--container-elevation: var(--md-sys-elevation-shadow-0);--label-text-color: var(--md-sys-color-on-surface);--outline-color: var(--md-sys-color-outline);--outline-width: 1px}.chip:is(.chip-selected,[aria-pressed=true]){--container-color: var(--md-sys-color-secondary-container);--label-text-color: var(--md-sys-color-on-secondary-container);--leading-icon-color: var(--md-sys-color-on-secondary-container);--outline-width: 0px;--shape: var(--md-sys-shape-corner-full);--trailing-icon-color: var(--md-sys-color-on-secondary-container)}.chip.chip-input{--padding-leading: var(--md-sys-space-150);--padding-trailing: var(--md-sys-space-150)}.chip.chip-with-leading-icon{--padding-leading: var(--md-sys-space-100)}.chip.chip-with-trailing-icon{--padding-trailing: var(--md-sys-space-100)}.chip.chip-with-avatar{--padding-leading: var(--md-sys-space-50)}.chip:is(:disabled,.disabled,[aria-disabled=true]){--avatar-opacity: 0.38;--label-text-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.38);--leading-icon-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.38);--outline-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.1);--trailing-icon-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.38)}.chip{display:inline-flex;align-items:center;justify-content:center;height:var(--height);gap:var(--gap-horizontal);padding-inline:var(--padding-leading) var(--padding-trailing);padding-block:var(--padding-top) var(--padding-bottom);border:var(--outline-width) solid var(--outline-color);border-radius:var(--shape);box-shadow:var(--container-elevation);background-color:var(--container-color);color:var(--label-text-color);font:var(--label-text);box-sizing:border-box;user-select:none;white-space:nowrap;--md-icon-color: var(--leading-icon-color);--md-icon-size: var(--leading-icon-size)}.chip:not(:disabled,.disabled,[aria-disabled=true]){cursor:pointer}.chip .chip-action,.chip .chip-remove{display:inline-flex;align-items:center;justify-content:center;gap:var(--gap-horizontal);background:rgba(0,0,0,0);border:none;outline:none;color:inherit;font:inherit;padding:0;margin:0;height:100%;cursor:inherit}.chip .chip-remove{border-radius:50%;aspect-ratio:1;margin-inline-start:4px;outline:var(--focus-ring-outline);--md-icon-color: var(--trailing-icon-color);--md-icon-size: var(--trailing-icon-size)}}
|
|
12
|
+
`;
|
|
13
|
+
export default styles.styleSheet;
|
|
14
|
+
//# sourceMappingURL=chip.cssresult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chip.cssresult.js","sourceRoot":"","sources":["chip.cssresult.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,+DAA+D;AAC/D,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AACxB,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;CAIxB,CAAC;AACF,eAAe,MAAM,CAAC,UAAW,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2026 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n// Generated stylesheet for ./labs/gb/components/chip/chip.css.\nimport {css} from 'lit';\nexport const styles = css`/*!\n * Copyright 2026 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */@layer md.sys, md.comp.ripple, md.comp.focus-ring;@layer md.comp.chip{.chip{--avatar-opacity: unset;--avatar-shape: var(--md-sys-shape-corner-full);--avatar-size: 24px;--container-color: unset;--container-elevation: var(--md-sys-elevation-shadow-0);--gap-horizontal: var(--md-sys-space-50);--height: 32px;--label-text: var(--md-sys-typescale-label-lg);--label-text-axes: var(--md-sys-typescale-label-lg-axes);--label-text-color: var(--md-sys-color-on-surface-variant);--label-text-tracking: var(--md-sys-typescale-label-lg-tracking);--leading-icon-color: var(--md-sys-color-on-surface-variant);--leading-icon-size: 18px;--outline-color: var(--md-sys-color-outline-variant);--outline-width: 1px;--padding-bottom: var(--md-sys-space-75);--padding-leading: var(--md-sys-space-200);--padding-top: var(--md-sys-space-75);--padding-trailing: var(--md-sys-space-200);--shape: var(--md-sys-shape-corner-md);--trailing-icon-color: var(--md-sys-color-on-surface-variant);--trailing-icon-size: 18px}.chip.chip-elevated{--container-color: var(--md-sys-color-surface-container-low);--container-elevation: var(--md-sys-elevation-shadow-1);--label-text-color: var(--md-sys-color-on-surface);--outline-width: 0}.chip.chip-filled{--container-color: var(--md-sys-color-surface-container);--container-elevation: var(--md-sys-elevation-shadow-0);--label-text-color: var(--md-sys-color-on-surface);--outline-width: 0}.chip.chip-tonal{--container-color: var(--md-sys-color-secondary-container);--container-elevation: var(--md-sys-elevation-shadow-0);--label-text-color: var(--md-sys-color-on-secondary-container);--outline-width: 0}.chip.chip-outlined{--container-color: transparent;--container-elevation: var(--md-sys-elevation-shadow-0);--label-text-color: var(--md-sys-color-on-surface);--outline-color: var(--md-sys-color-outline);--outline-width: 1px}.chip:is(.chip-selected,[aria-pressed=true]){--container-color: var(--md-sys-color-secondary-container);--label-text-color: var(--md-sys-color-on-secondary-container);--leading-icon-color: var(--md-sys-color-on-secondary-container);--outline-width: 0px;--shape: var(--md-sys-shape-corner-full);--trailing-icon-color: var(--md-sys-color-on-secondary-container)}.chip.chip-input{--padding-leading: var(--md-sys-space-150);--padding-trailing: var(--md-sys-space-150)}.chip.chip-with-leading-icon{--padding-leading: var(--md-sys-space-100)}.chip.chip-with-trailing-icon{--padding-trailing: var(--md-sys-space-100)}.chip.chip-with-avatar{--padding-leading: var(--md-sys-space-50)}.chip:is(:disabled,.disabled,[aria-disabled=true]){--avatar-opacity: 0.38;--label-text-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.38);--leading-icon-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.38);--outline-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.1);--trailing-icon-color: hsl(from var(--md-sys-color-on-surface) h s l / 0.38)}.chip{display:inline-flex;align-items:center;justify-content:center;height:var(--height);gap:var(--gap-horizontal);padding-inline:var(--padding-leading) var(--padding-trailing);padding-block:var(--padding-top) var(--padding-bottom);border:var(--outline-width) solid var(--outline-color);border-radius:var(--shape);box-shadow:var(--container-elevation);background-color:var(--container-color);color:var(--label-text-color);font:var(--label-text);box-sizing:border-box;user-select:none;white-space:nowrap;--md-icon-color: var(--leading-icon-color);--md-icon-size: var(--leading-icon-size)}.chip:not(:disabled,.disabled,[aria-disabled=true]){cursor:pointer}.chip .chip-action,.chip .chip-remove{display:inline-flex;align-items:center;justify-content:center;gap:var(--gap-horizontal);background:rgba(0,0,0,0);border:none;outline:none;color:inherit;font:inherit;padding:0;margin:0;height:100%;cursor:inherit}.chip .chip-remove{border-radius:50%;aspect-ratio:1;margin-inline-start:4px;outline:var(--focus-ring-outline);--md-icon-color: var(--trailing-icon-color);--md-icon-size: var(--trailing-icon-size)}}\n`;\nexport default styles.styleSheet!;\n"]}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { type ClassInfo } from 'lit/directives/class-map.js';
|
|
7
|
+
/** Chip color/emphasis configuration types. */
|
|
8
|
+
export type ChipColor = 'elevated' | 'filled' | 'outlined' | 'tonal';
|
|
9
|
+
/** Chip color configurations. */
|
|
10
|
+
export declare const CHIP_COLORS: {
|
|
11
|
+
readonly elevated: "elevated";
|
|
12
|
+
readonly filled: "filled";
|
|
13
|
+
readonly outlined: "outlined";
|
|
14
|
+
readonly tonal: "tonal";
|
|
15
|
+
};
|
|
16
|
+
/** Chip functional type. */
|
|
17
|
+
export type ChipType = 'action' | 'filter' | 'toggle' | 'link';
|
|
18
|
+
/** Chip classes. */
|
|
19
|
+
export declare const CHIP_CLASSES: {
|
|
20
|
+
readonly chip: "chip";
|
|
21
|
+
readonly chipElevated: "chip-elevated";
|
|
22
|
+
readonly chipFilled: "chip-filled";
|
|
23
|
+
readonly chipOutlined: "chip-outlined";
|
|
24
|
+
readonly chipTonal: "chip-tonal";
|
|
25
|
+
readonly chipSelected: "chip-selected";
|
|
26
|
+
readonly chipFilter: "chip-filter";
|
|
27
|
+
readonly chipInput: "chip-input";
|
|
28
|
+
readonly chipRemovable: "chip-removable";
|
|
29
|
+
readonly chipWithLeadingIcon: "chip-with-leading-icon";
|
|
30
|
+
readonly chipWithTrailingIcon: "chip-with-trailing-icon";
|
|
31
|
+
readonly chipWithAvatar: "chip-with-avatar";
|
|
32
|
+
readonly disabled: string;
|
|
33
|
+
};
|
|
34
|
+
/** The state provided to the `chipClasses()` function. */
|
|
35
|
+
export interface ChipClassesState {
|
|
36
|
+
/** The emphasis color of the chip. */
|
|
37
|
+
color?: ChipColor;
|
|
38
|
+
/** The functional behavior type of the chip (`action`, `filter`, `toggle`, `link`). */
|
|
39
|
+
type?: ChipType;
|
|
40
|
+
/** Whether the filter or toggle chip is selected. */
|
|
41
|
+
selected?: boolean;
|
|
42
|
+
/** Whether the chip is removable (`removable="true"`). */
|
|
43
|
+
removable?: boolean;
|
|
44
|
+
/** Whether the chip has a leading icon. */
|
|
45
|
+
withLeadingIcon?: boolean;
|
|
46
|
+
/** Whether the chip has a trailing icon. */
|
|
47
|
+
withTrailingIcon?: boolean;
|
|
48
|
+
/** Whether the chip has an avatar. */
|
|
49
|
+
withAvatar?: boolean;
|
|
50
|
+
/** Emulates `:disabled`. */
|
|
51
|
+
disabled?: boolean;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Returns the chip classes to apply to an element based on the given state.
|
|
55
|
+
*
|
|
56
|
+
* @param state The state of the chip.
|
|
57
|
+
* @return An object of class names and truthy values if they apply.
|
|
58
|
+
*/
|
|
59
|
+
export declare function chipClasses({ color, type, selected, removable, withLeadingIcon, withTrailingIcon, withAvatar, disabled, }?: ChipClassesState): ClassInfo;
|
|
60
|
+
/**
|
|
61
|
+
* Sets up chip functionality for the given element.
|
|
62
|
+
*
|
|
63
|
+
* @param chip The element on which to set up chip functionality.
|
|
64
|
+
* @param opts Setup options, supports a cleanup `signal`.
|
|
65
|
+
*/
|
|
66
|
+
export declare function setupChip(chip: HTMLElement, opts?: {
|
|
67
|
+
signal?: AbortSignal;
|
|
68
|
+
}): void;
|
|
69
|
+
/**
|
|
70
|
+
* A Lit directive that adds chip styling and functionality to its element.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts
|
|
74
|
+
* html`<button class="${chip({color: 'elevated'})}">Elevated Chip</button>`;
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export declare const chip: (state?: ChipClassesState & import("../shared/directives.js").AdditionalClasses) => import("lit-html/directive.js").DirectiveResult;
|