@telefonica/mistica 16.59.0-beta.1 → 16.59.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 (539) hide show
  1. package/css/mistica.css +1 -1
  2. package/dist/accordion.css-mistica.js +16 -16
  3. package/dist/align.css-mistica.js +2 -2
  4. package/dist/autocomplete.css-mistica.js +6 -6
  5. package/dist/avatar.css-mistica.js +3 -3
  6. package/dist/badge.css-mistica.js +7 -7
  7. package/dist/box.css-mistica.js +15 -15
  8. package/dist/boxed.css-mistica.js +31 -31
  9. package/dist/button-group.css-mistica.js +10 -10
  10. package/dist/button-layout.css-mistica.js +21 -21
  11. package/dist/button.css-mistica.js +51 -51
  12. package/dist/callout.css-mistica.js +16 -16
  13. package/dist/card-internal.css-mistica.js +38 -38
  14. package/dist/carousel.css-mistica.js +18 -18
  15. package/dist/checkbox.css-mistica.js +21 -21
  16. package/dist/chip.css-mistica.js +30 -30
  17. package/dist/circle.css-mistica.js +2 -2
  18. package/dist/community/advanced-data-card.css-mistica.js +26 -26
  19. package/dist/community/blocks.css-mistica.js +3 -3
  20. package/dist/community/example-component.css-mistica.js +2 -2
  21. package/dist/counter.css-mistica.js +12 -12
  22. package/dist/cover-hero.css-mistica.js +16 -16
  23. package/dist/credit-card-number-field.css-mistica.js +6 -6
  24. package/dist/date-field.css-mistica.js +1 -1
  25. package/dist/date-time-picker.css-mistica.js +2 -2
  26. package/dist/dialog.css-mistica.js +15 -15
  27. package/dist/divider.css-mistica.js +5 -5
  28. package/dist/double-field.css-mistica.js +4 -4
  29. package/dist/drawer.css-mistica.js +15 -15
  30. package/dist/empty-state-card.css-mistica.js +4 -4
  31. package/dist/empty-state.css-mistica.js +14 -14
  32. package/dist/fade-in.css-mistica.js +1 -1
  33. package/dist/feedback.css-mistica.js +14 -14
  34. package/dist/file-upload.css-mistica.js +14 -14
  35. package/dist/fixed-footer-layout.css-mistica.js +12 -12
  36. package/dist/form.css-mistica.js +2 -2
  37. package/dist/grid-layout.css-mistica.js +9 -9
  38. package/dist/grid.css-mistica.js +147 -147
  39. package/dist/header.css-mistica.js +5 -5
  40. package/dist/hero.css-mistica.js +11 -11
  41. package/dist/horizontal-scroll.css-mistica.js +3 -3
  42. package/dist/icon-button.css-mistica.js +66 -66
  43. package/dist/icons/icon-chevron.css-mistica.js +6 -6
  44. package/dist/icons/icon-error.css-mistica.js +3 -3
  45. package/dist/image.css-mistica.js +11 -11
  46. package/dist/inline.css-mistica.js +16 -16
  47. package/dist/list.css-mistica.js +15 -15
  48. package/dist/loading-bar.css-mistica.js +5 -5
  49. package/dist/loading-screen.css-mistica.js +15 -15
  50. package/dist/logo.css-mistica.js +9 -9
  51. package/dist/menu.css-mistica.js +24 -24
  52. package/dist/mosaic.css-mistica.js +3 -3
  53. package/dist/navigation-bar.css-mistica.js +45 -45
  54. package/dist/navigation-breadcrumbs.css-mistica.js +5 -5
  55. package/dist/package-version.js +2 -2
  56. package/dist/pin-field.css-mistica.js +10 -10
  57. package/dist/popover.css-mistica.js +2 -2
  58. package/dist/progress-bar.css-mistica.js +12 -12
  59. package/dist/radio-button.css-mistica.js +33 -33
  60. package/dist/rating.css-mistica.js +12 -12
  61. package/dist/responsive-layout.css-mistica.js +20 -20
  62. package/dist/screen-reader-only.css-mistica.js +2 -2
  63. package/dist/select.css-mistica.js +29 -29
  64. package/dist/sheet-action-row.css-mistica.js +2 -2
  65. package/dist/sheet-common.css-mistica.js +16 -16
  66. package/dist/sheet-info.css-mistica.js +4 -4
  67. package/dist/skeletons.css-mistica.js +12 -12
  68. package/dist/skins/skin-contract.css-mistica.js +686 -686
  69. package/dist/skip-link.css-mistica.js +3 -3
  70. package/dist/slider.css-mistica.js +28 -28
  71. package/dist/snackbar.css-mistica.js +16 -16
  72. package/dist/spinner.css-mistica.js +5 -5
  73. package/dist/square.css-mistica.js +2 -2
  74. package/dist/stack.css-mistica.js +9 -9
  75. package/dist/stacking-group.css-mistica.js +2 -2
  76. package/dist/stepper.css-mistica.js +16 -16
  77. package/dist/switch-component.css-mistica.js +53 -53
  78. package/dist/table.css-mistica.js +24 -24
  79. package/dist/tabs.css-mistica.js +30 -30
  80. package/dist/tag.css-mistica.js +5 -5
  81. package/dist/text-field-base.css-mistica.js +30 -30
  82. package/dist/text-field-components.css-mistica.js +23 -20
  83. package/dist/text-field-components.css.d.ts +1 -0
  84. package/dist/text-field-components.js +31 -25
  85. package/dist/text-link.css-mistica.js +10 -10
  86. package/dist/text.css-mistica.js +13 -13
  87. package/dist/theme-context.css-mistica.js +2 -2
  88. package/dist/timeline.css-mistica.js +18 -18
  89. package/dist/timer.css-mistica.js +13 -13
  90. package/dist/tooltip.css-mistica.js +12 -12
  91. package/dist/touchable.css-mistica.js +5 -5
  92. package/dist/utils/aspect-ratio-support.css-mistica.js +7 -7
  93. package/dist/video.css-mistica.js +2 -2
  94. package/dist/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +3 -3
  95. package/dist-es/accordion.css-mistica.js +7 -7
  96. package/dist-es/align.css-mistica.js +2 -2
  97. package/dist-es/autocomplete.css-mistica.js +2 -2
  98. package/dist-es/avatar.css-mistica.js +2 -2
  99. package/dist-es/badge.css-mistica.js +2 -2
  100. package/dist-es/box.css-mistica.js +15 -15
  101. package/dist-es/boxed.css-mistica.js +25 -25
  102. package/dist-es/button-group.css-mistica.js +2 -2
  103. package/dist-es/button-layout.css-mistica.js +16 -16
  104. package/dist-es/button.css-mistica.js +38 -38
  105. package/dist-es/callout.css-mistica.js +12 -12
  106. package/dist-es/card-internal.css-mistica.js +20 -20
  107. package/dist-es/carousel.css-mistica.js +10 -10
  108. package/dist-es/checkbox.css-mistica.js +14 -14
  109. package/dist-es/chip.css-mistica.js +17 -17
  110. package/dist-es/circle.css-mistica.js +2 -2
  111. package/dist-es/community/advanced-data-card.css-mistica.js +7 -7
  112. package/dist-es/community/blocks.css-mistica.js +2 -2
  113. package/dist-es/community/example-component.css-mistica.js +2 -2
  114. package/dist-es/counter.css-mistica.js +2 -2
  115. package/dist-es/cover-hero.css-mistica.js +4 -4
  116. package/dist-es/credit-card-number-field.css-mistica.js +4 -4
  117. package/dist-es/date-field.css-mistica.js +1 -1
  118. package/dist-es/date-time-picker.css-mistica.js +2 -2
  119. package/dist-es/dialog.css-mistica.js +5 -5
  120. package/dist-es/divider.css-mistica.js +5 -5
  121. package/dist-es/double-field.css-mistica.js +4 -4
  122. package/dist-es/drawer.css-mistica.js +2 -2
  123. package/dist-es/empty-state-card.css-mistica.js +2 -2
  124. package/dist-es/empty-state.css-mistica.js +7 -7
  125. package/dist-es/fade-in.css-mistica.js +1 -1
  126. package/dist-es/feedback.css-mistica.js +2 -2
  127. package/dist-es/file-upload.css-mistica.js +8 -8
  128. package/dist-es/fixed-footer-layout.css-mistica.js +4 -4
  129. package/dist-es/form.css-mistica.js +2 -2
  130. package/dist-es/grid-layout.css-mistica.js +4 -4
  131. package/dist-es/grid.css-mistica.js +127 -127
  132. package/dist-es/header.css-mistica.js +2 -2
  133. package/dist-es/hero.css-mistica.js +4 -4
  134. package/dist-es/horizontal-scroll.css-mistica.js +2 -2
  135. package/dist-es/icon-button.css-mistica.js +56 -56
  136. package/dist-es/icons/icon-chevron.css-mistica.js +4 -4
  137. package/dist-es/icons/icon-error.css-mistica.js +2 -2
  138. package/dist-es/image.css-mistica.js +4 -4
  139. package/dist-es/inline.css-mistica.js +10 -10
  140. package/dist-es/list.css-mistica.js +2 -2
  141. package/dist-es/loading-bar.css-mistica.js +2 -2
  142. package/dist-es/loading-screen.css-mistica.js +5 -5
  143. package/dist-es/logo.css-mistica.js +7 -7
  144. package/dist-es/menu.css-mistica.js +15 -15
  145. package/dist-es/mosaic.css-mistica.js +2 -2
  146. package/dist-es/navigation-bar.css-mistica.js +20 -20
  147. package/dist-es/navigation-breadcrumbs.css-mistica.js +2 -2
  148. package/dist-es/package-version.js +2 -2
  149. package/dist-es/pin-field.css-mistica.js +2 -2
  150. package/dist-es/popover.css-mistica.js +2 -2
  151. package/dist-es/progress-bar.css-mistica.js +8 -8
  152. package/dist-es/radio-button.css-mistica.js +25 -25
  153. package/dist-es/rating.css-mistica.js +4 -4
  154. package/dist-es/responsive-layout.css-mistica.js +7 -7
  155. package/dist-es/screen-reader-only.css-mistica.js +2 -2
  156. package/dist-es/select.css-mistica.js +20 -20
  157. package/dist-es/sheet-action-row.css-mistica.js +2 -2
  158. package/dist-es/sheet-common.css-mistica.js +2 -2
  159. package/dist-es/sheet-info.css-mistica.js +2 -2
  160. package/dist-es/skeletons.css-mistica.js +8 -8
  161. package/dist-es/skins/skin-contract.css-mistica.js +686 -686
  162. package/dist-es/skip-link.css-mistica.js +2 -2
  163. package/dist-es/slider.css-mistica.js +20 -20
  164. package/dist-es/snackbar.css-mistica.js +5 -5
  165. package/dist-es/spinner.css-mistica.js +2 -2
  166. package/dist-es/square.css-mistica.js +2 -2
  167. package/dist-es/stack.css-mistica.js +7 -7
  168. package/dist-es/stacking-group.css-mistica.js +2 -2
  169. package/dist-es/stepper.css-mistica.js +4 -4
  170. package/dist-es/style.css +1 -1
  171. package/dist-es/switch-component.css-mistica.js +41 -41
  172. package/dist-es/table.css-mistica.js +11 -11
  173. package/dist-es/tabs.css-mistica.js +21 -21
  174. package/dist-es/tag.css-mistica.js +2 -2
  175. package/dist-es/text-field-base.css-mistica.js +17 -17
  176. package/dist-es/text-field-components.css-mistica.js +4 -4
  177. package/dist-es/text-field-components.js +52 -46
  178. package/dist-es/text-link.css-mistica.js +9 -9
  179. package/dist-es/text.css-mistica.js +8 -8
  180. package/dist-es/theme-context.css-mistica.js +2 -2
  181. package/dist-es/timeline.css-mistica.js +11 -11
  182. package/dist-es/timer.css-mistica.js +7 -7
  183. package/dist-es/tooltip.css-mistica.js +3 -3
  184. package/dist-es/touchable.css-mistica.js +2 -2
  185. package/dist-es/utils/aspect-ratio-support.css-mistica.js +4 -4
  186. package/dist-es/video.css-mistica.js +2 -2
  187. package/dist-es/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +2 -2
  188. package/doc/llms.md +0 -24
  189. package/package.json +1 -13
  190. package/src/accordion.css.ts +0 -121
  191. package/src/accordion.tsx +0 -366
  192. package/src/align.css.ts +0 -7
  193. package/src/align.tsx +0 -32
  194. package/src/autocomplete.css.ts +0 -62
  195. package/src/autocomplete.tsx +0 -239
  196. package/src/avatar.css.ts +0 -14
  197. package/src/avatar.tsx +0 -120
  198. package/src/badge.css.ts +0 -51
  199. package/src/badge.tsx +0 -79
  200. package/src/box.css.ts +0 -51
  201. package/src/box.tsx +0 -114
  202. package/src/boxed.css.ts +0 -132
  203. package/src/boxed.tsx +0 -153
  204. package/src/button-fixed-footer-layout.tsx +0 -62
  205. package/src/button-group.css.ts +0 -75
  206. package/src/button-group.tsx +0 -91
  207. package/src/button-layout.css.ts +0 -162
  208. package/src/button-layout.tsx +0 -91
  209. package/src/button.css.ts +0 -758
  210. package/src/button.tsx +0 -632
  211. package/src/callout.css.ts +0 -50
  212. package/src/callout.tsx +0 -147
  213. package/src/card-cover.tsx +0 -242
  214. package/src/card-data.tsx +0 -152
  215. package/src/card-internal.css.ts +0 -271
  216. package/src/card-internal.tsx +0 -1724
  217. package/src/card-media.tsx +0 -157
  218. package/src/card-naked.tsx +0 -63
  219. package/src/carousel.css.ts +0 -522
  220. package/src/carousel.tsx +0 -1300
  221. package/src/checkbox.css.ts +0 -94
  222. package/src/checkbox.tsx +0 -192
  223. package/src/chip.css.ts +0 -204
  224. package/src/chip.tsx +0 -191
  225. package/src/circle.css.ts +0 -14
  226. package/src/circle.tsx +0 -52
  227. package/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-button-and-link-footer-image-false-1-snap.png +0 -0
  228. package/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-button-and-link-footer-image-true-1-snap.png +0 -0
  229. package/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-button-footer-image-false-1-snap.png +0 -0
  230. package/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-button-footer-image-true-1-snap.png +0 -0
  231. package/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-link-footer-image-false-1-snap.png +0 -0
  232. package/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-link-footer-image-true-1-snap.png +0 -0
  233. package/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-none-footer-image-false-1-snap.png +0 -0
  234. package/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-none-footer-image-true-1-snap.png +0 -0
  235. package/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-extras-0-1-snap.png +0 -0
  236. package/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-extras-1-1-snap.png +0 -0
  237. package/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-extras-3-1-snap.png +0 -0
  238. package/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-extras-3-no-divider-1-snap.png +0 -0
  239. package/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-inside-carousel-1-snap.png +0 -0
  240. package/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-without-stacking-group-with-top-actions-and-too-long-title-1-snap.png +0 -0
  241. package/src/community/__screenshot_tests__/__image_snapshots__/blocks-screenshot-test-tsx-blocks-highlighted-value-block-1-snap.png +0 -0
  242. package/src/community/__screenshot_tests__/__image_snapshots__/blocks-screenshot-test-tsx-blocks-information-block-1-snap.png +0 -0
  243. package/src/community/__screenshot_tests__/__image_snapshots__/blocks-screenshot-test-tsx-blocks-progress-block-1-snap.png +0 -0
  244. package/src/community/__screenshot_tests__/__image_snapshots__/blocks-screenshot-test-tsx-blocks-progress-block-2-snap.png +0 -0
  245. package/src/community/__screenshot_tests__/__image_snapshots__/blocks-screenshot-test-tsx-blocks-row-block-1-snap.png +0 -0
  246. package/src/community/__screenshot_tests__/__image_snapshots__/blocks-screenshot-test-tsx-blocks-simple-block-1-snap.png +0 -0
  247. package/src/community/__screenshot_tests__/__image_snapshots__/blocks-screenshot-test-tsx-blocks-value-block-1-snap.png +0 -0
  248. package/src/community/__screenshot_tests__/advanced-data-card-screenshot-test.tsx +0 -84
  249. package/src/community/__screenshot_tests__/blocks-screenshot-test.tsx +0 -72
  250. package/src/community/__stories__/advanced-data-card-carousel-story.tsx +0 -66
  251. package/src/community/__stories__/advanced-data-card-story.tsx +0 -158
  252. package/src/community/__stories__/blocks-story.tsx +0 -272
  253. package/src/community/__stories__/example-component-story.tsx +0 -15
  254. package/src/community/__stories__/index-story.tsx +0 -154
  255. package/src/community/__type_tests__/advanced-data-card-type-test.tsx +0 -40
  256. package/src/community/advanced-data-card.css.ts +0 -271
  257. package/src/community/advanced-data-card.tsx +0 -431
  258. package/src/community/blocks.css.ts +0 -12
  259. package/src/community/blocks.tsx +0 -290
  260. package/src/community/example-component.css.ts +0 -7
  261. package/src/community/example-component.tsx +0 -17
  262. package/src/community/index.tsx +0 -10
  263. package/src/counter.css.ts +0 -150
  264. package/src/counter.tsx +0 -215
  265. package/src/cover-hero-media.tsx +0 -39
  266. package/src/cover-hero.css.ts +0 -133
  267. package/src/cover-hero.tsx +0 -262
  268. package/src/credit-card-expiration-field.tsx +0 -187
  269. package/src/credit-card-fields.tsx +0 -56
  270. package/src/credit-card-number-field.css.ts +0 -47
  271. package/src/credit-card-number-field.tsx +0 -245
  272. package/src/cvv-field.tsx +0 -169
  273. package/src/date-field.css.ts +0 -14
  274. package/src/date-field.tsx +0 -130
  275. package/src/date-time-field.tsx +0 -141
  276. package/src/date-time-picker.css.ts +0 -126
  277. package/src/date-time-picker.tsx +0 -188
  278. package/src/decimal-field.tsx +0 -160
  279. package/src/desktop-container-type-context.tsx +0 -15
  280. package/src/dialog-context.tsx +0 -81
  281. package/src/dialog.css.ts +0 -155
  282. package/src/dialog.tsx +0 -423
  283. package/src/divider.css.ts +0 -10
  284. package/src/divider.tsx +0 -11
  285. package/src/double-field.css.ts +0 -33
  286. package/src/double-field.tsx +0 -71
  287. package/src/drawer.css.ts +0 -123
  288. package/src/drawer.tsx +0 -304
  289. package/src/email-field.tsx +0 -76
  290. package/src/empty-state-card.css.ts +0 -40
  291. package/src/empty-state-card.tsx +0 -92
  292. package/src/empty-state.css.ts +0 -119
  293. package/src/empty-state.tsx +0 -141
  294. package/src/fade-in.css.ts +0 -12
  295. package/src/fade-in.tsx +0 -40
  296. package/src/feedback.css.ts +0 -119
  297. package/src/feedback.tsx +0 -432
  298. package/src/file-upload.css.ts +0 -156
  299. package/src/file-upload.tsx +0 -612
  300. package/src/fixed-footer-layout.css.ts +0 -96
  301. package/src/fixed-footer-layout.tsx +0 -215
  302. package/src/fixed-to-top.tsx +0 -21
  303. package/src/focus-trap.tsx +0 -17
  304. package/src/form-context.tsx +0 -198
  305. package/src/form.css.ts +0 -5
  306. package/src/form.tsx +0 -287
  307. package/src/grid-layout.css.ts +0 -68
  308. package/src/grid-layout.tsx +0 -201
  309. package/src/grid.css.ts +0 -203
  310. package/src/grid.tsx +0 -241
  311. package/src/header.css.ts +0 -30
  312. package/src/header.tsx +0 -319
  313. package/src/hero.css.ts +0 -71
  314. package/src/hero.tsx +0 -318
  315. package/src/hooks.tsx +0 -313
  316. package/src/horizontal-scroll.css.ts +0 -43
  317. package/src/horizontal-scroll.tsx +0 -18
  318. package/src/iban-field.tsx +0 -218
  319. package/src/icon-button.css.ts +0 -561
  320. package/src/icon-button.tsx +0 -221
  321. package/src/icons/__stories__/mistica-icons-story.tsx +0 -192
  322. package/src/icons/icon-amex.tsx +0 -40
  323. package/src/icons/icon-chevron.css.ts +0 -23
  324. package/src/icons/icon-chevron.tsx +0 -150
  325. package/src/icons/icon-cvv-amex.tsx +0 -31
  326. package/src/icons/icon-cvv-visa-mc.tsx +0 -31
  327. package/src/icons/icon-error.css.ts +0 -27
  328. package/src/icons/icon-error.tsx +0 -207
  329. package/src/icons/icon-info.tsx +0 -86
  330. package/src/icons/icon-mastercard.tsx +0 -36
  331. package/src/icons/icon-success-vivo-new.tsx +0 -51
  332. package/src/icons/icon-success-vivo.tsx +0 -36
  333. package/src/icons/icon-success.tsx +0 -211
  334. package/src/icons/icon-visa.tsx +0 -32
  335. package/src/image.css.ts +0 -48
  336. package/src/image.tsx +0 -345
  337. package/src/index.tsx +0 -2466
  338. package/src/inline.css.ts +0 -131
  339. package/src/inline.tsx +0 -135
  340. package/src/integer-field.tsx +0 -93
  341. package/src/list.css.ts +0 -281
  342. package/src/list.tsx +0 -963
  343. package/src/loading-bar.css.ts +0 -69
  344. package/src/loading-bar.tsx +0 -25
  345. package/src/loading-screen.css.ts +0 -114
  346. package/src/loading-screen.tsx +0 -376
  347. package/src/logo-blau-shell.tsx +0 -30
  348. package/src/logo-blau.tsx +0 -60
  349. package/src/logo-common.tsx +0 -29
  350. package/src/logo-esimflag-shell.tsx +0 -30
  351. package/src/logo-esimflag.tsx +0 -56
  352. package/src/logo-movistar-new-shell.tsx +0 -30
  353. package/src/logo-movistar-new.tsx +0 -85
  354. package/src/logo-movistar-shell.tsx +0 -30
  355. package/src/logo-movistar.tsx +0 -63
  356. package/src/logo-o2-new-shell.tsx +0 -26
  357. package/src/logo-o2-new.tsx +0 -27
  358. package/src/logo-o2-shell.tsx +0 -26
  359. package/src/logo-o2.tsx +0 -27
  360. package/src/logo-telefonica-shell.tsx +0 -30
  361. package/src/logo-telefonica.tsx +0 -95
  362. package/src/logo-tu-shell.tsx +0 -26
  363. package/src/logo-tu.tsx +0 -28
  364. package/src/logo-vivo-shell.tsx +0 -30
  365. package/src/logo-vivo.tsx +0 -53
  366. package/src/logo.css.ts +0 -33
  367. package/src/logo.tsx +0 -313
  368. package/src/master-detail-layout.tsx +0 -28
  369. package/src/maybe-dismissable.css.ts +0 -37
  370. package/src/maybe-dismissable.tsx +0 -58
  371. package/src/media-queries.css.ts +0 -67
  372. package/src/menu.css.ts +0 -132
  373. package/src/menu.tsx +0 -468
  374. package/src/meter.tsx +0 -516
  375. package/src/modal-context-provider.tsx +0 -45
  376. package/src/month-field.tsx +0 -124
  377. package/src/mosaic.css.ts +0 -73
  378. package/src/mosaic.tsx +0 -205
  379. package/src/navigation-bar.css.ts +0 -558
  380. package/src/navigation-bar.tsx +0 -1637
  381. package/src/navigation-breadcrumbs.css.ts +0 -22
  382. package/src/navigation-breadcrumbs.tsx +0 -69
  383. package/src/negative-box.tsx +0 -15
  384. package/src/nestable-context.tsx +0 -139
  385. package/src/overlay.tsx +0 -86
  386. package/src/overscroll-color-context.tsx +0 -141
  387. package/src/package-version.tsx +0 -2
  388. package/src/password-field.tsx +0 -126
  389. package/src/phone-number-field-lite.tsx +0 -265
  390. package/src/phone-number-field.tsx +0 -171
  391. package/src/pin-field.css.ts +0 -90
  392. package/src/pin-field.tsx +0 -346
  393. package/src/placeholder.tsx +0 -41
  394. package/src/popover.css.ts +0 -8
  395. package/src/popover.tsx +0 -85
  396. package/src/portal.tsx +0 -43
  397. package/src/progress-bar.css.ts +0 -61
  398. package/src/progress-bar.tsx +0 -174
  399. package/src/radio-button.css.ts +0 -174
  400. package/src/radio-button.tsx +0 -322
  401. package/src/rating.css.ts +0 -128
  402. package/src/rating.tsx +0 -351
  403. package/src/responsive-layout.css.ts +0 -162
  404. package/src/responsive-layout.tsx +0 -106
  405. package/src/screen-reader-only.css.ts +0 -27
  406. package/src/screen-reader-only.tsx +0 -33
  407. package/src/screen-size-context-provider.tsx +0 -96
  408. package/src/screen-size-context.tsx +0 -23
  409. package/src/search-field.tsx +0 -126
  410. package/src/select.css.ts +0 -226
  411. package/src/select.tsx +0 -513
  412. package/src/sheet-action-row.css.ts +0 -33
  413. package/src/sheet-actions-list.tsx +0 -113
  414. package/src/sheet-actions.tsx +0 -95
  415. package/src/sheet-common.css.ts +0 -254
  416. package/src/sheet-common.tsx +0 -402
  417. package/src/sheet-info.css.ts +0 -19
  418. package/src/sheet-info.tsx +0 -127
  419. package/src/sheet-native.tsx +0 -189
  420. package/src/sheet-radio-list.tsx +0 -118
  421. package/src/sheet-root.tsx +0 -127
  422. package/src/sheet-types.tsx +0 -94
  423. package/src/sheet-web.tsx +0 -140
  424. package/src/skeleton-base.tsx +0 -38
  425. package/src/skeletons.css.ts +0 -56
  426. package/src/skeletons.tsx +0 -133
  427. package/src/skins/blau.tsx +0 -724
  428. package/src/skins/constants.tsx +0 -10
  429. package/src/skins/defaults.tsx +0 -104
  430. package/src/skins/esimflag.tsx +0 -728
  431. package/src/skins/movistar-new.tsx +0 -735
  432. package/src/skins/movistar.tsx +0 -740
  433. package/src/skins/o2-new.tsx +0 -731
  434. package/src/skins/o2.tsx +0 -727
  435. package/src/skins/skin-contract.css.ts +0 -380
  436. package/src/skins/telefonica.tsx +0 -768
  437. package/src/skins/tu.tsx +0 -741
  438. package/src/skins/types/colors.tsx +0 -286
  439. package/src/skins/types/index.tsx +0 -153
  440. package/src/skins/utils.tsx +0 -66
  441. package/src/skins/vivo-new.tsx +0 -745
  442. package/src/skins/vivo.tsx +0 -720
  443. package/src/skip-link.css.ts +0 -34
  444. package/src/skip-link.tsx +0 -52
  445. package/src/slider.css.ts +0 -181
  446. package/src/slider.tsx +0 -384
  447. package/src/snackbar-context.tsx +0 -98
  448. package/src/snackbar-native.ts +0 -37
  449. package/src/snackbar.css.ts +0 -176
  450. package/src/snackbar.tsx +0 -258
  451. package/src/spinner.css.ts +0 -66
  452. package/src/spinner.tsx +0 -136
  453. package/src/sprinkles.css.ts +0 -83
  454. package/src/square.css.ts +0 -15
  455. package/src/square.tsx +0 -55
  456. package/src/stack.css.ts +0 -44
  457. package/src/stack.tsx +0 -79
  458. package/src/stacking-group.css.ts +0 -15
  459. package/src/stacking-group.tsx +0 -82
  460. package/src/stepper.css.ts +0 -233
  461. package/src/stepper.tsx +0 -156
  462. package/src/switch-component.css.ts +0 -181
  463. package/src/switch-component.tsx +0 -187
  464. package/src/tab-focus.tsx +0 -68
  465. package/src/table-actions-header.tsx +0 -21
  466. package/src/table-cell-text.tsx +0 -35
  467. package/src/table.css.ts +0 -297
  468. package/src/table.tsx +0 -398
  469. package/src/tabs.css.ts +0 -212
  470. package/src/tabs.tsx +0 -263
  471. package/src/tag.css.ts +0 -42
  472. package/src/tag.tsx +0 -161
  473. package/src/test-utils/environment/setup-ssr.tsx +0 -10
  474. package/src/test-utils/fail-test-on-console-error.tsx +0 -22
  475. package/src/test-utils/index.tsx +0 -341
  476. package/src/test-utils/setup-ssr-test-env.tsx +0 -13
  477. package/src/test-utils/ssr.tsx +0 -197
  478. package/src/text-field-base.css.ts +0 -416
  479. package/src/text-field-base.tsx +0 -628
  480. package/src/text-field-components.css.ts +0 -159
  481. package/src/text-field-components.tsx +0 -225
  482. package/src/text-field.tsx +0 -118
  483. package/src/text-link.css.ts +0 -83
  484. package/src/text-link.tsx +0 -85
  485. package/src/text-tokens.tsx +0 -708
  486. package/src/text.css.ts +0 -60
  487. package/src/text.tsx +0 -516
  488. package/src/theme-context-provider.tsx +0 -370
  489. package/src/theme-context.css.ts +0 -3
  490. package/src/theme-context.tsx +0 -8
  491. package/src/theme-variant-context.tsx +0 -51
  492. package/src/theme.tsx +0 -184
  493. package/src/time-field.tsx +0 -99
  494. package/src/timeline.css.ts +0 -135
  495. package/src/timeline.tsx +0 -250
  496. package/src/timer.css.ts +0 -99
  497. package/src/timer.tsx +0 -420
  498. package/src/title.tsx +0 -119
  499. package/src/tooltip-context-provider.tsx +0 -57
  500. package/src/tooltip.css.ts +0 -106
  501. package/src/tooltip.tsx +0 -649
  502. package/src/touchable.css.ts +0 -56
  503. package/src/touchable.tsx +0 -355
  504. package/src/types/font-face.d.ts +0 -47
  505. package/src/types/libs.d.ts +0 -3
  506. package/src/utils/__tests__/analytics-test.tsx +0 -35
  507. package/src/utils/__tests__/browser-test.tsx +0 -28
  508. package/src/utils/__tests__/dom-test.tsx +0 -23
  509. package/src/utils/__tests__/helpers-test.tsx +0 -166
  510. package/src/utils/analytics.tsx +0 -28
  511. package/src/utils/animation.tsx +0 -201
  512. package/src/utils/aspect-ratio-support.css.ts +0 -28
  513. package/src/utils/aspect-ratio-support.tsx +0 -141
  514. package/src/utils/browser.tsx +0 -9
  515. package/src/utils/color.tsx +0 -46
  516. package/src/utils/common.tsx +0 -27
  517. package/src/utils/credit-card.tsx +0 -46
  518. package/src/utils/css.tsx +0 -25
  519. package/src/utils/document-visibility.tsx +0 -52
  520. package/src/utils/dom.tsx +0 -155
  521. package/src/utils/environment.tsx +0 -6
  522. package/src/utils/headings.tsx +0 -18
  523. package/src/utils/helpers.tsx +0 -182
  524. package/src/utils/keys.tsx +0 -8
  525. package/src/utils/locale.tsx +0 -27
  526. package/src/utils/platform.tsx +0 -94
  527. package/src/utils/region-code.tsx +0 -1
  528. package/src/utils/renders-element.tsx +0 -6
  529. package/src/utils/time.tsx +0 -22
  530. package/src/utils/types.tsx +0 -19
  531. package/src/utils/utility-types.tsx +0 -8
  532. package/src/video.css.ts +0 -11
  533. package/src/video.tsx +0 -355
  534. package/src/vivinho-loading-animation/in-lottie.json +0 -402
  535. package/src/vivinho-loading-animation/index.tsx +0 -90
  536. package/src/vivinho-loading-animation/out-lottie.json +0 -575
  537. package/src/vivinho-loading-animation/pulse-lottie.json +0 -551
  538. package/src/vivinho-loading-animation/vivinho-loading-animation.css.ts +0 -15
  539. package/src/vivinho-loading-animation/wave-lottie.json +0 -2829
