@nldd/design-system 0.8.56 → 0.8.57

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 (202) hide show
  1. package/dist/components/actions/button/button.d.ts +13 -4
  2. package/dist/components/actions/button/button.d.ts.map +1 -1
  3. package/dist/components/actions/button/button.js +23 -3
  4. package/dist/components/actions/button/button.js.map +1 -1
  5. package/dist/components/actions/button/button.styles.d.ts.map +1 -1
  6. package/dist/components/actions/button/button.styles.js +269 -87
  7. package/dist/components/actions/button/button.styles.js.map +1 -1
  8. package/dist/components/actions/button/button.template.d.ts.map +1 -1
  9. package/dist/components/actions/button/button.template.js +33 -17
  10. package/dist/components/actions/button/button.template.js.map +1 -1
  11. package/dist/components/actions/button-bar/button-bar.d.ts +2 -2
  12. package/dist/components/actions/button-bar/button-bar.d.ts.map +1 -1
  13. package/dist/components/actions/button-bar/button-bar.js +3 -1
  14. package/dist/components/actions/button-bar/button-bar.js.map +1 -1
  15. package/dist/components/actions/button-bar/button-bar.styles.d.ts.map +1 -1
  16. package/dist/components/actions/button-bar/button-bar.styles.js +28 -4
  17. package/dist/components/actions/button-bar/button-bar.styles.js.map +1 -1
  18. package/dist/components/actions/icon-button/icon-button.d.ts +14 -4
  19. package/dist/components/actions/icon-button/icon-button.d.ts.map +1 -1
  20. package/dist/components/actions/icon-button/icon-button.js +23 -3
  21. package/dist/components/actions/icon-button/icon-button.js.map +1 -1
  22. package/dist/components/actions/icon-button/icon-button.styles.d.ts.map +1 -1
  23. package/dist/components/actions/icon-button/icon-button.styles.js +127 -63
  24. package/dist/components/actions/icon-button/icon-button.styles.js.map +1 -1
  25. package/dist/components/actions/icon-button/icon-button.template.d.ts.map +1 -1
  26. package/dist/components/actions/icon-button/icon-button.template.js +4 -2
  27. package/dist/components/actions/icon-button/icon-button.template.js.map +1 -1
  28. package/dist/components/actions/menu/menu.d.ts +9 -0
  29. package/dist/components/actions/menu/menu.d.ts.map +1 -1
  30. package/dist/components/actions/menu/menu.js +27 -2
  31. package/dist/components/actions/menu/menu.js.map +1 -1
  32. package/dist/components/actions/split-button/split-button.d.ts +30 -20
  33. package/dist/components/actions/split-button/split-button.d.ts.map +1 -1
  34. package/dist/components/actions/split-button/split-button.js +73 -49
  35. package/dist/components/actions/split-button/split-button.js.map +1 -1
  36. package/dist/components/actions/split-button/split-button.styles.d.ts.map +1 -1
  37. package/dist/components/actions/split-button/split-button.styles.js +39 -3
  38. package/dist/components/actions/split-button/split-button.styles.js.map +1 -1
  39. package/dist/components/actions/split-button/split-button.template.d.ts.map +1 -1
  40. package/dist/components/actions/split-button/split-button.template.js +6 -1
  41. package/dist/components/actions/split-button/split-button.template.js.map +1 -1
  42. package/dist/components/actions/toolbar/toolbar.d.ts +91 -14
  43. package/dist/components/actions/toolbar/toolbar.d.ts.map +1 -1
  44. package/dist/components/actions/toolbar/toolbar.js +299 -103
  45. package/dist/components/actions/toolbar/toolbar.js.map +1 -1
  46. package/dist/components/actions/toolbar/toolbar.styles.d.ts +2 -0
  47. package/dist/components/actions/toolbar/toolbar.styles.d.ts.map +1 -1
  48. package/dist/components/actions/toolbar/toolbar.styles.js +109 -41
  49. package/dist/components/actions/toolbar/toolbar.styles.js.map +1 -1
  50. package/dist/components/actions/toolbar/toolbar.template.d.ts +7 -4
  51. package/dist/components/actions/toolbar/toolbar.template.d.ts.map +1 -1
  52. package/dist/components/actions/toolbar/toolbar.template.js +22 -69
  53. package/dist/components/actions/toolbar/toolbar.template.js.map +1 -1
  54. package/dist/components/components.js +1 -1
  55. package/dist/components/content/code-viewer/code-viewer.styles.d.ts.map +1 -1
  56. package/dist/components/content/code-viewer/code-viewer.styles.js +4 -0
  57. package/dist/components/content/code-viewer/code-viewer.styles.js.map +1 -1
  58. package/dist/components/content/icon/icon-aliases.d.ts.map +1 -1
  59. package/dist/components/content/icon/icon-aliases.js +48 -2
  60. package/dist/components/content/icon/icon-aliases.js.map +1 -1
  61. package/dist/components/content/icon/icon-registry.d.ts.map +1 -1
  62. package/dist/components/content/icon/icon-registry.js +37 -2
  63. package/dist/components/content/icon/icon-registry.js.map +1 -1
  64. package/dist/components/content/image/image.d.ts +1 -1
  65. package/dist/components/content/image/image.d.ts.map +1 -1
  66. package/dist/components/content/image/image.i18n.d.ts +1 -1
  67. package/dist/components/content/image/image.i18n.js +1 -1
  68. package/dist/components/content/image/image.i18n.js.map +1 -1
  69. package/dist/components/content/image/image.js +7 -2
  70. package/dist/components/content/image/image.js.map +1 -1
  71. package/dist/components/content/image/image.styles.d.ts.map +1 -1
  72. package/dist/components/content/image/image.styles.js +21 -30
  73. package/dist/components/content/image/image.styles.js.map +1 -1
  74. package/dist/components/content/image/image.template.d.ts.map +1 -1
  75. package/dist/components/content/image/image.template.js +4 -11
  76. package/dist/components/content/image/image.template.js.map +1 -1
  77. package/dist/components/content/image/lqip-encoder-element.js +1 -1
  78. package/dist/components/{index-C3JellW2.js → index-DHU98C6V.js} +1561 -783
  79. package/dist/components/inputs/combo-box/combo-box.styles.js +1 -1
  80. package/dist/components/inputs/dropdown/dropdown.styles.d.ts.map +1 -1
  81. package/dist/components/inputs/dropdown/dropdown.styles.js +31 -18
  82. package/dist/components/inputs/dropdown/dropdown.styles.js.map +1 -1
  83. package/dist/components/inputs/multi-line-text-field/multi-line-text-field.styles.js +1 -1
  84. package/dist/components/inputs/password-field/password-field.styles.js +1 -1
  85. package/dist/components/inputs/search-field/search-field.styles.js +1 -1
  86. package/dist/components/inputs/segmented-control/segmented-control.d.ts +5 -4
  87. package/dist/components/inputs/segmented-control/segmented-control.d.ts.map +1 -1
  88. package/dist/components/inputs/segmented-control/segmented-control.js +4 -3
  89. package/dist/components/inputs/segmented-control/segmented-control.js.map +1 -1
  90. package/dist/components/inputs/segmented-control/segmented-control.styles.d.ts.map +1 -1
  91. package/dist/components/inputs/segmented-control/segmented-control.styles.js +59 -9
  92. package/dist/components/inputs/segmented-control/segmented-control.styles.js.map +1 -1
  93. package/dist/components/inputs/segmented-control/segmented-control.template.js +3 -3
  94. package/dist/components/inputs/segmented-control/segmented-control.template.js.map +1 -1
  95. package/dist/components/inputs/stepper/stepper.styles.d.ts.map +1 -1
  96. package/dist/components/inputs/stepper/stepper.styles.js +16 -5
  97. package/dist/components/inputs/stepper/stepper.styles.js.map +1 -1
  98. package/dist/components/inputs/stepper/stepper.template.d.ts.map +1 -1
  99. package/dist/components/inputs/stepper/stepper.template.js +2 -0
  100. package/dist/components/inputs/stepper/stepper.template.js.map +1 -1
  101. package/dist/components/inputs/text-field/text-field.styles.js +1 -1
  102. package/dist/components/inputs/toggle-button/toggle-button.d.ts +4 -3
  103. package/dist/components/inputs/toggle-button/toggle-button.d.ts.map +1 -1
  104. package/dist/components/inputs/toggle-button/toggle-button.js +3 -2
  105. package/dist/components/inputs/toggle-button/toggle-button.js.map +1 -1
  106. package/dist/components/inputs/toggle-button/toggle-button.styles.d.ts.map +1 -1
  107. package/dist/components/inputs/toggle-button/toggle-button.styles.js +53 -17
  108. package/dist/components/inputs/toggle-button/toggle-button.styles.js.map +1 -1
  109. package/dist/components/inputs/toggle-button/toggle-button.template.d.ts.map +1 -1
  110. package/dist/components/inputs/toggle-button/toggle-button.template.js +3 -4
  111. package/dist/components/inputs/toggle-button/toggle-button.template.js.map +1 -1
  112. package/dist/components/inputs/token/token.styles.d.ts.map +1 -1
  113. package/dist/components/inputs/token/token.styles.js +24 -7
  114. package/dist/components/inputs/token/token.styles.js.map +1 -1
  115. package/dist/components/inputs/token/token.template.d.ts.map +1 -1
  116. package/dist/components/inputs/token/token.template.js +1 -0
  117. package/dist/components/inputs/token/token.template.js.map +1 -1
  118. package/dist/components/layout/page-sections/full-bleed-section/full-bleed-section.d.ts +1 -1
  119. package/dist/components/layout/page-sections/full-bleed-section/full-bleed-section.d.ts.map +1 -1
  120. package/dist/components/layout/page-sections/full-bleed-section/full-bleed-section.js +0 -5
  121. package/dist/components/layout/page-sections/full-bleed-section/full-bleed-section.js.map +1 -1
  122. package/dist/components/layout/page-sections/one-half-one-half-section/one-half-one-half-section.d.ts +1 -0
  123. package/dist/components/layout/page-sections/one-half-one-half-section/one-half-one-half-section.d.ts.map +1 -1
  124. package/dist/components/layout/page-sections/one-half-one-half-section/one-half-one-half-section.styles.d.ts.map +1 -1
  125. package/dist/components/layout/page-sections/one-half-one-half-section/one-half-one-half-section.styles.js +5 -0
  126. package/dist/components/layout/page-sections/one-half-one-half-section/one-half-one-half-section.styles.js.map +1 -1
  127. package/dist/components/layout/page-sections/one-half-one-half-section/one-half-one-half-section.template.d.ts +1 -1
  128. package/dist/components/layout/page-sections/one-half-one-half-section/one-half-one-half-section.template.d.ts.map +1 -1
  129. package/dist/components/layout/page-sections/one-half-one-half-section/one-half-one-half-section.template.js +7 -3
  130. package/dist/components/layout/page-sections/one-half-one-half-section/one-half-one-half-section.template.js.map +1 -1
  131. package/dist/components/layout/page-sections/one-third-two-thirds-section/one-third-two-thirds-section.d.ts +1 -0
  132. package/dist/components/layout/page-sections/one-third-two-thirds-section/one-third-two-thirds-section.d.ts.map +1 -1
  133. package/dist/components/layout/page-sections/one-third-two-thirds-section/one-third-two-thirds-section.styles.d.ts.map +1 -1
  134. package/dist/components/layout/page-sections/one-third-two-thirds-section/one-third-two-thirds-section.styles.js +5 -0
  135. package/dist/components/layout/page-sections/one-third-two-thirds-section/one-third-two-thirds-section.styles.js.map +1 -1
  136. package/dist/components/layout/page-sections/one-third-two-thirds-section/one-third-two-thirds-section.template.d.ts +1 -1
  137. package/dist/components/layout/page-sections/one-third-two-thirds-section/one-third-two-thirds-section.template.d.ts.map +1 -1
  138. package/dist/components/layout/page-sections/one-third-two-thirds-section/one-third-two-thirds-section.template.js +7 -3
  139. package/dist/components/layout/page-sections/one-third-two-thirds-section/one-third-two-thirds-section.template.js.map +1 -1
  140. package/dist/components/layout/page-sections/simple-section/simple-section.d.ts +1 -1
  141. package/dist/components/layout/page-sections/simple-section/simple-section.d.ts.map +1 -1
  142. package/dist/components/layout/page-sections/simple-section/simple-section.js +0 -5
  143. package/dist/components/layout/page-sections/simple-section/simple-section.js.map +1 -1
  144. package/dist/components/layout/page-sections/two-thirds-one-third-section/two-thirds-one-third-section.d.ts +1 -0
  145. package/dist/components/layout/page-sections/two-thirds-one-third-section/two-thirds-one-third-section.d.ts.map +1 -1
  146. package/dist/components/layout/page-sections/two-thirds-one-third-section/two-thirds-one-third-section.styles.d.ts.map +1 -1
  147. package/dist/components/layout/page-sections/two-thirds-one-third-section/two-thirds-one-third-section.styles.js +5 -0
  148. package/dist/components/layout/page-sections/two-thirds-one-third-section/two-thirds-one-third-section.styles.js.map +1 -1
  149. package/dist/components/layout/page-sections/two-thirds-one-third-section/two-thirds-one-third-section.template.d.ts +1 -1
  150. package/dist/components/layout/page-sections/two-thirds-one-third-section/two-thirds-one-third-section.template.d.ts.map +1 -1
  151. package/dist/components/layout/page-sections/two-thirds-one-third-section/two-thirds-one-third-section.template.js +7 -3
  152. package/dist/components/layout/page-sections/two-thirds-one-third-section/two-thirds-one-third-section.template.js.map +1 -1
  153. package/dist/components/lists-and-tables/table/table.styles.d.ts.map +1 -1
  154. package/dist/components/lists-and-tables/table/table.styles.js +7 -0
  155. package/dist/components/lists-and-tables/table/table.styles.js.map +1 -1
  156. package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts +2 -22
  157. package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts.map +1 -1
  158. package/dist/components/navigation/breadcrumbs/breadcrumbs.i18n.d.ts +0 -1
  159. package/dist/components/navigation/breadcrumbs/breadcrumbs.i18n.d.ts.map +1 -1
  160. package/dist/components/navigation/breadcrumbs/breadcrumbs.i18n.js +0 -1
  161. package/dist/components/navigation/breadcrumbs/breadcrumbs.i18n.js.map +1 -1
  162. package/dist/components/navigation/breadcrumbs/breadcrumbs.js +2 -52
  163. package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  164. package/dist/components/navigation/breadcrumbs/breadcrumbs.styles.d.ts.map +1 -1
  165. package/dist/components/navigation/breadcrumbs/breadcrumbs.styles.js +1 -47
  166. package/dist/components/navigation/breadcrumbs/breadcrumbs.styles.js.map +1 -1
  167. package/dist/components/navigation/breadcrumbs/breadcrumbs.template.d.ts.map +1 -1
  168. package/dist/components/navigation/breadcrumbs/breadcrumbs.template.js +1 -17
  169. package/dist/components/navigation/breadcrumbs/breadcrumbs.template.js.map +1 -1
  170. package/dist/components/navigation/document-tab-bar/document-tab-bar.styles.d.ts.map +1 -1
  171. package/dist/components/navigation/document-tab-bar/document-tab-bar.styles.js +39 -19
  172. package/dist/components/navigation/document-tab-bar/document-tab-bar.styles.js.map +1 -1
  173. package/dist/components/navigation/menu-bar-item/menu-bar-item.styles.d.ts.map +1 -1
  174. package/dist/components/navigation/menu-bar-item/menu-bar-item.styles.js +4 -0
  175. package/dist/components/navigation/menu-bar-item/menu-bar-item.styles.js.map +1 -1
  176. package/dist/components/navigation/pagination/pagination.styles.d.ts.map +1 -1
  177. package/dist/components/navigation/pagination/pagination.styles.js +35 -15
  178. package/dist/components/navigation/pagination/pagination.styles.js.map +1 -1
  179. package/dist/components/navigation/pagination/pagination.template.d.ts.map +1 -1
  180. package/dist/components/navigation/pagination/pagination.template.js +2 -0
  181. package/dist/components/navigation/pagination/pagination.template.js.map +1 -1
  182. package/dist/components/navigation/tab-bar/tab-bar.d.ts +11 -4
  183. package/dist/components/navigation/tab-bar/tab-bar.d.ts.map +1 -1
  184. package/dist/components/navigation/tab-bar/tab-bar.js +17 -2
  185. package/dist/components/navigation/tab-bar/tab-bar.js.map +1 -1
  186. package/dist/components/navigation/tab-bar/tab-bar.styles.d.ts.map +1 -1
  187. package/dist/components/navigation/tab-bar/tab-bar.styles.js +74 -18
  188. package/dist/components/navigation/tab-bar/tab-bar.styles.js.map +1 -1
  189. package/dist/components/navigation/tab-bar/tab-bar.template.d.ts.map +1 -1
  190. package/dist/components/navigation/tab-bar/tab-bar.template.js +4 -1
  191. package/dist/components/navigation/tab-bar/tab-bar.template.js.map +1 -1
  192. package/dist/components/{prism-python-QiimuE8j.js → prism-python-9EoInm_N.js} +1 -1
  193. package/dist/components/{prism-rust-D4vfxUpk.js → prism-rust-Chzr6sBk.js} +1 -1
  194. package/dist/components/{prism-typescript-Dy2F4cF2.js → prism-typescript-DPJmu--x.js} +1 -1
  195. package/dist/components/status-and-feedback/inline-dialog/inline-dialog.styles.js +2 -2
  196. package/dist/css/rich-text.css +6 -1
  197. package/dist/css/settings.css +139 -35
  198. package/dist/utilities/page-section-mixin.d.ts +1 -0
  199. package/dist/utilities/page-section-mixin.d.ts.map +1 -1
  200. package/dist/utilities/page-section-mixin.js +9 -0
  201. package/dist/utilities/page-section-mixin.js.map +1 -1
  202. package/package.json +1 -1
