@telefonica/mistica 16.66.0 → 16.68.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 (221) hide show
  1. package/README.md +21 -5
  2. package/css/mistica.css +1 -1
  3. package/dist/accordion.css-mistica.js +6 -6
  4. package/dist/align.css-mistica.js +1 -1
  5. package/dist/autocomplete.css-mistica.js +1 -1
  6. package/dist/avatar.css-mistica.js +1 -1
  7. package/dist/badge.css-mistica.js +1 -1
  8. package/dist/box.css-mistica.js +13 -13
  9. package/dist/boxed.css-mistica.js +24 -24
  10. package/dist/button-group.css-mistica.js +1 -1
  11. package/dist/button-layout.css-mistica.js +14 -14
  12. package/dist/button.css-mistica.js +55 -46
  13. package/dist/button.css.d.ts +3 -0
  14. package/dist/button.js +133 -124
  15. package/dist/callout.css-mistica.js +11 -11
  16. package/dist/card-internal.css-mistica.js +15 -15
  17. package/dist/carousel.css-mistica.js +8 -8
  18. package/dist/checkbox.css-mistica.js +11 -11
  19. package/dist/chip.css-mistica.js +15 -15
  20. package/dist/circle.css-mistica.js +1 -1
  21. package/dist/community/advanced-data-card.css-mistica.js +6 -6
  22. package/dist/community/ai-card.css-mistica.js +2 -2
  23. package/dist/community/blocks.css-mistica.js +1 -1
  24. package/dist/community/cyber/example-component.css-mistica.js +1 -1
  25. package/dist/community/example-component.css-mistica.js +1 -1
  26. package/dist/community/skins/cyber-skin.js +9 -8
  27. package/dist/counter.css-mistica.js +1 -1
  28. package/dist/cover-hero.css-mistica.js +2 -2
  29. package/dist/credit-card-number-field.css-mistica.js +3 -3
  30. package/dist/date-field.css-mistica.js +1 -1
  31. package/dist/date-time-picker.css-mistica.js +1 -1
  32. package/dist/dialog.css-mistica.js +4 -4
  33. package/dist/divider.css-mistica.js +5 -5
  34. package/dist/double-field.css-mistica.js +2 -2
  35. package/dist/drawer.css-mistica.js +1 -1
  36. package/dist/empty-state-card.css-mistica.js +1 -1
  37. package/dist/empty-state.css-mistica.js +5 -5
  38. package/dist/fade-in.css-mistica.js +1 -1
  39. package/dist/feedback.css-mistica.js +1 -1
  40. package/dist/file-upload.css-mistica.js +7 -7
  41. package/dist/fixed-footer-layout.css-mistica.js +2 -2
  42. package/dist/focus-trap.d.ts +3 -1
  43. package/dist/focus-trap.js +6 -5
  44. package/dist/form.css-mistica.js +1 -1
  45. package/dist/grid-layout.css-mistica.js +3 -3
  46. package/dist/grid.css-mistica.js +120 -120
  47. package/dist/header.css-mistica.js +1 -1
  48. package/dist/hero.css-mistica.js +2 -2
  49. package/dist/horizontal-scroll.css-mistica.js +1 -1
  50. package/dist/icon-button.css-mistica.js +53 -53
  51. package/dist/icons/icon-chevron.css-mistica.js +2 -2
  52. package/dist/icons/icon-error.css-mistica.js +1 -1
  53. package/dist/image.css-mistica.js +2 -2
  54. package/dist/inline.css-mistica.js +9 -9
  55. package/dist/list.css-mistica.js +1 -1
  56. package/dist/loading-bar.css-mistica.js +1 -1
  57. package/dist/loading-screen.css-mistica.js +4 -4
  58. package/dist/logo.css-mistica.js +5 -5
  59. package/dist/menu.css-mistica.js +13 -13
  60. package/dist/menu.js +27 -27
  61. package/dist/mosaic.css-mistica.js +1 -1
  62. package/dist/navigation-bar.css-mistica.js +18 -18
  63. package/dist/navigation-breadcrumbs.css-mistica.js +1 -1
  64. package/dist/package-version.js +1 -1
  65. package/dist/pin-field.css-mistica.js +1 -1
  66. package/dist/popover.css-mistica.js +1 -1
  67. package/dist/progress-bar.css-mistica.js +6 -6
  68. package/dist/radio-button.css-mistica.js +19 -19
  69. package/dist/rating.css-mistica.js +2 -2
  70. package/dist/responsive-layout.css-mistica.js +6 -6
  71. package/dist/screen-reader-only.css-mistica.js +1 -1
  72. package/dist/select.css-mistica.js +15 -15
  73. package/dist/sheet-action-row.css-mistica.js +1 -1
  74. package/dist/sheet-common.css-mistica.js +1 -1
  75. package/dist/sheet-info.css-mistica.js +1 -1
  76. package/dist/skeletons.css-mistica.js +6 -6
  77. package/dist/skins/skin-contract.css-mistica.js +684 -684
  78. package/dist/skip-link.css-mistica.js +1 -1
  79. package/dist/slider.css-mistica.js +18 -18
  80. package/dist/snackbar.css-mistica.js +4 -4
  81. package/dist/spinner.css-mistica.js +1 -1
  82. package/dist/square.css-mistica.js +1 -1
  83. package/dist/stack.css-mistica.js +5 -5
  84. package/dist/stacking-group.css-mistica.js +1 -1
  85. package/dist/stepper.css-mistica.js +2 -2
  86. package/dist/switch-component.css-mistica.js +35 -35
  87. package/dist/table.css-mistica.js +9 -9
  88. package/dist/tabs.css-mistica.js +17 -17
  89. package/dist/tag.css-mistica.js +1 -1
  90. package/dist/text-field-base.css-mistica.js +15 -15
  91. package/dist/text-field-components.css-mistica.js +3 -3
  92. package/dist/text-link.css-mistica.js +6 -6
  93. package/dist/text.css-mistica.js +6 -6
  94. package/dist/theme-context.css-mistica.js +1 -1
  95. package/dist/timeline.css-mistica.js +9 -9
  96. package/dist/timer.css-mistica.js +6 -6
  97. package/dist/tooltip.css-mistica.js +1 -1
  98. package/dist/touchable.css-mistica.js +1 -1
  99. package/dist/utils/aspect-ratio-support.css-mistica.js +2 -2
  100. package/dist/video.css-mistica.js +1 -1
  101. package/dist/video.d.ts +2 -0
  102. package/dist/video.js +40 -32
  103. package/dist/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +1 -1
  104. package/dist-es/accordion.css-mistica.js +6 -6
  105. package/dist-es/align.css-mistica.js +1 -1
  106. package/dist-es/autocomplete.css-mistica.js +1 -1
  107. package/dist-es/avatar.css-mistica.js +1 -1
  108. package/dist-es/badge.css-mistica.js +1 -1
  109. package/dist-es/box.css-mistica.js +13 -13
  110. package/dist-es/boxed.css-mistica.js +23 -23
  111. package/dist-es/button-group.css-mistica.js +1 -1
  112. package/dist-es/button-layout.css-mistica.js +14 -14
  113. package/dist-es/button.css-mistica.js +35 -35
  114. package/dist-es/button.js +168 -159
  115. package/dist-es/callout.css-mistica.js +11 -11
  116. package/dist-es/card-internal.css-mistica.js +15 -15
  117. package/dist-es/carousel.css-mistica.js +8 -8
  118. package/dist-es/checkbox.css-mistica.js +11 -11
  119. package/dist-es/chip.css-mistica.js +15 -15
  120. package/dist-es/circle.css-mistica.js +1 -1
  121. package/dist-es/community/advanced-data-card.css-mistica.js +6 -6
  122. package/dist-es/community/ai-card.css-mistica.js +2 -2
  123. package/dist-es/community/blocks.css-mistica.js +1 -1
  124. package/dist-es/community/cyber/example-component.css-mistica.js +1 -1
  125. package/dist-es/community/example-component.css-mistica.js +1 -1
  126. package/dist-es/community/skins/cyber-skin.js +9 -8
  127. package/dist-es/counter.css-mistica.js +1 -1
  128. package/dist-es/cover-hero.css-mistica.js +2 -2
  129. package/dist-es/credit-card-number-field.css-mistica.js +3 -3
  130. package/dist-es/date-field.css-mistica.js +1 -1
  131. package/dist-es/date-time-picker.css-mistica.js +1 -1
  132. package/dist-es/dialog.css-mistica.js +4 -4
  133. package/dist-es/divider.css-mistica.js +5 -5
  134. package/dist-es/double-field.css-mistica.js +2 -2
  135. package/dist-es/drawer.css-mistica.js +1 -1
  136. package/dist-es/empty-state-card.css-mistica.js +1 -1
  137. package/dist-es/empty-state.css-mistica.js +5 -5
  138. package/dist-es/fade-in.css-mistica.js +1 -1
  139. package/dist-es/feedback.css-mistica.js +1 -1
  140. package/dist-es/file-upload.css-mistica.js +7 -7
  141. package/dist-es/fixed-footer-layout.css-mistica.js +2 -2
  142. package/dist-es/focus-trap.js +8 -7
  143. package/dist-es/form.css-mistica.js +1 -1
  144. package/dist-es/grid-layout.css-mistica.js +3 -3
  145. package/dist-es/grid.css-mistica.js +120 -120
  146. package/dist-es/header.css-mistica.js +1 -1
  147. package/dist-es/hero.css-mistica.js +2 -2
  148. package/dist-es/horizontal-scroll.css-mistica.js +1 -1
  149. package/dist-es/icon-button.css-mistica.js +53 -53
  150. package/dist-es/icons/icon-chevron.css-mistica.js +2 -2
  151. package/dist-es/icons/icon-error.css-mistica.js +1 -1
  152. package/dist-es/image.css-mistica.js +2 -2
  153. package/dist-es/inline.css-mistica.js +9 -9
  154. package/dist-es/list.css-mistica.js +1 -1
  155. package/dist-es/loading-bar.css-mistica.js +1 -1
  156. package/dist-es/loading-screen.css-mistica.js +4 -4
  157. package/dist-es/logo.css-mistica.js +5 -5
  158. package/dist-es/menu.css-mistica.js +13 -13
  159. package/dist-es/menu.js +35 -35
  160. package/dist-es/mosaic.css-mistica.js +1 -1
  161. package/dist-es/navigation-bar.css-mistica.js +18 -18
  162. package/dist-es/navigation-breadcrumbs.css-mistica.js +1 -1
  163. package/dist-es/package-version.js +1 -1
  164. package/dist-es/pin-field.css-mistica.js +1 -1
  165. package/dist-es/popover.css-mistica.js +1 -1
  166. package/dist-es/progress-bar.css-mistica.js +6 -6
  167. package/dist-es/radio-button.css-mistica.js +19 -19
  168. package/dist-es/rating.css-mistica.js +2 -2
  169. package/dist-es/responsive-layout.css-mistica.js +6 -6
  170. package/dist-es/screen-reader-only.css-mistica.js +1 -1
  171. package/dist-es/select.css-mistica.js +15 -15
  172. package/dist-es/sheet-action-row.css-mistica.js +1 -1
  173. package/dist-es/sheet-common.css-mistica.js +1 -1
  174. package/dist-es/sheet-info.css-mistica.js +1 -1
  175. package/dist-es/skeletons.css-mistica.js +6 -6
  176. package/dist-es/skins/skin-contract.css-mistica.js +684 -684
  177. package/dist-es/skip-link.css-mistica.js +1 -1
  178. package/dist-es/slider.css-mistica.js +18 -18
  179. package/dist-es/snackbar.css-mistica.js +4 -4
  180. package/dist-es/spinner.css-mistica.js +1 -1
  181. package/dist-es/square.css-mistica.js +1 -1
  182. package/dist-es/stack.css-mistica.js +5 -5
  183. package/dist-es/stacking-group.css-mistica.js +1 -1
  184. package/dist-es/stepper.css-mistica.js +2 -2
  185. package/dist-es/style.css +1 -1
  186. package/dist-es/switch-component.css-mistica.js +35 -35
  187. package/dist-es/table.css-mistica.js +9 -9
  188. package/dist-es/tabs.css-mistica.js +17 -17
  189. package/dist-es/tag.css-mistica.js +1 -1
  190. package/dist-es/text-field-base.css-mistica.js +15 -15
  191. package/dist-es/text-field-components.css-mistica.js +3 -3
  192. package/dist-es/text-link.css-mistica.js +6 -6
  193. package/dist-es/text.css-mistica.js +6 -6
  194. package/dist-es/theme-context.css-mistica.js +1 -1
  195. package/dist-es/timeline.css-mistica.js +9 -9
  196. package/dist-es/timer.css-mistica.js +6 -6
  197. package/dist-es/tooltip.css-mistica.js +1 -1
  198. package/dist-es/touchable.css-mistica.js +1 -1
  199. package/dist-es/utils/aspect-ratio-support.css-mistica.js +2 -2
  200. package/dist-es/video.css-mistica.js +1 -1
  201. package/dist-es/video.js +53 -45
  202. package/dist-es/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +1 -1
  203. package/doc/llms/agents/figma-verifier.md +49 -0
  204. package/doc/{figma-mcp.md → llms/figma-mcp.md} +34 -20
  205. package/doc/{llms.md → llms/llms.md} +1 -1
  206. package/doc/patterns.md +2 -2
  207. package/package.json +1 -1
  208. package/src/button.css.ts +133 -401
  209. package/src/button.tsx +80 -60
  210. package/src/community/__screenshot_tests__/advanced-data-card-screenshot-test.tsx +5 -5
  211. package/src/community/__screenshot_tests__/blocks-screenshot-test.tsx +6 -6
  212. package/src/community/__stories__/advanced-data-card-carousel-story.tsx +1 -1
  213. package/src/community/__stories__/advanced-data-card-story.tsx +1 -1
  214. package/src/community/__stories__/ai-card-story.tsx +1 -1
  215. package/src/community/__stories__/blocks-story.tsx +1 -1
  216. package/src/community/skins/cyber-skin.tsx +8 -8
  217. package/src/focus-trap.tsx +10 -2
  218. package/src/menu.tsx +0 -1
  219. package/src/package-version.tsx +1 -1
  220. package/src/video.tsx +4 -0
  221. package/src/community/__stories__/example-component-story.tsx +0 -15
