@telefonica/mistica 17.3.0 → 17.5.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 (609) hide show
  1. package/css/blau.css +29 -16
  2. package/css/esimflag.css +40 -18
  3. package/css/mistica-common.css +5 -0
  4. package/css/mistica.css +1 -1
  5. package/css/movistar.css +34 -18
  6. package/css/o2.css +31 -18
  7. package/css/telefonica.css +43 -18
  8. package/css/vivo-evolution.css +71 -20
  9. package/css/vivo.css +31 -18
  10. package/dist/accordion.css-mistica.js +10 -10
  11. package/dist/align.css-mistica.js +1 -1
  12. package/dist/autocomplete.css-mistica.js +4 -4
  13. package/dist/avatar.css-mistica.js +1 -1
  14. package/dist/badge.css-mistica.js +1 -1
  15. package/dist/box.css-mistica.js +13 -13
  16. package/dist/boxed.css-mistica.js +24 -24
  17. package/dist/boxed.d.ts +9 -0
  18. package/dist/boxed.js +18 -15
  19. package/dist/button-group.css-mistica.js +1 -1
  20. package/dist/button-layout.css-mistica.js +19 -19
  21. package/dist/button.css-mistica.js +51 -51
  22. package/dist/callout.css-mistica.js +13 -13
  23. package/dist/card-internal.css-mistica.js +22 -22
  24. package/dist/carousel.css-mistica.js +30 -30
  25. package/dist/checkbox.css-mistica.js +15 -15
  26. package/dist/chip.css-mistica.js +18 -18
  27. package/dist/circle.css-mistica.js +2 -2
  28. package/dist/community/advanced-data-card.css-mistica.js +19 -19
  29. package/dist/community/ai-card.css-mistica.js +11 -11
  30. package/dist/community/blocks.css-mistica.js +1 -1
  31. package/dist/community/cyber/example-component.css-mistica.js +1 -1
  32. package/dist/community/example-component.css-mistica.js +1 -1
  33. package/dist/community/skins/cyber-skin.js +19 -17
  34. package/dist/counter.css-mistica.js +6 -6
  35. package/dist/cover-hero.css-mistica.js +7 -7
  36. package/dist/credit-card-number-field.css-mistica.js +3 -3
  37. package/dist/date-field.css-mistica.js +1 -1
  38. package/dist/date-time-picker.css-mistica.js +1 -1
  39. package/dist/dialog.css-mistica.js +10 -10
  40. package/dist/divider.css-mistica.js +5 -5
  41. package/dist/double-field.css-mistica.js +2 -2
  42. package/dist/drawer.css-mistica.js +4 -4
  43. package/dist/empty-state-card.css-mistica.js +1 -1
  44. package/dist/empty-state.css-mistica.js +8 -8
  45. package/dist/fade-in.css-mistica.js +1 -1
  46. package/dist/fade-out.css-mistica.js +11 -0
  47. package/dist/fade-out.css.d.ts +1 -0
  48. package/dist/fade-out.d.ts +11 -0
  49. package/dist/fade-out.js +88 -0
  50. package/dist/feedback.css-mistica.js +5 -5
  51. package/dist/file-upload.css-mistica.js +10 -10
  52. package/dist/fixed-footer-layout.css-mistica.js +6 -6
  53. package/dist/form.css-mistica.js +1 -1
  54. package/dist/generated/mistica-icons/icon-antenna-filled.js +40 -12
  55. package/dist/generated/mistica-icons/icon-antenna-light.js +37 -17
  56. package/dist/generated/mistica-icons/icon-antenna-regular.js +42 -14
  57. package/dist/generated/mistica-icons/icon-arrow-up-down-filled.js +26 -16
  58. package/dist/generated/mistica-icons/icon-arrow-up-down-light.js +22 -12
  59. package/dist/generated/mistica-icons/icon-arrow-up-down-regular.js +30 -20
  60. package/dist/generated/mistica-icons/icon-arrows-left-and-right-filled.js +26 -16
  61. package/dist/generated/mistica-icons/icon-arrows-left-and-right-light.js +24 -14
  62. package/dist/generated/mistica-icons/icon-arrows-left-and-right-regular.js +26 -16
  63. package/dist/generated/mistica-icons/icon-authentication-success-filled.js +31 -11
  64. package/dist/generated/mistica-icons/icon-authentication-success-light.js +33 -17
  65. package/dist/generated/mistica-icons/icon-authentication-success-regular.js +29 -13
  66. package/dist/generated/mistica-icons/icon-blog-filled.js +36 -16
  67. package/dist/generated/mistica-icons/icon-blog-light.js +34 -14
  68. package/dist/generated/mistica-icons/icon-blog-regular.js +32 -16
  69. package/dist/generated/mistica-icons/icon-book-filled.js +19 -9
  70. package/dist/generated/mistica-icons/icon-book-light.js +25 -15
  71. package/dist/generated/mistica-icons/icon-book-regular.js +16 -6
  72. package/dist/generated/mistica-icons/icon-box-filled.js +35 -19
  73. package/dist/generated/mistica-icons/icon-box-light.js +28 -18
  74. package/dist/generated/mistica-icons/icon-box-regular.js +26 -16
  75. package/dist/generated/mistica-icons/icon-box-star-filled.js +37 -17
  76. package/dist/generated/mistica-icons/icon-box-star-light.js +22 -6
  77. package/dist/generated/mistica-icons/icon-box-star-regular.js +30 -14
  78. package/dist/generated/mistica-icons/icon-briefcase-filled.js +28 -12
  79. package/dist/generated/mistica-icons/icon-briefcase-light.js +21 -11
  80. package/dist/generated/mistica-icons/icon-briefcase-regular.js +29 -19
  81. package/dist/generated/mistica-icons/icon-calendar-event-filled.js +23 -12
  82. package/dist/generated/mistica-icons/icon-calendar-event-light.js +28 -11
  83. package/dist/generated/mistica-icons/icon-calendar-event-regular.js +30 -13
  84. package/dist/generated/mistica-icons/icon-calendar-filled.js +32 -22
  85. package/dist/generated/mistica-icons/icon-calendar-light.js +39 -23
  86. package/dist/generated/mistica-icons/icon-calendar-month-filled.js +23 -12
  87. package/dist/generated/mistica-icons/icon-calendar-month-light.js +30 -13
  88. package/dist/generated/mistica-icons/icon-calendar-month-regular.js +30 -13
  89. package/dist/generated/mistica-icons/icon-calendar-regular.js +33 -17
  90. package/dist/generated/mistica-icons/icon-car-filled.js +25 -9
  91. package/dist/generated/mistica-icons/icon-car-light.js +24 -14
  92. package/dist/generated/mistica-icons/icon-car-regular.js +24 -14
  93. package/dist/generated/mistica-icons/icon-care-briefcase-filled.js +23 -12
  94. package/dist/generated/mistica-icons/icon-care-briefcase-light.js +25 -14
  95. package/dist/generated/mistica-icons/icon-care-briefcase-regular.js +18 -8
  96. package/dist/generated/mistica-icons/icon-care-filled.js +25 -15
  97. package/dist/generated/mistica-icons/icon-care-home-filled.js +24 -13
  98. package/dist/generated/mistica-icons/icon-care-home-light.js +24 -13
  99. package/dist/generated/mistica-icons/icon-care-home-regular.js +26 -16
  100. package/dist/generated/mistica-icons/icon-care-laptop-filled.js +22 -11
  101. package/dist/generated/mistica-icons/icon-care-laptop-light.js +24 -13
  102. package/dist/generated/mistica-icons/icon-care-laptop-regular.js +28 -18
  103. package/dist/generated/mistica-icons/icon-care-light.js +22 -12
  104. package/dist/generated/mistica-icons/icon-care-mobile-filled.js +22 -11
  105. package/dist/generated/mistica-icons/icon-care-mobile-light.js +29 -12
  106. package/dist/generated/mistica-icons/icon-care-mobile-regular.js +33 -17
  107. package/dist/generated/mistica-icons/icon-care-regular.js +23 -13
  108. package/dist/generated/mistica-icons/icon-care-shield-filled.js +24 -14
  109. package/dist/generated/mistica-icons/icon-care-shield-light.js +23 -13
  110. package/dist/generated/mistica-icons/icon-care-shield-regular.js +26 -16
  111. package/dist/generated/mistica-icons/icon-change-plan-filled.js +36 -16
  112. package/dist/generated/mistica-icons/icon-change-plan-light.js +38 -18
  113. package/dist/generated/mistica-icons/icon-change-plan-regular.js +30 -14
  114. package/dist/generated/mistica-icons/icon-chip-device-filled.js +32 -16
  115. package/dist/generated/mistica-icons/icon-chip-device-light.js +33 -17
  116. package/dist/generated/mistica-icons/icon-chip-device-regular.js +36 -20
  117. package/dist/generated/mistica-icons/icon-chip-sim-card-filled.js +25 -15
  118. package/dist/generated/mistica-icons/icon-chip-sim-card-light.js +36 -20
  119. package/dist/generated/mistica-icons/icon-chip-sim-card-regular.js +42 -26
  120. package/dist/generated/mistica-icons/icon-credit-card-filled.js +20 -10
  121. package/dist/generated/mistica-icons/icon-credit-card-light.js +18 -8
  122. package/dist/generated/mistica-icons/icon-credit-card-regular.js +23 -13
  123. package/dist/generated/mistica-icons/icon-document-information-filled.d.ts +3 -0
  124. package/dist/generated/mistica-icons/icon-document-information-light.d.ts +3 -0
  125. package/dist/generated/mistica-icons/icon-document-information-regular.d.ts +3 -0
  126. package/dist/generated/mistica-icons/icon-document-other-filled.js +25 -9
  127. package/dist/generated/mistica-icons/icon-document-other-light.js +33 -17
  128. package/dist/generated/mistica-icons/icon-document-other-regular.js +25 -9
  129. package/dist/generated/mistica-icons/icon-dollar-symbol-circle-filled.js +25 -15
  130. package/dist/generated/mistica-icons/icon-dollar-symbol-circle-light.js +30 -14
  131. package/dist/generated/mistica-icons/icon-dollar-symbol-circle-regular.js +29 -13
  132. package/dist/generated/mistica-icons/icon-error-filled.js +33 -17
  133. package/dist/generated/mistica-icons/icon-error-light.js +29 -13
  134. package/dist/generated/mistica-icons/icon-error-regular.js +32 -16
  135. package/dist/generated/mistica-icons/icon-esim-filled.js +33 -17
  136. package/dist/generated/mistica-icons/icon-esim-light.js +43 -23
  137. package/dist/generated/mistica-icons/icon-esim-regular.js +29 -9
  138. package/dist/generated/mistica-icons/icon-eye-filled.js +18 -8
  139. package/dist/generated/mistica-icons/icon-eye-light.js +31 -15
  140. package/dist/generated/mistica-icons/icon-eye-regular.js +29 -13
  141. package/dist/generated/mistica-icons/icon-file-ok-filled.js +30 -14
  142. package/dist/generated/mistica-icons/icon-file-ok-light.js +29 -13
  143. package/dist/generated/mistica-icons/icon-file-ok-regular.js +31 -15
  144. package/dist/generated/mistica-icons/icon-fingerprint-filled.js +36 -15
  145. package/dist/generated/mistica-icons/icon-fingerprint-light.js +35 -14
  146. package/dist/generated/mistica-icons/icon-fingerprint-regular.js +29 -9
  147. package/dist/generated/mistica-icons/icon-home-filled.js +17 -7
  148. package/dist/generated/mistica-icons/icon-home-light.js +21 -11
  149. package/dist/generated/mistica-icons/icon-home-regular.js +29 -19
  150. package/dist/generated/mistica-icons/icon-home-wifi-filled.js +39 -19
  151. package/dist/generated/mistica-icons/icon-home-wifi-light.js +30 -14
  152. package/dist/generated/mistica-icons/icon-home-wifi-regular.js +37 -17
  153. package/dist/generated/mistica-icons/icon-id-card-filled.js +32 -16
  154. package/dist/generated/mistica-icons/icon-id-card-light.js +27 -11
  155. package/dist/generated/mistica-icons/icon-id-card-regular.js +31 -15
  156. package/dist/generated/mistica-icons/icon-information-user-filled.js +32 -12
  157. package/dist/generated/mistica-icons/icon-information-user-light.js +37 -21
  158. package/dist/generated/mistica-icons/icon-information-user-regular.js +44 -28
  159. package/dist/generated/mistica-icons/icon-internet-filled.js +18 -8
  160. package/dist/generated/mistica-icons/icon-internet-light.js +21 -11
  161. package/dist/generated/mistica-icons/icon-internet-regular.js +19 -9
  162. package/dist/generated/mistica-icons/icon-internet-roaming-filled.d.ts +3 -0
  163. package/dist/generated/mistica-icons/icon-internet-roaming-light.d.ts +3 -0
  164. package/dist/generated/mistica-icons/icon-internet-roaming-regular.d.ts +3 -0
  165. package/dist/generated/mistica-icons/icon-key-filled.js +21 -11
  166. package/dist/generated/mistica-icons/icon-key-light.js +31 -15
  167. package/dist/generated/mistica-icons/icon-key-regular.js +32 -16
  168. package/dist/generated/mistica-icons/icon-list-filled.js +23 -12
  169. package/dist/generated/mistica-icons/icon-list-light.js +31 -15
  170. package/dist/generated/mistica-icons/icon-list-regular.js +34 -18
  171. package/dist/generated/mistica-icons/icon-location-filled.js +25 -15
  172. package/dist/generated/mistica-icons/icon-location-light.js +30 -14
  173. package/dist/generated/mistica-icons/icon-location-regular.js +30 -14
  174. package/dist/generated/mistica-icons/icon-lock-closed-filled.js +25 -15
  175. package/dist/generated/mistica-icons/icon-lock-closed-light.js +31 -15
  176. package/dist/generated/mistica-icons/icon-lock-closed-regular.js +35 -19
  177. package/dist/generated/mistica-icons/icon-message-filled.js +23 -12
  178. package/dist/generated/mistica-icons/icon-message-light.js +28 -11
  179. package/dist/generated/mistica-icons/icon-message-regular.js +27 -10
  180. package/dist/generated/mistica-icons/icon-mobile-device-filled.js +25 -15
  181. package/dist/generated/mistica-icons/icon-mobile-device-light.js +26 -10
  182. package/dist/generated/mistica-icons/icon-mobile-device-regular.js +32 -16
  183. package/dist/generated/mistica-icons/icon-mobile-information-filled.d.ts +3 -0
  184. package/dist/generated/mistica-icons/icon-mobile-information-light.d.ts +3 -0
  185. package/dist/generated/mistica-icons/icon-mobile-information-regular.d.ts +3 -0
  186. package/dist/generated/mistica-icons/icon-panel-collapse-regular.js +165 -0
  187. package/dist/generated/mistica-icons/icon-panel-expand-regular.js +159 -0
  188. package/dist/generated/mistica-icons/icons-keywords.js +57 -0
  189. package/dist/grid-layout.css-mistica.js +3 -3
  190. package/dist/grid.css-mistica.js +120 -120
  191. package/dist/header.css-mistica.js +1 -1
  192. package/dist/header.d.ts +3 -1
  193. package/dist/header.js +81 -73
  194. package/dist/hero.css-mistica.js +4 -4
  195. package/dist/horizontal-scroll.css-mistica.js +1 -1
  196. package/dist/icon-button.css-mistica.js +53 -53
  197. package/dist/icons/icon-chevron.css-mistica.js +2 -2
  198. package/dist/icons/icon-error.css-mistica.js +1 -1
  199. package/dist/image.css-mistica.js +6 -6
  200. package/dist/index.d.ts +6 -0
  201. package/dist/index.js +14 -1
  202. package/dist/inline.css-mistica.js +11 -11
  203. package/dist/list.css-mistica.js +40 -28
  204. package/dist/list.css.d.ts +2 -0
  205. package/dist/list.d.ts +3 -1
  206. package/dist/list.js +176 -165
  207. package/dist/loading-bar.css-mistica.js +1 -1
  208. package/dist/loading-screen.css-mistica.js +12 -12
  209. package/dist/logo.css-mistica.js +5 -5
  210. package/dist/menu.css-mistica.js +13 -13
  211. package/dist/mobile-navigation-menu.d.ts +26 -0
  212. package/dist/mobile-navigation-menu.js +145 -0
  213. package/dist/mosaic.css-mistica.js +1 -1
  214. package/dist/navigation-bar.css-mistica.js +31 -97
  215. package/dist/navigation-bar.css.d.ts +0 -24
  216. package/dist/navigation-bar.d.ts +3 -38
  217. package/dist/navigation-bar.js +399 -586
  218. package/dist/navigation-breadcrumbs.css-mistica.js +1 -1
  219. package/dist/navigation-shared.css-mistica.js +79 -0
  220. package/dist/navigation-shared.css.d.ts +26 -0
  221. package/dist/navigation-shared.d.ts +66 -0
  222. package/dist/navigation-shared.js +264 -0
  223. package/dist/package-version.js +1 -1
  224. package/dist/pagination.css-mistica.js +22 -22
  225. package/dist/pin-field.css-mistica.js +4 -4
  226. package/dist/popover.css-mistica.js +1 -1
  227. package/dist/portal.d.ts +1 -1
  228. package/dist/progress-bar.css-mistica.js +7 -7
  229. package/dist/radio-button.css-mistica.js +27 -27
  230. package/dist/rating.css-mistica.js +4 -4
  231. package/dist/responsive-layout.css-mistica.js +6 -6
  232. package/dist/screen-reader-only.css-mistica.js +1 -1
  233. package/dist/select.css-mistica.js +21 -21
  234. package/dist/sheet-action-row.css-mistica.js +1 -1
  235. package/dist/sheet-common.css-mistica.js +7 -7
  236. package/dist/sheet-info.css-mistica.js +1 -1
  237. package/dist/sidenav-bar-context.d.ts +25 -0
  238. package/dist/sidenav-bar-context.js +72 -0
  239. package/dist/sidenav-bar-data.d.ts +15 -0
  240. package/dist/sidenav-bar-data.js +38 -0
  241. package/dist/sidenav-bar-first-level-item.d.ts +42 -0
  242. package/dist/sidenav-bar-first-level-item.js +174 -0
  243. package/dist/sidenav-bar-keyboard.d.ts +13 -0
  244. package/dist/sidenav-bar-keyboard.js +314 -0
  245. package/dist/sidenav-bar-layout.css-mistica.js +28 -0
  246. package/dist/sidenav-bar-layout.css.d.ts +5 -0
  247. package/dist/sidenav-bar-layout.d.ts +22 -0
  248. package/dist/sidenav-bar-layout.js +103 -0
  249. package/dist/sidenav-bar-mobile.d.ts +24 -0
  250. package/dist/sidenav-bar-mobile.js +332 -0
  251. package/dist/sidenav-bar-motion.d.ts +32 -0
  252. package/dist/sidenav-bar-motion.js +84 -0
  253. package/dist/sidenav-bar-panel.d.ts +31 -0
  254. package/dist/sidenav-bar-panel.js +208 -0
  255. package/dist/sidenav-bar-row.d.ts +82 -0
  256. package/dist/sidenav-bar-row.js +230 -0
  257. package/dist/sidenav-bar-second-level-item.d.ts +43 -0
  258. package/dist/sidenav-bar-second-level-item.js +89 -0
  259. package/dist/sidenav-bar-section.d.ts +23 -0
  260. package/dist/sidenav-bar-section.js +167 -0
  261. package/dist/sidenav-bar-types.d.ts +192 -0
  262. package/dist/sidenav-bar-types.js +11 -0
  263. package/dist/sidenav-bar.css-mistica.js +325 -0
  264. package/dist/sidenav-bar.css.d.ts +93 -0
  265. package/dist/sidenav-bar.d.ts +102 -0
  266. package/dist/sidenav-bar.js +492 -0
  267. package/dist/skeletons.css-mistica.js +8 -8
  268. package/dist/skins/blau.js +23 -8
  269. package/dist/skins/defaults.js +11 -0
  270. package/dist/skins/esimflag.js +24 -9
  271. package/dist/skins/movistar.js +24 -9
  272. package/dist/skins/o2.js +24 -9
  273. package/dist/skins/skin-contract.css-mistica.js +740 -731
  274. package/dist/skins/skin-contract.css.d.ts +9 -0
  275. package/dist/skins/telefonica.js +24 -9
  276. package/dist/skins/types/colors.d.ts +2 -0
  277. package/dist/skins/types/index.d.ts +1 -0
  278. package/dist/skins/vivo-evolution.js +25 -10
  279. package/dist/skins/vivo.js +24 -9
  280. package/dist/skip-link.css-mistica.js +2 -2
  281. package/dist/slider.css-mistica.js +24 -24
  282. package/dist/snackbar.css-mistica.js +14 -14
  283. package/dist/spinner.css-mistica.js +1 -1
  284. package/dist/square.css-mistica.js +1 -1
  285. package/dist/stack.css-mistica.js +5 -5
  286. package/dist/stacking-group.css-mistica.js +1 -1
  287. package/dist/stepper.css-mistica.js +9 -9
  288. package/dist/switch-component.css-mistica.js +48 -42
  289. package/dist/switch-component.css.d.ts +2 -0
  290. package/dist/switch-component.js +18 -18
  291. package/dist/table.css-mistica.js +9 -9
  292. package/dist/tabs.css-mistica.js +22 -22
  293. package/dist/tag.css-mistica.js +3 -3
  294. package/dist/text-field-base.css-mistica.js +20 -20
  295. package/dist/text-field-components.css-mistica.js +10 -10
  296. package/dist/text-link.css-mistica.js +6 -6
  297. package/dist/text-tokens.d.ts +6 -0
  298. package/dist/text-tokens.js +157 -133
  299. package/dist/text.css-mistica.js +6 -6
  300. package/dist/timeline.css-mistica.js +11 -11
  301. package/dist/timer.css-mistica.js +6 -6
  302. package/dist/tooltip.css-mistica.js +2 -2
  303. package/dist/touchable.css-mistica.js +4 -4
  304. package/dist/utils/aspect-ratio-support.css-mistica.js +2 -2
  305. package/dist/video.css-mistica.js +1 -1
  306. package/dist/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +1 -1
  307. package/dist-es/accordion.css-mistica.js +7 -7
  308. package/dist-es/align.css-mistica.js +1 -1
  309. package/dist-es/autocomplete.css-mistica.js +2 -2
  310. package/dist-es/avatar.css-mistica.js +1 -1
  311. package/dist-es/badge.css-mistica.js +1 -1
  312. package/dist-es/box.css-mistica.js +13 -13
  313. package/dist-es/boxed.css-mistica.js +23 -23
  314. package/dist-es/boxed.js +25 -25
  315. package/dist-es/button-group.css-mistica.js +1 -1
  316. package/dist-es/button-layout.css-mistica.js +16 -16
  317. package/dist-es/button.css-mistica.js +38 -38
  318. package/dist-es/callout.css-mistica.js +12 -12
  319. package/dist-es/card-internal.css-mistica.js +17 -17
  320. package/dist-es/carousel.css-mistica.js +10 -10
  321. package/dist-es/checkbox.css-mistica.js +13 -13
  322. package/dist-es/chip.css-mistica.js +17 -17
  323. package/dist-es/circle.css-mistica.js +2 -2
  324. package/dist-es/community/advanced-data-card.css-mistica.js +7 -7
  325. package/dist-es/community/ai-card.css-mistica.js +4 -4
  326. package/dist-es/community/blocks.css-mistica.js +1 -1
  327. package/dist-es/community/cyber/example-component.css-mistica.js +1 -1
  328. package/dist-es/community/example-component.css-mistica.js +1 -1
  329. package/dist-es/community/skins/cyber-skin.js +19 -17
  330. package/dist-es/counter.css-mistica.js +2 -2
  331. package/dist-es/cover-hero.css-mistica.js +4 -4
  332. package/dist-es/credit-card-number-field.css-mistica.js +3 -3
  333. package/dist-es/date-field.css-mistica.js +1 -1
  334. package/dist-es/date-time-picker.css-mistica.js +1 -1
  335. package/dist-es/dialog.css-mistica.js +5 -5
  336. package/dist-es/divider.css-mistica.js +5 -5
  337. package/dist-es/double-field.css-mistica.js +2 -2
  338. package/dist-es/drawer.css-mistica.js +2 -2
  339. package/dist-es/empty-state-card.css-mistica.js +1 -1
  340. package/dist-es/empty-state.css-mistica.js +7 -7
  341. package/dist-es/fade-in.css-mistica.js +1 -1
  342. package/dist-es/fade-out.css-mistica.js +2 -0
  343. package/dist-es/fade-out.js +79 -0
  344. package/dist-es/feedback.css-mistica.js +2 -2
  345. package/dist-es/file-upload.css-mistica.js +8 -8
  346. package/dist-es/fixed-footer-layout.css-mistica.js +3 -3
  347. package/dist-es/form.css-mistica.js +1 -1
  348. package/dist-es/generated/mistica-icons/icon-antenna-filled.js +50 -22
  349. package/dist-es/generated/mistica-icons/icon-antenna-light.js +47 -27
  350. package/dist-es/generated/mistica-icons/icon-antenna-regular.js +52 -24
  351. package/dist-es/generated/mistica-icons/icon-arrow-up-down-filled.js +29 -19
  352. package/dist-es/generated/mistica-icons/icon-arrow-up-down-light.js +26 -16
  353. package/dist-es/generated/mistica-icons/icon-arrow-up-down-regular.js +34 -24
  354. package/dist-es/generated/mistica-icons/icon-arrows-left-and-right-filled.js +30 -20
  355. package/dist-es/generated/mistica-icons/icon-arrows-left-and-right-light.js +32 -22
  356. package/dist-es/generated/mistica-icons/icon-arrows-left-and-right-regular.js +34 -24
  357. package/dist-es/generated/mistica-icons/icon-authentication-success-filled.js +42 -22
  358. package/dist-es/generated/mistica-icons/icon-authentication-success-light.js +44 -28
  359. package/dist-es/generated/mistica-icons/icon-authentication-success-regular.js +42 -26
  360. package/dist-es/generated/mistica-icons/icon-blog-filled.js +44 -24
  361. package/dist-es/generated/mistica-icons/icon-blog-light.js +45 -25
  362. package/dist-es/generated/mistica-icons/icon-blog-regular.js +45 -29
  363. package/dist-es/generated/mistica-icons/icon-book-filled.js +23 -13
  364. package/dist-es/generated/mistica-icons/icon-book-light.js +33 -23
  365. package/dist-es/generated/mistica-icons/icon-book-regular.js +22 -12
  366. package/dist-es/generated/mistica-icons/icon-box-filled.js +38 -22
  367. package/dist-es/generated/mistica-icons/icon-box-light.js +38 -28
  368. package/dist-es/generated/mistica-icons/icon-box-regular.js +37 -27
  369. package/dist-es/generated/mistica-icons/icon-box-star-filled.js +49 -29
  370. package/dist-es/generated/mistica-icons/icon-box-star-light.js +29 -13
  371. package/dist-es/generated/mistica-icons/icon-box-star-regular.js +33 -17
  372. package/dist-es/generated/mistica-icons/icon-briefcase-filled.js +32 -16
  373. package/dist-es/generated/mistica-icons/icon-briefcase-light.js +24 -14
  374. package/dist-es/generated/mistica-icons/icon-briefcase-regular.js +32 -22
  375. package/dist-es/generated/mistica-icons/icon-calendar-event-filled.js +28 -17
  376. package/dist-es/generated/mistica-icons/icon-calendar-event-light.js +34 -17
  377. package/dist-es/generated/mistica-icons/icon-calendar-event-regular.js +36 -19
  378. package/dist-es/generated/mistica-icons/icon-calendar-filled.js +42 -32
  379. package/dist-es/generated/mistica-icons/icon-calendar-light.js +45 -29
  380. package/dist-es/generated/mistica-icons/icon-calendar-month-filled.js +31 -20
  381. package/dist-es/generated/mistica-icons/icon-calendar-month-light.js +38 -21
  382. package/dist-es/generated/mistica-icons/icon-calendar-month-regular.js +38 -21
  383. package/dist-es/generated/mistica-icons/icon-calendar-regular.js +45 -29
  384. package/dist-es/generated/mistica-icons/icon-car-filled.js +26 -10
  385. package/dist-es/generated/mistica-icons/icon-car-light.js +33 -23
  386. package/dist-es/generated/mistica-icons/icon-car-regular.js +29 -19
  387. package/dist-es/generated/mistica-icons/icon-care-briefcase-filled.js +30 -19
  388. package/dist-es/generated/mistica-icons/icon-care-briefcase-light.js +28 -17
  389. package/dist-es/generated/mistica-icons/icon-care-briefcase-regular.js +24 -14
  390. package/dist-es/generated/mistica-icons/icon-care-filled.js +29 -19
  391. package/dist-es/generated/mistica-icons/icon-care-home-filled.js +32 -21
  392. package/dist-es/generated/mistica-icons/icon-care-home-light.js +31 -20
  393. package/dist-es/generated/mistica-icons/icon-care-home-regular.js +40 -30
  394. package/dist-es/generated/mistica-icons/icon-care-laptop-filled.js +29 -18
  395. package/dist-es/generated/mistica-icons/icon-care-laptop-light.js +31 -20
  396. package/dist-es/generated/mistica-icons/icon-care-laptop-regular.js +33 -23
  397. package/dist-es/generated/mistica-icons/icon-care-light.js +24 -14
  398. package/dist-es/generated/mistica-icons/icon-care-mobile-filled.js +30 -19
  399. package/dist-es/generated/mistica-icons/icon-care-mobile-light.js +35 -18
  400. package/dist-es/generated/mistica-icons/icon-care-mobile-regular.js +50 -34
  401. package/dist-es/generated/mistica-icons/icon-care-regular.js +38 -28
  402. package/dist-es/generated/mistica-icons/icon-care-shield-filled.js +33 -23
  403. package/dist-es/generated/mistica-icons/icon-care-shield-light.js +27 -17
  404. package/dist-es/generated/mistica-icons/icon-care-shield-regular.js +33 -23
  405. package/dist-es/generated/mistica-icons/icon-change-plan-filled.js +41 -21
  406. package/dist-es/generated/mistica-icons/icon-change-plan-light.js +42 -22
  407. package/dist-es/generated/mistica-icons/icon-change-plan-regular.js +35 -19
  408. package/dist-es/generated/mistica-icons/icon-chip-device-filled.js +37 -21
  409. package/dist-es/generated/mistica-icons/icon-chip-device-light.js +46 -30
  410. package/dist-es/generated/mistica-icons/icon-chip-device-regular.js +48 -32
  411. package/dist-es/generated/mistica-icons/icon-chip-sim-card-filled.js +26 -16
  412. package/dist-es/generated/mistica-icons/icon-chip-sim-card-light.js +43 -27
  413. package/dist-es/generated/mistica-icons/icon-chip-sim-card-regular.js +59 -43
  414. package/dist-es/generated/mistica-icons/icon-credit-card-filled.js +24 -14
  415. package/dist-es/generated/mistica-icons/icon-credit-card-light.js +19 -9
  416. package/dist-es/generated/mistica-icons/icon-credit-card-regular.js +26 -16
  417. package/dist-es/generated/mistica-icons/icon-document-other-filled.js +31 -15
  418. package/dist-es/generated/mistica-icons/icon-document-other-light.js +42 -26
  419. package/dist-es/generated/mistica-icons/icon-document-other-regular.js +32 -16
  420. package/dist-es/generated/mistica-icons/icon-dollar-symbol-circle-filled.js +28 -18
  421. package/dist-es/generated/mistica-icons/icon-dollar-symbol-circle-light.js +41 -25
  422. package/dist-es/generated/mistica-icons/icon-dollar-symbol-circle-regular.js +42 -26
  423. package/dist-es/generated/mistica-icons/icon-error-filled.js +44 -28
  424. package/dist-es/generated/mistica-icons/icon-error-light.js +37 -21
  425. package/dist-es/generated/mistica-icons/icon-error-regular.js +40 -24
  426. package/dist-es/generated/mistica-icons/icon-esim-filled.js +48 -32
  427. package/dist-es/generated/mistica-icons/icon-esim-light.js +58 -38
  428. package/dist-es/generated/mistica-icons/icon-esim-regular.js +35 -15
  429. package/dist-es/generated/mistica-icons/icon-eye-filled.js +24 -14
  430. package/dist-es/generated/mistica-icons/icon-eye-light.js +43 -27
  431. package/dist-es/generated/mistica-icons/icon-eye-regular.js +33 -17
  432. package/dist-es/generated/mistica-icons/icon-file-ok-filled.js +41 -25
  433. package/dist-es/generated/mistica-icons/icon-file-ok-light.js +37 -21
  434. package/dist-es/generated/mistica-icons/icon-file-ok-regular.js +41 -25
  435. package/dist-es/generated/mistica-icons/icon-fingerprint-filled.js +45 -24
  436. package/dist-es/generated/mistica-icons/icon-fingerprint-light.js +39 -18
  437. package/dist-es/generated/mistica-icons/icon-fingerprint-regular.js +32 -12
  438. package/dist-es/generated/mistica-icons/icon-home-filled.js +19 -9
  439. package/dist-es/generated/mistica-icons/icon-home-light.js +24 -14
  440. package/dist-es/generated/mistica-icons/icon-home-regular.js +30 -20
  441. package/dist-es/generated/mistica-icons/icon-home-wifi-filled.js +51 -31
  442. package/dist-es/generated/mistica-icons/icon-home-wifi-light.js +36 -20
  443. package/dist-es/generated/mistica-icons/icon-home-wifi-regular.js +51 -31
  444. package/dist-es/generated/mistica-icons/icon-id-card-filled.js +40 -24
  445. package/dist-es/generated/mistica-icons/icon-id-card-light.js +38 -22
  446. package/dist-es/generated/mistica-icons/icon-id-card-regular.js +42 -26
  447. package/dist-es/generated/mistica-icons/icon-information-user-filled.js +36 -16
  448. package/dist-es/generated/mistica-icons/icon-information-user-light.js +51 -35
  449. package/dist-es/generated/mistica-icons/icon-information-user-regular.js +58 -42
  450. package/dist-es/generated/mistica-icons/icon-internet-filled.js +22 -12
  451. package/dist-es/generated/mistica-icons/icon-internet-light.js +25 -15
  452. package/dist-es/generated/mistica-icons/icon-internet-regular.js +22 -12
  453. package/dist-es/generated/mistica-icons/icon-key-filled.js +23 -13
  454. package/dist-es/generated/mistica-icons/icon-key-light.js +40 -24
  455. package/dist-es/generated/mistica-icons/icon-key-regular.js +40 -24
  456. package/dist-es/generated/mistica-icons/icon-list-filled.js +29 -18
  457. package/dist-es/generated/mistica-icons/icon-list-light.js +38 -22
  458. package/dist-es/generated/mistica-icons/icon-list-regular.js +42 -26
  459. package/dist-es/generated/mistica-icons/icon-location-filled.js +29 -19
  460. package/dist-es/generated/mistica-icons/icon-location-light.js +37 -21
  461. package/dist-es/generated/mistica-icons/icon-location-regular.js +37 -21
  462. package/dist-es/generated/mistica-icons/icon-lock-closed-filled.js +28 -18
  463. package/dist-es/generated/mistica-icons/icon-lock-closed-light.js +35 -19
  464. package/dist-es/generated/mistica-icons/icon-lock-closed-regular.js +40 -24
  465. package/dist-es/generated/mistica-icons/icon-message-filled.js +29 -18
  466. package/dist-es/generated/mistica-icons/icon-message-light.js +36 -19
  467. package/dist-es/generated/mistica-icons/icon-message-regular.js +35 -18
  468. package/dist-es/generated/mistica-icons/icon-mobile-device-filled.js +30 -20
  469. package/dist-es/generated/mistica-icons/icon-mobile-device-light.js +34 -18
  470. package/dist-es/generated/mistica-icons/icon-mobile-device-regular.js +37 -21
  471. package/dist-es/generated/mistica-icons/icon-panel-collapse-regular.js +115 -0
  472. package/dist-es/generated/mistica-icons/icon-panel-expand-regular.js +109 -0
  473. package/dist-es/generated/mistica-icons/icons-keywords.js +57 -0
  474. package/dist-es/grid-layout.css-mistica.js +3 -3
  475. package/dist-es/grid.css-mistica.js +120 -120
  476. package/dist-es/header.css-mistica.js +1 -1
  477. package/dist-es/header.js +113 -105
  478. package/dist-es/hero.css-mistica.js +3 -3
  479. package/dist-es/horizontal-scroll.css-mistica.js +1 -1
  480. package/dist-es/icon-button.css-mistica.js +53 -53
  481. package/dist-es/icons/icon-chevron.css-mistica.js +2 -2
  482. package/dist-es/icons/icon-error.css-mistica.js +1 -1
  483. package/dist-es/image.css-mistica.js +4 -4
  484. package/dist-es/index.js +2349 -2345
  485. package/dist-es/inline.css-mistica.js +11 -11
  486. package/dist-es/list.css-mistica.js +8 -2
  487. package/dist-es/list.js +275 -264
  488. package/dist-es/loading-bar.css-mistica.js +1 -1
  489. package/dist-es/loading-screen.css-mistica.js +5 -5
  490. package/dist-es/logo.css-mistica.js +5 -5
  491. package/dist-es/menu.css-mistica.js +13 -13
  492. package/dist-es/mobile-navigation-menu.js +90 -0
  493. package/dist-es/mosaic.css-mistica.js +1 -1
  494. package/dist-es/navigation-bar.css-mistica.js +11 -20
  495. package/dist-es/navigation-bar.js +469 -656
  496. package/dist-es/navigation-breadcrumbs.css-mistica.js +1 -1
  497. package/dist-es/navigation-shared.css-mistica.js +11 -0
  498. package/dist-es/navigation-shared.js +192 -0
  499. package/dist-es/package-version.js +1 -1
  500. package/dist-es/pagination.css-mistica.js +19 -19
  501. package/dist-es/pin-field.css-mistica.js +2 -2
  502. package/dist-es/popover.css-mistica.js +1 -1
  503. package/dist-es/progress-bar.css-mistica.js +7 -7
  504. package/dist-es/radio-button.css-mistica.js +22 -22
  505. package/dist-es/rating.css-mistica.js +3 -3
  506. package/dist-es/responsive-layout.css-mistica.js +6 -6
  507. package/dist-es/screen-reader-only.css-mistica.js +1 -1
  508. package/dist-es/select.css-mistica.js +18 -18
  509. package/dist-es/sheet-action-row.css-mistica.js +1 -1
  510. package/dist-es/sheet-common.css-mistica.js +2 -2
  511. package/dist-es/sheet-info.css-mistica.js +1 -1
  512. package/dist-es/sidenav-bar-context.js +14 -0
  513. package/dist-es/sidenav-bar-data.js +12 -0
  514. package/dist-es/sidenav-bar-first-level-item.js +124 -0
  515. package/dist-es/sidenav-bar-keyboard.js +253 -0
  516. package/dist-es/sidenav-bar-layout.css-mistica.js +2 -0
  517. package/dist-es/sidenav-bar-layout.js +86 -0
  518. package/dist-es/sidenav-bar-mobile.js +277 -0
  519. package/dist-es/sidenav-bar-motion.js +26 -0
  520. package/dist-es/sidenav-bar-panel.js +146 -0
  521. package/dist-es/sidenav-bar-row.js +208 -0
  522. package/dist-es/sidenav-bar-second-level-item.js +72 -0
  523. package/dist-es/sidenav-bar-section.js +112 -0
  524. package/dist-es/sidenav-bar-types.js +2 -0
  525. package/dist-es/sidenav-bar.css-mistica.js +74 -0
  526. package/dist-es/sidenav-bar.js +429 -0
  527. package/dist-es/skeletons.css-mistica.js +7 -7
  528. package/dist-es/skins/blau.js +23 -8
  529. package/dist-es/skins/defaults.js +11 -0
  530. package/dist-es/skins/esimflag.js +24 -9
  531. package/dist-es/skins/movistar.js +24 -9
  532. package/dist-es/skins/o2.js +24 -9
  533. package/dist-es/skins/skin-contract.css-mistica.js +740 -731
  534. package/dist-es/skins/telefonica.js +24 -9
  535. package/dist-es/skins/vivo-evolution.js +25 -10
  536. package/dist-es/skins/vivo.js +24 -9
  537. package/dist-es/skip-link.css-mistica.js +2 -2
  538. package/dist-es/slider.css-mistica.js +20 -20
  539. package/dist-es/snackbar.css-mistica.js +5 -5
  540. package/dist-es/spinner.css-mistica.js +1 -1
  541. package/dist-es/square.css-mistica.js +1 -1
  542. package/dist-es/stack.css-mistica.js +5 -5
  543. package/dist-es/stacking-group.css-mistica.js +1 -1
  544. package/dist-es/stepper.css-mistica.js +3 -3
  545. package/dist-es/style.css +1 -1
  546. package/dist-es/switch-component.css-mistica.js +37 -37
  547. package/dist-es/switch-component.js +26 -26
  548. package/dist-es/table.css-mistica.js +9 -9
  549. package/dist-es/tabs.css-mistica.js +19 -19
  550. package/dist-es/tag.css-mistica.js +2 -2
  551. package/dist-es/text-field-base.css-mistica.js +17 -17
  552. package/dist-es/text-field-components.css-mistica.js +4 -4
  553. package/dist-es/text-link.css-mistica.js +6 -6
  554. package/dist-es/text-tokens.js +82 -67
  555. package/dist-es/text.css-mistica.js +6 -6
  556. package/dist-es/timeline.css-mistica.js +10 -10
  557. package/dist-es/timer.css-mistica.js +6 -6
  558. package/dist-es/tooltip.css-mistica.js +2 -2
  559. package/dist-es/touchable.css-mistica.js +2 -2
  560. package/dist-es/utils/aspect-ratio-support.css-mistica.js +2 -2
  561. package/dist-es/video.css-mistica.js +1 -1
  562. package/dist-es/vivinho-loading-animation/vivinho-loading-animation.css-mistica.js +1 -1
  563. package/package.json +2 -1
  564. package/src/boxed.css.ts +1 -0
  565. package/src/boxed.tsx +18 -5
  566. package/src/callout.css.ts +4 -2
  567. package/src/community/skins/cyber-skin.tsx +19 -16
  568. package/src/fade-out.css.ts +12 -0
  569. package/src/fade-out.tsx +50 -0
  570. package/src/header.tsx +39 -17
  571. package/src/index.tsx +15 -0
  572. package/src/list.css.ts +36 -1
  573. package/src/list.tsx +370 -344
  574. package/src/mobile-navigation-menu.tsx +168 -0
  575. package/src/navigation-bar.css.ts +2 -267
  576. package/src/navigation-bar.tsx +77 -370
  577. package/src/navigation-shared.css.ts +289 -0
  578. package/src/navigation-shared.tsx +262 -0
  579. package/src/package-version.tsx +1 -1
  580. package/src/portal.tsx +1 -1
  581. package/src/sidenav-bar-context.tsx +41 -0
  582. package/src/sidenav-bar-data.ts +49 -0
  583. package/src/sidenav-bar-first-level-item.tsx +203 -0
  584. package/src/sidenav-bar-keyboard.tsx +393 -0
  585. package/src/sidenav-bar-layout.css.ts +89 -0
  586. package/src/sidenav-bar-layout.tsx +61 -0
  587. package/src/sidenav-bar-mobile.tsx +302 -0
  588. package/src/sidenav-bar-motion.tsx +70 -0
  589. package/src/sidenav-bar-panel.tsx +269 -0
  590. package/src/sidenav-bar-row.tsx +272 -0
  591. package/src/sidenav-bar-second-level-item.tsx +99 -0
  592. package/src/sidenav-bar-section.tsx +98 -0
  593. package/src/sidenav-bar-types.ts +224 -0
  594. package/src/sidenav-bar.css.ts +1018 -0
  595. package/src/sidenav-bar.tsx +821 -0
  596. package/src/skins/blau.tsx +17 -8
  597. package/src/skins/defaults.tsx +5 -0
  598. package/src/skins/esimflag.tsx +18 -9
  599. package/src/skins/movistar.tsx +18 -9
  600. package/src/skins/o2.tsx +18 -9
  601. package/src/skins/skin-contract.css.ts +3 -0
  602. package/src/skins/telefonica.tsx +18 -9
  603. package/src/skins/types/colors.tsx +2 -0
  604. package/src/skins/types/index.tsx +1 -0
  605. package/src/skins/vivo-evolution.tsx +19 -10
  606. package/src/skins/vivo.tsx +18 -9
  607. package/src/switch-component.css.ts +20 -0
  608. package/src/switch-component.tsx +9 -1
  609. package/src/text-tokens.tsx +24 -0