@@ -7,21 +7,27 @@ export const buttonStyles = css `
7
7
 
8
8
  :host {
9
9
  --_corner-radius: var(--semantics-controls-md-corner-radius);
10
- --_background-color: var(--semantics-buttons-neutral-tinted-background-color);
11
10
  --_width: auto;
12
11
  --_min-size: var(--semantics-controls-md-min-size);
13
12
  --_block-padding: var(--semantics-controls-md-block-padding);
14
- --_inline-padding: var(--semantics-controls-md-inline-padding);
13
+ --_inline-padding: calc((var(--_min-size) - var(--_icon-size)) / 2);
15
14
  --_gap: var(--semantics-buttons-md-gap);
16
- --_content-color: var(--semantics-buttons-neutral-tinted-content-color);
17
- --_font: var(--semantics-buttons-md-font);
18
- --_is-hovered-background-color: var(--semantics-buttons-neutral-tinted-is-hovered-background-color);
19
- --_is-hovered-content-color: var(--semantics-buttons-neutral-tinted-is-hovered-content-color);
20
- --_is-active-background-color: var(--semantics-buttons-neutral-tinted-is-active-background-color);
21
- --_is-active-content-color: var(--semantics-buttons-neutral-tinted-is-active-content-color);
15
+ --_font: var(--semantics-buttons-md-primary-text-font);
22
16
  --_icon-size: var(--semantics-buttons-md-icon-size);
23
- --_disclosure-icon-margin-left: -2px;
24
17
  --_disclosure-icon-size: var(--primitives-space-20);
18
+ --_supporting-font: var(--semantics-buttons-md-supporting-text-font);
19
+ --_background-color: var(--semantics-buttons-neutral-tinted-background-color);
20
+ --_primary-content-color: var(--semantics-buttons-neutral-tinted-primary-content-color);
21
+ --_secondary-content-color: var(--semantics-buttons-neutral-tinted-secondary-content-color);
22
+ --_highlight-border-color: var(--semantics-buttons-neutral-tinted-highlight-border-color);
23
+ --_is-hovered-background-color: var(--semantics-buttons-neutral-tinted-is-hovered-background-color);
24
+ --_is-hovered-primary-content-color: var(--semantics-buttons-neutral-tinted-is-hovered-primary-content-color);
25
+ --_is-hovered-secondary-content-color: var(--semantics-buttons-neutral-tinted-is-hovered-secondary-content-color);
26
+ --_is-hovered-highlight-border-color: var(--semantics-buttons-neutral-tinted-is-hovered-highlight-border-color);
27
+ --_is-active-background-color: var(--semantics-buttons-neutral-tinted-is-active-background-color);
28
+ --_is-active-primary-content-color: var(--semantics-buttons-neutral-tinted-is-active-primary-content-color);
29
+ --_is-active-secondary-content-color: var(--semantics-buttons-neutral-tinted-is-active-secondary-content-color);
30
+ --_is-active-highlight-border-color: var(--semantics-buttons-neutral-tinted-is-active-highlight-border-color);
25
31
 
26
32
  ${inheritedTextReset}
27
33
  display: inline-block;
@@ -31,143 +37,238 @@ export const buttonStyles = css `
31
37
  -webkit-tap-highlight-color: transparent;
