@tylertech/forge 3.10.5 → 3.12.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 (257) hide show
  1. package/custom-elements.json +594 -226
  2. package/dist/app-bar/forge-app-bar.css +13 -5
  3. package/dist/button/forge-button.css +14 -6
  4. package/dist/checkbox/forge-checkbox.css +23 -17
  5. package/dist/chips/forge-chips.css +12 -4
  6. package/dist/field/forge-field.css +7 -5
  7. package/dist/floating-action-button/forge-floating-action-button.css +12 -6
  8. package/dist/forge.css +6 -1
  9. package/dist/icon-button/forge-icon-button.css +12 -4
  10. package/dist/lib.js +22 -22
  11. package/dist/lib.js.map +4 -4
  12. package/dist/list/forge-list.css +59 -3
  13. package/dist/radio/forge-radio.css +22 -12
  14. package/dist/skip-link/forge-skip-link.css +38 -32
  15. package/dist/state-layer/forge-state-layer.css +2 -0
  16. package/dist/switch/forge-switch.css +9 -5
  17. package/dist/table/forge-table.css +6 -1
  18. package/dist/vscode.html-custom-data.json +104 -79
  19. package/esm/accordion/accordion.d.ts +2 -0
  20. package/esm/accordion/accordion.js +2 -0
  21. package/esm/app-bar/app-bar/app-bar-adapter.js +2 -2
  22. package/esm/app-bar/app-bar/app-bar.d.ts +1 -1
  23. package/esm/app-bar/app-bar/app-bar.js +1 -1
  24. package/esm/app-bar/help-button/app-bar-help-button.d.ts +1 -1
  25. package/esm/app-bar/help-button/app-bar-help-button.js +1 -1
  26. package/esm/app-bar/menu-button/app-bar-menu-button.d.ts +1 -1
  27. package/esm/app-bar/menu-button/app-bar-menu-button.js +1 -1
  28. package/esm/app-bar/notification-button/app-bar-notification-button.d.ts +2 -0
  29. package/esm/app-bar/notification-button/app-bar-notification-button.js +2 -0
  30. package/esm/app-bar/profile-button/app-bar-profile-button-adapter.d.ts +2 -1
  31. package/esm/app-bar/profile-button/app-bar-profile-button-adapter.js +2 -0
  32. package/esm/app-bar/profile-button/app-bar-profile-button.d.ts +2 -0
  33. package/esm/app-bar/profile-button/app-bar-profile-button.js +2 -0
  34. package/esm/app-bar/search/app-bar-search.d.ts +2 -0
  35. package/esm/app-bar/search/app-bar-search.js +2 -0
  36. package/esm/autocomplete/autocomplete-core.js +16 -3
  37. package/esm/autocomplete/autocomplete.d.ts +2 -0
  38. package/esm/autocomplete/autocomplete.js +2 -0
  39. package/esm/avatar/avatar.d.ts +1 -1
  40. package/esm/avatar/avatar.js +1 -1
  41. package/esm/backdrop/backdrop.d.ts +2 -0
  42. package/esm/backdrop/backdrop.js +2 -0
  43. package/esm/badge/badge.d.ts +2 -0
  44. package/esm/badge/badge.js +2 -0
  45. package/esm/banner/banner.d.ts +1 -1
  46. package/esm/banner/banner.js +1 -1
  47. package/esm/button/base/base-button-adapter.js +2 -2
  48. package/esm/button/button.d.ts +1 -6
  49. package/esm/button/button.js +1 -6
  50. package/esm/button-area/button-area-adapter.js +2 -2
  51. package/esm/button-area/button-area.d.ts +1 -4
  52. package/esm/button-area/button-area.js +1 -4
  53. package/esm/button-toggle/button-toggle/button-toggle-adapter.js +2 -2
  54. package/esm/button-toggle/button-toggle/button-toggle.d.ts +2 -0
  55. package/esm/button-toggle/button-toggle/button-toggle.js +2 -0
  56. package/esm/button-toggle/button-toggle-group/button-toggle-group.d.ts +1 -1
  57. package/esm/button-toggle/button-toggle-group/button-toggle-group.js +1 -1
  58. package/esm/calendar/calendar-menu/calendar-menu.js +1 -1
  59. package/esm/calendar/calendar.d.ts +2 -0
  60. package/esm/calendar/calendar.js +3 -1
  61. package/esm/card/card.d.ts +2 -0
  62. package/esm/card/card.js +2 -0
  63. package/esm/chip-field/chip-field.d.ts +2 -0
  64. package/esm/chip-field/chip-field.js +2 -0
  65. package/esm/chips/chip/chip-adapter.d.ts +3 -0
  66. package/esm/chips/chip/chip-adapter.js +14 -4
  67. package/esm/chips/chip/chip-constants.d.ts +2 -0
  68. package/esm/chips/chip/chip-constants.js +2 -1
  69. package/esm/chips/chip/chip-core.d.ts +4 -0
  70. package/esm/chips/chip/chip-core.js +9 -0
  71. package/esm/chips/chip/chip.d.ts +6 -0
  72. package/esm/chips/chip/chip.js +10 -0
  73. package/esm/chips/chip-set/chip-set.d.ts +1 -1
  74. package/esm/chips/chip-set/chip-set.js +1 -1
  75. package/esm/circular-progress/circular-progress.d.ts +1 -2
  76. package/esm/circular-progress/circular-progress.js +1 -2
  77. package/esm/color-picker/color-picker.d.ts +2 -0
  78. package/esm/color-picker/color-picker.js +3 -1
  79. package/esm/core/utils/a11y-utils.js +17 -0
  80. package/esm/core/utils/utils.js +8 -2
  81. package/esm/date-picker/date-picker.d.ts +2 -0
  82. package/esm/date-picker/date-picker.js +2 -0
  83. package/esm/date-range-picker/date-range-picker.d.ts +2 -0
  84. package/esm/date-range-picker/date-range-picker.js +2 -0
  85. package/esm/deprecated/button/deprecated-button.js +3 -3
  86. package/esm/deprecated/icon-button/deprecated-icon-button.js +2 -2
  87. package/esm/dialog/dialog.d.ts +1 -1
  88. package/esm/dialog/dialog.js +1 -1
  89. package/esm/divider/divider.d.ts +1 -1
  90. package/esm/divider/divider.js +1 -1
  91. package/esm/drawer/base/base-drawer-adapter.d.ts +2 -0
  92. package/esm/drawer/base/base-drawer-adapter.js +3 -0
  93. package/esm/drawer/base/base-drawer-core.js +3 -0
  94. package/esm/drawer/drawer/drawer.d.ts +2 -0
  95. package/esm/drawer/drawer/drawer.js +3 -1
  96. package/esm/drawer/mini-drawer/mini-drawer.d.ts +2 -0
  97. package/esm/drawer/mini-drawer/mini-drawer.js +3 -1
  98. package/esm/drawer/modal-drawer/modal-drawer.d.ts +2 -0
  99. package/esm/drawer/modal-drawer/modal-drawer.js +3 -1
  100. package/esm/expansion-panel/expansion-panel.d.ts +1 -1
  101. package/esm/expansion-panel/expansion-panel.js +1 -1
  102. package/esm/field/field-adapter.js +2 -2
  103. package/esm/field/field-core.d.ts +3 -3
  104. package/esm/field/field.d.ts +1 -2
  105. package/esm/field/field.js +1 -2
  106. package/esm/file-picker/file-picker.d.ts +2 -3
  107. package/esm/file-picker/file-picker.js +2 -3
  108. package/esm/floating-action-button/floating-action-button.d.ts +1 -1
  109. package/esm/floating-action-button/floating-action-button.js +1 -1
  110. package/esm/focus-indicator/focus-indicator-constants.d.ts +1 -11
  111. package/esm/focus-indicator/focus-indicator-constants.js +2 -17
  112. package/esm/focus-indicator/focus-indicator.d.ts +53 -26
  113. package/esm/focus-indicator/focus-indicator.js +139 -62
  114. package/esm/focus-indicator/index.d.ts +0 -2
  115. package/esm/focus-indicator/index.js +0 -2
  116. package/esm/icon/icon.d.ts +1 -1
  117. package/esm/icon/icon.js +1 -1
  118. package/esm/icon-button/icon-button.d.ts +2 -0
  119. package/esm/icon-button/icon-button.js +2 -0
  120. package/esm/inline-message/inline-message.d.ts +1 -1
  121. package/esm/inline-message/inline-message.js +1 -1
  122. package/esm/keyboard-shortcut/keyboard-shortcut.d.ts +2 -0
  123. package/esm/keyboard-shortcut/keyboard-shortcut.js +2 -0
  124. package/esm/label/label.d.ts +1 -1
  125. package/esm/label/label.js +1 -1
  126. package/esm/label-value/label-value.d.ts +1 -1
  127. package/esm/label-value/label-value.js +1 -1
  128. package/esm/linear-progress/linear-progress.d.ts +1 -2
  129. package/esm/linear-progress/linear-progress.js +1 -2
  130. package/esm/list/list/list.d.ts +1 -1
  131. package/esm/list/list/list.js +2 -2
  132. package/esm/list/list-item/list-item-constants.js +1 -1
  133. package/esm/list/list-item/list-item-core.d.ts +2 -0
  134. package/esm/list/list-item/list-item-core.js +29 -6
  135. package/esm/list/list-item/list-item.d.ts +1 -0
  136. package/esm/list/list-item/list-item.js +2 -1
  137. package/esm/list-dropdown/list-dropdown-constants.d.ts +11 -1
  138. package/esm/list-dropdown/list-dropdown-constants.js +6 -1
  139. package/esm/list-dropdown/list-dropdown-utils.d.ts +3 -1
  140. package/esm/list-dropdown/list-dropdown-utils.js +69 -21
  141. package/esm/menu/menu-adapter.d.ts +2 -0
  142. package/esm/menu/menu-adapter.js +12 -8
  143. package/esm/menu/menu-constants.d.ts +1 -0
  144. package/esm/menu/menu-constants.js +3 -2
  145. package/esm/menu/menu-core.d.ts +5 -0
  146. package/esm/menu/menu-core.js +41 -2
  147. package/esm/menu/menu.d.ts +17 -0
  148. package/esm/menu/menu.js +15 -1
  149. package/esm/open-icon/open-icon.d.ts +2 -1
  150. package/esm/open-icon/open-icon.js +2 -1
  151. package/esm/overlay/overlay.d.ts +1 -2
  152. package/esm/overlay/overlay.js +1 -2
  153. package/esm/page-state/page-state.d.ts +2 -1
  154. package/esm/page-state/page-state.js +2 -1
  155. package/esm/paginator/paginator-core.d.ts +16 -0
  156. package/esm/paginator/paginator-core.js +29 -9
  157. package/esm/paginator/paginator.d.ts +38 -0
  158. package/esm/paginator/paginator.js +46 -0
  159. package/esm/popover/popover-adapter.js +1 -1
  160. package/esm/popover/popover-constants.d.ts +4 -0
  161. package/esm/popover/popover-constants.js +4 -2
  162. package/esm/popover/popover-core.d.ts +5 -1
  163. package/esm/popover/popover-core.js +13 -0
  164. package/esm/popover/popover.d.ts +6 -2
  165. package/esm/popover/popover.js +10 -2
  166. package/esm/profile-card/profile-card.d.ts +3 -0
  167. package/esm/profile-card/profile-card.js +3 -0
  168. package/esm/radio/radio/radio.d.ts +1 -2
  169. package/esm/radio/radio/radio.js +1 -2
  170. package/esm/scaffold/scaffold.d.ts +1 -1
  171. package/esm/scaffold/scaffold.js +1 -1
  172. package/esm/select/core/base-select-constants.d.ts +4 -0
  173. package/esm/select/core/base-select-core.d.ts +22 -2
  174. package/esm/select/core/base-select-core.js +217 -40
  175. package/esm/select/option/option.d.ts +2 -0
  176. package/esm/select/option/option.js +2 -0
  177. package/esm/select/option-group/option-group.d.ts +2 -0
  178. package/esm/select/option-group/option-group.js +2 -0
  179. package/esm/select/select/select-constants.d.ts +5 -0
  180. package/esm/select/select/select-constants.js +5 -2
  181. package/esm/select/select/select.d.ts +14 -2
  182. package/esm/select/select/select.js +23 -2
  183. package/esm/select/select-dropdown/select-dropdown.d.ts +2 -0
  184. package/esm/select/select-dropdown/select-dropdown.js +2 -0
  185. package/esm/skeleton/skeleton.d.ts +1 -1
  186. package/esm/skeleton/skeleton.js +1 -1
  187. package/esm/skip-link/skip-link.d.ts +1 -1
  188. package/esm/skip-link/skip-link.js +1 -1
  189. package/esm/slider/slider.d.ts +1 -1
  190. package/esm/slider/slider.js +1 -1
  191. package/esm/split-button/split-button.d.ts +1 -1
  192. package/esm/split-button/split-button.js +2 -2
  193. package/esm/split-view/split-view/split-view.d.ts +2 -0
  194. package/esm/split-view/split-view/split-view.js +2 -0
  195. package/esm/split-view/split-view-panel/split-view-panel.d.ts +2 -0
  196. package/esm/split-view/split-view-panel/split-view-panel.js +3 -1
  197. package/esm/stack/stack.d.ts +1 -8
  198. package/esm/stack/stack.js +1 -8
  199. package/esm/state-layer/state-layer.d.ts +1 -1
  200. package/esm/state-layer/state-layer.js +2 -2
  201. package/esm/stepper/step/step.d.ts +2 -0
  202. package/esm/stepper/step/step.js +3 -1
  203. package/esm/stepper/stepper/stepper.d.ts +2 -0
  204. package/esm/stepper/stepper/stepper.js +2 -0
  205. package/esm/table/table-adapter.d.ts +4 -4
  206. package/esm/table/table-adapter.js +4 -4
  207. package/esm/table/table-core.js +2 -2
  208. package/esm/table/table-utils.d.ts +2 -2
  209. package/esm/table/table-utils.js +25 -18
  210. package/esm/table/table.d.ts +3 -1
  211. package/esm/table/table.js +4 -1
  212. package/esm/tabs/tab/tab-adapter.js +2 -2
  213. package/esm/tabs/tab/tab.d.ts +2 -0
  214. package/esm/tabs/tab/tab.js +2 -0
  215. package/esm/tabs/tab-bar/tab-bar.d.ts +1 -1
  216. package/esm/tabs/tab-bar/tab-bar.js +1 -1
  217. package/esm/text-field/text-field-adapter.d.ts +6 -4
  218. package/esm/text-field/text-field-adapter.js +11 -4
  219. package/esm/text-field/text-field-core.d.ts +4 -0
  220. package/esm/text-field/text-field-core.js +13 -2
  221. package/esm/text-field/text-field.d.ts +1 -1
  222. package/esm/text-field/text-field.js +1 -1
  223. package/esm/time-picker/time-picker-adapter.js +1 -0
  224. package/esm/time-picker/time-picker-core.js +3 -3
  225. package/esm/time-picker/time-picker.d.ts +2 -0
  226. package/esm/time-picker/time-picker.js +2 -0
  227. package/esm/toast/toast-adapter.d.ts +20 -0
  228. package/esm/toast/toast-adapter.js +30 -0
  229. package/esm/toast/toast-core.d.ts +17 -0
  230. package/esm/toast/toast-core.js +66 -0
  231. package/esm/toast/toast.d.ts +9 -2
  232. package/esm/toast/toast.js +10 -1
  233. package/esm/toolbar/toolbar.d.ts +1 -3
  234. package/esm/toolbar/toolbar.js +1 -3
  235. package/esm/tooltip/tooltip-adapter.d.ts +6 -0
  236. package/esm/tooltip/tooltip-adapter.js +9 -0
  237. package/esm/tooltip/tooltip-constants.d.ts +1 -0
  238. package/esm/tooltip/tooltip-constants.js +2 -1
  239. package/esm/tooltip/tooltip-core.d.ts +20 -0
  240. package/esm/tooltip/tooltip-core.js +96 -2
  241. package/esm/tooltip/tooltip.d.ts +1 -1
  242. package/esm/tooltip/tooltip.js +2 -2
  243. package/esm/view-switcher/view/view.d.ts +2 -0
  244. package/esm/view-switcher/view/view.js +2 -0
  245. package/esm/view-switcher/view-switcher.d.ts +2 -0
  246. package/esm/view-switcher/view-switcher.js +2 -0
  247. package/package.json +4 -4
  248. package/sass/focus-indicator/focus-indicator.scss +1 -1
  249. package/sass/icon-button/forge-icon-button.scss +3 -3
  250. package/sass/list/forge-list.scss +6 -6
  251. package/sass/state-layer/_core.scss +2 -0
  252. package/sass/table/_core.scss +13 -1
  253. package/sass/tooltip/_core.scss +0 -2
  254. package/esm/focus-indicator/focus-indicator-adapter.d.ts +0 -29
  255. package/esm/focus-indicator/focus-indicator-adapter.js +0 -37
  256. package/esm/focus-indicator/focus-indicator-core.d.ts +0 -48
  257. package/esm/focus-indicator/focus-indicator-core.js +0 -129
