@redvars/peacock 3.6.3 → 3.8.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 (179) hide show
  1. package/dist/ButtonConstants-D06bY4uy.js +114 -0
  2. package/dist/ButtonConstants-D06bY4uy.js.map +1 -0
  3. package/dist/{BaseHyperlinkMixin-BNuwbiEf.js → NativeHyperlinkMixin-DrYXyfMQ.js} +8 -10
  4. package/dist/NativeHyperlinkMixin-DrYXyfMQ.js.map +1 -0
  5. package/dist/assets/components.css +1 -1
  6. package/dist/assets/components.css.map +1 -1
  7. package/dist/assets/styles.css +1 -1
  8. package/dist/assets/styles.css.map +1 -1
  9. package/dist/{button-colors-Cg6oxiz-.js → button-colors-DSuBHd-i.js} +200 -186
  10. package/dist/button-colors-DSuBHd-i.js.map +1 -0
  11. package/dist/button-group.js +8 -8
  12. package/dist/button-group.js.map +1 -1
  13. package/dist/button.js +224 -124
  14. package/dist/button.js.map +1 -1
  15. package/dist/calendar-column-view.js +0 -1
  16. package/dist/calendar-column-view.js.map +1 -1
  17. package/dist/calendar-month-view.js +0 -1
  18. package/dist/calendar-month-view.js.map +1 -1
  19. package/dist/card-content.js +0 -1
  20. package/dist/card-content.js.map +1 -1
  21. package/dist/card.js +96 -90
  22. package/dist/card.js.map +1 -1
  23. package/dist/cb-compound-expression.js +4 -1
  24. package/dist/cb-compound-expression.js.map +1 -1
  25. package/dist/cb-divider.js +0 -1
  26. package/dist/cb-divider.js.map +1 -1
  27. package/dist/cb-expression.js +0 -2
  28. package/dist/cb-expression.js.map +1 -1
  29. package/dist/cb-predicate.js +0 -1
  30. package/dist/cb-predicate.js.map +1 -1
  31. package/dist/code-highlighter.js +23 -6
  32. package/dist/code-highlighter.js.map +1 -1
  33. package/dist/custom-elements-jsdocs.json +5102 -18408
  34. package/dist/custom-elements.json +19630 -20205
  35. package/dist/fab.js +181 -117
  36. package/dist/fab.js.map +1 -1
  37. package/dist/{flow-designer-node-9Bqyn6qx.js → flow-designer-node-BWrPuxAR.js} +1 -2
  38. package/dist/flow-designer-node-BWrPuxAR.js.map +1 -0
  39. package/dist/flow-designer-node.js +1 -1
  40. package/dist/flow-designer.js +5 -5
  41. package/dist/icon-button-CYqrnMnF.js +318 -0
  42. package/dist/icon-button-CYqrnMnF.js.map +1 -0
  43. package/dist/index.js +8 -8
  44. package/dist/{navigation-rail-DAUuJ_Yp.js → navigation-rail-CM_svs5_.js} +511 -295
  45. package/dist/navigation-rail-CM_svs5_.js.map +1 -0
  46. package/dist/observe-slot-change-D8Xg-kSS.js +60 -0
  47. package/dist/observe-slot-change-D8Xg-kSS.js.map +1 -0
  48. package/dist/peacock-loader.js +7 -7
  49. package/dist/peacock-loader.js.map +1 -1
  50. package/dist/popover-content.js +0 -1
  51. package/dist/popover-content.js.map +1 -1
  52. package/dist/search.js +4 -1
  53. package/dist/search.js.map +1 -1
  54. package/dist/src/__controllers/attachable-controller.d.ts +109 -0
  55. package/dist/src/__mixins/{BaseButtonMixin.d.ts → NativeButtonMixin.d.ts} +3 -3
  56. package/dist/src/__mixins/{BaseHyperlinkMixin.d.ts → NativeHyperlinkMixin.d.ts} +3 -4
  57. package/dist/src/__utils/is-link.d.ts +1 -0
  58. package/dist/src/__utils/observe-slot-change.d.ts +1 -1
  59. package/dist/src/accordion/accordion-item.d.ts +0 -1
  60. package/dist/src/breadcrumb/breadcrumb-item/breadcrumb-item.d.ts +0 -1
  61. package/dist/src/button/ButtonConstants.d.ts +1 -0
  62. package/dist/src/button/GroupButtonInterface.d.ts +4 -0
  63. package/dist/src/button/button/button.d.ts +32 -7
  64. package/dist/src/button/button-group/button-group.d.ts +2 -1
  65. package/dist/src/button/icon-button/icon-button.d.ts +26 -5
  66. package/dist/src/button/index.d.ts +1 -1
  67. package/dist/src/calendar/calendar-column-view.d.ts +0 -1
  68. package/dist/src/calendar/calendar-month-view.d.ts +0 -1
  69. package/dist/src/card/card-content.d.ts +0 -1
  70. package/dist/src/card/card.d.ts +9 -6
  71. package/dist/src/chip/chip/chip.d.ts +22 -3
  72. package/dist/src/condition-builder/cb-compound-expression.d.ts +0 -1
  73. package/dist/src/condition-builder/cb-divider.d.ts +0 -1
  74. package/dist/src/condition-builder/cb-expression.d.ts +0 -1
  75. package/dist/src/condition-builder/cb-predicate.d.ts +0 -1
  76. package/dist/src/fab/fab.d.ts +20 -6
  77. package/dist/src/flow-designer/flow-designer-node.d.ts +0 -1
  78. package/dist/src/focus-ring/focus-ring.d.ts +26 -20
  79. package/dist/src/item/item.d.ts +2 -1
  80. package/dist/src/link/link.d.ts +1 -1
  81. package/dist/src/list/list-item.d.ts +1 -2
  82. package/dist/src/menu/menu-item/menu-item.d.ts +1 -2
  83. package/dist/src/menu/sub-menu/sub-menu.d.ts +0 -1
  84. package/dist/src/navigation-rail/navigation-rail-item.d.ts +0 -2
  85. package/dist/src/popover/popover-content.d.ts +0 -1
  86. package/dist/src/ripple/ripple.d.ts +9 -1
  87. package/dist/src/segmented-button/segmented-button.d.ts +0 -1
  88. package/dist/src/select/option.d.ts +0 -1
  89. package/dist/src/sidebar-menu/sidebar-menu-item.d.ts +0 -1
  90. package/dist/src/sidebar-menu/sidebar-sub-menu.d.ts +0 -1
  91. package/dist/src/tabs/tab-panel.d.ts +0 -1
  92. package/dist/src/tabs/tab.d.ts +4 -6
  93. package/dist/tsconfig.tsbuildinfo +1 -1
  94. package/package.json +4 -2
  95. package/readme.md +2 -2
  96. package/scss/components.scss +0 -1
  97. package/scss/mixin.scss +10 -13
  98. package/scss/styles.scss +1 -3
  99. package/src/__controllers/attachable-controller.ts +198 -0
  100. package/src/__mixins/NativeButtonMixin.ts +87 -0
  101. package/src/__mixins/{BaseHyperlinkMixin.ts → NativeHyperlinkMixin.ts} +15 -15
  102. package/src/__utils/is-link.ts +3 -0
  103. package/src/__utils/observe-slot-change.ts +46 -14
  104. package/src/accordion/accordion-item.scss +1 -1
  105. package/src/accordion/accordion-item.ts +0 -1
  106. package/src/breadcrumb/breadcrumb-item/breadcrumb-item.ts +0 -1
  107. package/src/button/ButtonConstants.ts +1 -0
  108. package/src/button/GroupButtonInterface.ts +4 -0
  109. package/src/button/button/button-colors.scss +2 -2
  110. package/src/button/button/button-layers.scss +124 -0
  111. package/src/button/button/button-sizes.scss +20 -42
  112. package/src/button/button/button.scss +71 -169
  113. package/src/button/button/button.ts +229 -78
  114. package/src/button/button/only-button.scss +13 -0
  115. package/src/button/button-group/button-group.ts +59 -17
  116. package/src/button/icon-button/icon-button-sizes.scss +6 -21
  117. package/src/button/icon-button/icon-button.ts +198 -93
  118. package/src/button/index.ts +1 -1
  119. package/src/calendar/calendar-column-view.ts +0 -1
  120. package/src/calendar/calendar-month-view.ts +0 -1
  121. package/src/card/card-content.ts +2 -3
  122. package/src/card/card.scss +87 -95
  123. package/src/card/card.ts +62 -60
  124. package/src/chip/chip/chip.scss +65 -70
  125. package/src/chip/chip/chip.ts +155 -56
  126. package/src/code-highlighter/code-highlighter.scss +1 -1
  127. package/src/code-highlighter/code-highlighter.ts +20 -5
  128. package/src/condition-builder/cb-compound-expression.scss +4 -0
  129. package/src/condition-builder/cb-compound-expression.ts +0 -1
  130. package/src/condition-builder/cb-divider.ts +0 -1
  131. package/src/condition-builder/cb-expression.scss +0 -1
  132. package/src/condition-builder/cb-expression.ts +0 -1
  133. package/src/condition-builder/cb-predicate.ts +0 -1
  134. package/src/elevation/elevation.scss +5 -1
  135. package/src/fab/fab-colors.scss +2 -2
  136. package/src/fab/fab-sizes.scss +24 -34
  137. package/src/fab/fab.scss +77 -71
  138. package/src/fab/fab.ts +141 -65
  139. package/src/flow-designer/flow-designer-node.ts +0 -1
  140. package/src/focus-ring/focus-ring.ts +81 -72
  141. package/src/item/item.scss +77 -66
  142. package/src/item/item.ts +61 -39
  143. package/src/link/link.scss +1 -10
  144. package/src/link/link.ts +4 -2
  145. package/src/list/list-item.ts +8 -8
  146. package/src/menu/menu-item/menu-item.ts +17 -8
  147. package/src/menu/sub-menu/sub-menu.ts +0 -1
  148. package/src/navigation-rail/navigation-rail-item.scss +5 -0
  149. package/src/navigation-rail/navigation-rail-item.ts +10 -15
  150. package/src/peacock-loader.ts +1 -1
  151. package/src/popover/popover-content.ts +0 -1
  152. package/src/ripple/ripple.ts +52 -20
  153. package/src/search/search.scss +3 -0
  154. package/src/segmented-button/segmented-button.ts +0 -1
  155. package/src/select/option.ts +0 -1
  156. package/src/sidebar-menu/sidebar-menu-item.ts +0 -1
  157. package/src/sidebar-menu/sidebar-sub-menu.ts +0 -1
  158. package/src/skeleton/skeleton.scss +5 -1
  159. package/src/tabs/tab-panel.ts +0 -1
  160. package/src/tabs/tab.ts +60 -70
  161. package/src/text/text.css-component.scss +3 -21
  162. package/src/tooltip/tooltip.scss +5 -8
  163. package/src/tooltip/tooltip.ts +1 -2
  164. package/dist/BaseButton-BNFAYn-S.js +0 -219
  165. package/dist/BaseButton-BNFAYn-S.js.map +0 -1
  166. package/dist/BaseHyperlinkMixin-BNuwbiEf.js.map +0 -1
  167. package/dist/button-colors-Cg6oxiz-.js.map +0 -1
  168. package/dist/flow-designer-node-9Bqyn6qx.js.map +0 -1
  169. package/dist/icon-button-AdJBEoNy.js +0 -251
  170. package/dist/icon-button-AdJBEoNy.js.map +0 -1
  171. package/dist/navigation-rail-DAUuJ_Yp.js.map +0 -1
  172. package/dist/observe-slot-change-BGJfgg2E.js +0 -31
  173. package/dist/observe-slot-change-BGJfgg2E.js.map +0 -1
  174. package/dist/src/button/BaseButton.d.ts +0 -28
  175. package/dist/src/focus-ring/FocusAttachableController.d.ts +0 -8
  176. package/src/__mixins/BaseButtonMixin.ts +0 -83
  177. package/src/button/BaseButton.ts +0 -113
  178. package/src/focus-ring/FocusAttachableController.ts +0 -28
  179. package/src/popover/tooltip.css-component.scss +0 -19