32
38
  }
33
39
 
34
- :host([size="sm"]) {
35
- --_corner-radius: var(--semantics-controls-sm-corner-radius);
36
- --_min-size: var(--semantics-controls-sm-min-size);
37
- --_block-padding: var(--semantics-controls-sm-block-padding);
38
- --_inline-padding: var(--semantics-controls-sm-inline-padding);
39
- --_gap: var(--semantics-buttons-sm-gap);
40
- --_font: var(--semantics-buttons-sm-font);
41
- --_icon-size: var(--semantics-buttons-sm-icon-size);
42
- --_disclosure-icon-margin-left: -1px;
43
- --_disclosure-icon-size: var(--primitives-space-18);
44
- }
45
-
46
40
  :host([size="xs"]) {
47
41
  --_corner-radius: var(--semantics-controls-xs-corner-radius);
48
42
  --_min-size: var(--semantics-controls-xs-min-size);
49
43
  --_block-padding: var(--semantics-controls-xs-block-padding);
50
- --_inline-padding: var(--semantics-controls-xs-inline-padding);
51
44
  --_gap: var(--semantics-buttons-xs-gap);
52
- --_font: var(--semantics-buttons-xs-font);
45
+ --_font: var(--semantics-buttons-xs-primary-text-font);
53
46
  --_icon-size: var(--semantics-buttons-xs-icon-size);
54
- --_disclosure-icon-margin-left: -1px;
55
47
  --_disclosure-icon-size: var(--primitives-space-16);
48
+ --_supporting-font: var(--semantics-buttons-xs-supporting-text-font);
56
49
  }