@@ -132,10 +132,6 @@
132
132
  color: inherit;
133
133
  box-sizing: border-box;
134
134
  height: 100%;
135
- outline: none;
136
- --forge-focus-indicator-color: var(--_app-bar-foreground);
137
- --forge-focus-indicator-offset-block: var(--forge-spacing-xxsmall, 4px);
138
- --forge-focus-indicator-shape: calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1));
139
135
  }
140
136
  @keyframes forge-focus-indicator-outward-grow {
141
137
  from {
@@ -163,6 +159,9 @@
163
159
  border-width: var(--_focus-indicator-active-width);
164
160
  }
165
161
  }
162
+ .forge-app-bar a.forge-app-bar__title {
163
+ outline: none;
164
+ }
166
165
  .forge-app-bar a.forge-app-bar__title:focus-visible::after {
167
166
  --_focus-indicator-display: var(--forge-focus-indicator-display, flex);
168
167
  --_focus-indicator-width: var(--forge-focus-indicator-width, var(--forge-border-medium, 2px));
@@ -201,6 +200,11 @@
201
200
  content: "";
202
201
  display: block;
203
202
  }
203
+ .forge-app-bar a.forge-app-bar__title {
204
+ --forge-focus-indicator-color: var(--_app-bar-foreground);
205
+ --forge-focus-indicator-offset-block: var(--forge-spacing-xxsmall, 4px);
206
+ --forge-focus-indicator-shape: calc(var(--forge-shape-medium, 4px) * var(--forge-shape-factor, 1));
207
+ }
204
208
  .forge-app-bar__logo-title-container {
205
209
  position: relative;
206
210
  display: flex;
@@ -221,11 +225,12 @@
221
225
  --_state-layer-hover-duration: var(--forge-state-layer-hover-duration, 15ms);
222
226
  --_state-layer-pressed-duration: var(--forge-state-layer-pressed-duration, 105ms);
223
227
  --_state-layer-animation-duration: var(--forge-state-layer-animation-duration, 375ms);
224
- --forge-state-layer-color: var(--_app-bar-foreground);
225
228
  }