@@ -1,26 +1,29 @@
1
1
  'use client';
2
2
  import * as React from 'react';
3
- import {CSSTransition} from 'react-transition-group';
4
3
  import classnames from 'classnames';
5
4
  import ResponsiveLayout, {ResetResponsiveLayout} from './responsive-layout';
6
5
  import Inline from './inline';
7
6
  import Touchable, {BaseTouchable} from './touchable';
8
7
  import {Text2, Text3} from './text';
9
8
  import {useElementDimensions, useScreenSize, useTheme} from './hooks';
10
- import IconMenuRegular from './generated/mistica-icons/icon-menu-regular';
11
- import IconCloseRegular from './generated/mistica-icons/icon-close-regular';
12
- import IconChevronLeftRegular from './generated/mistica-icons/icon-chevron-left-regular';
13
- import {IconButton} from './icon-button';
14
9
  import {Row, RowList} from './list';
15
10
  import {ThemeVariant, normalizeVariant, useThemeVariant} from './theme-variant-context';
16
11
  import FocusTrap from './focus-trap';
17
- import {Portal} from './portal';
12
+ import {MobileNavigationMenu} from './mobile-navigation-menu';
13
+ import {
14
+ BurgerMenuIcon,
15
+ Header,
16
+ NavigationBar,
17
+ NavigationBarContentContainer,
18
+ NavigationBarSideMargins,
19
+ } from './navigation-shared';
18
20
  import GridLayout from './grid-layout';
