@material/web 2.4.2-nightly.fd17013.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/custom-elements.json +44986 -0
  2. package/labs/gb/components/badge/_badge-tokens.scss +18 -0
  3. package/labs/gb/components/badge/badge-element.d.ts +15 -0
  4. package/labs/gb/components/badge/badge-element.js +49 -0
  5. package/labs/gb/components/badge/badge-element.js.map +1 -0
  6. package/labs/gb/components/badge/badge.css +4 -0
  7. package/labs/gb/components/badge/badge.css.map +1 -0
  8. package/labs/gb/components/badge/badge.cssresult.d.ts +3 -0
  9. package/labs/gb/components/badge/badge.cssresult.js +14 -0
  10. package/labs/gb/components/badge/badge.cssresult.js.map +1 -0
  11. package/labs/gb/components/badge/badge.d.ts +32 -0
  12. package/labs/gb/components/badge/badge.js +35 -0
  13. package/labs/gb/components/badge/badge.js.map +1 -0
  14. package/labs/gb/components/badge/badge.scss +49 -0
  15. package/labs/gb/components/badge/md-gb-badge.d.ts +12 -0
  16. package/labs/gb/components/badge/md-gb-badge.js +8 -0
  17. package/labs/gb/components/badge/md-gb-badge.js.map +1 -0
  18. package/labs/gb/components/button/_button-tokens.scss +2 -0
  19. package/labs/gb/components/button/{md-button.d.ts → button-element.d.ts} +31 -8
  20. package/labs/gb/components/button/{md-button.js → button-element.js} +119 -20
  21. package/labs/gb/components/button/button-element.js.map +1 -0
  22. package/labs/gb/components/button/button.css.map +1 -1
  23. package/labs/gb/components/button/md-gb-button.d.ts +12 -0
  24. package/labs/gb/components/button/md-gb-button.js +8 -0
  25. package/labs/gb/components/button/md-gb-button.js.map +1 -0
  26. package/labs/gb/components/card/_card-tokens.scss +2 -0
  27. package/labs/gb/components/card/card-element.d.ts +43 -0
  28. package/labs/gb/components/card/card-element.js +169 -0
  29. package/labs/gb/components/card/card-element.js.map +1 -0
  30. package/labs/gb/components/card/card.css.map +1 -1
  31. package/labs/gb/components/card/md-gb-card.d.ts +12 -0
  32. package/labs/gb/components/card/md-gb-card.js +8 -0
  33. package/labs/gb/components/card/md-gb-card.js.map +1 -0
  34. package/labs/gb/components/checkbox/_checkbox-tokens.scss +2 -0
  35. package/labs/gb/components/checkbox/{md-checkbox.d.ts → checkbox-element.d.ts} +15 -7
  36. package/labs/gb/components/checkbox/{md-checkbox.js → checkbox-element.js} +26 -16
  37. package/labs/gb/components/checkbox/checkbox-element.js.map +1 -0
  38. package/labs/gb/components/checkbox/checkbox.css.map +1 -1
  39. package/labs/gb/components/checkbox/md-gb-checkbox.d.ts +12 -0
  40. package/labs/gb/components/checkbox/md-gb-checkbox.js +8 -0
  41. package/labs/gb/components/checkbox/md-gb-checkbox.js.map +1 -0
  42. package/labs/gb/components/divider/_divider-tokens.scss +2 -0
  43. package/labs/gb/components/divider/{md-divider.d.ts → divider-element.d.ts} +5 -7
  44. package/labs/gb/components/divider/{md-divider.js → divider-element.js} +10 -10
  45. package/labs/gb/components/divider/divider-element.js.map +1 -0
  46. package/labs/gb/components/divider/divider.css.map +1 -1
  47. package/labs/gb/components/divider/md-gb-divider.d.ts +12 -0
  48. package/labs/gb/components/divider/md-gb-divider.js +8 -0
  49. package/labs/gb/components/divider/md-gb-divider.js.map +1 -0
  50. package/labs/gb/components/fab/_fab-tokens.scss +2 -0
  51. package/labs/gb/components/fab/fab-element.d.ts +31 -0
  52. package/labs/gb/components/fab/{md-fab.js → fab-element.js} +22 -11
  53. package/labs/gb/components/fab/fab-element.js.map +1 -0
  54. package/labs/gb/components/fab/fab.css.map +1 -1
  55. package/labs/gb/components/fab/md-gb-fab.d.ts +12 -0
  56. package/labs/gb/components/fab/md-gb-fab.js +8 -0
  57. package/labs/gb/components/fab/md-gb-fab.js.map +1 -0
  58. package/labs/gb/components/iconbutton/_icon-button-tokens.scss +2 -0
  59. package/labs/gb/components/iconbutton/{md-icon-button.d.ts → icon-button-element.d.ts} +15 -7
  60. package/labs/gb/components/iconbutton/{md-icon-button.js → icon-button-element.js} +30 -20
  61. package/labs/gb/components/iconbutton/icon-button-element.js.map +1 -0
  62. package/labs/gb/components/iconbutton/icon-button.css.map +1 -1
  63. package/labs/gb/components/iconbutton/md-gb-icon-button.d.ts +12 -0
  64. package/labs/gb/components/iconbutton/md-gb-icon-button.js +8 -0
  65. package/labs/gb/components/iconbutton/md-gb-icon-button.js.map +1 -0
  66. package/labs/gb/components/list/_list-tokens.scss +4 -0
  67. package/labs/gb/components/list/{md-list.d.ts → list-element.d.ts} +6 -7
  68. package/labs/gb/components/list/{md-list.js → list-element.js} +11 -10
  69. package/labs/gb/components/list/list-element.js.map +1 -0
  70. package/labs/gb/components/list/list-item-element.d.ts +77 -0
  71. package/labs/gb/components/list/{md-list-item.js → list-item-element.js} +55 -20
  72. package/labs/gb/components/list/list-item-element.js.map +1 -0
  73. package/labs/gb/components/list/list.css.map +1 -1
  74. package/labs/gb/components/list/md-gb-list-item.d.ts +12 -0
  75. package/labs/gb/components/list/md-gb-list-item.js +8 -0
  76. package/labs/gb/components/list/md-gb-list-item.js.map +1 -0
  77. package/labs/gb/components/list/md-gb-list.d.ts +12 -0
  78. package/labs/gb/components/list/md-gb-list.js +8 -0
  79. package/labs/gb/components/list/md-gb-list.js.map +1 -0
  80. package/labs/gb/components/menu/_menu-tokens.scss +4 -0
  81. package/labs/gb/components/menu/md-gb-menu-group.d.ts +12 -0
  82. package/labs/gb/components/menu/md-gb-menu-group.js +8 -0
  83. package/labs/gb/components/menu/md-gb-menu-group.js.map +1 -0
  84. package/labs/gb/components/menu/md-gb-menu-item.d.ts +12 -0
  85. package/labs/gb/components/menu/md-gb-menu-item.js +8 -0
  86. package/labs/gb/components/menu/md-gb-menu-item.js.map +1 -0
  87. package/labs/gb/components/menu/md-gb-menu.d.ts +12 -0
  88. package/labs/gb/components/menu/md-gb-menu.js +8 -0
  89. package/labs/gb/components/menu/md-gb-menu.js.map +1 -0
  90. package/labs/gb/components/menu/{md-menu.d.ts → menu-element.d.ts} +11 -7
  91. package/labs/gb/components/menu/{md-menu.js → menu-element.js} +16 -10
  92. package/labs/gb/components/menu/menu-element.js.map +1 -0
  93. package/labs/gb/components/menu/{md-menu-group.d.ts → menu-group-element.d.ts} +3 -6
  94. package/labs/gb/components/menu/{md-menu-group.js → menu-group-element.js} +11 -11
  95. package/labs/gb/components/menu/menu-group-element.js.map +1 -0
  96. package/labs/gb/components/menu/menu-item-element.d.ts +56 -0
  97. package/labs/gb/components/menu/{md-menu-item.js → menu-item-element.js} +41 -13
  98. package/labs/gb/components/menu/menu-item-element.js.map +1 -0
  99. package/labs/gb/components/menu/menu.css.map +1 -1
  100. package/labs/gb/components/menu/menu.js +1 -1
  101. package/labs/gb/components/menu/menu.js.map +1 -1
  102. package/labs/gb/components/radio/_radio-tokens.scss +2 -0
  103. package/labs/gb/components/radio/md-gb-radio.d.ts +12 -0
  104. package/labs/gb/components/radio/md-gb-radio.js +8 -0
  105. package/labs/gb/components/radio/md-gb-radio.js.map +1 -0
  106. package/labs/gb/components/radio/{md-radio.d.ts → radio-element.d.ts} +10 -7
  107. package/labs/gb/components/radio/{md-radio.js → radio-element.js} +19 -14
  108. package/labs/gb/components/radio/radio-element.js.map +1 -0
  109. package/labs/gb/components/radio/radio.css.map +1 -1
  110. package/labs/gb/components/splitbutton/_split-button-tokens.scss +4 -0
  111. package/labs/gb/components/splitbutton/md-gb-split-button.d.ts +12 -0
  112. package/labs/gb/components/splitbutton/md-gb-split-button.js +8 -0
  113. package/labs/gb/components/splitbutton/md-gb-split-button.js.map +1 -0
  114. package/labs/gb/components/splitbutton/split-button-element.d.ts +33 -0
  115. package/labs/gb/components/splitbutton/{md-split-button.js → split-button-element.js} +21 -12
  116. package/labs/gb/components/splitbutton/split-button-element.js.map +1 -0
  117. package/labs/gb/components/splitbutton/split-button.css.map +1 -1
  118. package/labs/gb/components/splitbutton/split-button.d.ts +5 -5
  119. package/labs/gb/components/splitbutton/split-button.js +5 -5
  120. package/labs/gb/components/splitbutton/split-button.js.map +1 -1
  121. package/labs/gb/components/switch/_switch-tokens.scss +2 -0
  122. package/labs/gb/components/switch/md-gb-switch.d.ts +12 -0
  123. package/labs/gb/components/switch/md-gb-switch.js +8 -0
  124. package/labs/gb/components/switch/md-gb-switch.js.map +1 -0
  125. package/labs/gb/components/switch/{md-switch.d.ts → switch-element.d.ts} +19 -7
  126. package/labs/gb/components/switch/{md-switch.js → switch-element.js} +28 -14
  127. package/labs/gb/components/switch/switch-element.js.map +1 -0
  128. package/labs/gb/components/switch/switch.css.map +1 -1
  129. package/labs/gb/styles/adopt-styles.js +7 -7
  130. package/labs/gb/styles/adopt-styles.js.map +1 -1
  131. package/labs/gb/styles/icon/{md-icon.d.ts → icon-element.d.ts} +1 -7
  132. package/labs/gb/styles/icon/{md-icon.js → icon-element.js} +8 -10
  133. package/labs/gb/styles/icon/icon-element.js.map +1 -0
  134. package/labs/gb/styles/icon/md-gb-icon.d.ts +12 -0
  135. package/labs/gb/styles/icon/md-gb-icon.js +8 -0
  136. package/labs/gb/styles/icon/md-gb-icon.js.map +1 -0
  137. package/list/internal/listitem/list-item.d.ts +4 -1
  138. package/list/internal/listitem/list-item.js +4 -1
  139. package/list/internal/listitem/list-item.js.map +1 -1
  140. package/menu/internal/submenu/sub-menu.d.ts +5 -1
  141. package/menu/internal/submenu/sub-menu.js +5 -1
  142. package/menu/internal/submenu/sub-menu.js.map +1 -1
  143. package/package.json +22 -3
  144. package/labs/gb/components/button/md-button.js.map +0 -1
  145. package/labs/gb/components/card/md-card.d.ts +0 -30
  146. package/labs/gb/components/card/md-card.js +0 -85
  147. package/labs/gb/components/card/md-card.js.map +0 -1
  148. package/labs/gb/components/checkbox/md-checkbox.js.map +0 -1
  149. package/labs/gb/components/divider/md-divider.js.map +0 -1
  150. package/labs/gb/components/fab/md-fab.d.ts +0 -22
  151. package/labs/gb/components/fab/md-fab.js.map +0 -1
  152. package/labs/gb/components/iconbutton/md-icon-button.js.map +0 -1
  153. package/labs/gb/components/list/md-list-item.d.ts +0 -44
  154. package/labs/gb/components/list/md-list-item.js.map +0 -1
  155. package/labs/gb/components/list/md-list.js.map +0 -1
  156. package/labs/gb/components/menu/md-menu-group.js.map +0 -1
  157. package/labs/gb/components/menu/md-menu-item.d.ts +0 -30
  158. package/labs/gb/components/menu/md-menu-item.js.map +0 -1
  159. package/labs/gb/components/menu/md-menu.js.map +0 -1
  160. package/labs/gb/components/radio/md-radio.js.map +0 -1
  161. package/labs/gb/components/splitbutton/md-split-button.d.ts +0 -26
  162. package/labs/gb/components/splitbutton/md-split-button.js.map +0 -1
  163. package/labs/gb/components/switch/md-switch.js.map +0 -1
  164. package/labs/gb/styles/icon/md-icon.js.map +0 -1
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ButtonElement } from './button-element.js';
7
+ customElements.define('md-gb-button', ButtonElement);
8
+ //# sourceMappingURL=md-gb-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md-gb-button.js","sourceRoot":"","sources":["md-gb-button.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AASlD,cAAc,CAAC,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2026 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {ButtonElement} from './button-element.js';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n /** A Material Design button. */\n 'md-gb-button': ButtonElement;\n }\n}\n\ncustomElements.define('md-gb-button', ButtonElement);\n"]}
@@ -4,12 +4,14 @@
4
4
  //
