@ionic/core 8.8.7-dev.11779400352.127ba526 → 8.8.7-dev.11779921691.1777274a

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 (897) hide show
  1. package/components/index.js +1 -1
  2. package/components/ion-accordion-group.js +1 -1
  3. package/components/ion-accordion.js +1 -1
  4. package/components/ion-action-sheet.js +1 -1
  5. package/components/ion-alert.js +1 -1
  6. package/components/ion-app.js +1 -1
  7. package/components/ion-avatar.js +1 -1
  8. package/components/ion-back-button.js +1 -1
  9. package/components/ion-backdrop.js +1 -1
  10. package/components/ion-badge.js +1 -1
  11. package/components/ion-breadcrumb.js +1 -1
  12. package/components/ion-breadcrumbs.js +1 -1
  13. package/components/ion-button.js +1 -1
  14. package/components/ion-buttons.js +1 -1
  15. package/components/ion-card-content.js +1 -1
  16. package/components/ion-card-header.js +1 -1
  17. package/components/ion-card-subtitle.js +1 -1
  18. package/components/ion-card-title.js +1 -1
  19. package/components/ion-card.js +1 -1
  20. package/components/ion-checkbox.js +1 -1
  21. package/components/ion-chip.js +1 -1
  22. package/components/ion-col.js +1 -1
  23. package/components/ion-content.js +1 -1
  24. package/components/ion-datetime-button.js +1 -1
  25. package/components/ion-datetime.js +1 -1
  26. package/components/ion-divider.js +1 -1
  27. package/components/ion-fab-button.js +1 -1
  28. package/components/ion-fab-list.js +1 -1
  29. package/components/ion-fab.js +1 -1
  30. package/components/ion-footer.js +1 -1
  31. package/components/ion-grid.js +1 -1
  32. package/components/ion-header.js +1 -1
  33. package/components/ion-icon.js +1 -1
  34. package/components/ion-img.js +1 -1
  35. package/components/ion-infinite-scroll-content.js +1 -1
  36. package/components/ion-infinite-scroll.js +1 -1
  37. package/components/ion-input-otp.js +1 -1
  38. package/components/ion-input-password-toggle.js +1 -1
  39. package/components/ion-input.js +1 -1
  40. package/components/ion-item-divider.js +1 -1
  41. package/components/ion-item-group.js +1 -1
  42. package/components/ion-item-option.js +1 -1
  43. package/components/ion-item-options.js +1 -1
  44. package/components/ion-item-sliding.js +1 -1
  45. package/components/ion-item.js +1 -1
  46. package/components/ion-label.js +1 -1
  47. package/components/ion-list-header.js +1 -1
  48. package/components/ion-list.js +1 -1
  49. package/components/ion-loading.js +1 -1
  50. package/components/ion-menu-button.js +1 -1
  51. package/components/ion-menu-toggle.js +1 -1
  52. package/components/ion-menu.js +1 -1
  53. package/components/ion-modal.js +1 -1
  54. package/components/ion-nav-link.js +1 -1
  55. package/components/ion-nav.js +1 -1
  56. package/components/ion-note.js +1 -1
  57. package/components/ion-picker-column-option.js +1 -1
  58. package/components/ion-picker-column.js +1 -1
  59. package/components/ion-picker-legacy-column.js +1 -1
  60. package/components/ion-picker-legacy.js +1 -1
  61. package/components/ion-picker.js +1 -1
  62. package/components/ion-popover.js +1 -1
  63. package/components/ion-progress-bar.js +1 -1
  64. package/components/ion-radio-group.js +1 -1
  65. package/components/ion-radio.js +1 -1
  66. package/components/ion-range.js +1 -1
  67. package/components/ion-refresher-content.js +1 -1
  68. package/components/ion-refresher.js +1 -1
  69. package/components/ion-reorder-group.js +1 -1
  70. package/components/ion-reorder.js +1 -1
  71. package/components/ion-ripple-effect.js +1 -1
  72. package/components/ion-route-redirect.js +1 -1
  73. package/components/ion-route.js +1 -1
  74. package/components/ion-router-link.js +1 -1
  75. package/components/ion-router-outlet.js +1 -1
  76. package/components/ion-router.js +1 -1
  77. package/components/ion-row.js +1 -1
  78. package/components/ion-searchbar.js +1 -1
  79. package/components/ion-segment-button.js +1 -1
  80. package/components/ion-segment-content.js +1 -1
  81. package/components/ion-segment-view.js +1 -1
  82. package/components/ion-segment.js +1 -1
  83. package/components/ion-select-modal.js +1 -1
  84. package/components/ion-select-option.js +1 -1
  85. package/components/ion-select-popover.js +1 -1
  86. package/components/ion-select.js +1 -1
  87. package/components/ion-skeleton-text.js +1 -1
  88. package/components/ion-spinner.js +1 -1
  89. package/components/ion-split-pane.js +1 -1
  90. package/components/ion-tab-bar.js +1 -1
  91. package/components/ion-tab-button.js +1 -1
  92. package/components/ion-tab.js +1 -1
  93. package/components/ion-tabs.js +1 -1
  94. package/components/ion-text.js +1 -1
  95. package/components/ion-textarea.js +1 -1
  96. package/components/ion-thumbnail.js +1 -1
  97. package/components/ion-title.js +1 -1
  98. package/components/ion-toast.js +1 -1
  99. package/components/ion-toggle.js +1 -1
  100. package/components/ion-toolbar.js +1 -1
  101. package/components/p-0sJvNkUu.js +4 -0
  102. package/components/{p-BcbmT6b3.js → p-7nmSk-Eb.js} +1 -1
  103. package/components/p-B1O3xdmF.js +4 -0
  104. package/components/p-BBB8g5Ql.js +4 -0
  105. package/components/p-BF7rwwG7.js +4 -0
  106. package/components/p-BHffbls9.js +4 -0
  107. package/components/p-BKBdJW0R.js +4 -0
  108. package/components/p-BKGLpdvY.js +4 -0
  109. package/components/p-BRrh2GWk.js +4 -0
  110. package/components/{p-BFCM_1oE.js → p-BTWFHAhB.js} +1 -1
  111. package/components/p-BVOTx9Tr.js +4 -0
  112. package/components/p-BVbPiSCE.js +4 -0
  113. package/components/p-BVgmZpV7.js +4 -0
  114. package/components/{p-J7srYGKf.js → p-B_4LVR66.js} +1 -1
  115. package/components/p-BbwW7nXw.js +4 -0
  116. package/components/p-BePFSJjb.js +4 -0
  117. package/components/{p-zWP0sUV_.js → p-BilWM2xi.js} +1 -1
  118. package/components/p-Bnkcvm0_.js +4 -0
  119. package/components/p-Bp4m7lZT.js +4 -0
  120. package/components/p-BuQDh8MN.js +4 -0
  121. package/components/p-C4Uuc-Js.js +4 -0
  122. package/components/p-CF0UKsA-.js +4 -0
  123. package/components/p-CMETcSJz.js +4 -0
  124. package/components/p-CTDfzuym.js +4 -0
  125. package/components/p-CZwQlWO7.js +4 -0
  126. package/components/p-CkS5LcG3.js +4 -0
  127. package/components/p-CrC3J6IY.js +4 -0
  128. package/components/p-D9SzdDbV.js +4 -0
  129. package/components/p-DCoLfY48.js +4 -0
  130. package/components/p-DGHsHldT.js +4 -0
  131. package/components/p-DK2cppki.js +4 -0
  132. package/components/p-DMwGijtW.js +4 -0
  133. package/components/p-DPLIhs_Y.js +4 -0
  134. package/components/p-DRj_omR8.js +4 -0
  135. package/components/p-DWBdx_rf.js +4 -0
  136. package/{dist/ionic/p-CbkICFBN.js → components/p-DXBx6hf_.js} +1 -1
  137. package/components/p-DZwp0os_.js +4 -0
  138. package/components/{p-BErKjY03.js → p-DbQt4Kex.js} +1 -1
  139. package/components/p-DbrEqORq.js +4 -0
  140. package/{dist/ionic/p-C8IHbcuP.js → components/p-Dh41Mgrr.js} +1 -1
  141. package/components/p-Dh8YROlw.js +4 -0
  142. package/components/{p-lIOqnNXn.js → p-Dmd-3R4x.js} +1 -1
  143. package/components/p-DqL8Jl6C.js +4 -0
  144. package/components/p-DuOk1CH-.js +4 -0
  145. package/components/p-Op_wuLsj.js +4 -0
  146. package/components/p-SikZM1Bp.js +4 -0
  147. package/components/p-f1voQRQ1.js +4 -0
  148. package/components/p-fkeHL2Sd.js +4 -0
  149. package/components/p-gKV0T98m.js +4 -0
  150. package/components/{p-C-Vjb84N.js → p-jgONJj5a.js} +1 -1
  151. package/components/p-k6-su0sW.js +4 -0
  152. package/components/p-l7FroJh2.js +4 -0
  153. package/components/p-nFFDLHOE.js +4 -0
  154. package/components/p-pdE-O9G9.js +4 -0
  155. package/{dist/ionic/p-CWJdc8f_.js → components/p-u-SCu4et.js} +1 -1
  156. package/css/core.css +1 -1
  157. package/css/core.css.map +1 -1
  158. package/css/display.css.map +1 -1
  159. package/css/flex-utils.css.map +1 -1
  160. package/css/float-elements.css.map +1 -1
  161. package/css/global.bundle.css +1 -1
  162. package/css/global.bundle.css.map +1 -1
  163. package/css/ionic/bundle.ionic.css +1 -1
  164. package/css/ionic/bundle.ionic.css.map +1 -1
  165. package/css/ionic/core.ionic.css +1 -1
  166. package/css/ionic/core.ionic.css.map +1 -1
  167. package/css/ionic/global.bundle.ionic.css +1 -1
  168. package/css/ionic/global.bundle.ionic.css.map +1 -1
  169. package/css/ionic/link.ionic.css.map +1 -1
  170. package/css/ionic/structure.ionic.css.map +1 -1
  171. package/css/ionic/typography.ionic.css +1 -1
  172. package/css/ionic/typography.ionic.css.map +1 -1
  173. package/css/ionic/utils.bundle.ionic.css.map +1 -1
  174. package/css/ionic.bundle.css +1 -1
  175. package/css/ionic.bundle.css.map +1 -1
  176. package/css/padding.css.map +1 -1
  177. package/css/palettes/dark.always.css +1 -1
  178. package/css/palettes/dark.always.css.map +1 -1
  179. package/css/palettes/dark.class.css +1 -1
  180. package/css/palettes/dark.class.css.map +1 -1
  181. package/css/palettes/dark.system.css +1 -1
  182. package/css/palettes/dark.system.css.map +1 -1
  183. package/css/palettes/high-contrast-dark.always.css +1 -1
  184. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  185. package/css/palettes/high-contrast-dark.class.css +1 -1
  186. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  187. package/css/palettes/high-contrast-dark.system.css +1 -1
  188. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  189. package/css/palettes/high-contrast.always.css +1 -1
  190. package/css/palettes/high-contrast.always.css.map +1 -1
  191. package/css/palettes/high-contrast.class.css +1 -1
  192. package/css/palettes/high-contrast.class.css.map +1 -1
  193. package/css/palettes/high-contrast.system.css +1 -1
  194. package/css/palettes/high-contrast.system.css.map +1 -1
  195. package/css/structure.css.map +1 -1
  196. package/css/text-alignment.css.map +1 -1
  197. package/css/text-transformation.css.map +1 -1
  198. package/css/typography.css +1 -1
  199. package/css/typography.css.map +1 -1
  200. package/css/utils.bundle.css.map +1 -1
  201. package/dist/cjs/{animation-DknMeJ3x.js → animation-CoqRs93a.js} +3 -3
  202. package/dist/cjs/{app-globals-DtAeky3x.js → app-globals-CzPyigGz.js} +1 -1
  203. package/dist/cjs/badge-position-DFPHXWP9.js +176 -0
  204. package/dist/cjs/{button-active-JoIWyYri.js → button-active-lwEZiey1.js} +4 -4
  205. package/dist/cjs/{capacitor-BnRBm_ys.js → capacitor-F7SUc7Ly.js} +1 -1
  206. package/dist/cjs/{data-DuOuKG7I.js → data-BsQBKyvn.js} +3 -3
  207. package/dist/cjs/{framework-delegate-Dx9FrqAC.js → framework-delegate-C1LqXDzY.js} +4 -5
  208. package/dist/cjs/{haptic-D3Ay9mmg.js → haptic-CBZc4WH_.js} +1 -1
  209. package/dist/cjs/{index-CzcLEdQ5.js → index-BDthk8R7.js} +1885 -0
  210. package/dist/cjs/{index-BJlwOs11.js → index-BbhXd9Zs.js} +2 -2
  211. package/dist/cjs/{index-DMJjUhXH.js → index-Cbme57mm.js} +3 -5
  212. package/dist/cjs/{index-BJrpF9T3.js → index-DhXmkpe3.js} +3 -4
  213. package/dist/cjs/{index-Cer2Qy4I.js → index-HkS255C9.js} +6 -7
  214. package/dist/cjs/{index-D_mPAIqF.js → index-cV9SaEZV.js} +11 -12
  215. package/dist/cjs/index.cjs.js +15 -18
  216. package/dist/cjs/{input-shims-Dn33gFln.js → input-shims-eCRI_jn9.js} +15 -17
  217. package/dist/cjs/{input.utils-DnVnhWEF.js → input.utils-CvLAucXh.js} +4 -5
  218. package/dist/cjs/ion-accordion_2.cjs.entry.js +31 -34
  219. package/dist/cjs/ion-action-sheet.cjs.entry.js +34 -37
  220. package/dist/cjs/ion-alert.cjs.entry.js +44 -47
  221. package/dist/cjs/ion-app_8.cjs.entry.js +115 -116
  222. package/dist/cjs/ion-avatar_3.cjs.entry.js +66 -86
  223. package/dist/cjs/ion-back-button.cjs.entry.js +19 -22
  224. package/dist/cjs/ion-backdrop.cjs.entry.js +5 -5
  225. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +36 -39
  226. package/dist/cjs/ion-button_2.cjs.entry.js +54 -34
  227. package/dist/cjs/ion-card_5.cjs.entry.js +36 -39
  228. package/dist/cjs/ion-checkbox.cjs.entry.js +23 -26
  229. package/dist/cjs/ion-chip.cjs.entry.js +51 -51
  230. package/dist/cjs/ion-col_3.cjs.entry.js +14 -16
  231. package/dist/cjs/ion-datetime-button.cjs.entry.js +19 -22
  232. package/dist/cjs/ion-datetime_3.cjs.entry.js +123 -126
  233. package/dist/cjs/ion-divider.cjs.entry.js +5 -5
  234. package/dist/cjs/ion-fab_3.cjs.entry.js +27 -30
  235. package/dist/cjs/ion-img.cjs.entry.js +10 -12
  236. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +25 -27
  237. package/dist/cjs/ion-input-otp.cjs.entry.js +19 -22
  238. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +16 -17
  239. package/dist/cjs/ion-input.cjs.entry.js +42 -45
  240. package/dist/cjs/ion-item-option_3.cjs.entry.js +66 -319
  241. package/dist/cjs/ion-item_8.cjs.entry.js +71 -83
  242. package/dist/cjs/ion-loading.cjs.entry.js +27 -30
  243. package/dist/cjs/ion-menu_3.cjs.entry.js +55 -58
  244. package/dist/cjs/ion-modal.cjs.entry.js +71 -74
  245. package/dist/cjs/ion-nav_2.cjs.entry.js +41 -43
  246. package/dist/cjs/ion-picker-column-option.cjs.entry.js +9 -12
  247. package/dist/cjs/ion-picker-column.cjs.entry.js +14 -17
  248. package/dist/cjs/ion-picker.cjs.entry.js +9 -11
  249. package/dist/cjs/ion-popover.cjs.entry.js +36 -39
  250. package/dist/cjs/ion-progress-bar.cjs.entry.js +28 -41
  251. package/dist/cjs/ion-radio_2.cjs.entry.js +31 -34
  252. package/dist/cjs/ion-range.cjs.entry.js +50 -53
  253. package/dist/cjs/ion-refresher_2.cjs.entry.js +65 -67
  254. package/dist/cjs/ion-reorder_2.cjs.entry.js +23 -25
  255. package/dist/cjs/ion-ripple-effect.cjs.entry.js +7 -7
  256. package/dist/cjs/ion-route_4.cjs.entry.js +36 -39
  257. package/dist/cjs/ion-searchbar.cjs.entry.js +38 -41
  258. package/dist/cjs/ion-segment-content.cjs.entry.js +3 -3
  259. package/dist/cjs/ion-segment-view.cjs.entry.js +6 -6
  260. package/dist/cjs/ion-segment_2.cjs.entry.js +35 -38
  261. package/dist/cjs/ion-select-modal.cjs.entry.js +26 -29
  262. package/dist/cjs/ion-select_3.cjs.entry.js +74 -77
  263. package/dist/cjs/ion-spinner.cjs.entry.js +26 -41
  264. package/dist/cjs/ion-split-pane.cjs.entry.js +12 -13
  265. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +90 -34
  266. package/dist/cjs/ion-tab_2.cjs.entry.js +27 -27
  267. package/dist/cjs/ion-text.cjs.entry.js +7 -8
  268. package/dist/cjs/ion-textarea.cjs.entry.js +35 -38
  269. package/dist/cjs/ion-toast.cjs.entry.js +41 -44
  270. package/dist/cjs/ion-toggle.cjs.entry.js +33 -36
  271. package/dist/cjs/{ionic-global-CSEbHD_F.js → ionic-global-DMWqcBn0.js} +240 -108
  272. package/dist/cjs/ionic.cjs.js +7 -7
  273. package/dist/cjs/{ios.transition-UCjoxA3D.js → ios.transition-DcJ6Bw2k.js} +4 -6
  274. package/dist/cjs/{keyboard-Bhav6x-R.js → keyboard-BCj7bSvQ.js} +4 -4
  275. package/dist/cjs/{keyboard-Dsczf-iT.js → keyboard-Jy7okGc5.js} +1 -1
  276. package/dist/cjs/{keyboard-controller-tqGDP9SU.js → keyboard-controller-CPJ4vSr0.js} +4 -4
  277. package/dist/cjs/loader.cjs.js +5 -5
  278. package/dist/cjs/{md.transition-CNwlchQn.js → md.transition-DAjf1hlJ.js} +4 -6
  279. package/dist/cjs/{notch-controller-CgtkBzy0.js → notch-controller-gGuWI1C7.js} +3 -3
  280. package/dist/cjs/{overlays-Hci_7vw_.js → overlays-H4z8xPi9.js} +18 -19
  281. package/dist/cjs/{select-option-render-C7klBX2H.js → select-option-render-CZtiyFs7.js} +8 -8
  282. package/dist/cjs/{status-tap-CTY2dMsZ.js → status-tap-CPZvSRKr.js} +7 -9
  283. package/dist/cjs/{swipe-back-jJFi5KCB.js → swipe-back-CMubrxt-.js} +2 -4
  284. package/dist/collection/collection-manifest.json +0 -7
  285. package/dist/collection/components/action-sheet/action-sheet.ionic.css +2 -4
  286. package/dist/collection/components/action-sheet/action-sheet.ios.css +9 -10
  287. package/dist/collection/components/action-sheet/action-sheet.md.css +2 -3
  288. package/dist/collection/components/alert/alert.ionic.css +20 -22
  289. package/dist/collection/components/alert/alert.ios.css +13 -15
  290. package/dist/collection/components/alert/alert.md.css +19 -20
  291. package/dist/collection/components/avatar/avatar.ionic.css +0 -94
  292. package/dist/collection/components/avatar/avatar.js +22 -7
  293. package/dist/collection/components/avatar/avatar.md.css +0 -16
  294. package/dist/collection/components/back-button/back-button.ios.css +1 -1
  295. package/dist/collection/components/back-button/back-button.js +2 -2
  296. package/dist/collection/components/badge/badge.css +256 -0
  297. package/dist/collection/components/badge/badge.interfaces.js +7 -0
  298. package/dist/collection/components/badge/badge.js +72 -76
  299. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +9 -9
  300. package/dist/collection/components/breadcrumb/breadcrumb.js +2 -2
  301. package/dist/collection/components/breadcrumb/breadcrumb.md.css +9 -9
  302. package/dist/collection/components/button/button.ionic.css +18 -68
  303. package/dist/collection/components/button/button.ios.css +17 -32
  304. package/dist/collection/components/button/button.js +27 -5
  305. package/dist/collection/components/button/button.md.css +16 -31
  306. package/dist/collection/components/card/card.ios.css +1 -1
  307. package/dist/collection/components/card/card.js +2 -2
  308. package/dist/collection/components/card/card.md.css +1 -1
  309. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +1 -1
  310. package/dist/collection/components/card-subtitle/card-subtitle.md.css +1 -1
  311. package/dist/collection/components/card-title/card-title.md.css +1 -1
  312. package/dist/collection/components/checkbox/checkbox.ios.css +5 -5
  313. package/dist/collection/components/checkbox/checkbox.md.css +5 -5
  314. package/dist/collection/components/chip/chip.css +406 -0
  315. package/dist/collection/components/chip/chip.js +111 -57
  316. package/dist/collection/components/col/col.js +2 -3
  317. package/dist/collection/components/content/content.css +66 -126
  318. package/dist/collection/components/content/content.js +25 -24
  319. package/dist/collection/components/datetime/datetime.ios.css +8 -8
  320. package/dist/collection/components/datetime/datetime.md.css +7 -7
  321. package/dist/collection/components/datetime-button/datetime-button.ios.css +2 -2
  322. package/dist/collection/components/datetime-button/datetime-button.md.css +1 -1
  323. package/dist/collection/components/fab-button/fab-button.ios.css +17 -17
  324. package/dist/collection/components/fab-button/fab-button.js +2 -2
  325. package/dist/collection/components/fab-button/fab-button.md.css +6 -6
  326. package/dist/collection/components/grid/grid.js +2 -2
  327. package/dist/collection/components/header/header.js +2 -2
  328. package/dist/collection/components/img/img.js +2 -2
  329. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  330. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +3 -3
  331. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  332. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +3 -3
  333. package/dist/collection/components/input/input.ios.css +7 -7
  334. package/dist/collection/components/input/input.js +6 -6
  335. package/dist/collection/components/input/input.md.css +15 -15
  336. package/dist/collection/components/input-otp/input-otp.ionic.css +2 -2
  337. package/dist/collection/components/input-otp/input-otp.ios.css +16 -16
  338. package/dist/collection/components/input-otp/input-otp.js +3 -3
  339. package/dist/collection/components/input-otp/input-otp.md.css +16 -16
  340. package/dist/collection/components/input-password-toggle/input-password-toggle.js +3 -3
  341. package/dist/collection/components/item/item.ios.css +1 -1
  342. package/dist/collection/components/item/item.js +2 -2
  343. package/dist/collection/components/item/item.md.css +2 -2
  344. package/dist/collection/components/item-divider/item-divider.css +351 -0
  345. package/dist/collection/components/item-divider/item-divider.js +6 -13
  346. package/dist/collection/components/item-group/item-group.js +1 -1
  347. package/dist/collection/components/item-option/item-option.ionic.css +8 -8
  348. package/dist/collection/components/item-option/item-option.ios.css +3 -3
  349. package/dist/collection/components/item-option/item-option.js +2 -2
  350. package/dist/collection/components/item-option/item-option.md.css +2 -2
  351. package/dist/collection/components/item-options/item-options.ios.css +1 -1
  352. package/dist/collection/components/item-options/item-options.js +1 -1
  353. package/dist/collection/components/item-options/item-options.md.css +1 -1
  354. package/dist/collection/components/item-sliding/{item-sliding.native.css → item-sliding.css} +9 -78
  355. package/dist/collection/components/item-sliding/item-sliding.js +38 -284
  356. package/dist/collection/components/label/label.ios.css +1 -1
  357. package/dist/collection/components/label/label.js +2 -2
  358. package/dist/collection/components/label/label.md.css +2 -2
  359. package/dist/collection/components/list/list.js +1 -1
  360. package/dist/collection/components/list-header/list-header.ios.css +2 -2
  361. package/dist/collection/components/list-header/list-header.js +2 -2
  362. package/dist/collection/components/list-header/list-header.md.css +1 -1
  363. package/dist/collection/components/loading/loading.ios.css +2 -2
  364. package/dist/collection/components/loading/loading.js +2 -2
  365. package/dist/collection/components/loading/loading.md.css +3 -3
  366. package/dist/collection/components/menu/menu.js +2 -2
  367. package/dist/collection/components/menu-button/menu-button.ios.css +1 -1
  368. package/dist/collection/components/menu-button/menu-button.js +2 -2
  369. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  370. package/dist/collection/components/modal/modal.ios.css +1 -1
  371. package/dist/collection/components/modal/modal.js +4 -4
  372. package/dist/collection/components/modal/modal.md.css +1 -1
  373. package/dist/collection/components/nav/nav.js +3 -3
  374. package/dist/collection/components/nav-link/nav-link.js +1 -1
  375. package/dist/collection/components/note/note.ios.css +1 -1
  376. package/dist/collection/components/note/note.js +2 -2
  377. package/dist/collection/components/note/note.md.css +1 -1
  378. package/dist/collection/components/picker/picker.ios.css +1 -1
  379. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  380. package/dist/collection/components/picker-legacy/picker.ios.css +2 -2
  381. package/dist/collection/components/picker-legacy/picker.js +2 -2
  382. package/dist/collection/components/picker-legacy/picker.md.css +4 -4
  383. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  384. package/dist/collection/components/picker-legacy-column/picker-column.md.css +1 -1
  385. package/dist/collection/components/popover/popover.ios.css +1 -1
  386. package/dist/collection/components/popover/popover.js +2 -2
  387. package/dist/collection/components/progress-bar/progress-bar.css +281 -0
  388. package/dist/collection/components/progress-bar/progress-bar.interfaces.js +4 -0
  389. package/dist/collection/components/progress-bar/progress-bar.js +30 -30
  390. package/dist/collection/components/radio/radio.ios.css +2 -2
  391. package/dist/collection/components/radio/radio.js +3 -3
  392. package/dist/collection/components/radio/radio.md.css +2 -2
  393. package/dist/collection/components/radio-group/radio-group.ios.css +2 -2
  394. package/dist/collection/components/radio-group/radio-group.js +2 -2
  395. package/dist/collection/components/radio-group/radio-group.md.css +2 -2
  396. package/dist/collection/components/range/range.ionic.css +1 -1
  397. package/dist/collection/components/range/range.ios.css +3 -3
  398. package/dist/collection/components/range/range.js +3 -3
  399. package/dist/collection/components/range/range.md.css +6 -6
  400. package/dist/collection/components/refresher/refresher.ios.css +1 -1
  401. package/dist/collection/components/refresher/refresher.js +3 -3
  402. package/dist/collection/components/refresher/refresher.md.css +4 -4
  403. package/dist/collection/components/refresher/refresher.utils.js +2 -2
  404. package/dist/collection/components/refresher-content/refresher-content.js +2 -2
  405. package/dist/collection/components/reorder/reorder.js +2 -2
  406. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  407. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  408. package/dist/collection/components/router/router.js +2 -2
  409. package/dist/collection/components/router/utils/dom.js +2 -2
  410. package/dist/collection/components/router-link/router-link.css +1 -1
  411. package/dist/collection/components/router-link/router-link.js +4 -3
  412. package/dist/collection/components/router-outlet/router-outlet.js +2 -2
  413. package/dist/collection/components/row/row.js +2 -2
  414. package/dist/collection/components/searchbar/searchbar.ios.css +3 -3
  415. package/dist/collection/components/searchbar/searchbar.js +6 -6
  416. package/dist/collection/components/searchbar/searchbar.md.css +3 -3
  417. package/dist/collection/components/segment/segment.js +2 -2
  418. package/dist/collection/components/segment-button/segment-button.ios.css +3 -3
  419. package/dist/collection/components/segment-button/segment-button.js +2 -2
  420. package/dist/collection/components/segment-button/segment-button.md.css +2 -2
  421. package/dist/collection/components/segment-content/segment-content.js +1 -1
  422. package/dist/collection/components/segment-view/segment-view.js +2 -2
  423. package/dist/collection/components/select/select.ios.css +6 -6
  424. package/dist/collection/components/select/select.js +3 -3
  425. package/dist/collection/components/select/select.md.css +14 -14
  426. package/dist/collection/components/select-modal/select-modal.ionic.css +3 -3
  427. package/dist/collection/components/select-modal/select-modal.ios.css +2 -2
  428. package/dist/collection/components/select-modal/select-modal.js +1 -1
  429. package/dist/collection/components/select-modal/select-modal.md.css +5 -5
  430. package/dist/collection/components/select-option/select-option.js +1 -1
  431. package/dist/collection/components/select-popover/select-popover.ionic.css +5 -5
  432. package/dist/collection/components/select-popover/select-popover.ios.css +1 -1
  433. package/dist/collection/components/select-popover/select-popover.js +2 -2
  434. package/dist/collection/components/select-popover/select-popover.md.css +5 -5
  435. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  436. package/dist/collection/components/spinner/spinner.css +248 -0
  437. package/dist/collection/components/spinner/spinner.js +27 -31
  438. package/dist/collection/components/split-pane/split-pane.ios.css +1 -1
  439. package/dist/collection/components/split-pane/split-pane.js +2 -3
  440. package/dist/collection/components/split-pane/split-pane.md.css +1 -1
  441. package/dist/collection/components/tab/tab.js +3 -3
  442. package/dist/collection/components/tab-bar/tab-bar.ios.css +4 -4
  443. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  444. package/dist/collection/components/tab-bar/tab-bar.md.css +3 -3
  445. package/dist/collection/components/tab-button/tab-button.ionic.css +0 -61
  446. package/dist/collection/components/tab-button/tab-button.ios.css +0 -105
  447. package/dist/collection/components/tab-button/tab-button.js +62 -3
  448. package/dist/collection/components/tab-button/tab-button.md.css +0 -88
  449. package/dist/collection/components/tabs/tabs.css +0 -39
  450. package/dist/collection/components/tabs/tabs.interfaces.js +1 -0
  451. package/dist/collection/components/tabs/tabs.js +14 -14
  452. package/dist/collection/components/text/text.js +2 -2
  453. package/dist/collection/components/textarea/textarea.ionic.css +1 -1
  454. package/dist/collection/components/textarea/textarea.ios.css +6 -6
  455. package/dist/collection/components/textarea/textarea.js +5 -5
  456. package/dist/collection/components/textarea/textarea.md.css +14 -14
  457. package/dist/collection/components/thumbnail/thumbnail.css +2 -2
  458. package/dist/collection/components/thumbnail/thumbnail.js +2 -2
  459. package/dist/collection/components/title/title.js +2 -2
  460. package/dist/collection/components/toast/toast.ios.css +3 -3
  461. package/dist/collection/components/toast/toast.js +2 -2
  462. package/dist/collection/components/toast/toast.md.css +5 -5
  463. package/dist/collection/components/toggle/toggle.ionic.css +1 -1
  464. package/dist/collection/components/toggle/toggle.ios.css +4 -4
  465. package/dist/collection/components/toggle/toggle.js +3 -3
  466. package/dist/collection/components/toggle/toggle.md.css +4 -4
  467. package/dist/collection/components/toolbar/toolbar.ios.css +2 -2
  468. package/dist/collection/components/toolbar/toolbar.js +2 -2
  469. package/dist/collection/components/toolbar/toolbar.md.css +1 -1
  470. package/dist/collection/global/config.js +27 -0
  471. package/dist/collection/global/ionic-global.js +59 -76
  472. package/dist/collection/index.js +1 -2
  473. package/dist/collection/themes/base/dark.tokens.js +218 -0
  474. package/dist/collection/themes/base/default.tokens.js +157 -0
  475. package/dist/collection/themes/base/high-contrast-dark.tokens.js +210 -0
  476. package/dist/collection/themes/base/high-contrast.tokens.js +169 -0
  477. package/dist/collection/themes/base/light.tokens.js +163 -0
  478. package/dist/collection/themes/base/shared.tokens.js +15 -0
  479. package/dist/collection/themes/ionic/dark.tokens.js +5 -0
  480. package/dist/collection/themes/ionic/default.tokens.js +700 -0
  481. package/dist/collection/themes/ionic/light.tokens.js +25 -0
  482. package/dist/collection/themes/ionic/shared.tokens.js +122 -0
  483. package/dist/collection/themes/ios/dark.tokens.js +18 -0
  484. package/dist/collection/themes/ios/default.tokens.js +711 -0
  485. package/dist/collection/themes/ios/high-contrast-dark.tokens.js +6 -0
  486. package/dist/collection/themes/ios/high-contrast.tokens.js +5 -0
  487. package/dist/collection/themes/ios/light.tokens.js +4 -0
  488. package/dist/collection/themes/ios/shared.tokens.js +63 -0
  489. package/dist/collection/themes/md/dark.tokens.js +23 -0
  490. package/dist/collection/themes/md/default.tokens.js +819 -0
  491. package/dist/collection/themes/md/high-contrast-dark.tokens.js +10 -0
  492. package/dist/collection/themes/md/high-contrast.tokens.js +5 -0
  493. package/dist/collection/themes/md/light.tokens.js +4 -0
  494. package/dist/collection/themes/md/shared.tokens.js +127 -0
  495. package/dist/collection/themes/themes.interfaces.js +1 -0
  496. package/dist/collection/utils/badge-position.js +171 -0
  497. package/dist/collection/utils/content/index.js +2 -2
  498. package/dist/collection/utils/framework-delegate.js +3 -3
  499. package/dist/collection/utils/helpers.js +40 -0
  500. package/dist/collection/utils/input-shims/hacks/scroll-padding.js +2 -2
  501. package/dist/collection/utils/input-shims/input-shims.js +2 -2
  502. package/dist/collection/utils/media.js +0 -1
  503. package/dist/collection/utils/menu-controller/index.js +2 -2
  504. package/dist/collection/utils/overlays.js +2 -2
  505. package/dist/collection/utils/status-tap.js +2 -2
  506. package/dist/collection/utils/test/playwright/page/utils/set-content.js +36 -2
  507. package/dist/collection/utils/theme.js +611 -9
  508. package/dist/docs.json +1835 -1276
  509. package/dist/esm/{animation-Cqe2x-Pt.js → animation-pTY9wqHp.js} +2 -2
  510. package/dist/esm/{app-globals-Dk1rB3aE.js → app-globals-BDyWBDAh.js} +1 -1
  511. package/dist/esm/badge-position-C1Q3qPZy.js +174 -0
  512. package/dist/esm/{button-active-g6ZnZzDZ.js → button-active-Ca3reU6j.js} +2 -2
  513. package/dist/esm/{capacitor-C4lYa1nV.js → capacitor-isspMXyk.js} +1 -1
  514. package/dist/esm/{data-BNKYavC3.js → data-CAYLUmgh.js} +1 -1
  515. package/dist/esm/{framework-delegate-CjVwn_KZ.js → framework-delegate-reUSF3oT.js} +3 -4
  516. package/dist/esm/{haptic-_88k1V5U.js → haptic-FwCam9_Q.js} +1 -1
  517. package/dist/esm/{index-BmkLokUL.js → index-6QFmgmEW.js} +2 -3
  518. package/dist/esm/{index-Omi_TcwW.js → index-BrrkdT9L.js} +1851 -1
  519. package/dist/esm/{index-hpH08p5s.js → index-CEhdLZKQ.js} +4 -5
  520. package/dist/esm/{index-C5t9-ciC.js → index-CQnGY3Fp.js} +2 -4
  521. package/dist/esm/{index-CGthURny.js → index-DUAoXzCH.js} +3 -4
  522. package/dist/esm/{index-D4ugF_sT.js → index-V2HKYEdd.js} +1 -1
  523. package/dist/esm/index.js +10 -13
  524. package/dist/esm/{input-shims-vDjCsx95.js → input-shims-Cuw1QMqP.js} +8 -10
  525. package/dist/esm/{input.utils-B9Q5xHp6.js → input.utils-BiYknr4n.js} +2 -3
  526. package/dist/esm/ion-accordion_2.entry.js +2 -5
  527. package/dist/esm/ion-action-sheet.entry.js +13 -16
  528. package/dist/esm/ion-alert.entry.js +13 -16
  529. package/dist/esm/ion-app_8.entry.js +36 -37
  530. package/dist/esm/ion-avatar_3.entry.js +60 -80
  531. package/dist/esm/ion-back-button.entry.js +3 -6
  532. package/dist/esm/ion-backdrop.entry.js +2 -2
  533. package/dist/esm/ion-breadcrumb_2.entry.js +5 -8
  534. package/dist/esm/ion-button_2.entry.js +31 -11
  535. package/dist/esm/ion-card_5.entry.js +8 -11
  536. package/dist/esm/ion-checkbox.entry.js +4 -7
  537. package/dist/esm/ion-chip.entry.js +50 -50
  538. package/dist/esm/ion-col_3.entry.js +8 -10
  539. package/dist/esm/ion-datetime-button.entry.js +6 -9
  540. package/dist/esm/ion-datetime_3.entry.js +17 -20
  541. package/dist/esm/ion-divider.entry.js +2 -2
  542. package/dist/esm/ion-fab_3.entry.js +5 -8
  543. package/dist/esm/ion-img.entry.js +4 -6
  544. package/dist/esm/ion-infinite-scroll_2.entry.js +10 -12
  545. package/dist/esm/ion-input-otp.entry.js +8 -11
  546. package/dist/esm/ion-input-password-toggle.entry.js +5 -6
  547. package/dist/esm/ion-input.entry.js +11 -14
  548. package/dist/esm/ion-item-option_3.entry.js +49 -302
  549. package/dist/esm/ion-item_8.entry.js +28 -40
  550. package/dist/esm/ion-loading.entry.js +11 -14
  551. package/dist/esm/ion-menu_3.entry.js +13 -16
  552. package/dist/esm/ion-modal.entry.js +16 -19
  553. package/dist/esm/ion-nav_2.entry.js +8 -10
  554. package/dist/esm/ion-picker-column-option.entry.js +4 -7
  555. package/dist/esm/ion-picker-column.entry.js +4 -7
  556. package/dist/esm/ion-picker.entry.js +2 -4
  557. package/dist/esm/ion-popover.entry.js +9 -12
  558. package/dist/esm/ion-progress-bar.entry.js +21 -34
  559. package/dist/esm/ion-radio_2.entry.js +11 -14
  560. package/dist/esm/ion-range.entry.js +9 -12
  561. package/dist/esm/ion-refresher_2.entry.js +16 -18
  562. package/dist/esm/ion-reorder_2.entry.js +8 -10
  563. package/dist/esm/ion-ripple-effect.entry.js +3 -3
  564. package/dist/esm/ion-route_4.entry.js +6 -9
  565. package/dist/esm/ion-searchbar.entry.js +9 -12
  566. package/dist/esm/ion-segment-content.entry.js +2 -2
  567. package/dist/esm/ion-segment-view.entry.js +3 -3
  568. package/dist/esm/ion-segment_2.entry.js +8 -11
  569. package/dist/esm/ion-select-modal.entry.js +10 -13
  570. package/dist/esm/ion-select_3.entry.js +18 -21
  571. package/dist/esm/ion-spinner.entry.js +18 -33
  572. package/dist/esm/ion-split-pane.entry.js +7 -8
  573. package/dist/esm/ion-tab-bar_2.entry.js +75 -19
  574. package/dist/esm/ion-tab_2.entry.js +19 -19
  575. package/dist/esm/ion-text.entry.js +4 -5
  576. package/dist/esm/ion-textarea.entry.js +11 -14
  577. package/dist/esm/ion-toast.entry.js +10 -13
  578. package/dist/esm/ion-toggle.entry.js +10 -13
  579. package/dist/esm/{ionic-global-CAZb-5i-.js → ionic-global-CYPOXYV9.js} +214 -82
  580. package/dist/esm/ionic.js +5 -5
  581. package/dist/esm/{ios.transition-CzSncKQg.js → ios.transition-Udz14cFX.js} +4 -6
  582. package/dist/esm/{keyboard-Cpw6xVLJ.js → keyboard-BJeLQuaz.js} +1 -1
  583. package/dist/esm/{keyboard-controller-CAc33ylR.js → keyboard-controller-DtjExoRO.js} +3 -3
  584. package/dist/esm/{keyboard-DJpS2IGK.js → keyboard-uAtaO52Q.js} +4 -4
  585. package/dist/esm/loader.js +5 -5
  586. package/dist/esm/{md.transition-DIsWqYBZ.js → md.transition-BjHXd0f9.js} +4 -6
  587. package/dist/esm/{notch-controller-DiBq57w8.js → notch-controller-oUerJ6nV.js} +2 -2
  588. package/dist/esm/{overlays-rwDDzEs4.js → overlays-CSQv-GZq.js} +4 -5
  589. package/dist/esm/{select-option-render-B2qc5ZP7.js → select-option-render-DmisODWi.js} +2 -2
  590. package/dist/esm/{status-tap-fYFdZg6z.js → status-tap-DRMNWPiL.js} +3 -5
  591. package/dist/esm/{swipe-back-BzGqTrrq.js → swipe-back-D8jSdnGS.js} +1 -3
  592. package/dist/html.html-data.json +29 -244
  593. package/dist/ionic/index.esm.js +1 -1
  594. package/dist/ionic/ionic.esm.js +1 -1
  595. package/dist/ionic/p-01aa6153.entry.js +4 -0
  596. package/dist/ionic/p-07a3d959.entry.js +4 -0
  597. package/dist/ionic/p-0b68c8a9.entry.js +4 -0
  598. package/dist/ionic/p-0d50e1d3.entry.js +4 -0
  599. package/dist/ionic/p-124bb083.entry.js +4 -0
  600. package/dist/ionic/p-1f8298b3.entry.js +4 -0
  601. package/dist/ionic/p-1yGxS_yC.js +4 -0
  602. package/dist/ionic/p-29273c47.entry.js +4 -0
  603. package/dist/ionic/p-340449bb.entry.js +4 -0
  604. package/dist/ionic/p-39a55f1c.entry.js +4 -0
  605. package/dist/ionic/p-3a362e49.entry.js +4 -0
  606. package/dist/ionic/p-3a85e733.entry.js +4 -0
  607. package/dist/ionic/p-3b3dee19.entry.js +4 -0
  608. package/dist/ionic/p-485c13f3.entry.js +4 -0
  609. package/dist/ionic/p-4a63756e.entry.js +4 -0
  610. package/dist/ionic/p-4a6c21f5.entry.js +4 -0
  611. package/dist/ionic/p-4e8b3cd6.entry.js +4 -0
  612. package/dist/ionic/p-4f332976.entry.js +4 -0
  613. package/dist/ionic/{p-d604defc.entry.js → p-576b4ff1.entry.js} +1 -1
  614. package/dist/ionic/p-62a1e227.entry.js +4 -0
  615. package/dist/ionic/p-64877060.entry.js +4 -0
  616. package/dist/ionic/p-678f1511.entry.js +4 -0
  617. package/dist/ionic/p-6a0b6306.entry.js +4 -0
  618. package/dist/ionic/p-6c9228d4.entry.js +4 -0
  619. package/dist/ionic/p-70ab2edf.entry.js +4 -0
  620. package/dist/ionic/p-74d05699.entry.js +4 -0
  621. package/dist/ionic/p-77aa1e90.entry.js +4 -0
  622. package/dist/ionic/p-79be145b.entry.js +4 -0
  623. package/dist/ionic/p-7ba7526a.entry.js +4 -0
  624. package/dist/ionic/p-7cffb312.entry.js +4 -0
  625. package/dist/ionic/p-7e44a4c5.entry.js +4 -0
  626. package/dist/ionic/{p-45825c2c.entry.js → p-88717a4c.entry.js} +1 -1
  627. package/dist/ionic/p-918cf662.entry.js +4 -0
  628. package/dist/ionic/p-9476775d.entry.js +4 -0
  629. package/dist/ionic/p-9b05cd45.entry.js +4 -0
  630. package/dist/ionic/p-9b75925d.entry.js +4 -0
  631. package/dist/ionic/p-9c849562.entry.js +4 -0
  632. package/dist/ionic/p-9e74defe.entry.js +4 -0
  633. package/{components/p-oF-CwZ0b.js → dist/ionic/p-B7D6IyeU.js} +1 -1
  634. package/dist/ionic/p-BQZlX_QW.js +4 -0
  635. package/dist/ionic/p-BiY-3g9k.js +4 -0
  636. package/dist/ionic/p-BrrkdT9L.js +5 -0
  637. package/dist/ionic/p-BzLJp2YK.js +4 -0
  638. package/dist/ionic/{p-ZqkJDyhe.js → p-CAUIo7pE.js} +1 -1
  639. package/dist/ionic/p-CQA3_fVT.js +4 -0
  640. package/dist/ionic/{p-SJmaFQ0H.js → p-CTDx2dNQ.js} +1 -1
  641. package/dist/ionic/p-CWcwW_B7.js +4 -0
  642. package/dist/ionic/p-CYLLjyEJ.js +4 -0
  643. package/dist/ionic/p-Cd5dRcMd.js +4 -0
  644. package/dist/ionic/p-CeizwFUQ.js +4 -0
  645. package/{components/p-Cmql_g3_.js → dist/ionic/p-Chp7Hiov.js} +1 -1
  646. package/{components/p-sK-FK9CT.js → dist/ionic/p-Ckv4csSE.js} +1 -1
  647. package/dist/ionic/p-CnLgxV__.js +4 -0
  648. package/dist/ionic/p-CrC3J6IY.js +4 -0
  649. package/dist/ionic/p-D6sRRFCv.js +4 -0
  650. package/dist/ionic/p-DBv6epu_.js +4 -0
  651. package/dist/ionic/p-Dl7gXMai.js +4 -0
  652. package/dist/ionic/p-Dxq4Ulb1.js +4 -0
  653. package/dist/ionic/p-YuNpC3uG.js +4 -0
  654. package/{components/p-BLysWQA1.js → dist/ionic/p-ZdzrkYIV.js} +1 -1
  655. package/dist/ionic/p-a6c90dec.entry.js +4 -0
  656. package/dist/ionic/{p-fdf0e290.entry.js → p-a71389be.entry.js} +1 -1
  657. package/dist/ionic/p-a714ca93.entry.js +4 -0
  658. package/dist/ionic/p-bcaba3e0.entry.js +4 -0
  659. package/dist/ionic/p-bd44b49f.entry.js +4 -0
  660. package/dist/ionic/{p-7d267dc6.entry.js → p-c636b0d3.entry.js} +1 -1
  661. package/dist/ionic/p-cdc18886.entry.js +4 -0
  662. package/dist/ionic/p-ce6acd14.entry.js +4 -0
  663. package/dist/ionic/p-d7b2d59f.entry.js +4 -0
  664. package/dist/ionic/p-dc2812ee.entry.js +4 -0
  665. package/dist/ionic/p-de74cc27.entry.js +4 -0
  666. package/dist/ionic/p-ef1330ac.entry.js +4 -0
  667. package/dist/ionic/p-f57fea97.entry.js +4 -0
  668. package/dist/ionic/p-f840d58e.entry.js +4 -0
  669. package/dist/ionic/p-fK-AnPaq.js +4 -0
  670. package/dist/ionic/p-fce34e31.entry.js +4 -0
  671. package/dist/ionic/p-fd014d35.entry.js +4 -0
  672. package/dist/ionic/p-gBNkhCZy.js +4 -0
  673. package/dist/ionic/p-gYuHMhs-.js +4 -0
  674. package/dist/ionic/p-nMHpWRBR.js +4 -0
  675. package/dist/types/components/avatar/avatar.d.ts +6 -0
  676. package/dist/types/components/badge/badge.d.ts +30 -17
  677. package/dist/types/components/badge/badge.interfaces.d.ts +73 -0
  678. package/dist/types/components/button/button.d.ts +7 -1
  679. package/dist/types/components/chip/chip.d.ts +45 -14
  680. package/dist/types/components/chip/chip.interfaces.d.ts +97 -0
  681. package/dist/types/components/content/content.d.ts +1 -2
  682. package/dist/types/components/content/{content-interface.d.ts → content.interfaces.d.ts} +18 -0
  683. package/dist/types/components/item-divider/item-divider.d.ts +0 -1
  684. package/dist/types/components/item-divider/item-divider.interfaces.d.ts +132 -0
  685. package/dist/types/components/item-sliding/item-sliding.d.ts +2 -17
  686. package/dist/types/components/progress-bar/progress-bar.d.ts +9 -4
  687. package/dist/types/components/progress-bar/progress-bar.interfaces.d.ts +90 -0
  688. package/dist/types/components/spinner/spinner-configs.d.ts +2 -2
  689. package/dist/types/components/spinner/spinner.d.ts +8 -4
  690. package/dist/types/components/spinner/spinner.interfaces.d.ts +72 -0
  691. package/dist/types/components/tab/tab.d.ts +0 -1
  692. package/dist/types/components/tab-button/tab-button.d.ts +7 -0
  693. package/dist/types/components/tabs/tabs.d.ts +1 -1
  694. package/dist/types/components.d.ts +64 -215
  695. package/dist/types/global/config.d.ts +9 -1
  696. package/dist/types/global/ionic-global.d.ts +3 -10
  697. package/dist/types/index.d.ts +1 -2
  698. package/dist/types/interface.d.ts +2 -2
  699. package/dist/types/themes/base/dark.tokens.d.ts +2 -0
  700. package/dist/types/themes/base/default.tokens.d.ts +2 -0
  701. package/dist/types/themes/base/high-contrast-dark.tokens.d.ts +2 -0
  702. package/dist/types/themes/base/high-contrast.tokens.d.ts +2 -0
  703. package/dist/types/themes/base/light.tokens.d.ts +2 -0
  704. package/dist/types/themes/base/shared.tokens.d.ts +11 -0
  705. package/dist/types/themes/ionic/dark.tokens.d.ts +2 -0
  706. package/dist/types/themes/ionic/default.tokens.d.ts +2 -0
  707. package/dist/types/themes/ionic/light.tokens.d.ts +2 -0
  708. package/dist/types/themes/ionic/shared.tokens.d.ts +112 -0
  709. package/dist/types/themes/ios/dark.tokens.d.ts +2 -0
  710. package/dist/types/themes/ios/default.tokens.d.ts +2 -0
  711. package/dist/types/themes/ios/high-contrast-dark.tokens.d.ts +2 -0
  712. package/dist/types/themes/ios/high-contrast.tokens.d.ts +2 -0
  713. package/dist/types/themes/ios/light.tokens.d.ts +2 -0
  714. package/dist/types/themes/ios/shared.tokens.d.ts +56 -0
  715. package/dist/types/themes/md/dark.tokens.d.ts +2 -0
  716. package/dist/types/themes/md/default.tokens.d.ts +2 -0
  717. package/dist/types/themes/md/high-contrast-dark.tokens.d.ts +2 -0
  718. package/dist/types/themes/md/high-contrast.tokens.d.ts +2 -0
  719. package/dist/types/themes/md/light.tokens.d.ts +2 -0
  720. package/dist/types/themes/md/shared.tokens.d.ts +117 -0
  721. package/dist/types/themes/themes.interfaces.d.ts +278 -0
  722. package/dist/types/utils/badge-position.d.ts +106 -0
  723. package/dist/types/utils/config.d.ts +6 -0
  724. package/dist/types/utils/helpers.d.ts +16 -0
  725. package/dist/types/utils/platform.d.ts +2 -2
  726. package/dist/types/utils/theme.d.ts +198 -3
  727. package/hydrate/index.js +2898 -2173
  728. package/hydrate/index.mjs +2898 -2173
  729. package/package.json +6 -4
  730. package/components/ion-gallery-item.d.ts +0 -11
  731. package/components/ion-gallery-item.js +0 -4
  732. package/components/ion-gallery.d.ts +0 -11
  733. package/components/ion-gallery.js +0 -4
  734. package/components/p-0sa2JgYA.js +0 -4
  735. package/components/p-3Ni1Z654.js +0 -4
  736. package/components/p-6_r-Odtt.js +0 -4
  737. package/components/p-9gxM3tAr.js +0 -4
  738. package/components/p-B-oPDoNQ.js +0 -4
  739. package/components/p-B636tzQ7.js +0 -4
  740. package/components/p-B8Oa6a_k.js +0 -4
  741. package/components/p-BCDEEm9n.js +0 -4
  742. package/components/p-BDndEqui.js +0 -4
  743. package/components/p-BLHs-wsh.js +0 -4
  744. package/components/p-BO4aickU.js +0 -4
  745. package/components/p-BbQGmZyu.js +0 -4
  746. package/components/p-BdmDSErh.js +0 -4
  747. package/components/p-BeVlsaLA.js +0 -4
  748. package/components/p-BhkRbo3L.js +0 -4
  749. package/components/p-Bp__mr16.js +0 -4
  750. package/components/p-BqDiJgC_.js +0 -4
  751. package/components/p-C00Y_WJv.js +0 -4
  752. package/components/p-C0U8YqYW.js +0 -4
  753. package/components/p-C4dDZdpz.js +0 -4
  754. package/components/p-C75do9pU.js +0 -4
  755. package/components/p-CKfNwyAb.js +0 -4
  756. package/components/p-CSf_VKpz.js +0 -4
  757. package/components/p-CVBkx7m1.js +0 -4
  758. package/components/p-Cb9imMZh.js +0 -4
  759. package/components/p-Cf9-xP7P.js +0 -4
  760. package/components/p-CieebRr6.js +0 -4
  761. package/components/p-CjSx8W-k.js +0 -4
  762. package/components/p-Ct1_qpJ-.js +0 -4
  763. package/components/p-CtiqM786.js +0 -4
  764. package/components/p-CvljGih0.js +0 -4
  765. package/components/p-D42P_qbe.js +0 -4
  766. package/components/p-DDw-NYxz.js +0 -4
  767. package/components/p-DVcs-2q3.js +0 -4
  768. package/components/p-DZOqbnq2.js +0 -4
  769. package/components/p-DaJxRxSQ.js +0 -4
  770. package/components/p-Ddl4_R29.js +0 -4
  771. package/components/p-KF2RUDHO.js +0 -4
  772. package/components/p-XegQjlzJ.js +0 -4
  773. package/components/p-lEYPO4ZC.js +0 -4
  774. package/components/p-n94Bzx6_.js +0 -4
  775. package/components/p-t98_NeNv.js +0 -4
  776. package/components/p-vCpF32Z7.js +0 -4
  777. package/components/p-vGxjPSKT.js +0 -4
  778. package/components/p-vXpMhGrs.js +0 -4
  779. package/components/p-wCDzv5Q8.js +0 -4
  780. package/dist/cjs/focus-visible-BIj-I3-C.js +0 -101
  781. package/dist/cjs/helpers-DJYxKN5U.js +0 -413
  782. package/dist/cjs/ion-gallery-item.cjs.entry.js +0 -72
  783. package/dist/cjs/ion-gallery.cjs.entry.js +0 -559
  784. package/dist/cjs/theme-IlOsGAz7.js +0 -72
  785. package/dist/collection/components/badge/badge.ionic.css +0 -275
  786. package/dist/collection/components/badge/badge.ios.css +0 -295
  787. package/dist/collection/components/badge/badge.md.css +0 -275
  788. package/dist/collection/components/chip/chip.ionic.css +0 -217
  789. package/dist/collection/components/chip/chip.ios.css +0 -265
  790. package/dist/collection/components/chip/chip.md.css +0 -260
  791. package/dist/collection/components/gallery/gallery-constants.js +0 -12
  792. package/dist/collection/components/gallery/gallery.css +0 -76
  793. package/dist/collection/components/gallery/gallery.js +0 -644
  794. package/dist/collection/components/gallery/test/utils.js +0 -100
  795. package/dist/collection/components/gallery-item/gallery-item.css +0 -87
  796. package/dist/collection/components/gallery-item/gallery-item.js +0 -87
  797. package/dist/collection/components/item-divider/item-divider.ios.css +0 -369
  798. package/dist/collection/components/item-divider/item-divider.md.css +0 -425
  799. package/dist/collection/components/item-sliding/item-sliding.ionic.css +0 -211
  800. package/dist/collection/components/progress-bar/progress-bar.ionic.css +0 -287
  801. package/dist/collection/components/progress-bar/progress-bar.ios.css +0 -298
  802. package/dist/collection/components/progress-bar/progress-bar.md.css +0 -290
  803. package/dist/collection/components/spinner/spinner.ionic.css +0 -300
  804. package/dist/collection/components/spinner/spinner.native.css +0 -199
  805. package/dist/collection/utils/css-value-validation.js +0 -25
  806. package/dist/esm/focus-visible-vXpMhGrs.js +0 -97
  807. package/dist/esm/helpers-Do7zwvM1.js +0 -392
  808. package/dist/esm/ion-gallery-item.entry.js +0 -70
  809. package/dist/esm/ion-gallery.entry.js +0 -557
  810. package/dist/esm/theme-DaJxRxSQ.js +0 -67
  811. package/dist/ionic/p-02a1a45c.entry.js +0 -4
  812. package/dist/ionic/p-07d3388f.entry.js +0 -4
  813. package/dist/ionic/p-0c3bf0a7.entry.js +0 -4
  814. package/dist/ionic/p-0ef2fcda.entry.js +0 -4
  815. package/dist/ionic/p-11nqcMM3.js +0 -4
  816. package/dist/ionic/p-139d02eb.entry.js +0 -4
  817. package/dist/ionic/p-1ab01507.entry.js +0 -4
  818. package/dist/ionic/p-21ca5788.entry.js +0 -4
  819. package/dist/ionic/p-229c8fb5.entry.js +0 -4
  820. package/dist/ionic/p-2311e660.entry.js +0 -4
  821. package/dist/ionic/p-2981a0bd.entry.js +0 -4
  822. package/dist/ionic/p-2a66b899.entry.js +0 -4
  823. package/dist/ionic/p-2c252788.entry.js +0 -4
  824. package/dist/ionic/p-2d5a2511.entry.js +0 -4
  825. package/dist/ionic/p-37ccbee4.entry.js +0 -4
  826. package/dist/ionic/p-3aba19e2.entry.js +0 -4
  827. package/dist/ionic/p-3d939d55.entry.js +0 -4
  828. package/dist/ionic/p-3fd97ea9.entry.js +0 -4
  829. package/dist/ionic/p-432c5888.entry.js +0 -4
  830. package/dist/ionic/p-455ac83a.entry.js +0 -4
  831. package/dist/ionic/p-488992b6.entry.js +0 -4
  832. package/dist/ionic/p-4a0260e6.entry.js +0 -4
  833. package/dist/ionic/p-503219b5.entry.js +0 -4
  834. package/dist/ionic/p-5b164421.entry.js +0 -4
  835. package/dist/ionic/p-636aa79b.entry.js +0 -4
  836. package/dist/ionic/p-65159e09.entry.js +0 -4
  837. package/dist/ionic/p-68c21b2a.entry.js +0 -4
  838. package/dist/ionic/p-6911beb3.entry.js +0 -4
  839. package/dist/ionic/p-6ec1e450.entry.js +0 -4
  840. package/dist/ionic/p-6fbead83.entry.js +0 -4
  841. package/dist/ionic/p-7194f6fa.entry.js +0 -4
  842. package/dist/ionic/p-76de7898.entry.js +0 -4
  843. package/dist/ionic/p-7761b69d.entry.js +0 -4
  844. package/dist/ionic/p-8291455b.entry.js +0 -4
  845. package/dist/ionic/p-83c0eb9b.entry.js +0 -4
  846. package/dist/ionic/p-874945f3.entry.js +0 -4
  847. package/dist/ionic/p-8uDL7fql.js +0 -4
  848. package/dist/ionic/p-92427c9d.entry.js +0 -4
  849. package/dist/ionic/p-9f914d43.entry.js +0 -4
  850. package/dist/ionic/p-BsfuYVMP.js +0 -4
  851. package/dist/ionic/p-Bx0bt2Ar.js +0 -4
  852. package/dist/ionic/p-C2mpVKI1.js +0 -4
  853. package/dist/ionic/p-C4uUM9DM.js +0 -4
  854. package/dist/ionic/p-C5zxLmJ_.js +0 -4
  855. package/dist/ionic/p-CBV-BGvD.js +0 -4
  856. package/dist/ionic/p-CDn0uNJA.js +0 -4
  857. package/dist/ionic/p-CFjI63GE.js +0 -4
  858. package/dist/ionic/p-CHE1xWbg.js +0 -4
  859. package/dist/ionic/p-CIk5QtPm.js +0 -4
  860. package/dist/ionic/p-CQKe4n56.js +0 -4
  861. package/dist/ionic/p-CVp2D--1.js +0 -4
  862. package/dist/ionic/p-CXqdKf1K.js +0 -4
  863. package/dist/ionic/p-Cb-0O4h8.js +0 -4
  864. package/dist/ionic/p-DKWXAwlR.js +0 -4
  865. package/dist/ionic/p-DaJxRxSQ.js +0 -4
  866. package/dist/ionic/p-DoyDJ2X5.js +0 -4
  867. package/dist/ionic/p-FvDKM4Ax.js +0 -4
  868. package/dist/ionic/p-Omi_TcwW.js +0 -5
  869. package/dist/ionic/p-SOASChNu.js +0 -4
  870. package/dist/ionic/p-acdc21a6.entry.js +0 -4
  871. package/dist/ionic/p-b8f7e970.entry.js +0 -4
  872. package/dist/ionic/p-bb2d2635.entry.js +0 -4
  873. package/dist/ionic/p-bd3ae730.entry.js +0 -4
  874. package/dist/ionic/p-c1d6501a.entry.js +0 -4
  875. package/dist/ionic/p-c55a5578.entry.js +0 -4
  876. package/dist/ionic/p-cecceb9f.entry.js +0 -4
  877. package/dist/ionic/p-dd1e95c5.entry.js +0 -4
  878. package/dist/ionic/p-e342b205.entry.js +0 -4
  879. package/dist/ionic/p-e5976b28.entry.js +0 -4
  880. package/dist/ionic/p-e73a7fe2.entry.js +0 -4
  881. package/dist/ionic/p-f02ba305.entry.js +0 -4
  882. package/dist/ionic/p-fc01563c.entry.js +0 -4
  883. package/dist/ionic/p-fe073307.entry.js +0 -4
  884. package/dist/ionic/p-qETiT38a.js +0 -4
  885. package/dist/ionic/p-vXpMhGrs.js +0 -4
  886. package/dist/types/components/gallery/gallery-constants.d.ts +0 -9
  887. package/dist/types/components/gallery/gallery-interface.d.ts +0 -10
  888. package/dist/types/components/gallery/gallery.d.ts +0 -191
  889. package/dist/types/components/gallery/test/utils.d.ts +0 -2
  890. package/dist/types/components/gallery-item/gallery-item.d.ts +0 -25
  891. package/dist/types/components/spinner/spinner-interface.d.ts +0 -22
  892. package/dist/types/utils/css-value-validation.d.ts +0 -12
  893. /package/dist/collection/components/{content/content-interface.js → chip/chip.interfaces.js} +0 -0
  894. /package/dist/collection/components/{gallery/gallery-interface.js → content/content.interfaces.js} +0 -0
  895. /package/dist/collection/components/{spinner/spinner-interface.js → item-divider/item-divider.interfaces.js} +0 -0
  896. /package/dist/collection/components/{tabs/tabs-interface.js → spinner/spinner.interfaces.js} +0 -0
  897. /package/dist/types/components/tabs/{tabs-interface.d.ts → tabs.interfaces.d.ts} +0 -0