19
21
  import {useSetModalState} from './modal-context-provider';
20
22
  import {Logo} from './logo';
21
23
  import {vars} from './skins/skin-contract.css';
22
24
  import * as styles from './navigation-bar.css';
23
- import {cancelEvent, getPrefixedDataAttributes} from './utils/dom';
25
+ import * as sharedStyles from './navigation-shared.css';
26
+ import {cancelEvent} from './utils/dom';
24
27
  import Stack from './stack';
25
28
  import Box from './box';
26
29
  import {isRunningAcceptanceTest} from './utils/platform';
@@ -34,14 +37,21 @@ import {DOWN, ESC, UP} from './utils/keys';
34
37
  import {debounce, isEqual} from './utils/helpers';
35
38
  import NegativeBox from './negative-box';
36
39
 
37
- import type {BoxProps} from './box';
40
+ import type {WideConfig, InteractiveProps, MaybeInteractiveProps} from './navigation-shared';
38
41
  import type {ExclusifyUnion} from './utils/utility-types';
39
42
  import type {NonDeprecatedVariant, Variant} from './theme-variant-context';
40
43
  import type {TouchableProps} from './touchable';
41
- import type {DataAttributes, HeadingType, IconProps} from './utils/types';
44
+ import type {IconProps} from './utils/types';
45
+
46
+ // `NavigationBar` builds the simplest bar of the family, and the second level of both burger menus paints
47
+ // its back bar with it, so it lives in the shared module. The package still publishes it from here.
48
+ export {NavigationBar};
42
49
 