226
229
  .forge-app-bar__logo-title-container:has(a.forge-app-bar__title)::before {
227
230
  opacity: 0;
228
231
  position: absolute;
232
+ backface-visibility: hidden;
233
+ transform: translateZ(0);
229
234
  background-color: var(--_state-layer-hover-color);
230
235
  inset: 0;
231
236
  transition: opacity var(--_state-layer-hover-duration) linear, background-color var(--_state-layer-hover-duration) linear;
@@ -243,6 +248,9 @@
243
248
  transition-duration: var(--_state-layer-pressed-duration);
244
249
  --_state-layer-pressed-opacity: var(--forge-state-layer-pressed-opacity, 0.18);
245
250
  }
251
+ .forge-app-bar__logo-title-container:has(a.forge-app-bar__title) {
252
+ --forge-state-layer-color: var(--_app-bar-foreground);
253
+ }
246
254
  .forge-app-bar__section {
247
255
  display: inline-flex;
248
256
  flex: 1 1 auto;
@@ -131,9 +131,6 @@
131
131
  transition-property: box-shadow, background;
132
132
  transition-duration: var(--_button-transition-duration);
133
133
  transition-timing-function: var(--_button-transition-timing);
134
- position: relative;
135
- inline-size: auto;
136
- --forge-icon-font-size: var(--_button-icon-size);
137
134
  }