57
50
 
58
- /* ## Neutral Transparent */
51
+ :host([size="sm"]) {
52
+ --_corner-radius: var(--semantics-controls-sm-corner-radius);
53
+ --_min-size: var(--semantics-controls-sm-min-size);
54
+ --_block-padding: var(--semantics-controls-sm-block-padding);
55
+ --_gap: var(--semantics-buttons-sm-gap);
56
+ --_font: var(--semantics-buttons-sm-primary-text-font);
57
+ --_icon-size: var(--semantics-buttons-sm-icon-size);
58
+ --_disclosure-icon-size: var(--primitives-space-18);
59
+ --_supporting-font: var(--semantics-buttons-sm-supporting-text-font);
60
+ }
61
+
62
+ :host([size="lg"]) {
63
+ --_corner-radius: var(--semantics-controls-lg-corner-radius);
64
+ --_min-size: var(--semantics-controls-lg-min-size);
65
+ --_block-padding: var(--semantics-controls-lg-block-padding);
66
+ --_gap: var(--semantics-buttons-lg-gap);
67
+ --_font: var(--semantics-buttons-lg-primary-text-font);
68
+ --_icon-size: var(--semantics-buttons-lg-icon-size);
69
+ --_disclosure-icon-size: var(--primitives-space-24);
70
+ --_supporting-font: var(--semantics-buttons-lg-supporting-text-font);
71
+ }
72
+
73
+ :host([variant="neutral-base"]) {
74
+ --_background-color: var(--semantics-buttons-neutral-base-background-color);
75
+ --_primary-content-color: var(--semantics-buttons-neutral-base-primary-content-color);
76
+ --_secondary-content-color: var(--semantics-buttons-neutral-base-secondary-content-color);
77
+ --_highlight-border-color: var(--semantics-buttons-neutral-base-highlight-border-color);
78
+ --_is-hovered-background-color: var(--semantics-buttons-neutral-base-is-hovered-background-color);
79
+ --_is-hovered-primary-content-color: var(--semantics-buttons-neutral-base-is-hovered-primary-content-color);
80
+ --_is-hovered-secondary-content-color: var(--semantics-buttons-neutral-base-is-hovered-secondary-content-color);
81
+ --_is-hovered-highlight-border-color: var(--semantics-buttons-neutral-base-is-hovered-highlight-border-color);
82
+ --_is-active-background-color: var(--semantics-buttons-neutral-base-is-active-background-color);
83
+ --_is-active-primary-content-color: var(--semantics-buttons-neutral-base-is-active-primary-content-color);
84
+ --_is-active-secondary-content-color: var(--semantics-buttons-neutral-base-is-active-secondary-content-color);
85
+ --_is-active-highlight-border-color: var(--semantics-buttons-neutral-base-is-active-highlight-border-color);
86
+ }
59
87
 
60
88
  :host([variant="neutral-transparent"]) {
61
89
  --_background-color: transparent;
62
- --_content-color: var(--semantics-buttons-neutral-transparent-content-color);
90
+ --_primary-content-color: var(--semantics-buttons-neutral-transparent-primary-content-color);
91
+ --_secondary-content-color: var(--semantics-buttons-neutral-transparent-secondary-content-color);
92
+ --_highlight-border-color: transparent;
63
93
  --_is-hovered-background-color: transparent;
64
- --_is-hovered-content-color: var(--semantics-buttons-neutral-transparent-is-hovered-content-color);
94
+ --_is-hovered-primary-content-color: var(--semantics-buttons-neutral-transparent-is-hovered-primary-content-color);
95
+ --_is-hovered-secondary-content-color: var(--semantics-buttons-neutral-transparent-is-hovered-secondary-content-color);
96
+ --_is-hovered-highlight-border-color: transparent;
65
97
  --_is-active-background-color: transparent;
66
- --_is-active-content-color: var(--semantics-buttons-neutral-transparent-is-active-content-color);
98
+ --_is-active-primary-content-color: var(--semantics-buttons-neutral-transparent-is-active-primary-content-color);
99
+ --_is-active-secondary-content-color: var(--semantics-buttons-neutral-transparent-is-active-secondary-content-color);
100
+ --_is-active-highlight-border-color: transparent;
67
101
  }
68
102
 
69
- /* ## Accent Filled (Primary) */
70
-
71
103
  :host([variant="accent-filled"]),
72
104
  :host([variant="primary"]) {
73
105
  --_background-color: var(--semantics-buttons-accent-filled-background-color);
74
- --_content-color: var(--semantics-buttons-accent-filled-content-color);
106
+ --_primary-content-color: var(--semantics-buttons-accent-filled-primary-content-color);
107
+ --_secondary-content-color: var(--semantics-buttons-accent-filled-secondary-content-color);
108
+ --_highlight-border-color: var(--semantics-buttons-accent-filled-highlight-border-color);
75
109
  --_is-hovered-background-color: var(--semantics-buttons-accent-filled-is-hovered-background-color);
76
- --_is-hovered-content-color: var(--semantics-buttons-accent-filled-is-hovered-content-color);
110
+ --_is-hovered-primary-content-color: var(--semantics-buttons-accent-filled-is-hovered-primary-content-color);
111
+ --_is-hovered-secondary-content-color: var(--semantics-buttons-accent-filled-is-hovered-secondary-content-color);
112
+ --_is-hovered-highlight-border-color: var(--semantics-buttons-accent-filled-is-hovered-highlight-border-color);
77
113
  --_is-active-background-color: var(--semantics-buttons-accent-filled-is-active-background-color);
78
- --_is-active-content-color: var(--semantics-buttons-accent-filled-is-active-content-color);
114
+ --_is-active-primary-content-color: var(--semantics-buttons-accent-filled-is-active-primary-content-color);
115
+ --_is-active-secondary-content-color: var(--semantics-buttons-accent-filled-is-active-secondary-content-color);
116
+ --_is-active-highlight-border-color: var(--semantics-buttons-accent-filled-is-active-highlight-border-color);
79
117
  }
80
118
 
81
- /* ## Accent Transparent */
82
-
83
119
  :host([variant="accent-transparent"]) {
84
120
  --_background-color: transparent;
85
- --_content-color: var(--semantics-buttons-accent-transparent-content-color);
121
+ --_primary-content-color: var(--semantics-buttons-accent-transparent-primary-content-color);
122
+ --_secondary-content-color: var(--semantics-buttons-accent-transparent-secondary-content-color);
123
+ --_highlight-border-color: transparent;
86
124
  --_is-hovered-background-color: transparent;
87
- --_is-hovered-content-color: var(--semantics-buttons-accent-transparent-is-hovered-content-color);
125
+ --_is-hovered-primary-content-color: var(--semantics-buttons-accent-transparent-is-hovered-primary-content-color);
126
+ --_is-hovered-secondary-content-color: var(--semantics-buttons-accent-transparent-is-hovered-secondary-content-color);
127
+ --_is-hovered-highlight-border-color: transparent;
88
128
  --_is-active-background-color: transparent;
89
- --_is-active-content-color: var(--semantics-buttons-accent-transparent-is-active-content-color);
129
+ --_is-active-primary-content-color: var(--semantics-buttons-accent-transparent-is-active-primary-content-color);
130
+ --_is-active-secondary-content-color: var(--semantics-buttons-accent-transparent-is-active-secondary-content-color);
131
+ --_is-active-highlight-border-color: transparent;
90
132
  }