@@ -2,6 +2,8 @@ import { html, LitElement } from 'lit';
2
2
  import { property, state } from 'lit/decorators.js';
3
3
  import { unsafeHTML } from 'lit/directives/unsafe-html.js';
4
4
  import { classMap } from 'lit/directives/class-map.js';
5
+ import pierreDark from '@pierre/theme/pierre-dark';
6
+ import pierreLight from '@pierre/theme/pierre-light';
5
7
 
6
8
  import prettier from 'prettier/standalone';
7
9
 
@@ -113,12 +115,17 @@ export class CodeHighlighter extends LitElement {
113
115
  codeString = await prettier.format(codeString, {
114
116
  parser: 'babel',
115
117
  plugins: [prettierPluginBabel, prettierPluginEstree],
118
+ bracketSameLine: true,
119
+ // Helps if you are writing HTML inside template literals
120
+ htmlWhitespaceSensitivity: 'ignore',
116
121
  });
117
122
  break;
118
123
  case 'html':
119
124
  codeString = await prettier.format(codeString, {
120
125
  parser: 'html',
121
126
  plugins: [prettierPluginHtml],
127
+ bracketSameLine: true,
128
+ htmlWhitespaceSensitivity: 'ignore',
122
129
  });
123
130
  break;
124
131
  case 'css':
@@ -148,8 +155,10 @@ export class CodeHighlighter extends LitElement {
148
155
  this.compiledCode = await codeToHtml(codeString, {
149
156
  lang: this.language,
150
157
  themes: {
151
- light: 'github-light',
152
- dark: 'github-dark',
158
+ // @ts-ignore
159
+ light: pierreLight,
160
+ // @ts-ignore
161
+ dark: pierreDark,
153
162
  },
154
163
  transformers,
155
164
  });
@@ -195,17 +204,23 @@ export class CodeHighlighter extends LitElement {
195
204
  })}