package/src/button.css.ts CHANGED
@@ -4,7 +4,7 @@ import {vars} from './skins/skin-contract.css';
4
4
  import * as mq from './media-queries.css';
5
5
  import {pxToRem} from './utils/css';
6
6
 
7
- import type {ComplexStyleRule} from '@vanilla-extract/css';
7
+ import type {ComplexStyleRule, StyleRule} from '@vanilla-extract/css';
8
8
 
9
9
  const minWidth = createVar();
10
10
  export const buttonVars = {minWidth};
@@ -51,10 +51,46 @@ export const buttonPaddingY = {
51
51
  small: `calc(6px - ${borderSize})`,
52
52
  };
53
53
 
54
+ const smallButtonHeight = `calc(${pxToRem(20)} + ${buttonPaddingY.small} + ${buttonPaddingY.small} + ${borderSize} + ${borderSize})`;
55
+
54
56
  const disabledStyle = {opacity: 0.5};
55
57
 
56
58
  export const isLoading = style({});
57
59
 
60
+ export const smallTouchableContainer = style({
61
+ display: 'inline-flex',
62
+ alignItems: 'center',
63
+ justifyContent: 'center',
64
+ height: smallButtonHeight,
65
+ overflow: 'visible',
66
+ verticalAlign: 'bottom',
67
+ });
68
+
69
+ export const smallTouchableArea = style([
70
+ sprinkles({
71
+ display: 'flex',
72
+ alignItems: 'center',
73
+ justifyContent: 'center',
74
+ border: 'none',
75
+ background: 'transparent',
76
+ padding: 0,
77
+ }),
78
+ {
79
+ borderRadius: vars.borderRadii.button,
80
+ overflow: 'visible',
81
+ width: '100%',
82
+ '@media': {
83
+ [mq.touchableOnly]: {
84
+ minHeight: 48,
85
+ },
86
+ },
87
+ },
88
+ ]);
89
+
90
+ export const smallTouchableVisual = style({
91
+ width: '100%',
92
+ });
93
+
58
94
  const button = style([
59
95
  sprinkles({
60
96
  display: 'inline-block',
@@ -71,6 +107,7 @@ const button = style([
71
107
 
72
108
  selectors: {
73
109
  [`&[disabled]:not(${isLoading})`]: disabledStyle,
110
+ [`${smallTouchableArea}[disabled]:not(${isLoading}) &`]: disabledStyle,
74
111
  },
75
112
  '@media': {
76
113
  [mq.touchableOnly]: {
@@ -150,32 +187,34 @@ globalStyle(`${textContent} svg`, {
150
187
  display: 'block',
151
188
  });
152
189
 
190
+ const interactiveStyles = ({active, hover = active}: {active: StyleRule; hover?: StyleRule}): StyleRule => ({
191
+ selectors: {
192
+ '&:not([disabled]):active': active,
193
+ [`${smallTouchableArea}:not([disabled]):active &`]: active,
194
+ },
195
+
196
+ '@media': {
197
+ [mq.supportsHover]: {
198
+ selectors: {
199
+ '&:hover:not([disabled])': hover,
200
+ [`${smallTouchableArea}:hover:not([disabled]) &`]: hover,
201
+ '&:not([disabled]):active': active,
202
+ [`${smallTouchableArea}:not([disabled]):active &`]: active,
203
+ },
204
+ },
205
+ },
206
+ });
207
+
153
208
  const lightPrimary: ComplexStyleRule = [
154
209
  button,
155
210
  sprinkles({
156
211
  color: vars.colors.textButtonPrimary,
157
212
  background: vars.colors.buttonPrimaryBackground,
158
213
  }),
159
- {
160
- selectors: {
161
- '&:not([disabled]):active': {
162
- backgroundColor: vars.colors.buttonPrimaryBackgroundPressed,
163
- },
164
- },
165
-
166
- '@media': {
167
- [mq.supportsHover]: {
168
- selectors: {
169
- '&:hover:not([disabled])': {
170
- backgroundColor: vars.colors.buttonPrimaryBackgroundHover,
171
- },
172
- '&:not([disabled]):active': {
173
- backgroundColor: vars.colors.buttonPrimaryBackgroundPressed,
174
- },
175
- },
176
- },
177
- },
178
- },
214
+ interactiveStyles({
215
+ active: {backgroundColor: vars.colors.buttonPrimaryBackgroundPressed},
216
+ hover: {backgroundColor: vars.colors.buttonPrimaryBackgroundHover},
217
+ }),
179
218
  ];
180
219
 
181
220
  const lightPrimaryOverBrand: ComplexStyleRule = [
@@ -184,29 +223,12 @@ const lightPrimaryOverBrand: ComplexStyleRule = [
184
223
  color: vars.colors.textButtonPrimaryBrand,
185
224
  background: vars.colors.buttonPrimaryBackgroundBrand,
186
225
  }),
187
- {
188
- selectors: {
189
- '&:not([disabled]):active': {
190
- backgroundColor: vars.colors.buttonPrimaryBackgroundBrandPressed,
191
- color: vars.colors.textButtonPrimaryBrandPressed,
192
- },
193
- },
194
-
195
- '@media': {
196
- [mq.supportsHover]: {
197
- selectors: {
198
- '&:hover:not([disabled])': {
199
- color: vars.colors.textButtonPrimaryBrandPressed,
200
- backgroundColor: vars.colors.buttonPrimaryBackgroundBrandPressed,
201
- },
202
- '&:not([disabled]):active': {
203
- backgroundColor: vars.colors.buttonPrimaryBackgroundBrandPressed,
204
- color: vars.colors.textButtonPrimaryBrandPressed,
205
- },
206
- },
207
- },
226
+ interactiveStyles({
227
+ active: {
228
+ backgroundColor: vars.colors.buttonPrimaryBackgroundBrandPressed,
229
+ color: vars.colors.textButtonPrimaryBrandPressed,
208
230
  },
209
- },
231
+ }),
210
232
  ];
211
233
 
212
234
  const lightPrimaryOverNegative: ComplexStyleRule = [
@@ -215,29 +237,12 @@ const lightPrimaryOverNegative: ComplexStyleRule = [
215
237
  color: vars.colors.textButtonPrimaryNegative,
216
238
  background: vars.colors.buttonPrimaryBackgroundNegative,
217
239
  }),
218
- {
219
- selectors: {
220
- '&:not([disabled]):active': {
221
- backgroundColor: vars.colors.buttonPrimaryBackgroundNegativePressed,
222
- color: vars.colors.textButtonPrimaryNegativePressed,
223
- },
240
+ interactiveStyles({
241
+ active: {
242
+ backgroundColor: vars.colors.buttonPrimaryBackgroundNegativePressed,
243
+ color: vars.colors.textButtonPrimaryNegativePressed,
224
244
  },
225
-
226
- '@media': {
227
- [mq.supportsHover]: {
228
- selectors: {
229
- '&:hover:not([disabled])': {
230
- color: vars.colors.textButtonPrimaryNegativePressed,
231
- backgroundColor: vars.colors.buttonPrimaryBackgroundNegativePressed,
232
- },
233
- '&:not([disabled]):active': {
234
- backgroundColor: vars.colors.buttonPrimaryBackgroundNegativePressed,
235
- color: vars.colors.textButtonPrimaryNegativePressed,
236
- },
237
- },
238
- },
239
- },
240
- },
245
+ }),
241
246
  ];
242
247
 
243
248
  const lightPrimaryMedia: ComplexStyleRule = [
@@ -246,29 +251,12 @@ const lightPrimaryMedia: ComplexStyleRule = [
246
251
  color: vars.colors.textButtonPrimaryMedia,
247
252
  background: vars.colors.buttonPrimaryBackgroundMedia,
248
253
  }),
249
- {
250
- selectors: {
251
- '&:not([disabled]):active': {
252
- backgroundColor: vars.colors.buttonPrimaryBackgroundMediaPressed,
253
- color: vars.colors.textButtonPrimaryMediaPressed,
254
- },
255
- },
256
-
257
- '@media': {
258
- [mq.supportsHover]: {
259
- selectors: {
260
- '&:hover:not([disabled])': {
261
- color: vars.colors.textButtonPrimaryMediaPressed,
262
- backgroundColor: vars.colors.buttonPrimaryBackgroundMediaPressed,
263
- },
264
- '&:not([disabled]):active': {
265
- backgroundColor: vars.colors.buttonPrimaryBackgroundMediaPressed,
266
- color: vars.colors.textButtonPrimaryMediaPressed,
267
- },
268
- },
269
- },
254
+ interactiveStyles({
255
+ active: {
256
+ backgroundColor: vars.colors.buttonPrimaryBackgroundMediaPressed,
257
+ color: vars.colors.textButtonPrimaryMediaPressed,
270
258
  },
271
- },
259
+ }),
272
260
  ];
273
261
 
274
262
  const lightSecondary: ComplexStyleRule = [
@@ -279,32 +267,19 @@ const lightSecondary: ComplexStyleRule = [
279
267
  }),
280
268
  {
281
269
  borderColor: vars.colors.buttonSecondaryBorder,
282
-
283
- selectors: {
284
- '&:not([disabled]):active': {
285
- color: vars.colors.textButtonSecondaryPressed,
286
- borderColor: vars.colors.buttonSecondaryBorderPressed,
287
- backgroundColor: vars.colors.buttonSecondaryBackgroundPressed,
288
- },
270
+ },
271
+ interactiveStyles({
272
+ active: {
273
+ color: vars.colors.textButtonSecondaryPressed,
274
+ borderColor: vars.colors.buttonSecondaryBorderPressed,
275
+ backgroundColor: vars.colors.buttonSecondaryBackgroundPressed,
289
276
  },
290
-
291
- '@media': {
292
- [mq.supportsHover]: {
293
- selectors: {
294
- '&:hover:not([disabled])': {
295
- color: vars.colors.textButtonSecondaryPressed,
296
- borderColor: vars.colors.buttonSecondaryBorderPressed,
297
- backgroundColor: vars.colors.buttonSecondaryBackgroundHover,
298
- },
299
- '&:not([disabled]):active': {
300
- color: vars.colors.textButtonSecondaryPressed,
301
- borderColor: vars.colors.buttonSecondaryBorderPressed,
302
- backgroundColor: vars.colors.buttonSecondaryBackgroundPressed,
303
- },
304
- },
305
- },
277
+ hover: {
278
+ color: vars.colors.textButtonSecondaryPressed,
279
+ borderColor: vars.colors.buttonSecondaryBorderPressed,
280
+ backgroundColor: vars.colors.buttonSecondaryBackgroundHover,
306
281
  },
307
- },
282
+ }),
308
283
  ];
309
284
 
310
285
  const lightSecondaryOverBrand: ComplexStyleRule = [
@@ -315,31 +290,19 @@ const lightSecondaryOverBrand: ComplexStyleRule = [
315
290
  }),
316
291
  {
317
292
  borderColor: vars.colors.buttonSecondaryBorderBrand,
318
- selectors: {
319
- '&:not([disabled]):active': {
320
- borderColor: vars.colors.buttonSecondaryBorderBrandPressed,
321
- color: vars.colors.textButtonSecondaryBrandPressed,
322
- backgroundColor: vars.colors.buttonSecondaryBackgroundBrandPressed,
323
- },
293
+ },
294
+ interactiveStyles({
295
+ active: {
296
+ borderColor: vars.colors.buttonSecondaryBorderBrandPressed,
297
+ color: vars.colors.textButtonSecondaryBrandPressed,
298
+ backgroundColor: vars.colors.buttonSecondaryBackgroundBrandPressed,
324
299
  },
325
-
326
- '@media': {
327
- [mq.supportsHover]: {
328
- selectors: {
329
- '&:hover:not([disabled])': {
330
- borderColor: vars.colors.buttonSecondaryBorderBrandPressed,
331
- color: vars.colors.textButtonSecondaryBrandPressed,
332
- backgroundColor: vars.colors.buttonSecondaryBackgroundBrandHover,
333
- },
334
- '&:not([disabled]):active': {
335
- borderColor: vars.colors.buttonSecondaryBorderBrandPressed,
336
- color: vars.colors.textButtonSecondaryBrandPressed,
337
- backgroundColor: vars.colors.buttonSecondaryBackgroundBrandPressed,
338
- },
339
- },
340
- },
300
+ hover: {
301
+ borderColor: vars.colors.buttonSecondaryBorderBrandPressed,
302
+ color: vars.colors.textButtonSecondaryBrandPressed,
303
+ backgroundColor: vars.colors.buttonSecondaryBackgroundBrandHover,
341
304
  },
342
- },
305
+ }),
343
306
  ];
344
307
 
345
308
  const lightSecondaryOverNegative: ComplexStyleRule = [
@@ -350,31 +313,19 @@ const lightSecondaryOverNegative: ComplexStyleRule = [
350
313
  }),
351
314
  {
352
315
  borderColor: vars.colors.buttonSecondaryBorderNegative,
353
- selectors: {
354
- '&:not([disabled]):active': {
355
- borderColor: vars.colors.buttonSecondaryBorderNegativePressed,
356
- color: vars.colors.textButtonSecondaryNegativePressed,
357
- backgroundColor: vars.colors.buttonSecondaryBackgroundNegativePressed,
358
- },
316
+ },
317
+ interactiveStyles({
318
+ active: {
319
+ borderColor: vars.colors.buttonSecondaryBorderNegativePressed,
320
+ color: vars.colors.textButtonSecondaryNegativePressed,
321
+ backgroundColor: vars.colors.buttonSecondaryBackgroundNegativePressed,
359
322
  },
360
-
361
- '@media': {
362
- [mq.supportsHover]: {
363
- selectors: {
364
- '&:hover:not([disabled])': {
365
- borderColor: vars.colors.buttonSecondaryBorderNegativePressed,
366
- color: vars.colors.textButtonSecondaryNegativePressed,
367
- backgroundColor: vars.colors.buttonSecondaryBackgroundNegativeHover,
368
- },
369
- '&:not([disabled]):active': {
370
- borderColor: vars.colors.buttonSecondaryBorderNegativePressed,
371
- color: vars.colors.textButtonSecondaryNegativePressed,
372
- backgroundColor: vars.colors.buttonSecondaryBackgroundNegativePressed,
373
- },
374
- },
375
- },
323
+ hover: {
324
+ borderColor: vars.colors.buttonSecondaryBorderNegativePressed,
325
+ color: vars.colors.textButtonSecondaryNegativePressed,
326
+ backgroundColor: vars.colors.buttonSecondaryBackgroundNegativeHover,
376
327
  },
377
- },
328
+ }),
378
329
  ];
379
330
 
380
331
  const lightSecondaryMedia: ComplexStyleRule = [
@@ -385,32 +336,19 @@ const lightSecondaryMedia: ComplexStyleRule = [
385
336
  }),
386
337
  {
387
338
  borderColor: vars.colors.buttonSecondaryBorderMedia,
388
-
389
- selectors: {
390
- '&:not([disabled]):active': {
391
- borderColor: vars.colors.buttonSecondaryBorderMediaPressed,
392
- color: vars.colors.textButtonSecondaryMediaPressed,
393
- backgroundColor: vars.colors.buttonSecondaryBackgroundMediaPressed,
394
- },
339
+ },
340
+ interactiveStyles({
341
+ active: {
342
+ borderColor: vars.colors.buttonSecondaryBorderMediaPressed,
343
+ color: vars.colors.textButtonSecondaryMediaPressed,
344
+ backgroundColor: vars.colors.buttonSecondaryBackgroundMediaPressed,
395
345
  },
396
-
397
- '@media': {
398
- [mq.supportsHover]: {
399
- selectors: {
400
- '&:hover:not([disabled])': {
401
- borderColor: vars.colors.buttonSecondaryBorderMediaPressed,
402
- color: vars.colors.textButtonSecondaryMediaPressed,
403
- backgroundColor: vars.colors.buttonSecondaryBackgroundMediaHover,
404
- },
405
- '&:not([disabled]):active': {
406
- borderColor: vars.colors.buttonSecondaryBorderMediaPressed,
407
- color: vars.colors.textButtonSecondaryMediaPressed,
408
- backgroundColor: vars.colors.buttonSecondaryBackgroundMediaPressed,
409
- },
410
- },
411
- },
346
+ hover: {
347
+ borderColor: vars.colors.buttonSecondaryBorderMediaPressed,
348
+ color: vars.colors.textButtonSecondaryMediaPressed,
349
+ backgroundColor: vars.colors.buttonSecondaryBackgroundMediaHover,
412
350
  },
413
- },
351
+ }),
414
352
  ];
415
353
 
416
354
  const danger: ComplexStyleRule = [
@@ -419,26 +357,10 @@ const danger: ComplexStyleRule = [
419
357
  color: vars.colors.textButtonPrimary,
420
358
  background: vars.colors.buttonDangerBackground,
421
359
  }),
422
- {
423
- selectors: {
424
- '&:not([disabled]):active': {
425
- backgroundColor: vars.colors.buttonDangerBackgroundPressed,
426
- },
427
- },
428
-
429
- '@media': {
430
- [mq.supportsHover]: {
431
- selectors: {
432
- '&:hover:not([disabled])': {
433
- backgroundColor: vars.colors.buttonDangerBackgroundHover,
434
- },
435
- '&:not([disabled]):active': {
436
- backgroundColor: vars.colors.buttonDangerBackgroundPressed,
437
- },
438
- },
439
- },
440
- },
441
- },
360
+ interactiveStyles({
361
+ active: {backgroundColor: vars.colors.buttonDangerBackgroundPressed},
362
+ hover: {backgroundColor: vars.colors.buttonDangerBackgroundHover},
363
+ }),
442
364
  ];
443
365
 
444
366
  export const defaultLink: ComplexStyleRule = [
@@ -447,26 +369,7 @@ export const defaultLink: ComplexStyleRule = [
447
369
  color: vars.colors.textLink,
448
370
  background: 'transparent',
449
371
  }),
450
- {
451
- selectors: {
452
- '&:not([disabled]):active': {
453
- backgroundColor: vars.colors.buttonLinkBackgroundPressed,
454
- },
455
- },
456
-
457
- '@media': {
458
- [mq.supportsHover]: {
459
- selectors: {
460
- '&:hover:not([disabled])': {
461
- backgroundColor: vars.colors.buttonLinkBackgroundPressed,
462
- },
463
- '&:not([disabled]):active': {
464
- backgroundColor: vars.colors.buttonLinkBackgroundPressed,
465
- },
466
- },
467
- },
468
- },
469
- },
372
+ interactiveStyles({active: {backgroundColor: vars.colors.buttonLinkBackgroundPressed}}),
470
373
  ];
471
374
 
472
375
  export const defaultLinkOverBrand: ComplexStyleRule = [
@@ -475,26 +378,7 @@ export const defaultLinkOverBrand: ComplexStyleRule = [
475
378
  color: vars.colors.textLinkBrand,
476
379
  background: 'transparent',
477
380
  }),
478
- {
479
- selectors: {
480
- '&:not([disabled]):active': {
481
- backgroundColor: vars.colors.buttonLinkBackgroundBrandPressed,
482
- },
483
- },
484
-
485
- '@media': {
486
- [mq.supportsHover]: {
487
- selectors: {
488
- '&:hover:not([disabled])': {
489
- backgroundColor: vars.colors.buttonLinkBackgroundBrandPressed,
490
- },
491
- '&:not([disabled]):active': {
492
- backgroundColor: vars.colors.buttonLinkBackgroundBrandPressed,
493
- },
494
- },
495
- },
496
- },
497
- },
381
+ interactiveStyles({active: {backgroundColor: vars.colors.buttonLinkBackgroundBrandPressed}}),
498
382
  ];
499
383
 
500
384
  export const defaultLinkOverNegative: ComplexStyleRule = [
@@ -503,26 +387,7 @@ export const defaultLinkOverNegative: ComplexStyleRule = [
503
387
  color: vars.colors.textLinkNegative,
504
388
  background: 'transparent',
505
389
  }),
506
- {
507
- selectors: {
508
- '&:not([disabled]):active': {
509
- backgroundColor: vars.colors.buttonLinkBackgroundNegativePressed,
510
- },
511
- },
512
-
513
- '@media': {
514
- [mq.supportsHover]: {
515
- selectors: {
516
- '&:hover:not([disabled])': {
517
- backgroundColor: vars.colors.buttonLinkBackgroundNegativePressed,
518
- },
519
- '&:not([disabled]):active': {
520
- backgroundColor: vars.colors.buttonLinkBackgroundNegativePressed,
521
- },
522
- },
523
- },
524
- },
525
- },
390
+ interactiveStyles({active: {backgroundColor: vars.colors.buttonLinkBackgroundNegativePressed}}),
526
391
  ];
527
392
 
528
393
  export const defaultLinkMedia: ComplexStyleRule = [
@@ -531,26 +396,7 @@ export const defaultLinkMedia: ComplexStyleRule = [
531
396
  color: vars.colors.textLinkMedia,
532
397
  background: 'transparent',
533
398
  }),
534
- {
535
- selectors: {
536
- '&:not([disabled]):active': {
537
- backgroundColor: vars.colors.buttonLinkBackgroundMediaPressed,
538
- },
539
- },
540
-
541
- '@media': {
542
- [mq.supportsHover]: {
543
- selectors: {
544
- '&:hover:not([disabled])': {
545
- backgroundColor: vars.colors.buttonLinkBackgroundMediaPressed,
546
- },
547
- '&:not([disabled]):active': {
548
- backgroundColor: vars.colors.buttonLinkBackgroundMediaPressed,
549
- },
550
- },
551
- },
552
- },
553
- },
399
+ interactiveStyles({active: {backgroundColor: vars.colors.buttonLinkBackgroundMediaPressed}}),
554
400
  ];
555
401
 
556
402
  const dangerLink: ComplexStyleRule = [
@@ -559,26 +405,7 @@ const dangerLink: ComplexStyleRule = [
559
405
  color: vars.colors.textLinkDanger,
560
406
  background: 'transparent',
561
407
  }),
562
- {
563
- selectors: {
564
- '&:not([disabled]):active': {
565
- backgroundColor: vars.colors.buttonLinkDangerBackgroundPressed,
566
- },
567
- },
568
-
569
- '@media': {
570
- [mq.supportsHover]: {
571
- selectors: {
572
- '&:hover:not([disabled])': {
573
- backgroundColor: vars.colors.buttonLinkDangerBackgroundPressed,
574
- },
575
- '&:not([disabled]):active': {
576
- backgroundColor: vars.colors.buttonLinkDangerBackgroundPressed,
577
- },
578
- },
579
- },
580
- },
581
- },
408
+ interactiveStyles({active: {backgroundColor: vars.colors.buttonLinkDangerBackgroundPressed}}),
582
409
  ];
583
410
 
584
411
  const dangerLinkOverBrand: ComplexStyleRule = [
@@ -587,26 +414,7 @@ const dangerLinkOverBrand: ComplexStyleRule = [
587
414
  color: vars.colors.textLinkDanger,
588
415
  background: vars.colors.buttonLinkDangerBackgroundBrand,
589
416
  }),
590
- {
591
- selectors: {
592
- '&:not([disabled]):active': {
593
- backgroundColor: vars.colors.buttonLinkDangerBackgroundBrandPressed,
594
- },
595
- },
596
-
597
- '@media': {
598
- [mq.supportsHover]: {
599
- selectors: {
600
- '&:hover:not([disabled])': {
601
- backgroundColor: vars.colors.buttonLinkDangerBackgroundBrandPressed,
602
- },
603
- '&:not([disabled]):active': {
604
- backgroundColor: vars.colors.buttonLinkDangerBackgroundBrandPressed,
605
- },
606
- },
607
- },
608
- },
609
- },
417
+ interactiveStyles({active: {backgroundColor: vars.colors.buttonLinkDangerBackgroundBrandPressed}}),
610
418
  ];
611
419
 
612
420
  const dangerLinkOverNegative: ComplexStyleRule = [
@@ -615,26 +423,7 @@ const dangerLinkOverNegative: ComplexStyleRule = [
615
423
  color: vars.colors.textLinkDanger,
616
424
  background: vars.colors.buttonLinkDangerBackgroundNegative,
617
425
  }),
618
- {
619
- selectors: {
620
- '&:not([disabled]):active': {
621
- backgroundColor: vars.colors.buttonLinkDangerBackgroundNegativePressed,
622
- },
623
- },
624
-
625
- '@media': {
626
- [mq.supportsHover]: {
627
- selectors: {
628
- '&:hover:not([disabled])': {
629
- backgroundColor: vars.colors.buttonLinkDangerBackgroundNegativePressed,
630
- },
631
- '&:not([disabled]):active': {
632
- backgroundColor: vars.colors.buttonLinkDangerBackgroundNegativePressed,
633
- },
634
- },
635
- },
636
- },
637
- },
426
+ interactiveStyles({active: {backgroundColor: vars.colors.buttonLinkDangerBackgroundNegativePressed}}),
638
427
  ];