91
133
 
92
- /* ## Critical Tinted */
93
-
94
134
  :host([variant="critical-tinted"]),
95
135
  :host([variant="destructive"]) {
96
136
  --_background-color: var(--semantics-buttons-critical-tinted-background-color);
97
- --_content-color: var(--semantics-buttons-critical-tinted-content-color);
137
+ --_primary-content-color: var(--semantics-buttons-critical-tinted-primary-content-color);
138
+ --_secondary-content-color: var(--semantics-buttons-critical-tinted-secondary-content-color);
139
+ --_highlight-border-color: var(--semantics-buttons-critical-tinted-highlight-border-color);
98
140
  --_is-hovered-background-color: var(--semantics-buttons-critical-tinted-is-hovered-background-color);
99
- --_is-hovered-content-color: var(--semantics-buttons-critical-tinted-is-hovered-content-color);
141
+ --_is-hovered-primary-content-color: var(--semantics-buttons-critical-tinted-is-hovered-primary-content-color);
142
+ --_is-hovered-secondary-content-color: var(--semantics-buttons-critical-tinted-is-hovered-secondary-content-color);
143
+ --_is-hovered-highlight-border-color: var(--semantics-buttons-critical-tinted-is-hovered-highlight-border-color);
100
144
  --_is-active-background-color: var(--semantics-buttons-critical-tinted-is-active-background-color);
101
- --_is-active-content-color: var(--semantics-buttons-critical-tinted-is-active-content-color);
145
+ --_is-active-primary-content-color: var(--semantics-buttons-critical-tinted-is-active-primary-content-color);
146
+ --_is-active-secondary-content-color: var(--semantics-buttons-critical-tinted-is-active-secondary-content-color);
147
+ --_is-active-highlight-border-color: var(--semantics-buttons-critical-tinted-is-active-highlight-border-color);
102
148
  }
103
149
 
104
- /* ## Critical Transparent */
105
-
106
150
  :host([variant="critical-transparent"]) {
107
151
  --_background-color: transparent;
108
- --_content-color: var(--semantics-buttons-critical-transparent-content-color);
152
+ --_primary-content-color: var(--semantics-buttons-critical-transparent-primary-content-color);
153
+ --_secondary-content-color: var(--semantics-buttons-critical-transparent-secondary-content-color);
154
+ --_highlight-border-color: transparent;
109
155
  --_is-hovered-background-color: transparent;
110
- --_is-hovered-content-color: var(--semantics-buttons-critical-transparent-is-hovered-content-color);
156
+ --_is-hovered-primary-content-color: var(--semantics-buttons-critical-transparent-is-hovered-primary-content-color);
157
+ --_is-hovered-secondary-content-color: var(--semantics-buttons-critical-transparent-is-hovered-secondary-content-color);
158
+ --_is-hovered-highlight-border-color: transparent;
111
159
  --_is-active-background-color: transparent;
112
- --_is-active-content-color: var(--semantics-buttons-critical-transparent-is-active-content-color);
160
+ --_is-active-primary-content-color: var(--semantics-buttons-critical-transparent-is-active-primary-content-color);
161
+ --_is-active-secondary-content-color: var(--semantics-buttons-critical-transparent-is-active-secondary-content-color);
162
+ --_is-active-highlight-border-color: transparent;
113
163
  }
114
164
 
115
165
  /* ## Expanded — default (incl. unknown variant) */
116
166
 
117
167
  :host([expanded]) {
118
168
  --_background-color: var(--semantics-buttons-neutral-tinted-is-expanded-background-color);
119
- --_content-color: var(--semantics-buttons-neutral-tinted-is-expanded-content-color);
169
+ --_primary-content-color: var(--semantics-buttons-neutral-tinted-is-expanded-primary-content-color);
170
+ --_secondary-content-color: var(--semantics-buttons-neutral-tinted-is-expanded-secondary-content-color);
171
+ --_highlight-border-color: var(--semantics-buttons-neutral-tinted-is-expanded-highlight-border-color);
120
172
  --_is-hovered-background-color: var(--semantics-buttons-neutral-tinted-is-expanded-is-hovered-background-color);
121
- --_is-hovered-content-color: var(--semantics-buttons-neutral-tinted-is-expanded-is-hovered-content-color);
173
+ --_is-hovered-primary-content-color: var(--semantics-buttons-neutral-tinted-is-expanded-is-hovered-primary-content-color);
174
+ --_is-hovered-secondary-content-color: var(--semantics-buttons-neutral-tinted-is-expanded-is-hovered-secondary-content-color);
175
+ --_is-hovered-highlight-border-color: var(--semantics-buttons-neutral-tinted-is-expanded-is-hovered-highlight-border-color);
122
176
  --_is-active-background-color: var(--semantics-buttons-neutral-tinted-is-expanded-is-active-background-color);
123
- --_is-active-content-color: var(--semantics-buttons-neutral-tinted-is-expanded-is-active-content-color);
177
+ --_is-active-primary-content-color: var(--semantics-buttons-neutral-tinted-is-expanded-is-active-primary-content-color);
178
+ --_is-active-secondary-content-color: var(--semantics-buttons-neutral-tinted-is-expanded-is-active-secondary-content-color);
179
+ --_is-active-highlight-border-color: var(--semantics-buttons-neutral-tinted-is-expanded-is-active-highlight-border-color);
180
+ }
181
+
182
+ :host([expanded][variant="neutral-base"]) {
183
+ --_background-color: var(--semantics-buttons-neutral-base-is-expanded-background-color);
184
+ --_primary-content-color: var(--semantics-buttons-neutral-base-is-expanded-primary-content-color);
185
+ --_secondary-content-color: var(--semantics-buttons-neutral-base-is-expanded-secondary-content-color);
186
+ --_highlight-border-color: var(--semantics-buttons-neutral-base-is-expanded-highlight-border-color);
187
+ --_is-hovered-background-color: var(--semantics-buttons-neutral-base-is-expanded-is-hovered-background-color);
188
+ --_is-hovered-primary-content-color: var(--semantics-buttons-neutral-base-is-expanded-is-hovered-primary-content-color);
189
+ --_is-hovered-secondary-content-color: var(--semantics-buttons-neutral-base-is-expanded-is-hovered-secondary-content-color);
190
+ --_is-hovered-highlight-border-color: var(--semantics-buttons-neutral-base-is-expanded-is-hovered-highlight-border-color);
191
+ --_is-active-background-color: var(--semantics-buttons-neutral-base-is-expanded-is-active-background-color);
192
+ --_is-active-primary-content-color: var(--semantics-buttons-neutral-base-is-expanded-is-active-primary-content-color);
193
+ --_is-active-secondary-content-color: var(--semantics-buttons-neutral-base-is-expanded-is-active-secondary-content-color);
194
+ --_is-active-highlight-border-color: var(--semantics-buttons-neutral-base-is-expanded-is-active-highlight-border-color);
195
+ }
196
+
197
+ :host([expanded][variant="neutral-transparent"]) {
198
+ --_background-color: transparent;
199
+ --_primary-content-color: var(--semantics-buttons-neutral-transparent-primary-content-color);
200
+ --_secondary-content-color: var(--semantics-buttons-neutral-transparent-secondary-content-color);
201
+ --_highlight-border-color: transparent;
202
+ --_is-hovered-background-color: transparent;
203
+ --_is-hovered-primary-content-color: var(--semantics-buttons-neutral-transparent-is-hovered-primary-content-color);
204
+ --_is-hovered-secondary-content-color: var(--semantics-buttons-neutral-transparent-is-hovered-secondary-content-color);
205
+ --_is-hovered-highlight-border-color: transparent;
206
+ --_is-active-background-color: transparent;
207
+ --_is-active-primary-content-color: var(--semantics-buttons-neutral-transparent-is-active-primary-content-color);
208
+ --_is-active-secondary-content-color: var(--semantics-buttons-neutral-transparent-is-active-secondary-content-color);
209
+ --_is-active-highlight-border-color: transparent;
124
210
  }
