@ionic/core 8.8.19 → 8.8.20-dev.11788449221.155f9f1e

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 (1139) 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.d.ts +11 -0
  27. package/components/ion-divider.js +4 -0
  28. package/components/ion-fab-button.js +1 -1
  29. package/components/ion-fab-list.js +1 -1
  30. package/components/ion-fab.js +1 -1
  31. package/components/ion-footer.js +1 -1
  32. package/components/ion-gallery-item.d.ts +11 -0
  33. package/components/ion-gallery-item.js +4 -0
  34. package/components/ion-gallery.d.ts +11 -0
  35. package/components/ion-gallery.js +4 -0
  36. package/components/ion-grid.js +1 -1
  37. package/components/ion-header.js +1 -1
  38. package/components/ion-icon.js +1 -1
  39. package/components/ion-img.js +1 -1
  40. package/components/ion-infinite-scroll-content.js +1 -1
  41. package/components/ion-infinite-scroll.js +1 -1
  42. package/components/ion-input-otp.js +1 -1
  43. package/components/ion-input-password-toggle.js +1 -1
  44. package/components/ion-input.js +1 -1
  45. package/components/ion-item-divider.js +1 -1
  46. package/components/ion-item-group.js +1 -1
  47. package/components/ion-item-option.js +1 -1
  48. package/components/ion-item-options.js +1 -1
  49. package/components/ion-item-sliding.js +1 -1
  50. package/components/ion-item.js +1 -1
  51. package/components/ion-label.js +1 -1
  52. package/components/ion-list-header.js +1 -1
  53. package/components/ion-list.js +1 -1
  54. package/components/ion-loading.js +1 -1
  55. package/components/ion-menu-button.js +1 -1
  56. package/components/ion-menu-toggle.js +1 -1
  57. package/components/ion-menu.js +1 -1
  58. package/components/ion-modal.js +1 -1
  59. package/components/ion-nav-link.js +1 -1
  60. package/components/ion-nav.js +1 -1
  61. package/components/ion-note.js +1 -1
  62. package/components/ion-picker-column-option.js +1 -1
  63. package/components/ion-picker-column.js +1 -1
  64. package/components/ion-picker-legacy-column.js +1 -1
  65. package/components/ion-picker-legacy.js +1 -1
  66. package/components/ion-picker.js +1 -1
  67. package/components/ion-popover.js +1 -1
  68. package/components/ion-progress-bar.js +1 -1
  69. package/components/ion-radio-group.js +1 -1
  70. package/components/ion-radio.js +1 -1
  71. package/components/ion-range.js +1 -1
  72. package/components/ion-refresher-content.js +1 -1
  73. package/components/ion-refresher.js +1 -1
  74. package/components/ion-reorder-group.js +1 -1
  75. package/components/ion-reorder.js +1 -1
  76. package/components/ion-ripple-effect.js +1 -1
  77. package/components/ion-route-redirect.js +1 -1
  78. package/components/ion-route.js +1 -1
  79. package/components/ion-router-link.js +1 -1
  80. package/components/ion-router-outlet.js +1 -1
  81. package/components/ion-router.js +1 -1
  82. package/components/ion-row.js +1 -1
  83. package/components/ion-searchbar.js +1 -1
  84. package/components/ion-segment-button.js +1 -1
  85. package/components/ion-segment-content.js +1 -1
  86. package/components/ion-segment-view.js +1 -1
  87. package/components/ion-segment.js +1 -1
  88. package/components/ion-select-modal.js +1 -1
  89. package/components/ion-select-option.js +1 -1
  90. package/components/ion-select-popover.js +1 -1
  91. package/components/ion-select.js +1 -1
  92. package/components/ion-skeleton-text.js +1 -1
  93. package/components/ion-spinner.js +1 -1
  94. package/components/ion-split-pane.js +1 -1
  95. package/components/ion-tab-bar.js +1 -1
  96. package/components/ion-tab-button.js +1 -1
  97. package/components/ion-tab.js +1 -1
  98. package/components/ion-tabs.js +1 -1
  99. package/components/ion-text.js +1 -1
  100. package/components/ion-textarea.js +1 -1
  101. package/components/ion-thumbnail.js +1 -1
  102. package/components/ion-title.js +1 -1
  103. package/components/ion-toast.js +1 -1
  104. package/components/ion-toggle.js +1 -1
  105. package/components/ion-toolbar.js +1 -1
  106. package/components/{p-BkKAANMJ.js → p-B2SvA6NE.js} +1 -1
  107. package/components/p-B39i6rpY.js +4 -0
  108. package/components/p-B4GJERAm.js +4 -0
  109. package/components/p-B9_sPaDw.js +4 -0
  110. package/components/p-BDqjX7Z_.js +4 -0
  111. package/components/{p-Cf2jSDS8.js → p-BE21dB_a.js} +1 -1
  112. package/components/{p-cyNmxje6.js → p-BJyeT56g.js} +1 -1
  113. package/components/p-BLP69XoA.js +4 -0
  114. package/{dist/ionic/p-D13Eaw-8.js → components/p-BTBa_wH7.js} +1 -1
  115. package/components/p-BU8Blvqg.js +4 -0
  116. package/components/p-BUePQFRZ.js +4 -0
  117. package/components/p-BXjGM4gW.js +4 -0
  118. package/components/{p-Bmq8qlkW.js → p-BXuZo5-p.js} +1 -1
  119. package/components/p-BYSs-jZz.js +4 -0
  120. package/components/{p-DqLB8yFQ.js → p-BZwQa9ey.js} +1 -1
  121. package/components/p-B_a4XnF2.js +4 -0
  122. package/components/p-BjW8SOqw.js +4 -0
  123. package/components/p-BnQAsi91.js +4 -0
  124. package/components/p-BrF4HSay.js +4 -0
  125. package/components/p-Bs5kME4N.js +4 -0
  126. package/components/p-BwKpO3Is.js +4 -0
  127. package/components/{p-D6Ynv7Xh.js → p-BwzRqsq1.js} +1 -1
  128. package/components/p-C0K6CGg9.js +4 -0
  129. package/components/p-C1L59jNd.js +4 -0
  130. package/components/p-C3ydXg9O.js +4 -0
  131. package/components/p-C5F5Zw01.js +4 -0
  132. package/components/p-C784We0w.js +4 -0
  133. package/components/p-CA81qANP.js +4 -0
  134. package/{dist/ionic/p-CPTv7G9B.js → components/p-CEz0vNHD.js} +1 -1
  135. package/components/p-CHB9zWT6.js +4 -0
  136. package/components/p-CJNsztW3.js +4 -0
  137. package/components/{p-qMmFisyx.js → p-CKLXmqy1.js} +1 -1
  138. package/components/p-CODBQrPj.js +4 -0
  139. package/components/p-CVYFPBs-.js +4 -0
  140. package/components/p-CWqLCAML.js +4 -0
  141. package/components/p-CaB0_AG0.js +4 -0
  142. package/components/p-CaXMr1SL.js +4 -0
  143. package/components/p-Cc3oC60a.js +4 -0
  144. package/components/p-CjlmHeGM.js +4 -0
  145. package/components/p-CstXr-x9.js +4 -0
  146. package/components/p-Cu8FoYIJ.js +4 -0
  147. package/components/p-CxhjkdQ_.js +4 -0
  148. package/components/p-CxoHM559.js +4 -0
  149. package/components/p-D0Iqw6OZ.js +4 -0
  150. package/components/p-D12Xsfh7.js +4 -0
  151. package/components/p-D1t981Ih.js +4 -0
  152. package/components/p-D2tZEPGv.js +4 -0
  153. package/components/p-D6zl6ZA8.js +4 -0
  154. package/components/p-DExJ63jR.js +4 -0
  155. package/components/p-DHvfufkW.js +4 -0
  156. package/components/p-DNweMi32.js +4 -0
  157. package/components/p-DRUGmlKi.js +4 -0
  158. package/components/p-DYq-5riI.js +4 -0
  159. package/components/p-DaJxRxSQ.js +4 -0
  160. package/components/{p-DmzFY5IC.js → p-Db3A3kHi.js} +1 -1
  161. package/components/p-Df6AAcu8.js +4 -0
  162. package/components/p-Dhi5xtNS.js +4 -0
  163. package/components/{p-6J0vc7Z8.js → p-Di8NbWfs.js} +1 -1
  164. package/components/p-DkfVuzjA.js +4 -0
  165. package/components/p-DriGEn08.js +4 -0
  166. package/components/p-Ds3yn-R0.js +4 -0
  167. package/components/p-DylrHLJF.js +4 -0
  168. package/components/p-VrmyB-Wu.js +4 -0
  169. package/components/{p-Ck0lEczL.js → p-Wn4ujuPW.js} +1 -1
  170. package/components/{p-CgkrslTX.js → p-X6YgGSBf.js} +1 -1
  171. package/components/{p-BDd9Zrb9.js → p-dLA3JnNJ.js} +1 -1
  172. package/components/p-fIOYmaqA.js +4 -0
  173. package/components/p-vUGYs065.js +4 -0
  174. package/components/p-vXpMhGrs.js +4 -0
  175. package/css/core.css +1 -1
  176. package/css/core.css.map +1 -1
  177. package/css/display.css +1 -1
  178. package/css/display.css.map +1 -1
  179. package/css/flex-utils.css +1 -1
  180. package/css/flex-utils.css.map +1 -1
  181. package/css/float-elements.css.map +1 -1
  182. package/css/global.bundle.css.map +1 -1
  183. package/css/ionic/bundle.ionic.css +1 -0
  184. package/css/ionic/bundle.ionic.css.map +1 -0
  185. package/css/ionic/core.ionic.css +1 -0
  186. package/css/ionic/core.ionic.css.map +1 -0
  187. package/css/ionic/global.bundle.ionic.css +1 -0
  188. package/css/ionic/global.bundle.ionic.css.map +1 -0
  189. package/css/ionic/ionic-swiper.ionic.css +1 -0
  190. package/css/ionic/ionic-swiper.ionic.css.map +1 -0
  191. package/css/ionic/link.ionic.css +1 -0
  192. package/css/ionic/link.ionic.css.map +1 -0
  193. package/css/ionic/structure.ionic.css +1 -0
  194. package/css/ionic/structure.ionic.css.map +1 -0
  195. package/css/ionic/typography.ionic.css +1 -0
  196. package/css/ionic/typography.ionic.css.map +1 -0
  197. package/css/ionic/utils.bundle.ionic.css +1 -0
  198. package/css/ionic/utils.bundle.ionic.css.map +1 -0
  199. package/css/ionic-swiper.css +1 -1
  200. package/css/ionic-swiper.css.map +1 -1
  201. package/css/ionic.bundle.css +1 -1
  202. package/css/ionic.bundle.css.map +1 -1
  203. package/css/normalize.css.map +1 -1
  204. package/css/padding.css.map +1 -1
  205. package/css/palettes/dark.always.css.map +1 -1
  206. package/css/palettes/dark.class.css.map +1 -1
  207. package/css/palettes/dark.system.css.map +1 -1
  208. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  209. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  210. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  211. package/css/palettes/high-contrast.always.css.map +1 -1
  212. package/css/palettes/high-contrast.class.css.map +1 -1
  213. package/css/palettes/high-contrast.system.css.map +1 -1
  214. package/css/structure.css.map +1 -1
  215. package/css/text-alignment.css.map +1 -1
  216. package/css/text-transformation.css.map +1 -1
  217. package/css/typography.css.map +1 -1
  218. package/css/utils.bundle.css +1 -1
  219. package/css/utils.bundle.css.map +1 -1
  220. package/dist/cjs/{animation-Ch16T-Nb.js → animation-CxRPIayb.js} +3 -3
  221. package/dist/cjs/{app-globals-Dd89e0MR.js → app-globals-BwvlV6g7.js} +1 -1
  222. package/dist/cjs/{button-active-AWp_ygDP.js → button-active-qCQDwE2m.js} +2 -2
  223. package/dist/cjs/{capacitor-DmA66EwP.js → capacitor-CRl0exFC.js} +3 -3
  224. package/dist/cjs/caret-down-vtVgfXIs.js +8 -0
  225. package/dist/cjs/caret-left-CxZXLRv5.js +8 -0
  226. package/dist/cjs/caret-right-CRCgv98E.js +8 -0
  227. package/dist/cjs/clear-button-press-controller-C7B9kyMa.js +45 -0
  228. package/dist/cjs/config-DWdFbSNK.js +35 -0
  229. package/dist/cjs/{focus-visible-CCvKiLh3.js → focus-visible-BIj-I3-C.js} +24 -0
  230. package/dist/cjs/{format-BUFWn4Bn.js → format-COAsdjOc.js} +1 -1
  231. package/dist/cjs/{framework-delegate-CEzl4MEA.js → framework-delegate-IvkF1VuM.js} +4 -2
  232. package/dist/cjs/{haptic-ClPPQ_PS.js → haptic-DG25gZzb.js} +1 -1
  233. package/dist/cjs/{helpers-DdZyl6WL.js → helpers-Dhimwhpn.js} +71 -4
  234. package/dist/cjs/{index-CD92bI7B.js → index-Bsq0SbXc.js} +2 -2
  235. package/dist/cjs/{index-BfaXsATC.js → index-C1knGA9x.js} +53 -4
  236. package/dist/cjs/{index-DqmRDbxg.js → index-CxDnX7hd.js} +3 -1
  237. package/dist/cjs/{index-DOiZqxWZ.js → index-DhDV4RxJ.js} +15 -15
  238. package/dist/cjs/{index-CukZnH1U.js → index-DuleInoh.js} +4 -4
  239. package/dist/cjs/index-YYUVCfP-.js +429 -0
  240. package/dist/cjs/{index-MWAIyVLl.js → index-yon1HGB7.js} +9 -8
  241. package/dist/cjs/index.cjs.js +16 -16
  242. package/dist/cjs/{input-shims-CPKgrIe3.js → input-shims-BgJcHtqI.js} +18 -17
  243. package/dist/cjs/{input.utils-DQaUGGed.js → input.utils--RmR5lVe.js} +5 -5
  244. package/dist/cjs/ion-accordion_2.cjs.entry.js +61 -29
  245. package/dist/cjs/ion-action-sheet.cjs.entry.js +41 -22
  246. package/dist/cjs/ion-alert.cjs.entry.js +78 -41
  247. package/dist/cjs/ion-app_8.cjs.entry.js +458 -194
  248. package/dist/cjs/ion-avatar_3.cjs.entry.js +125 -13
  249. package/dist/cjs/ion-back-button.cjs.entry.js +31 -22
  250. package/dist/cjs/ion-backdrop.cjs.entry.js +10 -7
  251. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +54 -18
  252. package/dist/cjs/ion-button_2.cjs.entry.js +61 -24
  253. package/dist/cjs/ion-card_5.cjs.entry.js +55 -33
  254. package/dist/cjs/ion-checkbox.cjs.entry.js +34 -17
  255. package/dist/cjs/ion-chip.cjs.entry.js +50 -9
  256. package/dist/cjs/ion-col_3.cjs.entry.js +56 -57
  257. package/dist/cjs/ion-datetime-button.cjs.entry.js +13 -9
  258. package/dist/cjs/ion-datetime_3.cjs.entry.js +121 -46
  259. package/dist/cjs/ion-divider.cjs.entry.js +51 -0
  260. package/dist/cjs/ion-fab_3.cjs.entry.js +44 -28
  261. package/dist/cjs/ion-gallery-item.cjs.entry.js +59 -0
  262. package/dist/cjs/ion-gallery.cjs.entry.js +608 -0
  263. package/dist/cjs/ion-img.cjs.entry.js +8 -4
  264. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +93 -17
  265. package/dist/cjs/ion-input-otp.cjs.entry.js +74 -9
  266. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +53 -15
  267. package/dist/cjs/ion-input.cjs.entry.js +132 -40
  268. package/dist/cjs/ion-item-option_3.cjs.entry.js +467 -52
  269. package/dist/cjs/ion-item_8.cjs.entry.js +121 -50
  270. package/dist/cjs/ion-loading.cjs.entry.js +22 -19
  271. package/dist/cjs/ion-menu_3.cjs.entry.js +47 -29
  272. package/dist/cjs/ion-modal.cjs.entry.js +262 -138
  273. package/dist/cjs/ion-nav_2.cjs.entry.js +14 -11
  274. package/dist/cjs/ion-picker-column-option.cjs.entry.js +12 -8
  275. package/dist/cjs/ion-picker-column.cjs.entry.js +14 -14
  276. package/dist/cjs/ion-picker.cjs.entry.js +10 -6
  277. package/dist/cjs/ion-popover.cjs.entry.js +21 -19
  278. package/dist/cjs/ion-progress-bar.cjs.entry.js +27 -9
  279. package/dist/cjs/ion-radio_2.cjs.entry.js +36 -18
  280. package/dist/cjs/ion-range.cjs.entry.js +20 -13
  281. package/dist/cjs/ion-refresher_2.cjs.entry.js +42 -23
  282. package/dist/cjs/ion-reorder_2.cjs.entry.js +38 -14
  283. package/dist/cjs/ion-ripple-effect.cjs.entry.js +15 -7
  284. package/dist/cjs/ion-route_4.cjs.entry.js +11 -10
  285. package/dist/cjs/ion-searchbar.cjs.entry.js +146 -32
  286. package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
  287. package/dist/cjs/ion-segment-view.cjs.entry.js +13 -3
  288. package/dist/cjs/ion-segment_2.cjs.entry.js +23 -16
  289. package/dist/cjs/ion-select-modal.cjs.entry.js +114 -38
  290. package/dist/cjs/ion-select_3.cjs.entry.js +557 -108
  291. package/dist/cjs/ion-spinner.cjs.entry.js +30 -8
  292. package/dist/cjs/ion-split-pane.cjs.entry.js +13 -9
  293. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +150 -28
  294. package/dist/cjs/ion-tab_2.cjs.entry.js +8 -7
  295. package/dist/cjs/ion-text.cjs.entry.js +7 -7
  296. package/dist/cjs/ion-textarea.cjs.entry.js +137 -23
  297. package/dist/cjs/ion-toast.cjs.entry.js +70 -46
  298. package/dist/cjs/ion-toggle.cjs.entry.js +82 -26
  299. package/dist/cjs/ionic-global-DYLhJaw7.js +519 -0
  300. package/dist/cjs/ionic.cjs.js +4 -4
  301. package/dist/cjs/{ios.transition-CTiTDh3m.js → ios.transition-Blgf-vZU.js} +7 -5
  302. package/dist/cjs/{item-multiple-inputs-jOJZE_I0.js → item-multiple-inputs-DKn76MYO.js} +1 -1
  303. package/dist/cjs/{keyboard-UuAS4D_9.js → keyboard-BgioTbwQ.js} +1 -1
  304. package/dist/cjs/{keyboard-hHzlEQpk.js → keyboard-Otnp8OQI.js} +4 -3
  305. package/dist/cjs/list-a-7GSA6K.js +8 -0
  306. package/dist/cjs/loader.cjs.js +4 -4
  307. package/dist/cjs/{md.transition-BpiTAaqF.js → md.transition-ClgvbGfq.js} +6 -5
  308. package/dist/cjs/{notch-controller-aiy8aQb-.js → notch-controller-0hkmmSGo.js} +4 -4
  309. package/dist/cjs/overlay-control-label-DnRLQR1t.js +52 -0
  310. package/dist/cjs/{overlays-CQ_c1fko.js → overlays-Bxjqh2m3.js} +309 -18
  311. package/dist/cjs/scroll-hide-controller-qWMU5yOk.js +345 -0
  312. package/dist/cjs/select-option-render-BqJEK1N1.js +124 -0
  313. package/dist/cjs/{status-tap-7FzRlXNr.js → status-tap-ClA8u57t.js} +4 -3
  314. package/dist/cjs/{swipe-back-DwTZiAc9.js → swipe-back-4vY7mi8i.js} +3 -2
  315. package/dist/cjs/{theme-CeDs6Hcv.js → theme-IlOsGAz7.js} +25 -1
  316. package/dist/cjs/validity-QmuwEptc.js +51 -0
  317. package/dist/cjs/x-BTF99yFH.js +8 -0
  318. package/dist/collection/collection-manifest.json +9 -1
  319. package/dist/collection/components/accordion/accordion.ionic.css +201 -0
  320. package/dist/collection/components/accordion/accordion.ios.css +73 -58
  321. package/dist/collection/components/accordion/accordion.js +41 -27
  322. package/dist/collection/components/accordion/accordion.md.css +67 -59
  323. package/dist/collection/components/accordion-group/accordion-group.ionic.css +93 -0
  324. package/dist/collection/components/accordion-group/accordion-group.ios.css +16 -4
  325. package/dist/collection/components/accordion-group/accordion-group.js +44 -8
  326. package/dist/collection/components/accordion-group/accordion-group.md.css +22 -4
  327. package/dist/collection/components/action-sheet/action-sheet.ionic.css +494 -0
  328. package/dist/collection/components/action-sheet/action-sheet.ios.css +367 -11
  329. package/dist/collection/components/action-sheet/action-sheet.js +32 -13
  330. package/dist/collection/components/action-sheet/action-sheet.md.css +306 -10
  331. package/dist/collection/components/alert/alert.ionic.css +787 -0
  332. package/dist/collection/components/alert/alert.ios.css +481 -19
  333. package/dist/collection/components/alert/alert.js +67 -30
  334. package/dist/collection/components/alert/alert.md.css +464 -29
  335. package/dist/collection/components/app/app.js +15 -83
  336. package/dist/collection/components/avatar/avatar.ionic.css +385 -0
  337. package/dist/collection/components/avatar/avatar.ios.css +7 -33
  338. package/dist/collection/components/avatar/avatar.js +120 -4
  339. package/dist/collection/components/avatar/avatar.md.css +51 -0
  340. package/dist/collection/components/back-button/back-button.ios.css +60 -48
  341. package/dist/collection/components/back-button/back-button.js +27 -19
  342. package/dist/collection/components/back-button/back-button.md.css +60 -48
  343. package/dist/collection/components/backdrop/backdrop.ionic.css +109 -0
  344. package/dist/collection/components/backdrop/backdrop.ios.css +56 -19
  345. package/dist/collection/components/backdrop/backdrop.js +12 -6
  346. package/dist/collection/components/backdrop/backdrop.md.css +56 -19
  347. package/dist/collection/components/badge/badge.ionic.css +272 -0
  348. package/dist/collection/components/badge/badge.ios.css +137 -12
  349. package/dist/collection/components/badge/badge.js +145 -9
  350. package/dist/collection/components/badge/badge.md.css +122 -12
  351. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +20 -8
  352. package/dist/collection/components/breadcrumb/breadcrumb.js +43 -11
  353. package/dist/collection/components/breadcrumb/breadcrumb.md.css +20 -8
  354. package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +6 -0
  355. package/dist/collection/components/breadcrumbs/breadcrumbs.js +11 -9
  356. package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +6 -0
  357. package/dist/collection/components/button/button.ionic.css +644 -0
  358. package/dist/collection/components/button/button.ios.css +154 -46
  359. package/dist/collection/components/button/button.js +63 -27
  360. package/dist/collection/components/button/button.md.css +150 -50
  361. package/dist/collection/components/buttons/buttons.ionic.css +97 -0
  362. package/dist/collection/components/buttons/buttons.ios.css +59 -7
  363. package/dist/collection/components/buttons/buttons.js +15 -9
  364. package/dist/collection/components/buttons/buttons.md.css +55 -3
  365. package/dist/collection/components/card/card.ionic.css +144 -0
  366. package/dist/collection/components/card/card.ios.css +65 -14
  367. package/dist/collection/components/card/card.js +41 -10
  368. package/dist/collection/components/card/card.md.css +65 -14
  369. package/dist/collection/components/card-content/card-content.ionic.css +89 -0
  370. package/dist/collection/components/card-content/card-content.ios.css +20 -35
  371. package/dist/collection/components/card-content/card-content.js +12 -10
  372. package/dist/collection/components/card-content/card-content.md.css +20 -35
  373. package/dist/collection/components/card-header/card-header.ionic.css +85 -0
  374. package/dist/collection/components/card-header/card-header.ios.css +27 -15
  375. package/dist/collection/components/card-header/card-header.js +13 -10
  376. package/dist/collection/components/card-header/card-header.md.css +27 -15
  377. package/dist/collection/components/card-subtitle/card-subtitle.ionic.css +144 -0
  378. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +12 -0
  379. package/dist/collection/components/card-subtitle/card-subtitle.js +11 -8
  380. package/dist/collection/components/card-subtitle/card-subtitle.md.css +12 -0
  381. package/dist/collection/components/card-title/card-title.ios.css +73 -0
  382. package/dist/collection/components/card-title/card-title.js +11 -8
  383. package/dist/collection/components/card-title/card-title.md.css +73 -0
  384. package/dist/collection/components/checkbox/checkbox.ionic.css +543 -0
  385. package/dist/collection/components/checkbox/checkbox.ios.css +242 -117
  386. package/dist/collection/components/checkbox/checkbox.js +69 -14
  387. package/dist/collection/components/checkbox/checkbox.md.css +243 -118
  388. package/dist/collection/components/chip/chip.ionic.css +217 -0
  389. package/dist/collection/components/chip/chip.ios.css +67 -14
  390. package/dist/collection/components/chip/chip.js +108 -8
  391. package/dist/collection/components/chip/chip.md.css +67 -14
  392. package/dist/collection/components/col/col.css +192 -4
  393. package/dist/collection/components/col/col.js +211 -61
  394. package/dist/collection/components/content/content.css +47 -2
  395. package/dist/collection/components/content/content.js +16 -11
  396. package/dist/collection/components/datetime/datetime.ionic.css +703 -0
  397. package/dist/collection/components/datetime/datetime.ios.css +302 -106
  398. package/dist/collection/components/datetime/datetime.js +97 -20
  399. package/dist/collection/components/datetime/datetime.md.css +293 -96
  400. package/dist/collection/components/datetime/utils/data.js +5 -5
  401. package/dist/collection/components/datetime-button/datetime-button.ios.css +6 -0
  402. package/dist/collection/components/datetime-button/datetime-button.js +11 -8
  403. package/dist/collection/components/datetime-button/datetime-button.md.css +6 -0
  404. package/dist/collection/components/divider/divider.ionic.css +148 -0
  405. package/dist/collection/components/divider/divider.ios.css +87 -0
  406. package/dist/collection/components/divider/divider.js +94 -0
  407. package/dist/collection/components/divider/divider.md.css +87 -0
  408. package/dist/collection/components/fab/fab.css +25 -1
  409. package/dist/collection/components/fab/fab.js +9 -5
  410. package/dist/collection/components/fab-button/fab-button.ios.css +18 -6
  411. package/dist/collection/components/fab-button/fab-button.js +36 -21
  412. package/dist/collection/components/fab-button/fab-button.md.css +20 -8
  413. package/dist/collection/components/fab-list/fab-list.css +12 -0
  414. package/dist/collection/components/fab-list/fab-list.js +9 -5
  415. package/dist/collection/components/footer/footer-interface.js +1 -0
  416. package/dist/collection/components/footer/footer.ios.css +33 -6
  417. package/dist/collection/components/footer/footer.js +117 -25
  418. package/dist/collection/components/footer/footer.md.css +40 -0
  419. package/dist/collection/components/gallery/gallery-constants.js +12 -0
  420. package/dist/collection/components/gallery/gallery-interface.js +1 -0
  421. package/dist/collection/components/gallery/gallery.css +15 -0
  422. package/dist/collection/components/gallery/gallery.js +679 -0
  423. package/dist/collection/components/gallery/test/utils.js +100 -0
  424. package/dist/collection/components/gallery-item/gallery-item.css +49 -0
  425. package/dist/collection/components/gallery-item/gallery-item.js +99 -0
  426. package/dist/collection/components/grid/grid.css +12 -0
  427. package/dist/collection/components/grid/grid.js +9 -5
  428. package/dist/collection/components/header/header-interface.js +1 -0
  429. package/dist/collection/components/header/header.ionic.css +250 -0
  430. package/dist/collection/components/header/header.ios.css +178 -133
  431. package/dist/collection/components/header/header.js +181 -39
  432. package/dist/collection/components/header/header.md.css +199 -9
  433. package/dist/collection/components/header/header.utils.js +6 -13
  434. package/dist/collection/components/img/img.js +8 -2
  435. package/dist/collection/components/infinite-scroll/infinite-scroll.js +100 -5
  436. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +12 -0
  437. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +16 -10
  438. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +12 -0
  439. package/dist/collection/components/input/input.ionic.css +891 -0
  440. package/dist/collection/components/input/input.ios.css +224 -137
  441. package/dist/collection/components/input/input.js +158 -45
  442. package/dist/collection/components/input/input.md.css +194 -209
  443. package/dist/collection/components/input-otp/input-otp.ionic.css +371 -0
  444. package/dist/collection/components/input-otp/input-otp.ios.css +105 -60
  445. package/dist/collection/components/input-otp/input-otp.js +74 -7
  446. package/dist/collection/components/input-otp/input-otp.md.css +105 -60
  447. package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +78 -0
  448. package/dist/collection/components/input-password-toggle/input-password-toggle.js +48 -12
  449. package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +61 -0
  450. package/dist/collection/components/item/item.ionic.css +496 -0
  451. package/dist/collection/components/item/item.ios.css +120 -80
  452. package/dist/collection/components/item/item.js +56 -21
  453. package/dist/collection/components/item/item.md.css +131 -79
  454. package/dist/collection/components/item-divider/item-divider.ios.css +18 -0
  455. package/dist/collection/components/item-divider/item-divider.js +11 -8
  456. package/dist/collection/components/item-divider/item-divider.md.css +18 -0
  457. package/dist/collection/components/item-group/item-group.ios.css +12 -0
  458. package/dist/collection/components/item-group/item-group.js +13 -7
  459. package/dist/collection/components/item-group/item-group.md.css +12 -0
  460. package/dist/collection/components/item-option/item-option.ionic.css +277 -0
  461. package/dist/collection/components/item-option/item-option.ios.css +136 -29
  462. package/dist/collection/components/item-option/item-option.js +73 -9
  463. package/dist/collection/components/item-option/item-option.md.css +136 -29
  464. package/dist/collection/components/item-options/item-options.ionic.css +221 -0
  465. package/dist/collection/components/item-options/item-options.ios.css +77 -34
  466. package/dist/collection/components/item-options/item-options.js +13 -7
  467. package/dist/collection/components/item-options/item-options.md.css +77 -34
  468. package/dist/collection/components/item-sliding/item-sliding.ionic.css +211 -0
  469. package/dist/collection/components/item-sliding/item-sliding.js +421 -35
  470. package/dist/collection/components/item-sliding/{item-sliding.css → item-sliding.native.css} +84 -9
  471. package/dist/collection/components/item-sliding/test/test.utils.js +13 -0
  472. package/dist/collection/components/label/label.ios.css +18 -0
  473. package/dist/collection/components/label/label.js +11 -8
  474. package/dist/collection/components/label/label.md.css +18 -0
  475. package/dist/collection/components/list/list.ionic.css +212 -0
  476. package/dist/collection/components/list/list.ios.css +54 -14
  477. package/dist/collection/components/list/list.js +48 -9
  478. package/dist/collection/components/list/list.md.css +56 -16
  479. package/dist/collection/components/list-header/list-header.ionic.css +190 -0
  480. package/dist/collection/components/list-header/list-header.ios.css +82 -38
  481. package/dist/collection/components/list-header/list-header.js +11 -8
  482. package/dist/collection/components/list-header/list-header.md.css +82 -38
  483. package/dist/collection/components/loading/loading.ios.css +13 -1
  484. package/dist/collection/components/loading/loading.js +14 -11
  485. package/dist/collection/components/loading/loading.md.css +13 -1
  486. package/dist/collection/components/menu/menu.ios.css +15 -3
  487. package/dist/collection/components/menu/menu.js +12 -7
  488. package/dist/collection/components/menu/menu.md.css +15 -3
  489. package/dist/collection/components/menu-button/menu-button.ionic.css +236 -0
  490. package/dist/collection/components/menu-button/menu-button.ios.css +48 -14
  491. package/dist/collection/components/menu-button/menu-button.js +26 -10
  492. package/dist/collection/components/menu-button/menu-button.md.css +49 -15
  493. package/dist/collection/components/menu-toggle/menu-toggle.js +8 -5
  494. package/dist/collection/components/modal/animations/ionic.enter.js +40 -0
  495. package/dist/collection/components/modal/animations/ionic.leave.js +28 -0
  496. package/dist/collection/components/modal/animations/sheet.js +8 -2
  497. package/dist/collection/components/modal/gestures/sheet.js +76 -10
  498. package/dist/collection/components/modal/modal.ionic.css +255 -0
  499. package/dist/collection/components/modal/modal.ios.css +178 -70
  500. package/dist/collection/components/modal/modal.js +50 -12
  501. package/dist/collection/components/modal/modal.md.css +178 -70
  502. package/dist/collection/components/nav/nav.css +7 -1
  503. package/dist/collection/components/nav/nav.js +11 -5
  504. package/dist/collection/components/nav-link/nav-link.js +5 -1
  505. package/dist/collection/components/note/note.ios.css +12 -0
  506. package/dist/collection/components/note/note.js +11 -8
  507. package/dist/collection/components/note/note.md.css +12 -0
  508. package/dist/collection/components/picker/picker.ios.css +15 -3
  509. package/dist/collection/components/picker/picker.js +8 -5
  510. package/dist/collection/components/picker/picker.md.css +15 -3
  511. package/dist/collection/components/picker-column/picker-column.css +9 -2
  512. package/dist/collection/components/picker-column/picker-column.js +8 -7
  513. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +6 -0
  514. package/dist/collection/components/picker-column-option/picker-column-option.js +13 -7
  515. package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -0
  516. package/dist/collection/components/picker-legacy/picker.ios.css +13 -1
  517. package/dist/collection/components/picker-legacy/picker.js +7 -6
  518. package/dist/collection/components/picker-legacy/picker.md.css +13 -1
  519. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +12 -0
  520. package/dist/collection/components/picker-legacy-column/picker-column.js +4 -4
  521. package/dist/collection/components/picker-legacy-column/picker-column.md.css +12 -0
  522. package/dist/collection/components/popover/popover.ionic.css +290 -0
  523. package/dist/collection/components/popover/popover.ios.css +29 -1
  524. package/dist/collection/components/popover/popover.js +18 -15
  525. package/dist/collection/components/popover/popover.md.css +29 -1
  526. package/dist/collection/components/progress-bar/progress-bar.ionic.css +287 -0
  527. package/dist/collection/components/progress-bar/progress-bar.ios.css +48 -17
  528. package/dist/collection/components/progress-bar/progress-bar.js +43 -7
  529. package/dist/collection/components/progress-bar/progress-bar.md.css +48 -17
  530. package/dist/collection/components/radio/radio.ionic.css +422 -0
  531. package/dist/collection/components/radio/radio.ios.css +207 -102
  532. package/dist/collection/components/radio/radio.js +14 -9
  533. package/dist/collection/components/radio/radio.md.css +207 -102
  534. package/dist/collection/components/radio-group/radio-group.ionic.css +119 -0
  535. package/dist/collection/components/radio-group/radio-group.ios.css +43 -19
  536. package/dist/collection/components/radio-group/radio-group.js +48 -7
  537. package/dist/collection/components/radio-group/radio-group.md.css +43 -19
  538. package/dist/collection/components/range/range.ionic.css +567 -0
  539. package/dist/collection/components/range/range.ios.css +128 -85
  540. package/dist/collection/components/range/range.js +16 -10
  541. package/dist/collection/components/range/range.md.css +128 -85
  542. package/dist/collection/components/refresher/refresher.ios.css +14 -1
  543. package/dist/collection/components/refresher/refresher.js +11 -8
  544. package/dist/collection/components/refresher/refresher.md.css +15 -2
  545. package/dist/collection/components/refresher-content/refresher-content.js +28 -7
  546. package/dist/collection/components/reorder/reorder.ios.css +6 -0
  547. package/dist/collection/components/reorder/reorder.js +33 -6
  548. package/dist/collection/components/reorder/reorder.md.css +6 -0
  549. package/dist/collection/components/reorder-group/reorder-group.css +6 -0
  550. package/dist/collection/components/reorder-group/reorder-group.js +8 -4
  551. package/dist/collection/components/ripple-effect/{ripple-effect.css → ripple-effect.common.css} +7 -1
  552. package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +215 -0
  553. package/dist/collection/components/ripple-effect/ripple-effect.js +14 -6
  554. package/dist/collection/components/route/route.js +4 -0
  555. package/dist/collection/components/router/router.js +4 -0
  556. package/dist/collection/components/router-link/router-link.css +8 -2
  557. package/dist/collection/components/router-link/router-link.js +9 -5
  558. package/dist/collection/components/router-outlet/router-outlet.css +7 -1
  559. package/dist/collection/components/router-outlet/router-outlet.js +6 -3
  560. package/dist/collection/components/row/row.css +16 -0
  561. package/dist/collection/components/row/row.js +9 -2
  562. package/dist/collection/components/searchbar/searchbar.ionic.css +622 -0
  563. package/dist/collection/components/searchbar/searchbar.ios.css +56 -18
  564. package/dist/collection/components/searchbar/searchbar.js +191 -42
  565. package/dist/collection/components/searchbar/searchbar.md.css +56 -18
  566. package/dist/collection/components/segment/segment.ionic.css +115 -0
  567. package/dist/collection/components/segment/segment.ios.css +45 -2
  568. package/dist/collection/components/segment/segment.js +11 -8
  569. package/dist/collection/components/segment/segment.md.css +45 -2
  570. package/dist/collection/components/segment-button/segment-button.ionic.css +352 -0
  571. package/dist/collection/components/segment-button/segment-button.ios.css +146 -105
  572. package/dist/collection/components/segment-button/segment-button.js +11 -8
  573. package/dist/collection/components/segment-button/segment-button.md.css +148 -107
  574. package/dist/collection/components/segment-content/segment-content.js +1 -1
  575. package/dist/collection/components/segment-view/segment-view.ios.css +6 -0
  576. package/dist/collection/components/segment-view/segment-view.js +13 -4
  577. package/dist/collection/components/segment-view/segment-view.md.css +6 -0
  578. package/dist/collection/components/select/select.ionic.css +809 -0
  579. package/dist/collection/components/select/select.ios.css +348 -176
  580. package/dist/collection/components/select/select.js +521 -92
  581. package/dist/collection/components/select/select.md.css +364 -178
  582. package/dist/collection/components/select-modal/select-modal.ionic.css +257 -0
  583. package/dist/collection/components/select-modal/select-modal.ios.css +466 -0
  584. package/dist/collection/components/select-modal/select-modal.js +126 -30
  585. package/dist/collection/components/select-modal/select-modal.md.css +394 -0
  586. package/dist/collection/components/select-option/select-option.js +72 -4
  587. package/dist/collection/components/select-popover/select-popover.ionic.css +255 -0
  588. package/dist/collection/components/select-popover/select-popover.ios.css +302 -20
  589. package/dist/collection/components/select-popover/select-popover.js +89 -29
  590. package/dist/collection/components/select-popover/select-popover.md.css +345 -0
  591. package/dist/collection/components/skeleton-text/skeleton-text.css +6 -0
  592. package/dist/collection/components/skeleton-text/skeleton-text.js +9 -5
  593. package/dist/collection/components/spinner/{spinner.css → spinner.ionic.css} +78 -10
  594. package/dist/collection/components/spinner/spinner.js +47 -6
  595. package/dist/collection/components/spinner/spinner.native.css +199 -0
  596. package/dist/collection/components/split-pane/split-pane.ios.css +20 -2
  597. package/dist/collection/components/split-pane/split-pane.js +15 -8
  598. package/dist/collection/components/split-pane/split-pane.md.css +20 -2
  599. package/dist/collection/components/tab/tab.js +6 -2
  600. package/dist/collection/components/tab-bar/tab-bar.ionic.css +249 -0
  601. package/dist/collection/components/tab-bar/tab-bar.ios.css +86 -43
  602. package/dist/collection/components/tab-bar/tab-bar.js +179 -15
  603. package/dist/collection/components/tab-bar/tab-bar.md.css +86 -43
  604. package/dist/collection/components/tab-button/tab-button.ionic.css +373 -0
  605. package/dist/collection/components/tab-button/tab-button.ios.css +171 -95
  606. package/dist/collection/components/tab-button/tab-button.js +54 -9
  607. package/dist/collection/components/tab-button/tab-button.md.css +137 -93
  608. package/dist/collection/components/tabs/tabs.css +7 -1
  609. package/dist/collection/components/tabs/tabs.js +4 -1
  610. package/dist/collection/components/text/text.css +6 -0
  611. package/dist/collection/components/text/text.js +7 -6
  612. package/dist/collection/components/textarea/textarea.ionic.css +898 -0
  613. package/dist/collection/components/textarea/textarea.ios.css +298 -158
  614. package/dist/collection/components/textarea/textarea.js +162 -24
  615. package/dist/collection/components/textarea/textarea.md.css +312 -159
  616. package/dist/collection/components/thumbnail/thumbnail.css +6 -0
  617. package/dist/collection/components/thumbnail/thumbnail.js +9 -2
  618. package/dist/collection/components/title/title.ionic.css +127 -0
  619. package/dist/collection/components/title/title.ios.css +32 -4
  620. package/dist/collection/components/title/title.js +13 -7
  621. package/dist/collection/components/title/title.md.css +39 -4
  622. package/dist/collection/components/toast/animations/utils.js +1 -1
  623. package/dist/collection/components/toast/toast.ionic.css +394 -0
  624. package/dist/collection/components/toast/toast.ios.css +84 -45
  625. package/dist/collection/components/toast/toast.js +76 -13
  626. package/dist/collection/components/toast/toast.md.css +84 -45
  627. package/dist/collection/components/toggle/toggle.ionic.css +512 -0
  628. package/dist/collection/components/toggle/toggle.ios.css +247 -127
  629. package/dist/collection/components/toggle/toggle.js +72 -18
  630. package/dist/collection/components/toggle/toggle.md.css +245 -127
  631. package/dist/collection/components/toolbar/test/image.svg +1 -0
  632. package/dist/collection/components/toolbar/toolbar.ionic.css +249 -0
  633. package/dist/collection/components/toolbar/toolbar.ios.css +90 -47
  634. package/dist/collection/components/toolbar/toolbar.js +218 -13
  635. package/dist/collection/components/toolbar/toolbar.md.css +90 -47
  636. package/dist/collection/global/ionic-global.js +241 -13
  637. package/dist/collection/utils/css-value-validation.js +39 -0
  638. package/dist/collection/utils/focus-trap.js +13 -2
  639. package/dist/collection/utils/focus-visible.js +22 -0
  640. package/dist/collection/utils/forms/clear-button-press-controller.js +40 -0
  641. package/dist/collection/utils/forms/index.js +1 -0
  642. package/dist/collection/utils/forms/validity.js +31 -0
  643. package/dist/collection/utils/framework-delegate.js +3 -1
  644. package/dist/collection/utils/hardware-back-button.js +15 -0
  645. package/dist/collection/utils/helpers.js +70 -3
  646. package/dist/collection/utils/keyboard/keyboard-controller.js +3 -1
  647. package/dist/collection/utils/media.js +1 -0
  648. package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
  649. package/dist/collection/utils/menu-controller/animations/push.js +2 -1
  650. package/dist/collection/utils/menu-controller/animations/reveal.js +2 -1
  651. package/dist/collection/utils/overlay-control-label.js +47 -0
  652. package/dist/collection/utils/overlays.js +290 -8
  653. package/dist/collection/utils/sanitization/index.js +274 -18
  654. package/dist/collection/utils/scroll-hide-controller.js +178 -0
  655. package/dist/collection/utils/select-option-render.js +119 -0
  656. package/dist/collection/utils/test/playwright/drag-element.js +32 -9
  657. package/dist/collection/utils/test/playwright/generator.js +48 -23
  658. package/dist/collection/utils/test/playwright/page/utils/goto.js +14 -5
  659. package/dist/collection/utils/test/playwright/page/utils/set-content.js +26 -3
  660. package/dist/collection/utils/theme.js +25 -1
  661. package/dist/collection/utils/transition/ios.transition.js +1 -0
  662. package/dist/docs.json +9090 -286
  663. package/dist/esm/{animation-DLJpuoEz.js → animation-BsVixxLP.js} +2 -2
  664. package/dist/esm/{app-globals-D0C5S4hU.js → app-globals-rPvWQFXp.js} +1 -1
  665. package/dist/esm/{button-active-CXXy0FIE.js → button-active-BS8YgJRD.js} +2 -2
  666. package/dist/esm/{capacitor-CFERIeaU.js → capacitor-BnXrCBvt.js} +1 -1
  667. package/dist/esm/caret-down-D1t981Ih.js +6 -0
  668. package/dist/esm/caret-left-fIOYmaqA.js +6 -0
  669. package/dist/esm/caret-right-BYSs-jZz.js +6 -0
  670. package/dist/esm/clear-button-press-controller-Ci6Q_x5-.js +43 -0
  671. package/dist/esm/config-BwKpO3Is.js +31 -0
  672. package/dist/esm/{focus-visible-BmVRXR1y.js → focus-visible-vXpMhGrs.js} +23 -1
  673. package/dist/esm/{format-CAmvpAez.js → format-2WlZcMvG.js} +1 -1
  674. package/dist/esm/{framework-delegate-B9yvYzqV.js → framework-delegate-P5K_3uYw.js} +4 -2
  675. package/dist/esm/{haptic-DzAMWJuk.js → haptic-ByW74Ow9.js} +1 -1
  676. package/dist/esm/{helpers-DkCLSLI9.js → helpers-ChPZH7zh.js} +71 -5
  677. package/dist/esm/{index-DV3sJJW8.js → index-B4Kq2YNk.js} +3 -2
  678. package/dist/esm/{index-tcQvqkiX.js → index-C0EQceqV.js} +53 -4
  679. package/dist/esm/{index-DwNKJodj.js → index-C7EAbm0C.js} +4 -3
  680. package/dist/esm/{index-DdeElWma.js → index-C7F1yJyV.js} +11 -11
  681. package/dist/esm/{index-Dsz7OTeL.js → index-CXSPjEca.js} +4 -4
  682. package/dist/esm/index-Mq5pCWmZ.js +424 -0
  683. package/dist/esm/{index-B_8X7INq.js → index-niemeDYi.js} +2 -2
  684. package/dist/esm/index.js +14 -14
  685. package/dist/esm/{input-shims-d-hDv86G.js → input-shims-CM5m0K8T.js} +7 -6
  686. package/dist/esm/{input.utils-Cd23Gdd1.js → input.utils-DhJNJPiU.js} +3 -3
  687. package/dist/esm/ion-accordion_2.entry.js +61 -29
  688. package/dist/esm/ion-action-sheet.entry.js +41 -22
  689. package/dist/esm/ion-alert.entry.js +77 -40
  690. package/dist/esm/ion-app_8.entry.js +457 -193
  691. package/dist/esm/ion-avatar_3.entry.js +125 -13
  692. package/dist/esm/ion-back-button.entry.js +31 -22
  693. package/dist/esm/ion-backdrop.entry.js +10 -7
  694. package/dist/esm/ion-breadcrumb_2.entry.js +54 -18
  695. package/dist/esm/ion-button_2.entry.js +61 -24
  696. package/dist/esm/ion-card_5.entry.js +55 -33
  697. package/dist/esm/ion-checkbox.entry.js +34 -17
  698. package/dist/esm/ion-chip.entry.js +50 -9
  699. package/dist/esm/ion-col_3.entry.js +56 -57
  700. package/dist/esm/ion-datetime-button.entry.js +13 -9
  701. package/dist/esm/ion-datetime_3.entry.js +121 -46
  702. package/dist/esm/ion-divider.entry.js +49 -0
  703. package/dist/esm/ion-fab_3.entry.js +44 -28
  704. package/dist/esm/ion-gallery-item.entry.js +57 -0
  705. package/dist/esm/ion-gallery.entry.js +606 -0
  706. package/dist/esm/ion-img.entry.js +8 -4
  707. package/dist/esm/ion-infinite-scroll_2.entry.js +92 -16
  708. package/dist/esm/ion-input-otp.entry.js +74 -9
  709. package/dist/esm/ion-input-password-toggle.entry.js +53 -15
  710. package/dist/esm/ion-input.entry.js +132 -40
  711. package/dist/esm/ion-item-option_3.entry.js +467 -52
  712. package/dist/esm/ion-item_8.entry.js +121 -50
  713. package/dist/esm/ion-loading.entry.js +21 -18
  714. package/dist/esm/ion-menu_3.entry.js +47 -29
  715. package/dist/esm/ion-modal.entry.js +215 -91
  716. package/dist/esm/ion-nav_2.entry.js +14 -11
  717. package/dist/esm/ion-picker-column-option.entry.js +12 -8
  718. package/dist/esm/ion-picker-column.entry.js +13 -13
  719. package/dist/esm/ion-picker.entry.js +10 -6
  720. package/dist/esm/ion-popover.entry.js +21 -19
  721. package/dist/esm/ion-progress-bar.entry.js +27 -9
  722. package/dist/esm/ion-radio_2.entry.js +36 -18
  723. package/dist/esm/ion-range.entry.js +20 -13
  724. package/dist/esm/ion-refresher_2.entry.js +40 -21
  725. package/dist/esm/ion-reorder_2.entry.js +38 -14
  726. package/dist/esm/ion-ripple-effect.entry.js +15 -7
  727. package/dist/esm/ion-route_4.entry.js +11 -10
  728. package/dist/esm/ion-searchbar.entry.js +146 -32
  729. package/dist/esm/ion-segment-content.entry.js +2 -2
  730. package/dist/esm/ion-segment-view.entry.js +13 -3
  731. package/dist/esm/ion-segment_2.entry.js +23 -16
  732. package/dist/esm/ion-select-modal.entry.js +114 -38
  733. package/dist/esm/ion-select_3.entry.js +557 -108
  734. package/dist/esm/ion-spinner.entry.js +30 -8
  735. package/dist/esm/ion-split-pane.entry.js +13 -9
  736. package/dist/esm/ion-tab-bar_2.entry.js +149 -27
  737. package/dist/esm/ion-tab_2.entry.js +8 -7
  738. package/dist/esm/ion-text.entry.js +7 -7
  739. package/dist/esm/ion-textarea.entry.js +137 -23
  740. package/dist/esm/ion-toast.entry.js +45 -21
  741. package/dist/esm/ion-toggle.entry.js +82 -26
  742. package/dist/esm/ionic-global-BJDU78B6.js +508 -0
  743. package/dist/esm/ionic.js +5 -5
  744. package/dist/esm/{ios.transition-CxNhMt4a.js → ios.transition-6oGu53GR.js} +7 -5
  745. package/dist/esm/{item-multiple-inputs-DlNuqNJm.js → item-multiple-inputs-C6onMFOo.js} +1 -1
  746. package/dist/esm/{keyboard-ywgs5efA.js → keyboard-XukEYIFf.js} +4 -3
  747. package/dist/esm/{keyboard-CUw4ekVy.js → keyboard-x-uHYVoq.js} +1 -1
  748. package/dist/esm/list-Dhi5xtNS.js +6 -0
  749. package/dist/esm/loader.js +5 -5
  750. package/dist/esm/{md.transition-IE4mC3kp.js → md.transition-Dy5HxiSE.js} +6 -5
  751. package/dist/esm/{notch-controller-Doqis1td.js → notch-controller-BYB7mUMg.js} +2 -2
  752. package/dist/esm/overlay-control-label-CODBQrPj.js +49 -0
  753. package/dist/esm/{overlays-COCl_nm9.js → overlays-C3YvaMgX.js} +306 -15
  754. package/dist/esm/scroll-hide-controller-B3MRYNXh.js +342 -0
  755. package/dist/esm/select-option-render-BlKZ2H83.js +122 -0
  756. package/dist/esm/{status-tap-HhO5eQI9.js → status-tap-DK-ylvU7.js} +4 -3
  757. package/dist/esm/{swipe-back-DK6afpuO.js → swipe-back-DFICtpMC.js} +3 -2
  758. package/dist/esm/{theme-DiVJyqlX.js → theme-DaJxRxSQ.js} +25 -1
  759. package/dist/esm/validity-BjW8SOqw.js +48 -0
  760. package/dist/esm/x-BDqjX7Z_.js +6 -0
  761. package/dist/html.html-data.json +2707 -168
  762. package/dist/ionic/index.esm.js +1 -1
  763. package/dist/ionic/ionic.esm.js +1 -1
  764. package/dist/ionic/p--sroV-k-.js +4 -0
  765. package/dist/ionic/p-0166d6e5.entry.js +4 -0
  766. package/dist/ionic/p-0a0a66e2.entry.js +4 -0
  767. package/dist/ionic/p-0ac15b5f.entry.js +4 -0
  768. package/dist/ionic/p-0c636ad3.entry.js +4 -0
  769. package/dist/ionic/p-126031d2.entry.js +4 -0
  770. package/dist/ionic/p-1a609156.entry.js +4 -0
  771. package/dist/ionic/p-1b473bad.entry.js +4 -0
  772. package/dist/ionic/p-1c1c18da.entry.js +4 -0
  773. package/dist/ionic/p-1ce65194.entry.js +4 -0
  774. package/dist/ionic/p-1febf200.entry.js +4 -0
  775. package/dist/ionic/p-2016c1c0.entry.js +4 -0
  776. package/dist/ionic/p-2365483a.entry.js +4 -0
  777. package/dist/ionic/p-296226f1.entry.js +4 -0
  778. package/dist/ionic/p-2a54aec2.entry.js +4 -0
  779. package/dist/ionic/p-2bf60b77.entry.js +4 -0
  780. package/dist/ionic/p-2e0184c0.entry.js +4 -0
  781. package/dist/ionic/p-2e1d650a.entry.js +4 -0
  782. package/dist/ionic/p-316eed75.entry.js +4 -0
  783. package/dist/ionic/p-31a0c9c2.entry.js +4 -0
  784. package/dist/ionic/p-40a21a22.entry.js +4 -0
  785. package/dist/ionic/p-431bc3ce.entry.js +4 -0
  786. package/dist/ionic/p-51542c69.entry.js +4 -0
  787. package/dist/ionic/p-5dedd699.entry.js +4 -0
  788. package/dist/ionic/p-68e453f7.entry.js +4 -0
  789. package/dist/ionic/p-711ba315.entry.js +4 -0
  790. package/dist/ionic/p-731d11e1.entry.js +4 -0
  791. package/dist/ionic/p-75c7595c.entry.js +4 -0
  792. package/dist/ionic/p-76232f5f.entry.js +4 -0
  793. package/dist/ionic/p-7cbf17f0.entry.js +4 -0
  794. package/dist/ionic/p-7f59020c.entry.js +4 -0
  795. package/dist/ionic/{p-C0eMdTCW.js → p-7k7Q1A38.js} +1 -1
  796. package/dist/ionic/p-8303462c.entry.js +4 -0
  797. package/dist/ionic/p-9db78e5c.entry.js +4 -0
  798. package/dist/ionic/p-B4Kq2YNk.js +4 -0
  799. package/dist/ionic/p-BDqjX7Z_.js +4 -0
  800. package/dist/ionic/p-BFhQ1N-L.js +4 -0
  801. package/dist/ionic/p-BG7tpRhR.js +4 -0
  802. package/{components/p-D13Eaw-8.js → dist/ionic/p-BITyMTKr.js} +1 -1
  803. package/dist/ionic/p-BRPONI7N.js +4 -0
  804. package/dist/ionic/p-BVdSuKmt.js +4 -0
  805. package/dist/ionic/p-BYSs-jZz.js +4 -0
  806. package/dist/ionic/p-BjW8SOqw.js +4 -0
  807. package/dist/ionic/p-Bpx1lBiP.js +4 -0
  808. package/dist/ionic/p-BwKpO3Is.js +4 -0
  809. package/dist/ionic/p-C-BLhfUi.js +4 -0
  810. package/dist/ionic/p-C-aO35cw.js +4 -0
  811. package/dist/ionic/p-C0EQceqV.js +5 -0
  812. package/dist/ionic/p-CDrQfM-I.js +4 -0
  813. package/dist/ionic/p-CODBQrPj.js +4 -0
  814. package/dist/ionic/p-CTSaffvS.js +4 -0
  815. package/dist/ionic/p-CaM5HwzM.js +4 -0
  816. package/dist/ionic/p-CgaW5Zy8.js +4 -0
  817. package/dist/ionic/p-Cipl19Qe.js +4 -0
  818. package/dist/ionic/p-CnBfCmL2.js +4 -0
  819. package/dist/ionic/p-D-Xit5Ye.js +4 -0
  820. package/dist/ionic/p-D1t981Ih.js +4 -0
  821. package/dist/ionic/p-D7LIC84Z.js +4 -0
  822. package/dist/ionic/p-D844sgjq.js +4 -0
  823. package/dist/ionic/p-DWDKFjrH.js +4 -0
  824. package/dist/ionic/p-DaJxRxSQ.js +4 -0
  825. package/dist/ionic/p-Dhi5xtNS.js +4 -0
  826. package/dist/ionic/p-DhyWlGap.js +4 -0
  827. package/dist/ionic/p-DiyY-i-5.js +4 -0
  828. package/dist/ionic/{p-B2kaj8sx.js → p-DrxPmT9E.js} +1 -1
  829. package/dist/ionic/p-YIsE5bNG.js +4 -0
  830. package/dist/ionic/p-a37444b3.entry.js +4 -0
  831. package/dist/ionic/p-a9df0ccf.entry.js +4 -0
  832. package/dist/ionic/p-ac3af8af.entry.js +4 -0
  833. package/dist/ionic/p-b25f3aba.entry.js +4 -0
  834. package/dist/ionic/p-b3da2cc7.entry.js +4 -0
  835. package/dist/ionic/p-b4533070.entry.js +4 -0
  836. package/dist/ionic/p-b4901bce.entry.js +4 -0
  837. package/dist/ionic/p-bb7bb4fd.entry.js +4 -0
  838. package/dist/ionic/p-be06def7.entry.js +4 -0
  839. package/dist/ionic/p-c0983eac.entry.js +4 -0
  840. package/dist/ionic/p-c4ebdfd2.entry.js +4 -0
  841. package/dist/ionic/p-c4ed1e18.entry.js +4 -0
  842. package/dist/ionic/p-d9ac7a0d.entry.js +4 -0
  843. package/dist/ionic/p-dc8a8505.entry.js +4 -0
  844. package/dist/ionic/p-ddc41dbb.entry.js +4 -0
  845. package/dist/ionic/p-de4e8418.entry.js +4 -0
  846. package/dist/ionic/p-df642ef5.entry.js +4 -0
  847. package/dist/ionic/p-e086f8c3.entry.js +4 -0
  848. package/dist/ionic/p-edd8f490.entry.js +4 -0
  849. package/dist/ionic/p-f0968c91.entry.js +4 -0
  850. package/dist/ionic/p-f6768728.entry.js +4 -0
  851. package/dist/ionic/p-fIOYmaqA.js +4 -0
  852. package/dist/ionic/p-fc726f4a.entry.js +4 -0
  853. package/dist/ionic/p-ff74cf5d.entry.js +4 -0
  854. package/dist/ionic/p-i6iV8hMy.js +4 -0
  855. package/dist/ionic/p-nUlpIttM.js +4 -0
  856. package/dist/ionic/p-vXpMhGrs.js +4 -0
  857. package/dist/ionic/p-zRFin7iz.js +4 -0
  858. package/dist/ionic/{p-CKvCXMs9.js → p-zn4qAQ_d.js} +1 -1
  859. package/dist/types/components/accordion/accordion.d.ts +6 -3
  860. package/dist/types/components/accordion-group/accordion-group.d.ts +12 -1
  861. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +3 -7
  862. package/dist/types/components/action-sheet/action-sheet.d.ts +3 -2
  863. package/dist/types/components/alert/alert-interface.d.ts +3 -7
  864. package/dist/types/components/alert/alert.d.ts +3 -2
  865. package/dist/types/components/app/app.d.ts +4 -5
  866. package/dist/types/components/avatar/avatar.d.ts +32 -0
  867. package/dist/types/components/back-button/back-button.d.ts +2 -1
  868. package/dist/types/components/backdrop/backdrop.d.ts +4 -0
  869. package/dist/types/components/badge/badge.d.ts +34 -1
  870. package/dist/types/components/breadcrumb/breadcrumb.d.ts +4 -1
  871. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
  872. package/dist/types/components/button/button.d.ts +23 -8
  873. package/dist/types/components/buttons/buttons.d.ts +5 -1
  874. package/dist/types/components/card/card.d.ts +8 -1
  875. package/dist/types/components/card-content/card-content.d.ts +2 -1
  876. package/dist/types/components/card-header/card-header.d.ts +3 -2
  877. package/dist/types/components/card-subtitle/card-subtitle.d.ts +2 -1
  878. package/dist/types/components/card-title/card-title.d.ts +2 -1
  879. package/dist/types/components/checkbox/checkbox.d.ts +14 -4
  880. package/dist/types/components/chip/chip.d.ts +26 -1
  881. package/dist/types/components/col/col.d.ts +52 -5
  882. package/dist/types/components/content/content.d.ts +3 -0
  883. package/dist/types/components/datetime/datetime.d.ts +26 -1
  884. package/dist/types/components/datetime/utils/data.d.ts +5 -5
  885. package/dist/types/components/datetime-button/datetime-button.d.ts +2 -1
  886. package/dist/types/components/divider/divider.d.ts +20 -0
  887. package/dist/types/components/fab/fab.d.ts +4 -0
  888. package/dist/types/components/fab-button/fab-button.d.ts +5 -3
  889. package/dist/types/components/fab-list/fab-list.d.ts +4 -0
  890. package/dist/types/components/footer/footer-interface.d.ts +1 -0
  891. package/dist/types/components/footer/footer.d.ts +20 -3
  892. package/dist/types/components/gallery/gallery-constants.d.ts +9 -0
  893. package/dist/types/components/gallery/gallery-interface.d.ts +10 -0
  894. package/dist/types/components/gallery/gallery.d.ts +218 -0
  895. package/dist/types/components/gallery/test/utils.d.ts +3 -0
  896. package/dist/types/components/gallery-item/gallery-item.d.ts +33 -0
  897. package/dist/types/components/grid/grid.d.ts +4 -0
  898. package/dist/types/components/header/header-interface.d.ts +1 -0
  899. package/dist/types/components/header/header.d.ts +26 -3
  900. package/dist/types/components/header/header.utils.d.ts +4 -5
  901. package/dist/types/components/img/img.d.ts +3 -0
  902. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +21 -0
  903. package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +4 -0
  904. package/dist/types/components/input/input.d.ts +34 -5
  905. package/dist/types/components/input-otp/input-otp.d.ts +37 -0
  906. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +2 -0
  907. package/dist/types/components/item/item.d.ts +11 -4
  908. package/dist/types/components/item-divider/item-divider.d.ts +2 -1
  909. package/dist/types/components/item-group/item-group.d.ts +4 -0
  910. package/dist/types/components/item-option/item-option.d.ts +18 -1
  911. package/dist/types/components/item-options/item-options.d.ts +4 -0
  912. package/dist/types/components/item-sliding/item-sliding.d.ts +47 -1
  913. package/dist/types/components/item-sliding/test/test.utils.d.ts +13 -0
  914. package/dist/types/components/label/label.d.ts +2 -1
  915. package/dist/types/components/list/list.d.ts +15 -1
  916. package/dist/types/components/list-header/list-header.d.ts +2 -1
  917. package/dist/types/components/loading/loading-interface.d.ts +2 -7
  918. package/dist/types/components/loading/loading.d.ts +3 -2
  919. package/dist/types/components/menu/menu.d.ts +3 -0
  920. package/dist/types/components/menu-button/menu-button.d.ts +3 -1
  921. package/dist/types/components/menu-toggle/menu-toggle.d.ts +3 -0
  922. package/dist/types/components/modal/animations/ionic.enter.d.ts +6 -0
  923. package/dist/types/components/modal/animations/ionic.leave.d.ts +6 -0
  924. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  925. package/dist/types/components/modal/modal-interface.d.ts +4 -7
  926. package/dist/types/components/modal/modal.d.ts +11 -1
  927. package/dist/types/components/nav/nav-interface.d.ts +9 -1
  928. package/dist/types/components/nav/nav.d.ts +5 -1
  929. package/dist/types/components/nav-link/nav-link.d.ts +4 -0
  930. package/dist/types/components/note/note.d.ts +2 -1
  931. package/dist/types/components/picker/picker.d.ts +2 -1
  932. package/dist/types/components/picker-column/picker-column.d.ts +2 -1
  933. package/dist/types/components/picker-column-option/picker-column-option.d.ts +4 -0
  934. package/dist/types/components/picker-legacy/picker.d.ts +2 -1
  935. package/dist/types/components/popover/popover-interface.d.ts +3 -6
  936. package/dist/types/components/popover/popover.d.ts +6 -5
  937. package/dist/types/components/progress-bar/progress-bar.d.ts +10 -1
  938. package/dist/types/components/radio/radio.d.ts +2 -1
  939. package/dist/types/components/radio-group/radio-group.d.ts +12 -0
  940. package/dist/types/components/range/range.d.ts +2 -1
  941. package/dist/types/components/refresher/refresher.d.ts +2 -1
  942. package/dist/types/components/refresher-content/refresher-content.d.ts +4 -0
  943. package/dist/types/components/reorder/reorder.d.ts +9 -0
  944. package/dist/types/components/reorder-group/reorder-group.d.ts +4 -0
  945. package/dist/types/components/ripple-effect/ripple-effect.d.ts +4 -0
  946. package/dist/types/components/route/route.d.ts +4 -0
  947. package/dist/types/components/router/router.d.ts +4 -0
  948. package/dist/types/components/router-link/router-link.d.ts +4 -0
  949. package/dist/types/components/router-outlet/router-outlet.d.ts +4 -1
  950. package/dist/types/components/row/row.d.ts +4 -0
  951. package/dist/types/components/searchbar/searchbar.d.ts +56 -10
  952. package/dist/types/components/segment/segment.d.ts +2 -1
  953. package/dist/types/components/segment-button/segment-button.d.ts +2 -1
  954. package/dist/types/components/select/select-interface.d.ts +31 -0
  955. package/dist/types/components/select/select.d.ts +66 -13
  956. package/dist/types/components/select-modal/select-modal.d.ts +8 -0
  957. package/dist/types/components/select-option/select-option.d.ts +45 -1
  958. package/dist/types/components/select-popover/select-popover.d.ts +3 -0
  959. package/dist/types/components/skeleton-text/skeleton-text.d.ts +4 -0
  960. package/dist/types/components/spinner/spinner.d.ts +15 -0
  961. package/dist/types/components/split-pane/split-pane.d.ts +4 -0
  962. package/dist/types/components/tab/tab.d.ts +4 -0
  963. package/dist/types/components/tab-bar/tab-bar-interface.d.ts +1 -0
  964. package/dist/types/components/tab-bar/tab-bar.d.ts +41 -3
  965. package/dist/types/components/tab-button/tab-button.d.ts +12 -1
  966. package/dist/types/components/tabs/tabs.d.ts +3 -0
  967. package/dist/types/components/text/text.d.ts +2 -1
  968. package/dist/types/components/textarea/textarea.d.ts +53 -4
  969. package/dist/types/components/thumbnail/thumbnail.d.ts +4 -0
  970. package/dist/types/components/title/title.d.ts +4 -0
  971. package/dist/types/components/toast/animations/utils.d.ts +2 -2
  972. package/dist/types/components/toast/toast-interface.d.ts +3 -7
  973. package/dist/types/components/toast/toast.d.ts +19 -2
  974. package/dist/types/components/toggle/toggle.d.ts +15 -1
  975. package/dist/types/components/toolbar/toolbar.d.ts +43 -3
  976. package/dist/types/components.d.ts +1881 -210
  977. package/dist/types/global/ionic-global.d.ts +28 -2
  978. package/dist/types/interface.d.ts +3 -0
  979. package/dist/types/utils/config.d.ts +106 -2
  980. package/dist/types/utils/css-value-validation.d.ts +21 -0
  981. package/dist/types/utils/focus-trap.d.ts +1 -1
  982. package/dist/types/utils/focus-visible.d.ts +13 -0
  983. package/dist/types/utils/forms/clear-button-press-controller.d.ts +20 -0
  984. package/dist/types/utils/forms/index.d.ts +1 -0
  985. package/dist/types/utils/forms/validity.d.ts +7 -0
  986. package/dist/types/utils/helpers.d.ts +22 -0
  987. package/dist/types/utils/overlay-control-label.d.ts +34 -0
  988. package/dist/types/utils/overlays-interface.d.ts +31 -1
  989. package/dist/types/utils/overlays.d.ts +1 -1
  990. package/dist/types/utils/sanitization/index.d.ts +58 -2
  991. package/dist/types/utils/scroll-hide-controller.d.ts +56 -0
  992. package/dist/types/utils/select-option-render.d.ts +53 -0
  993. package/dist/types/utils/test/playwright/drag-element.d.ts +16 -3
  994. package/dist/types/utils/test/playwright/generator.d.ts +31 -2
  995. package/dist/types/utils/theme.d.ts +9 -0
  996. package/hydrate/index.js +6402 -1406
  997. package/hydrate/index.mjs +6402 -1406
  998. package/package.json +9 -5
  999. package/components/p--JUspHvy.js +0 -4
  1000. package/components/p-0LM2oPMC.js +0 -4
  1001. package/components/p-9GFIh9p1.js +0 -4
  1002. package/components/p-B21528L5.js +0 -4
  1003. package/components/p-B2nSfLHH.js +0 -4
  1004. package/components/p-B3qf4bEn.js +0 -4
  1005. package/components/p-B9jFTlwE.js +0 -4
  1006. package/components/p-BLmJ0zRm.js +0 -4
  1007. package/components/p-BMYNBJgf.js +0 -4
  1008. package/components/p-BRYd8D-I.js +0 -4
  1009. package/components/p-BSEgsdFI.js +0 -4
  1010. package/components/p-BTJrYwxN.js +0 -4
  1011. package/components/p-BV-zKay-.js +0 -4
  1012. package/components/p-BmVRXR1y.js +0 -4
  1013. package/components/p-BuxQcfHK.js +0 -4
  1014. package/components/p-Bz0dSlXZ.js +0 -4
  1015. package/components/p-C7II1iDj.js +0 -4
  1016. package/components/p-CHqRYvYm.js +0 -4
  1017. package/components/p-CIGNaXM1.js +0 -4
  1018. package/components/p-CO7fmmxt.js +0 -4
  1019. package/components/p-CSZf8_j0.js +0 -4
  1020. package/components/p-CTdRooFV.js +0 -4
  1021. package/components/p-Cfx4M1Bn.js +0 -4
  1022. package/components/p-CiCzYG2V.js +0 -4
  1023. package/components/p-CmR5uXej.js +0 -4
  1024. package/components/p-CniZht3v.js +0 -4
  1025. package/components/p-CsaojgEs.js +0 -4
  1026. package/components/p-CtWGkNnJ.js +0 -4
  1027. package/components/p-D4FYu-4R.js +0 -4
  1028. package/components/p-DARjq3GM.js +0 -4
  1029. package/components/p-DEZ2myA3.js +0 -4
  1030. package/components/p-DJztqcrH.js +0 -4
  1031. package/components/p-DOFCbuQR.js +0 -4
  1032. package/components/p-DVe41iHI.js +0 -4
  1033. package/components/p-DX5m9g56.js +0 -4
  1034. package/components/p-DboHi2CL.js +0 -4
  1035. package/components/p-DiVJyqlX.js +0 -4
  1036. package/components/p-DqZAXv2t.js +0 -4
  1037. package/components/p-Dv8w0kqz.js +0 -4
  1038. package/components/p-Dw7GNDKq.js +0 -4
  1039. package/components/p-Dww01PNs.js +0 -4
  1040. package/components/p-Gy276IJk.js +0 -4
  1041. package/components/p-ZjP4CjeZ.js +0 -4
  1042. package/components/p-ZzLXTvyt.js +0 -4
  1043. package/components/p-j5IxBIan.js +0 -4
  1044. package/components/p-k_E4tX5Z.js +0 -4
  1045. package/components/p-lVAbdiAu.js +0 -4
  1046. package/components/p-rCa2eL0j.js +0 -4
  1047. package/dist/cjs/config-D6C-KlA9.js +0 -201
  1048. package/dist/cjs/hardware-back-button-CXmUnTJC.js +0 -121
  1049. package/dist/cjs/index-DkNv4J_i.js +0 -10
  1050. package/dist/cjs/ionic-global-BerQGEpE.js +0 -151
  1051. package/dist/cjs/keyboard-controller-GXBiBRKS.js +0 -167
  1052. package/dist/cjs/validity-BpS37YFM.js +0 -19
  1053. package/dist/esm/config-DQCONYYp.js +0 -195
  1054. package/dist/esm/hardware-back-button-B93Gru0Y.js +0 -115
  1055. package/dist/esm/index-ZjP4CjeZ.js +0 -7
  1056. package/dist/esm/ionic-global-Cp_eT4sZ.js +0 -146
  1057. package/dist/esm/keyboard-controller-BaaVITYt.js +0 -165
  1058. package/dist/esm/validity-DJztqcrH.js +0 -17
  1059. package/dist/ionic/p-01f81ea5.entry.js +0 -4
  1060. package/dist/ionic/p-0283ea73.entry.js +0 -4
  1061. package/dist/ionic/p-02ecae65.entry.js +0 -4
  1062. package/dist/ionic/p-0672f677.entry.js +0 -4
  1063. package/dist/ionic/p-0c06fe60.entry.js +0 -4
  1064. package/dist/ionic/p-0fa9c382.entry.js +0 -4
  1065. package/dist/ionic/p-1af4d74c.entry.js +0 -4
  1066. package/dist/ionic/p-1d7ef0d2.entry.js +0 -4
  1067. package/dist/ionic/p-26f05d3a.entry.js +0 -4
  1068. package/dist/ionic/p-27d30585.entry.js +0 -4
  1069. package/dist/ionic/p-2bb2cb18.entry.js +0 -4
  1070. package/dist/ionic/p-31e7bd05.entry.js +0 -4
  1071. package/dist/ionic/p-32f53010.entry.js +0 -4
  1072. package/dist/ionic/p-35eb8b5c.entry.js +0 -4
  1073. package/dist/ionic/p-37e720da.entry.js +0 -4
  1074. package/dist/ionic/p-3efa137b.entry.js +0 -4
  1075. package/dist/ionic/p-432bd72c.entry.js +0 -4
  1076. package/dist/ionic/p-47214c72.entry.js +0 -4
  1077. package/dist/ionic/p-4e172429.entry.js +0 -4
  1078. package/dist/ionic/p-5c3da84e.entry.js +0 -4
  1079. package/dist/ionic/p-5d1da0a2.entry.js +0 -4
  1080. package/dist/ionic/p-5d8082fe.entry.js +0 -4
  1081. package/dist/ionic/p-613d3c43.entry.js +0 -4
  1082. package/dist/ionic/p-616e4d4f.entry.js +0 -4
  1083. package/dist/ionic/p-65d611b2.entry.js +0 -4
  1084. package/dist/ionic/p-67806e3f.entry.js +0 -4
  1085. package/dist/ionic/p-68cbb2fc.entry.js +0 -4
  1086. package/dist/ionic/p-737ae9eb.entry.js +0 -4
  1087. package/dist/ionic/p-7b0d6248.entry.js +0 -4
  1088. package/dist/ionic/p-7e71e470.entry.js +0 -4
  1089. package/dist/ionic/p-84d5ce05.entry.js +0 -4
  1090. package/dist/ionic/p-85d49987.entry.js +0 -4
  1091. package/dist/ionic/p-8945088b.entry.js +0 -4
  1092. package/dist/ionic/p-8b155568.entry.js +0 -4
  1093. package/dist/ionic/p-90267c4b.entry.js +0 -4
  1094. package/dist/ionic/p-92ad8a67.entry.js +0 -4
  1095. package/dist/ionic/p-9a97d4e0.entry.js +0 -4
  1096. package/dist/ionic/p-9e4b0894.entry.js +0 -4
  1097. package/dist/ionic/p-9eeaBrnk.js +0 -4
  1098. package/dist/ionic/p-B4y7nxsg.js +0 -4
  1099. package/dist/ionic/p-B8t9Ro6f.js +0 -4
  1100. package/dist/ionic/p-BEOxsxBw.js +0 -4
  1101. package/dist/ionic/p-BJ2NxSHp.js +0 -4
  1102. package/dist/ionic/p-BLiL8g0v.js +0 -4
  1103. package/dist/ionic/p-BUFIpxKM.js +0 -4
  1104. package/dist/ionic/p-BmVRXR1y.js +0 -4
  1105. package/dist/ionic/p-CIGNaXM1.js +0 -4
  1106. package/dist/ionic/p-Cd4H8ft-.js +0 -4
  1107. package/dist/ionic/p-ClM02LPk.js +0 -4
  1108. package/dist/ionic/p-CtWGkNnJ.js +0 -4
  1109. package/dist/ionic/p-CxMyXUtt.js +0 -4
  1110. package/dist/ionic/p-DCoy2elM.js +0 -4
  1111. package/dist/ionic/p-DJztqcrH.js +0 -4
  1112. package/dist/ionic/p-DV3sJJW8.js +0 -4
  1113. package/dist/ionic/p-DZaO33Mw.js +0 -4
  1114. package/dist/ionic/p-DiVJyqlX.js +0 -4
  1115. package/dist/ionic/p-DipZFfzN.js +0 -4
  1116. package/dist/ionic/p-DqN5EA2O.js +0 -4
  1117. package/dist/ionic/p-Dr9fTCb1.js +0 -4
  1118. package/dist/ionic/p-DzWaWHGc.js +0 -4
  1119. package/dist/ionic/p-EkpneKVM.js +0 -4
  1120. package/dist/ionic/p-Nqf6uvGh.js +0 -4
  1121. package/dist/ionic/p-SNAkTDfm.js +0 -4
  1122. package/dist/ionic/p-ZjP4CjeZ.js +0 -4
  1123. package/dist/ionic/p-ab00b0d8.entry.js +0 -4
  1124. package/dist/ionic/p-c2175309.entry.js +0 -4
  1125. package/dist/ionic/p-c4b69d9b.entry.js +0 -4
  1126. package/dist/ionic/p-c4d8641b.entry.js +0 -4
  1127. package/dist/ionic/p-c6e49f3f.entry.js +0 -4
  1128. package/dist/ionic/p-ce637936.entry.js +0 -4
  1129. package/dist/ionic/p-da85e958.entry.js +0 -4
  1130. package/dist/ionic/p-dfa8d673.entry.js +0 -4
  1131. package/dist/ionic/p-e139357c.entry.js +0 -4
  1132. package/dist/ionic/p-e7b7a7b1.entry.js +0 -4
  1133. package/dist/ionic/p-f37ca594.entry.js +0 -4
  1134. package/dist/ionic/p-f8dd336e.entry.js +0 -4
  1135. package/dist/ionic/p-f9de757b.entry.js +0 -4
  1136. package/dist/ionic/p-fe11cf51.entry.js +0 -4
  1137. package/dist/ionic/p-mjKAFv89.js +0 -4
  1138. package/dist/ionic/p-tcQvqkiX.js +0 -5
  1139. /package/dist/collection/components/{input-password-toggle/input-password-toggle.css → refresher-content/refresher-content.css} +0 -0