639
428
 
640
429
  const dangerLinkMedia: ComplexStyleRule = [
@@ -643,26 +432,7 @@ const dangerLinkMedia: ComplexStyleRule = [
643
432
  color: vars.colors.textLinkDangerMedia,
644
433
  background: vars.colors.buttonLinkDangerBackgroundMedia,
645
434
  }),
646
- {
647
- selectors: {
648
- '&:not([disabled]):active': {
649
- backgroundColor: vars.colors.buttonLinkDangerBackgroundMediaPressed,
650
- },
651
- },
652
-
653
- '@media': {
654
- [mq.supportsHover]: {
655
- selectors: {
656
- '&:hover:not([disabled])': {
657
- backgroundColor: vars.colors.buttonLinkDangerBackgroundMediaPressed,
658
- },
659
- '&:not([disabled]):active': {
660
- backgroundColor: vars.colors.buttonLinkDangerBackgroundMediaPressed,
661
- },
662
- },
663
- },
664
- },
665
- },
435
+ interactiveStyles({active: {backgroundColor: vars.colors.buttonLinkDangerBackgroundMediaPressed}}),
666
436
  ];
667
437
 
668
438
  const dangerLinkOverBrandDark: ComplexStyleRule = [
@@ -671,26 +441,7 @@ const dangerLinkOverBrandDark: ComplexStyleRule = [
671
441
  color: vars.colors.textLinkDanger,
672
442
  background: 'transparent',
673
443
  }),