125
211
 
126
212
  :host([expanded][variant="accent-filled"]),
127
213
  :host([expanded][variant="primary"]) {
128
214
  --_background-color: var(--semantics-buttons-accent-filled-is-expanded-background-color);
129
- --_content-color: var(--semantics-buttons-accent-filled-is-expanded-content-color);
215
+ --_primary-content-color: var(--semantics-buttons-accent-filled-is-expanded-primary-content-color);
216
+ --_secondary-content-color: var(--semantics-buttons-accent-filled-is-expanded-secondary-content-color);
217
+ --_highlight-border-color: var(--semantics-buttons-accent-filled-is-expanded-highlight-border-color);
130
218
  --_is-hovered-background-color: var(--semantics-buttons-accent-filled-is-expanded-is-hovered-background-color);
131
- --_is-hovered-content-color: var(--semantics-buttons-accent-filled-is-expanded-is-hovered-content-color);
219
+ --_is-hovered-primary-content-color: var(--semantics-buttons-accent-filled-is-expanded-is-hovered-primary-content-color);
220
+ --_is-hovered-secondary-content-color: var(--semantics-buttons-accent-filled-is-expanded-is-hovered-secondary-content-color);
221
+ --_is-hovered-highlight-border-color: var(--semantics-buttons-accent-filled-is-expanded-is-hovered-highlight-border-color);
132
222
  --_is-active-background-color: var(--semantics-buttons-accent-filled-is-expanded-is-active-background-color);
133
- --_is-active-content-color: var(--semantics-buttons-accent-filled-is-expanded-is-active-content-color);
134
- }
135
-
136
- :host([expanded][variant="neutral-transparent"]) {
137
- --_background-color: transparent;
138
- --_content-color: var(--semantics-buttons-neutral-transparent-content-color);
139
- --_is-hovered-background-color: transparent;
140
- --_is-hovered-content-color: var(--semantics-buttons-neutral-transparent-is-hovered-content-color);
141
- --_is-active-background-color: transparent;
142
- --_is-active-content-color: var(--semantics-buttons-neutral-transparent-is-active-content-color);
223
+ --_is-active-primary-content-color: var(--semantics-buttons-accent-filled-is-expanded-is-active-primary-content-color);
224
+ --_is-active-secondary-content-color: var(--semantics-buttons-accent-filled-is-expanded-is-active-secondary-content-color);
225
+ --_is-active-highlight-border-color: var(--semantics-buttons-accent-filled-is-expanded-is-active-highlight-border-color);
143
226
  }
144
227
 
145
228
  :host([expanded][variant="accent-transparent"]) {
146
229
  --_background-color: transparent;
147
- --_content-color: var(--semantics-buttons-accent-transparent-content-color);
230
+ --_primary-content-color: var(--semantics-buttons-accent-transparent-primary-content-color);
231
+ --_secondary-content-color: var(--semantics-buttons-accent-transparent-secondary-content-color);
232
+ --_highlight-border-color: transparent;
148
233
  --_is-hovered-background-color: transparent;
149
- --_is-hovered-content-color: var(--semantics-buttons-accent-transparent-is-hovered-content-color);
234
+ --_is-hovered-primary-content-color: var(--semantics-buttons-accent-transparent-is-hovered-primary-content-color);
235
+ --_is-hovered-secondary-content-color: var(--semantics-buttons-accent-transparent-is-hovered-secondary-content-color);
236
+ --_is-hovered-highlight-border-color: transparent;
150
237
  --_is-active-background-color: transparent;
151
- --_is-active-content-color: var(--semantics-buttons-accent-transparent-is-active-content-color);
238
+ --_is-active-primary-content-color: var(--semantics-buttons-accent-transparent-is-active-primary-content-color);
239
+ --_is-active-secondary-content-color: var(--semantics-buttons-accent-transparent-is-active-secondary-content-color);
240
+ --_is-active-highlight-border-color: transparent;
152
241
  }
153
242
 
154
243
  :host([expanded][variant="critical-tinted"]),
155
244
  :host([expanded][variant="destructive"]) {
156
- --_background-color: var(--semantics-buttons-critical-tinted-background-color);
157
- --_content-color: var(--semantics-buttons-critical-tinted-content-color);
158
- --_is-hovered-background-color: var(--semantics-buttons-critical-tinted-is-hovered-background-color);
159
- --_is-hovered-content-color: var(--semantics-buttons-critical-tinted-is-hovered-content-color);
160
- --_is-active-background-color: var(--semantics-buttons-critical-tinted-is-active-background-color);
161
- --_is-active-content-color: var(--semantics-buttons-critical-tinted-is-active-content-color);
245
+ --_background-color: var(--semantics-buttons-critical-tinted-is-expanded-background-color);
246
+ --_primary-content-color: var(--semantics-buttons-critical-tinted-is-expanded-primary-content-color);
247
+ --_secondary-content-color: var(--semantics-buttons-critical-tinted-is-expanded-secondary-content-color);
248
+ --_highlight-border-color: var(--semantics-buttons-critical-tinted-is-expanded-highlight-border-color);
249
+ --_is-hovered-background-color: var(--semantics-buttons-critical-tinted-is-expanded-is-hovered-background-color);
250
+ --_is-hovered-primary-content-color: var(--semantics-buttons-critical-tinted-is-expanded-is-hovered-primary-content-color);
251
+ --_is-hovered-secondary-content-color: var(--semantics-buttons-critical-tinted-is-expanded-is-hovered-secondary-content-color);
252
+ --_is-hovered-highlight-border-color: var(--semantics-buttons-critical-tinted-is-expanded-is-hovered-highlight-border-color);
253
+ --_is-active-background-color: var(--semantics-buttons-critical-tinted-is-expanded-is-active-background-color);
254
+ --_is-active-primary-content-color: var(--semantics-buttons-critical-tinted-is-expanded-is-active-primary-content-color);
255
+ --_is-active-secondary-content-color: var(--semantics-buttons-critical-tinted-is-expanded-is-active-secondary-content-color);
256
+ --_is-active-highlight-border-color: var(--semantics-buttons-critical-tinted-is-expanded-is-active-highlight-border-color);
162
257
  }
163
258
 