138
135
  .forge-button::-moz-focus-inner {
139
136
  padding: 0;
@@ -147,9 +144,9 @@
147
144
  --_button-shadow: var(--_button-active-shadow);
148
145
  background: var(--_button-active-background);
149
146
  }
150
- .forge-button:not(:disabled) {
151
- outline: none;
152
- --forge-focus-indicator-color: var(--_button-primary-color);
147
+ .forge-button {
148
+ position: relative;
149
+ inline-size: auto;
153
150
  }
154
151
  .forge-button:not(:disabled):not(.forge-button--link) {
155
152
  --_state-layer-display: var(--forge-state-layer-display, flex);
@@ -165,6 +162,8 @@
165
162
  .forge-button:not(:disabled):not(.forge-button--link)::before {
166
163
  opacity: 0;
167
164
  position: absolute;
165
+ backface-visibility: hidden;
166
+ transform: translateZ(0);
168
167
  background-color: var(--_state-layer-hover-color);
169
168
  inset: 0;
170
169
  transition: opacity var(--_state-layer-hover-duration) linear, background-color var(--_state-layer-hover-duration) linear;
@@ -208,6 +207,9 @@
208
207
  border-width: var(--_focus-indicator-active-width);
209
208
  }
210
209
  }
210
+ .forge-button:not(:disabled) {
211
+ outline: none;
212
+ }
211
213
  .forge-button:not(:disabled):focus-visible::after {
212
214
  --_focus-indicator-display: var(--forge-focus-indicator-display, flex);
213
215
  --_focus-indicator-width: var(--forge-focus-indicator-width, var(--forge-border-medium, 2px));
@@ -246,6 +248,9 @@
246
248
  content: "";
247
249
  display: block;
248
250
  }
251
+ .forge-button:not(:disabled) {
252
+ --forge-focus-indicator-color: var(--_button-primary-color);
253
+ }
249
254
  .forge-button:disabled {
250
255
  cursor: var(--_button-disabled-cursor);
251
256
  --_button-background: var(--_button-disabled-background);
@@ -321,6 +326,9 @@
321
326
  --_button-padding-inline: var(--_button-pill-padding-inline);
322
327
  --forge-focus-indicator-shape: var(--_button-pill-shape);
323
328
  }
329
+ .forge-button {
330
+ --forge-icon-font-size: var(--_button-icon-size);
331
+ }
324
332
  .forge-button--dense {
325
333
  --_button-height: var(--_button-dense-height);
326
334
  }
@@ -44,14 +44,6 @@
44
44
 
45
45
  .forge-checkbox {
46
46
  outline: none;
47
- --forge-focus-indicator-shape: 0px;
48
- --forge-focus-indicator-outward-offset: 8px;
49
- display: inline grid;
50
- position: relative;
51
- align-items: center;
52
- justify-items: center;
53
- inline-size: var(--_checkbox-state-layer-width);
54
- block-size: var(--_checkbox-state-layer-height);
55
47
  }
56
48
  .forge-checkbox:has(input[type=checkbox]:focus-visible)::after {
57
49
  --_focus-indicator-display: var(--forge-focus-indicator-display, flex);
@@ -91,6 +83,16 @@
91
83
  content: "";
92
84
  display: block;
93
85
  }
86
+ .forge-checkbox {
87
+ --forge-focus-indicator-shape: 0px;
88
+ --forge-focus-indicator-outward-offset: 8px;
89
+ display: inline grid;
90
+ position: relative;
91
+ align-items: center;
92
+ justify-items: center;
93
+ inline-size: var(--_checkbox-state-layer-width);
94
+ block-size: var(--_checkbox-state-layer-height);
95
+ }
94
96
  .forge-checkbox input[type=checkbox] {
95
97
  appearance: none;
96
98
  grid-column: 1;
@@ -113,11 +115,12 @@
113
115
  --_state-layer-hover-duration: var(--forge-state-layer-hover-duration, 15ms);
114
116
  --_state-layer-pressed-duration: var(--forge-state-layer-pressed-duration, 105ms);
115
117
  --_state-layer-animation-duration: var(--forge-state-layer-animation-duration, 375ms);
116
- border-radius: var(--_checkbox-state-layer-shape) !important;
117
118
  }
118
119
  .forge-checkbox input[type=checkbox]:not(:disabled) {
119
120
  opacity: 0;
120
121
  position: absolute;
122
+ backface-visibility: hidden;
123
+ transform: translateZ(0);
121
124
  background-color: var(--_state-layer-hover-color);
122
125
  inset: 0;
123
126
  transition: opacity var(--_state-layer-hover-duration) linear, background-color var(--_state-layer-hover-duration) linear;
@@ -134,6 +137,9 @@
134
137
  transition-duration: var(--_state-layer-pressed-duration);
135
138
  --_state-layer-pressed-opacity: var(--forge-state-layer-pressed-opacity, 0.18);
136
139
  }
140
+ .forge-checkbox input[type=checkbox]:not(:disabled) {
141
+ border-radius: var(--_checkbox-state-layer-shape) !important;
142
+ }
137
143
  .forge-checkbox__icon {
138
144
  display: none;
139
145
  grid-column: 1;
@@ -189,10 +195,6 @@
189
195
  border-color: var(--_checkbox-checked-border-color);
190
196
  background: var(--_checkbox-checked-background);
191
197
  }
192
- .forge-checkbox:has(input[type=checkbox]:checked) .forge-checkbox__icon {
193
- display: block;
194
- clip-path: polygon(13.101048% 47.903832%, 1.316772% 59.688108%, 33.7527% 92.84076%, 100.858068% 25.018668%, 89.073792% 13.234392%, 33.7527% 68.3388%);
195
- }
196
198
  .forge-checkbox:has(input[type=checkbox]:checked) .forge-checkbox__icon::before {
197
199
  translate: 0;
198
200
  }
@@ -201,6 +203,10 @@
201
203
  translate: -100% 0;
202
204
  }