5
5
 
6
6
  @mixin root {
7
+ // LINT.IfChange
7
8
  --container-color: transparent;
8
9
  --container-elevation: var(--md-sys-elevation-shadow-0);
9
10
  --container-shape: var(--md-sys-shape-corner-md);
10
11
  --outline-color: transparent;
11
12
  --outline-width: 0;
12
13
  --state-layer-color: var(--md-sys-color-on-surface);
14
+ // LINT.ThenChange(md-card.ts) keep in sync with `@cssprop` jsdoc tags
13
15
  }
14
16
 
15
17
  @mixin hover {
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { CSSResultOrNative, LitElement, PropertyValues } from 'lit';
7
+ import { type CardColor } from './card.js';
8
+ declare const baseClass: import("@material/web/labs/behaviors/mixin.js").MixinReturn<typeof LitElement>;
9
+ /**
10
+ * A Material Design card.
11
+ *
12
+ * @slot - Used to display the card's content. Note: add padding to content, not the host <md-gb-card> element.
13
+ * @slot container - Used to set a custom background container for the card.
14
+ * @csspart card - The card's root element.
15
+ * @csspart card-btn - The card's main action button, when interactive.
16
+ * @cssprop --container-color
17
+ * @cssprop --container-elevation
18
+ * @cssprop --container-shape
19
+ * @cssprop --outline-color
20
+ * @cssprop --outline-width
21
+ * @cssprop --state-layer-color
22
+ */
23
+ export declare class CardElement extends baseClass {
24
+ /** @nocollapse */
25
+ static shadowRootOptions: ShadowRootInit;
26
+ static styles: CSSResultOrNative[];
27
+ private hideOutline;
28
+ private lastFiredEnabledState?;
29
+ /** The color of the card. */
30
+ color: CardColor;
31
+ /** Whether the card is disabled. */
32
+ disabled: boolean;
33
+ /** Whether the card is interactive. */
34
+ interactive: boolean;
35
+ connectedCallback(): void;
36
+ disconnectedCallback(): void;
37
+ private readonly handleSetShowOutline;
38
+ protected updated(changedProperties: PropertyValues): void;
39
+ private dispatchSetEnabledEvent;
40
+ protected render(): import("lit-html").TemplateResult<1>;
41
+ private handleContainerSlotChange;
42
+ }
43
+ export {};
@@ -0,0 +1,169 @@
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 { mixinDelegatesAria } from '../../../../internal/aria/delegate.js';
10
+ import { ripple } from '../ripple/ripple.js';
11
+ import { hasSlotted } from '../shared/has-slotted.js';
12
+ import focusRingStyles from '../focus/focus-ring.css' with { type: 'css' }; // github-only
13
+ // import focusRingStyles from '../focus/focus-ring.cssresult.js'; // google3-only
14
+ import rippleStyles from '../ripple/ripple.css' with { type: 'css' }; // github-only
15
+ // import rippleStyles from '../ripple/ripple.cssresult.js'; // google3-only
16
+ import cardStyles from './card.css' with { type: 'css' }; // github-only
17
+ // import cardStyles from './card.cssresult.js'; // google3-only
18
+ import { card } from './card.js';
19
+ // Separate variable needed for closure.
20
+ const baseClass = mixinDelegatesAria(LitElement);
21
+ /**
22
+ * A Material Design card.
23
+ *
24
+ * @slot - Used to display the card's content. Note: add padding to content, not the host <md-gb-card> element.
25
+ * @slot container - Used to set a custom background container for the card.
26
+ * @csspart card - The card's root element.
27
+ * @csspart card-btn - The card's main action button, when interactive.
28
+ * @cssprop --container-color
29
+ * @cssprop --container-elevation
30
+ * @cssprop --container-shape
31
+ * @cssprop --outline-color
32
+ * @cssprop --outline-width
33
+ * @cssprop --state-layer-color
34
+ */
35
+ export class CardElement extends baseClass {
36
+ constructor() {
37
+ super(...arguments);
38
+ this.hideOutline = false;
39
+ /** The color of the card. */
40
+ this.color = 'outlined';
41
+ /** Whether the card is disabled. */
42
+ this.disabled = false;
43
+ /** Whether the card is interactive. */
44
+ this.interactive = false;
45
+ this.handleSetShowOutline = (event) => {
46
+ const customEvent = event;
47
+ this.hideOutline = !customEvent.detail.shown;
48
+ };
49
+ }
50
+ connectedCallback() {
51
+ super.connectedCallback();
52
+ this.addEventListener('md-gb:set-show-outline', this.handleSetShowOutline);
53
+ }
54
+ disconnectedCallback() {
55
+ super.disconnectedCallback();
56
+ this.removeEventListener('md-gb:set-show-outline', this.handleSetShowOutline);
57
+ }
58
+ updated(changedProperties) {
59
+ super.updated(changedProperties);
60
+ if (changedProperties.has('disabled')) {
61
+ this.dispatchSetEnabledEvent();
62
+ }
63
+ }
64
+ dispatchSetEnabledEvent() {
65
+ const enabled = !this.disabled;
66
+ if (this.lastFiredEnabledState === enabled)
67
+ return;
68
+ const slot = this.shadowRoot?.querySelector('slot[name="container"]');
69
+ if (slot) {
70
+ for (const element of slot.assignedElements({ flatten: true })) {
71
+ element.dispatchEvent(new CustomEvent('md-gb:set-enabled', {
72
+ detail: { enabled },
73
+ }));
74
+ }
75
+ }
76
+ this.lastFiredEnabledState = enabled;
77
+ }
78
+ render() {
79
+ const { ariaLabel } = this;
80
+ return html `<div
81
+ part="card"
82
+ class="${card({
83
+ color: this.color,
84
+ disabled: this.disabled,
85
+ interactive: this.interactive,
86
+ classes: {
87
+ 'card-hide-outline': this.hideOutline,
88
+ },
89
+ })}">
90
+ ${this.interactive
91
+ ? html `<button
92
+ part="card-btn"
93
+ class="card-btn ripple focus-ring-target"
94
+ ${ripple()}
95
+ ?disabled="${this.disabled}"
96
+ aria-label="${ariaLabel || nothing}"></button>`
97
+ : nothing}
98
+ <slot></slot>
99
+ <slot
100
+ name="container"
101
+ ${hasSlotted()}
102
+ @slotchange=${this.handleContainerSlotChange}></slot>
103
+ </div>`;
104
+ }
105
+ handleContainerSlotChange(event) {
106
+ const slot = event.target;
107
+ const enabled = !this.disabled;
108
+ for (const element of slot.assignedElements({ flatten: true })) {
109
+ element.dispatchEvent(new CustomEvent('md-gb:change-container-slot'));
110
+ element.dispatchEvent(new CustomEvent('md-gb:set-enabled', {
111
+ detail: { enabled },
112
+ }));
113
+ }
114
+ }
115
+ }
116
+ /** @nocollapse */
117
+ CardElement.shadowRootOptions = {
118
+ mode: 'open',
119
+ delegatesFocus: true,
120
+ };
121
+ CardElement.styles = [
122
+ focusRingStyles,
123
+ rippleStyles,
124
+ cardStyles,
125
+ css `
126
+ :host {
127
+ display: inline-flex;
128
+ isolation: isolate;
129
+ }
130
+ .card {
131
+ flex: 1;
132
+ position: relative;
133
+ }
134
+ .card:has([name='container'].has-slotted) {
135
+ background-color: transparent;
136
+ }
137
+ .card.card-hide-outline {
138
+ --outline-color: transparent;
139
+ --container-elevation: var(--md-sys-elevation-shadow-0);
140
+ }
141
+ slot[name='container'] {
142
+ display: block;
143
+ position: absolute;
144
+ inset: 0;
145
+ border-radius: inherit;
146
+ pointer-events: none;
147
+ --color: var(--container-color);
148
+ z-index: -1;
149
+ transition: inherit;
150
+ }
151
+ slot[name='container']::slotted(*) {
152
+ width: 100%;
153
+ height: 100%;
154
+ }
155
+ `,
156
+ ];
157
+ __decorate([
158
+ state()
159
+ ], CardElement.prototype, "hideOutline", void 0);
160
+ __decorate([
161
+ property()
162
+ ], CardElement.prototype, "color", void 0);
163
+ __decorate([
164
+ property({ type: Boolean })
165
+ ], CardElement.prototype, "disabled", void 0);
166
+ __decorate([
167
+ property({ type: Boolean })
168
+ ], CardElement.prototype, "interactive", void 0);
169
+ //# sourceMappingURL=card-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-element.js","sourceRoot":"","sources":["card-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 {\n css,\n CSSResultOrNative,\n html,\n LitElement,\n nothing,\n PropertyValues,\n} from 'lit';\nimport {property, state} from 'lit/decorators.js';\nimport {ARIAMixinStrict} from '../../../../internal/aria/aria.js';\nimport {mixinDelegatesAria} from '../../../../internal/aria/delegate.js';\nimport {ripple} from '../ripple/ripple.js';\nimport {hasSlotted} from '../shared/has-slotted.js';\n\nimport focusRingStyles from '../focus/focus-ring.css' with {type: 'css'}; // github-only\n// import focusRingStyles from '../focus/focus-ring.cssresult.js'; // google3-only\nimport rippleStyles from '../ripple/ripple.css' with {type: 'css'}; // github-only\n// import rippleStyles from '../ripple/ripple.cssresult.js'; // google3-only\nimport cardStyles from './card.css' with {type: 'css'}; // github-only\n// import cardStyles from './card.cssresult.js'; // google3-only\n\nimport {type CardColor, card} from './card.js';\n\n// Separate variable needed for closure.\nconst baseClass = mixinDelegatesAria(LitElement);\n\n/**\n * A Material Design card.\n *\n * @slot - Used to display the card's content. Note: add padding to content, not the host <md-gb-card> element.\n * @slot container - Used to set a custom background container for the card.\n * @csspart card - The card's root element.\n * @csspart card-btn - The card's main action button, when interactive.\n * @cssprop --container-color\n * @cssprop --container-elevation\n * @cssprop --container-shape\n * @cssprop --outline-color\n * @cssprop --outline-width\n * @cssprop --state-layer-color\n */\nexport class CardElement extends baseClass {\n /** @nocollapse */\n static override shadowRootOptions: ShadowRootInit = {\n mode: 'open',\n delegatesFocus: true,\n };\n\n static override styles: CSSResultOrNative[] = [\n focusRingStyles,\n rippleStyles,\n cardStyles,\n css`\n :host {\n display: inline-flex;\n isolation: isolate;\n }\n .card {\n flex: 1;\n position: relative;\n }\n .card:has([name='container'].has-slotted) {\n background-color: transparent;\n }\n .card.card-hide-outline {\n --outline-color: transparent;\n --container-elevation: var(--md-sys-elevation-shadow-0);\n }\n slot[name='container'] {\n display: block;\n position: absolute;\n inset: 0;\n border-radius: inherit;\n pointer-events: none;\n --color: var(--container-color);\n z-index: -1;\n transition: inherit;\n }\n slot[name='container']::slotted(*) {\n width: 100%;\n height: 100%;\n }\n `,\n ];\n\n @state() private hideOutline = false;\n\n private lastFiredEnabledState?: boolean;\n\n /** The color of the card. */\n @property() color: CardColor = 'outlined';\n\n /** Whether the card is disabled. */\n @property({type: Boolean}) disabled = false;\n\n /** Whether the card is interactive. */\n @property({type: Boolean}) interactive = false;\n\n override connectedCallback() {\n super.connectedCallback();\n this.addEventListener('md-gb:set-show-outline', this.handleSetShowOutline);\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener(\n 'md-gb:set-show-outline',\n this.handleSetShowOutline,\n );\n }\n\n private readonly handleSetShowOutline = (event: Event) => {\n const customEvent = event as CustomEvent<{shown: boolean}>;\n this.hideOutline = !customEvent.detail.shown;\n };\n\n protected override updated(changedProperties: PropertyValues) {\n super.updated(changedProperties);\n if (changedProperties.has('disabled')) {\n this.dispatchSetEnabledEvent();\n }\n }\n\n private dispatchSetEnabledEvent() {\n const enabled = !this.disabled;\n\n if (this.lastFiredEnabledState === enabled) return;\n\n const slot = this.shadowRoot?.querySelector(\n 'slot[name=\"container\"]',\n ) as HTMLSlotElement;\n if (slot) {\n for (const element of slot.assignedElements({flatten: true})) {\n element.dispatchEvent(\n new CustomEvent('md-gb:set-enabled', {\n detail: {enabled},\n }),\n );\n }\n }\n this.lastFiredEnabledState = enabled;\n }\n\n protected override render() {\n const {ariaLabel} = this as ARIAMixinStrict;\n return html`<div\n part=\"card\"\n class=\"${card({\n color: this.color,\n disabled: this.disabled,\n interactive: this.interactive,\n classes: {\n 'card-hide-outline': this.hideOutline,\n },\n })}\">\n ${this.interactive\n ? html`<button\n part=\"card-btn\"\n class=\"card-btn ripple focus-ring-target\"\n ${ripple()}\n ?disabled=\"${this.disabled}\"\n aria-label=\"${ariaLabel || nothing}\"></button>`\n : nothing}\n <slot></slot>\n <slot\n name=\"container\"\n ${hasSlotted()}\n @slotchange=${this.handleContainerSlotChange}></slot>\n </div>`;\n }\n\n private handleContainerSlotChange(event: Event) {\n const slot = event.target as HTMLSlotElement;\n\n const enabled = !this.disabled;\n\n for (const element of slot.assignedElements({flatten: true})) {\n element.dispatchEvent(new CustomEvent('md-gb:change-container-slot'));\n element.dispatchEvent(\n new CustomEvent('md-gb:set-enabled', {\n detail: {enabled},\n }),\n );\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["card.scss","_card-tokens.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA,GASA,kDACA,oBAEI,MCNF,+BACA,wDACA,iDACA,6BACA,mBACA,oDDKE,wECDF,wDDKE,kBCDF,iEDII,sIAKF,oBCCF,+CACA,qDACA,qEAIA,+FAIA,mEDCE,oBCGF,6DACA,wDDDI,sFCKJ,wDDDI,+CCKJ,2EDCI,aACA,sBACA,kBACA,gBACA,wCACA,qCACA,sCACA,uDAGF,gBACE,gBACA,+BACA,YACA,aACA,kBACA,QACA","file":"card.css"}
1
+ {"version":3,"sourceRoot":"","sources":["card.scss","_card-tokens.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA,GASA,kDACA,oBAEI,MCLF,+BACA,wDACA,iDACA,6BACA,mBACA,oDDIE,wECCF,wDDGE,kBCCF,iEDEI,6CCEJ,yFDGE,oBCGF,+CACA,qDACA,qBDFI,gDCMJ,gDDFI,+CCMJ,mEDDE,oBCKF,6DACA,wDDHI,sFCOJ,wDDHI,+CCOJ,qEDFE,MACE,aACA,sBACA,kBACA,gBACA,wCACA,qCACA,sCACA,uDAGF,gBACE,gBACA,+BACA,YACA,aACA,kBACA,QACA","file":"card.css"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { CardElement } from './card-element.js';
7
+ declare global {
8
+ interface HTMLElementTagNameMap {
9
+ /** A Material Design component. */
10
+ 'md-gb-card': CardElement;
11
+ }
12
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { CardElement } from './card-element.js';
7
+ customElements.define('md-gb-card', CardElement);
8
+ //# sourceMappingURL=md-gb-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md-gb-card.js","sourceRoot":"","sources":["md-gb-card.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAS9C,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2026 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {CardElement} from './card-element.js';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n /** A Material Design component. */\n 'md-gb-card': CardElement;\n }\n}\n\ncustomElements.define('md-gb-card', CardElement);\n"]}
@@ -4,6 +4,7 @@
4
4
  //
5
5
 
6
6
  @mixin root {
7
+ // LINT.IfChange
7
8
  --container-color: transparent;
8
9
  --container-shape: 2px;
9
10
  --container-size: 18px;
@@ -14,6 +15,7 @@
14
15
  --state-layer-color: var(--md-sys-color-on-surface);
15
16
  --state-layer-shape: 50%;
16
17
  --state-layer-size: 40px;
18
+ // LINT.ThenChange(md-checkbox.ts) keep in sync with `@cssprop` jsdoc tags
17
19
  }
18
20
 
19
21
  @mixin hovered {
@@ -7,17 +7,25 @@ import { CSSResultOrNative, LitElement } from 'lit';
7
7
  import { createValidator, getValidityAnchor } from '../../../behaviors/constraint-validation.js';
8
8
  import { getFormState, getFormValue } from '../../../behaviors/form-associated.js';
9
9
  import { CheckboxValidator } from '../../../behaviors/validators/checkbox-validator.js';
10
- declare global {
11
- interface HTMLElementTagNameMap {
12
- /** A Material Design checkbox component. */
13
- 'md-checkbox': Checkbox;
14
- }
15
- }
16
10
  declare const baseClass: import("@material/web/labs/behaviors/mixin.js").MixinReturn<import("@material/web/labs/behaviors/mixin.js").MixinReturn<import("@material/web/labs/behaviors/mixin.js").MixinReturn<(abstract new (...args: any[]) => import("../../../behaviors/element-internals.js").WithElementInternals) & typeof LitElement & import("../../../behaviors/form-associated.js").FormAssociatedConstructor, import("../../../behaviors/form-associated.js").FormAssociated>, import("../../../behaviors/constraint-validation.js").ConstraintValidation>>;
17
11
  /**
18
12
  * A Material Design checkbox component.
13
+ *
14
+ * @fires {InputEvent} input - Fired when the checkbox is checked or unchecked. --bubbles --composed
15
+ * @fires {Event} change - Fired when the checkbox is checked or unchecked. --bubbles
16
+ * @csspart checkbox - The checkbox's root element.
17
+ * @cssprop --container-color
18
+ * @cssprop --container-shape
19
+ * @cssprop --container-size
20
+ * @cssprop --icon-color
21
+ * @cssprop --icon-size
22
+ * @cssprop --outline-color
23
+ * @cssprop --outline-width
24
+ * @cssprop --state-layer-color
25
+ * @cssprop --state-layer-shape
26
+ * @cssprop --state-layer-size
19
27
  */
20
- export declare class Checkbox extends baseClass {
28
+ export declare class CheckboxElement extends baseClass {
21
29
  /** @nocollapse */
22
30
  static shadowRootOptions: ShadowRootInit;
23
31
  static styles: CSSResultOrNative[];
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { __decorate } from "tslib";
7
7
  import { css, html, LitElement, nothing } from 'lit';
8
- import { customElement, property, query } from 'lit/decorators.js';
8
+ import { property, query } from 'lit/decorators.js';
9
9
  import { mixinDelegatesAria } from '../../../../internal/aria/delegate.js';
10
10
  import { redispatchEvent } from '../../../../internal/events/redispatch-event.js';
11
11
  import { createValidator, getValidityAnchor, mixinConstraintValidation, } from '../../../behaviors/constraint-validation.js';
@@ -23,8 +23,22 @@ import { checkbox } from './checkbox.js';
23
23
  const baseClass = mixinDelegatesAria(mixinConstraintValidation(mixinFormAssociated(mixinElementInternals(LitElement))));
24
24
  /**
25
25
  * A Material Design checkbox component.
26
+ *
27
+ * @fires {InputEvent} input - Fired when the checkbox is checked or unchecked. --bubbles --composed
28
+ * @fires {Event} change - Fired when the checkbox is checked or unchecked. --bubbles
29
+ * @csspart checkbox - The checkbox's root element.
30
+ * @cssprop --container-color
31
+ * @cssprop --container-shape
32
+ * @cssprop --container-size
33
+ * @cssprop --icon-color
34
+ * @cssprop --icon-size
35
+ * @cssprop --outline-color
36
+ * @cssprop --outline-width
37
+ * @cssprop --state-layer-color
38
+ * @cssprop --state-layer-shape
39
+ * @cssprop --state-layer-size
26
40
  */
27
- let Checkbox = class Checkbox extends baseClass {
41
+ export class CheckboxElement extends baseClass {
28
42
  constructor() {
29
43
  super(...arguments);
30
44
  /**
@@ -130,13 +144,13 @@ let Checkbox = class Checkbox extends baseClass {
130
144
  [getValidityAnchor]() {
131
145
  return this.input;
132
146
  }
133
- };
147
+ }
134
148
  /** @nocollapse */
135
- Checkbox.shadowRootOptions = {
149
+ CheckboxElement.shadowRootOptions = {
136
150
  mode: 'open',
137
151
  delegatesFocus: true,
138
152
  };
139
- Checkbox.styles = [
153
+ CheckboxElement.styles = [
140
154
  focusRingStyles,
141
155
  rippleStyles,
142
156
  checkboxStyles,
@@ -151,24 +165,20 @@ Checkbox.styles = [
151
165
  ];
152
166
  __decorate([
153
167
  property({ type: Boolean })
154
- ], Checkbox.prototype, "error", void 0);
168
+ ], CheckboxElement.prototype, "error", void 0);
155
169
  __decorate([
156
170
  property({ type: Boolean })
157
- ], Checkbox.prototype, "checked", void 0);
171
+ ], CheckboxElement.prototype, "checked", void 0);
158
172
  __decorate([
159
173
  property({ type: Boolean })
160
- ], Checkbox.prototype, "indeterminate", void 0);
174
+ ], CheckboxElement.prototype, "indeterminate", void 0);
161
175
  __decorate([
162
176
  property({ type: Boolean })
163
- ], Checkbox.prototype, "required", void 0);
177
+ ], CheckboxElement.prototype, "required", void 0);
164
178
  __decorate([
165
179
  property()
166
- ], Checkbox.prototype, "value", void 0);
180
+ ], CheckboxElement.prototype, "value", void 0);
167
181
  __decorate([
168
182
  query('input', true)
169
- ], Checkbox.prototype, "input", void 0);
170
- Checkbox = __decorate([
171
- customElement('md-checkbox')
172
- ], Checkbox);
173
- export { Checkbox };
174
- //# sourceMappingURL=md-checkbox.js.map
183
+ ], CheckboxElement.prototype, "input", void 0);
184
+ //# sourceMappingURL=checkbox-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox-element.js","sourceRoot":"","sources":["checkbox-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, query} from 'lit/decorators.js';\nimport {ARIAMixinStrict} from '../../../../internal/aria/aria.js';\nimport {mixinDelegatesAria} from '../../../../internal/aria/delegate.js';\nimport {redispatchEvent} from '../../../../internal/events/redispatch-event.js';\nimport {\n createValidator,\n getValidityAnchor,\n mixinConstraintValidation,\n} from '../../../behaviors/constraint-validation.js';\nimport {mixinElementInternals} from '../../../behaviors/element-internals.js';\nimport {\n getFormState,\n getFormValue,\n mixinFormAssociated,\n} from '../../../behaviors/form-associated.js';\nimport {CheckboxValidator} from '../../../behaviors/validators/checkbox-validator.js';\n\nimport focusRingStyles from '../focus/focus-ring.css' with {type: 'css'}; // github-only\n// import focusRingStyles from '../focus/focus-ring.cssresult.js'; // google3-only\nimport rippleStyles from '../ripple/ripple.css' with {type: 'css'}; // github-only\n// import rippleStyles from '../ripple/ripple.cssresult.js'; // google3-only\nimport checkboxStyles from './checkbox.css' with {type: 'css'}; // github-only\n// import checkboxStyles from './checkbox.cssresult.js'; // google3-only\n\nimport {checkbox} from './checkbox.js';\n\n// Separate variable needed for closure.\nconst baseClass = mixinDelegatesAria(\n mixinConstraintValidation(\n mixinFormAssociated(mixinElementInternals(LitElement)),\n ),\n);\n\n/**\n * A Material Design checkbox component.\n *\n * @fires {InputEvent} input - Fired when the checkbox is checked or unchecked. --bubbles --composed\n * @fires {Event} change - Fired when the checkbox is checked or unchecked. --bubbles\n * @csspart checkbox - The checkbox's root element.\n * @cssprop --container-color\n * @cssprop --container-shape\n * @cssprop --container-size\n * @cssprop --icon-color\n * @cssprop --icon-size\n * @cssprop --outline-color\n * @cssprop --outline-width\n * @cssprop --state-layer-color\n * @cssprop --state-layer-shape\n * @cssprop --state-layer-size\n */\nexport class CheckboxElement extends baseClass {\n /** @nocollapse */\n static override shadowRootOptions: ShadowRootInit = {\n mode: 'open',\n delegatesFocus: true,\n };\n\n static override styles: CSSResultOrNative[] = [\n focusRingStyles,\n rippleStyles,\n checkboxStyles,\n css`\n :host {\n display: inline-flex;\n }\n .checkbox {\n flex: 1;\n }\n `,\n ];\n\n /**\n * Whether or not the checkbox is invalid.\n */\n @property({type: Boolean}) error = false;\n\n /**\n * Whether or not the checkbox is selected.\n */\n @property({type: Boolean}) checked = false;\n\n /**\n * The default checked state of the checkbox.\n */\n get defaultChecked(): boolean {\n return this.hasAttribute('checked');\n }\n set defaultChecked(value: boolean) {\n this.toggleAttribute('checked', value || false);\n }\n\n /**\n * Whether or not the checkbox is indeterminate.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#indeterminate_state_checkboxes\n */\n @property({type: Boolean}) indeterminate = false;\n\n /**\n * When true, require the checkbox to be selected when participating in\n * form submission.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#validation\n */\n @property({type: Boolean}) required = false;\n\n /**\n * The value of the checkbox that is submitted with a form when selected.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#value\n */\n @property() value = 'on';\n\n @query('input', true)\n private readonly input!: HTMLInputElement | null;\n /**\n * Mimics the behavior of <input> dirty checkedness, where the `checked`\n * attribute only updates the checked state if the checkbox has not been\n * interacted with.\n *\n * @see https://html.spec.whatwg.org/multipage/input.html#concept-input-checked-dirty-flag\n */\n private dirtyCheckedness = false;\n\n protected override render() {\n // Needed for closure conformance\n const {ariaLabel, ariaInvalid} = this as ARIAMixinStrict;\n return html`\n <input\n part=\"checkbox\"\n class=\"${checkbox({invalid: this.error})}\"\n type=\"checkbox\"\n aria-checked=${this.indeterminate ? 'mixed' : nothing}\n aria-label=${ariaLabel || nothing}\n aria-invalid=${ariaInvalid || this.error || nothing}\n ?disabled=${this.disabled}\n ?required=${this.required}\n .indeterminate=${this.indeterminate}\n .checked=${this.checked}\n @input=${this.handleInput}\n @change=${this.handleChange} />\n `;\n }\n\n private handleInput(event: Event) {\n this.dirtyCheckedness = true;\n const target = event.target as HTMLInputElement;\n this.checked = target.checked;\n this.indeterminate = target.indeterminate;\n // <input> 'input' event bubbles and is composed, don't re-dispatch it.\n }\n\n private handleChange(event: Event) {\n this.dirtyCheckedness = true;\n // <input> 'change' event is not composed, re-dispatch it.\n redispatchEvent(this, event);\n }\n\n override attributeChangedCallback(\n name: string,\n oldValue: string | null,\n newValue: string | null,\n ) {\n if (name === 'checked' && this.dirtyCheckedness) {\n // The 'checked' attribute does not update checkboxes that have been\n // interacted with.\n return;\n }\n\n super.attributeChangedCallback(name, oldValue, newValue);\n }\n\n override [getFormValue]() {\n return this.checked ? this.value : null;\n }\n\n override [getFormState]() {\n return String(this.checked);\n }\n\n override formResetCallback() {\n this.dirtyCheckedness = false;\n this.checked = this.defaultChecked;\n }\n\n override formStateRestoreCallback(state: string) {\n this.checked = state === 'true';\n }\n\n override [createValidator]() {\n return new CheckboxValidator(() => this);\n }\n\n override [getValidityAnchor]() {\n return this.input;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["checkbox.scss","_checkbox-tokens.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA,GASA,kDACA,wBAEI,UCNF,+BACA,uBACA,uBACA,0BACA,kBACA,wDACA,qBACA,oDACA,yBACA,yBDCE,4BCGF,oDACA,mFAIA,8EAIA,iDACA,gDDDE,8DCKF,mBACA,+CACA,6CDJI,mFCQJ,iDDJI,qFCQJ,oDDHE,gCCOF,+CACA,2CDLI,uFCSJ,6CACA,2CDLE,kCCSF,sEDNI,yFCUJ,wEACA,0CDNE,UACE,gBACA,kBACA,oBACA,mBACA,uBACA,WACA,YACA,sBACA,aACA,SACA,gBAEA,oDACE,iBAGF,kBACE,oBACA,oBACA,mBACA,uBACA,sBACA,gBACA,eACA,4BACA,kCACA,qCACA,uDACA,wBACA,4CAGF,iBACE,WACA,kBACA,eACA,+BACA,+BACA,8BACA,uCACA,kCACA,wCACA,oCACA","file":"checkbox.css"}
1
+ {"version":3,"sourceRoot":"","sources":["checkbox.scss","_checkbox-tokens.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA,GASA,kDACA,wBAEI,UCLF,+BACA,uBACA,uBACA,0BACA,kBACA,wDACA,qBACA,oDACA,yBACA,qDAKA,oDACA,gDDFE,mCCMF,gDDFE,8BCMF,iDACA,gDDHE,8DCOF,mBACA,+CACA,6CDNI,mFCUJ,iDDNI,qFCUJ,oDDLE,gCCSF,+CACA,2CDPI,uFCWJ,6CACA,2CDPE,kCCWF,sEDRI,yFCYJ,wEACA,0CDRE,UACE,gBACA,kBACA,oBACA,mBACA,uBACA,WACA,YACA,sBACA,aACA,SACA,gBAEA,oDACE,iBAGF,kBACE,oBACA,oBACA,mBACA,uBACA,sBACA,gBACA,eACA,4BACA,kCACA,qCACA,uDACA,wBACA,4CAGF,iBACE,WACA,kBACA,eACA,+BACA,+BACA,8BACA,uCACA,kCACA,wCACA,oCACA","file":"checkbox.css"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { CheckboxElement } from './checkbox-element.js';
7
+ declare global {
8
+ interface HTMLElementTagNameMap {
9
+ /** A Material Design component. */
10
+ 'md-gb-checkbox': CheckboxElement;
11
+ }
12
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { CheckboxElement } from './checkbox-element.js';
7
+ customElements.define('md-gb-checkbox', CheckboxElement);
8
+ //# sourceMappingURL=md-gb-checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md-gb-checkbox.js","sourceRoot":"","sources":["md-gb-checkbox.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AAStD,cAAc,CAAC,MAAM,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2026 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {CheckboxElement} from './checkbox-element.js';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n /** A Material Design component. */\n 'md-gb-checkbox': CheckboxElement;\n }\n}\n\ncustomElements.define('md-gb-checkbox', CheckboxElement);\n"]}
@@ -4,6 +4,8 @@
4
4
  //
5
5
 
6
6
  @mixin root {
7
+ // LINT.IfChange
7
8
  --color: var(--md-sys-color-outline-variant);
8
9
  --thickness: 1px;
10
+ // LINT.ThenChange(md-divider.ts) keep in sync with `@cssprop` jsdoc tags
9
11
  }
@@ -4,16 +4,14 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { CSSResultOrNative, LitElement } from 'lit';
7
- declare global {
8
- interface HTMLElementTagNameMap {
9
- /** A Material Design divider component. */
10
- 'md-divider': Divider;
11
- }
12
- }
13
7
  /**
14
8
  * A Material Design divider component.
9
+ *
10
+ * @csspart divider - The divider element.
11
+ * @cssprop --color
12
+ * @cssprop --thickness
15
13
  */
16
- export declare class Divider extends LitElement {
14
+ export declare class DividerElement extends LitElement {
17
15
  static styles: CSSResultOrNative[];
18
16
  /**
19
17
  * Whether or not the divider is vertical.
@@ -5,14 +5,18 @@
5
5
  */
6
6
  import { __decorate } from "tslib";
7
7
  import { css, html, LitElement } from 'lit';
8
- import { customElement, property } from 'lit/decorators.js';
8
+ import { property } from 'lit/decorators.js';
9
9
  import dividerStyles from './divider.css' with { type: 'css' }; // github-only
10
10
  // import {styles as dividerStyles} from './divider.cssresult.js'; // google3-only
11
11
  import { divider } from './divider.js';
12
12
  /**
13
13
  * A Material Design divider component.
14
+ *
15
+ * @csspart divider - The divider element.
16
+ * @cssprop --color
17
+ * @cssprop --thickness
14
18
  */
15
- let Divider = class Divider extends LitElement {
19
+ export class DividerElement extends LitElement {
16
20
  constructor() {
17
21
  super(...arguments);
18
22
  /**
@@ -23,8 +27,8 @@ let Divider = class Divider extends LitElement {
23
27
  render() {
24
28
  return html `<div part="divider" class="${divider(this)}"></div>`;
25
29
  }
26
- };
27
- Divider.styles = [
30
+ }
31
+ DividerElement.styles = [
28
32
  dividerStyles,
29
33
  css `
30
34
  :host {
@@ -43,9 +47,5 @@ Divider.styles = [
43
47
  ];
44
48
  __decorate([
45
49
  property({ type: Boolean, reflect: true })
46
- ], Divider.prototype, "vertical", void 0);
47
- Divider = __decorate([
48
- customElement('md-divider')
49
- ], Divider);
50
- export { Divider };
51
- //# sourceMappingURL=md-divider.js.map
50
+ ], DividerElement.prototype, "vertical", void 0);
51
+ //# sourceMappingURL=divider-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"divider-element.js","sourceRoot":"","sources":["divider-element.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,GAAG,EAAqB,IAAI,EAAE,UAAU,EAAC,MAAM,KAAK,CAAC;AAC7D,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAE3C,OAAO,aAAa,MAAM,eAAe,CAAC,OAAM,IAAI,EAAE,KAAK,EAAC,CAAC,CAAC,cAAc;AAC5E,kFAAkF;AAElF,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,OAAO,cAAe,SAAQ,UAAU;IAA9C;;QAmBE;;WAEG;QACuC,aAAQ,GAAG,KAAK,CAAC;IAK7D,CAAC;IAHoB,MAAM;QACvB,OAAO,IAAI,CAAA,8BAA8B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;IACnE,CAAC;;AAzBe,qBAAM,GAAwB;IAC5C,aAAa;IACb,GAAG,CAAA;;;;;;;;;;;;;KAaF;CACF,AAhBqB,CAgBpB;AAKwC;IAAzC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;gDAAkB","sourcesContent":["/**\n * @license\n * Copyright 2026 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {css, CSSResultOrNative, html, LitElement} from 'lit';\nimport {property} from 'lit/decorators.js';\n\nimport dividerStyles from './divider.css' with {type: 'css'}; // github-only\n// import {styles as dividerStyles} from './divider.cssresult.js'; // google3-only\n\nimport {divider} from './divider.js';\n\n/**\n * A Material Design divider component.\n *\n * @csspart divider - The divider element.\n * @cssprop --color\n * @cssprop --thickness\n */\nexport class DividerElement extends LitElement {\n static override styles: CSSResultOrNative[] = [\n dividerStyles,\n css`\n :host {\n display: flex;\n }\n .divider {\n flex: 1;\n }\n :host(:not([vertical])) {\n width: 100%;\n }\n :host([vertical]) {\n min-height: 100%;\n }\n `,\n ];\n\n /**\n * Whether or not the divider is vertical.\n */\n @property({type: Boolean, reflect: true}) vertical = false;\n\n protected override render() {\n return html`<div part=\"divider\" class=\"${divider(this)}\"></div>`;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["divider.scss","_divider-tokens.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA,GASA,cACA,uBAEI,SCNF,6CACA,iBDQI,sBACA,YACA,aAGF,gCACE,kDACA,WAGF,0BACE,sDACA","file":"divider.css"}
1
+ {"version":3,"sourceRoot":"","sources":["divider.scss","_divider-tokens.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA,GASA,cACA,uBAEI,SCLF,6CACA,iBDOI,sBACA,YACA,aAGF,gCACE,kDACA,WAGF,0BACE,sDACA","file":"divider.css"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { DividerElement } from './divider-element.js';
7
+ declare global {
8
+ interface HTMLElementTagNameMap {
9
+ /** A Material Design component. */
10
+ 'md-gb-divider': DividerElement;
11
+ }
12
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { DividerElement } from './divider-element.js';
7
+ customElements.define('md-gb-divider', DividerElement);
8
+ //# sourceMappingURL=md-gb-divider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md-gb-divider.js","sourceRoot":"","sources":["md-gb-divider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AASpD,cAAc,CAAC,MAAM,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2026 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {DividerElement} from './divider-element.js';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n /** A Material Design component. */\n 'md-gb-divider': DividerElement;\n }\n}\n\ncustomElements.define('md-gb-divider', DividerElement);\n"]}
@@ -4,6 +4,7 @@
4
4
  //
5
5
 
6
6
  @mixin root {
7
+ // LINT.IfChange
7
8
  --container-color: transparent;
8
9
  --container-elevation: var(--md-sys-elevation-shadow-3);
9
10
  --container-height: 56px;
@@ -16,6 +17,7 @@
16
17
  --label-text-tracking: var(--md-sys-typescale-label-lg-tracking);
17
18
  --leading-space: 16px;
18
19
  --trailing-space: 16px;
20
+ // LINT.ThenChange(md-fab.ts) keep in sync with `@cssprop` jsdoc tags
19
21
  }
20
22
 
21
23
  @mixin hovered {