164
259
  :host([expanded][variant="critical-transparent"]) {
165
260
  --_background-color: transparent;
166
- --_content-color: var(--semantics-buttons-critical-transparent-content-color);
261
+ --_primary-content-color: var(--semantics-buttons-critical-transparent-primary-content-color);
262
+ --_secondary-content-color: var(--semantics-buttons-critical-transparent-secondary-content-color);
263
+ --_highlight-border-color: transparent;
167
264
  --_is-hovered-background-color: transparent;
168
- --_is-hovered-content-color: var(--semantics-buttons-critical-transparent-is-hovered-content-color);
265
+ --_is-hovered-primary-content-color: var(--semantics-buttons-critical-transparent-is-hovered-primary-content-color);
266
+ --_is-hovered-secondary-content-color: var(--semantics-buttons-critical-transparent-is-hovered-secondary-content-color);
267
+ --_is-hovered-highlight-border-color: transparent;
169
268
  --_is-active-background-color: transparent;
170
- --_is-active-content-color: var(--semantics-buttons-critical-transparent-is-active-content-color);
269
+ --_is-active-primary-content-color: var(--semantics-buttons-critical-transparent-is-active-primary-content-color);
270
+ --_is-active-secondary-content-color: var(--semantics-buttons-critical-transparent-is-active-secondary-content-color);
271
+ --_is-active-highlight-border-color: transparent;
171
272
  }
172
273
 
173
274
  :host([width="full"]) {
@@ -176,6 +277,16 @@ export const buttonStyles = css `
176
277
  flex-grow: 1;
177
278
  }
178
279
 
280
+ :host([horizontal-alignment="left"]) .button {
281
+ justify-content: flex-start;
282
+ text-align: left;
283
+ }
284
+
285
+ :host([horizontal-alignment="right"]) .button {
286
+ justify-content: flex-end;
287
+ text-align: right;
288
+ }
289
+
179
290
  :host([hidden]) {
180
291
  display: none;
181
292
  }
@@ -185,17 +296,26 @@ export const buttonStyles = css `
185
296
  pointer-events: none;
186
297
  }
187
298
 
299
+ :host([no-highlight-border]),
300
+ :host([no-highlight-border][expanded]) {
301
+ --_highlight-border-color: transparent;
302
+ --_is-hovered-highlight-border-color: transparent;
303
+ --_is-active-highlight-border-color: transparent;
304
+ }
305
+
188
306
 
189
307
  /* # Block */
190
308
 
191
309
  .button {
192
310
  box-sizing: border-box;
193
311
  display: inline-flex;
312
+ position: relative;
194
313
  margin: 0;
195
314
  border: none;
196
315
  border-radius: var(--_corner-radius);
197
316
  background: none;
198
317
  background-color: var(--_background-color);
318
+ box-shadow: inset 0 0 0 var(--primitives-border-width-thin) var(--_highlight-border-color);
199
319
  width: var(--_width);
200
320
  min-width: var(--_min-size);
201
321
  max-width: 100%;
@@ -204,8 +324,9 @@ export const buttonStyles = css `
204
324
  gap: var(--_gap);
205
325
  align-items: center;
206
326
  justify-content: center;
207
- color: var(--_content-color);
327
+ color: var(--_primary-content-color);
208
328
  font: var(--_font);
329
+ text-align: center;
209
330
  text-decoration: none;
210
331
  text-wrap: pretty;
211
332
  transition:
@@ -222,13 +343,15 @@ export const buttonStyles = css `
222
343
  .button:hover {
223
344
  @media (hover: hover) {
224
345
  background-color: var(--_is-hovered-background-color);
225
- color: var(--_is-hovered-content-color);
346
+ color: var(--_is-hovered-primary-content-color);
347
+ --_highlight-border-color: var(--_is-hovered-highlight-border-color);
226
348
  }
227
349
  }
228
350
 
229
351
  .button:active {
230
352
  background-color: var(--_is-active-background-color);
231
- color: var(--_is-active-content-color);
353
+ color: var(--_is-active-primary-content-color);
354
+ --_highlight-border-color: var(--_is-active-highlight-border-color);
232
355
  }
233
356
 
234
357
  /* Loading keeps the control focusable (not disabled); activation is blocked in JS. */
@@ -239,7 +362,7 @@ export const buttonStyles = css `
239
362
  .button:focus-visible {
240
363
  outline: var(--semantics-focus-ring-outline);
241
364
  outline-offset: var(--semantics-focus-ring-outline-offset);
242
- box-shadow: var(--semantics-focus-ring-box-shadow);
365
+ box-shadow: var(--semantics-focus-ring-box-shadow), inset 0 0 0 var(--primitives-border-width-thin) var(--_highlight-border-color);
243
366
  }
244
367
 
245
368
  .button:focus:not(:focus-visible) {
@@ -261,7 +384,7 @@ export const buttonStyles = css `
261
384
  max-width: 100%;
262
385
  min-width: 0;
263
386
  align-items: center;
264
- gap: var(--_gap);
387
+ gap: 0;
265
388
  transition: opacity var(--primitives-transition-duration-slow) var(--primitives-transition-easing-default);
266
389
  }
267
390
 
@@ -272,6 +395,10 @@ export const buttonStyles = css `
272
395
  opacity: 0;
273
396
  }
274
397
 
398
+ :host([loading]) .button__disclosure-icon {
399
+ opacity: 0;
400
+ }
401
+
275
402
  /* Wrapper overlaid on the control, positioned against the host (which is
276
403
  position:relative). It lives outside the <button>/<a> so the indicator's
277
404
  role="status" live region announces loading without joining the button's
@@ -280,9 +407,7 @@ export const buttonStyles = css `
280
407
  .button__activity-indicator {
281
408
  position: absolute;
282
409
  inset: 0;
283
- /* Re-establish the content color here: the indicator lives outside
284
- .button now, so its currentColor stroke can no longer inherit it. */
285
- color: var(--_content-color);
410
+ color: var(--_primary-content-color);
286
411
  }
287
412
 