203
205
  }
206
+ .forge-checkbox:has(input[type=checkbox]:checked) .forge-checkbox__icon {
207
+ display: block;
208
+ clip-path: polygon(13.101048% 47.903832%, 1.316772% 59.688108%, 33.7527% 92.84076%, 100.858068% 25.018668%, 89.073792% 13.234392%, 33.7527% 68.3388%);
209
+ }
204
210
  .forge-checkbox:has(input[type=checkbox]:checked) .forge-checkbox__icon--checked {
205
211
  clip-path: none;
206
212
  }
@@ -213,10 +219,6 @@
213
219
  border-color: var(--_checkbox-checked-border-color);
214
220
  background: var(--_checkbox-checked-background);
215
221
  }
216
- .forge-checkbox:has(input[type=checkbox]:indeterminate) .forge-checkbox__icon {
217
- display: block;
218
- clip-path: polygon(8.334% 41.67%, 8.334% 58.338%, 91.674% 58.338%, 91.674% 41.67%);
219
- }
220
222
  .forge-checkbox:has(input[type=checkbox]:indeterminate) .forge-checkbox__icon::before {
221
223
  translate: 0;
222
224
  }
@@ -225,6 +227,10 @@
225
227
  translate: -100% 0;
226
228
  }
227
229
  }
