@telefonica/mistica 16.59.0-beta.1 → 16.60.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 +2 -14
  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
@@ -1,370 +0,0 @@
1
- 'use client';
2
- import * as React from 'react';
3
- import {assignInlineVars} from '@vanilla-extract/dynamic';
4
- import {DialogRoot} from './dialog-context';
5
- import ScreenSizeContextProvider from './screen-size-context-provider';
6
- import {dimensions, getMisticaLinkComponent, NAVBAR_HEIGHT_MOBILE} from './theme';
7
- import {getPlatform, isInsideNovumNativeApp} from './utils/platform';
8
- import ThemeContext from './theme-context';
9
- import {useIsomorphicLayoutEffect} from './hooks';
10
- import TabFocus from './tab-focus';
11
- import ModalContextProvider from './modal-context-provider';
12
- import TooltipContextProvider from './tooltip-context-provider';
13
- import {DocumentVisibilityProvider} from './utils/document-visibility';
14
- import {AspectRatioSupportProvider} from './utils/aspect-ratio-support';
15
- import {TrackingConfig} from './utils/analytics';
16
- import {vars} from './skins/skin-contract.css';
17
- import {fromHexToRgb} from './utils/color';
18
- import {
19
- defaultBorderRadiiConfig,
20
- defaultSpacing,
21
- defaultTextPresetsConfig,
22
- defaultThemeVariantsConfig,
23
- } from './skins/defaults';
24
- import {isClientSide} from './utils/environment';
25
- import {PACKAGE_VERSION} from './package-version';
26
- import {SnackbarRoot} from './snackbar-context';
27
- import {mapToWeight} from './text';
28
- import * as mq from './media-queries.css';
29
- import * as styles from './theme-context.css';
30
- import {localeToLanguage} from './utils/locale';
31
-
32
- import type {Colors, TextPresetsConfig} from './skins/types';
33
- import type {Theme, ThemeConfig} from './theme';
34
- import type {TextToken} from './text-tokens';
35
-
36
- // Check there is only one version of mistica installed in the page.
37
- if (process.env.NODE_ENV !== 'production' && isClientSide()) {
38
- // @ts-expect-error __mistica_version__ does not exist in window
39
- if (window['__mistica_version__'] && window['__mistica_version__'] !== PACKAGE_VERSION) {
40
- throw new Error(`There is more than one version of @telefonica/mistica running on the same page`);
41
- } else {
42
- // @ts-expect-error __mistica_version__ does not exist in window
43
- window['__mistica_version__'] = PACKAGE_VERSION;
44
- }
45
- }
46
-
47
- const darkModeMedia = '(prefers-color-scheme: dark)';
48
- export const useIsOsDarkModeEnabled = (): boolean => {
49
- const [isDarkMode, setIsDarkMode] = React.useState(false);
50
-
51
- useIsomorphicLayoutEffect(() => {
52
- if (!window.matchMedia) {
53
- return;
54
- }
55
-
56
- const mq = window.matchMedia(darkModeMedia);
57
-
58
- const listener = () => {
59
- setIsDarkMode(mq.matches);
60
- };
61
-
62
- mq.addEventListener('change', listener);
63
- listener();
64
-
65
- return () => {
66
- mq.removeEventListener('change', listener);
67
- };
68
- }, []);
69
-
70
- return isDarkMode;
71
- };
72
-
73
- type Props = {
74
- theme: ThemeConfig;
75
- as?: string;
76
- withoutStyles?: boolean;
77
- children?: React.ReactNode;
78
- };
79
-
80
- const useDefaultHrefDecorator = () => {
81
- return (href: string) => href;
82
- };
83
-
84
- const sanitizeDimensions = (dimensions: ThemeConfig['dimensions']): Partial<Theme['dimensions']> => {
85
- return {
86
- headerMobileHeight:
87
- dimensions?.headerMobileHeight === 'mistica'
88
- ? NAVBAR_HEIGHT_MOBILE
89
- : dimensions?.headerMobileHeight,
90
- };
91
- };
92
-
93
- const SetupStackingContext = () => {
94
- const ref = React.useRef<HTMLDivElement>(null);
95
- const [hasContentIsolation, setHasContentIsolation] = React.useState(false);
96
- const [isFirstRender, setIsFirstRender] = React.useState(true);
97
-
98
- useIsomorphicLayoutEffect(() => {
99
- if (isFirstRender) {
100
- // Given that we don't render the extra div in server side, we skip creating it in the first client
101
- // render in order to avoid hydration issues
102
- setIsFirstRender(false);
103
- } else {
104
- // Set isolation: isolate to the parent of the provider. This way, we avoid content inside portals
105
- // from being rendered under content that is inside the provider (in case it has z-index defined).
106
- const root = ref.current?.parentElement;
107
- if (root) {
108
- root.style.isolation = 'isolate';
109
- setHasContentIsolation(true);
110
- }
111
- }
112
- }, [isFirstRender]);
113
-
114
- // Don't render the div in server side, because effects are not executed in there and it makes the div useless
115
- if (hasContentIsolation || !isClientSide() || isFirstRender) {
116
- return null;
117
- }
118
- return <div ref={ref} style={{display: 'none'}} />;
119
- };
120
-
121
- type TextPresetsVars = {
122
- [key in keyof TextPresetsConfig]: {
123
- weight: string;
124
- size: string;
125
- lineHeight: string;
126
- };
127
- };
128
-
129
- // Define the same colors in css variables as rgb components, to allow applying alpha aftherwards. See utils/color.tsx
130
- const makeRawColors = (colors: Colors): Colors =>
131
- Object.fromEntries(
132
- Object.entries(colors).map(([colorName, colorValue]) => {
133
- let rawColorValue = '';
134
- if (colorValue.startsWith('#')) {
135
- const [r, g, b] = fromHexToRgb(colorValue);
136
- rawColorValue = `${r}, ${g}, ${b}`;
137
- }
138
- return [colorName, rawColorValue];
139
- })
140
- ) as Colors;
141
-
142
- const ThemeContextProvider = ({theme, children, as, withoutStyles = false}: Props): JSX.Element => {
143
- const isOsDarkModeEnabled = useIsOsDarkModeEnabled();
144
-
145
- const colorScheme = theme.colorScheme ?? 'auto';
146
- const lightColors: Colors = theme.skin.colors;
147
- const darkColors: Colors = {...theme.skin.colors, ...theme.skin.darkModeColors};
148
- const isDarkModeEnabled = (colorScheme === 'auto' && isOsDarkModeEnabled) || colorScheme === 'dark';
149
- const colors: Colors = isDarkModeEnabled ? darkColors : lightColors;
150
-
151
- const language = localeToLanguage(theme.i18n.locale);
152
-
153
- const translate = React.useCallback(
154
- (token: TextToken | string, ...params: Array<string | number>): string => {
155
- const text = typeof token === 'string' ? token : token[language] || token.en;
156
- if (!params.length) {
157
- return text;
158
- }
159
- // replace token parameters: 1$s, 2$s, 3$s, etc.
160
- return text.replace(/\d+\$s/g, (substr) => {
161
- return String(params[parseInt(substr) - 1] ?? substr);
162
- });
163
- },
164
- [language]
165
- );
166
-
167
- const contextTheme = React.useMemo((): Theme => {
168
- const platformOverrides = {
169
- platform: getPlatform(),
170
- insideNovumNativeApp: isInsideNovumNativeApp(),
171
- ...theme.platformOverrides,
172
- };
173
-
174
- const textTokenValues = Object.entries(defaultTextPresetsConfig).map(([token, defaultConfig]) => {
175
- return {
176
- [token]: {...defaultConfig, ...theme.skin.textPresets?.[token as keyof TextPresetsConfig]},
177
- };
178
- });
179
-
180
- const textPresets = Object.assign({}, ...textTokenValues) as TextPresetsConfig;
181
-
182
- return {
183
- skinName: theme.skin.name,
184
- i18n: {
185
- ...theme.i18n,
186
- },
187
- platformOverrides,
188
- texts: {
189
- ...theme.texts,
190
- },
191
- analytics: {
192
- logEvent: () => Promise.resolve(),
193
- eventFormat: 'universal-analytics',
194
- ...theme.analytics,
195
- },
196
- colorValues: colors,
197
- dimensions: {
198
- ...dimensions,
199
- ...sanitizeDimensions(theme.dimensions),
200
- },
201
- borderRadii: theme.skin.borderRadii ?? defaultBorderRadiiConfig,
202
- textPresets,
203
- spacing: theme.skin.spacing ?? defaultSpacing,
204
- themeVariants: theme.skin.themeVariants ?? defaultThemeVariantsConfig,
205
- Link: getMisticaLinkComponent(theme.Link),
206
- isDarkMode: isDarkModeEnabled,
207
- isIos: getPlatform(platformOverrides) === 'ios',
208
- useHrefDecorator: theme.useHrefDecorator ?? useDefaultHrefDecorator,
209
- t: translate,
210
- preventCopyInFormFields: theme.preventCopyInFormFields ?? false,
211
- };
212
- }, [colors, theme, isDarkModeEnabled, translate]);
213
-
214
- const textPresetsVars = React.useMemo(() => {
215
- // Get an object mapping textPresets tokens to objects containing the token's weight
216
- // For example, {title1: {weight: '700'}}
217
- const tokenValues = Object.entries(contextTheme.textPresets).map(([token, config]) => {
218
- // Map light/regular/medium/bold to valid css fontWeight values
219
- return {
220
- [token]: {
221
- ...(config.weight && {weight: String(mapToWeight[config.weight])}),
222
- ...(config.size && {size: `${config.size.desktop}px`}),
223
- ...(config.lineHeight && {lineHeight: `${config.lineHeight.desktop}px`}),
224
- },
225
- };
226
- });
227
-
228
- return Object.assign({}, ...tokenValues) as TextPresetsVars;
229
- }, [contextTheme]);
230
-
231
- const textPresetsResponsiveVars = React.useMemo(() => {
232
- const tokenValues = Object.entries(contextTheme.textPresets).map(([token, config]) => {
233
- return {
234
- [token]: {
235
- ...(config.weight && {weight: String(mapToWeight[config.weight])}),
236
- // Use mobile values for size/lineHeight
237
- ...(config.size && {size: `${config.size.mobile}px`}),
238
- ...(config.lineHeight && {lineHeight: `${config.lineHeight.mobile}px`}),
239
- },
240
- };
241
- });
242
-
243
- return Object.assign({}, ...tokenValues) as TextPresetsVars;
244
- }, [contextTheme]);
245
-
246
- const spacingDesktopVars = React.useMemo(() => {
247
- const tokenValues = Object.entries(contextTheme.spacing).map(([token, values]) => {
248
- return {
249
- [token]: {
250
- ...('top' in values && {top: `${values.top.desktop}px`}),
251
- ...('right' in values && {right: `${values.right.desktop}px`}),
252
- ...('bottom' in values && {bottom: `${values.bottom.desktop}px`}),
253
- ...('left' in values && {left: `${values.left.desktop}px`}),
254
- },
255
- };
256
- });
257
- return Object.assign({}, ...tokenValues) as typeof vars.spacing;
258
- }, [contextTheme]);
259
-
260
- const spacingMobileVars = React.useMemo(() => {
261
- const tokenValues = Object.entries(contextTheme.spacing).map(([token, values]) => {
262
- return {
263
- [token]: {
264
- ...('top' in values && {top: `${values.top.mobile}px`}),
265
- ...('right' in values && {right: `${values.right.mobile}px`}),
266
- ...('bottom' in values && {bottom: `${values.bottom.mobile}px`}),
267
- ...('left' in values && {left: `${values.left.mobile}px`}),
268
- },
269
- };
270
- });
271
- return Object.assign({}, ...tokenValues) as typeof vars.spacing;
272
- }, [contextTheme]);
273
-
274
- const renderStyles = (selector: string) => {
275
- if (withoutStyles || (process.env.NODE_ENV === 'test' && !process.env.SSR_TEST)) {
276
- return null;
277
- }
278
-
279
- const lightRawColors = makeRawColors(lightColors);
280
- const darkRawColors = makeRawColors(darkColors);
281
-
282
- const [defaultColors, defaultRawColors] =
283
- colorScheme === 'auto' || colorScheme === 'light'
284
- ? [lightColors, lightRawColors]
285
- : [darkColors, darkRawColors];
286
-
287
- const darkModeMediaQuery =
288
- colorScheme === 'auto'
289
- ? `@media (prefers-color-scheme: dark) {
290
- ${selector} {
291
- ${assignInlineVars(vars.colors, darkColors)};
292
- ${assignInlineVars(vars.rawColors, darkRawColors)}
293
- }
294
- }`
295
- : '';
296
-
297
- return (
298
- <style>
299
- {`
300
- ${selector} {
301
- ${assignInlineVars(vars, {
302
- colors: defaultColors,
303
- rawColors: defaultRawColors,
304
- textPresets: textPresetsVars,
305
- borderRadii: theme.skin.borderRadii ?? defaultBorderRadiiConfig,
306
- spacing: spacingDesktopVars,
307
- })}
308
- }
309
- @media ${mq.tabletOrSmaller} {
310
- ${selector} {
311
- ${assignInlineVars(vars.textPresets, textPresetsResponsiveVars)}
312
- ${assignInlineVars(vars.spacing, spacingMobileVars)}
313
- }
314
- }
315
- ${darkModeMediaQuery}
316
- `}
317
- </style>
318
- );
319
- };
320
-
321
- return (
322
- <>
323
- <TabFocus disabled={!theme.enableTabFocus}>
324
- <ModalContextProvider>
325
- <TooltipContextProvider>
326
- <ThemeContext.Provider value={contextTheme}>
327
- <TrackingConfig eventFormat={contextTheme.analytics.eventFormat}>
328
- <AspectRatioSupportProvider>
329
- <DocumentVisibilityProvider>
330
- <ScreenSizeContextProvider>
331
- <DialogRoot>
332
- <SnackbarRoot>
333
- {as ? (
334
- <>
335
- {renderStyles(`.${styles.themeVars}`)}
336
- {React.createElement(
337
- as,
338
- {
339
- style: {
340
- isolation: 'isolate',
341
- },
342
- className: withoutStyles
343
- ? undefined
344
- : styles.themeVars,
345
- },
346
- children
347
- )}
348
- </>
349
- ) : (
350
- <>
351
- {renderStyles(':root')}
352
- {children}
353
- </>
354
- )}
355
- </SnackbarRoot>
356
- </DialogRoot>
357
- </ScreenSizeContextProvider>
358
- </DocumentVisibilityProvider>
359
- </AspectRatioSupportProvider>
360
- </TrackingConfig>
361
- </ThemeContext.Provider>
362
- </TooltipContextProvider>
363
- </ModalContextProvider>
364
- </TabFocus>
365
- {!as && <SetupStackingContext />}
366
- </>
367
- );
368
- };
369
-
370
- export default ThemeContextProvider;
@@ -1,3 +0,0 @@
1
- import {style} from '@vanilla-extract/css';
2
-
3
- export const themeVars = style({});
@@ -1,8 +0,0 @@
1
- 'use client';
2
- import * as React from 'react';
3
-
4
- import type {Theme} from './theme';
5
-
6
- const ThemeContext = React.createContext<Theme | null>(null);
7
-
8
- export default ThemeContext;
@@ -1,51 +0,0 @@
1
- 'use client';
2
- import * as React from 'react';
3
-
4
- export type NonDeprecatedVariant = 'default' | 'brand' | 'negative' | 'alternative' | 'media';
5
-
6
- export type Variant =
7
- | 'default'
8
- | 'brand'
9
- | 'negative'
10
- | 'alternative'
11
- | 'media'
12
- /** @deprecated use 'brand' instead */
13
- | 'inverse';
14
-
15
- export const normalizeVariant = <T extends Variant>(variant: T): T extends 'inverse' ? 'brand' : T => {
16
- if (variant === 'inverse') {
17
- return 'brand' as T extends 'inverse' ? 'brand' : T;
18
- }
19
- return variant as T extends 'inverse' ? 'brand' : T;
20
- };
21
-
22
- const ThemeVariantContext = React.createContext<Variant>('default');
23
-
24
- type ThemeVariantProps = {
25
- /** @deprecated Use variant = 'brand' instead */
26
- isInverse?: boolean;
27
- variant?: Variant;
28
- children: React.ReactNode;
29
- };
30
-
31
- export const ThemeVariant = ({isInverse, variant, children}: ThemeVariantProps): JSX.Element => (
32
- <ThemeVariantContext.Provider value={variant ?? (isInverse ? 'brand' : 'default')}>
33
- {children}
34
- </ThemeVariantContext.Provider>
35
- );
36
-
37
- export const useThemeVariant = (): NonDeprecatedVariant =>
38
- normalizeVariant(React.useContext(ThemeVariantContext));
39
-
40
- /**
41
- * @deprecated use `useThemeVariant` instead
42
- */
43
- export const useIsInverseVariant = (): boolean => useThemeVariant() === 'brand';
44
-
45
- /**
46
- * @deprecated use `useThemeVariant` instead
47
- */
48
- export const useIsInverseOrMediaVariant = (): boolean => {
49
- const variant = useThemeVariant();
50
- return variant === 'brand' || variant === 'media';
51
- };
package/src/theme.tsx DELETED
@@ -1,184 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import type {RegionCode} from './utils/region-code';
4
- import type {Locale} from './utils/locale';
5
- import type {
6
- BorderRadiiConfig,
7
- Colors,
8
- Skin,
9
- SkinName,
10
- SpacingConfig,
11
- TextPresetsConfig,
12
- ThemeVariantsConfig,
13
- } from './skins/types';
14
- import type {TrackingEvent} from './utils/types';
15
- import type {Dictionary, TextToken} from './text-tokens';
16
-
17
- export const NAVBAR_HEIGHT_MOBILE = 56;
18
- export const NAVBAR_HEIGHT_DESKTOP = 80;
19
- export const NAVBAR_HEIGHT_DESKTOP_LARGE = 2 * NAVBAR_HEIGHT_DESKTOP;
20
-
21
- export const dimensions = {
22
- headerMobileHeight: NAVBAR_HEIGHT_MOBILE,
23
- headerDesktopHeight: NAVBAR_HEIGHT_DESKTOP,
24
- };
25
-
26
- /**
27
- * https://reactrouter.com/en/main/components/link
28
- * https://nextjs.org/docs/app/api-reference/components/link
29
- */
30
- type LinkComponent = React.ComponentType<{
31
- style?: React.CSSProperties;
32
- className?: string;
33
- 'aria-label'?: string;
34
- disabled?: boolean;
35
- role?: string;
36
- 'data-testid'?: string;
37
- 'aria-checked'?: React.AnchorHTMLAttributes<HTMLAnchorElement>['aria-checked'];
38
- 'aria-controls'?: string;
39
- 'aria-expanded'?: React.AnchorHTMLAttributes<HTMLAnchorElement>['aria-expanded'];
40
- 'aria-hidden'?: React.AnchorHTMLAttributes<HTMLAnchorElement>['aria-hidden'];
41
- 'aria-selected'?: React.AnchorHTMLAttributes<HTMLAnchorElement>['aria-selected'];
42
- tabIndex?: number;
43
- innerRef?: React.RefObject<HTMLAnchorElement>;
44
- to:
45
- | string
46
- | {
47
- pathname?: string;
48
- search?: string;
49
- state?: unknown;
50
- hash?: string;
51
- key?: string;
52
- };
53
- replace?: boolean;
54
- onClick?: React.MouseEventHandler<HTMLAnchorElement>;
55
- onKeyDown?: React.KeyboardEventHandler<HTMLAnchorElement>;
56
- children: React.ReactNode;
57
- target?: string;
58
- }>;
59
-
60
- const AnchorLink: LinkComponent = ({to, innerRef, ...props}) => (
61
- <a ref={innerRef} href={typeof to === 'string' ? to : to?.pathname} {...props}>
62
- {props.children}
63
- </a>
64
- );
65
-
66
- const getReactRouter5Link = (ReactRouterLink: React.ComponentType<any>): LinkComponent => ReactRouterLink;
67
-
68
- const getReactRouter6Link =
69
- (ReactRouterLink: React.ComponentType<any>): LinkComponent =>
70
- ({innerRef, ...props}) => <ReactRouterLink ref={innerRef} {...props} />;
71
-
72
- const getNext12Link =
73
- (NextLink: React.ComponentType<any>): LinkComponent =>
74
- ({to, innerRef, children, ...props}) => (
75
- <NextLink href={to}>
76
- <a ref={innerRef} {...props}>
77
- {children}
78
- </a>
79
- </NextLink>
80
- );
81
-
82
- const getNext13Or14Link =
83
- (NextLink: React.ComponentType<any>): LinkComponent =>
84
- ({to, innerRef, children, ...props}) => (
85
- <NextLink href={to} ref={innerRef} {...props}>
86
- {children}
87
- </NextLink>
88
- );
89
-
90
- export const getMisticaLinkComponent = (Link?: ThemeConfig['Link']): LinkComponent => {
91
- if (!Link) {
92
- return AnchorLink;
93
- }
94
- // the $$typeof check is because components like forwardRefs are objects
95
- // see https://github.com/facebook/react/blob/main/packages/shared/isValidElementType.js
96
- if (typeof Link === 'function' || (Link as any).$$typeof) {
97
- return Link as LinkComponent;
98
- }
99
- switch (Link.type) {
100
- case 'ReactRouter5':
101
- // webapp, flow-frontend
102
- return getReactRouter5Link(Link.Component);
103
- case 'ReactRouter6':
104
- // nt_core
105
- return getReactRouter6Link(Link.Component);
106
- case 'Next12':
107
- // zeus-web
108
- return getNext12Link(Link.Component);
109
- case 'Next13':
110
- case 'Next14':
111
- // hello-world-web, global-checkout-webview
112
- return getNext13Or14Link(Link.Component);
113
- default:
114
- const exhaustiveCheck: never = Link.type;
115
- throw new Error(`Invalid Link type: ${exhaustiveCheck}`);
116
- }
117
- };
118
-
119
- export type ColorScheme = 'dark' | 'light' | 'auto';
120
- export type EventFormat = 'universal-analytics' | 'google-analytics-4';
121
-
122
- // This is the type expected by ThemeContextProvider theme prop.
123
- // This config is provided by the user of the lib
124
- export type ThemeConfig = Readonly<{
125
- skin: Readonly<Skin>;
126
- colorScheme?: ColorScheme; // light by default. TODO: Change to auto by default in next major version
127
- i18n: Readonly<{
128
- locale: Locale;
129
- phoneNumberFormattingRegionCode: RegionCode;
130
- }>;
131
- platformOverrides?: Readonly<{
132
- platform?: 'ios' | 'android' | 'desktop';
133
- insideNovumNativeApp?: boolean;
134
- userAgent?: string;
135
- }>;
136
- texts?: Partial<Dictionary>;
137
- analytics?: Readonly<{
138
- logEvent: (trackingEvent: TrackingEvent) => Promise<void>;
139
- eventFormat?: EventFormat;
140
- }>;
141
- dimensions?: Readonly<{headerMobileHeight: number | 'mistica'}>;
142
- Link?:
143
- | LinkComponent
144
- | {
145
- type: 'ReactRouter5' | 'ReactRouter6' | 'Next12' | 'Next13' | 'Next14';
146
- Component: React.ComponentType<any>;
147
- };
148
- useHrefDecorator?: () => (href: string) => string;
149
- /** @deprecated Better use default browser behavior for :focus-visible */
150
- enableTabFocus?: boolean;
151
- preventCopyInFormFields?: boolean;
152
- }>;
153
-
154
- // This is the lib INTERNAL context
155
- export type Theme = {
156
- skinName: SkinName;
157
- i18n: {
158
- locale: Locale;
159
- phoneNumberFormattingRegionCode: RegionCode;
160
- };
161
- platformOverrides: {
162
- platform?: 'ios' | 'android' | 'desktop';
163
- insideNovumNativeApp?: boolean;
164
- userAgent?: string;
165
- };
166
- texts: Partial<Dictionary>;
167
- analytics: {
168
- logEvent: (trackingEvent: TrackingEvent) => Promise<void>;
169
- eventFormat: EventFormat;
170
- };
171
- // TODO: rename this props to navigationBarHeight (or something similar) in next major
172
- dimensions: {headerMobileHeight: number; headerDesktopHeight: number};
173
- colorValues: Colors;
174
- borderRadii: BorderRadiiConfig;
175
- textPresets: TextPresetsConfig;
176
- spacing: SpacingConfig;
177
- themeVariants: ThemeVariantsConfig;
178
- Link: LinkComponent;
179
- isDarkMode: boolean;
180
- isIos: boolean;
181
- useHrefDecorator: () => (href: string) => string;
182
- t: (token: TextToken | string, ...params: Array<string | number>) => string;
183
- preventCopyInFormFields: boolean;
184
- };