@@ -3,21 +3,20 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-BfaXsATC.js');
7
- var hardwareBackButton = require('./hardware-back-button-CXmUnTJC.js');
8
- var ionicGlobal = require('./ionic-global-BerQGEpE.js');
9
- var helpers = require('./helpers-DdZyl6WL.js');
6
+ var index = require('./index-C1knGA9x.js');
7
+ var focusVisible = require('./focus-visible-BIj-I3-C.js');
8
+ var ionicGlobal = require('./ionic-global-DYLhJaw7.js');
9
+ var helpers = require('./helpers-Dhimwhpn.js');
10
10
  var dir = require('./dir-DD0jPVH3.js');
11
- var theme = require('./theme-CeDs6Hcv.js');
12
- var index$1 = require('./index-CD92bI7B.js');
13
- var keyboardController = require('./keyboard-controller-GXBiBRKS.js');
11
+ var theme = require('./theme-IlOsGAz7.js');
12
+ var index$1 = require('./index-Bsq0SbXc.js');
13
+ var scrollHideController = require('./scroll-hide-controller-qWMU5yOk.js');
14
14
  var cubicBezier = require('./cubic-bezier-DAjy1V-e.js');
15
- var frameworkDelegate = require('./framework-delegate-CEzl4MEA.js');
15
+ var frameworkDelegate = require('./framework-delegate-IvkF1VuM.js');
16
16
  var lockController = require('./lock-controller-aDB9wrEf.js');