230
+ .forge-checkbox:has(input[type=checkbox]:indeterminate) .forge-checkbox__icon {
231
+ display: block;
232
+ clip-path: polygon(8.334% 41.67%, 8.334% 58.338%, 91.674% 58.338%, 91.674% 41.67%);
233
+ }
228
234
  .forge-checkbox:has(input[type=checkbox]:indeterminate) .forge-checkbox__icon--indeterminate {
229
235
  clip-path: none;
230
236
  }
@@ -120,14 +120,12 @@
120
120
  --_state-layer-hover-duration: var(--forge-state-layer-hover-duration, 15ms);
121
121
  --_state-layer-pressed-duration: var(--forge-state-layer-pressed-duration, 105ms);
122
122
  --_state-layer-animation-duration: var(--forge-state-layer-animation-duration, 375ms);
123
- --forge-state-layer-color: var(--_chip-color);
124
- outline: none;
125
- --forge-focus-indicator-color: var(--_chip-color);
126
- --forge-focus-indicator-shape: var(--_chip-shape);
127
123
  }
128
124
  .forge-chip:not(:disabled)::before {
129
125
  opacity: 0;
130
126
  position: absolute;
127
+ backface-visibility: hidden;
128
+ transform: translateZ(0);
131
129
  background-color: var(--_state-layer-hover-color);
132
130
  inset: 0;
133
131
  transition: opacity var(--_state-layer-hover-duration) linear, background-color var(--_state-layer-hover-duration) linear;
@@ -145,6 +143,9 @@
145
143
  transition-duration: var(--_state-layer-pressed-duration);
146
144
  --_state-layer-pressed-opacity: var(--forge-state-layer-pressed-opacity, 0.18);
147
145
  }