196
205
  >
197
206
  <div class="header">
198
- <div class="header-title">${this.language}</div>
207
+ <div class="header-title">
208
+ <slot name="title">${this.language?.toUpperCase()}</slot>
209
+ </div>
199
210
  <div class="header-actions">
200
211
  <wc-icon-button
201
212
  color=${this._copied ? 'success' : 'surface'}
202
213
  variant="text"
203
214
  size="xs"
204
- aria-label=${this._copied ? locale.copied : locale.copyToClipboard}
215
+ aria-label=${this._copied
216
+ ? locale.copied
217
+ : locale.copyToClipboard}
205
218
  tooltip=${this._copied ? locale.copied : locale.copyToClipboard}
206
219
  @click=${this.__handleCopyClick}
207
220
  >
208
- <wc-icon name="content_copy"></wc-icon>
221
+ <wc-icon
222
+ name=${this._copied ? 'check' : 'content_copy'}
223
+ ></wc-icon>
209
224
  </wc-icon-button>
210
225
  </div>
211
226
  </div>
@@ -19,6 +19,7 @@
19
19
  .field-label {
20
20
  @include mixin.get-typography-not-important(label-medium);
21
21
  color: var(--color-on-surface-variant);
22
+ text-align: center;
22
23
  }
23
24
 