288
413
  ::slotted(nldd-icon) {
@@ -299,21 +424,78 @@ export const buttonStyles = css `
299
424
  white-space: nowrap;
300
425
  }
301
426
 
427
+ .button__text-area {
428
+ display: flex;
429
+ flex-direction: column;
430
+ min-width: 0;
431
+ padding-inline: var(--_gap);
432
+ }
433
+
434
+ :host([size="xs"]) .button__text-area,
435
+ :host([size="sm"]) .button__text-area {
436
+ flex-direction: row;
437
+ align-items: baseline;
438
+ gap: var(--_gap);
439
+ }
440
+
441
+ .button__supporting-text {
442
+ min-width: 0;
443
+ color: var(--_secondary-content-color);
444
+ font: var(--_supporting-font);
445
+ }
446
+
447
+ .button:hover .button__supporting-text {
448
+ @media (hover: hover) {
449
+ color: var(--_is-hovered-secondary-content-color);
450
+ }
451
+ }
452
+
453
+ .button:active .button__supporting-text {
454
+ color: var(--_is-active-secondary-content-color);
455
+ }
456
+
457
+ :host([single-line]) .button__supporting-text {
458
+ overflow: hidden;
459
+ text-overflow: ellipsis;
460
+ white-space: nowrap;
461
+ }
462
+
463
+ :host([size="md"]) .button.has-supporting-text {
464
+ --_font: var(--semantics-buttons-sm-primary-text-font);
465
+ --_icon-size: var(--semantics-buttons-md-with-supporting-text-icon-size);
466
+ --_inline-padding: calc((var(--_min-size) - var(--_icon-size)) / 2);
467
+ --_block-padding: var(--primitives-space-4);
468
+ }
469
+
470
+ :host([size="lg"]) .button.has-supporting-text {
471
+ --_font: var(--semantics-buttons-md-primary-text-font);
472
+ --_icon-size: var(--semantics-buttons-lg-with-supporting-text-icon-size);
473
+ --_inline-padding: calc((var(--_min-size) - var(--_icon-size)) / 2);
474
+ --_block-padding: var(--primitives-space-4);
475
+ }
476
+
302
477
  .button__start-icon,
303
478
  .button__end-icon {
304
- display: block;
479
+ display: flex;
305
480
  width: var(--_icon-size);
306
481
  height: var(--_icon-size);
307
482
  flex-shrink: 0;
483
+ align-items: center;
484
+ justify-content: center;
485
+ }
486
+
487
+ :host([expandable]) .button {
488
+ padding-inline-end: calc(var(--_inline-padding) + var(--_gap) + var(--_disclosure-icon-size));
308
489
  }
309
490
 
310
491
  .button__disclosure-icon {
311
492
  display: block;
312
- margin-left: var(--_disclosure-icon-margin-left);
313
- margin-right: -2px;
493
+ position: absolute;
494
+ top: 50%;
495
+ inset-inline-end: var(--_inline-padding);
314
496
  width: var(--_disclosure-icon-size);
315
497
  height: var(--_disclosure-icon-size);
316
- flex-shrink: 0;
498
+ transform: translateY(-50%);
317
499
  }
318
500
  `;
319
501
  //# sourceMappingURL=button.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"button.styles.js","sourceRoot":"","sources":["../../../../src/components/actions/button/button.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;IAuB3B,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoSrB,CAAC"}
1
+ {"version":3,"file":"button.styles.js","sourceRoot":"","sources":["../../../../src/components/actions/button/button.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6B3B,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAodrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"button.template.d.ts","sourceRoot":"","sources":["../../../../src/components/actions/button/button.template.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,UAAU,eAAe;IACxB,WAAW,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;CACrC;AA4BD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,wCAwElE"}
1
+ {"version":3,"file":"button.template.d.ts","sourceRoot":"","sources":["../../../../src/components/actions/button/button.template.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,UAAU,eAAe;IACxB,WAAW,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;CACrC;AA+BD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,wCAuFlE"}
@@ -6,26 +6,32 @@ function renderContent(component) {
6
6
  return html `
7
7
  <span class="button__content">
8
8
  ${component.startIcon ? html `
9
- <nldd-icon class="button__start-icon"
10
- name=${component.startIcon}
11
- ></nldd-icon>
9
+ <span class="button__start-icon">
10
+ <nldd-icon name=${component.startIcon}></nldd-icon>
11
+ </span>
12
12
  ` : html `<slot name="start-icon"></slot>`}
13
- <span class="button__text">${component.text ? component.text : html `<slot name="text"></slot>`}</span>
13
+ <span class="button__text-area">
14
+ <span class="button__text">${component.text ? component.text : html `<slot name="text"></slot>`}</span>
15
+ ${component.supportingText ? html `<span class="button__supporting-text">${component.supportingText}</span>` : nothing}
16
+ </span>
14
17
  ${component.endIcon ? html `
15
- <nldd-icon class="button__end-icon"
16
- name=${component.endIcon}
17
- ></nldd-icon>
18
+ <span class="button__end-icon">
19
+ <nldd-icon name=${component.endIcon}></nldd-icon>
20
+ </span>
18
21
  ` : html `<slot name="end-icon"></slot>`}
19
- ${component.expandable ? html `
20
- <nldd-icon class="button__disclosure-icon"
21
- name="chevron-down-small"
22
- ></nldd-icon>
23
- ` : nothing}
24
22
  </span>
23
+ ${component.expandable ? html `
24
+ <nldd-icon class="button__disclosure-icon"
25
+ name="chevron-down-small"
26
+ ></nldd-icon>
27
+ ` : nothing}
25
28
  `;
26
29
  }
27
30
  export function template(helpers) {
28
31
  const content = renderContent(this);
32
+ const buttonClass = ['button',
33
+ this.supportingText ? 'has-supporting-text' : '',
34
+ ].filter(Boolean).join(' ');
29
35
  // `expandable` (disclosure widget signal) or `popup-type` (popup container
30
36
  // signal) both require aria-expanded to always be present so screen
31
37
  // readers know the current open/closed state. Without one of these, only
@@ -33,6 +39,16 @@ export function template(helpers) {
33
39
  // irrelevant ARIA attributes.
34
40
  const isDisclosure = this.expandable || !!this.popupType;
35
41
  const ariaExpanded = isDisclosure ? String(this.expanded) : (this.expanded ? 'true' : nothing);
42
+ // `supporting-text` renders in a sibling span next to the text; the
43
+ // accessible-name flat-string algorithm concatenates them without a
44
+ // separator ("OpslaanAlle wijzigingen"). With no explicit accessible-label,
45
+ // join them with a comma so screen readers announce the two apart. Filtering
46
+ // empties keeps a name when only supporting-text is set — otherwise an
47
+ // icon-less button would be nameless. (Slotted text can't be read here —
48
+ // those consumers should set accessible-label.) Without supporting-text,
49
+ // `nothing` sets no aria-label at all, so the name is the visible text content.
50
+ const ariaLabel = this.accessibleLabel
51
+ || (this.supportingText ? [this.text, this.supportingText].filter(Boolean).join(', ') : nothing);
36
52
  // Loading: an activity indicator overlays the (opacity-hidden) content. It
37
53
  // sits OUTSIDE the <button>/<a> (a sibling, overlaid via the host's
38
54
  // position:relative) so its role="status" live region can announce "Laden"
@@ -45,7 +61,7 @@ export function template(helpers) {
45
61
  <div class="button__activity-indicator">
46
62
  <nldd-activity-indicator
47
63
  timing="instant"
48
- size=${this.size === 'xs' ? '16' : this.size === 'sm' ? '20' : '24'}
64
+ size=${this.size === 'xs' ? '16' : this.size === 'sm' ? '20' : this.size === 'lg' ? '28' : '24'}
49
65
  ></nldd-activity-indicator>
50
66
  </div>
51
67
  `
@@ -53,12 +69,12 @@ export function template(helpers) {
53
69
  if (this.href) {
54
70
  const resolvedRel = this._resolvedRel();
55
71
  return html `
56
- <a class="button"
72
+ <a class=${buttonClass}
57
73
  href=${this.href}
58
74
  target=${this.target || nothing}
59
75
  rel=${resolvedRel || nothing}
60
76
  aria-disabled=${this.disabled ? 'true' : nothing}
61
- aria-label=${this.accessibleLabel || nothing}
77
+ aria-label=${ariaLabel}
62
78
  aria-haspopup=${this.popupType || nothing}
63
79
  aria-expanded=${ariaExpanded}
64
80
  aria-busy=${ariaBusy}
@@ -75,11 +91,11 @@ export function template(helpers) {
75
91
  // browsers don't support the Popover API at all, so the menu this button
76
92
  // drives is non-functional regardless. No per-binding capability check.
77
93
  return html `
78
- <button class="button"
94
+ <button class=${buttonClass}
79
95
  type=${this.type}
80
96
  ?disabled=${this.disabled}
81
97
  aria-disabled=${this.disabled ? 'true' : nothing}
82
- aria-label=${this.accessibleLabel || nothing}
98
+ aria-label=${ariaLabel}
83
99
  aria-haspopup=${this.popupType || nothing}
84
100
  aria-expanded=${ariaExpanded}
85
101
  aria-busy=${ariaBusy}