package/src/timer.tsx DELETED
@@ -1,420 +0,0 @@
1
- 'use client';
2
- import classNames from 'classnames';
3
- import * as React from 'react';
4
- import {useIsomorphicLayoutEffect, useTheme} from './hooks';
5
- import Inline from './inline';
6
- import ScreenReaderOnly from './screen-reader-only';
7
- import {Text2, Text6} from './text';
8
- import {ThemeVariant, useThemeVariant} from './theme-variant-context';
9
- import * as styles from './timer.css';
10
- import {getPrefixedDataAttributes} from './utils/dom';
11
- import {isEqual} from './utils/helpers';
12
- import {isRunningAcceptanceTest} from './utils/platform';
13
- import * as tokens from './text-tokens';
14
-
15
- import type {DataAttributes} from './utils/types';
16
-
17
- const DAY_IN_HOURS = 24;
18
- const HOUR_IN_MINUTES = 60;
19
- const MINUTE_IN_SECONDS = 60;
20
- const SECOND_IN_MS = 1000;
21
-
22
- const MINUTE_IN_MS = MINUTE_IN_SECONDS * SECOND_IN_MS;
23
- const HOUR_IN_MS = HOUR_IN_MINUTES * MINUTE_IN_MS;
24
- const DAY_IN_MS = DAY_IN_HOURS * HOUR_IN_MS;
25
-
26
- export type TimeUnit = 'days' | 'hours' | 'minutes' | 'seconds';
27
- type Label = 'none' | 'short' | 'long';
28
-
29
- export interface RemainingTime {
30
- days?: number;
31
- hours?: number;
32
- minutes?: number;
33
- seconds?: number;
34
- }
35
-
36
- interface BaseProps {
37
- endTimestamp: Date | number;
38
- minTimeUnit: TimeUnit;
39
- maxTimeUnit: TimeUnit;
40
- dataAttributes?: DataAttributes;
41
- onProgress?: (value: RemainingTime) => void;
42
- 'aria-label'?: string;
43
- }
44
-
45
- interface TextTimerProps extends BaseProps {
46
- labelType?: Label;
47
- }
48
-
49
- interface TimerProps extends BaseProps {
50
- boxed?: boolean;
51
- }
52
-
53
- const shouldRenderUnit = (
54
- unit: TimeUnit,
55
- minTimeUnit: TimeUnit,
56
- maxTimeUnit: TimeUnit,
57
- labelType?: Label
58
- ) => {
59
- // If label is "none", days shouldn't be displayed
60
- minTimeUnit = labelType === 'none' && minTimeUnit === 'days' ? 'hours' : minTimeUnit;
61
- maxTimeUnit = labelType === 'none' && maxTimeUnit === 'days' ? 'hours' : maxTimeUnit;
62
-
63
- const unitsOrder: Array<TimeUnit> = ['seconds', 'minutes', 'hours', 'days'];
64
-
65
- const minValue = unitsOrder.indexOf(minTimeUnit);
66
- // If max < min, we display only the min unit
67
- const maxValue = Math.max(unitsOrder.indexOf(maxTimeUnit), minValue);
68
- const unitValue = unitsOrder.indexOf(unit);
69
-
70
- return minValue <= unitValue && unitValue <= maxValue;
71
- };
72
-
73
- const getFilteredTimerValue = (
74
- timestamp: RemainingTime,
75
- minTimeUnit: TimeUnit,
76
- maxTimeUnit: TimeUnit,
77
- labelType?: Label
78
- ) => {
79
- return (
80
- [
81
- {unit: 'days', value: timestamp.days},
82
- {unit: 'hours', value: timestamp.hours},
83
- {unit: 'minutes', value: timestamp.minutes},
84
- {unit: 'seconds', value: timestamp.seconds},
85
- ] as Array<{unit: TimeUnit; value: number}>
86
- ).filter((item) => shouldRenderUnit(item.unit, minTimeUnit, maxTimeUnit, labelType));
87
- };
88
-
89
- const getRemainingTime = (endTimestamp: Date | number) => {
90
- // Always return 0 ms remaining for screenshot tests to avoid unstable values caused by delays in browser
91
- if (isRunningAcceptanceTest()) {
92
- return 0;
93
- }
94
-
95
- return Math.max(
96
- 0,
97
- (typeof endTimestamp === 'object' ? endTimestamp : new Date(endTimestamp)).valueOf() - Date.now()
98
- );
99
- };
100
-
101
- const useTimerState = ({
102
- endTimestamp,
103
- labelType,
104
- minTimeUnit,
105
- maxTimeUnit,
106
- onProgress,
107
- }: {
108
- endTimestamp: Date | number;
109
- labelType?: Label;
110
- minTimeUnit: TimeUnit;
111
- maxTimeUnit: TimeUnit;
112
- onProgress?: (value: RemainingTime) => void;
113
- }) => {
114
- const [remainingTime, setRemainingTime] = React.useState(getRemainingTime(endTimestamp));
115
-
116
- useIsomorphicLayoutEffect(() => {
117
- let intervalId: NodeJS.Timeout;
118
-
119
- const updateCurrentTime = () => {
120
- const currentRemainingTime = getRemainingTime(endTimestamp);
121
- setRemainingTime(currentRemainingTime);
122
-
123
- // Stop computing values if there is no time remaining
124
- if (!currentRemainingTime) {
125
- clearInterval(intervalId);
126
- }
127
- };
128
-
129
- if (!isRunningAcceptanceTest()) {
130
- updateCurrentTime();
131
- intervalId = setInterval(updateCurrentTime, SECOND_IN_MS);
132
- return () => clearInterval(intervalId);
133
- }
134
- }, [endTimestamp]);
135
-
136
- const shouldRenderDays = shouldRenderUnit('days', minTimeUnit, maxTimeUnit, labelType);
137
- const shouldRenderHours = shouldRenderUnit('hours', minTimeUnit, maxTimeUnit, labelType);
138
- const shouldRenderMinutes = shouldRenderUnit('minutes', minTimeUnit, maxTimeUnit, labelType);
139
-
140
- const maximumRenderedUnit = shouldRenderDays
141
- ? 'days'
142
- : shouldRenderHours
143
- ? 'hours'
144
- : shouldRenderMinutes
145
- ? 'minutes'
146
- : 'seconds';
147
-
148
- const currentHours = Math.floor(remainingTime / HOUR_IN_MS) % 24;
149
- const currentMinutes = Math.floor(remainingTime / MINUTE_IN_MS) % 60;
150
- const currentSeconds = Math.floor(remainingTime / SECOND_IN_MS) % 60;
151
-
152
- const days = Math.floor(remainingTime / DAY_IN_MS);
153
-
154
- // if hours is the maximum unit, add remaining days
155
- const hours = maximumRenderedUnit === 'hours' ? currentHours + days * DAY_IN_HOURS : currentHours;
156
-
157
- // if minutes is the maximum unit, add remaining days and hours
158
- const minutes =
159
- maximumRenderedUnit === 'minutes'
160
- ? currentMinutes + HOUR_IN_MINUTES * (days * DAY_IN_HOURS + hours)
161
- : currentMinutes;
162
-
163
- // if minutes is the maximum unit, add remaining days, hours and minutes
164
- const seconds =
165
- maximumRenderedUnit === 'seconds'
166
- ? currentSeconds +
167
- MINUTE_IN_SECONDS * (days * DAY_IN_HOURS * HOUR_IN_MINUTES + hours * HOUR_IN_MINUTES + minutes)
168
- : currentSeconds;
169
-
170
- const [timerValue, setTimerValue] = React.useState(
171
- getFilteredTimerValue({days, hours, minutes, seconds}, minTimeUnit, maxTimeUnit, labelType)
172
- );
173
-
174
- React.useEffect(() => {
175
- const currentTimerValue = getFilteredTimerValue(
176
- {days, hours, minutes, seconds},
177
- minTimeUnit,
178
- maxTimeUnit,
179
- labelType
180
- );
181
-
182
- if (!isEqual(currentTimerValue, timerValue)) {
183
- setTimerValue(currentTimerValue);
184
- const timestampValue: RemainingTime = {};
185
- currentTimerValue.forEach((item) => (timestampValue[item.unit] = item.value));
186
- onProgress?.(timestampValue);
187
- }
188
- }, [days, hours, minutes, seconds, labelType, minTimeUnit, maxTimeUnit, timerValue, onProgress]);
189
-
190
- return timerValue;
191
- };
192
-
193
- export const TextTimer = ({
194
- endTimestamp,
195
- labelType = 'none',
196
- minTimeUnit,
197
- maxTimeUnit,
198
- onProgress,
199
- dataAttributes,
200
- 'aria-label': ariaLabel,
201
- }: TextTimerProps): JSX.Element => {
202
- const {texts, t} = useTheme();
203
- const labelId = React.useId();
204
-
205
- const timerValue = useTimerState({endTimestamp, labelType, minTimeUnit, maxTimeUnit, onProgress});
206
-
207
- const unitShortLabel: {[key in TimeUnit]: string} = {
208
- days: texts.timerDaysShortLabel || t(tokens.timerDaysShortLabel),
209
- hours: texts.timerHoursShortLabel || t(tokens.timerHoursShortLabel),
210
- minutes: texts.timerMinutesShortLabel || t(tokens.timerMinutesShortLabel),
211
- seconds: texts.timerSecondsShortLabel || t(tokens.timerSecondsShortLabel),
212
- };
213
-
214
- const unitLabel: {[key in TimeUnit]: string} = {
215
- days: texts.timerDayLongLabel || t(tokens.timerDayLongLabel),
216
- hours: texts.timerHourLongLabel || t(tokens.timerHourLongLabel),
217
- minutes: texts.timerMinuteLongLabel || t(tokens.timerMinuteLongLabel),
218
- seconds: texts.timerSecondLongLabel || t(tokens.timerSecondLongLabel),
219
- };
220
-
221
- const unitLabelPlural: {[key in TimeUnit]: string} = {
222
- days: texts.timerDaysLongLabel || t(tokens.timerDaysLongLabel),
223
- hours: texts.timerHoursLongLabel || t(tokens.timerHoursLongLabel),
224
- minutes: texts.timerMinutesLongLabel || t(tokens.timerMinutesLongLabel),
225
- seconds: texts.timerSecondsLongLabel || t(tokens.timerSecondsLongLabel),
226
- };
227
-
228
- const renderFormattedNumber = (value: number) => {
229
- const digitCount = Math.max(String(value).length, labelType === 'long' ? 1 : 2);
230
-
231
- // Set container's minWidth in ch to avoid it from updating it's width when numbers change
232
- return (
233
- <span className={styles.unitContainer} style={{minWidth: `${digitCount}ch`}}>
234
- {String(value).padStart(digitCount, '0')}
235
- </span>
236
- );
237
- };
238
-
239
- const renderTime = () => {
240
- switch (labelType) {
241
- case 'none':
242
- return timerValue.map((item, index) => (
243
- <React.Fragment key={index}>
244
- {index > 0 && ':'}
245
- {renderFormattedNumber(item.value)}
246
- </React.Fragment>
247
- ));
248
-
249
- case 'short':
250
- return timerValue.map((item, index) => (
251
- <React.Fragment key={index}>
252
- {index > 0 && ' '}
253
- <span className={styles.shortLabelText}>
254
- {renderFormattedNumber(item.value)}
255
- {` ${unitShortLabel[item.unit]}`}
256
- </span>
257
- </React.Fragment>
258
- ));
259
-
260
- case 'long':
261
- default:
262
- return timerValue.map((item, index) => (
263
- <React.Fragment key={index}>
264
- {index > 0 && ' '}
265
- {renderFormattedNumber(item.value)}
266
- {` ${item.value === 1 ? unitLabel[item.unit] : unitLabelPlural[item.unit]}`}
267
- {index === timerValue.length - 2 && ` ${texts.timerAnd || t(tokens.timerAnd)}`}
268
- {index < timerValue.length - 2 && ','}
269
- </React.Fragment>
270
- ));
271
- }
272
- };
273
-
274
- const timerLabel = timerValue
275
- .map(
276
- (item, index) =>
277
- `${item.value} ${item.value === 1 ? unitLabel[item.unit] : unitLabelPlural[item.unit]}${
278
- index === timerValue.length - 1
279
- ? ''
280
- : index === timerValue.length - 2
281
- ? ` ${texts.timerAnd || t(tokens.timerAnd)} `
282
- : ', '
283
- }`
284
- )
285
- .join('');
286
-
287
- return (
288
- <span
289
- role="timer"
290
- aria-labelledby={labelId}
291
- className={styles.inlineText}
292
- style={{
293
- // try to keep the timer in the same line without wrapping only when label is not long
294
- display: labelType !== 'long' ? 'inline-block' : undefined,
295
- }}
296
- {...getPrefixedDataAttributes(dataAttributes, 'TextTimer')}
297
- >
298
- <ScreenReaderOnly>
299
- <span id={labelId}>{ariaLabel ? `${ariaLabel}. ${timerLabel}` : timerLabel}</span>
300
- </ScreenReaderOnly>
301
-
302
- <span aria-hidden className={styles.inlineText}>
303
- {renderTime()}
304
- </span>
305
- </span>
306
- );
307
- };
308
-
309
- export const Timer = ({
310
- boxed,
311
- endTimestamp,
312
- minTimeUnit,
313
- maxTimeUnit,
314
- onProgress,
315
- dataAttributes,
316
- 'aria-label': ariaLabel,
317
- }: TimerProps): JSX.Element => {
318
- const {texts, t} = useTheme();
319
- const labelId = React.useId();
320
- const themeVariant = useThemeVariant();
321
-
322
- const timerValue = useTimerState({endTimestamp, minTimeUnit, maxTimeUnit, onProgress});
323
-
324
- const displayLabel: {[key in TimeUnit]: string} = {
325
- days: texts.timerDayLongLabel || t(tokens.timerDayLongLabel),
326
- hours: texts.timerHourLongLabel || t(tokens.timerHourLongLabel),
327
- minutes: texts.timerDisplayMinutesLabel || t(tokens.timerDisplayMinutesLabel),
328
- seconds: texts.timerDisplaySecondsLabel || t(tokens.timerDisplaySecondsLabel),
329
- };
330
-
331
- const displayLabelPlural: {[key in TimeUnit]: string} = {
332
- days: texts.timerDaysLongLabel || t(tokens.timerDaysLongLabel),
333
- hours: texts.timerHoursLongLabel || t(tokens.timerHoursLongLabel),
334
- minutes: texts.timerDisplayMinutesLabel || t(tokens.timerDisplayMinutesLabel),
335
- seconds: texts.timerDisplaySecondsLabel || t(tokens.timerDisplaySecondsLabel),
336
- };
337
-
338
- const unitLabel: {[key in TimeUnit]: string} = {
339
- days: texts.timerDayLongLabel || t(tokens.timerDayLongLabel),
340
- hours: texts.timerHourLongLabel || t(tokens.timerHourLongLabel),
341
- minutes: texts.timerMinuteLongLabel || t(tokens.timerMinuteLongLabel),
342
- seconds: texts.timerSecondLongLabel || t(tokens.timerSecondLongLabel),
343
- };
344
-
345
- const unitLabelPlural: {[key in TimeUnit]: string} = {
346
- days: texts.timerDaysLongLabel || t(tokens.timerDaysLongLabel),
347
- hours: texts.timerHoursLongLabel || t(tokens.timerHoursLongLabel),
348
- minutes: texts.timerMinutesLongLabel || t(tokens.timerMinutesLongLabel),
349
- seconds: texts.timerSecondsLongLabel || t(tokens.timerSecondsLongLabel),
350
- };
351
-
352
- const renderFormattedNumber = (value: number) => {
353
- const digitCount = Math.max(String(value).length, 2);
354
-
355
- // Set container's minWidth in ch to avoid it from updating it's width when numbers change
356
- return (
357
- <Text6>
358
- <div className={styles.unitContainer} style={{minWidth: `${digitCount}ch`}}>
359
- {String(value).padStart(digitCount, '0')}
360
- </div>
361
- </Text6>
362
- );
363
- };
364
-
365
- const timerLabel = timerValue
366
- .map(
367
- (item, index) =>
368
- `${item.value} ${item.value === 1 ? unitLabel[item.unit] : unitLabelPlural[item.unit]}${
369
- index === timerValue.length - 1
370
- ? ''
371
- : index === timerValue.length - 2
372
- ? ` ${texts.timerAnd || t(tokens.timerAnd)} `
373
- : ', '
374
- }`
375
- )
376
- .join('');
377
-
378
- const renderTime = () => {
379
- return timerValue.map((item, index) => (
380
- <div
381
- className={classNames({
382
- [styles.boxedTimerValueContainer[themeVariant]]: boxed,
383
- })}
384
- key={index}
385
- >
386
- <ThemeVariant variant={boxed ? 'default' : themeVariant}>
387
- <div
388
- className={classNames(styles.timerDisplayValue, {
389
- [styles.boxedTimerDisplayValue]: boxed,
390
- })}
391
- >
392
- {renderFormattedNumber(item.value)}
393
- <Text2 regular>
394
- {item.value === 1 ? displayLabel[item.unit] : displayLabelPlural[item.unit]}
395
- </Text2>
396
- </div>
397
- </ThemeVariant>
398
- </div>
399
- ));
400
- };
401
-
402
- return (
403
- <div
404
- role="timer"
405
- aria-labelledby={labelId}
406
- className={styles.timerWrapper}
407
- {...getPrefixedDataAttributes(dataAttributes, 'Timer')}
408
- >
409
- <ScreenReaderOnly>
410
- <span id={labelId}>{ariaLabel ? `${ariaLabel}. ${timerLabel}` : timerLabel}</span>
411
- </ScreenReaderOnly>
412
-
413
- <div aria-hidden>
414
- <Inline space={boxed ? 8 : 16} wrap>
415
- {renderTime()}
416
- </Inline>
417
- </div>
418
- </div>
419
- );
420
- };
package/src/title.tsx DELETED
@@ -1,119 +0,0 @@
1
- 'use client';
2
- import * as React from 'react';
3
- import Text, {Text2} from './text';
4
- import Inline from './inline';
5
- import Box from './box';
6
- import {vars} from './skins/skin-contract.css';
7
- import {useTheme} from './hooks';
8
- import {getPrefixedDataAttributes} from './utils/dom';
9
-
10
- import type {DataAttributes, HeadingType} from './utils/types';
11
-
12
- type TitleLayoutProps = {
13
- title: React.ReactElement;
14
- right?: React.ReactNode;
15
- dataAttributes?: DataAttributes;
16
- };
17
-
18
- const TitleLayout = ({title, right, dataAttributes}: TitleLayoutProps): React.ReactElement => {
19
- const {textPresets} = useTheme();
20
- if (!right) {
21
- return <div {...getPrefixedDataAttributes(dataAttributes)}>{title}</div>;
22
- }
23
-
24
- return (
25
- <Inline space="between" alignItems="baseline" dataAttributes={dataAttributes}>
26
- {title}
27
- <Box paddingLeft={16}>
28
- <Text2 weight={textPresets.link.weight}>{right}</Text2>
29
- </Box>
30
- </Inline>
31
- );
32
- };
33
-
34
- const useTitleProps = (titleType: 'title1' | 'title2' | 'title3' | 'title4') => {
35
- const {textPresets} = useTheme();
36
- return {
37
- weight: textPresets[titleType].weight,
38
- size: textPresets[titleType].size.desktop,
39
- mobileSize: textPresets[titleType].size.mobile,
40
- lineHeight: textPresets[titleType].lineHeight.desktop,
41
- mobileLineHeight: textPresets[titleType].lineHeight.mobile,
42
- };
43
- };
44
-
45
- export type TitleProps = {
46
- children: React.ReactNode;
47
- id?: string;
48
- right?: React.ReactNode;
49
- as?: HeadingType;
50
- /** "data-" prefix is automatically added. For example, use "testid" instead of "data-testid" */
51
- dataAttributes?: DataAttributes;
52
- };
53
-
54
- export const Title1 = ({children, as = 'h3', id, right, dataAttributes}: TitleProps): React.ReactElement => {
55
- const titleProps = useTitleProps('title1');
56
- return (
57
- <TitleLayout
58
- title={
59
- <Text
60
- as={as}
61
- id={id}
62
- {...titleProps}
63
- color={vars.colors.textSecondary}
64
- transform="uppercase"
65
- wordBreak={false}
66
- >
67
- {children}
68
- </Text>
69
- }
70
- right={right}
71
- dataAttributes={{'component-name': 'Title1', ...dataAttributes}}
72
- />
73
- );
74
- };
75
-
76
- export const Title2 = ({children, as = 'h3', id, right, dataAttributes}: TitleProps): React.ReactElement => {
77
- const titleProps = useTitleProps('title2');
78
- return (
79
- <TitleLayout
80
- title={
81
- <Text as={as} id={id} {...titleProps}>
82
- {children}
83
- </Text>
84
- }
85
- right={right}
86
- dataAttributes={{'component-name': 'Title2', ...dataAttributes}}
87
- />
88
- );
89
- };
90
-
91
- export const Title3 = ({children, as = 'h3', id, right, dataAttributes}: TitleProps): React.ReactElement => {
92
- const titleProps = useTitleProps('title3');
93
- return (
94
- <TitleLayout
95
- title={
96
- <Text as={as} id={id} {...titleProps}>
97
- {children}
98
- </Text>
99
- }
100
- right={right}
101
- dataAttributes={{'component-name': 'Title3', ...dataAttributes}}
102
- />
103
- );
104
- };
105
-
106
- export const Title4 = ({children, as = 'h3', id, right, dataAttributes}: TitleProps): React.ReactElement => {
107
- const titleProps = useTitleProps('title4');
108
- return (
109
- <TitleLayout
110
- title={
111
- <Text as={as} id={id} {...titleProps}>
112
- {children}
113
- </Text>
114
- }
115
- right={right}
116
- dataAttributes={{'component-name': 'Title4', ...dataAttributes}}
117
- />
118
- );
119
- };
@@ -1,57 +0,0 @@
1
- 'use client';
2
- import * as React from 'react';
3
-
4
- type TooltipState = {
5
- openTooltipId: string | null;
6
- };
7
-
8
- type TooltipSetter = {
9
- openTooltip: (tooltipId: string) => void;
10
- closeTooltip: (tooltipId: string) => void;
11
- };
12
-
13
- const TooltipStateContext = React.createContext<TooltipState>({openTooltipId: null});
14
- const TooltipStateSetterContext = React.createContext<TooltipSetter>({
15
- openTooltip: () => {},
16
- closeTooltip: () => {},
17
- });
18
-
19
- const TooltipContextProvider = ({children}: {children: React.ReactNode}): JSX.Element => {
20
- /**
21
- * We have to use a state and a ref to save the open tooltip id. If two targets (let's call them A and B) are next
22
- * to each other (without space between them), the mouseOver/mouseLeave events will be triggered almost at the same time.
23
- * Both tooltips will update their states, and it can happen that React decides to re-render B before A (i.e. it may first
24
- * set the openTooltipId to B, and then to null because of mouse leaving A, causing both tooltips to be hidden).
25
- *
26
- * Setting the value inside the ref allows us to update the active tooltip id without triggering any re-renders, so this
27
- * race condition won't happen. We also need the state with the active id because we want changes in this value to be
28
- * reactive (i.e. trigger a re-render in each tooltip instance so that they can be opened/hidden accordingly).
29
- */
30
- const [openTooltipId, setOpenTooltipId] = React.useState<string | null>(null);
31
- const openRef = React.useRef<string | null>(null);
32
-
33
- const openTooltip = React.useCallback((tooltipId: string) => {
34
- openRef.current = tooltipId;
35
- setOpenTooltipId(tooltipId);
36
- }, []);
37
-
38
- const closeTooltip = React.useCallback((tooltipId: string) => {
39
- if (openRef.current === tooltipId) {
40
- openRef.current = null;
41
- setOpenTooltipId(null);
42
- }
43
- }, []);
44
-
45
- return (
46
- <TooltipStateContext.Provider value={{openTooltipId}}>
47
- <TooltipStateSetterContext.Provider value={{openTooltip, closeTooltip}}>
48
- {children}
49
- </TooltipStateSetterContext.Provider>
50
- </TooltipStateContext.Provider>
51
- );
52
- };
53
-
54
- export const useTooltipState = (): TooltipState => React.useContext(TooltipStateContext);
55
- export const useSetTooltipState = (): TooltipSetter => React.useContext(TooltipStateSetterContext);
56
-
57
- export default TooltipContextProvider;
@@ -1,106 +0,0 @@
1
- import {style} from '@vanilla-extract/css';
2
- import {vars} from './skins/skin-contract.css';
3
- import {sprinkles} from './sprinkles.css';
4
-
5
- export const CONTENT_MIN_WIDTH = 40;
6
- const ARROW_CONTAINER_SIZE = 20;
7
- const CONTENT_PADDING = 8;
8
- const ARROW_SIZE = 12;
9
- const BORDER_SIZE = 1;
10
-
11
- export const tooltipTransitionClasses = {
12
- entering: {
13
- opacity: 1,
14
- },
15
- entered: {
16
- opacity: 1,
17
- },
18
- exiting: {
19
- opacity: 0,
20
- },
21
- exited: {
22
- opacity: 0,
23
- },
24
- unmounted: {},
25
- };
26
-
27
- export const container = style([
28
- sprinkles({
29
- position: 'absolute',
30
- }),
31
- {
32
- zIndex: 1,
33
- opacity: 1,
34
- filter: 'drop-shadow(0px 2px 2px rgba(0,0,0,0.2))',
35
- },
36
- ]);
37
-
38
- export const tooltip = style([
39
- sprinkles({
40
- position: 'relative',
41
- borderRadius: vars.borderRadii.popup,
42
- background: vars.colors.backgroundContainer,
43
- }),
44
- {
45
- // needed because the tooltip minWidth/maxWidth are being set with inline styles
46
- boxSizing: 'border-box',
47
- },
48
- ]);
49
-
50
- export const contentContainer = style([
51
- sprinkles({
52
- position: 'relative',
53
- overflow: 'hidden',
54
- }),
55
- {
56
- minWidth: CONTENT_MIN_WIDTH - 2 * BORDER_SIZE, // border is not included in this container
57
- },
58
- ]);
59
-
60
- export const content = style({
61
- padding: CONTENT_PADDING - BORDER_SIZE,
62
- });
63
-
64
- export const tooltipCenter = sprinkles({
65
- display: 'flex',
66
- flexDirection: 'column',
67
- alignItems: 'center',
68
- });
69
-
70
- export const arrowContainer = style([
71
- sprinkles({
72
- position: 'absolute',
73
- width: ARROW_CONTAINER_SIZE,
74
- overflow: 'hidden',
75
- }),
76
- {
77
- height: ARROW_CONTAINER_SIZE / 2,
78
- },
79
- ]);
80
-
81
- export const arrow = style([
82
- sprinkles({
83
- width: ARROW_SIZE,
84
- height: ARROW_SIZE,
85
- position: 'absolute',
86
- top: 0,
87
- background: vars.colors.backgroundContainer,
88
- }),
89
- {
90
- left: '50%',
91
- transform: 'translate(-50%, -50%) rotate(45deg)',
92
- boxSizing: 'border-box',
93
- borderRadius: '0 0 2px 0',
94
- },
95
- ]);
96
-
97
- export const closeButtonIcon = style([
98
- sprinkles({
99
- position: 'absolute',
100
- }),
101
- {
102
- top: CONTENT_PADDING - BORDER_SIZE,
103
- right: CONTENT_PADDING - BORDER_SIZE,
104
- zIndex: 1,
105
- },
106
- ]);