24
25
  .field-compound-type {
@@ -29,6 +30,9 @@
29
30
 
30
31
  .conditions {
31
32
  flex: 1;
33
+ display: flex;
34
+ flex-direction: column;
35
+ gap: 1rem;
32
36
  }
33
37
  }
34
38
 
@@ -9,7 +9,6 @@ import styles from './cb-compound-expression.scss';
9
9
  * @rawTag cb-compound-expression
10
10
  * @summary A compound expression group in a condition builder that displays a field label, an optional condition operator divider, and slots for child expressions.
11
11
  * @tags condition-builder
12
- * @parentRawTag compound-builder
13
12
  *
14
13
  * @example
15
14
  * ```html
@@ -10,7 +10,6 @@ import styles from './cb-divider.scss';
10
10
  * @rawTag cb-divider
11
11
  * @summary A divider line used within a condition builder to visually connect expressions with operator tags.
12
12
  * @tags condition-builder
13
- * @parentRawTag compound-builder
14
13
  *
15
14
  * @example
16
15
  * ```html
@@ -10,5 +10,4 @@
10
10
  display: flex;
11
11
  gap: var(--spacing-100);
12
12
  align-items: center;
13
- padding-bottom: var(--spacing-200);
14
13
  }
@@ -9,7 +9,6 @@ import styles from './cb-expression.scss';
9
9
  * @rawTag cb-expression
