@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
@@ -0,0 +1,98 @@
1
+ 'use client';
2
+ import * as React from 'react';
3
+ import classnames from 'classnames';
4
+ import * as styles from './sidenav-bar.css';
5
+ import {useThemeVariant} from './theme-variant-context';
6
+ import {getPrefixedDataAttributes} from './utils/dom';
7
+ import Divider from './divider';
8
+ import {Text2} from './text';
9
+ import {useSidenavBarContext} from './sidenav-bar-context';
10
+ import {useRestWidth} from './sidenav-bar-motion';
11
+ import {getSidenavSectionTitle} from './sidenav-bar-data';
12
+
13
+ import type {SidenavSectionTitle} from './sidenav-bar-types';
14
+ import type {DataAttributes} from './utils/types';
15
+
16
+ type SidenavSectionProps = {
17
+ /**
18
+ * Section heading, and accessible name of the list of the section. It is mandatory: a screen reader
19
+ * needs it to tell one section from another. When the sidenav is collapsed the heading closes and the
20
+ * items move up, but it still names the list. Give `{text, hidden: true}` to keep the name and paint
21
+ * no heading.
22
+ */
23
+ title: SidenavSectionTitle;
24
+ /** Renders a divider above the section. @default false */
25
+ dividerTop?: boolean;
26
+ /** Renders a divider below the section. @default false */
27
+ dividerBottom?: boolean;
28
+ /** Navigation items (`SidenavItem` elements).
29
+ * @see SidenavItem
30
+ */
31
+ children: React.ReactNode;
32
+ dataAttributes?: DataAttributes;
33
+ };
34
+
35
+ const SidenavSection = ({
36
+ title,
37
+ dividerTop,
38
+ dividerBottom,
39
+ children,
40
+ dataAttributes,
41
+ }: SidenavSectionProps): JSX.Element => {
42
+ const {collapsed, collapseState} = useSidenavBarContext();
43
+ const variant = useThemeVariant();
44
+ const {text: titleText, isHeadingVisible} = getSidenavSectionTitle(title);
45
+ // The title names the list of the section, so the name a screen reader speaks is always the text of
46
+ // the heading, visible or not. The section itself carries no role and no name: the named list is the
47
+ // whole structure, as in the second level (see `sidenav-bar-panel.tsx`).
48
+ const titleId = React.useId();
49
+ // The title holds the width that it had at rest while the sidenav moves, in both directions, so its
50
+ // lines stay where they are while its box folds. See `sectionTitleKeepsWidth` for the fallback. A
51
+ // hidden heading never moves, so it needs no measurement.
52
+ const isTitleWidthKept = isHeadingVisible && collapseState !== 'expanded';
53
+ const {ref: titleRef, frozenWidth: titleWidth} = useRestWidth(isTitleWidthKept);
54
+
55
+ return (
56
+ <div
57
+ className={styles.section}
58
+ {...getPrefixedDataAttributes({testid: 'SidenavSection', ...dataAttributes})}
59
+ >
60
+ {dividerTop && (
61
+ <div className={styles.sectionDividerTop}>
62
+ <Divider />
63
+ </div>
64
+ )}
65
+ <div
66
+ ref={titleRef}
67
+ id={titleId}
68
+ // The list already speaks this text as its name, so the title steps out of the
69
+ // reading order. The name survives: `aria-labelledby` reads a hidden element that
70
+ // it references directly.
71
+ aria-hidden="true"
72
+ className={classnames(styles.sectionTitle, styles.sectionTitleVariant[variant], {
73
+ [styles.sectionTitleHidden]: !isHeadingVisible,
74
+ [styles.sectionTitleCollapsed]: isHeadingVisible && collapsed,
75
+ [styles.sectionTitleKeepsWidth]: isTitleWidthKept && titleWidth === undefined,
76
+ })}
77
+ style={titleWidth !== undefined ? {width: titleWidth} : undefined}
78
+ >
79
+ <div className={styles.sectionTitleContent}>
80
+ <Text2 medium color="inherit">
81
+ {titleText}
82
+ </Text2>
83
+ </div>
84
+ </div>
85
+ {/* The title names the list, and the list gives the count of its items. */}
86
+ <div className={styles.sectionContent} role="list" aria-labelledby={titleId}>
87
+ {children}
88
+ </div>
89
+ {dividerBottom && (
90
+ <div className={styles.sectionDividerBottom}>
91
+ <Divider />
92
+ </div>
93
+ )}
94
+ </div>
95
+ );
96
+ };
97
+
98
+ export {SidenavSection};
@@ -0,0 +1,224 @@
1
+ import type {ExclusifyUnion} from './utils/utility-types';
2
+ import type {IconProps} from './utils/types';
3
+ import type {InteractiveProps} from './navigation-shared';
4
+
5
+ type SidenavAsset = ((props: IconProps) => JSX.Element) | React.ReactElement;
6
+
7
+ /** Props shared by every navigation item, at any level. */
8
+ type SidenavItemBaseProps = {
9
+ /** Unique identifier within the sidenav for selection tracking and panel state. */
10
+ id: string;
11
+ /** Display text (truncated if too long). */
12
+ label: string;
13
+ /** Custom content on right side (e.g., Badge). */
14
+ rightSlot?: React.ReactNode;
15
+ };
16
+
17
+ /**
18
+ * Parent item: it owns the items of the second level, it only opens and closes them, and it cannot
19
+ * navigate (`href`, `to`, and `onPress` are not allowed).
20
+ */
21
+ type SidenavParentItemProps = {
22
+ /** Second-level items (max 1 level, level 0 items only). A parent item cannot navigate. */
23
+ children: ReadonlyArray<SidenavSecondLevelItem>;
24
+ /** Initial open state of the children. @default false */
25
+ defaultOpen?: boolean;
26
+ };
27
+
28
+ /**
29
+ * Navigable item: it navigates with exactly one of `href`, `to`, or `onPress`, and it cannot have
30
+ * children.
31
+ */
32
+ type SidenavNavigableItemProps = InteractiveProps & {
33
+ /** Called after navigation (when item has href, to, or onPress). */
34
+ onNavigate?: () => void | Promise<void>;
35
+ /** Open link in new tab. Only applies when href or to is set. @default false */
36
+ newTab?: boolean;
37
+ };
38
+
39
+ /**
40
+ * Navigation item data for SidenavBar.
41
+ *
42
+ * Supports 2-level nesting:
43
+ * - **Level 0 items** can have children. They always carry an `asset`, because the collapsed rail shows
44
+ * nothing else of them.
45
+ * - **Level 1 items** (children) cannot have children (leaf nodes). See `SidenavSecondLevelItem`.
46
+ *
47
+ * Each item is exactly one of:
48
+ * - **Parent** — has `children` and only opens/closes them. It cannot navigate, so
49
+ * `href`, `to`, and `onPress` are not allowed (enforced by the type).
50
+ * - **Navigable** — has `href`, `to`, or `onPress`. It cannot have `children`.
51
+ *
52
+ * @example
53
+ * // Navigable item (leaf)
54
+ * {id: 'home', label: 'Home', asset: IconHome, href: '/', onNavigate: () => {}}
55
+ *
56
+ * // Parent item (only opens/closes its children, no navigation prop allowed)
57
+ * {
58
+ * id: 'projects',
59
+ * label: 'Projects',
60
+ * asset: IconFolder,
61
+ * children: [
62
+ * {id: 'active', label: 'Active', href: '/projects/active'},
63
+ * {id: 'archived', label: 'Archived', href: '/projects/archived'}
64
+ * ]
65
+ * }
66
+ *
67
+ * // Item with right slot (e.g., badge)
68
+ * {id: 'notifications', label: 'Notifications', asset: IconBell, href: '#', rightSlot: <Badge value={5} />}
69
+ */
70
+ type SidenavFirstLevelItem = SidenavItemBaseProps & {
71
+ /** Icon component or element. It is the only visible part of the item on the collapsed rail. */
72
+ asset: SidenavAsset;
73
+ /** Show asset when expanded (not collapsed). @default true */
74
+ showAssetWhenExpanded?: boolean;
75
+ } & ExclusifyUnion<SidenavParentItemProps | SidenavNavigableItemProps>;
76
+
77
+ /**
78
+ * Second-level item data: a child of a parent item. It is always navigable, and it cannot have children of its
79
+ * own. See `SidenavFirstLevelItem`.
80
+ *
81
+ * The collapsed rail never shows a second-level item, so the asset is optional and `showAssetWhenExpanded` has
82
+ * no meaning. The `undefined` members let a consumer read both item types through one union.
83
+ *
84
+ * @example
85
+ * {id: 'active', label: 'Active', href: '/projects/active'}
86
+ */
87
+ type SidenavSecondLevelItem = SidenavItemBaseProps &
88
+ SidenavNavigableItemProps & {
89
+ /** Icon component or element. */
90
+ asset?: SidenavAsset;
91
+ showAssetWhenExpanded?: undefined;
92
+ children?: undefined;
93
+ defaultOpen?: undefined;
94
+ };
95
+
96
+ /**
97
+ * Title of a section. Every section declares one, because it names the list of the section for a screen
98
+ * reader. A plain string also paints the heading. The object form with `hidden: true` keeps the name and
99
+ * paints no heading, so only assistive technology reads it.
100
+ *
101
+ * @example
102
+ * // Visible heading, and name of the list
103
+ * 'Workspace'
104
+ *
105
+ * // Name of the list only: no heading appears
106
+ * {text: 'Workspace', hidden: true}
107
+ */
108
+ type SidenavSectionTitle =
109
+ | string
110
+ | {
111
+ /** Text of the heading, and name of the list of the section. */
112
+ text: string;
113
+ /** Hide the heading. The list keeps this text as its name. @default false */
114
+ hidden?: boolean;
115
+ };
116
+
117
+ /**
118
+ * Section data that groups navigation items under a title, with optional dividers.
119
+ *
120
+ * Sections provide visual organization of items within a SidenavBar.
121
+ * The title is mandatory, because the list of the section takes its accessible name from it. When the
122
+ * sidenav is collapsed, the title is hidden visually but remains available to screen readers.
123
+ *
124
+ * @example
125
+ * // Section with a visible title and items
126
+ * {
127
+ * title: 'Workspace',
128
+ * dividerTop: true,
129
+ * items: [
130
+ * {id: 'projects', label: 'Projects', asset: IconFolder, href: '/projects'},
131
+ * {id: 'teams', label: 'Teams', asset: IconPeople, href: '/teams'}
132
+ * ]
133
+ * }
134
+ *
135
+ * // Section that groups items without a visible heading. Only a screen reader reads the title.
136
+ * {
137
+ * title: {text: 'Workspace', hidden: true},
138
+ * items: [{id: 'teams', label: 'Teams', asset: IconPeople, href: '/teams'}]
139
+ * }
140
+ */
141
+ type SidenavSection = {
142
+ /**
143
+ * Section heading, and accessible name of the list of the section. It is mandatory, because a list
144
+ * without a name leaves a screen reader with no way to tell one section from another. Give
145
+ * `{text, hidden: true}` to keep the name and paint no heading.
146
+ */
147
+ title: SidenavSectionTitle;
148
+ /** Show divider above section. The first entry of the body draws none: a line parts two entries. */
149
+ dividerTop?: boolean;
150
+ /** Show divider below section. The last entry of the body draws none: a line parts two entries. */
151
+ dividerBottom?: boolean;
152
+ /** Navigation items in this section. */
153
+ items: ReadonlyArray<SidenavFirstLevelItem>;
154
+ };
155
+
156
+ /**
157
+ * First-level entry of the sidenav body. The first level admits sections and stand-alone items,
158
+ * in any order, so an item does not need a section around it.
159
+ *
160
+ * Each entry is exactly one of:
161
+ * - **Section** — has `items` and groups them under a title and optional dividers.
162
+ * - **Stand-alone item** — a `SidenavFirstLevelItem` placed directly at the first level. It carries no
163
+ * title, so it is the entry to use when a group of one item needs no name.
164
+ *
165
+ * A stand-alone item aligns with the items of a section, and every first-level entry is
166
+ * separated from the next one by the same vertical space.
167
+ *
168
+ * @example
169
+ * // A stand-alone item, then a section, then another stand-alone item
170
+ * [
171
+ * {id: 'home', label: 'Home', asset: IconHome, href: '/'},
172
+ * {title: 'Workspace', items: [{id: 'teams', label: 'Teams', asset: IconPeople, href: '/teams'}]},
173
+ * {id: 'settings', label: 'Settings', asset: IconSettings, href: '/settings'}
174
+ * ]
175
+ */
176
+ type SidenavEntry = ExclusifyUnion<SidenavSection | SidenavFirstLevelItem>;
177
+
178
+ /**
179
+ * Phase of the collapse motion of the desktop rail. `collapsing` and `expanding` last for the movement of
180
+ * the rail, and they never appear when motion is off. The mobile top bar always reports `expanded`.
181
+ */
182
+ type SidenavCollapseState = 'expanded' | 'collapsing' | 'collapsed' | 'expanding';
183
+
184
+ const isSidenavMoving = (state: SidenavCollapseState): boolean =>
185
+ state === 'collapsing' || state === 'expanding';
186
+
187
+ /**
188
+ * Props of the slots that render per state: the logo, the header slot, the footer slot, and the collapse
189
+ * action. `collapsed` flips at the first frame of the motion, and `state` tells the phase, so a slot can
190
+ * keep its content while the rail moves and swap it when the rail rests.
191
+ */
192
+ type SidenavSlotRenderProps = {
193
+ /** Target collapsed state. The mobile top bar reports false, because it is not a rail. */
194
+ collapsed: boolean;
195
+ /** Phase of the collapse motion. */
196
+ state: SidenavCollapseState;
197
+ };
198
+
199
+ /** Props of the logo of the header. The default logo keeps the isotype in both states. */
200
+ type SidenavLogoRenderProps = SidenavSlotRenderProps;
201
+
202
+ /**
203
+ * Logo of the header. It takes true for the logo of the skin, false to hide the logo, an element of your
204
+ * own, or a function that receives the collapse state and returns one logo for each state.
205
+ */
206
+ type SidenavLogo = React.ReactElement | boolean | ((props: SidenavLogoRenderProps) => React.ReactNode);
207
+
208
+ /** Content of the header slot or of the footer slot: an element, or a function of the collapse state. */
209
+ type SidenavSlot = React.ReactNode | ((props: SidenavSlotRenderProps) => React.ReactNode);
210
+
211
+ export type {
212
+ SidenavAsset,
213
+ SidenavFirstLevelItem,
214
+ SidenavSecondLevelItem,
215
+ SidenavSection,
216
+ SidenavSectionTitle,
217
+ SidenavEntry,
218
+ SidenavLogo,
219
+ SidenavLogoRenderProps,
220
+ SidenavSlot,
221
+ SidenavSlotRenderProps,
222
+ SidenavCollapseState,
223
+ };
224
+ export {isSidenavMoving};