146
+ .forge-chip:not(:disabled) {
147
+ --forge-state-layer-color: var(--_chip-color);
148
+ }
148
149
  @keyframes forge-focus-indicator-outward-grow {
149
150
  from {
150
151
  outline-width: 0;
@@ -171,6 +172,9 @@
171
172
  border-width: var(--_focus-indicator-active-width);
172
173
  }
173
174
  }
175
+ .forge-chip:not(:disabled) {
176
+ outline: none;
177
+ }
174
178
  .forge-chip:not(:disabled):focus-visible::after {
175
179
  --_focus-indicator-display: var(--forge-focus-indicator-display, flex);
176
180
  --_focus-indicator-width: var(--forge-focus-indicator-width, var(--forge-border-medium, 2px));
@@ -209,6 +213,10 @@
209
213
  content: "";
210
214
  display: block;
211
215
  }
216
+ .forge-chip:not(:disabled) {
217
+ --forge-focus-indicator-color: var(--_chip-color);
218
+ --forge-focus-indicator-shape: var(--_chip-shape);
219
+ }
212
220
  .forge-chip--field {
213
221
  --_chip-background: var(--_chip-field-background);
214
222
  --_chip-color: var(--_chip-field-color);
@@ -156,9 +156,6 @@
156
156
  .forge-field:has(label).forge-field--rounded {
157
157
  padding-inline: var(--forge-spacing-large, 24px);
158
158
  }
159
- .forge-field:has(label).forge-field--float-label-in label {
160
- animation: forge-field-float-label-in var(--forge-animation-duration-short4, 200ms) var(--forge-animation-easing-accelerate, cubic-bezier(0.3, 0, 1, 1)) forwards;
161
- }
162
159
  @keyframes forge-field-float-label-in {
163
160
  from {
164
161
  transform: translateY(15%);
@@ -169,6 +166,9 @@
169
166
  opacity: 1;
170
167
  }
171
168
  }
169
+ .forge-field:has(label).forge-field--float-label-in label {
170
+ animation: forge-field-float-label-in var(--forge-animation-duration-short4, 200ms) var(--forge-animation-easing-accelerate, cubic-bezier(0.3, 0, 1, 1)) forwards;
171
+ }
172
172
  @keyframes forge-field-float-label-out {
173
173
  from {
174
174
  opacity: 0;
@@ -235,8 +235,6 @@
235
235
  }
236
236
  .forge-field:has(:where(input, textarea, select, .forge-field__input):focus) {
237
237
  outline: none;
238
- --forge-focus-indicator-color: var(--forge-theme-primary, #3f51b5);
239
- --forge-focus-indicator-outward-offset: 0px;
240
238
  }
241
239
  .forge-field:has(:where(input, textarea, select, .forge-field__input):focus)::after {
242
240
  --_focus-indicator-display: var(--forge-focus-indicator-display, flex);
@@ -275,6 +273,10 @@
275
273
  display: block;
276
274
  border-radius: inherit;
277
275
  }
276
+ .forge-field:has(:where(input, textarea, select, .forge-field__input):focus) {
277
+ --forge-focus-indicator-color: var(--forge-theme-primary, #3f51b5);
278
+ --forge-focus-indicator-outward-offset: 0px;
279
+ }
278
280
  }
279
281
  @layer textarea {
280
282
  .forge-field:has(textarea:only-child) {
@@ -88,16 +88,12 @@
88
88
  --_state-layer-hover-duration: var(--forge-state-layer-hover-duration, 15ms);
89
89
  --_state-layer-pressed-duration: var(--forge-state-layer-pressed-duration, 105ms);
90
90
  --_state-layer-animation-duration: var(--forge-state-layer-animation-duration, 375ms);
91
- outline: none;
92
- --forge-focus-indicator-color: var(--_fab-background);
93
- --forge-focus-indicator-shape-start-start: var(--_fab-shape-start-start);
94
- --forge-focus-indicator-shape-start-end: var(--_fab-shape-start-end);
95
- --forge-focus-indicator-shape-end-start: var(--_fab-shape-end-start);
96
- --forge-focus-indicator-shape-end-end: var(--_fab-shape-end-end);
97
91
  }
98
92
  .forge-fab:not(:disabled)::before {
99
93
  opacity: 0;
100
94
  position: absolute;
95
+ backface-visibility: hidden;
96
+ transform: translateZ(0);
101
97
  background-color: var(--_state-layer-hover-color);
102
98
  inset: 0;
103
99
  transition: opacity var(--_state-layer-hover-duration) linear, background-color var(--_state-layer-hover-duration) linear;
@@ -141,6 +137,9 @@
141
137
  border-width: var(--_focus-indicator-active-width);
142
138
  }
143
139
  }
140
+ .forge-fab:not(:disabled) {
141
+ outline: none;
142
+ }
144
143
  .forge-fab:not(:disabled):focus-visible::after {
145
144
  --_focus-indicator-display: var(--forge-focus-indicator-display, flex);
146
145
  --_focus-indicator-width: var(--forge-focus-indicator-width, var(--forge-border-medium, 2px));
@@ -179,6 +178,13 @@
179
178
  content: "";
180
179
  display: block;
181
180
  }
181
+ .forge-fab:not(:disabled) {
182
+ --forge-focus-indicator-color: var(--_fab-background);
183
+ --forge-focus-indicator-shape-start-start: var(--_fab-shape-start-start);
184
+ --forge-focus-indicator-shape-start-end: var(--_fab-shape-start-end);
185
+ --forge-focus-indicator-shape-end-start: var(--_fab-shape-end-start);
186
+ --forge-focus-indicator-shape-end-end: var(--_fab-shape-end-end);
187
+ }
182
188
  .forge-fab--extended {
183
189
  --_fab-padding: var(--_fab-extended-padding);
184
190
  min-width: var(--_fab-extended-min-width);
package/dist/forge.css CHANGED
@@ -1619,7 +1619,12 @@ forge-table {
1619
1619
  font: inherit;
1620
1620
  color: inherit;
1621
1621
  width: 100%;
1622
- outline-offset: var(--forge-spacing-xxsmall, 4px);
1622
+ outline: none;
1623
+ position: relative;
1624
+ }
1625
+ .forge-table-head__cell--sortable button forge-focus-indicator {
1626
+ border-radius: 4px;
1627
+ --forge-focus-indicator-offset-inline: -4px;
1623
1628
  }
1624
1629
  .forge-table-head__cell--sortable.forge-table-head__cell--sorted-ascending .forge-table-head__cell-sort-icon {
1625
1630
  transform: rotate(180deg);
@@ -105,14 +105,12 @@
105
105
  --_state-layer-hover-duration: var(--forge-state-layer-hover-duration, 15ms);
106
106
  --_state-layer-pressed-duration: var(--forge-state-layer-pressed-duration, 105ms);
107
107
  --_state-layer-animation-duration: var(--forge-state-layer-animation-duration, 375ms);
108
- --forge-state-layer-color: var(--_icon-button-icon-color);
109
- outline: none;
110
- --forge-focus-indicator-color: var(--_icon-button-focus-indicator-color);
111
- --forge-focus-indicator-shape: var(--_icon-button-shape);
112
108
  }
113
109
  .forge-icon-button:not(:disabled)::before {
114
110
  opacity: 0;
115
111
  position: absolute;
112
+ backface-visibility: hidden;
113
+ transform: translateZ(0);
116
114
  background-color: var(--_state-layer-hover-color);
117
115
  inset: 0;
118
116
  transition: opacity var(--_state-layer-hover-duration) linear, background-color var(--_state-layer-hover-duration) linear;
@@ -130,6 +128,9 @@
130
128
  transition-duration: var(--_state-layer-pressed-duration);
131
129
  --_state-layer-pressed-opacity: var(--forge-state-layer-pressed-opacity, 0.18);
132
130
  }
131
+ .forge-icon-button:not(:disabled) {
132
+ --forge-state-layer-color: var(--_icon-button-icon-color);
133
+ }
133
134
  @keyframes forge-focus-indicator-outward-grow {
134
135
  from {
135
136
  outline-width: 0;
@@ -156,6 +157,9 @@
156
157
  border-width: var(--_focus-indicator-active-width);
157
158
  }
158
159
  }
160
+ .forge-icon-button:not(:disabled) {
161
+ outline: none;
162
+ }
159
163
  .forge-icon-button:not(:disabled):focus-visible::after {
160
164
  --_focus-indicator-display: var(--forge-focus-indicator-display, flex);
161
165
  --_focus-indicator-width: var(--forge-focus-indicator-width, var(--forge-border-medium, 2px));
@@ -194,6 +198,10 @@
194
198
  content: "";
195
199
  display: block;
196
200
  }
201
+ .forge-icon-button:not(:disabled) {
202
+ --forge-focus-indicator-color: var(--_icon-button-focus-indicator-color);
203
+ --forge-focus-indicator-shape: var(--_icon-button-shape);
204
+ }
197
205
  .forge-icon-button:not(:disabled):where(.forge-icon-button--text,
198
206
  :not(:where(.forge-icon-button--outlined, .forge-icon-button--tonal, .forge-icon-button--filled, .forge-icon-button--raised))) {
199
207
  --forge-focus-indicator-outward-offset: 0px;