10
10
  * @summary An expression row within a condition builder, containing an operator select and a slot for value inputs.
11
11
  * @tags condition-builder
12
- * @parentRawTag compound-builder
13
12
  *
14
13
  * @example
15
14
  * ```html
@@ -10,7 +10,6 @@ import styles from './cb-predicate.scss';
10
10
  * @rawTag cb-predicate
11
11
  * @summary A predicate container in a condition builder that can display conditions in horizontal or vertical layout with an optional logical operator divider.
12
12
  * @tags condition-builder
13
- * @parentRawTag compound-expression
14
13
  *
15
14
  * @example
16
15
  * ```html
@@ -11,7 +11,11 @@
11
11
  .shadow,
12
12
  .shadow::before,
13
13
  .shadow::after {
14
- @include mixin.apply-container-shape(elevation);
14
+ border-start-start-radius: var(--elevation-container-shape-start-start, var(--elevation-container-shape));
15
+ border-start-end-radius: var(--elevation-container-shape-start-end, var(--elevation-container-shape));
16
+ border-end-start-radius: var(--elevation-container-shape-end-start, var(--elevation-container-shape));
17
+ border-end-end-radius: var(--elevation-container-shape-end-end, var(--elevation-container-shape));
18
+ corner-shape: var(--elevation-container-shape-variant);
15
19
 
16
20
  inset: 0;
17
21
  position: absolute;
@@ -38,12 +38,12 @@
38
38
  --filled-fab-label-text-color: var(--color-on-tertiary);
39
39
  }
40
40
 
