@material/web 2.5.0 → 2.5.1-nightly.12ec888.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 +20458 -18197
- 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/button/_button-tokens.scss +5 -1
- package/labs/gb/components/button/button-element.d.ts +1 -0
- package/labs/gb/components/button/button-element.js +1 -0
- package/labs/gb/components/button/button-element.js.map +1 -1
- package/labs/gb/components/button/button.css +1 -1
- package/labs/gb/components/button/button.css.map +1 -1
- package/labs/gb/components/button/button.cssresult.js +1 -1
- package/labs/gb/components/button/button.cssresult.js.map +1 -1
- package/labs/gb/components/button/button.scss +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 +99 -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/fab/_fab-tokens.scss +4 -1
- package/labs/gb/components/fab/fab-element.d.ts +1 -0
- package/labs/gb/components/fab/fab-element.js +1 -0
- package/labs/gb/components/fab/fab-element.js.map +1 -1
- package/labs/gb/components/fab/fab.css +1 -1
- package/labs/gb/components/fab/fab.css.map +1 -1
- package/labs/gb/components/fab/fab.cssresult.js +1 -1
- package/labs/gb/components/fab/fab.cssresult.js.map +1 -1
- package/labs/gb/components/fab/fab.scss +1 -0
- package/labs/gb/components/list/_list-tokens.scss +11 -14
- package/labs/gb/components/list/list-item-element.d.ts +4 -0
- package/labs/gb/components/list/list-item-element.js +4 -0
- package/labs/gb/components/list/list-item-element.js.map +1 -1
- package/labs/gb/components/list/list.css +1 -1
- package/labs/gb/components/list/list.css.map +1 -1
- package/labs/gb/components/list/list.cssresult.js +1 -1
- package/labs/gb/components/list/list.cssresult.js.map +1 -1
- package/labs/gb/components/list/list.scss +5 -0
- package/labs/gb/components/menu/_menu-tokens.scss +45 -16
- package/labs/gb/components/menu/menu-item-element.d.ts +4 -1
- package/labs/gb/components/menu/menu-item-element.js +4 -1
- package/labs/gb/components/menu/menu-item-element.js.map +1 -1
- package/labs/gb/components/menu/menu.css +1 -1
- package/labs/gb/components/menu/menu.css.map +1 -1
- package/labs/gb/components/menu/menu.cssresult.js +1 -1
- package/labs/gb/components/menu/menu.cssresult.js.map +1 -1
- package/labs/gb/components/menu/menu.scss +3 -0
- package/package.json +1 -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);letter-spacing:var(--label-text-tracking);font-variation-settings:var(--label-text-axes);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,0CACA,+CACA,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);letter-spacing:var(--label-text-tracking);font-variation-settings:var(--label-text-axes);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);letter-spacing:var(--label-text-tracking);font-variation-settings:var(--label-text-axes);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;
|