@@ -18,6 +18,33 @@ class Config {
18
18
  const value = this.m.get(key);
19
19
  return value !== undefined ? value : fallback;
20
20
  }
21
+ /**
22
+ * Get a nested object value from the config
23
+ *
24
+ * @param key Nested key string (e.g., 'IonChip.size')
25
+ * @param fallback Default value if the key is not found
26
+ * @returns The value found at the nested key or the fallback
27
+ */
28
+ getObjectValue(key, fallback) {
29
+ var _a;
30
+ const [firstKey, ...remainingKeys] = key.split('.');
31
+ let root;
32
+ // First key is a component config since it starts with 'Ion',
33
+ // it must be accessed from the 'customTheme' config object
34
+ if (firstKey.startsWith('Ion')) {
35
+ const customTheme = this.m.get('customTheme');
36
+ root = customTheme ? (_a = customTheme.config) === null || _a === void 0 ? void 0 : _a.components[firstKey] : undefined;
37
+ }
38
+ else {
39
+ // Otherwise, get the value directly from the global config
40
+ root = this.m.get(firstKey);
41
+ }
42
+ if (root === undefined) {
43
+ return fallback;
44
+ }
45
+ const result = remainingKeys.reduce((acc, k) => acc === null || acc === void 0 ? void 0 : acc[k], root);
46
+ return result !== null && result !== void 0 ? result : fallback;
47
+ }
21
48
  getBoolean(key, fallback = false) {
22
49
  const val = this.m.get(key);
23
50
  if (val === undefined) {
@@ -123,6 +150,1829 @@ const printRequiredElementError = (el, ...targetSelectors) => {
123
150
  return console.error(`<${el.tagName.toLowerCase()}> must be used inside ${targetSelectors.join(' or ')}.`);
124
151
  };
125
152
 
153
+ const ION_FOCUSED = 'ion-focused';
154
+ const ION_FOCUSABLE = 'ion-focusable';
155
+ const FOCUS_KEYS = [
156
+ 'Tab',
157
+ 'ArrowDown',
158
+ 'Space',
159
+ 'Escape',
160
+ ' ',
161
+ 'Shift',
162
+ 'Enter',
163
+ 'ArrowLeft',
164
+ 'ArrowRight',
165
+ 'ArrowUp',
166
+ 'Home',
167
+ 'End',
168
+ ];
169
+ let focusVisibleUtility = null;
170
+ const getOrInitFocusVisibleUtility = () => {
171
+ if (!focusVisibleUtility) {
172
+ focusVisibleUtility = startFocusVisible();
173
+ }
174
+ return focusVisibleUtility;
175
+ };
176
+ /**
177
+ * Used to set focus on an element that uses `ion-focusable`.
178
+ * Do not use this if focusing the element as a result of a keyboard
179
+ * event as the focus utility should handle this for us. This method
180
+ * should be used when we want to programmatically focus an element as
181
+ * a result of another user action. (Ex: We focus the first element
182
+ * inside of a popover when the user presents it, but the popover is not always
183
+ * presented as a result of keyboard action.)
184
+ *
185
+ * @param elements - The elements to set focus on.
186
+ */
187
+ const focusElements = (elements) => {
188
+ const focusVisible = getOrInitFocusVisibleUtility();
189
+ focusVisible.setFocus(elements);
190
+ };
191
+ const startFocusVisible = (rootEl) => {
192
+ let currentFocus = [];
193
+ let keyboardMode = true;
194
+ const ref = rootEl ? rootEl.shadowRoot : document;
195
+ const root = rootEl ? rootEl : document.body;
196
+ const setFocus = (elements) => {
197
+ currentFocus.forEach((el) => el.classList.remove(ION_FOCUSED));
198
+ elements.forEach((el) => el.classList.add(ION_FOCUSED));
199
+ currentFocus = elements;
200
+ };
201
+ const pointerDown = () => {
202
+ keyboardMode = false;
203
+ setFocus([]);
204
+ };
205
+ const onKeydown = (ev) => {
206
+ keyboardMode = FOCUS_KEYS.includes(ev.key);
207
+ if (!keyboardMode) {
208
+ setFocus([]);
209
+ }
210
+ };
211
+ const onFocusin = (ev) => {
212
+ if (keyboardMode && ev.composedPath !== undefined) {
213
+ const toFocus = ev.composedPath().filter((el) => {
214
+ // TODO(FW-2832): type
215
+ if (el.classList) {
216
+ return el.classList.contains(ION_FOCUSABLE);
217
+ }
218
+ return false;
219
+ });
220
+ setFocus(toFocus);
221
+ }
222
+ };
223
+ const onFocusout = () => {
224
+ if (ref.activeElement === root) {
225
+ setFocus([]);
226
+ }
227
+ };
228
+ ref.addEventListener('keydown', onKeydown);
229
+ ref.addEventListener('focusin', onFocusin);
230
+ ref.addEventListener('focusout', onFocusout);
231
+ ref.addEventListener('touchstart', pointerDown, { passive: true });
232
+ ref.addEventListener('mousedown', pointerDown);
233
+ const destroy = () => {
234
+ ref.removeEventListener('keydown', onKeydown);
235
+ ref.removeEventListener('focusin', onFocusin);
236
+ ref.removeEventListener('focusout', onFocusout);
237
+ ref.removeEventListener('touchstart', pointerDown);
238
+ ref.removeEventListener('mousedown', pointerDown);
239
+ };
240
+ return {
241
+ destroy,
242
+ setFocus,
243
+ };
244
+ };
245
+
246
+ var focusVisible = /*#__PURE__*/Object.freeze({
247
+ __proto__: null,
248
+ focusElements: focusElements,
249
+ getOrInitFocusVisibleUtility: getOrInitFocusVisibleUtility,
250
+ startFocusVisible: startFocusVisible
251
+ });
252
+
253
+ const transitionEndAsync = (el, expectedDuration = 0) => {
254
+ return new Promise((resolve) => {
255
+ transitionEnd(el, expectedDuration, resolve);
256
+ });
257
+ };
258
+ /**
259
+ * Allows developer to wait for a transition
260
+ * to finish and fallback to a timer if the
261
+ * transition is cancelled or otherwise
262
+ * never finishes. Also see transitionEndAsync
263
+ * which is an await-able version of this.
264
+ */
265
+ const transitionEnd = (el, expectedDuration = 0, callback) => {
266
+ let unRegTrans;
267
+ let animationTimeout;
268
+ const opts = { passive: true };
269
+ const ANIMATION_FALLBACK_TIMEOUT = 500;
270
+ const unregister = () => {
271
+ if (unRegTrans) {
272
+ unRegTrans();
273
+ }
274
+ };
275
+ const onTransitionEnd = (ev) => {
276
+ if (ev === undefined || el === ev.target) {
277
+ unregister();
278
+ callback(ev);
279
+ }
280
+ };
281
+ if (el) {
282
+ el.addEventListener('webkitTransitionEnd', onTransitionEnd, opts);
283
+ el.addEventListener('transitionend', onTransitionEnd, opts);
284
+ animationTimeout = setTimeout(onTransitionEnd, expectedDuration + ANIMATION_FALLBACK_TIMEOUT);
285
+ unRegTrans = () => {
286
+ if (animationTimeout !== undefined) {
287
+ clearTimeout(animationTimeout);
288
+ animationTimeout = undefined;
289
+ }
290
+ el.removeEventListener('webkitTransitionEnd', onTransitionEnd, opts);
291
+ el.removeEventListener('transitionend', onTransitionEnd, opts);
292
+ };
293
+ }
294
+ return unregister;
295
+ };
296
+ /**
297
+ * Waits for a component to be ready for
298
+ * both custom element and non-custom element builds.
299
+ * If non-custom element build, el.componentOnReady
300
+ * will be used.
301
+ * For custom element builds, we wait a frame
302
+ * so that the inner contents of the component
303
+ * have a chance to render.
304
+ *
305
+ * Use this utility rather than calling
306
+ * el.componentOnReady yourself.
307
+ */
308
+ const componentOnReady = (el, callback) => {
309
+ if (el.componentOnReady) {
310
+ // eslint-disable-next-line custom-rules/no-component-on-ready-method
311
+ el.componentOnReady().then((resolvedEl) => callback(resolvedEl));
312
+ }
313
+ else {
314
+ raf(() => callback(el));
315
+ }
316
+ };
317
+ /**
318
+ * Promise-based wrapper around componentOnReady. Use when you need to await
319
+ * component readiness before accessing internal refs (e.g. in early lifecycle
320
+ * hooks like Vue onMounted with the custom elements build).
321
+ */
322
+ const waitForComponentReady = (el) => {
323
+ return new Promise((resolve) => componentOnReady(el, () => resolve(el)));
324
+ };
325
+ /**
326
+ * This functions checks if a Stencil component is using
327
+ * the lazy loaded build of Stencil. Returns `true` if
328
+ * the component is lazy loaded. Returns `false` otherwise.
329
+ */
330
+ const hasLazyBuild = (stencilEl) => {
331
+ return stencilEl.componentOnReady !== undefined;
332
+ };
333
+ /**
334
+ * Elements inside of web components sometimes need to inherit global attributes
335
+ * set on the host. For example, the inner input in `ion-input` should inherit
336
+ * the `title` attribute that developers set directly on `ion-input`. This
337
+ * helper function should be called in componentWillLoad and assigned to a variable
338
+ * that is later used in the render function.
339
+ *
340
+ * This does not need to be reactive as changing attributes on the host element
341
+ * does not trigger a re-render.
342
+ */
343
+ const inheritAttributes = (el, attributes = []) => {
344
+ const attributeObject = {};
345
+ attributes.forEach((attr) => {
346
+ if (el.hasAttribute(attr)) {
347
+ const value = el.getAttribute(attr);
348
+ if (value !== null) {
349
+ attributeObject[attr] = el.getAttribute(attr);
350
+ }
351
+ el.removeAttribute(attr);
352
+ }
353
+ });
354
+ return attributeObject;
355
+ };
356
+ /**
357
+ * List of available ARIA attributes + `role`.
358
+ * Removed deprecated attributes.
359
+ * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes
360
+ */
361
+ const ariaAttributes = [
362
+ 'role',
363
+ 'aria-activedescendant',
364
+ 'aria-atomic',
365
+ 'aria-autocomplete',
366
+ 'aria-braillelabel',
367
+ 'aria-brailleroledescription',
368
+ 'aria-busy',
369
+ 'aria-checked',
370
+ 'aria-colcount',
371
+ 'aria-colindex',
372
+ 'aria-colindextext',
373
+ 'aria-colspan',
374
+ 'aria-controls',
375
+ 'aria-current',
376
+ 'aria-describedby',
377
+ 'aria-description',
378
+ 'aria-details',
379
+ 'aria-disabled',
380
+ 'aria-errormessage',
381
+ 'aria-expanded',
382
+ 'aria-flowto',
383
+ 'aria-haspopup',
384
+ 'aria-hidden',
385
+ 'aria-invalid',
386
+ 'aria-keyshortcuts',
387
+ 'aria-label',
388
+ 'aria-labelledby',
389
+ 'aria-level',
390
+ 'aria-live',
391
+ 'aria-multiline',
392
+ 'aria-multiselectable',
393
+ 'aria-orientation',
394
+ 'aria-owns',
395
+ 'aria-placeholder',
396
+ 'aria-posinset',
397
+ 'aria-pressed',
398
+ 'aria-readonly',
399
+ 'aria-relevant',
400
+ 'aria-required',
401
+ 'aria-roledescription',
402
+ 'aria-rowcount',
403
+ 'aria-rowindex',
404
+ 'aria-rowindextext',
405
+ 'aria-rowspan',
406
+ 'aria-selected',
407
+ 'aria-setsize',
408
+ 'aria-sort',
409
+ 'aria-valuemax',
410
+ 'aria-valuemin',
411
+ 'aria-valuenow',
412
+ 'aria-valuetext',
413
+ ];
414
+ /**
415
+ * Returns an array of aria attributes that should be copied from
416
+ * the shadow host element to a target within the light DOM.
417
+ * @param el The element that the attributes should be copied from.
418
+ * @param ignoreList The list of aria-attributes to ignore reflecting and removing from the host.
419
+ * Use this in instances where we manually specify aria attributes on the `<Host>` element.
420
+ */
421
+ const inheritAriaAttributes = (el, ignoreList) => {
422
+ let attributesToInherit = ariaAttributes;
423
+ return inheritAttributes(el, attributesToInherit);
424
+ };
425
+ const addEventListener = (el, eventName, callback, opts) => {
426
+ return el.addEventListener(eventName, callback, opts);
427
+ };
428
+ const removeEventListener = (el, eventName, callback, opts) => {
429
+ return el.removeEventListener(eventName, callback, opts);
430
+ };
431
+ /**
432
+ * Gets the root context of a shadow dom element
433
+ * On newer browsers this will be the shadowRoot,
434
+ * but for older browser this may just be the
435
+ * element itself.
436
+ *
437
+ * Useful for whenever you need to explicitly
438
+ * do "myElement.shadowRoot!.querySelector(...)".
439
+ */
440
+ const getElementRoot = (el, fallback = el) => {
441
+ return el.shadowRoot || fallback;
442
+ };
443
+ /**
444
+ * Patched version of requestAnimationFrame that avoids ngzone
445
+ * Use only when you know ngzone should not run
446
+ */
447
+ const raf = (h) => {
448
+ if (typeof __zone_symbol__requestAnimationFrame === 'function') {
449
+ return __zone_symbol__requestAnimationFrame(h);
450
+ }
451
+ if (typeof requestAnimationFrame === 'function') {
452
+ return requestAnimationFrame(h);
453
+ }
454
+ return setTimeout(h);
455
+ };
456
+ const hasShadowDom = (el) => {
457
+ return !!el.shadowRoot && !!el.attachShadow;
458
+ };
459
+ /**
460
+ * Focuses a given element while ensuring proper focus management
461
+ * within the Ionic framework. If the element is marked as `ion-focusable`,
462
+ * this function will delegate focus handling to `ion-app` or manually
463
+ * apply focus when a custom app root is used.
464
+ *
465
+ * This function helps maintain accessibility and expected focus behavior
466
+ * in both standard and custom root environments.
467
+ *
468
+ * @param el - The element to focus.
469
+ */
470
+ const focusVisibleElement = (el) => {
471
+ el.focus();
472
+ /**
473
+ * When programmatically focusing an element,
474
+ * the focus-visible utility will not run because
475
+ * it is expecting a keyboard event to have triggered this;
476
+ * however, there are times when we need to manually control
477
+ * this behavior so we call the `setFocus` method on ion-app
478
+ * which will let us explicitly set the elements to focus.
479
+ *
480
+ * Note: The element passed to this function might be an inner
481
+ * focusable element (e.g., a native <button> inside ion-button's
482
+ * shadow root). If so, we need to find the host element that has
483
+ * the ion-focusable class to pass to setFocus.
484
+ */
485
+ let elToFocus = el;
486
+ // If the element doesn't have ion-focusable, check if it's inside
487
+ // a shadow root and use the host element instead
488
+ if (!el.classList.contains('ion-focusable')) {
489
+ const rootNode = el.getRootNode();
490
+ if (rootNode instanceof ShadowRoot && rootNode.host instanceof HTMLElement) {
491
+ elToFocus = rootNode.host;
492
+ }
493
+ }
494
+ if (elToFocus.classList.contains('ion-focusable')) {
495
+ const appRootSelector = config.get('appRootSelector', 'ion-app');
496
+ const app = elToFocus.closest(appRootSelector);
497
+ if (app) {
498
+ if (appRootSelector === 'ion-app') {
499
+ /**
500
+ * If the app root is the default, then it will be
501
+ * in charge of setting focus. This is because the
502
+ * focus-visible utility is attached to the app root
503
+ * and will handle setting focus on the correct element.
504
+ */
505
+ app.setFocus([elToFocus]);
506
+ }
507
+ else {
508
+ /**
509
+ * When using a custom app root selector, the focus-visible
510
+ * utility is not available to manage focus automatically.
511
+ * If we set focus immediately, the element may not be fully
512
+ * rendered or interactive, especially if it was just added
513
+ * to the DOM. Using requestAnimationFrame ensures that focus
514
+ * is applied on the next frame, allowing the DOM to settle
515
+ * before changing focus.
516
+ */
517
+ requestAnimationFrame(() => {
518
+ /**
519
+ * The focus-visible utility is used to set focus on an
520
+ * element that uses `ion-focusable`.
521
+ */
522
+ focusElements([elToFocus]);
523
+ });
524
+ }
525
+ }
526
+ }
527
+ };
528
+ /**
529
+ * This method is used to add a hidden input to a host element that contains
530
+ * a Shadow DOM. It does not add the input inside of the Shadow root which
531
+ * allows it to be picked up inside of forms. It should contain the same
532
+ * values as the host element.
533
+ *
534
+ * @param always Add a hidden input even if the container does not use Shadow
535
+ * @param container The element where the input will be added
536
+ * @param name The name of the input
537
+ * @param value The value of the input
538
+ * @param disabled If true, the input is disabled
539
+ */
540
+ const renderHiddenInput = (always, container, name, value, disabled) => {
541
+ {
542
+ let input = container.querySelector('input.aux-input');
543
+ if (!input) {
544
+ input = container.ownerDocument.createElement('input');
545
+ input.type = 'hidden';
546
+ input.classList.add('aux-input');
547
+ container.appendChild(input);
548
+ }
549
+ input.disabled = disabled;
550
+ input.name = name;
551
+ input.value = value || '';
552
+ }
553
+ };
554
+ const clamp = (min, n, max) => {
555
+ return Math.max(min, Math.min(n, max));
556
+ };
557
+ const assert = (actual, reason) => {
558
+ if (!actual) {
559
+ const message = 'ASSERT: ' + reason;
560
+ printIonError(message);
561
+ debugger; // eslint-disable-line
562
+ throw new Error(message);
563
+ }
564
+ };
565
+ const pointerCoord = (ev) => {
566
+ // get X coordinates for either a mouse click
567
+ // or a touch depending on the given event
568
+ if (ev) {
569
+ const changedTouches = ev.changedTouches;
570
+ if (changedTouches && changedTouches.length > 0) {
571
+ const touch = changedTouches[0];
572
+ return { x: touch.clientX, y: touch.clientY };
573
+ }
574
+ if (ev.pageX !== undefined) {
575
+ return { x: ev.pageX, y: ev.pageY };
576
+ }
577
+ }
578
+ return { x: 0, y: 0 };
579
+ };
580
+ /**
581
+ * @hidden
582
+ * Given a side, return if it should be on the end
583
+ * based on the value of dir
584
+ * @param side the side
585
+ * @param isRTL whether the application dir is rtl
586
+ */
587
+ const isEndSide = (side) => {
588
+ const isRTL = document.dir === 'rtl';
589
+ switch (side) {
590
+ case 'start':
591
+ return isRTL;
592
+ case 'end':
593
+ return !isRTL;
594
+ default:
595
+ throw new Error(`"${side}" is not a valid value for [side]. Use "start" or "end" instead.`);
596
+ }
597
+ };
598
+ const debounceEvent = (event, wait) => {
599
+ const original = event._original || event;
600
+ return {
601
+ _original: event,
602
+ emit: debounce(original.emit.bind(original), wait),
603
+ };
604
+ };
605
+ const debounce = (func, wait = 0) => {
606
+ let timer;
607
+ return (...args) => {
608
+ clearTimeout(timer);
609
+ timer = setTimeout(func, wait, ...args);
610
+ };
611
+ };
612
+ /**
613
+ * Check whether the two string maps are shallow equal.
614
+ *
615
+ * undefined is treated as an empty map.
616
+ *
617
+ * @returns whether the keys are the same and the values are shallow equal.
618
+ */
619
+ const shallowEqualStringMap = (map1, map2) => {
620
+ map1 !== null && map1 !== void 0 ? map1 : (map1 = {});
621
+ map2 !== null && map2 !== void 0 ? map2 : (map2 = {});
622
+ if (map1 === map2) {
623
+ return true;
624
+ }
625
+ const keys1 = Object.keys(map1);
626
+ if (keys1.length !== Object.keys(map2).length) {
627
+ return false;
628
+ }
629
+ for (const k1 of keys1) {
630
+ if (!(k1 in map2)) {
631
+ return false;
632
+ }
633
+ if (map1[k1] !== map2[k1]) {
634
+ return false;
635
+ }
636
+ }
637
+ return true;
638
+ };
639
+ /**
640
+ * Checks input for usable number. Not NaN and not Infinite.
641
+ */
642
+ const isSafeNumber = (input) => {
643
+ return typeof input === 'number' && !isNaN(input) && isFinite(input);
644
+ };
645
+ const SCHEME = /^[a-z][a-z0-9+\-.]*:/;
646
+ const openURL = async (url, ev, direction, animation) => {
647
+ if (url != null && url[0] !== '#' && !SCHEME.test(url)) {
648
+ const router = document.querySelector('ion-router');
649
+ if (router) {
650
+ if (ev != null) {
651
+ ev.preventDefault();
652
+ }
653
+ return router.push(url, direction, animation);
654
+ }
655
+ }
656
+ return false;
657
+ };
658
+ /**
659
+ * Deep merges two objects, with source properties overriding target properties
660
+ * @param target The target object to merge into
661
+ * @param source The source object to merge from
662
+ * @returns The merged object
663
+ */
664
+ const deepMerge = (target, source) => {
665
+ var _a;
666
+ const result = Object.assign({}, target);
667
+ for (const key in source) {
668
+ if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {
669
+ result[key] = deepMerge((_a = result[key]) !== null && _a !== void 0 ? _a : {}, source[key]);
670
+ }
671
+ else {
672
+ result[key] = source[key];
673
+ }
674
+ }
675
+ return result;
676
+ };
677
+
678
+ var __rest = (undefined && undefined.__rest) || function (s, e) {
679
+ var t = {};
680
+ for (var p in s)
681
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
682
+ t[p] = s[p];
683
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
684
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
685
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
686
+ t[p[i]] = s[p[i]];
687
+ }
688
+ return t;
689
+ };
690
+ const CSS_PROPS_PREFIX = '--ion-';
691
+ const CSS_ROOT_SELECTOR = ':root';
692
+ /**
693
+ * Checks if an element has a parent matching the specified selector.
694
+ * This handles an element in both light DOM and shadow DOM contexts.
695
+ * @param selector The parent selector to check for (e.g., 'ion-datetime'
696
+ * or 'ion-toolbar[color]').
697
+ * @param el The element to check.
698
+ * @returns `true` if the element has a parent matching the specified selector,
699
+ * `false` otherwise.
700
+ */
701
+ const hostContext = (selector, el) => {
702
+ // Check the light DOM first
703
+ if (el.closest(selector) !== null) {
704
+ return true;
705
+ }
706
+ // For attribute or class selectors (e.g., 'ion-toolbar[color]' or
707
+ // 'ion-toolbar.ion-color') we can only check light DOM since tagName
708
+ // doesn't include attributes or classes.
709
+ if (selector.includes('[') || selector.includes('.')) {
710
+ return false;
711
+ }
712
+ // Check the shadow DOM by looking at the shadow root host and
713
+ // converting the selector to uppercase to compare with tagName
714
+ const upperCaseTagName = selector.toUpperCase();
715
+ const rootNode = el.getRootNode();
716
+ const shadowHost = rootNode instanceof ShadowRoot ? rootNode.host : null;
717
+ return (shadowHost === null || shadowHost === void 0 ? void 0 : shadowHost.tagName) === upperCaseTagName;
718
+ };
719
+ /**
720
+ * Create the mode and color classes for the component based on the classes passed in
721
+ */
722
+ const createColorClasses = (color, cssClassMap) => {
723
+ return typeof color === 'string' && color.length > 0
724
+ ? Object.assign({ 'ion-color': true, [`ion-color-${color}`]: true }, cssClassMap) : cssClassMap;
725
+ };
726
+ const getClassList = (classes) => {
727
+ if (classes !== undefined) {
728
+ const array = Array.isArray(classes) ? classes : classes.split(' ');
729
+ return array
730
+ .filter((c) => c != null)
731
+ .map((c) => c.trim())
732
+ .filter((c) => c !== '');
733
+ }
734
+ return [];
735
+ };
736
+ const getClassMap = (classes) => {
737
+ const map = {};
738
+ getClassList(classes).forEach((c) => (map[c] = true));
739
+ return map;
740
+ };
741
+ /**
742
+ * Gets and merges custom themes based on mode
743
+ * @param customTheme The custom theme
744
+ * @param mode The current mode (ios | md)
745
+ * @returns The merged custom theme
746
+ */
747
+ const getCustomTheme = (customTheme, mode) => {
748
+ if (!customTheme)
749
+ return undefined;
750
+ // Check if the custom theme contains mode overrides (ios | md)
751
+ if (customTheme.ios || customTheme.md) {
752
+ const { ios, md } = customTheme, baseCustomTheme = __rest(customTheme, ["ios", "md"]);
753
+ // Flatten the mode-specific overrides based on current mode
754
+ if (mode === 'ios' && ios) {
755
+ return deepMerge(baseCustomTheme, ios);
756
+ }
757
+ else if (mode === 'md' && md) {
758
+ return deepMerge(baseCustomTheme, md);
759
+ }
760
+ return baseCustomTheme;
761
+ }
762
+ return customTheme;
763
+ };
764
+ /**
765
+ * Flattens the theme object into CSS custom properties
766
+ * @param theme The theme object to flatten
767
+ * @param prefix The CSS prefix to use (e.g., '--ion-')
768
+ * @returns CSS string with custom properties
769
+ */
770
+ const generateCSSVars = (theme, prefix = CSS_PROPS_PREFIX) => {
771
+ // Logs do not need to be printed because palette objects are optional
772
+ const themeValidity = isValidTheme(theme, 'generateCSSVars', false);
773
+ if (!themeValidity) {
774
+ return undefined;
775
+ }
776
+ const cssProps = Object.entries(theme)
777
+ .flatMap(([key, val]) => {
778
+ var _a, _b, _c, _d, _e, _f;
779
+ // Skip invalid keys or values
780
+ if (!key || typeof key !== 'string' || val === null || val === undefined) {
781
+ return [];
782
+ }
783
+ key = convertToKebabCase(key);
784
+ // Do not generate CSS variables for excluded keys
785
+ const excludedKeys = ['name', 'enabled', 'config'];
786
+ if (excludedKeys.includes(key)) {
787
+ return [];
788
+ }
789
+ // Special handling for 'base' property - don't add suffix
790
+ if (key === 'base') {
791
+ return [`${prefix.slice(0, -1)}: ${val};`];
792
+ }
793
+ // Generate rgb variables for base and contrast color variants
794
+ // These are only generated when processing global color objects,
795
+ // not component-level color overrides
796
+ // TODO(): this only works with hex values
797
+ if ((key === 'bold' || key === 'subtle') && prefix.includes('color')) {
798
+ if (typeof val === 'object' && val !== null) {
799
+ return Object.entries(val).flatMap(([property, hexValue]) => {
800
+ if (typeof hexValue === 'string' && hexValue.startsWith('#')) {
801
+ // For 'base' property, don't include the property name in the CSS variable
802
+ const varName = property === 'base' ? `${prefix}${key}` : `${prefix}${key}-${property}`;
803
+ const cssVars = [`${varName}: ${hexValue};`];
804
+ // Only add RGB values for base and contrast
805
+ if (property === 'base' || property === 'contrast') {
806
+ const rgbVarName = property === 'base' ? `${prefix}${key}-rgb` : `${prefix}${key}-${property}-rgb`;
807
+ cssVars.push(`${rgbVarName}: ${hexToRgb(hexValue)};`);
808
+ }
809
+ return cssVars;
810
+ }
811
+ return [];
812
+ });
813
+ }
814
+ }
815
+ // If it's a font-sizes key, create rem version
816
+ // This is necessary to support the dynamic font size feature
817
+ if (key === 'font-sizes' && typeof val === 'object' && val !== null) {
818
+ // Access the root font size from the global theme context
819
+ const fontSizeBase = parseFloat((_f = (_e = (_d = (_c = (_b = (_a = window.Ionic) === null || _a === void 0 ? void 0 : _a.config) === null || _b === void 0 ? void 0 : _b.get) === null || _c === void 0 ? void 0 : _c.call(_b, 'theme')) === null || _d === void 0 ? void 0 : _d.fontSizes) === null || _e === void 0 ? void 0 : _e.root) !== null && _f !== void 0 ? _f : '16');
820
+ return Object.entries(val).flatMap(([sizeKey, sizeValue]) => {
821
+ if (!sizeKey || sizeValue == null)
822
+ return [];
823
+ const remValue = `${parseFloat(sizeValue) / fontSizeBase}rem`;
824
+ // Return both px and rem values as separate array items
825
+ return [
826
+ `${prefix}${key}-${sizeKey}: ${sizeValue};`, // original px value
827
+ `${prefix}${key}-${sizeKey}-rem: ${remValue};`, // rem value
828
+ ];
829
+ });
830
+ }
831
+ return typeof val === 'object' && val !== null
832
+ ? generateCSSVars(val, `${prefix}${key}-`)
833
+ : [`${prefix}${key}: ${val};`];
834
+ })
835
+ .filter(Boolean);
836
+ return cssProps.join('\n');
837
+ };
838
+ /**
839
+ * Generates a CSS class containing the CSS variables for each color
840
+ * in the theme. Each color has generic bold and subtle variables that are mapped
841
+ * to the specific color's bold and subtle variables. The bold colors will temporarily
842
+ * include a fallback to remove the bold prefix. For example, the primary
843
+ * color will return the following CSS class:
844
+ *
845
+ * ```css
846
+ * :root .ion-color-primary {
847
+ * --ion-color-base: var(--ion-color-primary, var(--ion-color-primary-bold));
848
+ * --ion-color-base-rgb: var(--ion-color-primary-rgb, var(--ion-color-primary-bold-rgb));
849
+ * --ion-color-contrast: var(--ion-color-primary-contrast, var(--ion-color-primary-bold-contrast));
850
+ * --ion-color-contrast-rgb: var(--ion-color-primary-contrast-rgb, var(--ion-color-primary-bold-contrast-rgb));
851
+ * --ion-color-shade: var(--ion-color-primary-shade, var(--ion-color-primary-bold-shade));
852
+ * --ion-color-tint: var(--ion-color-primary-tint, var(--ion-color-primary-bold-tint));
853
+ * --ion-color-foreground: var(--ion-color-primary, var(--ion-color-primary-foreground, var(--ion-color-primary-bold-foreground)));
854
+ *
855
+ * --ion-color-subtle-base: var(--ion-color-primary-subtle);
856
+ * --ion-color-subtle-base-rgb: var(--ion-color-primary-subtle-rgb);
857
+ * --ion-color-subtle-contrast: var(--ion-color-primary-subtle-contrast);
858
+ * --ion-color-subtle-contrast-rgb: var(--ion-color-primary-subtle-contrast-rgb);
859
+ * --ion-color-subtle-shade: var(--ion-color-primary-subtle-shade);
860
+ * --ion-color-subtle-tint: var(--ion-color-primary-subtle-tint);
861
+ * --ion-color-subtle-foreground: var(--ion-color-primary-subtle-foreground);
862
+ * }
863
+ * ```
864
+ *
865
+ * @param theme The theme object containing color definitions
866
+ * @returns CSS string with .ion-color-{colorName} utility classes
867
+ */
868
+ const generateColorClasses = (theme) => {
869
+ var _a, _b;
870
+ // Look for colors in the light palette first, then fallback to the
871
+ // direct color property if there is no light palette
872
+ const colors = ((_b = (_a = theme === null || theme === void 0 ? void 0 : theme.palette) === null || _a === void 0 ? void 0 : _a.light) === null || _b === void 0 ? void 0 : _b.color) || (theme === null || theme === void 0 ? void 0 : theme.color);
873
+ if (!colors) {
874
+ return '';
875
+ }
876
+ if (typeof colors !== 'object' || Array.isArray(colors)) {
877
+ const colorsType = Array.isArray(colors) ? 'array' : typeof colors;
878
+ printIonWarning(`Invalid color configuration in theme. Expected color to be an object, but found ${colorsType}.`, theme);
879
+ return '';
880
+ }
881
+ const generatedColorClasses = [];
882
+ Object.keys(colors).forEach((colorName) => {
883
+ const colorVariants = colors[colorName];
884
+ if (!colorVariants || typeof colorVariants !== 'object')
885
+ return;
886
+ const cssVariableRules = [];
887
+ // Generate CSS variables for bold variant
888
+ // Includes base color variables without the bold modifier for
889
+ // backwards compatibility.
890
+ // TODO: Remove the fallbacks once the bold variables are the default
891
+ if (colorVariants.bold) {
892
+ cssVariableRules.push(`--ion-color-base: var(--ion-color-${colorName}, var(--ion-color-${colorName}-bold)) !important;`, `--ion-color-base-rgb: var(--ion-color-${colorName}-rgb, var(--ion-color-${colorName}-bold-rgb)) !important;`, `--ion-color-contrast: var(--ion-color-${colorName}-contrast, var(--ion-color-${colorName}-bold-contrast)) !important;`, `--ion-color-contrast-rgb: var(--ion-color-${colorName}-contrast-rgb, var(--ion-color-${colorName}-bold-contrast-rgb)) !important;`, `--ion-color-shade: var(--ion-color-${colorName}-shade, var(--ion-color-${colorName}-bold-shade)) !important;`, `--ion-color-tint: var(--ion-color-${colorName}-tint, var(--ion-color-${colorName}-bold-tint)) !important;`, `--ion-color-foreground: var(--ion-color-${colorName}-foreground, var(--ion-color-${colorName}-bold-foreground)) !important;`);
893
+ }
894
+ // Generate CSS variables for subtle variant
895
+ if (colorVariants.subtle) {
896
+ cssVariableRules.push(`--ion-color-subtle-base: var(--ion-color-${colorName}-subtle) !important;`, `--ion-color-subtle-base-rgb: var(--ion-color-${colorName}-subtle-rgb) !important;`, `--ion-color-subtle-contrast: var(--ion-color-${colorName}-subtle-contrast) !important;`, `--ion-color-subtle-contrast-rgb: var(--ion-color-${colorName}-subtle-contrast-rgb) !important;`, `--ion-color-subtle-shade: var(--ion-color-${colorName}-subtle-shade) !important;`, `--ion-color-subtle-tint: var(--ion-color-${colorName}-subtle-tint) !important;`, `--ion-color-subtle-foreground: var(--ion-color-${colorName}-subtle-foreground) !important;`);
897
+ }
898
+ if (cssVariableRules.length > 0) {
899
+ const colorUtilityClass = `
900
+ :root .ion-color-${colorName} {
901
+ ${cssVariableRules.join('\n ')}
902
+ }
903
+ `;
904
+ generatedColorClasses.push(colorUtilityClass);
905
+ }
906
+ });
907
+ return generatedColorClasses.join('\n');
908
+ };
909
+ /**
910
+ * Creates a style element and injects its CSS into a target element
911
+ * @param css The CSS string to inject
912
+ * @param target The target element to inject into
913
+ */
914
+ const injectCSS = (css, target = document.head) => {
915
+ const style = document.createElement('style');
916
+ style.innerHTML = css;
917
+ target.appendChild(style);
918
+ };
919
+ /**
920
+ * Generates global CSS variables from a theme object
921
+ * @param theme The theme object to generate CSS for
922
+ * @returns The generated CSS string
923
+ */
924
+ const generateGlobalThemeCSS = (theme) => {
925
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
926
+ const themeValidity = isValidTheme(theme, 'generateGlobalThemeCSS');
927
+ if (!themeValidity) {
928
+ return '';
929
+ }
930
+ // Exclude palette, components, and config from the default tokens
931
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
932
+ const { palette} = theme, defaultTokens = __rest(theme, ["palette", "components", "config"]);
933
+ // Generate CSS variables for the default design tokens
934
+ const defaultTokensCSS = generateCSSVars(defaultTokens);
935
+ // Generate CSS variables for the light color palette
936
+ const lightTokensCSS = generateCSSVars(palette.light);
937
+ // Generate CSS variables for the dark color palette
938
+ const darkTokensCSS = generateCSSVars(palette.dark);
939
+ // Generate CSS variable for the high contrast color palette
940
+ const highContrastTokensCSS = generateCSSVars(palette.highContrast);
941
+ // Generate CSS variable for the high contrast dark color palette
942
+ const highContrastDarkTokensCSS = generateCSSVars(palette.highContrastDark);
943
+ let paletteTokensCSS = lightTokensCSS;
944
+ if (((_a = palette.highContrastDark) === null || _a === void 0 ? void 0 : _a.enabled) === 'always') {
945
+ // Include CSS variables for the high contrast dark color palette instead of
946
+ // the light palette if high contrast dark palette enabled is 'always'
947
+ paletteTokensCSS = highContrastDarkTokensCSS;
948
+ }
949
+ else if (((_b = palette.highContrast) === null || _b === void 0 ? void 0 : _b.enabled) === 'always') {
950
+ // Include CSS variables for the dark color palette instead of
951
+ // the light palette if dark palette enabled is 'always'
952
+ paletteTokensCSS = highContrastTokensCSS;
953
+ }
954
+ else if (((_c = palette.dark) === null || _c === void 0 ? void 0 : _c.enabled) === 'always') {
955
+ // Include CSS variables for the dark color palette instead of
956
+ // the light palette if dark palette enabled is 'always'
957
+ paletteTokensCSS = darkTokensCSS;
958
+ }
959
+ let css = `
960
+ ${CSS_ROOT_SELECTOR} {
961
+ ${defaultTokensCSS}
962
+ ${paletteTokensCSS || ''}
963
+ }
964
+ `;
965
+ if (((_d = palette.highContrastDark) === null || _d === void 0 ? void 0 : _d.enabled) === 'class' && highContrastDarkTokensCSS) {
966
+ // Include CSS variables for the high contrast dark color palette inside of a
967
+ // class if high contrast dark palette enabled is 'class'
968
+ css += `
969
+ .ion-palette-high-contrast.ion-palette-dark {
970
+ ${highContrastDarkTokensCSS}
971
+ }
972
+ `;
973
+ }
974
+ else if (((_e = palette.highContrast) === null || _e === void 0 ? void 0 : _e.enabled) === 'class' && highContrastTokensCSS) {
975
+ // Include CSS variables for the high contrast color palette inside of a
976
+ // class if high contrast palette enabled is 'class'
977
+ css += `
978
+ .ion-palette-high-contrast {
979
+ ${highContrastTokensCSS}
980
+ }
981
+ `;
982
+ }
983
+ else if (((_f = palette.dark) === null || _f === void 0 ? void 0 : _f.enabled) === 'class' && darkTokensCSS) {
984
+ // Include CSS variables for the dark color palette inside of a
985
+ // class if dark palette enabled is 'class'
986
+ css += `
987
+ .ion-palette-dark {
988
+ ${darkTokensCSS}
989
+ }
990
+ `;
991
+ }
992
+ if (((_g = palette.highContrastDark) === null || _g === void 0 ? void 0 : _g.enabled) === 'system' && highContrastDarkTokensCSS) {
993
+ // Include CSS variables for the high contrast dark color palette inside of the
994
+ // high contrast dark media query if high contrast dark palette enabled is 'system'
995
+ css += `
996
+ @media (prefers-contrast: more) and (prefers-color-scheme: dark) {
997
+ ${CSS_ROOT_SELECTOR} {
998
+ ${highContrastDarkTokensCSS}
999
+ }
1000
+ }
1001
+ `;
1002
+ }
1003
+ else if (((_h = palette.highContrast) === null || _h === void 0 ? void 0 : _h.enabled) === 'system' && highContrastTokensCSS) {
1004
+ // Include CSS variables for the high contrast color palette inside of the
1005
+ // high contrast media query if high contrast palette enabled is 'system'
1006
+ css += `
1007
+ @media (prefers-contrast: more) {
1008
+ ${CSS_ROOT_SELECTOR} {
1009
+ ${highContrastTokensCSS}
1010
+ }
1011
+ }
1012
+ `;
1013
+ }
1014
+ else if (((_j = palette.dark) === null || _j === void 0 ? void 0 : _j.enabled) === 'system' && darkTokensCSS) {
1015
+ // Include CSS variables for the dark color palette inside of the
1016
+ // dark color scheme media query if dark palette enabled is 'system'
1017
+ css += `
1018
+ @media (prefers-color-scheme: dark) {
1019
+ ${CSS_ROOT_SELECTOR} {
1020
+ ${darkTokensCSS}
1021
+ }
1022
+ }
1023
+ `;
1024
+ }
1025
+ // Add color classes
1026
+ const colorClasses = generateColorClasses(theme);
1027
+ return css + '\n' + colorClasses;
1028
+ };
1029
+ /**
1030
+ * Applies the global theme from the provided base theme and user theme
1031
+ * @param baseTheme The default theme
1032
+ * @param userTheme The user's custom theme (optional)
1033
+ * @returns The combined theme object (or base theme if no user theme was provided)
1034
+ */
1035
+ const applyGlobalTheme = (baseTheme, userTheme) => {
1036
+ // If no base theme provided, error
1037
+ if (typeof baseTheme !== 'object' || Array.isArray(baseTheme)) {
1038
+ console.error('applyGlobalTheme: Valid base theme object is required', baseTheme);
1039
+ return {};
1040
+ }
1041
+ // If no user theme provided or it is invalid, apply base theme
1042
+ if (!userTheme || typeof userTheme !== 'object' || Array.isArray(userTheme)) {
1043
+ if (userTheme) {
1044
+ console.error('applyGlobalTheme: Invalid user theme provided', userTheme);
1045
+ }
1046
+ injectCSS(generateGlobalThemeCSS(baseTheme));
1047
+ return baseTheme;
1048
+ }
1049
+ // Merge themes and apply
1050
+ const mergedTheme = deepMerge(baseTheme, userTheme);
1051
+ injectCSS(generateGlobalThemeCSS(mergedTheme));
1052
+ return mergedTheme;
1053
+ };
1054
+ /**
1055
+ * Generates component's themed CSS class with CSS variables
1056
+ * from its theme object
1057
+ * @param componentTheme The component's object to generate CSS for (e.g., IonChip { })
1058
+ * @param components An object mapping component names (e.g. `IonChip`) to a nested
1059
+ * design-token configuration. Each configuration can contain arbitrary levels of
1060
+ * token groups (such as `size`, `state`, `shape`, `variant`, etc.), where leaf values
1061
+ * are CSS-compatible values. The structure is recursively flattened into CSS custom
1062
+ * properties using kebab-case keys and an `--ion-<component>-` prefix.
1063
+ *
1064
+ * Example:
1065
+ * ```json
1066
+ * {
1067
+ * IonChip: {
1068
+ * size: { small: { height: "24px" } },
1069
+ * state: { disabled: { opacity: "0.4" } }
1070
+ * }
1071
+ * }
1072
+ * ```
1073
+ *
1074
+ * Becomes:
1075
+ * ```css
1076
+ * ion-chip {
1077
+ * --ion-chip-size-small-height: 24px;
1078
+ * --ion-chip-state-disabled-opacity: 0.4;
1079
+ * }
1080
+ * ```
1081
+ * @returns string containing the component's themed CSS variables
1082
+ */
1083
+ const generateComponentsThemeCSS = (components) => {
1084
+ let css = '';
1085
+ for (const [component, componentTokens] of Object.entries(components)) {
1086
+ const componentTag = convertToKebabCase(component);
1087
+ const vars = generateCSSVars(componentTokens, `--${componentTag}-`);
1088
+ const componentBlock = `
1089
+ ${componentTag} {
1090
+ ${vars}
1091
+ }
1092
+ `;
1093
+ css += componentBlock;
1094
+ }
1095
+ return css;
1096
+ };
1097
+ /**
1098
+ * Applies a component theme to an element if it exists in the custom theme
1099
+ * @param element The element to apply the theme to
1100
+ * @returns true if theme was applied, false otherwise
1101
+ */
1102
+ const applyComponentsTheme = (theme) => {
1103
+ const themeValidity = isValidTheme(theme, 'applyComponentsTheme');
1104
+ if (!themeValidity) {
1105
+ return '';
1106
+ }
1107
+ const { components } = theme;
1108
+ if (!components) {
1109
+ return '';
1110
+ }
1111
+ injectCSS(generateComponentsThemeCSS(components));
1112
+ return components;
1113
+ };
1114
+ /**
1115
+ * Parses a hex color string and returns RGB values as an array.
1116
+ *
1117
+ * @param hex Hex color (e.g. `'#ffffff'` or `'#fff'`)
1118
+ *
1119
+ * @returns RGB values as `[r, g, b]` array
1120
+ */
1121
+ const parseHex = (hex) => {
1122
+ const cleanHex = hex.replace('#', '');
1123
+ // Short hex format like 'fff' → expand to 'ffffff'
1124
+ if (cleanHex.length === 3) {
1125
+ return [
1126
+ parseInt(cleanHex[0] + cleanHex[0], 16),
1127
+ parseInt(cleanHex[1] + cleanHex[1], 16),
1128
+ parseInt(cleanHex[2] + cleanHex[2], 16),
1129
+ ];
1130
+ // Full hex format like 'ffffff'
1131
+ }
1132
+ else {
1133
+ return [
1134
+ parseInt(cleanHex.substring(0, 2), 16),
1135
+ parseInt(cleanHex.substring(2, 4), 16),
1136
+ parseInt(cleanHex.substring(4, 6), 16),
1137
+ ];
1138
+ }
1139
+ };
1140
+ /**
1141
+ * Converts a hex color to a string of RGB comma-separated values.
1142
+ *
1143
+ * @param hex Hex color (e.g. `'#ffffff'` or `'#fff'`)
1144
+ *
1145
+ * @returns RGB string (e.g. `'255, 255, 255'`)
1146
+ */
1147
+ const hexToRgb = (hex) => {
1148
+ const [r, g, b] = parseHex(hex);
1149
+ return `${r}, ${g}, ${b}`;
1150
+ };
1151
+ /**
1152
+ * Mixes two hex colors by a given weight percentage and returns
1153
+ * it as a hex color.
1154
+ *
1155
+ * @param baseColor Base color (e.g. `'#0054e9'`)
1156
+ * @param mixColor Color to mix in (e.g. `'#000000'` or `'#fff'`)
1157
+ * @param weight Weight percentage as string - how much of mixColor to mix into baseColor (e.g. `'12%'`)
1158
+ *
1159
+ * @returns Mixed hex color (e.g. `'#004acd'`)
1160
+ */
1161
+ const mix = (baseColor, mixColor, weight) => {
1162
+ // Parse weight percentage
1163
+ const w = parseFloat(weight.replace('%', '')) / 100;
1164
+ // Parse both colors
1165
+ const [baseR, baseG, baseB] = parseHex(baseColor);
1166
+ const [mixR, mixG, mixB] = parseHex(mixColor);
1167
+ // Mix mixColor into baseColor by weight
1168
+ const r = Math.round(baseR * (1 - w) + mixR * w);
1169
+ const g = Math.round(baseG * (1 - w) + mixG * w);
1170
+ const b = Math.round(baseB * (1 - w) + mixB * w);
1171
+ const toHex = (n) => n.toString(16).padStart(2, '0');
1172
+ return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
1173
+ };
1174
+ /**
1175
+ * Converts a string to kebab-case
1176
+ *
1177
+ * @internal
1178
+ * @param str The string to convert (e.g., 'IonChip')
1179
+ * @returns The kebab-case string (e.g., 'ion-chip')
1180
+ */
1181
+ const convertToKebabCase = (str) => {
1182
+ return str
1183
+ .replace(/([a-z0-9])([A-Z])/g, '$1-$2')
1184
+ .replace(/[\s_]+/g, '-')
1185
+ .toLowerCase();
1186
+ };
1187
+ /**
1188
+ * Verifies that a theme object is valid
1189
+ *
1190
+ * @internal
1191
+ * @param theme The theme object to validate
1192
+ * @param source The source or context where the theme is being validated
1193
+ * @returns A boolean indicating whether the theme is valid
1194
+ */
1195
+ const isValidTheme = (theme, source, showLog = true) => {
1196
+ if (typeof theme !== 'object' || Array.isArray(theme)) {
1197
+ if (showLog) {
1198
+ printIonWarning(`${source}: Invalid theme object provided`, theme);
1199
+ }
1200
+ return false;
1201
+ }
1202
+ if (Object.keys(theme).length === 0) {
1203
+ if (showLog) {
1204
+ printIonWarning(`${source}: Empty theme object provided`, theme);
1205
+ }
1206
+ return false;
1207
+ }
1208
+ return true;
1209
+ };
1210
+ /**
1211
+ * Generates a series of color steps between a base color and a mix color.
1212
+ *
1213
+ * @param baseColor Base color (e.g. `'#0054e9'`)
1214
+ * @param mixColor Color to mix in (e.g. `'#000000'` or `'#fff'`)
1215
+ *
1216
+ * @internal
1217
+ * @returns An object containing the generated color steps
1218
+ */
1219
+ const generateColorSteps = (baseColor, mixColor) => {
1220
+ const colorSteps = {};
1221
+ for (let step = 50; step <= 950; step += 50) {
1222
+ const weight = `${step / 10}%`;
1223
+ colorSteps[`${step}`] = mix(baseColor, mixColor, weight);
1224
+ }
1225
+ return colorSteps;
1226
+ };
1227
+
1228
+ const colors$3 = {
1229
+ primary: '#4d8dff',
1230
+ secondary: '#46b1ff',
1231
+ tertiary: '#8482fb',
1232
+ success: '#2dd55b',
1233
+ warning: '#ffce31',
1234
+ danger: '#f24c58',
1235
+ light: '#222428',
1236
+ medium: '#989aa2',
1237
+ dark: '#f4f5f8',
1238
+ };
1239
+ const darkTheme = {
1240
+ enabled: 'never',
1241
+ color: {
1242
+ primary: {
1243
+ bold: {
1244
+ base: colors$3.primary,
1245
+ contrast: '#000',
1246
+ foreground: mix(colors$3.primary, '#000', '4%'),
1247
+ shade: mix(colors$3.primary, '#000', '4%'),
1248
+ tint: mix(colors$3.primary, '#fff', '12%'),
1249
+ },
1250
+ subtle: {
1251
+ base: mix('#000', colors$3.primary, '8%'),
1252
+ contrast: colors$3.primary,
1253
+ foreground: mix(colors$3.primary, '#000', '4%'),
1254
+ shade: mix('#000', colors$3.primary, '4%'),
1255
+ tint: mix('#000', colors$3.primary, '12%'),
1256
+ },
1257
+ },
1258
+ secondary: {
1259
+ bold: {
1260
+ base: colors$3.secondary,
1261
+ contrast: '#000',
1262
+ foreground: mix(colors$3.secondary, '#000', '4%'),
1263
+ shade: mix(colors$3.secondary, '#000', '4%'),
1264
+ tint: mix(colors$3.secondary, '#fff', '12%'),
1265
+ },
1266
+ subtle: {
1267
+ base: mix('#000', colors$3.secondary, '8%'),
1268
+ contrast: colors$3.secondary,
1269
+ foreground: mix(colors$3.secondary, '#000', '4%'),
1270
+ shade: mix('#000', colors$3.secondary, '4%'),
1271
+ tint: mix('#000', colors$3.secondary, '12%'),
1272
+ },
1273
+ },
1274
+ tertiary: {
1275
+ bold: {
1276
+ base: colors$3.tertiary,
1277
+ contrast: '#000',
1278
+ foreground: mix(colors$3.tertiary, '#000', '4%'),
1279
+ shade: mix(colors$3.tertiary, '#000', '4%'),
1280
+ tint: mix(colors$3.tertiary, '#fff', '12%'),
1281
+ },
1282
+ subtle: {
1283
+ base: mix('#000', colors$3.tertiary, '8%'),
1284
+ contrast: colors$3.tertiary,
1285
+ foreground: mix(colors$3.tertiary, '#000', '4%'),
1286
+ shade: mix('#000', colors$3.tertiary, '4%'),
1287
+ tint: mix('#000', colors$3.tertiary, '12%'),
1288
+ },
1289
+ },
1290
+ success: {
1291
+ bold: {
1292
+ base: colors$3.success,
1293
+ contrast: '#000',
1294
+ foreground: mix(colors$3.success, '#000', '4%'),
1295
+ shade: mix(colors$3.success, '#000', '4%'),
1296
+ tint: mix(colors$3.success, '#fff', '12%'),
1297
+ },
1298
+ subtle: {
1299
+ base: mix('#000', colors$3.success, '8%'),
1300
+ contrast: colors$3.success,
1301
+ foreground: mix(colors$3.success, '#000', '4%'),
1302
+ shade: mix('#000', colors$3.success, '4%'),
1303
+ tint: mix('#000', colors$3.success, '12%'),
1304
+ },
1305
+ },
1306
+ warning: {
1307
+ bold: {
1308
+ base: colors$3.warning,
1309
+ contrast: '#000',
1310
+ foreground: mix(colors$3.warning, '#000', '4%'),
1311
+ shade: mix(colors$3.warning, '#000', '4%'),
1312
+ tint: mix(colors$3.warning, '#fff', '12%'),
1313
+ },
1314
+ subtle: {
1315
+ base: mix('#000', colors$3.warning, '8%'),
1316
+ contrast: colors$3.warning,
1317
+ foreground: mix(colors$3.warning, '#000', '4%'),
1318
+ shade: mix('#000', colors$3.warning, '4%'),
1319
+ tint: mix('#000', colors$3.warning, '12%'),
1320
+ },
1321
+ },
1322
+ danger: {
1323
+ bold: {
1324
+ base: colors$3.danger,
1325
+ contrast: '#000',
1326
+ foreground: mix(colors$3.danger, '#000', '4%'),
1327
+ shade: mix(colors$3.danger, '#000', '4%'),
1328
+ tint: mix(colors$3.danger, '#fff', '12%'),
1329
+ },
1330
+ subtle: {
1331
+ base: mix('#000', colors$3.danger, '8%'),
1332
+ contrast: colors$3.danger,
1333
+ foreground: mix(colors$3.danger, '#000', '4%'),
1334
+ shade: mix('#000', colors$3.danger, '4%'),
1335
+ tint: mix('#000', colors$3.danger, '12%'),
1336
+ },
1337
+ },
1338
+ light: {
1339
+ bold: {
1340
+ base: colors$3.light,
1341
+ contrast: '#fff',
1342
+ foreground: mix(colors$3.light, '#000', '4%'),
1343
+ shade: mix(colors$3.light, '#000', '4%'),
1344
+ tint: mix(colors$3.light, '#fff', '12%'),
1345
+ },
1346
+ subtle: {
1347
+ base: mix('#000', colors$3.light, '8%'),
1348
+ contrast: colors$3.light,
1349
+ foreground: mix(colors$3.light, '#000', '4%'),
1350
+ shade: mix('#000', colors$3.light, '4%'),
1351
+ tint: mix('#000', colors$3.light, '12%'),
1352
+ },
1353
+ },
1354
+ medium: {
1355
+ bold: {
1356
+ base: colors$3.medium,
1357
+ contrast: '#000',
1358
+ foreground: mix(colors$3.medium, '#000', '4%'),
1359
+ shade: mix(colors$3.medium, '#000', '4%'),
1360
+ tint: mix(colors$3.medium, '#fff', '12%'),
1361
+ },
1362
+ subtle: {
1363
+ base: mix('#000', colors$3.medium, '8%'),
1364
+ contrast: colors$3.medium,
1365
+ foreground: mix(colors$3.medium, '#000', '4%'),
1366
+ shade: mix('#000', colors$3.medium, '4%'),
1367
+ tint: mix('#000', colors$3.medium, '12%'),
1368
+ },
1369
+ },
1370
+ dark: {
1371
+ bold: {
1372
+ base: colors$3.dark,
1373
+ contrast: '#000',
1374
+ foreground: mix(colors$3.dark, '#000', '4%'),
1375
+ shade: mix(colors$3.dark, '#000', '4%'),
1376
+ tint: mix(colors$3.dark, '#fff', '12%'),
1377
+ },
1378
+ subtle: {
1379
+ base: mix('#000', colors$3.dark, '8%'),
1380
+ contrast: colors$3.dark,
1381
+ foreground: mix(colors$3.dark, '#000', '4%'),
1382
+ shade: mix('#000', colors$3.dark, '4%'),
1383
+ tint: mix('#000', colors$3.dark, '12%'),
1384
+ },
1385
+ },
1386
+ },
1387
+ backgroundColor: '#000000',
1388
+ backgroundColorRgb: '0, 0, 0',
1389
+ textColor: '#ffffff',
1390
+ textColorRgb: '255, 255, 255',
1391
+ backgroundColorStep: {
1392
+ 50: '#0d0d0d',
1393
+ 100: '#1a1a1a',
1394
+ 150: '#262626',
1395
+ 200: '#333333',
1396
+ 250: '#404040',
1397
+ 300: '#4d4d4d',
1398
+ 350: '#595959',
1399
+ 400: '#666666',
1400
+ 450: '#737373',
1401
+ 500: '#898989',
1402
+ 550: '#8c8c8c',
1403
+ 600: '#999999',
1404
+ 650: '#a6a6a6',
1405
+ 700: '#b3b3b3',
1406
+ 750: '#bfbfbf',
1407
+ 800: '#cccccc',
1408
+ 850: '#d9d9d9',
1409
+ 900: '#e6e6e6',
1410
+ 950: '#f2f2f2',
1411
+ },
1412
+ textColorStep: {
1413
+ 50: '#f2f2f2',
1414
+ 100: '#e6e6e6',
1415
+ 150: '#d9d9d9',
1416
+ 200: '#cccccc',
1417
+ 250: '#bfbfbf',
1418
+ 300: '#b3b3b3',
1419
+ 350: '#a6a6a6',
1420
+ 400: '#999999',
1421
+ 450: '#8c8c8c',
1422
+ 500: '#808080',
1423
+ 550: '#737373',
1424
+ 600: '#666666',
1425
+ 650: '#595959',
1426
+ 700: '#4d4d4d',
1427
+ 750: '#404040',
1428
+ 800: '#333333',
1429
+ 850: '#262626',
1430
+ 900: '#1a1a1a',
1431
+ 950: '#0d0d0d',
1432
+ },
1433
+ components: {
1434
+ IonCard: {
1435
+ background: '#1c1c1d',
1436
+ },
1437
+ IonItem: {
1438
+ background: '#000000',
1439
+ },
1440
+ },
1441
+ };
1442
+
1443
+ const colors$2 = {
1444
+ primary: '#7cabff',
1445
+ secondary: '#62bdff',
1446
+ tertiary: '#b6b9f9',
1447
+ success: '#4ada71',
1448
+ warning: '#ffce31',
1449
+ danger: '#fc9aa2',
1450
+ light: '#222428',
1451
+ medium: '#a8aab3',
1452
+ dark: '#f4f5f8',
1453
+ };
1454
+ const highContrastDarkTheme = {
1455
+ enabled: 'never',
1456
+ color: {
1457
+ primary: {
1458
+ bold: {
1459
+ base: colors$2.primary,
1460
+ contrast: '#000',
1461
+ foreground: colors$2.primary,
1462
+ shade: mix(colors$2.primary, '#000', '12%'),
1463
+ tint: mix(colors$2.primary, '#fff', '10%'),
1464
+ },
1465
+ subtle: {
1466
+ base: mix('#fff', colors$2.primary, '8%'),
1467
+ contrast: colors$2.primary,
1468
+ foreground: mix(colors$2.primary, '#000', '12%'),
1469
+ shade: mix('#fff', colors$2.primary, '12%'),
1470
+ tint: mix('#fff', colors$2.primary, '4%'),
1471
+ },
1472
+ },
1473
+ secondary: {
1474
+ bold: {
1475
+ base: colors$2.secondary,
1476
+ contrast: '#000',
1477
+ foreground: colors$2.secondary,
1478
+ shade: mix(colors$2.secondary, '#000', '12%'),
1479
+ tint: mix(colors$2.secondary, '#fff', '10%'),
1480
+ },
1481
+ subtle: {
1482
+ base: mix('#fff', colors$2.secondary, '8%'),
1483
+ contrast: colors$2.secondary,
1484
+ foreground: mix(colors$2.secondary, '#000', '12%'),
1485
+ shade: mix('#fff', colors$2.secondary, '12%'),
1486
+ tint: mix('#fff', colors$2.secondary, '4%'),
1487
+ },
1488
+ },
1489
+ tertiary: {
1490
+ bold: {
1491
+ base: colors$2.tertiary,
1492
+ contrast: '#000',
1493
+ foreground: colors$2.tertiary,
1494
+ shade: mix(colors$2.tertiary, '#000', '12%'),
1495
+ tint: mix(colors$2.tertiary, '#fff', '10%'),
1496
+ },
1497
+ subtle: {
1498
+ base: mix('#fff', colors$2.tertiary, '8%'),
1499
+ contrast: colors$2.tertiary,
1500
+ foreground: mix(colors$2.tertiary, '#000', '12%'),
1501
+ shade: mix('#fff', colors$2.tertiary, '12%'),
1502
+ tint: mix('#fff', colors$2.tertiary, '4%'),
1503
+ },
1504
+ },
1505
+ success: {
1506
+ bold: {
1507
+ base: colors$2.success,
1508
+ contrast: '#000',
1509
+ foreground: colors$2.success,
1510
+ shade: mix(colors$2.success, '#000', '12%'),
1511
+ tint: mix(colors$2.success, '#fff', '10%'),
1512
+ },
1513
+ subtle: {
1514
+ base: mix('#fff', colors$2.success, '8%'),
1515
+ contrast: colors$2.success,
1516
+ foreground: mix(colors$2.success, '#000', '12%'),
1517
+ shade: mix('#fff', colors$2.success, '12%'),
1518
+ tint: mix('#fff', colors$2.success, '4%'),
1519
+ },
1520
+ },
1521
+ warning: {
1522
+ bold: {
1523
+ base: colors$2.warning,
1524
+ contrast: '#000',
1525
+ foreground: colors$2.warning,
1526
+ shade: mix(colors$2.warning, '#000', '12%'),
1527
+ tint: mix(colors$2.warning, '#fff', '10%'),
1528
+ },
1529
+ subtle: {
1530
+ base: mix('#fff', colors$2.warning, '8%'),
1531
+ contrast: colors$2.warning,
1532
+ foreground: mix(colors$2.warning, '#000', '12%'),
1533
+ shade: mix('#fff', colors$2.warning, '12%'),
1534
+ tint: mix('#fff', colors$2.warning, '4%'),
1535
+ },
1536
+ },
1537
+ danger: {
1538
+ bold: {
1539
+ base: colors$2.danger,
1540
+ contrast: '#000',
1541
+ foreground: colors$2.danger,
1542
+ shade: mix(colors$2.danger, '#000', '12%'),
1543
+ tint: mix(colors$2.danger, '#fff', '10%'),
1544
+ },
1545
+ subtle: {
1546
+ base: mix('#fff', colors$2.danger, '8%'),
1547
+ contrast: colors$2.danger,
1548
+ foreground: mix(colors$2.danger, '#000', '12%'),
1549
+ shade: mix('#fff', colors$2.danger, '12%'),
1550
+ tint: mix('#fff', colors$2.danger, '4%'),
1551
+ },
1552
+ },
1553
+ light: {
1554
+ bold: {
1555
+ base: colors$2.light,
1556
+ contrast: '#fff',
1557
+ foreground: colors$2.light,
1558
+ shade: mix(colors$2.light, '#000', '12%'),
1559
+ tint: mix(colors$2.light, '#fff', '10%'),
1560
+ },
1561
+ subtle: {
1562
+ base: mix('#fff', colors$2.light, '8%'),
1563
+ contrast: colors$2.light,
1564
+ foreground: mix(colors$2.light, '#000', '12%'),
1565
+ shade: mix('#fff', colors$2.light, '12%'),
1566
+ tint: mix('#fff', colors$2.light, '4%'),
1567
+ },
1568
+ },
1569
+ medium: {
1570
+ bold: {
1571
+ base: colors$2.medium,
1572
+ contrast: '#000',
1573
+ foreground: colors$2.medium,
1574
+ shade: mix(colors$2.medium, '#000', '12%'),
1575
+ tint: mix(colors$2.medium, '#fff', '10%'),
1576
+ },
1577
+ subtle: {
1578
+ base: mix('#fff', colors$2.medium, '8%'),
1579
+ contrast: colors$2.medium,
1580
+ foreground: mix(colors$2.medium, '#000', '12%'),
1581
+ shade: mix('#fff', colors$2.medium, '12%'),
1582
+ tint: mix('#fff', colors$2.medium, '4%'),
1583
+ },
1584
+ },
1585
+ dark: {
1586
+ bold: {
1587
+ base: colors$2.dark,
1588
+ contrast: '#000',
1589
+ foreground: colors$2.dark,
1590
+ shade: mix(colors$2.dark, '#000', '12%'),
1591
+ tint: mix(colors$2.dark, '#fff', '10%'),
1592
+ },
1593
+ subtle: {
1594
+ base: mix('#fff', colors$2.dark, '8%'),
1595
+ contrast: colors$2.dark,
1596
+ foreground: mix(colors$2.dark, '#000', '12%'),
1597
+ shade: mix('#fff', colors$2.dark, '12%'),
1598
+ tint: mix('#fff', colors$2.dark, '4%'),
1599
+ },
1600
+ },
1601
+ },
1602
+ backgroundColor: '#000000',
1603
+ backgroundColorRgb: '0, 0, 0',
1604
+ textColor: '#ffffff',
1605
+ textColorRgb: '255, 255, 255',
1606
+ backgroundColorStep: {
1607
+ 50: '#0d0d0d',
1608
+ 100: '#1a1a1a',
1609
+ 150: '#262626',
1610
+ 200: '#333333',
1611
+ 250: '#404040',
1612
+ 300: '#4d4d4d',
1613
+ 350: '#595959',
1614
+ 400: '#666666',
1615
+ 450: '#737373',
1616
+ 500: '#808080',
1617
+ 550: '#8c8c8c',
1618
+ 600: '#999999',
1619
+ 650: '#a6a6a6',
1620
+ 700: '#b3b3b3',
1621
+ 750: '#bfbfbf',
1622
+ 800: '#cccccc',
1623
+ 850: '#d9d9d9',
1624
+ 900: '#e6e6e6',
1625
+ 950: '#f2f2f2',
1626
+ },
1627
+ textColorStep: {
1628
+ 50: '#f9f9f9',
1629
+ 100: '#f3f3f3',
1630
+ 150: '#ededed',
1631
+ 200: '#e7e7e7',
1632
+ 250: '#e1e1e1',
1633
+ 300: '#dbdbdb',
1634
+ 350: '#d5d5d5',
1635
+ 400: '#cfcfcf',
1636
+ 450: '#c9c9c9',
1637
+ 500: '#c4c4c4',
1638
+ 550: '#bebebe',
1639
+ 600: '#b8b8b8',
1640
+ 650: '#b2b2b2',
1641
+ 700: '#acacac',
1642
+ 750: '#a6a6a6',
1643
+ 800: '#a0a0a0',
1644
+ 850: '#9a9a9a',
1645
+ 900: '#949494',
1646
+ 950: '#8e8e8e',
1647
+ },
1648
+ };
1649
+
1650
+ const colors$1 = {
1651
+ primary: '#003fae',
1652
+ secondary: '#01487b',
1653
+ tertiary: '#3400e6',
1654
+ success: '#004314',
1655
+ warning: '#5f4100',
1656
+ danger: '#9c000c',
1657
+ light: '#f4f5f8',
1658
+ medium: '#444446',
1659
+ dark: '#222428',
1660
+ };
1661
+ const highContrastTheme = {
1662
+ enabled: 'never',
1663
+ color: {
1664
+ primary: {
1665
+ bold: {
1666
+ base: colors$1.primary,
1667
+ contrast: '#fff',
1668
+ foreground: colors$1.primary,
1669
+ shade: mix(colors$1.primary, '#000', '12%'),
1670
+ tint: mix(colors$1.primary, '#fff', '10%'),
1671
+ },
1672
+ subtle: {
1673
+ base: mix('#fff', colors$1.primary, '8%'),
1674
+ contrast: colors$1.primary,
1675
+ foreground: mix(colors$1.primary, '#000', '12%'),
1676
+ shade: mix('#fff', colors$1.primary, '12%'),
1677
+ tint: mix('#fff', colors$1.primary, '4%'),
1678
+ },
1679
+ },
1680
+ secondary: {
1681
+ bold: {
1682
+ base: colors$1.secondary,
1683
+ contrast: '#fff',
1684
+ foreground: colors$1.secondary,
1685
+ shade: mix(colors$1.secondary, '#000', '12%'),
1686
+ tint: mix(colors$1.secondary, '#fff', '10%'),
1687
+ },
1688
+ subtle: {
1689
+ base: mix('#fff', colors$1.secondary, '8%'),
1690
+ contrast: colors$1.secondary,
1691
+ foreground: mix(colors$1.secondary, '#000', '12%'),
1692
+ shade: mix('#fff', colors$1.secondary, '12%'),
1693
+ tint: mix('#fff', colors$1.secondary, '4%'),
1694
+ },
1695
+ },
1696
+ tertiary: {
1697
+ bold: {
1698
+ base: colors$1.tertiary,
1699
+ contrast: '#fff',
1700
+ foreground: colors$1.tertiary,
1701
+ shade: mix(colors$1.tertiary, '#000', '12%'),
1702
+ tint: mix(colors$1.tertiary, '#fff', '10%'),
1703
+ },
1704
+ subtle: {
1705
+ base: mix('#fff', colors$1.tertiary, '8%'),
1706
+ contrast: colors$1.tertiary,
1707
+ foreground: mix(colors$1.tertiary, '#000', '12%'),
1708
+ shade: mix('#fff', colors$1.tertiary, '12%'),
1709
+ tint: mix('#fff', colors$1.tertiary, '4%'),
1710
+ },
1711
+ },
1712
+ success: {
1713
+ bold: {
1714
+ base: colors$1.success,
1715
+ contrast: '#fff',
1716
+ foreground: colors$1.success,
1717
+ shade: mix(colors$1.success, '#000', '12%'),
1718
+ tint: mix(colors$1.success, '#fff', '10%'),
1719
+ },
1720
+ subtle: {
1721
+ base: mix('#fff', colors$1.success, '8%'),
1722
+ contrast: colors$1.success,
1723
+ foreground: mix(colors$1.success, '#000', '12%'),
1724
+ shade: mix('#fff', colors$1.success, '12%'),
1725
+ tint: mix('#fff', colors$1.success, '4%'),
1726
+ },
1727
+ },
1728
+ warning: {
1729
+ bold: {
1730
+ base: colors$1.warning,
1731
+ contrast: '#fff',
1732
+ foreground: colors$1.warning,
1733
+ shade: mix(colors$1.warning, '#000', '12%'),
1734
+ tint: mix(colors$1.warning, '#fff', '10%'),
1735
+ },
1736
+ subtle: {
1737
+ base: mix('#fff', colors$1.warning, '8%'),
1738
+ contrast: colors$1.warning,
1739
+ foreground: mix(colors$1.warning, '#000', '12%'),
1740
+ shade: mix('#fff', colors$1.warning, '12%'),
1741
+ tint: mix('#fff', colors$1.warning, '4%'),
1742
+ },
1743
+ },
1744
+ danger: {
1745
+ bold: {
1746
+ base: colors$1.danger,
1747
+ contrast: '#fff',
1748
+ foreground: colors$1.danger,
1749
+ shade: mix(colors$1.danger, '#000', '12%'),
1750
+ tint: mix(colors$1.danger, '#fff', '10%'),
1751
+ },
1752
+ subtle: {
1753
+ base: mix('#fff', colors$1.danger, '8%'),
1754
+ contrast: colors$1.danger,
1755
+ foreground: mix(colors$1.danger, '#000', '12%'),
1756
+ shade: mix('#fff', colors$1.danger, '12%'),
1757
+ tint: mix('#fff', colors$1.danger, '4%'),
1758
+ },
1759
+ },
1760
+ light: {
1761
+ bold: {
1762
+ base: colors$1.light,
1763
+ contrast: '#000',
1764
+ foreground: colors$1.light,
1765
+ shade: mix(colors$1.light, '#000', '12%'),
1766
+ tint: mix(colors$1.light, '#fff', '10%'),
1767
+ },
1768
+ subtle: {
1769
+ base: mix('#fff', colors$1.light, '8%'),
1770
+ contrast: colors$1.light,
1771
+ foreground: mix(colors$1.light, '#000', '12%'),
1772
+ shade: mix('#fff', colors$1.light, '12%'),
1773
+ tint: mix('#fff', colors$1.light, '4%'),
1774
+ },
1775
+ },
1776
+ medium: {
1777
+ bold: {
1778
+ base: colors$1.medium,
1779
+ contrast: '#fff',
1780
+ foreground: colors$1.medium,
1781
+ shade: mix(colors$1.medium, '#000', '12%'),
1782
+ tint: mix(colors$1.medium, '#fff', '10%'),
1783
+ },
1784
+ subtle: {
1785
+ base: mix('#fff', colors$1.medium, '8%'),
1786
+ contrast: colors$1.medium,
1787
+ foreground: mix(colors$1.medium, '#000', '12%'),
1788
+ shade: mix('#fff', colors$1.medium, '12%'),
1789
+ tint: mix('#fff', colors$1.medium, '4%'),
1790
+ },
1791
+ },
1792
+ dark: {
1793
+ bold: {
1794
+ base: colors$1.dark,
1795
+ contrast: '#fff',
1796
+ foreground: colors$1.dark,
1797
+ shade: mix(colors$1.dark, '#000', '12%'),
1798
+ tint: mix(colors$1.dark, '#fff', '10%'),
1799
+ },
1800
+ subtle: {
1801
+ base: mix('#fff', colors$1.dark, '8%'),
1802
+ contrast: colors$1.dark,
1803
+ foreground: mix(colors$1.dark, '#000', '12%'),
1804
+ shade: mix('#fff', colors$1.dark, '12%'),
1805
+ tint: mix('#fff', colors$1.dark, '4%'),
1806
+ },
1807
+ },
1808
+ },
1809
+ backgroundColor: '#ffffff',
1810
+ backgroundColorRgb: '255, 255, 255',
1811
+ textColor: '#000000',
1812
+ textColorRgb: '0, 0, 0',
1813
+ textColorStep: generateColorSteps('#888888', '#000000'),
1814
+ };
1815
+
1816
+ const colors = {
1817
+ primary: '#0054e9',
1818
+ secondary: '#0163aa',
1819
+ tertiary: '#6030ff',
1820
+ success: '#2dd55b',
1821
+ warning: '#ffc409',
1822
+ danger: '#c5000f',
1823
+ light: '#f4f5f8',
1824
+ medium: '#636469',
1825
+ dark: '#222428',
1826
+ };
1827
+ const lightTheme = {
1828
+ color: {
1829
+ primary: {
1830
+ bold: {
1831
+ base: colors.primary,
1832
+ contrast: '#fff',
1833
+ foreground: mix(colors.primary, '#000', '12%'),
1834
+ shade: mix(colors.primary, '#000', '12%'),
1835
+ tint: mix(colors.primary, '#fff', '10%'),
1836
+ },
1837
+ subtle: {
1838
+ base: mix('#fff', colors.primary, '8%'),
1839
+ contrast: colors.primary,
1840
+ foreground: mix(colors.primary, '#000', '12%'),
1841
+ shade: mix('#fff', colors.primary, '12%'),
1842
+ tint: mix('#fff', colors.primary, '4%'),
1843
+ },
1844
+ },
1845
+ secondary: {
1846
+ bold: {
1847
+ base: colors.secondary,
1848
+ contrast: '#fff',
1849
+ foreground: mix(colors.secondary, '#000', '12%'),
1850
+ shade: mix(colors.secondary, '#000', '12%'),
1851
+ tint: mix(colors.secondary, '#fff', '10%'),
1852
+ },
1853
+ subtle: {
1854
+ base: mix('#fff', colors.secondary, '8%'),
1855
+ contrast: colors.secondary,
1856
+ foreground: mix(colors.secondary, '#000', '12%'),
1857
+ shade: mix('#fff', colors.secondary, '12%'),
1858
+ tint: mix('#fff', colors.secondary, '4%'),
1859
+ },
1860
+ },
1861
+ tertiary: {
1862
+ bold: {
1863
+ base: colors.tertiary,
1864
+ contrast: '#fff',
1865
+ foreground: mix(colors.tertiary, '#000', '12%'),
1866
+ shade: mix(colors.tertiary, '#000', '12%'),
1867
+ tint: mix(colors.tertiary, '#fff', '10%'),
1868
+ },
1869
+ subtle: {
1870
+ base: mix('#fff', colors.tertiary, '8%'),
1871
+ contrast: colors.tertiary,
1872
+ foreground: mix(colors.tertiary, '#000', '12%'),
1873
+ shade: mix('#fff', colors.tertiary, '12%'),
1874
+ tint: mix('#fff', colors.tertiary, '4%'),
1875
+ },
1876
+ },
1877
+ success: {
1878
+ bold: {
1879
+ base: colors.success,
1880
+ contrast: '#000',
1881
+ foreground: mix(colors.success, '#000', '12%'),
1882
+ shade: mix(colors.success, '#000', '12%'),
1883
+ tint: mix(colors.success, '#fff', '10%'),
1884
+ },
1885
+ subtle: {
1886
+ base: mix('#fff', colors.success, '8%'),
1887
+ contrast: colors.success,
1888
+ foreground: mix(colors.success, '#000', '12%'),
1889
+ shade: mix('#fff', colors.success, '12%'),
1890
+ tint: mix('#fff', colors.success, '4%'),
1891
+ },
1892
+ },
1893
+ warning: {
1894
+ bold: {
1895
+ base: colors.warning,
1896
+ contrast: '#000',
1897
+ foreground: mix(colors.warning, '#000', '12%'),
1898
+ shade: mix(colors.warning, '#000', '12%'),
1899
+ tint: mix(colors.warning, '#fff', '10%'),
1900
+ },
1901
+ subtle: {
1902
+ base: mix('#fff', colors.warning, '8%'),
1903
+ contrast: colors.warning,
1904
+ foreground: mix(colors.warning, '#000', '12%'),
1905
+ shade: mix('#fff', colors.warning, '12%'),
1906
+ tint: mix('#fff', colors.warning, '4%'),
1907
+ },
1908
+ },
1909
+ danger: {
1910
+ bold: {
1911
+ base: colors.danger,
1912
+ contrast: '#fff',
1913
+ foreground: mix(colors.danger, '#000', '12%'),
1914
+ shade: mix(colors.danger, '#000', '12%'),
1915
+ tint: mix(colors.danger, '#fff', '10%'),
1916
+ },
1917
+ subtle: {
1918
+ base: mix('#fff', colors.danger, '8%'),
1919
+ contrast: colors.danger,
1920
+ foreground: mix(colors.danger, '#000', '12%'),
1921
+ shade: mix('#fff', colors.danger, '12%'),
1922
+ tint: mix('#fff', colors.danger, '4%'),
1923
+ },
1924
+ },
1925
+ light: {
1926
+ bold: {
1927
+ base: colors.light,
1928
+ contrast: '#000',
1929
+ foreground: mix(colors.light, '#000', '12%'),
1930
+ shade: mix(colors.light, '#000', '12%'),
1931
+ tint: mix(colors.light, '#fff', '10%'),
1932
+ },
1933
+ subtle: {
1934
+ base: mix('#fff', colors.light, '8%'),
1935
+ contrast: colors.light,
1936
+ foreground: mix(colors.light, '#000', '12%'),
1937
+ shade: mix('#fff', colors.light, '12%'),
1938
+ tint: mix('#fff', colors.light, '4%'),
1939
+ },
1940
+ },
1941
+ medium: {
1942
+ bold: {
1943
+ base: colors.medium,
1944
+ contrast: '#fff',
1945
+ foreground: mix(colors.medium, '#000', '12%'),
1946
+ shade: mix(colors.medium, '#000', '12%'),
1947
+ tint: mix(colors.medium, '#fff', '10%'),
1948
+ },
1949
+ subtle: {
1950
+ base: mix('#fff', colors.medium, '8%'),
1951
+ contrast: colors.medium,
1952
+ foreground: mix(colors.medium, '#000', '12%'),
1953
+ shade: mix('#fff', colors.medium, '12%'),
1954
+ tint: mix('#fff', colors.medium, '4%'),
1955
+ },
1956
+ },
1957
+ dark: {
1958
+ bold: {
1959
+ base: colors.dark,
1960
+ contrast: '#fff',
1961
+ foreground: mix(colors.dark, '#000', '12%'),
1962
+ shade: mix(colors.dark, '#000', '12%'),
1963
+ tint: mix(colors.dark, '#fff', '10%'),
1964
+ },
1965
+ subtle: {
1966
+ base: mix('#fff', colors.dark, '8%'),
1967
+ contrast: colors.dark,
1968
+ foreground: mix(colors.dark, '#000', '12%'),
1969
+ shade: mix('#fff', colors.dark, '12%'),
1970
+ tint: mix('#fff', colors.dark, '4%'),
1971
+ },
1972
+ },
1973
+ },
1974
+ };
1975
+
126
1976
  /*
127
1977
  Stencil Client Platform v4.43.0 | MIT Licensed | https://stenciljs.com
128
1978
  */
@@ -3418,23 +5268,58 @@ exports.Build = Build;
3418
5268
  exports.Fragment = Fragment;
3419
5269
  exports.H = H;
3420
5270
  exports.Host = Host;
5271
+ exports.addEventListener = addEventListener;
5272
+ exports.applyComponentsTheme = applyComponentsTheme;
5273
+ exports.applyGlobalTheme = applyGlobalTheme;
5274
+ exports.assert = assert;
3421
5275
  exports.bootstrapLazy = bootstrapLazy;
5276
+ exports.clamp = clamp;
5277
+ exports.componentOnReady = componentOnReady;
3422
5278
  exports.config = config;
3423
5279
  exports.configFromSession = configFromSession;
3424
5280
  exports.configFromURL = configFromURL;
5281
+ exports.createColorClasses = createColorClasses;
3425
5282
  exports.createEvent = createEvent;
5283
+ exports.darkTheme = darkTheme;
5284
+ exports.debounce = debounce;
5285
+ exports.debounceEvent = debounceEvent;
5286
+ exports.focusElements = focusElements;
5287
+ exports.focusVisible = focusVisible;
5288
+ exports.focusVisibleElement = focusVisibleElement;
3426
5289
  exports.forceUpdate = forceUpdate;
3427
5290
  exports.getAssetPath = getAssetPath;
5291
+ exports.getClassMap = getClassMap;
5292
+ exports.getCustomTheme = getCustomTheme;
3428
5293
  exports.getElement = getElement;
5294
+ exports.getElementRoot = getElementRoot;
3429
5295
  exports.getMode = getMode;
3430
5296
  exports.h = h;
5297
+ exports.hasLazyBuild = hasLazyBuild;
5298
+ exports.hasShadowDom = hasShadowDom;
5299
+ exports.highContrastDarkTheme = highContrastDarkTheme;
5300
+ exports.highContrastTheme = highContrastTheme;
5301
+ exports.hostContext = hostContext;
5302
+ exports.inheritAriaAttributes = inheritAriaAttributes;
5303
+ exports.inheritAttributes = inheritAttributes;
5304
+ exports.isEndSide = isEndSide;
5305
+ exports.isSafeNumber = isSafeNumber;
5306
+ exports.lightTheme = lightTheme;
5307
+ exports.openURL = openURL;
5308
+ exports.pointerCoord = pointerCoord;
3431
5309
  exports.printIonError = printIonError;
3432
5310
  exports.printIonWarning = printIonWarning;
3433
5311
  exports.printRequiredElementError = printRequiredElementError;
3434
5312
  exports.promiseResolve = promiseResolve;
5313
+ exports.raf = raf;
3435
5314
  exports.readTask = readTask;
3436
5315
  exports.registerInstance = registerInstance;
5316
+ exports.removeEventListener = removeEventListener;
5317
+ exports.renderHiddenInput = renderHiddenInput;
3437
5318
  exports.saveConfig = saveConfig;
3438
5319
  exports.setMode = setMode;
3439
5320
  exports.setNonce = setNonce;
5321
+ exports.shallowEqualStringMap = shallowEqualStringMap;
5322
+ exports.startFocusVisible = startFocusVisible;
5323
+ exports.transitionEndAsync = transitionEndAsync;
5324
+ exports.waitForComponentReady = waitForComponentReady;
3440
5325
  exports.writeTask = writeTask;