41
- .fab.variant-tonal {
41
+ :host([variant='tonal']) {
42
42
  --_fab-container-color: var(--tonal-fab-container-color);
43
43
  --_fab-label-text-color: var(--tonal-fab-label-text-color);
44
44
  }
45
45
 
46
- .fab.variant-filled {
46
+ :host([variant='filled']) {
47
47
  --_fab-container-color: var(--filled-fab-container-color);
48
48
  --_fab-label-text-color: var(--filled-fab-label-text-color);
49
49
  }
@@ -1,47 +1,37 @@
1
- /* Small FAB: 40x40dp, shape-corner-medium */
1
+ /* Small FAB: 40×40dp, shape-corner-medium */
2
2
  :host([size='sm']) {
3
3
  --fab-container-shape: var(--shape-corner-medium);
4
- }
5
-
6
- :host([size='sm']) .fab {
7
- width: 2.5rem;
8
- height: 2.5rem;
4
+ --fab-container-size: 2.5rem;
9
5
  --_fab-icon-size: 1.5rem;
6
+ --fab-extended-min-width: 4rem;
7
+
8
+ --_fab-font-size: 0.875rem;
9
+ --_fab-font-weight: var(--font-weight-medium);
10
+ --_fab-line-height: 1.25rem;
11
+ --_fab-letter-spacing: 0.1px;
10
12
  }
11
13
 
12
- /* Standard/Medium FAB: 56x56dp, shape-corner-large (default) */
13
- :host([size='md']) .fab {
14
- width: 3.5rem;
15
- height: 3.5rem;
14
+ /* Standard/Medium FAB: 56×56dp, shape-corner-large (default) */
15
+ :host([size='md']) {
16
+ --fab-container-size: 3.5rem;
16
17
  --_fab-icon-size: 1.5rem;
18
+ --fab-extended-min-width: 5rem;
19
+
20
+ --_fab-font-size: 0.875rem;
21
+ --_fab-font-weight: var(--font-weight-medium);
22
+ --_fab-line-height: 1.25rem;
23
+ --_fab-letter-spacing: 0.1px;
17
24
  }
18
25
 
19
- /* Large FAB: 96x96dp, shape-corner-extra-large */
26
+ /* Large FAB: 96×96dp, shape-corner-extra-large */
20
27
  :host([size='lg']) {
21
28
  --fab-container-shape: var(--shape-corner-extra-large);
22
- }
23
-
24
- :host([size='lg']) .fab {
25
- width: 6rem;
26
- height: 6rem;
29
+ --fab-container-size: 6rem;
27
30
  --_fab-icon-size: 2.25rem;
28
- }
29
-
30
- /* Extended FAB overrides (height fixed, width auto) */
31
- :host([size='sm']) .fab.extended {
32
- width: auto;
33
- min-width: 4rem;
34
- height: 2.5rem;
35
- }
36
-
37
- :host([size='md']) .fab.extended {
38
- width: auto;
39
- min-width: 5rem;
40
- height: 3.5rem;
41
- }
31
+ --fab-extended-min-width: 6rem;
42
32
 
43
- :host([size='lg']) .fab.extended {
44
- width: auto;
45
- min-width: 6rem;
46
- height: 6rem;
33
+ --_fab-font-size: 1rem;
34
+ --_fab-font-weight: var(--font-weight-medium);
35
+ --_fab-line-height: 1.5rem;
36
+ --_fab-letter-spacing: 0.15px;
47
37
  }
package/src/fab/fab.scss CHANGED
@@ -3,6 +3,7 @@
3
3
  @include mixin.base-styles;
4
4
 
5
5
  :host {
6
+ position: relative;
6
7
  display: inline-flex;
7
8
 
8
9
  --fab-container-shape: var(--shape-corner-large);
@@ -23,12 +24,14 @@
23
24
  }
24
25
 
25
26
  .fab {
26
- position: relative;
27
27
  display: inline-flex;
28
28
  align-items: center;
29
29
  justify-content: center;
30
+ width: var(--fab-container-size);
31
+ height: var(--fab-container-size);
30
32
  border-radius: var(--fab-container-shape);
31
33
  font-family: var(--font-family-sans) !important;
34
+ z-index: 0;
32
35
 
33
36
  .fab-content {
34
37
  display: flex;
@@ -44,94 +47,97 @@
44
47
  }
45
48
 
46
49
  .fab-label {
47
- font-size: 0.875rem;
48
- font-weight: var(--font-weight-medium);
49
- line-height: 1.25rem;
50
- letter-spacing: 0.00625em;
50
+ font-size: var(--_fab-font-size) !important;
51
+ font-weight: var(--_fab-font-weight) !important;
52
+ line-height: var(--_fab-line-height) !important;
53
+ letter-spacing: var(--_fab-letter-spacing) !important;
51
54
  white-space: nowrap;
52
55
  }
53
56
 
54
57
  &.disabled {
55
58
  cursor: not-allowed;
56
59
  }
60
+ }
57
61
 
58
- /*
59
- Background layers
60
- */
61
- .focus-ring {
62
- z-index: 2;
63
- --focus-ring-container-shape-start-start: var(--fab-container-shape);
64
- --focus-ring-container-shape-start-end: var(--fab-container-shape);
65
- --focus-ring-container-shape-end-start: var(--fab-container-shape);
66
- --focus-ring-container-shape-end-end: var(--fab-container-shape);
67
- }
62
+ /* Extended FAB */
63
+ .fab.extended {
64
+ width: auto;
65
+ min-width: var(--fab-extended-min-width);
66
+ padding: 0 1rem;
67
+ border-radius: var(--fab-container-shape);
68
+ }
68
69
 
69
- .ripple {
70
- border-radius: var(--fab-container-shape);
71
- --ripple-state-opacity: var(--_fab-container-state-opacity, 0);
72
- --ripple-pressed-color: var(--_fab-label-text-color);
73
- }
70
+ /*
71
+ Background layers
72
+ */
73
+ .focus-ring {
74
+ z-index: 2;
75
+ --focus-ring-container-shape-start-start: var(--fab-container-shape);
76
+ --focus-ring-container-shape-start-end: var(--fab-container-shape);
77
+ --focus-ring-container-shape-end-start: var(--fab-container-shape);
78
+ --focus-ring-container-shape-end-end: var(--fab-container-shape);
79
+ }
74
80
 
75
- .background {
76
- display: block;
77
- position: absolute;
78
- inset: 0;
79
- background-color: var(--_fab-container-color);
80
- opacity: var(--_fab-container-opacity, 1);
81
- border-radius: var(--fab-container-shape);
82
- pointer-events: none;
83
- }
81
+ .ripple {
82
+ border-radius: var(--fab-container-shape);
83
+ --ripple-state-opacity: var(--_fab-container-state-opacity, 0);
84
+ --ripple-pressed-color: var(--_fab-label-text-color);
85
+ }
84
86
 
85
- .elevation {
86
- --elevation-level: var(--_fab-container-elevation-level, var(--fab-container-elevation-level));
87
- transition-duration: 280ms;
88
- --elevation-container-shape-start-start: var(--fab-container-shape);
89
- --elevation-container-shape-start-end: var(--fab-container-shape);
90
- --elevation-container-shape-end-start: var(--fab-container-shape);
91
- --elevation-container-shape-end-end: var(--fab-container-shape);
92
- }
87
+ .background {
88
+ display: block;
89
+ position: absolute;
90
+ inset: 0;
91
+ background-color: var(--_fab-container-color);
92
+ opacity: var(--_fab-container-opacity, 1);
93
+ border-radius: var(--fab-container-shape);
94
+ pointer-events: none;
95
+ }
93
96
 
94
- &:hover:not(.disabled) {
95
- --_fab-container-elevation-level: 4;
96
- --_fab-container-state-opacity: 0.08;
97
- }
97
+ .elevation {
98
+ --elevation-level: var(--_fab-container-elevation-level, var(--fab-container-elevation-level));
99
+ transition-duration: 280ms;
100
+ --elevation-container-shape-start-start: var(--fab-container-shape);
101
+ --elevation-container-shape-start-end: var(--fab-container-shape);
102
+ --elevation-container-shape-end-start: var(--fab-container-shape);
103
+ --elevation-container-shape-end-end: var(--fab-container-shape);
104
+ }
98
105
 
99
- &.pressed:not(.disabled) {
100
- --_fab-container-elevation-level: 3;
101
- --_fab-container-state-opacity: 0.12;
102
- }
106
+ /* State management */
107
+ :host:hover:not([disabled]) {
108
+ --_fab-container-elevation-level: 4;
109
+ --_fab-container-state-opacity: 0.08;
110
+ }
103
111
 
104
- &.lowered {
105
- --fab-container-elevation-level: 1;
112
+ :host([pressed]):not([disabled]) {
113
+ --_fab-container-elevation-level: 3;
114
+ --_fab-container-state-opacity: 0.12;
115
+ }
106
116
 
107
- &:hover:not(.disabled) {
108
- --_fab-container-elevation-level: 2;
109
- }
117
+ :host([lowered]) {
118
+ --fab-container-elevation-level: 1;
110
119
 
111
- &.pressed:not(.disabled) {
112
- --_fab-container-elevation-level: 1;
113
- }
120
+ &:hover:not([disabled]) {
121
+ --_fab-container-elevation-level: 2;
114
122
  }
115
123
 
116
- &.disabled {
117
- --_fab-container-color: var(--color-on-surface);
118
- --_fab-container-opacity: 0.12;
119
- --_fab-label-text-color: var(--color-on-surface);
120
- --_fab-label-text-opacity: 0.38;
121
- --_fab-container-elevation-level: 0;
122
-
123
- .ripple {
124
- display: none;
125
- }
126
-
127
- .fab-content {
128
- opacity: 0.38;
129
- }
124
+ &[pressed]:not([disabled]) {
125
+ --_fab-container-elevation-level: 1;
130
126
  }
131
127
  }
132
128
 
133
- /* Extended FAB */
134
- .fab.extended {
135
- padding: 0 1rem;
136
- border-radius: var(--fab-container-shape);
129
+ :host([disabled]) {
130
+ --_fab-container-color: var(--color-on-surface);
131
+ --_fab-container-opacity: 0.12;
132
+ --_fab-label-text-color: var(--color-on-surface);
133
+ --_fab-label-text-opacity: 0.38;
134
+ --_fab-container-elevation-level: 0;
135
+
136
+ .ripple {
137
+ display: none;
138
+ }
139
+
140
+ .fab-content {
141
+ opacity: 0.38;
142
+ }
137
143
  }