674
- {
675
- selectors: {
676
- '&:not([disabled]):active': {
677
- backgroundColor: vars.colors.buttonLinkDangerBackgroundBrandPressed,
678
- },
679
- },
680
-
681
- '@media': {
682
- [mq.supportsHover]: {
683
- selectors: {
684
- '&:hover:not([disabled])': {
685
- backgroundColor: vars.colors.buttonLinkDangerBackgroundBrandPressed,
686
- },
687
- '&:not([disabled]):active': {
688
- backgroundColor: vars.colors.buttonLinkDangerBackgroundBrandPressed,
689
- },
690
- },
691
- },
692
- },
693
- },
444
+ interactiveStyles({active: {backgroundColor: vars.colors.buttonLinkDangerBackgroundBrandPressed}}),
694
445
  ];
695
446
 
696
447
  const dangerLinkOverNegativeDark: ComplexStyleRule = [
@@ -699,26 +450,7 @@ const dangerLinkOverNegativeDark: ComplexStyleRule = [
699
450
  color: vars.colors.textLinkDanger,
700
451
  background: 'transparent',
701
452
  }),
702
- {
703
- selectors: {
704
- '&:not([disabled]):active': {
705
- backgroundColor: vars.colors.buttonLinkDangerBackgroundNegativePressed,
706
- },
707
- },
708
-
709
- '@media': {
710
- [mq.supportsHover]: {
711
- selectors: {
712
- '&:hover:not([disabled])': {
713
- backgroundColor: vars.colors.buttonLinkDangerBackgroundNegativePressed,
714
- },
715
- '&:not([disabled]):active': {
716
- backgroundColor: vars.colors.buttonLinkDangerBackgroundNegativePressed,
717
- },
718
- },
719
- },
720
- },
721
- },
453
+ interactiveStyles({active: {backgroundColor: vars.colors.buttonLinkDangerBackgroundNegativePressed}}),
722
454
  ];
723
455
 
724
456
  export const buttonVariants = styleVariants({