43
50
  const MAIN_NAVIGATION_BAR_MENU_DEBOUNCE_TIME = 120;
44
51
 
52
+ // The top bar and the burger menu share one focus trap, so the focus moves between the two of them.
53
+ const MAIN_NAVIGATION_BAR_FOCUS_TRAP_GROUP = 'burger-menu-lock';
54
+
45
55
  const MenuSectionArrow = ({size = 24, color = vars.colors.neutralHigh, style, className}: IconProps) => (
46
56
  <svg width={size} height={size} viewBox="0 0 8 8" style={style} className={className}>
47
57
  <path
@@ -51,219 +61,6 @@ const MenuSectionArrow = ({size = 24, color = vars.colors.neutralHigh, style, cl
51
61
  </svg>
52
62
  );
53
63
 
54
- const BurgerMenuIcon = ({isOpen}: {isOpen: boolean}) => {
55
- return (
56
- <div className={styles.burgerIconContainer} role="presentation" data-testid="BurgerMenuIcon">
57
- <div className={isOpen ? styles.iconCloseOpen : styles.iconCloseHidden}>
58
- <IconCloseRegular />
59
- </div>
60
- <div className={isOpen ? styles.iconMenuHidden : styles.iconMenuOpen}>
61
- <IconMenuRegular />
62
- </div>
63
- </div>
64
- );
65
- };
66
-
67
- type HeaderProps = {
68
- children: React.ReactNode;
69
- topFixed?: boolean;
70
- variant: NonDeprecatedVariant;
71
- withBorder?: boolean;
72
- isBurgerMenuOpen?: boolean;
73
- dataAttributes?: DataAttributes;
74
- isBottomRow?: boolean;
75
- };
76
-
77
- const Header = ({children, topFixed, withBorder, isBurgerMenuOpen, variant, dataAttributes}: HeaderProps) => {
78
- const {isDarkMode} = useTheme();
79
-
80
- const getBorderClass = () => {
81
- const isBrandVariant = (variant === 'brand' || variant === 'negative') && !isDarkMode;
82
- if (isBrandVariant || !withBorder) return styles.navbarBorderColorVariants.noBorder;
83
- if (isBurgerMenuOpen) return styles.navbarBorderColorVariants.menuOpen;
84
-
85
- return styles.navbarBorderColorVariants.default;
86
- };
87
-
88
- const backgroundColor = {
89
- default: vars.colors.background,
90
- brand: vars.colors.navigationBarBackground,
91
- negative: vars.colors.backgroundNegative,
92
- alternative: vars.colors.backgroundAlternative,
93
- media: vars.colors.navigationBarBackground,
94
- } as const;
95
-
96
- return (
97
- <header
98
- className={classnames(getBorderClass(), {[styles.topFixed]: topFixed})}
99
- style={{
100
- background: backgroundColor[variant],
101
- }}
102
- {...getPrefixedDataAttributes(dataAttributes)}
103
- >
104
- {children}
105
- </header>
106
- );
107
- };
108
-
109
- type NavigationBarContentContainerProps = {
110
- right?: React.ReactNode;
111
- children?: React.ReactNode;
112
- desktopOnly?: boolean;
113
- expandRightContent?: boolean;
114
- };
115
-
116
- const NavigationBarContentContainer = React.forwardRef<HTMLDivElement, NavigationBarContentContainerProps>(
117
- ({right, children, desktopOnly, expandRightContent}, ref) => {
118
- return (
119
- <div
120
- ref={ref}
121
- className={classnames(styles.navigationBarContent, {[styles.desktopOnly]: desktopOnly})}
122
- >
123
- {children}
124
- {right && (
125
- <div
126
- className={
127
- expandRightContent
128
- ? styles.navigationBarContentRightExpanded
129
- : styles.navigationBarContentRight
130
- }
131
- >
132
- {right}
133
- </div>
134
- )}
135
- </div>
136
- );
137
- }
138
- );
139
-
140
- type WideConfig = {
141
- paddingX: BoxProps['paddingX'];
142
- };
143
-
144
- const NavigationBarSideMargins = ({
145
- children,
146
- wide,
147
- backgroundColor,
148
- }: {
149
- children: React.ReactNode;
150
- wide: boolean | WideConfig;
151
- backgroundColor?: string;
152
- }) => {
153
- if (!wide) {
154
- return <ResponsiveLayout backgroundColor={backgroundColor}>{children}</ResponsiveLayout>;
155
- }
156
-
157
- const defaultWidePaddingX: BoxProps['paddingX'] = {
158
- mobile: 16,
159
- tablet: 24,
160
- desktop: 24,
161
- };
162
-
163
- return (
164
- <Box
165
- width="100%"
166
- paddingX={
167
- wide === true
168
- ? defaultWidePaddingX
169
- : typeof wide.paddingX === 'number'
170
- ? wide.paddingX
171
- : {
172
- ...defaultWidePaddingX,
173
- ...wide.paddingX,
174
- }
175
- }
176
- background={backgroundColor}
177
- >
178
- {children}
179
- </Box>
180
- );
181
- };
182
-
183
- interface NavigationBarCommonProps {
184
- variant?: Variant;
185
- onBack?: () => void;
186
- title?: string;
187
- titleAs?: HeadingType;
188
- right?: React.ReactElement;
189
- withBorder?: boolean;
190
- children?: undefined;
191
- wide?: boolean | WideConfig;
192
- }
193
-
194
- interface NavigationBarTopFixedProps extends NavigationBarCommonProps {
195
- topFixed?: true;
196
- }
197
-
198
- interface NavigationBarNotFixedProps extends NavigationBarCommonProps {
199
- topFixed: false;
200
- }
201
-
202
- type NavigationBarProps = NavigationBarTopFixedProps | NavigationBarNotFixedProps;
203
-
204
- export const NavigationBar = ({
205
- onBack,
206
- title,
207
- titleAs,
208
- right,
209
- variant = 'default',
210
- topFixed = true,
211
- withBorder = true,
212
- wide = false,
213
- }: NavigationBarProps): JSX.Element => {
214
- const {texts, t} = useTheme();
215
- const content = (
216
- <NavigationBarContentContainer right={right} expandRightContent>
217
- <Inline space={24} alignItems="center">
218
- {onBack && (
219
- <IconButton
220
- aria-label={texts.backNavigationBar || t(tokens.backNavigationBar)}
221
- onPress={onBack}
222
- Icon={IconChevronLeftRegular}
223
- bleedLeft
224
- bleedRight
225
- />
226
- )}
227
- <Text3 regular truncate as={titleAs}>
228
- {title}
229
- </Text3>
230
- </Inline>
231
- </NavigationBarContentContainer>
232
- );
233
-
234
- const calcPaddingXWhenNotTopFixed = (): BoxProps['paddingX'] => {
235
- if (typeof wide !== 'object') {
236
- return 0;
237
- }
238
- return wide.paddingX ?? 0;
239
- };
240
-
241
- const normalizedVariant = normalizeVariant(variant);
242
-
243
- return (
244
- <ThemeVariant variant={normalizedVariant}>
245
- <Header
246
- topFixed={topFixed}
247
- withBorder={withBorder}
248
- variant={normalizedVariant}
249
- dataAttributes={{testid: 'NavigationBar'}}
250
- >
251
- {topFixed ? (
252
- <NavigationBarSideMargins wide={wide}>{content}</NavigationBarSideMargins>
253
- ) : (
254
- <Box width="100%" paddingX={calcPaddingXWhenNotTopFixed()}>
255
- {content}
256
- </Box>
257
- )}
258
- </Header>
259
- {topFixed && <div className={styles.spacer} />}
260
- </ThemeVariant>
261
- );
262
- };
263
-
264
- type InteractiveProps = ExclusifyUnion<{href: string} | {to: string} | {onPress: () => void}>;
265
- type MaybeInteractiveProps = ExclusifyUnion<{href?: string} | {to?: string} | {onPress?: () => void}>;
266
-
267
64
  type SectionItem = {title: string} & InteractiveProps;
268
65
 
269
66
  type SectionColumn = {
@@ -322,30 +119,6 @@ type MainNavigationBarProps = {
322
119
  type MainNavigationBarMenuStatus = 'opening' | 'opened' | 'closing' | 'closed';
323
120
  type MainNavigationBarMenuAction = 'open' | 'finishOpen' | 'close' | 'finishClose';
324
121
 
325
- const mainNavigationBurgerMenuTranstions: Record<
326
- MainNavigationBarMenuStatus,
327
- Partial<Record<MainNavigationBarMenuAction, MainNavigationBarMenuStatus>>
328
- > = {
329
- opening: {
330
- close: 'closing',
331
- finishOpen: 'opened',
332
- },
333
- opened: {
334
- close: 'closing',
335
- },
336
- closing: {
337
- open: 'opening',
338
- finishClose: 'closed',
339
- },
340
- closed: {
341
- open: 'opening',
342
- },
343
- };
344
-
345
- const burgerMenuReducer = (state: MainNavigationBarMenuStatus, action: MainNavigationBarMenuAction) => {
346
- return mainNavigationBurgerMenuTranstions[state][action] || state;
347
- };
348
-
349
122
  const MainNavigationBarBurgerSection = ({
350
123
  section,
351
124
  closeSubMenu,
@@ -452,125 +225,59 @@ const MainNavigationBarBurgerMenu = ({
452
225
  disableFocusTrap: boolean;
453
226
  setDisableFocusTrap: (value: boolean) => void;
454
227
  }) => {
455
- const {isDarkMode, texts, t} = useTheme();
456
228
  const [openedSection, setOpenedSection] = React.useState(-1);
457
229
  const [isSubMenuOpen, setIsSubMenuOpen] = React.useState(false);
458
- const [subMenuStatus, dispatch] = React.useReducer(burgerMenuReducer, 'closed');
459
- const menuRef = React.useRef<HTMLDivElement>(null);
460
-
461
- const shadowAlpha = isDarkMode ? 1 : 0.2;
462
- const menuAnimationDuration = isRunningAcceptanceTest() ? 0 : styles.BURGER_MENU_ANIMATION_DURATION_MS;
463
-
464
- React.useEffect(() => {
465
- let id: NodeJS.Timeout;
466
-
467
- // menu starts opening or closing
468
- if (isSubMenuOpen) {
469
- dispatch('open');
470
- id = setTimeout(() => dispatch('finishOpen'), menuAnimationDuration);
471
- } else {
472
- dispatch('close');
473
- id = setTimeout(() => dispatch('finishClose'), menuAnimationDuration);
474
- }
475
-
476
- return () => clearTimeout(id);
477
- }, [isSubMenuOpen, menuAnimationDuration]);
478
-
479
- const sectionContainerRef = React.useRef<HTMLDivElement>(null);
480
-
481
- React.useEffect(() => {
482
- // Make screen reader focus on back button when opening any section's menu
483
- if (subMenuStatus === 'opening') {
484
- const sectionBackButtonElement = sectionContainerRef.current?.querySelector<HTMLButtonElement>(
485
- `button[aria-label="${texts.backNavigationBar || t(tokens.backNavigationBar)}"]`
486
- );
487
-
488
- sectionBackButtonElement?.focus();
489
- }
490
- }, [subMenuStatus, t, texts]);
491
230
 
492
231
  return (
493
- <Portal>
494
- <FocusTrap disabled={disableFocusTrap} group="burger-menu-lock">
495
- <CSSTransition
496
- onEntered={() => setDisableFocusTrap(false)}
497
- onExiting={() => setDisableFocusTrap(true)}
498
- onExited={() => {
499
- setIsSubMenuOpen(false);
500
- setOpenedSection(-1);
501
- }}
502
- classNames={styles.burgerMenuTransition}
503
- in={open}
504
- nodeRef={menuRef}
505
- timeout={menuAnimationDuration}
506
- mountOnEnter
507
- unmountOnExit
508
- >
509
- <nav
510
- className={styles.burgerMenu}
511
- style={{
512
- boxShadow: `6px 0 4px -4px rgba(0, 0, 0, ${shadowAlpha})`,
513
- top: NAVBAR_HEIGHT_MOBILE + topSlotHeight,
514
- }}
515
- id={id}
516
- ref={menuRef}
517
- >
518
- <div className={styles.burgerMenuContainer}>
519
- <div
520
- className={styles.burgerMenuContentContainer}
521
- style={{
522
- transform: `translate(${isSubMenuOpen ? '-100vw' : '0'})`,
523
- }}
524
- >
525
- {subMenuStatus !== 'opened' && (
526
- <ResponsiveLayout>
527
- <ResetResponsiveLayout>
528
- <RowList>
529
- {sections.map(({title, menu, ...interactiveProps}, index) => (
530
- <Row
531
- key={index}
532
- title={title}
533
- {...(menu
534
- ? {
535
- onPress: () => {
536
- setIsSubMenuOpen(true);
537
- setOpenedSection(index);
538
- },
539
- }
540
- : // Close the menu when one of the rows is pressed
541
- getInteractivePropsWithCloseMenu(
542
- interactiveProps as InteractiveProps,
543
- closeMenu
544
- ))}
545
- />
546
- ))}
547
- </RowList>
548
- </ResetResponsiveLayout>
549
- {slot && <Box paddingY={16}>{slot}</Box>}
550
- </ResponsiveLayout>
551
- )}
552
- </div>
553
-
554
- <div
555
- className={styles.burgerMenuContentContainer}
556
- ref={sectionContainerRef}
557
- style={{
558
- transform: `translate(${isSubMenuOpen ? '0' : '100vw'})`,
559
- }}
560
- >
561
- {subMenuStatus !== 'closed' && openedSection !== -1 && (
562
- <MainNavigationBarBurgerSection
563
- section={sections[openedSection]}
564
- closeMenu={closeMenu}
565
- closeSubMenu={() => setIsSubMenuOpen(false)}
566
- />
567
- )}
568
- </div>
569
- </div>
570
- </nav>
571
- </CSSTransition>
572
- </FocusTrap>
573
- </Portal>
232
+ <MobileNavigationMenu
233
+ open={open}
234
+ id={id}
235
+ topOffset={NAVBAR_HEIGHT_MOBILE + topSlotHeight}
236
+ showSecondLevel={isSubMenuOpen}
237
+ onExited={() => {
238
+ setIsSubMenuOpen(false);
239
+ setOpenedSection(-1);
240
+ }}
241
+ focusTrapGroup={MAIN_NAVIGATION_BAR_FOCUS_TRAP_GROUP}
242
+ disableFocusTrap={disableFocusTrap}
243
+ setDisableFocusTrap={setDisableFocusTrap}
244
+ firstLevel={
245
+ <ResponsiveLayout>
246
+ <ResetResponsiveLayout>
247
+ <RowList>
248
+ {sections.map(({title, menu, ...interactiveProps}, index) => (
249
+ <Row
250
+ key={index}
251
+ title={title}
252
+ {...(menu
253
+ ? {
254
+ onPress: () => {
255
+ setIsSubMenuOpen(true);
256
+ setOpenedSection(index);
257
+ },
258
+ }
259
+ : // Close the menu when one of the rows is pressed
260
+ getInteractivePropsWithCloseMenu(
261
+ interactiveProps as InteractiveProps,
262
+ closeMenu
263
+ ))}
264
+ />
265
+ ))}
266
+ </RowList>
267
+ </ResetResponsiveLayout>
268
+ {slot && <Box paddingY={16}>{slot}</Box>}
269
+ </ResponsiveLayout>
270
+ }
271
+ secondLevel={
272
+ openedSection !== -1 ? (
273
+ <MainNavigationBarBurgerSection
274
+ section={sections[openedSection]}
275
+ closeMenu={closeMenu}
276
+ closeSubMenu={() => setIsSubMenuOpen(false)}
277
+ />
278
+ ) : null
279
+ }
280
+ />
574
281
  );
575
282
  };
576
283
 
@@ -927,7 +634,7 @@ const MainNavigationBarDesktopMenuContent = ({
927
634
  const customContent = section?.menu?.content;
928
635
 
929
636
  return (
930
- <div className={styles.desktopOnly}>
637
+ <div className={sharedStyles.desktopOnly}>
931
638
  <ThemeVariant variant="default">
932
639
  {openedSection === index && (
933
640
  <ResetResponsiveLayout>
@@ -1005,7 +712,7 @@ const MainNavigationBarDesktopMenuBackground = ({
1005
712
  const {menuHeight} = useMainNavigationBarDesktopMenuState();
1006
713
 
1007
714
  return (
1008
- <div className={styles.desktopOnly}>
715
+ <div className={sharedStyles.desktopOnly}>
1009
716
  <div className={styles.desktopMenuWrapper} style={{top: topSpace}}>
1010
717
  <div
1011
718
  className={styles.desktopMenuBackgroundContainer}
@@ -1041,7 +748,7 @@ const MainNavigationBarDesktopSmallMenu = ({
1041
748
  const {openedSection, menuStatus, setIsMenuHovered, closeMenu} = useMainNavigationBarDesktopMenuState();
1042
749
 
1043
750
  return (
1044
- <div className={styles.desktopOnly}>
751
+ <div className={sharedStyles.desktopOnly}>
1045
752
  {index === openedSection && (
1046
753
  <ThemeVariant variant="default">
1047
754
  <div
@@ -1327,7 +1034,7 @@ const MainNavigationBarDesktopSections = ({
1327
1034
  return (
1328
1035
  // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
1329
1036
  <nav
1330
- className={classnames(styles.desktopOnly, styles.mainNavBarSectionsContainer)}
1037
+ className={classnames(sharedStyles.desktopOnly, styles.mainNavBarSectionsContainer)}
1331
1038
  style={{
1332
1039
  paddingLeft: !isLargeNavigationBar ? 48 : 0,
1333
1040
  paddingRight: !isLargeNavigationBar && hasRightContent ? 136 : 0,
@@ -1487,7 +1194,7 @@ export const MainNavigationBar = ({
1487
1194
  >
1488
1195
  {showBurger && (
1489
1196
  <Touchable
1490
- className={styles.burgerMenuButton}
1197
+ className={sharedStyles.burgerMenuButton}
1491
1198
  aria-live="polite"
1492
1199
  aria-label={
1493
1200
  isBurgerMenuOpen
@@ -1501,7 +1208,7 @@ export const MainNavigationBar = ({
1501
1208
  <BurgerMenuIcon isOpen={isBurgerMenuOpen} />
1502
1209
  </Touchable>
1503
1210
  )}
1504
- <div className={styles.logoContainer}>{logoElement}</div>
1211
+ <div className={sharedStyles.logoContainer}>{logoElement}</div>
1505
1212
  {!hasBottomSections && desktopSections}
1506
1213
  </NavigationBarContentContainer>
1507
1214
  {hasBottomSections && (
@@ -1513,7 +1220,7 @@ export const MainNavigationBar = ({
1513
1220
  </MainNavigationBarContentWrapper>
1514
1221
  </Header>
1515
1222
  {topFixed && topSlotHeight > 0 && <div style={{height: topSlotHeight}} />}
1516
- {topFixed && <div className={hasBottomSections ? styles.spacerLarge : styles.spacer} />}
1223
+ {topFixed && <div className={hasBottomSections ? styles.spacerLarge : sharedStyles.spacer} />}
1517
1224
  </ThemeVariant>
1518
1225
  );
1519
1226
 
@@ -1523,7 +1230,7 @@ export const MainNavigationBar = ({
1523
1230
  mainNavBar
1524
1231
  ) : (
1525
1232
  <>
1526
- <FocusTrap disabled={disableFocusTrap} group="burger-menu-lock">
1233
+ <FocusTrap disabled={disableFocusTrap} group={MAIN_NAVIGATION_BAR_FOCUS_TRAP_GROUP}>
1527
1234
  {mainNavBar}
1528
1235
  </FocusTrap>
1529
1236
  <MainNavigationBarBurgerMenu
@@ -1580,7 +1287,7 @@ export const FunnelNavigationBar = ({
1580
1287
  </GridLayout>
1581
1288
  </NavigationBarSideMargins>
1582
1289
  </Header>
1583
- {topFixed && <div className={styles.spacer} />}
1290
+ {topFixed && <div className={sharedStyles.spacer} />}
1584
1291
  </ThemeVariant>
1585
1292
  );
1586
1293
  };