17
- var index$2 = require('./index-CukZnH1U.js');
18
- require('./index-DkNv4J_i.js');
19
- require('./keyboard-UuAS4D_9.js');
20
- require('./capacitor-DmA66EwP.js');
17
+ var index$2 = require('./index-DuleInoh.js');
18
+ require('./keyboard-BgioTbwQ.js');
19
+ require('./capacitor-CRl0exFC.js');
21
20
 
22
21
  const appCss = () => `html.plt-mobile ion-app{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.plt-mobile ion-app [contenteditable]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}ion-app.force-statusbar-padding{--ion-safe-area-top:20px}`;
23
22
 
@@ -25,51 +24,6 @@ const App = class {
25
24
  constructor(hostRef) {
26
25
  index.registerInstance(this, hostRef);
27
26
  }
28
- componentDidLoad() {
29
- {
30
- this.rIC(async () => {
31
- const isHybrid = ionicGlobal.isPlatform(window, 'hybrid');
32
- if (!index.config.getBoolean('_testing')) {
33
- Promise.resolve().then(function () { return require('./index-MWAIyVLl.js'); }).then((module) => module.startTapClick(index.config));
34
- }
35
- if (index.config.getBoolean('statusTap', isHybrid)) {
36
- Promise.resolve().then(function () { return require('./status-tap-7FzRlXNr.js'); }).then((module) => module.startStatusTap());
37
- }
38
- if (index.config.getBoolean('inputShims', needInputShims())) {
39
- /**
40
- * needInputShims() ensures that only iOS and Android
41
- * platforms proceed into this block.
42
- */
43
- const platform = ionicGlobal.isPlatform(window, 'ios') ? 'ios' : 'android';
44
- Promise.resolve().then(function () { return require('./input-shims-CPKgrIe3.js'); }).then((module) => module.startInputShims(index.config, platform));
45
- }
46
- const hardwareBackButtonModule = await Promise.resolve().then(function () { return require('./hardware-back-button-CXmUnTJC.js'); });
47
- const supportsHardwareBackButtonEvents = isHybrid || hardwareBackButton.shouldUseCloseWatcher();
48
- if (index.config.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {
49
- hardwareBackButtonModule.startHardwareBackButton();
50
- }
51
- else {
52
- /**
53
- * If an app sets hardwareBackButton: false and experimentalCloseWatcher: true
54
- * then the close watcher will not be used.
55
- */
56
- if (hardwareBackButton.shouldUseCloseWatcher()) {
57
- index.printIonWarning('[ion-app] - experimentalCloseWatcher was set to `true`, but hardwareBackButton was set to `false`. Both config options must be `true` for the Close Watcher API to be used.');
58
- }
59
- hardwareBackButtonModule.blockHardwareBackButton();
60
- }
61
- if (typeof window !== 'undefined') {
62
- Promise.resolve().then(function () { return require('./keyboard-hHzlEQpk.js'); }).then((module) => module.startKeyboardAssist(window));
63
- }
64
- Promise.resolve().then(function () { return require('./focus-visible-CCvKiLh3.js'); }).then((module) => (this.focusVisible = module.startFocusVisible()));
65
- });
66
- }
67
- }
68
- disconnectedCallback() {
69
- if (this.loadTimeout) {
70
- clearTimeout(this.loadTimeout);
71
- }
72
- }
73
27
  /**
74
28
  * Used to set focus on an element that uses `ion-focusable`.
75
29
  * Do not use this if focusing the element as a result of a keyboard
@@ -82,52 +36,29 @@ const App = class {
82
36
  * @param elements An array of HTML elements to set focus on.
83
37
  */
84
38
  async setFocus(elements) {
85
- if (this.focusVisible) {
86
- this.focusVisible.setFocus(elements);
87
- }
88
- }
89
- rIC(callback) {
90
- if ('requestIdleCallback' in window) {
91
- window.requestIdleCallback(callback);
92
- }
93
- else {
94
- this.loadTimeout = setTimeout(callback, 32);
95
- }
39
+ /**
40
+ * The focus-visible utility is used to set focus on an
41
+ * element that uses `ion-focusable`.
42
+ */
43
+ focusVisible.focusElements(elements);
96
44
  }
97
45
  render() {
98
- const mode = ionicGlobal.getIonMode(this);
99
- return (index.h(index.Host, { key: '77a7459d3e42b3715a5a7e1cf468e2ebc99e54bb', class: {
100
- [mode]: true,
46
+ const theme = ionicGlobal.getIonTheme(this);
47
+ return (index.h(index.Host, { key: '3b7e84c7c4187287123413f90838cda89136b2a4', class: {
48
+ [theme]: true,
101
49
  'ion-page': true,
102
50
  'force-statusbar-padding': index.config.getBoolean('_forceStatusbarPadding'),
103
51
  } }));
104
52
  }
105
53
  get el() { return index.getElement(this); }
106
54
  };
107
- const needInputShims = () => {
108
- /**
109
- * iOS always needs input shims
110
- */
111
- const needsShimsIOS = ionicGlobal.isPlatform(window, 'ios') && ionicGlobal.isPlatform(window, 'mobile');
112
- if (needsShimsIOS) {
113
- return true;
114
- }
115
- /**
116
- * Android only needs input shims when running
117
- * in the browser and only if the browser is using the
118
- * new Chrome 108+ resize behavior: https://developer.chrome.com/blog/viewport-resize-behavior/
119
- */
120
- const isAndroidMobileWeb = ionicGlobal.isPlatform(window, 'android') && ionicGlobal.isPlatform(window, 'mobileweb');
121
- if (isAndroidMobileWeb) {
122
- return true;
123
- }
124
- return false;
125
- };
126
55
  App.style = appCss();
127
56
 
128
- const buttonsIosCss = () => `.sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:5px;--padding-end:5px;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-ios-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast);--background-activated:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.65em;line-height:0.67}`;
57
+ const buttonsIonicCss = () => `.sc-ion-buttons-ionic-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0)}.sc-ion-buttons-ionic-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ionic-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ionic-s .button-clear{--color:var(--token-text-default, var(--token-primitives-neutral-1200, #242424));--background:transparent;--background-activated:transparent;--background-focused:transparent;--background-hover:transparent}.sc-ion-buttons-ionic-s .button-has-icon-only{width:var(--token-scale-1000, 40px);height:var(--token-scale-1000, 40px)}.sc-ion-buttons-ionic-s ion-icon[slot=icon-only]{font-size:var(--token-font-size-500, 1.25rem)}`;
58
+
59
+ const buttonsIosCss = () => `.sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0)}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-h{z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:5px;--padding-end:5px;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-ios-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:0.12;--background-activated:#000;--background-activated-opacity:0.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast);--background-activated:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:0.12;--background-activated:#000;--background-activated-opacity:0.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.65em;line-height:0.67}`;
129
60
 
130
- const buttonsMdCss = () => `.sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:8px;--padding-end:8px;--box-shadow:none;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-md-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:3rem;height:3rem}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}`;
61
+ const buttonsMdCss = () => `.sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0)}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-h{z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:8px;--padding-end:8px;--box-shadow:none;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-md-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:3rem;height:3rem}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}`;
131
62
 
132
63
  const Buttons = class {
133
64
  constructor(hostRef) {
@@ -139,7 +70,7 @@ const Buttons = class {
139
70
  * first toolbar, the buttons will be hidden and will
140
71
  * only be shown once all toolbars have fully collapsed.
141
72
  *
142
- * Only applies in `ios` mode with `collapse` set to
73
+ * Only applies in the `ios` theme with `collapse` set to
143
74
  * `true` on `ion-header`.
144
75
  *
145
76
  * Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
@@ -147,19 +78,20 @@ const Buttons = class {
147
78
  this.collapse = false;
148
79
  }
149
80
  render() {
150
- const mode = ionicGlobal.getIonMode(this);
151
- return (index.h(index.Host, { key: '58c1fc5eb867d0731c63549b1ccb3ec3bbbe6e1b', class: {
152
- [mode]: true,
81
+ const theme = ionicGlobal.getIonTheme(this);
82
+ return (index.h(index.Host, { key: '95c107ba7871c801a5ef14c636dc8e2fe69debf3', class: {
83
+ [theme]: true,
153
84
  ['buttons-collapse']: this.collapse,
154
- } }, index.h("slot", { key: '0c8f95b9840c8fa0c4e50be84c5159620a3eb5c8' })));
85
+ } }, index.h("slot", { key: '58669abfce458e1344b84286d4200e305017b958' })));
155
86
  }
156
87
  };
157
88
  Buttons.style = {
89
+ ionic: buttonsIonicCss(),
158
90
  ios: buttonsIosCss(),
159
91
  md: buttonsMdCss()
160
92
  };
161
93
 
162
- const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--internal-content-safe-area-padding-bottom, 0px));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:""}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}`;
94
+ const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{right:0px;left:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{right:0px;left:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--internal-content-safe-area-padding-bottom, 0px));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:""}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}:host(.content-header-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll{-webkit-transition:height 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:height 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), height 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), height 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}:host(.content-header-hide-scroll-partner:not(.content-fullscreen).content-header-hide-scroll-hidden) .inner-scroll{height:calc(100% + var(--internal-header-hide-height, 0px));-webkit-transform:translateY(calc(-1 * var(--internal-header-hide-height, 0px)));transform:translateY(calc(-1 * var(--internal-header-hide-height, 0px)));-webkit-transition:height 200ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:height 200ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), height 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), height 200ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1)}:host(.content-footer-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll{-webkit-transition:height 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:height 200ms cubic-bezier(0.16, 1, 0.3, 1)}:host(.content-footer-hide-scroll-partner:not(.content-fullscreen).content-footer-hide-scroll-hidden) .inner-scroll{height:calc(100% + var(--internal-footer-hide-height, 0px));-webkit-transition:height 350ms cubic-bezier(0.4, 0, 1, 1);transition:height 350ms cubic-bezier(0.4, 0, 1, 1)}:host(.content-tab-bar-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll{-webkit-transition:height 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:height 200ms cubic-bezier(0.16, 1, 0.3, 1)}:host(.content-tab-bar-hide-scroll-partner:not(.content-fullscreen).content-tab-bar-hide-scroll-hidden) .inner-scroll{height:calc(100% + var(--internal-tab-bar-hide-height, 0px));-webkit-transition:height 350ms cubic-bezier(0.4, 0, 1, 1);transition:height 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){:host(.content-header-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll,:host(.content-header-hide-scroll-partner:not(.content-fullscreen).content-header-hide-scroll-hidden) .inner-scroll,:host(.content-footer-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll,:host(.content-footer-hide-scroll-partner:not(.content-fullscreen).content-footer-hide-scroll-hidden) .inner-scroll,:host(.content-tab-bar-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll,:host(.content-tab-bar-hide-scroll-partner:not(.content-fullscreen).content-tab-bar-hide-scroll-hidden) .inner-scroll{-webkit-transition:none;transition:none}}`;
163
95
 
164
96
  const Content = class {
165
97
  constructor(hostRef) {
@@ -367,9 +299,8 @@ const Content = class {
367
299
  this.resize();
368
300
  }, 100);
369
301
  }
370
- shouldForceOverscroll() {
302
+ shouldForceOverscroll(mode) {
371
303
  const { forceOverscroll } = this;
372
- const mode = ionicGlobal.getIonMode(this);
373
304
  return forceOverscroll === undefined ? mode === 'ios' && ionicGlobal.isPlatform('ios') : forceOverscroll;
374
305
  }
375
306
  resize() {
@@ -565,12 +496,13 @@ const Content = class {
565
496
  render() {
566
497
  const { fixedSlotPlacement, inheritedAttributes, isMainContent, scrollX, scrollY, el } = this;
567
498
  const rtl = dir.isRTL(el) ? 'rtl' : 'ltr';
568
- const mode = ionicGlobal.getIonMode(this);
569
- const forceOverscroll = this.shouldForceOverscroll();
570
- const transitionShadow = mode === 'ios';
499
+ const theme$1 = ionicGlobal.getIonTheme(this);
500
+ const mode = ionicGlobal.getIonMode(this, theme$1);
501
+ const forceOverscroll = this.shouldForceOverscroll(mode);
502
+ const transitionShadow = theme$1 === 'ios';
571
503
  this.resize();
572
- return (index.h(index.Host, Object.assign({ key: '9551c759df407b10d809171641fc6e8f14d92219', role: isMainContent ? 'main' : undefined, class: theme.createColorClasses(this.color, {
573
- [mode]: true,
504
+ return (index.h(index.Host, Object.assign({ key: '8c7f646f58e7c38fb6d8661b1629b847a16753fb', role: isMainContent ? 'main' : undefined, class: theme.createColorClasses(this.color, {
505
+ [theme$1]: true,
574
506
  'content-fullscreen': this.fullscreen,
575
507
  'content-sizing': theme.hostContext('ion-popover', this.el),
576
508
  overscroll: forceOverscroll,
@@ -578,12 +510,12 @@ const Content = class {
578
510
  }), style: {
579
511
  '--offset-top': `${this.cTop}px`,
580
512
  '--offset-bottom': `${this.cBottom}px`,
581
- } }, inheritedAttributes), index.h("div", { key: 'c6de8fd226f0d10a534eb107fe032ac155fbe68e', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? index.h("slot", { name: "fixed" }) : null, index.h("div", { key: '082fc2936061360060b48221ecb1c864a3711fa0', class: {
513
+ } }, inheritedAttributes), index.h("div", { key: '2b0505c3fdf5c92938b8419c0f57f8d999aec6b3', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? index.h("slot", { name: "fixed" }) : null, index.h("div", { key: '6b769596e491dea1d3618551497fde9364afdeda', class: {
582
514
  'inner-scroll': true,
583
515
  'scroll-x': scrollX,
584
516
  'scroll-y': scrollY,
585
517
  overscroll: (scrollX || scrollY) && forceOverscroll,
586
- }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: '0d2286206facb22696a9ca7e74a3f6b7d2397aab' })), transitionShadow ? (index.h("div", { class: "transition-effect" }, index.h("div", { class: "transition-cover" }), index.h("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? index.h("slot", { name: "fixed" }) : null));
518
+ }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: 'ba36c8468681d028352415039d2cb2a750f2638f' })), transitionShadow ? (index.h("div", { class: "transition-effect" }, index.h("div", { class: "transition-cover" }), index.h("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? index.h("slot", { name: "fixed" }) : null));
587
519
  }
588
520
  get el() { return index.getElement(this); }
589
521
  static get watchers() { return {
@@ -614,7 +546,8 @@ const getPageElement = (el) => {
614
546
  * between the popover and the edges of the screen. But if the popover contains
615
547
  * its own page element, we should use that instead.
616
548
  */
617
- const page = el.closest('ion-app, ion-page, .ion-page, page-inner, .popover-content');
549
+ const appRootSelector = index.config.get('appRootSelector', 'ion-app');
550
+ const page = el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner, .popover-content`);
618
551
  if (page) {
619
552
  return page;
620
553
  }
@@ -678,45 +611,90 @@ const handleFooterFade = (scrollEl, baseEl) => {
678
611
  });
679
612
  };
680
613
 
681
- const footerIosCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-ios ion-toolbar:first-of-type{--border-width:0.55px 0 0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.footer-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.footer-translucent-ios ion-toolbar{--opacity:.8}}.footer-ios.ion-no-border ion-toolbar:first-of-type{--border-width:0}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}`;
614
+ const ionicFooterMdCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}ion-footer.footer-scroll-effect-hide{-webkit-transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1), -webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1)}ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){ion-footer.footer-scroll-effect-hide,ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transition:none;transition:none}}.footer-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.footer-md.footer-collapse-fade{-webkit-box-shadow:none;box-shadow:none}.footer-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
682
615
 
683
- const footerMdCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.footer-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
616
+ const footerIosCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}ion-footer.footer-scroll-effect-hide{-webkit-transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1), -webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1)}ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){ion-footer.footer-scroll-effect-hide,ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transition:none;transition:none}}.footer-ios ion-toolbar:first-of-type{--border-width:0.55px 0 0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.footer-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.footer-translucent-ios ion-toolbar{--opacity:0.8}}.footer-ios.ion-no-border ion-toolbar:first-of-type{--border-width:0}`;
617
+
618
+ const footerMdCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}ion-footer.footer-scroll-effect-hide{-webkit-transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1), -webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1)}ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){ion-footer.footer-scroll-effect-hide,ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transition:none;transition:none}}.footer-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.footer-md.footer-collapse-fade{-webkit-box-shadow:none;box-shadow:none}.footer-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
684
619
 
685
620
  const Footer = class {
686
621
  constructor(hostRef) {
687
622
  index.registerInstance(this, hostRef);
688
623
  this.keyboardCtrl = null;
689
624
  this.keyboardCtrlPromise = null;
625
+ this.scrollHideCtrlPromise = null;
626
+ this.hasWarnedCollapse = false;
627
+ this.fadeSetupId = 0;
690
628
  this.keyboardVisible = false;
691
629
  /**
692
630
  * If `true`, the footer will be translucent.
693
- * Only applies when the mode is `"ios"` and the device supports
631
+ * Only applies when the theme is `"ios"` and the device supports
694
632
  * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
695
633
  *
696
634
  * Note: In order to scroll content behind the footer, the `fullscreen`
697
635
  * attribute needs to be set on the content.
698
636
  */
699
637
  this.translucent = false;
700
- this.checkCollapsibleFooter = () => {
701
- const mode = ionicGlobal.getIonMode(this);
702
- if (mode !== 'ios') {
638
+ this.checkCollapsibleFooter = async () => {
639
+ const { scrollEffect, collapse } = this;
640
+ if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
641
+ this.hasWarnedCollapse = true;
642
+ index.printIonWarning(`[ion-footer] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-footer scroll-effect="${collapse}">`, this.el);
643
+ }
644
+ const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
645
+ // Skip teardown/rebuild if the effect hasn't changed.
646
+ // This prevents keyboard toggles (which trigger re-renders via
647
+ // @State keyboardVisible) from destroying the scroll controller
648
+ // and resetting isHidden.
649
+ if (effect === this.activeEffect) {
703
650
  return;
704
651
  }
705
- const { collapse } = this;
706
- const hasFade = collapse === 'fade';
652
+ const hasHide = effect === 'hide';
653
+ const hasFade = effect === 'fade';
707
654
  this.destroyCollapsibleFooter();
708
- if (hasFade) {
709
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
710
- const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
655
+ const appRootSelector = index.config.get('appRootSelector', 'ion-app');
656
+ const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
657
+ const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
658
+ if (hasHide && contentEl) {
659
+ this.activeEffect = effect;
660
+ await this.setupScrollEffectHide(contentEl);
661
+ return;
662
+ }
663
+ // fade via the deprecated `collapse` prop is iOS-only.
664
+ // fade via the new `scrollEffect` prop works in all themes.
665
+ const isModeRestricted = scrollEffect === undefined && ionicGlobal.getIonTheme(this) !== 'ios';
666
+ if (hasFade && !isModeRestricted) {
711
667
  if (!contentEl) {
712
668
  index$1.printIonContentErrorMsg(this.el);
713
669
  return;
714
670
  }
715
671
  this.setupFadeFooter(contentEl);
672
+ this.activeEffect = effect;
673
+ }
674
+ };
675
+ this.setupScrollEffectHide = async (contentEl) => {
676
+ const setupPromise = scrollHideController.createScrollHideController(contentEl, {
677
+ el: this.el,
678
+ cssVar: '--internal-footer-hide-height',
679
+ hiddenClass: 'footer-scroll-hidden',
680
+ contentPartnerClass: 'content-footer-hide-scroll-partner',
681
+ contentHiddenClass: 'content-footer-hide-scroll-hidden',
682
+ });
683
+ this.scrollHideCtrlPromise = setupPromise;
684
+ const controller = await setupPromise;
685
+ if (this.scrollHideCtrlPromise === setupPromise) {
686
+ this.scrollHideCtrlPromise = null;
687
+ controller.init();
688
+ this.scrollHideCtrl = controller;
716
689
  }
717
690
  };
718
691
  this.setupFadeFooter = async (contentEl) => {
719
- const scrollEl = (this.scrollEl = await index$1.getScrollElement(contentEl));
692
+ const setupId = ++this.fadeSetupId;
693
+ const scrollEl = await index$1.getScrollElement(contentEl);
694
+ if (this.fadeSetupId !== setupId) {
695
+ return;
696
+ }
697
+ this.scrollEl = scrollEl;
720
698
  /**
721
699
  * Handle fading of toolbars on scroll
722
700
  */
@@ -734,7 +712,7 @@ const Footer = class {
734
712
  this.checkCollapsibleFooter();
735
713
  }
736
714
  async connectedCallback() {
737
- const promise = keyboardController.createKeyboardController(async (keyboardOpen, waitForResize) => {
715
+ const promise = scrollHideController.createKeyboardController(async (keyboardOpen, waitForResize) => {
738
716
  /**
739
717
  * If the keyboard is hiding, then we need to wait
740
718
  * for the webview to resize. Otherwise, the footer
@@ -761,6 +739,7 @@ const Footer = class {
761
739
  }
762
740
  }
763
741
  disconnectedCallback() {
742
+ this.destroyCollapsibleFooter();
764
743
  if (this.keyboardCtrlPromise) {
765
744
  this.keyboardCtrlPromise.then((ctrl) => ctrl.destroy());
766
745
  this.keyboardCtrlPromise = null;
@@ -771,29 +750,43 @@ const Footer = class {
771
750
  }
772
751
  }
773
752
  destroyCollapsibleFooter() {
753
+ this.activeEffect = undefined;
754
+ this.fadeSetupId++;
755
+ this.scrollHideCtrlPromise = null;
756
+ if (this.scrollHideCtrl) {
757
+ this.scrollHideCtrl.destroy();
758
+ this.scrollHideCtrl = undefined;
759
+ }
774
760
  if (this.scrollEl && this.contentScrollCallback) {
775
761
  this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
776
762
  this.contentScrollCallback = undefined;
777
763
  }
778
764
  }
779
765
  render() {
780
- const { translucent, collapse } = this;
781
- const mode = ionicGlobal.getIonMode(this);
766
+ const { translucent, scrollEffect, collapse } = this;
767
+ const theme = ionicGlobal.getIonTheme(this);
768
+ const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
769
+ // fade via the deprecated `collapse` prop is iOS-only.
770
+ const isModeRestricted = scrollEffect === undefined && theme !== 'ios';
771
+ const hasHide = effect === 'hide';
772
+ const hasFade = effect === 'fade' && !isModeRestricted;
782
773
  const tabs = this.el.closest('ion-tabs');
783
774
  const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');
784
- return (index.h(index.Host, { key: '71939c4bbaef5062532a99ee2e33574102a9abad', role: "contentinfo", class: {
785
- [mode]: true,
775
+ return (index.h(index.Host, { key: 'a0777b4a639d22e15374879f018efcf589e756f8', role: "contentinfo", class: {
776
+ [theme]: true,
786
777
  // Used internally for styling
787
- [`footer-${mode}`]: true,
778
+ [`footer-${theme}`]: true,
788
779
  [`footer-translucent`]: translucent,
789
- [`footer-translucent-${mode}`]: translucent,
780
+ [`footer-translucent-${theme}`]: translucent,
790
781
  ['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
791
- [`footer-collapse-${collapse}`]: collapse !== undefined,
792
- } }, mode === 'ios' && translucent && index.h("div", { key: '2fa14f61661c47c661cecd696176728d6eafa74f', class: "footer-background" }), index.h("slot", { key: '8e63696e7c528d5c38201e546bf08135290d0945' })));
782
+ 'footer-collapse-fade': hasFade,
783
+ 'footer-scroll-effect-hide': hasHide,
784
+ } }, theme === 'ios' && translucent && index.h("div", { key: 'd78b46870cbf11c95b066d649c04ec398b66e614', class: "footer-background" }), index.h("slot", { key: '9dc34787cd29597fe1b1198db317602014ac1483' })));
793
785
  }
794
786
  get el() { return index.getElement(this); }
795
787
  };
796
788
  Footer.style = {
789
+ ionic: ionicFooterMdCss(),
797
790
  ios: footerIosCss(),
798
791
  md: footerMdCss()
799
792
  };
@@ -845,13 +838,14 @@ const handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {
845
838
  });
846
839
  };
847
840
  const setToolbarBackgroundOpacity = (headerEl, opacity) => {
841
+ var _a;
848
842
  /**
849
843
  * Fading in the backdrop opacity
850
844
  * should happen after the large title
851
845
  * has collapsed, so it is handled
852
846
  * by handleHeaderFade()
853
847
  */
854
- if (headerEl.collapse === 'fade') {
848
+ if (((_a = headerEl.scrollEffect) !== null && _a !== void 0 ? _a : headerEl.collapse) === 'fade') {
855
849
  return;
856
850
  }
857
851
  if (opacity === undefined) {
@@ -1009,46 +1003,69 @@ const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
1009
1003
  * Get the role type for the ion-header.
1010
1004
  *
1011
1005
  * @param isInsideMenu If ion-header is inside ion-menu.
1012
- * @param isCondensed If ion-header has collapse="condense".
1013
- * @param mode The current mode.
1014
- * @returns 'none' if inside ion-menu or if condensed in md
1015
- * mode, otherwise 'banner'.
1006
+ * @returns 'none' if inside ion-menu, otherwise 'banner'.
1007
+ * Condensed headers start as 'banner' and have their role
1008
+ * toggled dynamically by setHeaderActive() on scroll.
1016
1009
  */
1017
- const getRoleType = (isInsideMenu, isCondensed, mode) => {
1010
+ const getRoleType = (isInsideMenu) => {
1018
1011
  // If the header is inside a menu, it should not have the banner role.
1019
1012
  if (isInsideMenu) {
1020
1013
  return ROLE_NONE;
1021
1014
  }
1022
- /**
1023
- * Only apply role="none" to `md` mode condensed headers
1024
- * since the large header is never shown.
1025
- */
1026
- if (isCondensed && mode === 'md') {
1027
- return ROLE_NONE;
1028
- }
1029
1015
  // Default to banner role.
1030
1016
  return ROLE_BANNER;
1031
1017
  };
1032
1018
 
1033
- const headerIosCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-ios ion-toolbar:last-of-type{--border-width:0 0 0.55px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.header-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.header-translucent-ios ion-toolbar{--opacity:.8}.header-collapse-condense-inactive .header-background{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.header-ios.ion-no-border ion-toolbar:last-of-type{--border-width:0}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header.header-ios:not(.header-collapse-main):has(~ion-content ion-header.header-ios[collapse=condense],~ion-content ion-header.header-ios.header-collapse-condense){opacity:0}`;
1019
+ const headerIonicCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header:not(.header-collapse-main):has(~ion-content ion-header.header-collapse-condense){opacity:0}.header-collapse-condense-hidden{display:none}ion-header.header-scroll-effect-hide{-webkit-transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);opacity:0}@media (prefers-reduced-motion: reduce){ion-header.header-scroll-effect-hide,ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transition:none;transition:none}}ion-header{z-index:10}ion-header.header-divider{border-bottom:var(--token-border-size-025, var(--token-scale-025, 1px)) var(--token-border-style-solid, solid) var(--token-border-default, var(--token-primitives-neutral-400, #d5d5d5))}ion-toolbar+ion-toolbar{--padding-start:var(--token-space-400, var(--token-scale-400, 16px));--padding-end:var(--token-space-400, var(--token-scale-400, 16px))}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.header-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(var(--token-scale-100, 4px));backdrop-filter:saturate(180%) blur(var(--token-scale-100, 4px))}.header-translucent-ionic ion-toolbar{--opacity:0.7}}`;
1034
1020
 
1035
- const headerMdCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.header-md.header-collapse-condense{display:none}.header-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
1021
+ const headerIosCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header:not(.header-collapse-main):has(~ion-content ion-header.header-collapse-condense){opacity:0}.header-collapse-condense-hidden{display:none}ion-header.header-scroll-effect-hide{-webkit-transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);opacity:0}@media (prefers-reduced-motion: reduce){ion-header.header-scroll-effect-hide,ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transition:none;transition:none}}ion-header{z-index:10}.header-ios ion-toolbar:last-of-type{--border-width:0 0 0.55px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.header-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.header-translucent-ios ion-toolbar{--opacity:0.8}.header-collapse-condense-inactive .header-background{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.header-ios.ion-no-border ion-toolbar:last-of-type{--border-width:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}`;
1022
+
1023
+ const headerMdCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header:not(.header-collapse-main):has(~ion-content ion-header.header-collapse-condense){opacity:0}.header-collapse-condense-hidden{display:none}ion-header.header-scroll-effect-hide{-webkit-transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);opacity:0}@media (prefers-reduced-motion: reduce){ion-header.header-scroll-effect-hide,ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transition:none;transition:none}}ion-header{z-index:10}.header-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.header-md.header-collapse-condense{-webkit-box-shadow:none;box-shadow:none}.header-md.header-collapse-condense-inactive:not(.header-collapse-condense){-webkit-box-shadow:none;box-shadow:none}.header-md.header-collapse-fade{-webkit-box-shadow:none;box-shadow:none}.header-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
1036
1024
 
1037
1025
  const Header = class {
1038
1026
  constructor(hostRef) {
1039
1027
  index.registerInstance(this, hostRef);
1040
1028
  this.inheritedAttributes = {};
1029
+ this.scrollHideCtrlPromise = null;
1030
+ this.hasWarnedCollapse = false;
1031
+ this.fadeCondenseSetupId = 0;
1032
+ /**
1033
+ * If `true`, the header will have a line at the bottom.
1034
+ * TODO(ROU-10855): add support for this prop on ios/md themes
1035
+ */
1036
+ this.divider = false;
1041
1037
  /**
1042
1038
  * If `true`, the header will be translucent.
1043
- * Only applies when the mode is `"ios"` and the device supports
1039
+ * Only applies when the theme is `"ios"` or `"ionic"` and the device supports
1044
1040
  * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
1045
1041
  *
1046
1042
  * Note: In order to scroll content behind the header, the `fullscreen`
1047
1043
  * attribute needs to be set on the content.
1048
1044
  */
1049
1045
  this.translucent = false;
1046
+ this.setupScrollEffectHide = async (contentEl) => {
1047
+ const setupPromise = scrollHideController.createScrollHideController(contentEl, {
1048
+ el: this.el,
1049
+ cssVar: '--internal-header-hide-height',
1050
+ hiddenClass: 'header-scroll-hidden',
1051
+ contentPartnerClass: 'content-header-hide-scroll-partner',
1052
+ contentHiddenClass: 'content-header-hide-scroll-hidden',
1053
+ });
1054
+ this.scrollHideCtrlPromise = setupPromise;
1055
+ const controller = await setupPromise;
1056
+ if (this.scrollHideCtrlPromise === setupPromise) {
1057
+ this.scrollHideCtrlPromise = null;
1058
+ controller.init();
1059
+ this.scrollHideCtrl = controller;
1060
+ }
1061
+ };
1050
1062
  this.setupFadeHeader = async (contentEl, condenseHeader) => {
1051
- const scrollEl = (this.scrollEl = await index$1.getScrollElement(contentEl));
1063
+ const setupId = ++this.fadeCondenseSetupId;
1064
+ const scrollEl = await index$1.getScrollElement(contentEl);
1065
+ if (this.fadeCondenseSetupId !== setupId) {
1066
+ return;
1067
+ }
1068
+ this.scrollEl = scrollEl;
1052
1069
  /**
1053
1070
  * Handle fading of toolbars on scroll
1054
1071
  */
@@ -1072,37 +1089,63 @@ const Header = class {
1072
1089
  this.destroyCollapsibleHeader();
1073
1090
  }
1074
1091
  async checkCollapsibleHeader() {
1075
- const mode = ionicGlobal.getIonMode(this);
1076
- if (mode !== 'ios') {
1092
+ const { scrollEffect, collapse } = this;
1093
+ if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
1094
+ this.hasWarnedCollapse = true;
1095
+ index.printIonWarning(`[ion-header] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-header scroll-effect="${collapse}">`, this.el);
1096
+ }
1097
+ const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
1098
+ // Skip teardown/rebuild if the effect hasn't changed.
1099
+ // This prevents re-renders from destroying the scroll controller
1100
+ // and resetting isHidden.
1101
+ if (effect === this.activeEffect) {
1077
1102
  return;
1078
1103
  }
1079
- const { collapse } = this;
1080
- const hasCondense = collapse === 'condense';
1081
- const hasFade = collapse === 'fade';
1104
+ const hasHide = effect === 'hide';
1105
+ const hasCondense = effect === 'condense';
1106
+ const hasFade = effect === 'fade';
1082
1107
  this.destroyCollapsibleHeader();
1083
- if (hasCondense) {
1084
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
1085
- const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
1108
+ const appRootSelector = index.config.get('appRootSelector', 'ion-app');
1109
+ const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
1110
+ const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
1111
+ if (hasHide && contentEl) {
1112
+ this.activeEffect = effect;
1113
+ await this.setupScrollEffectHide(contentEl);
1114
+ return;
1115
+ }
1116
+ // condense/fade via the deprecated `collapse` prop are iOS-only.
1117
+ // condense/fade via the new `scrollEffect` prop work in all themes.
1118
+ const isModeRestricted = scrollEffect === undefined && ionicGlobal.getIonTheme(this) !== 'ios';
1119
+ if (hasCondense && !isModeRestricted) {
1086
1120
  // Cloned elements are always needed in iOS transition
1087
1121
  index.writeTask(() => {
1088
1122
  const title = cloneElement('ion-title');
1089
1123
  title.size = 'large';
1090
1124
  cloneElement('ion-back-button');
1091
1125
  });
1092
- await this.setupCondenseHeader(contentEl, pageEl);
1126
+ const didSetup = await this.setupCondenseHeader(contentEl, pageEl);
1127
+ if (didSetup) {
1128
+ this.activeEffect = effect;
1129
+ }
1093
1130
  }
1094
- else if (hasFade) {
1095
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
1096
- const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
1131
+ else if (hasFade && !isModeRestricted) {
1097
1132
  if (!contentEl) {
1098
1133
  index$1.printIonContentErrorMsg(this.el);
1099
1134
  return;
1100
1135
  }
1101
- const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
1136
+ const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"],ion-header[scroll-effect="condense"]');
1137
+ this.activeEffect = effect;
1102
1138
  await this.setupFadeHeader(contentEl, condenseHeader);
1103
1139
  }
1104
1140
  }
1105
1141
  destroyCollapsibleHeader() {
1142
+ this.activeEffect = undefined;
1143
+ this.fadeCondenseSetupId++;
1144
+ this.scrollHideCtrlPromise = null;
1145
+ if (this.scrollHideCtrl) {
1146
+ this.scrollHideCtrl.destroy();
1147
+ this.scrollHideCtrl = undefined;
1148
+ }
1106
1149
  if (this.intersectionObserver) {
1107
1150
  this.intersectionObserver.disconnect();
1108
1151
  this.intersectionObserver = undefined;
@@ -1119,21 +1162,40 @@ const Header = class {
1119
1162
  async setupCondenseHeader(contentEl, pageEl) {
1120
1163
  if (!contentEl || !pageEl) {
1121
1164
  index$1.printIonContentErrorMsg(this.el);
1122
- return;
1165
+ return false;
1123
1166
  }
1124
1167
  if (typeof IntersectionObserver === 'undefined') {
1125
- return;
1168
+ return false;
1169
+ }
1170
+ const setupId = ++this.fadeCondenseSetupId;
1171
+ const scrollEl = await index$1.getScrollElement(contentEl);
1172
+ if (this.fadeCondenseSetupId !== setupId) {
1173
+ return false;
1174
+ }
1175
+ this.scrollEl = scrollEl;
1176
+ /**
1177
+ * The condense effect requires an ion-title with size="large"
1178
+ * in the condense header. Without it, there is nothing to
1179
+ * collapse into the main header toolbar.
1180
+ */
1181
+ const hasLargeTitle = this.el.querySelector('ion-title[size="large"]') !== null;
1182
+ if (!hasLargeTitle) {
1183
+ index.printIonWarning('[ion-header] - The condense scroll effect requires an <ion-title size="large"> in the condense header.', this.el);
1184
+ return false;
1126
1185
  }
1127
- this.scrollEl = await index$1.getScrollElement(contentEl);
1128
1186
  const headers = pageEl.querySelectorAll('ion-header');
1129
- this.collapsibleMainHeader = Array.from(headers).find((header) => header.collapse !== 'condense');
1187
+ this.collapsibleMainHeader = Array.from(headers).find((header) => {
1188
+ var _a;
1189
+ const effect = (_a = header.scrollEffect) !== null && _a !== void 0 ? _a : header.collapse;
1190
+ return effect !== 'condense';
1191
+ });
1130
1192
  if (!this.collapsibleMainHeader) {
1131
- return;
1193
+ return false;
1132
1194
  }
1133
1195
  const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);
1134
1196
  const scrollHeaderIndex = createHeaderIndex(this.el);
1135
1197
  if (!mainHeaderIndex || !scrollHeaderIndex) {
1136
- return;
1198
+ return false;
1137
1199
  }
1138
1200
  setHeaderActive(mainHeaderIndex, false);
1139
1201
  setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);
@@ -1165,31 +1227,45 @@ const Header = class {
1165
1227
  this.collapsibleMainHeader.classList.add('header-collapse-main');
1166
1228
  }
1167
1229
  });
1230
+ return true;
1168
1231
  }
1169
1232
  render() {
1170
- const { translucent, inheritedAttributes } = this;
1171
- const mode = ionicGlobal.getIonMode(this);
1172
- const collapse = this.collapse || 'none';
1173
- const isCondensed = collapse === 'condense';
1233
+ const { translucent, inheritedAttributes, divider, scrollEffect, collapse } = this;
1234
+ const theme$1 = ionicGlobal.getIonTheme(this);
1235
+ const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
1236
+ // condense/fade via the deprecated `collapse` prop are iOS-only.
1237
+ const isModeRestricted = scrollEffect === undefined && theme$1 !== 'ios';
1238
+ const hasHide = effect === 'hide';
1239
+ const hasCondense = effect === 'condense' && !isModeRestricted && this.el.querySelector('ion-title[size="large"]') !== null;
1240
+ const hasFade = effect === 'fade' && !isModeRestricted;
1241
+ // The condense header should be hidden when
1242
+ // - deprecated collapse prop is used on non-iOS (mode restricted), or
1243
+ // - scrollEffect="condense" is set but no ion-title[size="large"] is present
1244
+ const isHiddenCondense = effect === 'condense' && !hasCondense;
1174
1245
  // banner role must be at top level, so remove role if inside a menu
1175
- const roleType = getRoleType(theme.hostContext('ion-menu', this.el), isCondensed, mode);
1176
- return (index.h(index.Host, Object.assign({ key: '863c4568cd7b8c0ec55109f193bbbaed68a1346e', role: roleType, class: {
1177
- [mode]: true,
1246
+ const roleType = isHiddenCondense ? 'none' : getRoleType(theme.hostContext('ion-menu', this.el));
1247
+ return (index.h(index.Host, Object.assign({ key: '09f60ca014bb7b3a85d3c0a94e7989d5dbc43f46', role: roleType, class: {
1248
+ [theme$1]: true,
1178
1249
  // Used internally for styling
1179
- [`header-${mode}`]: true,
1250
+ [`header-${theme$1}`]: true,
1180
1251
  [`header-translucent`]: this.translucent,
1181
- [`header-collapse-${collapse}`]: true,
1182
- [`header-translucent-${mode}`]: this.translucent,
1183
- } }, inheritedAttributes), mode === 'ios' && translucent && index.h("div", { key: '25c3bdce328b0b35607d154c8b8374679313d881', class: "header-background" }), index.h("slot", { key: 'b44fab0a9be7920b9650da26117c783e751e1702' })));
1252
+ ['header-collapse-condense']: hasCondense,
1253
+ ['header-collapse-condense-hidden']: isHiddenCondense,
1254
+ ['header-collapse-fade']: hasFade,
1255
+ [`header-translucent-${theme$1}`]: this.translucent,
1256
+ ['header-divider']: divider,
1257
+ 'header-scroll-effect-hide': hasHide,
1258
+ } }, inheritedAttributes), theme$1 !== 'md' && translucent && index.h("div", { key: 'fd5ff245ae0166e5e1d50936cacc98c90625db48', class: "header-background" }), index.h("slot", { key: '1baa31af87b9eb6406a21073ec65afa191dfbb3d' })));
1184
1259
  }
1185
1260
  get el() { return index.getElement(this); }
1186
1261
  };
1187
1262
  Header.style = {
1263
+ ionic: headerIonicCss(),
1188
1264
  ios: headerIosCss(),
1189
1265
  md: headerMdCss()
1190
1266
  };
1191
1267
 
1192
- const routerOutletCss = () => `:host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
1268
+ const routerOutletCss = () => `:host{right:0;left:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
1193
1269
 
1194
1270
  const RouterOutlet = class {
1195
1271
  constructor(hostRef) {
@@ -1200,7 +1276,7 @@ const RouterOutlet = class {
1200
1276
  this.lockController = lockController.createLockController();
1201
1277
  this.gestureOrAnimationInProgress = false;
1202
1278
  /**
1203
- * The mode determines which platform styles to use.
1279
+ * The mode determines the platform behaviors of the component.
1204
1280
  */
1205
1281
  this.mode = ionicGlobal.getIonMode(this);
1206
1282
  /**
@@ -1220,7 +1296,7 @@ const RouterOutlet = class {
1220
1296
  this.swipeHandler.onStart();
1221
1297
  }
1222
1298
  };
1223
- this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-DwTZiAc9.js'); })).createSwipeBackGesture(this.el, () => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart(), () => onStart(), (step) => { var _a; return (_a = this.ani) === null || _a === void 0 ? void 0 : _a.progressStep(step); }, (shouldComplete, step, dur) => {
1299
+ this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-4vY7mi8i.js'); })).createSwipeBackGesture(this.el, () => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart(), () => onStart(), (step) => { var _a; return (_a = this.ani) === null || _a === void 0 ? void 0 : _a.progressStep(step); }, (shouldComplete, step, dur) => {
1224
1300
  if (this.ani) {
1225
1301
  this.ani.onFinish(() => {
1226
1302
  this.gestureOrAnimationInProgress = false;
@@ -1366,7 +1442,7 @@ const RouterOutlet = class {
1366
1442
  return true;
1367
1443
  }
1368
1444
  render() {
1369
- return index.h("slot", { key: '386c41745b61daba161cf75063da97fe29ba36cb' });
1445
+ return index.h("slot", { key: '56e3d06ed939755796058e30ef19fbc7f7cb490d' });
1370
1446
  }
1371
1447
  get el() { return index.getElement(this); }
1372
1448
  static get watchers() { return {
@@ -1377,9 +1453,11 @@ const RouterOutlet = class {
1377
1453
  };
1378
1454
  RouterOutlet.style = routerOutletCss();
1379
1455
 
1380
- const titleIosCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{top:0;-webkit-padding-start:90px;padding-inline-start:90px;-webkit-padding-end:90px;padding-inline-end:90px;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);position:absolute;width:100%;height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);font-size:min(1.0625rem, 20.4px);font-weight:600;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host{inset-inline-start:0}:host(.title-small){-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px;padding-top:6px;padding-bottom:16px;position:relative;font-size:min(0.8125rem, 23.4px);font-weight:normal}:host(.title-large){-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:2px;padding-bottom:4px;-webkit-transform-origin:left center;transform-origin:left center;position:static;-ms-flex-align:end;align-items:flex-end;min-width:100%;font-size:min(2.125rem, 61.2px);font-weight:700;text-align:start}:host(.title-large.title-rtl){-webkit-transform-origin:right center;transform-origin:right center}:host(.title-large.ion-cloned-element){--color:var(--ion-text-color, #000);font-family:var(--ion-font-family)}:host(.title-large) .toolbar-title{-webkit-transform-origin:inherit;transform-origin:inherit;width:auto}:host-context([dir=rtl]):host(.title-large) .toolbar-title,:host-context([dir=rtl]).title-large .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}@supports selector(:dir(rtl)){:host(.title-large:dir(rtl)) .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}}`;
1456
+ const titleIonicCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{font-size:var(--token-font-size-450, 1.125rem);font-weight:var(--token-font-weight-medium, 500);letter-spacing:var(--token-font-letter-spacing-0, 0%);line-height:var(--token-font-line-height-700, var(--token-scale-700, 28px));text-decoration:none;text-transform:none;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host(.title-large){font-size:var(--token-font-size-700, 1.75rem);font-weight:var(--token-font-weight-medium, 500);letter-spacing:var(--token-font-letter-spacing-0, 0%);line-height:var(--token-font-line-height-900, var(--token-scale-900, 36px));text-decoration:none;text-transform:none}`;
1457
+
1458
+ const titleIosCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host(.ion-color){color:var(--ion-color-base)}:host{top:0;-webkit-padding-start:90px;padding-inline-start:90px;-webkit-padding-end:90px;padding-inline-end:90px;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);position:absolute;width:100%;height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);font-size:min(1.0625rem, 20.4px);font-weight:600;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host{inset-inline-start:0}:host(.title-small){-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px;padding-top:6px;padding-bottom:16px;position:relative;font-size:min(0.8125rem, 23.4px);font-weight:normal}:host(.title-large){-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:2px;padding-bottom:4px;-webkit-transform-origin:left center;transform-origin:left center;position:static;-ms-flex-align:end;align-items:flex-end;min-width:100%;font-size:min(2.125rem, 61.2px);font-weight:700;text-align:start}:host(.title-large.title-rtl){-webkit-transform-origin:right center;transform-origin:right center}:host(.title-large.ion-cloned-element){--color:var(--ion-text-color, #000);font-family:var(--ion-font-family)}:host(.title-large) .toolbar-title{-webkit-transform-origin:inherit;transform-origin:inherit;width:auto}:host-context([dir=rtl]):host(.title-large) .toolbar-title,:host-context([dir=rtl]).title-large .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}@supports selector(:dir(rtl)){:host(.title-large:dir(rtl)) .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}}`;
1381
1459
 
1382
- const titleMdCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:0;padding-bottom:0;font-size:1.25rem;font-weight:500;letter-spacing:0.0125em}:host(.title-small){width:100%;height:100%;font-size:0.9375rem;font-weight:normal}`;
1460
+ const titleMdCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host(.ion-color){color:var(--ion-color-base)}:host{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:0;padding-bottom:0;font-size:1.25rem;font-weight:500;letter-spacing:0.0125em}:host(.title-small){width:100%;height:100%;font-size:0.9375rem;font-weight:normal}:host(.title-large){width:100%;height:100%;font-size:1.75rem;font-weight:400}`;
1383
1461
 
1384
1462
  const ToolbarTitle = class {
1385
1463
  constructor(hostRef) {
@@ -1402,13 +1480,13 @@ const ToolbarTitle = class {
1402
1480
  return this.size !== undefined ? this.size : 'default';
1403
1481
  }
1404
1482
  render() {
1405
- const mode = ionicGlobal.getIonMode(this);
1483
+ const theme$1 = ionicGlobal.getIonTheme(this);
1406
1484
  const size = this.getSize();
1407
- return (index.h(index.Host, { key: '44e63f8439df64c470692904427b417e19406476', class: theme.createColorClasses(this.color, {
1408
- [mode]: true,
1485
+ return (index.h(index.Host, { key: 'd64e86bed418cba707d4a26c9274f18ed06c0e9e', class: theme.createColorClasses(this.color, {
1486
+ [theme$1]: true,
1409
1487
  [`title-${size}`]: true,
1410
1488
  'title-rtl': document.dir === 'rtl',
1411
- }) }, index.h("div", { key: '784cf60a0db16045391891cc8fad0c7dbeba4039', class: "toolbar-title" }, index.h("slot", { key: '0c720a50479ba257e8756337aeb9b0ab7516a227' }))));
1489
+ }) }, index.h("div", { key: '386a71e974cde0bfbf5b655d69ed5f718de8ce48', class: "toolbar-title" }, index.h("slot", { key: '8aa804c9e1b11574a42268805d3117a085e699b4' }))));
1412
1490
  }
1413
1491
  get el() { return index.getElement(this); }
1414
1492
  static get watchers() { return {
@@ -1418,18 +1496,29 @@ const ToolbarTitle = class {
1418
1496
  }; }
1419
1497
  };
1420
1498
  ToolbarTitle.style = {
1499
+ ionic: titleIonicCss(),
1421
1500
  ios: titleIosCss(),
1422
1501
  md: titleMdCss()
1423
1502
  };
1424
1503
 
1425
- const toolbarIosCss = () => `:host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-color-step-50, var(--ion-background-color-step-50, #f7f7f7)));--color:var(--ion-toolbar-color, var(--ion-text-color, #000));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.2)))));--padding-top:3px;--padding-bottom:3px;--padding-start:4px;--padding-end:4px;--min-height:44px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:4;order:4;min-width:0}:host(.toolbar-segment) .toolbar-content{display:-ms-inline-flexbox;display:inline-flex}:host(.toolbar-searchbar) .toolbar-container{padding-top:0;padding-bottom:0}:host(.toolbar-searchbar) ::slotted(*){-ms-flex-item-align:start;align-self:start}:host(.toolbar-searchbar) ::slotted(ion-chip){margin-top:3px}::slotted(ion-buttons){min-height:38px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:3;order:3}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}:host(.toolbar-title-large) .toolbar-container{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:start;align-items:flex-start}:host(.toolbar-title-large) .toolbar-content ion-title{-ms-flex:1;flex:1;-ms-flex-order:8;order:8;min-width:100%}`;
1504
+ const toolbarIonicCss = () => `:host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);contain:content;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));pointer-events:none}::slotted(ion-progress-bar){right:0;left:0;bottom:0;position:absolute}:host{--background:var(--token-bg-surface-default, var(--token-primitives-base-white, #ffffff));--color:var(--token-text-default, var(--token-primitives-neutral-1200, #242424));--border-color:currentColor;--padding-top:var(--token-space-200, var(--token-scale-200, 8px));--padding-bottom:var(--token-space-200, var(--token-scale-200, 8px));--padding-start:var(--token-space-200, var(--token-scale-200, 8px));--padding-end:var(--token-space-200, var(--token-scale-200, 8px));--min-height:var(--token-scale-1400, 56px)}.toolbar-container{gap:var(--token-space-400, var(--token-scale-400, 16px));z-index:10}.toolbar-background{z-index:-1}.toolbar-content{-ms-flex:1 1 auto;flex:1 1 auto;min-width:0}:host(.toolbar-searchbar) ::slotted(ion-searchbar){padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}::slotted(ion-buttons){gap:var(--token-space-200, var(--token-scale-200, 8px))}::slotted(ion-title){-webkit-padding-start:var(--token-space-200, var(--token-scale-200, 8px));padding-inline-start:var(--token-space-200, var(--token-scale-200, 8px));-webkit-padding-end:var(--token-space-200, var(--token-scale-200, 8px));padding-inline-end:var(--token-space-200, var(--token-scale-200, 8px))}:host(.toolbar-title-large) ::slotted(ion-title){-webkit-padding-start:var(--token-space-400, var(--token-scale-400, 16px));padding-inline-start:var(--token-space-400, var(--token-scale-400, 16px));-webkit-padding-end:var(--token-space-400, var(--token-scale-400, 16px));padding-inline-end:var(--token-space-400, var(--token-scale-400, 16px))}:host(.has-end-content) slot[name=end],:host(.show-end) slot[name=end]{display:-ms-flexbox;display:flex;-ms-flex:0 0 var(--start-end-size, 0);flex:0 0 var(--start-end-size, 0);-ms-flex-pack:end;justify-content:flex-end;text-align:end}:host(.has-start-content) slot[name=start],:host(.show-start) slot[name=start]{display:-ms-flexbox;display:flex;-ms-flex:0 0 var(--start-end-size, 0);flex:0 0 var(--start-end-size, 0)}:host(.has-primary-content) slot[name=primary],:host(.show-primary) slot[name=primary]{display:-ms-flexbox;display:flex;-ms-flex:0 0 var(--primary-secondary-size, 0);flex:0 0 var(--primary-secondary-size, 0);-ms-flex-pack:end;justify-content:flex-end;text-align:end}:host(.has-secondary-content) slot[name=secondary],:host(.show-secondary) slot[name=secondary]{display:-ms-flexbox;display:flex;-ms-flex:0 0 var(--primary-secondary-size, 0);flex:0 0 var(--primary-secondary-size, 0)}:host(.toolbar-title-placement-start) ::slotted(ion-title){text-align:start}:host(.toolbar-title-placement-center) ::slotted(ion-title){text-align:center}:host(.toolbar-title-placement-end) ::slotted(ion-title){text-align:end}`;
1426
1505
 
1427
- const toolbarMdCss = () => `:host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-background-color, #fff));--color:var(--ion-toolbar-color, var(--ion-text-color, #424242));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, #c1c4cd))));--padding-top:0;--padding-bottom:0;--padding-start:0;--padding-end:0;--min-height:56px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:3;order:3;min-width:0;max-width:100%}::slotted(.buttons-first-slot){-webkit-margin-start:4px;margin-inline-start:4px}::slotted(.buttons-last-slot){-webkit-margin-end:4px;margin-inline-end:4px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:4;order:4}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}`;
1506
+ const toolbarIosCss = () => `:host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);contain:content;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));pointer-events:none}::slotted(ion-progress-bar){right:0;left:0;bottom:0;position:absolute}:host{font-family:var(--ion-font-family, inherit);z-index:10}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{z-index:10}.toolbar-background{z-index:-1}:host{--background:var(--ion-toolbar-background, var(--ion-color-step-50, var(--ion-background-color-step-50, #f7f7f7)));--color:var(--ion-toolbar-color, var(--ion-text-color, #000));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.2)))));--padding-top:3px;--padding-bottom:3px;--padding-start:4px;--padding-end:4px;--min-height:44px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:4;order:4;min-width:0}:host(.toolbar-segment) .toolbar-content{display:-ms-inline-flexbox;display:inline-flex}:host(.toolbar-searchbar) .toolbar-container{padding-top:0;padding-bottom:0}:host(.toolbar-searchbar) ::slotted(*){-ms-flex-item-align:start;align-self:start}:host(.toolbar-searchbar) ::slotted(ion-chip){margin-top:3px}::slotted(ion-buttons){min-height:38px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:3;order:3}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}:host(.toolbar-title-large) .toolbar-container{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:start;align-items:flex-start}:host(.toolbar-title-large) .toolbar-content ion-title{-ms-flex:1;flex:1;-ms-flex-order:8;order:8;min-width:100%}`;
1507
+
1508
+ const toolbarMdCss = () => `:host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);contain:content;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));pointer-events:none}::slotted(ion-progress-bar){right:0;left:0;bottom:0;position:absolute}:host{font-family:var(--ion-font-family, inherit);z-index:10}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{z-index:10}.toolbar-background{z-index:-1}:host{--background:var(--ion-toolbar-background, var(--ion-background-color, #fff));--color:var(--ion-toolbar-color, var(--ion-text-color, #424242));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, #c1c4cd))));--padding-top:0;--padding-bottom:0;--padding-start:0;--padding-end:0;--min-height:56px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:3;order:3;min-width:0;max-width:100%}::slotted(.buttons-first-slot){-webkit-margin-start:4px;margin-inline-start:4px}::slotted(.buttons-last-slot){-webkit-margin-end:4px;margin-inline-end:4px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:4;order:4}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}`;
1428
1509
 
1429
1510
  const Toolbar = class {
1430
1511
  constructor(hostRef) {
1431
1512
  index.registerInstance(this, hostRef);
1432
1513
  this.childrenStyles = new Map();
1514
+ this.slotClasses = [
1515
+ 'has-start-content',
1516
+ 'has-end-content',
1517
+ 'has-primary-content',
1518
+ 'has-secondary-content',
1519
+ ];
1520
+ this.showClasses = ['show-start', 'show-end', 'show-primary', 'show-secondary'];
1521
+ this.slotSizeVars = ['--start-end-size', '--primary-secondary-size'];
1433
1522
  }
1434
1523
  componentWillLoad() {
1435
1524
  const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));
@@ -1446,6 +1535,173 @@ const Toolbar = class {
1446
1535
  if (lastButtons) {
1447
1536
  lastButtons.classList.add('buttons-last-slot');
1448
1537
  }
1538
+ this.updateSlotClasses();
1539
+ }
1540
+ componentDidLoad() {
1541
+ this.updateSlotClasses();
1542
+ this.updateSlotWidths();
1543
+ }
1544
+ titlePlacementChanged() {
1545
+ this.updateSlotClasses();
1546
+ }
1547
+ /**
1548
+ * Gets the title placement.
1549
+ * Returns the title placement if it is set, otherwise returns `"center"`
1550
+ * for `ionic` and `ios`, and `"start"` for `md`.
1551
+ */
1552
+ getTitlePlacement() {
1553
+ if (this.titlePlacement !== undefined) {
1554
+ return this.titlePlacement;
1555
+ }
1556
+ return ionicGlobal.getIonTheme(this) === 'ionic' || ionicGlobal.getIonTheme(this) === 'ios' ? 'center' : 'start';
1557
+ }
1558
+ /**
1559
+ * Updates the CSS custom properties for slot widths
1560
+ * This ensures that slots shown by their met conditions
1561
+ * have a minimum width matching their required slot
1562
+ */
1563
+ updateSlotWidths(tries = 0) {
1564
+ // Set timeout to try to execute after everything is rendered
1565
+ setTimeout(() => {
1566
+ // Attempt to measure and update
1567
+ const success = this.measureAndUpdateSlots();
1568
+ // If not all measurements were successful, try again in 100 ms
1569
+ // cap recursion at 5 tries for safety
1570
+ if (!success && tries < 5) {
1571
+ setTimeout(() => {
1572
+ this.updateSlotWidths(tries + 1);
1573
+ }, 100);
1574
+ }
1575
+ });
1576
+ }
1577
+ /**
1578
+ * Measure the widths of the slots and update the CSS custom properties
1579
+ * for the minimum width of each pair of slots based on the largest width in each pair.
1580
+ * Returns whether we successfully measured all of the slots we expect to have content.
1581
+ * If not, the content probably hasn't rendered yet and we need to try again.
1582
+ */
1583
+ measureAndUpdateSlots() {
1584
+ // Define the relationship between slots based on the conditions array
1585
+ // Group slots that should have the same width
1586
+ const slotPairs = [
1587
+ { name: 'start-end', slots: ['start', 'end'] },
1588
+ { name: 'primary-secondary', slots: ['primary', 'secondary'] },
1589
+ ];
1590
+ // First, measure all slot widths
1591
+ const slotWidths = new Map();
1592
+ let allMeasurementsSuccessful = true;
1593
+ // Measure all slots with content
1594
+ const slots = ['start', 'end', 'primary', 'secondary'];
1595
+ slots.forEach((slot) => {
1596
+ var _a;
1597
+ if (this.el.classList.contains(`has-${slot}-content`)) {
1598
+ const slotElement = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slot}"]`);
1599
+ if (slotElement) {
1600
+ // Check if the slot contains an img or ion-img
1601
+ const assignedElements = slotElement.assignedElements({ flatten: true });
1602
+ const hasImg = assignedElements.some((el) => {
1603
+ if (el.tagName === 'IMG' || el.tagName === 'ION-IMG') {
1604
+ return true;
1605
+ }
1606
+ // Check for nested images
1607
+ return el.querySelector('img, ion-img');
1608
+ });
1609
+ // Temporarily allow slot to size to content by setting flex-basis
1610
+ // to 'auto'. This ensures that slotted images can render at their
1611
+ // intrinsic width for measurement.
1612
+ if (hasImg) {
1613
+ const { name } = slotPairs.find((pair) => pair.slots.includes(slot));
1614
+ this.el.style.setProperty(`--${name}-size`, 'auto');
1615
+ }
1616
+ const width = slotElement.offsetWidth;
1617
+ if (width > 0) {
1618
+ slotWidths.set(slot, width);
1619
+ }
1620
+ else {
1621
+ allMeasurementsSuccessful = false;
1622
+ }
1623
+ }
1624
+ }
1625
+ });
1626
+ // Then set the CSS custom properties based on the largest width in each pair
1627
+ slotPairs.forEach(({ name, slots }) => {
1628
+ // Find the maximum width among the slots in this pair
1629
+ let maxWidth = 0;
1630
+ let hasAnyContent = false;
1631
+ slots.forEach((slot) => {
1632
+ var _a;
1633
+ if (slotWidths.has(slot)) {
1634
+ hasAnyContent = true;
1635
+ maxWidth = Math.max(maxWidth, (_a = slotWidths.get(slot)) !== null && _a !== void 0 ? _a : 0);
1636
+ }
1637
+ });
1638
+ // If at least one slot in the pair has content, set the min-width for the pair
1639
+ if (hasAnyContent && maxWidth > 0) {
1640
+ // Set a single CSS variable for the pair
1641
+ this.el.style.setProperty(`--${name}-size`, `${maxWidth}px`);
1642
+ }
1643
+ });
1644
+ return allMeasurementsSuccessful;
1645
+ }
1646
+ /**
1647
+ * Removes all slot visibility classes and slot width CSS variables.
1648
+ */
1649
+ removeSlotClasses() {
1650
+ this.el.classList.remove(...this.slotClasses, ...this.showClasses);
1651
+ this.slotSizeVars.forEach((cssVar) => this.el.style.removeProperty(cssVar));
1652
+ }
1653
+ updateSlotClasses() {
1654
+ const titlePlacement = this.getTitlePlacement();
1655
+ if (titlePlacement !== 'center') {
1656
+ this.removeSlotClasses();
1657
+ return;
1658
+ }
1659
+ // Check if slots have content
1660
+ const slots = ['start', 'end', 'primary', 'secondary'];
1661
+ const classesToAdd = [];
1662
+ const classesToRemove = [];
1663
+ slots.forEach((slot) => {
1664
+ const slotHasContent = this.hasSlotContent(slot);
1665
+ const slotClass = `has-${slot}-content`;
1666
+ if (slotHasContent) {
1667
+ classesToAdd.push(slotClass);
1668
+ }
1669
+ else {
1670
+ classesToRemove.push(slotClass);
1671
+ }
1672
+ });
1673
+ // Force visibilities in certain conditions. This works by adding a class to the toolbar
1674
+ // named `show-{slot}`. This class will be added if the toolbar has the required slots
1675
+ // and does not have any of the excluded slots, otherwise it will be removed.
1676
+ // This is useful to enforce centering of the toolbar content when there are different amounts
1677
+ // of slots on either side of the toolbar.
1678
+ const conditions = [
1679
+ { name: 'end', requiredSlots: ['start'], excludeSlots: ['end', 'primary'] },
1680
+ { name: 'start', requiredSlots: ['end'], excludeSlots: ['start', 'secondary'] },
1681
+ { name: 'secondary', requiredSlots: ['primary'], excludeSlots: ['secondary', 'start'] },
1682
+ { name: 'primary', requiredSlots: ['secondary'], excludeSlots: ['primary', 'end'] },
1683
+ ];
1684
+ conditions.forEach((condition) => {
1685
+ const hasRequiredSlots = condition.requiredSlots.every((slot) => classesToAdd.includes(`has-${slot}-content`));
1686
+ const hasExcludedSlots = condition.excludeSlots.some((slot) => classesToAdd.includes(`has-${slot}-content`));
1687
+ const className = `show-${condition.name}`;
1688
+ if (hasRequiredSlots && !hasExcludedSlots) {
1689
+ classesToAdd.push(className);
1690
+ }
1691
+ else {
1692
+ classesToRemove.push(className);
1693
+ }
1694
+ });
1695
+ // Add classes to the toolbar element
1696
+ this.el.classList.add(...classesToAdd);
1697
+ this.el.classList.remove(...classesToRemove);
1698
+ // Update slot widths after classes have been updated
1699
+ this.updateSlotWidths();
1700
+ }
1701
+ hasSlotContent(slotName) {
1702
+ var _a;
1703
+ const slotNode = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slotName}"]`);
1704
+ return !!slotNode && slotNode.assignedNodes().length > 0;
1449
1705
  }
1450
1706
  childrenStyle(ev) {
1451
1707
  ev.stopPropagation();
@@ -1470,19 +1726,27 @@ const Toolbar = class {
1470
1726
  }
1471
1727
  }
1472
1728
  render() {
1473
- const mode = ionicGlobal.getIonMode(this);
1729
+ const theme$1 = ionicGlobal.getIonTheme(this);
1474
1730
  const childStyles = {};
1475
- this.childrenStyles.forEach((value) => {
1476
- Object.assign(childStyles, value);
1731
+ this.childrenStyles.forEach((style) => {
1732
+ Object.assign(childStyles, style);
1477
1733
  });
1478
- return (index.h(index.Host, { key: 'b849db2863778dee6c5a251bffa1b3a657aeb036', class: Object.assign(Object.assign({}, childStyles), theme.createColorClasses(this.color, {
1479
- [mode]: true,
1734
+ const titlePlacement = this.getTitlePlacement();
1735
+ return (index.h(index.Host, { key: 'bcb621674157410d7eaeb006779bdd677346587e', class: Object.assign(Object.assign({}, theme.createColorClasses(this.color, {
1736
+ [theme$1]: true,
1480
1737
  'in-toolbar': theme.hostContext('ion-toolbar', this.el),
1481
- })) }, index.h("div", { key: '67f5bba9c4f527c3f35bfe1313a2b85741f9b246', class: "toolbar-background", part: "background" }), index.h("div", { key: '085e8c68f056e5b0deb9d1606431fbeb45dae8e5', class: "toolbar-container", part: "container" }, index.h("slot", { key: '15227c79c3baf883fd8c43fdb7e1313453933c79', name: "start" }), index.h("slot", { key: '0b8a7f7e685aa31c80d9bc03446ccc3a9d07e0e8', name: "secondary" }), index.h("div", { key: '57e4628c1fa89df79dd80456259db961bb691404', class: "toolbar-content", part: "content" }, index.h("slot", { key: '82c2f6e1acf8d96db259bd8baf295881801edbd5' })), index.h("slot", { key: 'b2d4afb15214199f206c0a5e08b581e4c9c2f58a', name: "primary" }), index.h("slot", { key: 'bfb909a0c472f8834046c2ea23bef2f562167ad3', name: "end" }))));
1738
+ [`toolbar-title-placement-${titlePlacement}`]: true,
1739
+ })), childStyles) }, index.h("div", { key: '0d31a98b2571b9a0ae142fbdfd83e2ebdcd8e069', class: "toolbar-background", part: "background" }), index.h("div", { key: 'de938534c487c6cb4060dac44b40c2d872130f50', class: "toolbar-container", part: "container" }, index.h("slot", { key: 'a337150d353e439eae67c31ff86e383ed51f3d8f', name: "start", onSlotchange: () => this.updateSlotClasses }), index.h("slot", { key: '02effd3ce0cdad5ec5645fa58ccb329321449190', name: "secondary", onSlotchange: () => this.updateSlotClasses }), index.h("div", { key: '3e22f5feda2aea02117bdea2fe8a4b8905ba82f6', class: "toolbar-content", part: "content" }, index.h("slot", { key: 'ebf828643ff05a8bf662a54715d21d0859168d31' })), index.h("slot", { key: 'a6940648dfe25a7aa8792a1bd9267437274f333c', name: "primary", onSlotchange: () => this.updateSlotClasses }), index.h("slot", { key: 'afb1d61aa0e430fcf483ba482af64762474e06fe', name: "end", onSlotchange: () => this.updateSlotClasses }))));
1482
1740
  }
1483
1741
  get el() { return index.getElement(this); }
1742
+ static get watchers() { return {
1743
+ "titlePlacement": [{
1744
+ "titlePlacementChanged": 0
1745
+ }]
1746
+ }; }
1484
1747
  };
1485
1748
  Toolbar.style = {
1749
+ ionic: toolbarIonicCss(),
1486
1750
  ios: toolbarIosCss(),
1487
1751
  md: toolbarMdCss()
1488
1752
  };