@ionic/core 9.0.2 → 9.0.3-dev.11788449150.16022b1e

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 (1116) 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.js +1 -1
  65. package/components/ion-popover.js +1 -1
  66. package/components/ion-progress-bar.js +1 -1
  67. package/components/ion-radio-group.js +1 -1
  68. package/components/ion-radio.js +1 -1
  69. package/components/ion-range.js +1 -1
  70. package/components/ion-refresher-content.js +1 -1
  71. package/components/ion-refresher.js +1 -1
  72. package/components/ion-reorder-group.js +1 -1
  73. package/components/ion-reorder.js +1 -1
  74. package/components/ion-ripple-effect.js +1 -1
  75. package/components/ion-route-redirect.js +1 -1
  76. package/components/ion-route.js +1 -1
  77. package/components/ion-router-link.js +1 -1
  78. package/components/ion-router-outlet.js +1 -1
  79. package/components/ion-router.js +1 -1
  80. package/components/ion-row.js +1 -1
  81. package/components/ion-searchbar.js +1 -1
  82. package/components/ion-segment-button.js +1 -1
  83. package/components/ion-segment-content.js +1 -1
  84. package/components/ion-segment-view.js +1 -1
  85. package/components/ion-segment.js +1 -1
  86. package/components/ion-select-modal.js +1 -1
  87. package/components/ion-select-option.js +1 -1
  88. package/components/ion-select-popover.js +1 -1
  89. package/components/ion-select.js +1 -1
  90. package/components/ion-skeleton-text.js +1 -1
  91. package/components/ion-spinner.js +1 -1
  92. package/components/ion-split-pane.js +1 -1
  93. package/components/ion-tab-bar.js +1 -1
  94. package/components/ion-tab-button.js +1 -1
  95. package/components/ion-tab.js +1 -1
  96. package/components/ion-tabs.js +1 -1
  97. package/components/ion-text.js +1 -1
  98. package/components/ion-textarea.js +1 -1
  99. package/components/ion-thumbnail.js +1 -1
  100. package/components/ion-title.js +1 -1
  101. package/components/ion-toast.js +1 -1
  102. package/components/ion-toggle.js +1 -1
  103. package/components/ion-toolbar.js +1 -1
  104. package/components/p-B1AK6oR-.js +4 -0
  105. package/components/p-B8dfyFoB.js +4 -0
  106. package/components/p-B9UT2JwK.js +4 -0
  107. package/components/p-BBz0jPCg.js +4 -0
  108. package/components/p-BDqjX7Z_.js +4 -0
  109. package/components/p-BGP1kR6j.js +4 -0
  110. package/components/p-BLGqtLjb.js +4 -0
  111. package/components/p-BQUTtt8S.js +4 -0
  112. package/components/p-BUF_V-Kg.js +4 -0
  113. package/components/p-BYSs-jZz.js +4 -0
  114. package/components/{p-BT9-hMMz.js → p-BZmR0M4X.js} +1 -1
  115. package/components/{p-CWuIRJQN.js → p-BZtGrrX4.js} +1 -1
  116. package/{dist/ionic/p-DTxBioUO.js → components/p-BahD7B6k.js} +1 -1
  117. package/{dist/ionic/p-DZ6Hmc-8.js → components/p-BcxhVbtz.js} +1 -1
  118. package/components/p-BdAOHgnb.js +4 -0
  119. package/components/p-Be00fpKV.js +4 -0
  120. package/{dist/ionic/p-C8XilMh0.js → components/p-BkQ1V9ee.js} +1 -1
  121. package/components/p-Bkk8447d.js +4 -0
  122. package/components/p-C8aonLbo.js +4 -0
  123. package/components/p-C9cwz4xv.js +4 -0
  124. package/components/p-CDmCFFLL.js +4 -0
  125. package/components/{p-Cw6WocLJ.js → p-CN41sVGB.js} +1 -1
  126. package/components/p-CODBQrPj.js +4 -0
  127. package/components/p-CPXKIYkL.js +4 -0
  128. package/components/p-CPdOdJa7.js +4 -0
  129. package/components/p-CTTmpA7l.js +4 -0
  130. package/components/p-Cc3oC60a.js +4 -0
  131. package/components/{p-BMPN55of.js → p-CksPhDEa.js} +1 -1
  132. package/components/{p-Fl7ZFU74.js → p-ClnMyzlV.js} +1 -1
  133. package/components/p-Cm78Kk79.js +4 -0
  134. package/components/p-CmEe-Llj.js +4 -0
  135. package/components/{p-DM1gJSMP.js → p-CrNVENZG.js} +1 -1
  136. package/components/p-CsQsFkwO.js +4 -0
  137. package/components/{p-BQyuFxYc.js → p-CtLeQL1G.js} +1 -1
  138. package/components/p-CvRAtS4n.js +4 -0
  139. package/components/p-D1t981Ih.js +4 -0
  140. package/components/p-D5lFNdff.js +4 -0
  141. package/components/p-D9jEKvVd.js +4 -0
  142. package/components/p-DG-ZC7Js.js +4 -0
  143. package/components/p-DGfjyB0v.js +4 -0
  144. package/components/p-DJkuoL4u.js +4 -0
  145. package/{dist/ionic/p-BaeKWZ-a.js → components/p-DNrr6r3I.js} +1 -1
  146. package/components/p-DOdd_Inr.js +4 -0
  147. package/components/p-DOoxQDxg.js +4 -0
  148. package/components/p-DWBpR7SJ.js +4 -0
  149. package/components/{p-CEW4RXZO.js → p-DcOWEjmv.js} +1 -1
  150. package/components/p-DgEOEy6x.js +4 -0
  151. package/components/{p-DhNuxvJH.js → p-DgIAZUGe.js} +1 -1
  152. package/components/{p-qAXsfUff.js → p-DhBOoebx.js} +1 -1
  153. package/components/p-Dhi5xtNS.js +4 -0
  154. package/components/p-DkQNAyg8.js +4 -0
  155. package/components/p-DtPgvez6.js +4 -0
  156. package/components/p-DwAij6DN.js +4 -0
  157. package/components/p-DzaPYdjZ.js +4 -0
  158. package/components/p-Dzuh_AKJ.js +4 -0
  159. package/components/p-EayFnjkU.js +4 -0
  160. package/components/p-JAFy4ZHv.js +4 -0
  161. package/components/p-NcQUGze-.js +4 -0
  162. package/components/p-Uo-TYRpE.js +4 -0
  163. package/components/p-VLn2Ytmp.js +4 -0
  164. package/components/p-W8Yq_OMR.js +4 -0
  165. package/components/p-ZxET9sbA.js +4 -0
  166. package/components/p-cKiRADSB.js +4 -0
  167. package/components/p-e73ca-aN.js +4 -0
  168. package/components/p-fIOYmaqA.js +4 -0
  169. package/components/p-fh4o6dKR.js +4 -0
  170. package/components/p-vXpMhGrs.js +4 -0
  171. package/css/core.css +1 -1
  172. package/css/core.css.map +1 -1
  173. package/css/display.css +1 -1
  174. package/css/display.css.map +1 -1
  175. package/css/flex-utils.css +1 -1
  176. package/css/flex-utils.css.map +1 -1
  177. package/css/float-elements.css.map +1 -1
  178. package/css/global.bundle.css.map +1 -1
  179. package/css/ionic/bundle.ionic.css +1 -0
  180. package/css/ionic/bundle.ionic.css.map +1 -0
  181. package/css/ionic/core.ionic.css +1 -0
  182. package/css/ionic/core.ionic.css.map +1 -0
  183. package/css/ionic/global.bundle.ionic.css +1 -0
  184. package/css/ionic/global.bundle.ionic.css.map +1 -0
  185. package/css/ionic/ionic-swiper.ionic.css +1 -0
  186. package/css/ionic/ionic-swiper.ionic.css.map +1 -0
  187. package/css/ionic/link.ionic.css +1 -0
  188. package/css/ionic/link.ionic.css.map +1 -0
  189. package/css/ionic/structure.ionic.css +1 -0
  190. package/css/ionic/structure.ionic.css.map +1 -0
  191. package/css/ionic/typography.ionic.css +1 -0
  192. package/css/ionic/typography.ionic.css.map +1 -0
  193. package/css/ionic/utils.bundle.ionic.css +1 -0
  194. package/css/ionic/utils.bundle.ionic.css.map +1 -0
  195. package/css/ionic-swiper.css +1 -1
  196. package/css/ionic-swiper.css.map +1 -1
  197. package/css/ionic.bundle.css +1 -1
  198. package/css/ionic.bundle.css.map +1 -1
  199. package/css/normalize.css.map +1 -1
  200. package/css/padding.css.map +1 -1
  201. package/css/palettes/dark.always.css.map +1 -1
  202. package/css/palettes/dark.class.css.map +1 -1
  203. package/css/palettes/dark.system.css.map +1 -1
  204. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  205. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  206. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  207. package/css/palettes/high-contrast.always.css.map +1 -1
  208. package/css/palettes/high-contrast.class.css.map +1 -1
  209. package/css/palettes/high-contrast.system.css.map +1 -1
  210. package/css/structure.css.map +1 -1
  211. package/css/text-alignment.css.map +1 -1
  212. package/css/text-transformation.css.map +1 -1
  213. package/css/typography.css.map +1 -1
  214. package/css/utils.bundle.css +1 -1
  215. package/css/utils.bundle.css.map +1 -1
  216. package/dist/cjs/{animation-Kd1N7WTN.js → animation-DVrkairK.js} +3 -3
  217. package/dist/cjs/{app-globals-b1G4t26O.js → app-globals-CTxe9MxF.js} +1 -1
  218. package/dist/cjs/{button-active-CQCFubJJ.js → button-active-B8t6YMNb.js} +2 -2
  219. package/dist/cjs/{capacitor-DmA66EwP.js → capacitor-w_r4U-_S.js} +3 -3
  220. package/dist/cjs/caret-down-vtVgfXIs.js +8 -0
  221. package/dist/cjs/caret-left-CxZXLRv5.js +8 -0
  222. package/dist/cjs/caret-right-CRCgv98E.js +8 -0
  223. package/dist/cjs/clear-button-press-controller-BKSn-dVq.js +45 -0
  224. package/dist/{esm/focus-visible-BmVRXR1y.js → cjs/focus-visible-BIj-I3-C.js} +27 -1
  225. package/dist/cjs/{format-bHU8N1g5.js → format-CSwmjLtu.js} +1 -1
  226. package/dist/cjs/{framework-delegate-d-fWfeI6.js → framework-delegate-Dmce7iqZ.js} +4 -2
  227. package/dist/cjs/{haptic-Ch-X4gRx.js → haptic-DZEv3V5s.js} +1 -1
  228. package/dist/cjs/{helpers-7wzdhdeg.js → helpers-DFJMw-qZ.js} +71 -4
  229. package/dist/cjs/{index-C74Q3t6a.js → index-Bm6y0Ibt.js} +9 -8
  230. package/dist/cjs/{index-CQfEIyLK.js → index-BoQA7njo.js} +4 -4
  231. package/dist/cjs/{index-DXoo08JC.js → index-BsDPqfGS.js} +53 -4
  232. package/dist/cjs/{index-wOmugbdg.js → index-CxDnX7hd.js} +2 -0
  233. package/dist/cjs/{index-DFNrCX7M.js → index-DN51-BQl.js} +15 -15
  234. package/dist/cjs/{index-DtvKGwdh.js → index-DWP810QI.js} +2 -2
  235. package/dist/cjs/{index-KiSZqhYS.js → index-jHTqyXrs.js} +1 -1
  236. package/dist/cjs/index.cjs.js +13 -14
  237. package/dist/cjs/{input-shims-VJIiKBKv.js → input-shims-BFGH5o2Z.js} +18 -17
  238. package/dist/cjs/{input.utils-EHVE2RK_.js → input.utils-C5MTV3xv.js} +1 -1
  239. package/dist/cjs/ion-accordion_2.cjs.entry.js +61 -29
  240. package/dist/cjs/ion-action-sheet.cjs.entry.js +26 -24
  241. package/dist/cjs/ion-alert.cjs.entry.js +33 -31
  242. package/dist/cjs/ion-app_8.cjs.entry.js +454 -195
  243. package/dist/cjs/ion-avatar_3.cjs.entry.js +123 -13
  244. package/dist/cjs/ion-back-button.cjs.entry.js +31 -22
  245. package/dist/cjs/ion-backdrop.cjs.entry.js +10 -7
  246. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +54 -18
  247. package/dist/cjs/ion-button_2.cjs.entry.js +59 -22
  248. package/dist/cjs/ion-card_5.cjs.entry.js +55 -33
  249. package/dist/cjs/ion-checkbox.cjs.entry.js +34 -17
  250. package/dist/cjs/ion-chip.cjs.entry.js +50 -9
  251. package/dist/cjs/ion-col_3.cjs.entry.js +56 -62
  252. package/dist/cjs/ion-datetime-button.cjs.entry.js +13 -9
  253. package/dist/cjs/ion-datetime.cjs.entry.js +109 -34
  254. package/dist/cjs/ion-divider.cjs.entry.js +51 -0
  255. package/dist/cjs/ion-fab_3.cjs.entry.js +44 -28
  256. package/dist/cjs/ion-gallery-item.cjs.entry.js +58 -0
  257. package/dist/cjs/ion-gallery.cjs.entry.js +607 -0
  258. package/dist/cjs/ion-img.cjs.entry.js +8 -4
  259. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +90 -16
  260. package/dist/cjs/ion-input-otp.cjs.entry.js +73 -9
  261. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +53 -14
  262. package/dist/cjs/ion-input.cjs.entry.js +157 -38
  263. package/dist/cjs/ion-item-option_3.cjs.entry.js +465 -52
  264. package/dist/cjs/ion-item_8.cjs.entry.js +121 -50
  265. package/dist/cjs/ion-loading.cjs.entry.js +21 -19
  266. package/dist/cjs/ion-menu_3.cjs.entry.js +47 -29
  267. package/dist/cjs/ion-modal.cjs.entry.js +264 -139
  268. package/dist/cjs/ion-nav_2.cjs.entry.js +13 -10
  269. package/dist/cjs/ion-picker-column-option.cjs.entry.js +12 -8
  270. package/dist/cjs/ion-picker-column.cjs.entry.js +16 -16
  271. package/dist/cjs/ion-picker.cjs.entry.js +10 -6
  272. package/dist/cjs/ion-popover.cjs.entry.js +22 -20
  273. package/dist/cjs/ion-progress-bar.cjs.entry.js +27 -9
  274. package/dist/cjs/ion-radio_2.cjs.entry.js +36 -18
  275. package/dist/cjs/ion-range.cjs.entry.js +20 -13
  276. package/dist/cjs/ion-refresher_2.cjs.entry.js +39 -21
  277. package/dist/cjs/ion-reorder_2.cjs.entry.js +38 -14
  278. package/dist/cjs/ion-ripple-effect.cjs.entry.js +15 -7
  279. package/dist/cjs/ion-route_4.cjs.entry.js +11 -10
  280. package/dist/cjs/ion-searchbar.cjs.entry.js +146 -32
  281. package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
  282. package/dist/cjs/ion-segment-view.cjs.entry.js +13 -3
  283. package/dist/cjs/ion-segment_2.cjs.entry.js +23 -16
  284. package/dist/cjs/ion-select-modal.cjs.entry.js +51 -26
  285. package/dist/cjs/ion-select_3.cjs.entry.js +216 -77
  286. package/dist/cjs/ion-spinner.cjs.entry.js +30 -8
  287. package/dist/cjs/ion-split-pane.cjs.entry.js +13 -9
  288. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +149 -28
  289. package/dist/cjs/ion-tab_2.cjs.entry.js +8 -7
  290. package/dist/cjs/ion-text.cjs.entry.js +7 -7
  291. package/dist/cjs/ion-textarea.cjs.entry.js +190 -25
  292. package/dist/cjs/ion-toast.cjs.entry.js +72 -46
  293. package/dist/cjs/ion-toggle.cjs.entry.js +82 -26
  294. package/dist/cjs/ionic-global-BaVLW54G.js +522 -0
  295. package/dist/cjs/ionic.cjs.js +4 -4
  296. package/dist/cjs/{ios.transition-DYGiD6gM.js → ios.transition-Bm4N3WK1.js} +7 -5
  297. package/dist/cjs/{item-multiple-inputs-Dv6qrMhm.js → item-multiple-inputs-C3d1lMiz.js} +1 -1
  298. package/dist/cjs/{keyboard-Cix5TVkD.js → keyboard-5cEsoK5l.js} +4 -3
  299. package/dist/cjs/{keyboard-cHxZlTyz.js → keyboard-9uOUQmB-.js} +1 -1
  300. package/dist/cjs/list-a-7GSA6K.js +8 -0
  301. package/dist/cjs/loader.cjs.js +4 -4
  302. package/dist/cjs/{md.transition-CrSkaoz6.js → md.transition-Z-7hu2x1.js} +6 -5
  303. package/dist/cjs/{overlay-control-label-D2sdL2O8.js → overlay-control-label-DnRLQR1t.js} +13 -11
  304. package/dist/cjs/{overlays-BR21NUIG.js → overlays-Jn6TNpc3.js} +306 -18
  305. package/dist/cjs/scroll-hide-controller-DQ9ulQ11.js +345 -0
  306. package/dist/cjs/{select-option-render-D8ZEjYji.js → select-option-render-BUF8TPE0.js} +2 -2
  307. package/dist/cjs/{slot-mutation-controller-D6IjSEIh.js → slot-mutation-controller-C9i1ymbP.js} +5 -5
  308. package/dist/cjs/{status-tap-CNP5eD1R.js → status-tap-DT7J4fZQ.js} +4 -3
  309. package/dist/cjs/{swipe-back-BYb_nLJe.js → swipe-back-BIbF7bVy.js} +3 -2
  310. package/dist/cjs/{theme-Bw0rpaNN.js → theme-Cy4joHPt.js} +25 -1
  311. package/dist/cjs/validity-CoPMWggj.js +51 -0
  312. package/dist/cjs/x-BTF99yFH.js +8 -0
  313. package/dist/collection/collection-manifest.json +8 -0
  314. package/dist/collection/components/accordion/accordion.ionic.css +201 -0
  315. package/dist/collection/components/accordion/accordion.ios.css +73 -58
  316. package/dist/collection/components/accordion/accordion.js +41 -27
  317. package/dist/collection/components/accordion/accordion.md.css +67 -59
  318. package/dist/collection/components/accordion-group/accordion-group.ionic.css +93 -0
  319. package/dist/collection/components/accordion-group/accordion-group.ios.css +16 -4
  320. package/dist/collection/components/accordion-group/accordion-group.js +44 -8
  321. package/dist/collection/components/accordion-group/accordion-group.md.css +22 -4
  322. package/dist/collection/components/action-sheet/action-sheet.ionic.css +494 -0
  323. package/dist/collection/components/action-sheet/action-sheet.ios.css +184 -54
  324. package/dist/collection/components/action-sheet/action-sheet.js +16 -13
  325. package/dist/collection/components/action-sheet/action-sheet.md.css +179 -55
  326. package/dist/collection/components/alert/alert.ionic.css +787 -0
  327. package/dist/collection/components/alert/alert.ios.css +247 -54
  328. package/dist/collection/components/alert/alert.js +22 -19
  329. package/dist/collection/components/alert/alert.md.css +243 -56
  330. package/dist/collection/components/app/app.js +15 -83
  331. package/dist/collection/components/avatar/avatar.ionic.css +385 -0
  332. package/dist/collection/components/avatar/avatar.ios.css +7 -33
  333. package/dist/collection/components/avatar/avatar.js +120 -4
  334. package/dist/collection/components/avatar/avatar.md.css +51 -0
  335. package/dist/collection/components/back-button/back-button.ios.css +60 -48
  336. package/dist/collection/components/back-button/back-button.js +27 -19
  337. package/dist/collection/components/back-button/back-button.md.css +60 -48
  338. package/dist/collection/components/backdrop/backdrop.ionic.css +109 -0
  339. package/dist/collection/components/backdrop/backdrop.ios.css +56 -19
  340. package/dist/collection/components/backdrop/backdrop.js +12 -6
  341. package/dist/collection/components/backdrop/backdrop.md.css +56 -19
  342. package/dist/collection/components/badge/badge.ionic.css +272 -0
  343. package/dist/collection/components/badge/badge.ios.css +137 -12
  344. package/dist/collection/components/badge/badge.js +143 -9
  345. package/dist/collection/components/badge/badge.md.css +122 -12
  346. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +20 -8
  347. package/dist/collection/components/breadcrumb/breadcrumb.js +43 -11
  348. package/dist/collection/components/breadcrumb/breadcrumb.md.css +20 -8
  349. package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +6 -0
  350. package/dist/collection/components/breadcrumbs/breadcrumbs.js +11 -9
  351. package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +6 -0
  352. package/dist/collection/components/button/button.ionic.css +644 -0
  353. package/dist/collection/components/button/button.ios.css +154 -46
  354. package/dist/collection/components/button/button.js +63 -27
  355. package/dist/collection/components/button/button.md.css +150 -50
  356. package/dist/collection/components/buttons/buttons.ionic.css +97 -0
  357. package/dist/collection/components/buttons/buttons.ios.css +59 -7
  358. package/dist/collection/components/buttons/buttons.js +15 -9
  359. package/dist/collection/components/buttons/buttons.md.css +55 -3
  360. package/dist/collection/components/card/card.ionic.css +144 -0
  361. package/dist/collection/components/card/card.ios.css +65 -14
  362. package/dist/collection/components/card/card.js +41 -10
  363. package/dist/collection/components/card/card.md.css +65 -14
  364. package/dist/collection/components/card-content/card-content.ionic.css +89 -0
  365. package/dist/collection/components/card-content/card-content.ios.css +20 -35
  366. package/dist/collection/components/card-content/card-content.js +12 -10
  367. package/dist/collection/components/card-content/card-content.md.css +20 -35
  368. package/dist/collection/components/card-header/card-header.ionic.css +85 -0
  369. package/dist/collection/components/card-header/card-header.ios.css +27 -15
  370. package/dist/collection/components/card-header/card-header.js +13 -10
  371. package/dist/collection/components/card-header/card-header.md.css +27 -15
  372. package/dist/collection/components/card-subtitle/card-subtitle.ionic.css +144 -0
  373. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +12 -0
  374. package/dist/collection/components/card-subtitle/card-subtitle.js +11 -8
  375. package/dist/collection/components/card-subtitle/card-subtitle.md.css +12 -0
  376. package/dist/collection/components/card-title/card-title.ios.css +73 -0
  377. package/dist/collection/components/card-title/card-title.js +11 -8
  378. package/dist/collection/components/card-title/card-title.md.css +73 -0
  379. package/dist/collection/components/checkbox/checkbox.ionic.css +543 -0
  380. package/dist/collection/components/checkbox/checkbox.ios.css +242 -117
  381. package/dist/collection/components/checkbox/checkbox.js +69 -14
  382. package/dist/collection/components/checkbox/checkbox.md.css +243 -118
  383. package/dist/collection/components/chip/chip.ionic.css +217 -0
  384. package/dist/collection/components/chip/chip.ios.css +67 -14
  385. package/dist/collection/components/chip/chip.js +108 -8
  386. package/dist/collection/components/chip/chip.md.css +67 -14
  387. package/dist/collection/components/col/col.css +192 -4
  388. package/dist/collection/components/col/col.js +211 -66
  389. package/dist/collection/components/content/content.css +47 -2
  390. package/dist/collection/components/content/content.js +16 -11
  391. package/dist/collection/components/datetime/datetime.ionic.css +703 -0
  392. package/dist/collection/components/datetime/datetime.ios.css +314 -118
  393. package/dist/collection/components/datetime/datetime.js +97 -20
  394. package/dist/collection/components/datetime/datetime.md.css +304 -107
  395. package/dist/collection/components/datetime/utils/data.js +5 -5
  396. package/dist/collection/components/datetime-button/datetime-button.ios.css +6 -0
  397. package/dist/collection/components/datetime-button/datetime-button.js +11 -8
  398. package/dist/collection/components/datetime-button/datetime-button.md.css +6 -0
  399. package/dist/collection/components/divider/divider.ionic.css +148 -0
  400. package/dist/collection/components/divider/divider.ios.css +87 -0
  401. package/dist/collection/components/divider/divider.js +94 -0
  402. package/dist/collection/components/divider/divider.md.css +87 -0
  403. package/dist/collection/components/fab/fab.css +25 -1
  404. package/dist/collection/components/fab/fab.js +9 -5
  405. package/dist/collection/components/fab-button/fab-button.ios.css +18 -6
  406. package/dist/collection/components/fab-button/fab-button.js +36 -21
  407. package/dist/collection/components/fab-button/fab-button.md.css +20 -8
  408. package/dist/collection/components/fab-list/fab-list.css +12 -0
  409. package/dist/collection/components/fab-list/fab-list.js +9 -5
  410. package/dist/collection/components/footer/footer-interface.js +1 -0
  411. package/dist/collection/components/footer/footer.ios.css +33 -6
  412. package/dist/collection/components/footer/footer.js +117 -25
  413. package/dist/collection/components/footer/footer.md.css +40 -0
  414. package/dist/collection/components/gallery/gallery-constants.js +12 -0
  415. package/dist/collection/components/gallery/gallery-interface.js +1 -0
  416. package/dist/collection/components/gallery/gallery.css +15 -0
  417. package/dist/collection/components/gallery/gallery.js +678 -0
  418. package/dist/collection/components/gallery/test/utils.js +100 -0
  419. package/dist/collection/components/gallery-item/gallery-item.css +49 -0
  420. package/dist/collection/components/gallery-item/gallery-item.js +98 -0
  421. package/dist/collection/components/grid/grid.css +12 -0
  422. package/dist/collection/components/grid/grid.js +9 -5
  423. package/dist/collection/components/header/header-interface.js +1 -0
  424. package/dist/collection/components/header/header.ionic.css +250 -0
  425. package/dist/collection/components/header/header.ios.css +178 -133
  426. package/dist/collection/components/header/header.js +180 -39
  427. package/dist/collection/components/header/header.md.css +199 -9
  428. package/dist/collection/components/header/header.utils.js +5 -13
  429. package/dist/collection/components/img/img.js +7 -2
  430. package/dist/collection/components/infinite-scroll/infinite-scroll.js +99 -5
  431. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +12 -0
  432. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +16 -10
  433. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +12 -0
  434. package/dist/collection/components/input/input.ionic.css +937 -0
  435. package/dist/collection/components/input/input.ios.css +245 -154
  436. package/dist/collection/components/input/input.js +183 -43
  437. package/dist/collection/components/input/input.md.css +215 -226
  438. package/dist/collection/components/input-otp/input-otp.ionic.css +371 -0
  439. package/dist/collection/components/input-otp/input-otp.ios.css +105 -60
  440. package/dist/collection/components/input-otp/input-otp.js +73 -7
  441. package/dist/collection/components/input-otp/input-otp.md.css +105 -60
  442. package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +78 -0
  443. package/dist/collection/components/input-password-toggle/input-password-toggle.js +48 -11
  444. package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +61 -0
  445. package/dist/collection/components/item/item.ionic.css +496 -0
  446. package/dist/collection/components/item/item.ios.css +120 -80
  447. package/dist/collection/components/item/item.js +56 -21
  448. package/dist/collection/components/item/item.md.css +131 -79
  449. package/dist/collection/components/item-divider/item-divider.ios.css +18 -0
  450. package/dist/collection/components/item-divider/item-divider.js +11 -8
  451. package/dist/collection/components/item-divider/item-divider.md.css +18 -0
  452. package/dist/collection/components/item-group/item-group.ios.css +12 -0
  453. package/dist/collection/components/item-group/item-group.js +13 -7
  454. package/dist/collection/components/item-group/item-group.md.css +12 -0
  455. package/dist/collection/components/item-option/item-option.ionic.css +277 -0
  456. package/dist/collection/components/item-option/item-option.ios.css +136 -29
  457. package/dist/collection/components/item-option/item-option.js +73 -9
  458. package/dist/collection/components/item-option/item-option.md.css +136 -29
  459. package/dist/collection/components/item-options/item-options.ionic.css +221 -0
  460. package/dist/collection/components/item-options/item-options.ios.css +77 -34
  461. package/dist/collection/components/item-options/item-options.js +13 -7
  462. package/dist/collection/components/item-options/item-options.md.css +77 -34
  463. package/dist/collection/components/item-sliding/item-sliding.ionic.css +211 -0
  464. package/dist/collection/components/item-sliding/item-sliding.js +419 -35
  465. package/dist/collection/components/item-sliding/{item-sliding.css → item-sliding.native.css} +84 -9
  466. package/dist/collection/components/item-sliding/test/test.utils.js +13 -0
  467. package/dist/collection/components/label/label.ios.css +18 -0
  468. package/dist/collection/components/label/label.js +11 -8
  469. package/dist/collection/components/label/label.md.css +18 -0
  470. package/dist/collection/components/list/list.ionic.css +212 -0
  471. package/dist/collection/components/list/list.ios.css +54 -14
  472. package/dist/collection/components/list/list.js +48 -9
  473. package/dist/collection/components/list/list.md.css +56 -16
  474. package/dist/collection/components/list-header/list-header.ionic.css +190 -0
  475. package/dist/collection/components/list-header/list-header.ios.css +82 -38
  476. package/dist/collection/components/list-header/list-header.js +11 -8
  477. package/dist/collection/components/list-header/list-header.md.css +82 -38
  478. package/dist/collection/components/loading/loading.ios.css +13 -1
  479. package/dist/collection/components/loading/loading.js +15 -12
  480. package/dist/collection/components/loading/loading.md.css +13 -1
  481. package/dist/collection/components/menu/menu.ios.css +15 -3
  482. package/dist/collection/components/menu/menu.js +12 -7
  483. package/dist/collection/components/menu/menu.md.css +15 -3
  484. package/dist/collection/components/menu-button/menu-button.ionic.css +236 -0
  485. package/dist/collection/components/menu-button/menu-button.ios.css +48 -14
  486. package/dist/collection/components/menu-button/menu-button.js +26 -10
  487. package/dist/collection/components/menu-button/menu-button.md.css +49 -15
  488. package/dist/collection/components/menu-toggle/menu-toggle.js +8 -5
  489. package/dist/collection/components/modal/animations/ionic.enter.js +40 -0
  490. package/dist/collection/components/modal/animations/ionic.leave.js +28 -0
  491. package/dist/collection/components/modal/animations/sheet.js +8 -2
  492. package/dist/collection/components/modal/gestures/sheet.js +76 -10
  493. package/dist/collection/components/modal/modal.ionic.css +255 -0
  494. package/dist/collection/components/modal/modal.ios.css +178 -70
  495. package/dist/collection/components/modal/modal.js +52 -13
  496. package/dist/collection/components/modal/modal.md.css +178 -70
  497. package/dist/collection/components/nav/nav.css +7 -1
  498. package/dist/collection/components/nav/nav.js +10 -4
  499. package/dist/collection/components/nav-link/nav-link.js +5 -1
  500. package/dist/collection/components/note/note.ios.css +12 -0
  501. package/dist/collection/components/note/note.js +11 -8
  502. package/dist/collection/components/note/note.md.css +12 -0
  503. package/dist/collection/components/picker/picker.ios.css +15 -3
  504. package/dist/collection/components/picker/picker.js +8 -5
  505. package/dist/collection/components/picker/picker.md.css +15 -3
  506. package/dist/collection/components/picker-column/picker-column.css +9 -2
  507. package/dist/collection/components/picker-column/picker-column.js +8 -7
  508. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +6 -0
  509. package/dist/collection/components/picker-column-option/picker-column-option.js +13 -7
  510. package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -0
  511. package/dist/collection/components/popover/popover.ionic.css +289 -0
  512. package/dist/collection/components/popover/popover.ios.css +13 -1
  513. package/dist/collection/components/popover/popover.js +19 -16
  514. package/dist/collection/components/popover/popover.md.css +13 -1
  515. package/dist/collection/components/progress-bar/progress-bar.ionic.css +287 -0
  516. package/dist/collection/components/progress-bar/progress-bar.ios.css +48 -17
  517. package/dist/collection/components/progress-bar/progress-bar.js +43 -7
  518. package/dist/collection/components/progress-bar/progress-bar.md.css +48 -17
  519. package/dist/collection/components/radio/radio.ionic.css +422 -0
  520. package/dist/collection/components/radio/radio.ios.css +207 -102
  521. package/dist/collection/components/radio/radio.js +14 -9
  522. package/dist/collection/components/radio/radio.md.css +207 -102
  523. package/dist/collection/components/radio-group/radio-group.ionic.css +119 -0
  524. package/dist/collection/components/radio-group/radio-group.ios.css +43 -19
  525. package/dist/collection/components/radio-group/radio-group.js +48 -7
  526. package/dist/collection/components/radio-group/radio-group.md.css +43 -19
  527. package/dist/collection/components/range/range.ionic.css +567 -0
  528. package/dist/collection/components/range/range.ios.css +128 -85
  529. package/dist/collection/components/range/range.js +16 -10
  530. package/dist/collection/components/range/range.md.css +128 -85
  531. package/dist/collection/components/refresher/refresher.ios.css +14 -1
  532. package/dist/collection/components/refresher/refresher.js +11 -8
  533. package/dist/collection/components/refresher/refresher.md.css +15 -2
  534. package/dist/collection/components/refresher-content/refresher-content.js +28 -7
  535. package/dist/collection/components/reorder/reorder.ios.css +6 -0
  536. package/dist/collection/components/reorder/reorder.js +33 -6
  537. package/dist/collection/components/reorder/reorder.md.css +6 -0
  538. package/dist/collection/components/reorder-group/reorder-group.css +6 -0
  539. package/dist/collection/components/reorder-group/reorder-group.js +8 -4
  540. package/dist/collection/components/ripple-effect/{ripple-effect.css → ripple-effect.common.css} +7 -1
  541. package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +215 -0
  542. package/dist/collection/components/ripple-effect/ripple-effect.js +14 -6
  543. package/dist/collection/components/route/route.js +4 -0
  544. package/dist/collection/components/router/router.js +4 -0
  545. package/dist/collection/components/router-link/router-link.css +8 -2
  546. package/dist/collection/components/router-link/router-link.js +9 -5
  547. package/dist/collection/components/router-outlet/router-outlet.css +7 -1
  548. package/dist/collection/components/router-outlet/router-outlet.js +6 -3
  549. package/dist/collection/components/row/row.css +16 -0
  550. package/dist/collection/components/row/row.js +9 -2
  551. package/dist/collection/components/searchbar/searchbar.ionic.css +622 -0
  552. package/dist/collection/components/searchbar/searchbar.ios.css +56 -18
  553. package/dist/collection/components/searchbar/searchbar.js +191 -42
  554. package/dist/collection/components/searchbar/searchbar.md.css +56 -18
  555. package/dist/collection/components/segment/segment.ionic.css +115 -0
  556. package/dist/collection/components/segment/segment.ios.css +45 -2
  557. package/dist/collection/components/segment/segment.js +11 -8
  558. package/dist/collection/components/segment/segment.md.css +45 -2
  559. package/dist/collection/components/segment-button/segment-button.ionic.css +352 -0
  560. package/dist/collection/components/segment-button/segment-button.ios.css +146 -105
  561. package/dist/collection/components/segment-button/segment-button.js +11 -8
  562. package/dist/collection/components/segment-button/segment-button.md.css +148 -107
  563. package/dist/collection/components/segment-content/segment-content.js +1 -1
  564. package/dist/collection/components/segment-view/segment-view.ios.css +6 -0
  565. package/dist/collection/components/segment-view/segment-view.js +13 -4
  566. package/dist/collection/components/segment-view/segment-view.md.css +6 -0
  567. package/dist/collection/components/select/select.ionic.css +864 -0
  568. package/dist/collection/components/select/select.ios.css +300 -148
  569. package/dist/collection/components/select/select.js +252 -81
  570. package/dist/collection/components/select/select.md.css +316 -150
  571. package/dist/collection/components/select-modal/select-modal.ionic.css +257 -0
  572. package/dist/collection/components/select-modal/select-modal.ios.css +293 -45
  573. package/dist/collection/components/select-modal/select-modal.js +61 -15
  574. package/dist/collection/components/select-modal/select-modal.md.css +273 -43
  575. package/dist/collection/components/select-option/select-option.js +8 -4
  576. package/dist/collection/components/select-popover/select-popover.ionic.css +255 -0
  577. package/dist/collection/components/select-popover/select-popover.ios.css +188 -124
  578. package/dist/collection/components/select-popover/select-popover.js +17 -9
  579. package/dist/collection/components/select-popover/select-popover.md.css +228 -47
  580. package/dist/collection/components/skeleton-text/skeleton-text.css +6 -0
  581. package/dist/collection/components/skeleton-text/skeleton-text.js +9 -5
  582. package/dist/collection/components/spinner/{spinner.css → spinner.ionic.css} +78 -10
  583. package/dist/collection/components/spinner/spinner.js +47 -6
  584. package/dist/collection/components/spinner/spinner.native.css +199 -0
  585. package/dist/collection/components/split-pane/split-pane.ios.css +20 -2
  586. package/dist/collection/components/split-pane/split-pane.js +15 -8
  587. package/dist/collection/components/split-pane/split-pane.md.css +20 -2
  588. package/dist/collection/components/tab/tab.js +6 -2
  589. package/dist/collection/components/tab-bar/tab-bar.ionic.css +249 -0
  590. package/dist/collection/components/tab-bar/tab-bar.ios.css +86 -43
  591. package/dist/collection/components/tab-bar/tab-bar.js +178 -15
  592. package/dist/collection/components/tab-bar/tab-bar.md.css +86 -43
  593. package/dist/collection/components/tab-button/tab-button.ionic.css +373 -0
  594. package/dist/collection/components/tab-button/tab-button.ios.css +171 -95
  595. package/dist/collection/components/tab-button/tab-button.js +54 -9
  596. package/dist/collection/components/tab-button/tab-button.md.css +137 -93
  597. package/dist/collection/components/tabs/tabs.css +7 -1
  598. package/dist/collection/components/tabs/tabs.js +4 -1
  599. package/dist/collection/components/text/text.css +6 -0
  600. package/dist/collection/components/text/text.js +7 -6
  601. package/dist/collection/components/textarea/textarea.ionic.css +945 -0
  602. package/dist/collection/components/textarea/textarea.ios.css +301 -155
  603. package/dist/collection/components/textarea/textarea.js +215 -26
  604. package/dist/collection/components/textarea/textarea.md.css +315 -156
  605. package/dist/collection/components/thumbnail/thumbnail.css +6 -0
  606. package/dist/collection/components/thumbnail/thumbnail.js +9 -2
  607. package/dist/collection/components/title/title.ionic.css +127 -0
  608. package/dist/collection/components/title/title.ios.css +32 -4
  609. package/dist/collection/components/title/title.js +13 -7
  610. package/dist/collection/components/title/title.md.css +39 -4
  611. package/dist/collection/components/toast/animations/utils.js +1 -1
  612. package/dist/collection/components/toast/toast.ionic.css +394 -0
  613. package/dist/collection/components/toast/toast.ios.css +84 -45
  614. package/dist/collection/components/toast/toast.js +79 -13
  615. package/dist/collection/components/toast/toast.md.css +84 -45
  616. package/dist/collection/components/toggle/toggle.ionic.css +512 -0
  617. package/dist/collection/components/toggle/toggle.ios.css +247 -127
  618. package/dist/collection/components/toggle/toggle.js +72 -18
  619. package/dist/collection/components/toggle/toggle.md.css +245 -127
  620. package/dist/collection/components/toolbar/test/image.svg +1 -0
  621. package/dist/collection/components/toolbar/toolbar.ionic.css +249 -0
  622. package/dist/collection/components/toolbar/toolbar.ios.css +90 -47
  623. package/dist/collection/components/toolbar/toolbar.js +216 -14
  624. package/dist/collection/components/toolbar/toolbar.md.css +90 -47
  625. package/dist/collection/global/ionic-global.js +239 -13
  626. package/dist/collection/utils/css-value-validation.js +39 -0
  627. package/dist/collection/utils/focus-trap.js +13 -2
  628. package/dist/collection/utils/focus-visible.js +22 -0
  629. package/dist/collection/utils/forms/clear-button-press-controller.js +40 -0
  630. package/dist/collection/utils/forms/index.js +1 -0
  631. package/dist/collection/utils/forms/validity.js +31 -0
  632. package/dist/collection/utils/framework-delegate.js +3 -1
  633. package/dist/collection/utils/hardware-back-button.js +15 -0
  634. package/dist/collection/utils/helpers.js +70 -3
  635. package/dist/collection/utils/keyboard/keyboard-controller.js +3 -1
  636. package/dist/collection/utils/media.js +1 -0
  637. package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
  638. package/dist/collection/utils/menu-controller/animations/push.js +2 -1
  639. package/dist/collection/utils/menu-controller/animations/reveal.js +2 -1
  640. package/dist/collection/utils/overlay-control-label.js +13 -11
  641. package/dist/collection/utils/overlays.js +287 -8
  642. package/dist/collection/utils/scroll-hide-controller.js +178 -0
  643. package/dist/collection/utils/test/playwright/drag-element.js +32 -9
  644. package/dist/collection/utils/test/playwright/generator.js +48 -23
  645. package/dist/collection/utils/test/playwright/page/utils/goto.js +10 -1
  646. package/dist/collection/utils/test/playwright/page/utils/set-content.js +26 -3
  647. package/dist/collection/utils/theme.js +25 -1
  648. package/dist/collection/utils/transition/ios.transition.js +1 -0
  649. package/dist/docs.json +8849 -288
  650. package/dist/esm/{animation-BFNVlYum.js → animation-DXpoXT3G.js} +2 -2
  651. package/dist/esm/{app-globals-BgX0BGL1.js → app-globals-gnMsODWu.js} +1 -1
  652. package/dist/esm/{button-active-BfOvDr3b.js → button-active-DtDlu9-d.js} +2 -2
  653. package/dist/esm/{capacitor-CFERIeaU.js → capacitor-CMyaZHxy.js} +1 -1
  654. package/dist/esm/caret-down-D1t981Ih.js +6 -0
  655. package/dist/esm/caret-left-fIOYmaqA.js +6 -0
  656. package/dist/esm/caret-right-BYSs-jZz.js +6 -0
  657. package/dist/esm/clear-button-press-controller-CWOPHFBc.js +43 -0
  658. package/dist/{cjs/focus-visible-CCvKiLh3.js → esm/focus-visible-vXpMhGrs.js} +23 -3
  659. package/dist/esm/{format-DDFE9jM5.js → format-DHkUcwuW.js} +1 -1
  660. package/dist/esm/{framework-delegate-BwNhx9NR.js → framework-delegate-DUQ69ajj.js} +4 -2
  661. package/dist/esm/{haptic-Cq4UAeka.js → haptic-Dal3yCq6.js} +1 -1
  662. package/dist/esm/{helpers-BSmc0nst.js → helpers-DTqW6MzS.js} +71 -5
  663. package/dist/esm/{index-D76bbuoi.js → index-B6qBfx1b.js} +1 -1
  664. package/dist/esm/{index-BvabGprD.js → index-BqQ15K9a.js} +2 -1
  665. package/dist/esm/{index-BuPaALjU.js → index-C2QkTAgc.js} +11 -11
  666. package/dist/esm/{index-C1b9CLFg.js → index-CpKLzrYn.js} +2 -2
  667. package/dist/esm/{index-DnA_7Bnx.js → index-D76uuG8P.js} +4 -4
  668. package/dist/esm/{index-CJln0gS3.js → index-D_YUqPZN.js} +4 -3
  669. package/dist/esm/{index-C23AVPx9.js → index-jsOqXOKf.js} +53 -4
  670. package/dist/esm/index.js +13 -14
  671. package/dist/esm/{input-shims-Dqk-Ou25.js → input-shims-DgFi_b6v.js} +7 -6
  672. package/dist/esm/{input.utils-rqoH22pW.js → input.utils-BV974hyf.js} +1 -1
  673. package/dist/esm/ion-accordion_2.entry.js +61 -29
  674. package/dist/esm/ion-action-sheet.entry.js +26 -24
  675. package/dist/esm/ion-alert.entry.js +33 -31
  676. package/dist/esm/ion-app_8.entry.js +453 -194
  677. package/dist/esm/ion-avatar_3.entry.js +123 -13
  678. package/dist/esm/ion-back-button.entry.js +31 -22
  679. package/dist/esm/ion-backdrop.entry.js +10 -7
  680. package/dist/esm/ion-breadcrumb_2.entry.js +54 -18
  681. package/dist/esm/ion-button_2.entry.js +59 -22
  682. package/dist/esm/ion-card_5.entry.js +55 -33
  683. package/dist/esm/ion-checkbox.entry.js +34 -17
  684. package/dist/esm/ion-chip.entry.js +50 -9
  685. package/dist/esm/ion-col_3.entry.js +56 -62
  686. package/dist/esm/ion-datetime-button.entry.js +13 -9
  687. package/dist/esm/ion-datetime.entry.js +109 -34
  688. package/dist/esm/ion-divider.entry.js +49 -0
  689. package/dist/esm/ion-fab_3.entry.js +44 -28
  690. package/dist/esm/ion-gallery-item.entry.js +56 -0
  691. package/dist/esm/ion-gallery.entry.js +605 -0
  692. package/dist/esm/ion-img.entry.js +8 -4
  693. package/dist/esm/ion-infinite-scroll_2.entry.js +90 -16
  694. package/dist/esm/ion-input-otp.entry.js +73 -9
  695. package/dist/esm/ion-input-password-toggle.entry.js +53 -14
  696. package/dist/esm/ion-input.entry.js +157 -38
  697. package/dist/esm/ion-item-option_3.entry.js +465 -52
  698. package/dist/esm/ion-item_8.entry.js +121 -50
  699. package/dist/esm/ion-loading.entry.js +21 -19
  700. package/dist/esm/ion-menu_3.entry.js +47 -29
  701. package/dist/esm/ion-modal.entry.js +217 -92
  702. package/dist/esm/ion-nav_2.entry.js +13 -10
  703. package/dist/esm/ion-picker-column-option.entry.js +12 -8
  704. package/dist/esm/ion-picker-column.entry.js +13 -13
  705. package/dist/esm/ion-picker.entry.js +10 -6
  706. package/dist/esm/ion-popover.entry.js +22 -20
  707. package/dist/esm/ion-progress-bar.entry.js +27 -9
  708. package/dist/esm/ion-radio_2.entry.js +36 -18
  709. package/dist/esm/ion-range.entry.js +20 -13
  710. package/dist/esm/ion-refresher_2.entry.js +39 -21
  711. package/dist/esm/ion-reorder_2.entry.js +38 -14
  712. package/dist/esm/ion-ripple-effect.entry.js +15 -7
  713. package/dist/esm/ion-route_4.entry.js +11 -10
  714. package/dist/esm/ion-searchbar.entry.js +146 -32
  715. package/dist/esm/ion-segment-content.entry.js +2 -2
  716. package/dist/esm/ion-segment-view.entry.js +13 -3
  717. package/dist/esm/ion-segment_2.entry.js +23 -16
  718. package/dist/esm/ion-select-modal.entry.js +51 -26
  719. package/dist/esm/ion-select_3.entry.js +216 -77
  720. package/dist/esm/ion-spinner.entry.js +30 -8
  721. package/dist/esm/ion-split-pane.entry.js +13 -9
  722. package/dist/esm/ion-tab-bar_2.entry.js +148 -27
  723. package/dist/esm/ion-tab_2.entry.js +8 -7
  724. package/dist/esm/ion-text.entry.js +7 -7
  725. package/dist/esm/ion-textarea.entry.js +190 -25
  726. package/dist/esm/ion-toast.entry.js +47 -21
  727. package/dist/esm/ion-toggle.entry.js +82 -26
  728. package/dist/esm/ionic-global-oK2heABF.js +511 -0
  729. package/dist/esm/ionic.js +5 -5
  730. package/dist/esm/{ios.transition-CWAgfQ1r.js → ios.transition-D6rsx0aJ.js} +7 -5
  731. package/dist/esm/{item-multiple-inputs-DZnIiOO_.js → item-multiple-inputs-CAlufDbv.js} +1 -1
  732. package/dist/esm/{keyboard-DAF8GNJ9.js → keyboard-Dzp50ozz.js} +1 -1
  733. package/dist/esm/{keyboard-Cj8mLJeq.js → keyboard-YBye__Ay.js} +4 -3
  734. package/dist/esm/list-Dhi5xtNS.js +6 -0
  735. package/dist/esm/loader.js +5 -5
  736. package/dist/esm/{md.transition-ZuqDDdDW.js → md.transition-0y4So3tu.js} +6 -5
  737. package/dist/esm/{overlay-control-label-BSQPZ79H.js → overlay-control-label-CODBQrPj.js} +13 -11
  738. package/dist/esm/{overlays-DKE0DgvE.js → overlays-CLlfG_qy.js} +303 -15
  739. package/dist/esm/scroll-hide-controller-BUZm0jSI.js +342 -0
  740. package/dist/esm/{select-option-render-CRP_teb1.js → select-option-render-DICJMeLf.js} +2 -2
  741. package/dist/esm/{slot-mutation-controller-B5NpUZ-N.js → slot-mutation-controller-C5Vj7Od7.js} +2 -2
  742. package/dist/esm/{status-tap-Cv9gb3ja.js → status-tap-VmNhEOZr.js} +4 -3
  743. package/dist/esm/{swipe-back-B2CmabKY.js → swipe-back-BHHiqew-.js} +3 -2
  744. package/dist/esm/{theme-byZM6qHV.js → theme-BUF_V-Kg.js} +25 -1
  745. package/dist/esm/validity-NcQUGze-.js +48 -0
  746. package/dist/esm/x-BDqjX7Z_.js +6 -0
  747. package/dist/html.html-data.json +2631 -150
  748. package/dist/ionic/index.esm.js +1 -1
  749. package/dist/ionic/ionic.esm.js +1 -1
  750. package/dist/ionic/p-04d96dad.entry.js +4 -0
  751. package/dist/ionic/p-08f20edc.entry.js +4 -0
  752. package/dist/ionic/p-0a924e6a.entry.js +4 -0
  753. package/dist/ionic/p-0f268972.entry.js +4 -0
  754. package/dist/ionic/p-18c6af89.entry.js +4 -0
  755. package/dist/ionic/p-1cc2a196.entry.js +4 -0
  756. package/dist/ionic/p-201f484e.entry.js +4 -0
  757. package/dist/ionic/p-26efcc45.entry.js +4 -0
  758. package/dist/ionic/p-2c3704b9.entry.js +4 -0
  759. package/dist/ionic/p-2da21af7.entry.js +4 -0
  760. package/dist/ionic/p-2e3acd77.entry.js +4 -0
  761. package/dist/ionic/p-2fc1521f.entry.js +4 -0
  762. package/dist/ionic/p-30c4458b.entry.js +4 -0
  763. package/dist/ionic/p-32829ef8.entry.js +4 -0
  764. package/dist/ionic/p-32be916d.entry.js +4 -0
  765. package/dist/ionic/p-384fb50d.entry.js +4 -0
  766. package/dist/ionic/p-3bb43e22.entry.js +4 -0
  767. package/dist/ionic/p-46709a42.entry.js +4 -0
  768. package/dist/ionic/p-4QzQhqmw.js +4 -0
  769. package/dist/ionic/p-4eec50dd.entry.js +4 -0
  770. package/dist/ionic/p-5217eb00.entry.js +4 -0
  771. package/dist/ionic/p-55e13406.entry.js +4 -0
  772. package/dist/ionic/p-6b23289a.entry.js +4 -0
  773. package/dist/ionic/p-73309d35.entry.js +4 -0
  774. package/dist/ionic/p-74ab5f49.entry.js +4 -0
  775. package/dist/ionic/p-7d2f3242.entry.js +4 -0
  776. package/dist/ionic/p-7e28cc53.entry.js +4 -0
  777. package/dist/ionic/p-84b5eafe.entry.js +4 -0
  778. package/dist/ionic/p-854b95f9.entry.js +4 -0
  779. package/dist/ionic/p-886236f0.entry.js +4 -0
  780. package/dist/ionic/p-8NLG9fne.js +4 -0
  781. package/dist/ionic/p-8a7bf6c7.entry.js +4 -0
  782. package/dist/ionic/p-8c446282.entry.js +4 -0
  783. package/dist/ionic/p-8dcd18cf.entry.js +4 -0
  784. package/dist/ionic/p-924182fc.entry.js +4 -0
  785. package/dist/ionic/p-92f21db6.entry.js +4 -0
  786. package/dist/ionic/p-945ed823.entry.js +4 -0
  787. package/dist/ionic/p-9ca59419.entry.js +4 -0
  788. package/dist/ionic/p-B3L20Lav.js +4 -0
  789. package/dist/ionic/p-B6aOaV_m.js +4 -0
  790. package/dist/ionic/p-BDqjX7Z_.js +4 -0
  791. package/dist/ionic/p-BUF_V-Kg.js +4 -0
  792. package/dist/ionic/{p-D7jHfs0Y.js → p-BUvFnCVr.js} +1 -1
  793. package/dist/ionic/{p-Bd72UYI2.js → p-BVv5nqxG.js} +1 -1
  794. package/dist/ionic/p-BYSs-jZz.js +4 -0
  795. package/dist/ionic/p-BdqFx5km.js +4 -0
  796. package/dist/ionic/p-BnRvdoDY.js +4 -0
  797. package/{components/p-DiuOa1vw.js → dist/ionic/p-BooNJoKP.js} +1 -1
  798. package/dist/ionic/p-BqQ15K9a.js +4 -0
  799. package/{components/p-6ZLn6K5e.js → dist/ionic/p-C0V6sqau.js} +1 -1
  800. package/dist/ionic/p-CD4Mty1V.js +4 -0
  801. package/dist/ionic/p-CE00jiiW.js +4 -0
  802. package/dist/ionic/p-CLVGlNRl.js +4 -0
  803. package/dist/ionic/p-CODBQrPj.js +4 -0
  804. package/dist/ionic/p-CP5-2cXj.js +4 -0
  805. package/dist/ionic/p-CRbXZpID.js +4 -0
  806. package/dist/ionic/p-CZ-V4tB0.js +4 -0
  807. package/dist/ionic/p-Cs5kzNVE.js +4 -0
  808. package/dist/ionic/p-CsmXfOZY.js +4 -0
  809. package/dist/ionic/p-CyXL8sF6.js +4 -0
  810. package/dist/ionic/{p-T71k3C35.js → p-D1ej8PMz.js} +1 -1
  811. package/dist/ionic/p-D1t981Ih.js +4 -0
  812. package/{components/p-DxhHlJln.js → dist/ionic/p-D8HyO4-0.js} +1 -1
  813. package/dist/ionic/p-DAFzmzMJ.js +4 -0
  814. package/{components/p-BgkOsq-d.js → dist/ionic/p-DFZcZ5hU.js} +1 -1
  815. package/dist/ionic/p-Dhi5xtNS.js +4 -0
  816. package/dist/ionic/{p-CkxVYPtX.js → p-DpE9LgN6.js} +1 -1
  817. package/dist/ionic/p-DvXo4Ng9.js +4 -0
  818. package/{components/p-C4VpVfrJ.js → dist/ionic/p-Izgzy5eB.js} +1 -1
  819. package/dist/ionic/p-NcQUGze-.js +4 -0
  820. package/dist/ionic/p-ac4ea8db.entry.js +4 -0
  821. package/dist/ionic/p-b10dc124.entry.js +4 -0
  822. package/dist/ionic/p-b411d90d.entry.js +4 -0
  823. package/dist/ionic/p-b7ce4a50.entry.js +4 -0
  824. package/dist/ionic/p-b83de44e.entry.js +4 -0
  825. package/dist/ionic/p-c7035f3f.entry.js +4 -0
  826. package/dist/ionic/p-c91fc9d4.entry.js +4 -0
  827. package/dist/ionic/p-cd05447f.entry.js +4 -0
  828. package/dist/ionic/p-ce1ab874.entry.js +4 -0
  829. package/dist/ionic/p-d0368d31.entry.js +4 -0
  830. package/dist/ionic/p-d1d3048b.entry.js +4 -0
  831. package/dist/ionic/p-db011674.entry.js +4 -0
  832. package/dist/ionic/p-dc000de0.entry.js +4 -0
  833. package/dist/ionic/p-e53980b0.entry.js +4 -0
  834. package/dist/ionic/p-e939adf3.entry.js +4 -0
  835. package/dist/ionic/p-e9fdff49.entry.js +4 -0
  836. package/dist/ionic/p-f29b784f.entry.js +4 -0
  837. package/dist/ionic/p-f82b13a6.entry.js +4 -0
  838. package/dist/ionic/p-fIOYmaqA.js +4 -0
  839. package/dist/ionic/p-fdb940e3.entry.js +4 -0
  840. package/dist/ionic/p-jsOqXOKf.js +6 -0
  841. package/dist/ionic/p-psKsVoNI.js +4 -0
  842. package/dist/ionic/p-si7ttuvL.js +4 -0
  843. package/dist/ionic/p-vXpMhGrs.js +4 -0
  844. package/dist/types/components/accordion/accordion.d.ts +6 -3
  845. package/dist/types/components/accordion-group/accordion-group.d.ts +12 -1
  846. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +3 -7
  847. package/dist/types/components/action-sheet/action-sheet.d.ts +3 -2
  848. package/dist/types/components/alert/alert-interface.d.ts +3 -7
  849. package/dist/types/components/alert/alert.d.ts +3 -2
  850. package/dist/types/components/app/app.d.ts +4 -5
  851. package/dist/types/components/avatar/avatar.d.ts +32 -0
  852. package/dist/types/components/back-button/back-button.d.ts +2 -1
  853. package/dist/types/components/backdrop/backdrop.d.ts +4 -0
  854. package/dist/types/components/badge/badge.d.ts +34 -1
  855. package/dist/types/components/breadcrumb/breadcrumb.d.ts +4 -1
  856. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
  857. package/dist/types/components/button/button.d.ts +23 -8
  858. package/dist/types/components/buttons/buttons.d.ts +5 -1
  859. package/dist/types/components/card/card.d.ts +8 -1
  860. package/dist/types/components/card-content/card-content.d.ts +2 -1
  861. package/dist/types/components/card-header/card-header.d.ts +3 -2
  862. package/dist/types/components/card-subtitle/card-subtitle.d.ts +2 -1
  863. package/dist/types/components/card-title/card-title.d.ts +2 -1
  864. package/dist/types/components/checkbox/checkbox.d.ts +14 -4
  865. package/dist/types/components/chip/chip.d.ts +26 -1
  866. package/dist/types/components/col/col.d.ts +52 -5
  867. package/dist/types/components/content/content.d.ts +3 -0
  868. package/dist/types/components/datetime/datetime.d.ts +26 -1
  869. package/dist/types/components/datetime/utils/data.d.ts +5 -5
  870. package/dist/types/components/datetime-button/datetime-button.d.ts +2 -1
  871. package/dist/types/components/divider/divider.d.ts +20 -0
  872. package/dist/types/components/fab/fab.d.ts +4 -0
  873. package/dist/types/components/fab-button/fab-button.d.ts +5 -3
  874. package/dist/types/components/fab-list/fab-list.d.ts +4 -0
  875. package/dist/types/components/footer/footer-interface.d.ts +1 -0
  876. package/dist/types/components/footer/footer.d.ts +20 -3
  877. package/dist/types/components/gallery/gallery-constants.d.ts +9 -0
  878. package/dist/types/components/gallery/gallery-interface.d.ts +10 -0
  879. package/dist/types/components/gallery/gallery.d.ts +218 -0
  880. package/dist/types/components/gallery/test/utils.d.ts +3 -0
  881. package/dist/types/components/gallery-item/gallery-item.d.ts +33 -0
  882. package/dist/types/components/grid/grid.d.ts +4 -0
  883. package/dist/types/components/header/header-interface.d.ts +1 -0
  884. package/dist/types/components/header/header.d.ts +26 -3
  885. package/dist/types/components/header/header.utils.d.ts +4 -5
  886. package/dist/types/components/img/img.d.ts +2 -0
  887. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +21 -0
  888. package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +4 -0
  889. package/dist/types/components/input/input.d.ts +48 -5
  890. package/dist/types/components/input-otp/input-otp.d.ts +37 -0
  891. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +2 -0
  892. package/dist/types/components/item/item.d.ts +11 -4
  893. package/dist/types/components/item-divider/item-divider.d.ts +2 -1
  894. package/dist/types/components/item-group/item-group.d.ts +4 -0
  895. package/dist/types/components/item-option/item-option.d.ts +18 -1
  896. package/dist/types/components/item-options/item-options.d.ts +4 -0
  897. package/dist/types/components/item-sliding/item-sliding.d.ts +47 -1
  898. package/dist/types/components/item-sliding/test/test.utils.d.ts +13 -0
  899. package/dist/types/components/label/label.d.ts +2 -1
  900. package/dist/types/components/list/list.d.ts +15 -1
  901. package/dist/types/components/list-header/list-header.d.ts +2 -1
  902. package/dist/types/components/loading/loading-interface.d.ts +2 -7
  903. package/dist/types/components/loading/loading.d.ts +3 -2
  904. package/dist/types/components/menu/menu.d.ts +3 -0
  905. package/dist/types/components/menu-button/menu-button.d.ts +3 -1
  906. package/dist/types/components/menu-toggle/menu-toggle.d.ts +3 -0
  907. package/dist/types/components/modal/animations/ionic.enter.d.ts +6 -0
  908. package/dist/types/components/modal/animations/ionic.leave.d.ts +6 -0
  909. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  910. package/dist/types/components/modal/modal-interface.d.ts +4 -7
  911. package/dist/types/components/modal/modal.d.ts +11 -1
  912. package/dist/types/components/nav/nav-interface.d.ts +9 -1
  913. package/dist/types/components/nav/nav.d.ts +5 -1
  914. package/dist/types/components/nav-link/nav-link.d.ts +4 -0
  915. package/dist/types/components/note/note.d.ts +2 -1
  916. package/dist/types/components/picker/picker.d.ts +2 -1
  917. package/dist/types/components/picker-column/picker-column.d.ts +2 -1
  918. package/dist/types/components/picker-column-option/picker-column-option.d.ts +4 -0
  919. package/dist/types/components/popover/popover-interface.d.ts +3 -6
  920. package/dist/types/components/popover/popover.d.ts +6 -5
  921. package/dist/types/components/progress-bar/progress-bar.d.ts +10 -1
  922. package/dist/types/components/radio/radio.d.ts +2 -1
  923. package/dist/types/components/radio-group/radio-group.d.ts +12 -0
  924. package/dist/types/components/range/range.d.ts +2 -1
  925. package/dist/types/components/refresher/refresher.d.ts +2 -1
  926. package/dist/types/components/refresher-content/refresher-content.d.ts +4 -0
  927. package/dist/types/components/reorder/reorder.d.ts +9 -0
  928. package/dist/types/components/reorder-group/reorder-group.d.ts +4 -0
  929. package/dist/types/components/ripple-effect/ripple-effect.d.ts +4 -0
  930. package/dist/types/components/route/route.d.ts +4 -0
  931. package/dist/types/components/router/router.d.ts +4 -0
  932. package/dist/types/components/router-link/router-link.d.ts +4 -0
  933. package/dist/types/components/router-outlet/router-outlet.d.ts +4 -1
  934. package/dist/types/components/row/row.d.ts +4 -0
  935. package/dist/types/components/searchbar/searchbar.d.ts +56 -10
  936. package/dist/types/components/segment/segment.d.ts +2 -1
  937. package/dist/types/components/segment-button/segment-button.d.ts +2 -1
  938. package/dist/types/components/select/select.d.ts +64 -15
  939. package/dist/types/components/select-modal/select-modal.d.ts +8 -0
  940. package/dist/types/components/select-option/select-option.d.ts +7 -4
  941. package/dist/types/components/select-popover/select-popover.d.ts +3 -0
  942. package/dist/types/components/skeleton-text/skeleton-text.d.ts +4 -0
  943. package/dist/types/components/spinner/spinner.d.ts +15 -0
  944. package/dist/types/components/split-pane/split-pane.d.ts +4 -0
  945. package/dist/types/components/tab/tab.d.ts +4 -0
  946. package/dist/types/components/tab-bar/tab-bar-interface.d.ts +1 -0
  947. package/dist/types/components/tab-bar/tab-bar.d.ts +41 -3
  948. package/dist/types/components/tab-button/tab-button.d.ts +12 -1
  949. package/dist/types/components/tabs/tabs.d.ts +3 -0
  950. package/dist/types/components/text/text.d.ts +2 -1
  951. package/dist/types/components/textarea/textarea.d.ts +74 -4
  952. package/dist/types/components/thumbnail/thumbnail.d.ts +4 -0
  953. package/dist/types/components/title/title.d.ts +4 -0
  954. package/dist/types/components/toast/animations/utils.d.ts +2 -2
  955. package/dist/types/components/toast/toast-interface.d.ts +3 -7
  956. package/dist/types/components/toast/toast.d.ts +19 -2
  957. package/dist/types/components/toggle/toggle.d.ts +15 -1
  958. package/dist/types/components/toolbar/toolbar.d.ts +43 -3
  959. package/dist/types/components.d.ts +1839 -211
  960. package/dist/types/global/ionic-global.d.ts +28 -2
  961. package/dist/types/interface.d.ts +3 -0
  962. package/dist/types/utils/config.d.ts +106 -2
  963. package/dist/types/utils/css-value-validation.d.ts +21 -0
  964. package/dist/types/utils/focus-trap.d.ts +1 -1
  965. package/dist/types/utils/focus-visible.d.ts +13 -0
  966. package/dist/types/utils/forms/clear-button-press-controller.d.ts +20 -0
  967. package/dist/types/utils/forms/index.d.ts +1 -0
  968. package/dist/types/utils/forms/validity.d.ts +7 -0
  969. package/dist/types/utils/helpers.d.ts +22 -0
  970. package/dist/types/utils/overlay-control-label.d.ts +11 -9
  971. package/dist/types/utils/overlays-interface.d.ts +31 -1
  972. package/dist/types/utils/overlays.d.ts +1 -1
  973. package/dist/types/utils/scroll-hide-controller.d.ts +56 -0
  974. package/dist/types/utils/test/playwright/drag-element.d.ts +16 -3
  975. package/dist/types/utils/test/playwright/generator.d.ts +31 -2
  976. package/dist/types/utils/theme.d.ts +9 -0
  977. package/hydrate/index.js +5445 -1216
  978. package/hydrate/index.mjs +5445 -1216
  979. package/package.json +7 -3
  980. package/components/p-1sJ0ZDPe.js +0 -4
  981. package/components/p-5ldEpNdG.js +0 -4
  982. package/components/p-B1_TL6RQ.js +0 -4
  983. package/components/p-B4lxwJ8N.js +0 -4
  984. package/components/p-BF48Oc0v.js +0 -4
  985. package/components/p-BJr2B5hZ.js +0 -4
  986. package/components/p-BNIsryb2.js +0 -4
  987. package/components/p-BSQPZ79H.js +0 -4
  988. package/components/p-BU8a2IhR.js +0 -4
  989. package/components/p-BW_SlU2D.js +0 -4
  990. package/components/p-BWoa-cki.js +0 -4
  991. package/components/p-BYJRZKHa.js +0 -4
  992. package/components/p-BhamHSw3.js +0 -4
  993. package/components/p-Bi-it1EH.js +0 -4
  994. package/components/p-BmVRXR1y.js +0 -4
  995. package/components/p-C-NbvXu4.js +0 -4
  996. package/components/p-C09TXohi.js +0 -4
  997. package/components/p-C8Ck7_Eo.js +0 -4
  998. package/components/p-CG_zZq_I.js +0 -4
  999. package/components/p-CIGNaXM1.js +0 -4
  1000. package/components/p-CJgnoKcN.js +0 -4
  1001. package/components/p-CMRYD_yR.js +0 -4
  1002. package/components/p-CNLioZ3B.js +0 -4
  1003. package/components/p-COO0eJOA.js +0 -4
  1004. package/components/p-CWAks_S_.js +0 -4
  1005. package/components/p-Cd1WaN-0.js +0 -4
  1006. package/components/p-CqbGBmqb.js +0 -4
  1007. package/components/p-CrAKlX71.js +0 -4
  1008. package/components/p-Ctop2IWW.js +0 -4
  1009. package/components/p-D5w_FlVa.js +0 -4
  1010. package/components/p-D7-vHX0A.js +0 -4
  1011. package/components/p-D7wDJdFn.js +0 -4
  1012. package/components/p-DFLJvuRK.js +0 -4
  1013. package/components/p-DJztqcrH.js +0 -4
  1014. package/components/p-DL13ieTa.js +0 -4
  1015. package/components/p-DMBiAyOR.js +0 -4
  1016. package/components/p-DZRZic9C.js +0 -4
  1017. package/components/p-DnBNYc7u.js +0 -4
  1018. package/components/p-GGbIHyEF.js +0 -4
  1019. package/components/p-Hp8t4RMX.js +0 -4
  1020. package/components/p-LpMHEu3v.js +0 -4
  1021. package/components/p-M34T2gyX.js +0 -4
  1022. package/components/p-TWw4e4sO.js +0 -4
  1023. package/components/p-YjMkHuvH.js +0 -4
  1024. package/components/p-ZjP4CjeZ.js +0 -4
  1025. package/components/p-byZM6qHV.js +0 -4
  1026. package/components/p-cEN43Ahr.js +0 -4
  1027. package/dist/cjs/hardware-back-button-Bu4Dzw8l.js +0 -121
  1028. package/dist/cjs/index-DkNv4J_i.js +0 -10
  1029. package/dist/cjs/ionic-global-CYJNT-2P.js +0 -156
  1030. package/dist/cjs/keyboard-controller-PtZoN2GS.js +0 -167
  1031. package/dist/cjs/validity-BpS37YFM.js +0 -19
  1032. package/dist/esm/hardware-back-button-DmkiRgOT.js +0 -115
  1033. package/dist/esm/index-ZjP4CjeZ.js +0 -7
  1034. package/dist/esm/ionic-global-ZXjCXKH0.js +0 -151
  1035. package/dist/esm/keyboard-controller-DEwoa1ev.js +0 -165
  1036. package/dist/esm/validity-DJztqcrH.js +0 -17
  1037. package/dist/ionic/p-099b7f9f.entry.js +0 -4
  1038. package/dist/ionic/p-171a2278.entry.js +0 -4
  1039. package/dist/ionic/p-191a651e.entry.js +0 -4
  1040. package/dist/ionic/p-1f24cb24.entry.js +0 -4
  1041. package/dist/ionic/p-271c3640.entry.js +0 -4
  1042. package/dist/ionic/p-2ea4bb36.entry.js +0 -4
  1043. package/dist/ionic/p-338a02e0.entry.js +0 -4
  1044. package/dist/ionic/p-354d38d3.entry.js +0 -4
  1045. package/dist/ionic/p-38b9375b.entry.js +0 -4
  1046. package/dist/ionic/p-3bba83ee.entry.js +0 -4
  1047. package/dist/ionic/p-3e01c744.entry.js +0 -4
  1048. package/dist/ionic/p-458715a9.entry.js +0 -4
  1049. package/dist/ionic/p-4712a8a9.entry.js +0 -4
  1050. package/dist/ionic/p-4c3e50f8.entry.js +0 -4
  1051. package/dist/ionic/p-54cbb0a7.entry.js +0 -4
  1052. package/dist/ionic/p-561af487.entry.js +0 -4
  1053. package/dist/ionic/p-5906ea6f.entry.js +0 -4
  1054. package/dist/ionic/p-5cc09b40.entry.js +0 -4
  1055. package/dist/ionic/p-5d9094ac.entry.js +0 -4
  1056. package/dist/ionic/p-612ea3b1.entry.js +0 -4
  1057. package/dist/ionic/p-68cc89a6.entry.js +0 -4
  1058. package/dist/ionic/p-6e386853.entry.js +0 -4
  1059. package/dist/ionic/p-77c96e08.entry.js +0 -4
  1060. package/dist/ionic/p-7bfeccb3.entry.js +0 -4
  1061. package/dist/ionic/p-7e394cc3.entry.js +0 -4
  1062. package/dist/ionic/p-7fbb3319.entry.js +0 -4
  1063. package/dist/ionic/p-803059b6.entry.js +0 -4
  1064. package/dist/ionic/p-85599fe3.entry.js +0 -4
  1065. package/dist/ionic/p-8b80d9f9.entry.js +0 -4
  1066. package/dist/ionic/p-90f50a65.entry.js +0 -4
  1067. package/dist/ionic/p-9595e305.entry.js +0 -4
  1068. package/dist/ionic/p-9c5f2691.entry.js +0 -4
  1069. package/dist/ionic/p-9ee9c5b6.entry.js +0 -4
  1070. package/dist/ionic/p-BMPN55of.js +0 -4
  1071. package/dist/ionic/p-BMiZX1LT.js +0 -4
  1072. package/dist/ionic/p-BSQPZ79H.js +0 -4
  1073. package/dist/ionic/p-BY6BzzPF.js +0 -4
  1074. package/dist/ionic/p-BgOvhHy_.js +0 -4
  1075. package/dist/ionic/p-BhamHSw3.js +0 -4
  1076. package/dist/ionic/p-BijjLYjT.js +0 -4
  1077. package/dist/ionic/p-BmVRXR1y.js +0 -4
  1078. package/dist/ionic/p-BvabGprD.js +0 -4
  1079. package/dist/ionic/p-C23AVPx9.js +0 -6
  1080. package/dist/ionic/p-CER8qW8Y.js +0 -4
  1081. package/dist/ionic/p-CFuOr1Tu.js +0 -4
  1082. package/dist/ionic/p-CIGNaXM1.js +0 -4
  1083. package/dist/ionic/p-CJv-wOAd.js +0 -4
  1084. package/dist/ionic/p-CMZYmFb4.js +0 -4
  1085. package/dist/ionic/p-CmXuiRT6.js +0 -4
  1086. package/dist/ionic/p-D5t_-oMk.js +0 -4
  1087. package/dist/ionic/p-D6rHcCvc.js +0 -4
  1088. package/dist/ionic/p-DJztqcrH.js +0 -4
  1089. package/dist/ionic/p-DLM95R4x.js +0 -4
  1090. package/dist/ionic/p-DYUjHcuH.js +0 -4
  1091. package/dist/ionic/p-D_gb-kdd.js +0 -4
  1092. package/dist/ionic/p-DajLgJ4d.js +0 -4
  1093. package/dist/ionic/p-Do3zTvCA.js +0 -4
  1094. package/dist/ionic/p-ZjP4CjeZ.js +0 -4
  1095. package/dist/ionic/p-a8df96c8.entry.js +0 -4
  1096. package/dist/ionic/p-a8ff2489.entry.js +0 -4
  1097. package/dist/ionic/p-aff52029.entry.js +0 -4
  1098. package/dist/ionic/p-b3532b8d.entry.js +0 -4
  1099. package/dist/ionic/p-b9b4e85d.entry.js +0 -4
  1100. package/dist/ionic/p-byZM6qHV.js +0 -4
  1101. package/dist/ionic/p-ca1b8865.entry.js +0 -4
  1102. package/dist/ionic/p-cc4320d3.entry.js +0 -4
  1103. package/dist/ionic/p-d526798a.entry.js +0 -4
  1104. package/dist/ionic/p-d6755739.entry.js +0 -4
  1105. package/dist/ionic/p-d8c138d9.entry.js +0 -4
  1106. package/dist/ionic/p-dd01be0a.entry.js +0 -4
  1107. package/dist/ionic/p-e7f4b1e0.entry.js +0 -4
  1108. package/dist/ionic/p-ec00fd0d.entry.js +0 -4
  1109. package/dist/ionic/p-ee09ac9d.entry.js +0 -4
  1110. package/dist/ionic/p-efc0cf82.entry.js +0 -4
  1111. package/dist/ionic/p-f0fb23c1.entry.js +0 -4
  1112. package/dist/ionic/p-f83b3e0c.entry.js +0 -4
  1113. package/dist/ionic/p-fa50d493.entry.js +0 -4
  1114. package/dist/ionic/p-fe9ed9bd.entry.js +0 -4
  1115. package/dist/ionic/p-zWf7R2xV.js +0 -4
  1116. /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-DXoo08JC.js');
7
- var hardwareBackButton = require('./hardware-back-button-Bu4Dzw8l.js');
8
- var ionicGlobal = require('./ionic-global-CYJNT-2P.js');
9
- var helpers = require('./helpers-7wzdhdeg.js');
6
+ var index = require('./index-BsDPqfGS.js');
7
+ var focusVisible = require('./focus-visible-BIj-I3-C.js');
8
+ var ionicGlobal = require('./ionic-global-BaVLW54G.js');
9
+ var helpers = require('./helpers-DFJMw-qZ.js');
10
10
  var dir = require('./dir-zwDPRE5K.js');
11
- var theme = require('./theme-Bw0rpaNN.js');
12
- var index$1 = require('./index-DtvKGwdh.js');
13
- var keyboardController = require('./keyboard-controller-PtZoN2GS.js');
11
+ var theme = require('./theme-Cy4joHPt.js');
12
+ var index$1 = require('./index-DWP810QI.js');
13
+ var scrollHideController = require('./scroll-hide-controller-DQ9ulQ11.js');
14
14
  var cubicBezier = require('./cubic-bezier-DAjy1V-e.js');
15
- var frameworkDelegate = require('./framework-delegate-d-fWfeI6.js');
15
+ var frameworkDelegate = require('./framework-delegate-Dmce7iqZ.js');
16
16
  var lockController = require('./lock-controller-aDB9wrEf.js');
17
- var index$2 = require('./index-CQfEIyLK.js');
18
- require('./index-DkNv4J_i.js');
19
- require('./keyboard-cHxZlTyz.js');
20
- require('./capacitor-DmA66EwP.js');
17
+ var index$2 = require('./index-BoQA7njo.js');
18
+ require('./keyboard-9uOUQmB-.js');
19
+ require('./capacitor-w_r4U-_S.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-C74Q3t6a.js'); }).then((module) => module.startTapClick(index.config));
34
- }
35
- if (index.config.getBoolean('statusTap', isHybrid)) {
36
- Promise.resolve().then(function () { return require('./status-tap-CNP5eD1R.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-VJIiKBKv.js'); }).then((module) => module.startInputShims(index.config, platform));
45
- }
46
- const hardwareBackButtonModule = await Promise.resolve().then(function () { return require('./hardware-back-button-Bu4Dzw8l.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-Cix5TVkD.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, { key: '9551c759df407b10d809171641fc6e8f14d92219', role: isMainContent ? 'main' : undefined, class: theme.createColorClasses(this.color, {
573
- [mode]: true,
504
+ return (index.h(index.Host, { 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 {
@@ -613,7 +545,8 @@ const getPageElement = (el) => {
613
545
  * between the popover and the edges of the screen. But if the popover contains
614
546
  * its own page element, we should use that instead.
615
547
  */
616
- const page = el.closest('ion-app, ion-page, .ion-page, page-inner, .popover-content');
548
+ const appRootSelector = index.config.get('appRootSelector', 'ion-app');
549
+ const page = el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner, .popover-content`);
617
550
  if (page) {
618
551
  return page;
619
552
  }
@@ -677,45 +610,90 @@ const handleFooterFade = (scrollEl, baseEl) => {
677
610
  });
678
611
  };
679
612
 
680
- 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}`;
613
+ 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}`;
681
614
 
682
- 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}`;
615
+ 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}`;
616
+
617
+ 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}`;
683
618
 
684
619
  const Footer = class {
685
620
  constructor(hostRef) {
686
621
  index.registerInstance(this, hostRef);
687
622
  this.keyboardCtrl = null;
688
623
  this.keyboardCtrlPromise = null;
624
+ this.scrollHideCtrlPromise = null;
625
+ this.hasWarnedCollapse = false;
626
+ this.fadeSetupId = 0;
689
627
  this.keyboardVisible = false;
690
628
  /**
691
629
  * If `true`, the footer will be translucent.
692
- * Only applies when the mode is `"ios"` and the device supports
630
+ * Only applies when the theme is `"ios"` and the device supports
693
631
  * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
694
632
  *
695
633
  * Note: In order to scroll content behind the footer, the `fullscreen`
696
634
  * attribute needs to be set on the content.
697
635
  */
698
636
  this.translucent = false;
699
- this.checkCollapsibleFooter = () => {
700
- const mode = ionicGlobal.getIonMode(this);
701
- if (mode !== 'ios') {
637
+ this.checkCollapsibleFooter = async () => {
638
+ const { scrollEffect, collapse } = this;
639
+ if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
640
+ this.hasWarnedCollapse = true;
641
+ index.printIonWarning(`[ion-footer] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-footer scroll-effect="${collapse}">`, this.el);
642
+ }
643
+ const effect = scrollEffect ?? collapse;
644
+ // Skip teardown/rebuild if the effect hasn't changed.
645
+ // This prevents keyboard toggles (which trigger re-renders via
646
+ // @State keyboardVisible) from destroying the scroll controller
647
+ // and resetting isHidden.
648
+ if (effect === this.activeEffect) {
702
649
  return;
703
650
  }
704
- const { collapse } = this;
705
- const hasFade = collapse === 'fade';
651
+ const hasHide = effect === 'hide';
652
+ const hasFade = effect === 'fade';
706
653
  this.destroyCollapsibleFooter();
707
- if (hasFade) {
708
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
709
- const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
654
+ const appRootSelector = index.config.get('appRootSelector', 'ion-app');
655
+ const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
656
+ const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
657
+ if (hasHide && contentEl) {
658
+ this.activeEffect = effect;
659
+ await this.setupScrollEffectHide(contentEl);
660
+ return;
661
+ }
662
+ // fade via the deprecated `collapse` prop is iOS-only.
663
+ // fade via the new `scrollEffect` prop works in all themes.
664
+ const isModeRestricted = scrollEffect === undefined && ionicGlobal.getIonTheme(this) !== 'ios';
665
+ if (hasFade && !isModeRestricted) {
710
666
  if (!contentEl) {
711
667
  index$1.printIonContentErrorMsg(this.el);
712
668
  return;
713
669
  }
714
670
  this.setupFadeFooter(contentEl);
671
+ this.activeEffect = effect;
672
+ }
673
+ };
674
+ this.setupScrollEffectHide = async (contentEl) => {
675
+ const setupPromise = scrollHideController.createScrollHideController(contentEl, {
676
+ el: this.el,
677
+ cssVar: '--internal-footer-hide-height',
678
+ hiddenClass: 'footer-scroll-hidden',
679
+ contentPartnerClass: 'content-footer-hide-scroll-partner',
680
+ contentHiddenClass: 'content-footer-hide-scroll-hidden',
681
+ });
682
+ this.scrollHideCtrlPromise = setupPromise;
683
+ const controller = await setupPromise;
684
+ if (this.scrollHideCtrlPromise === setupPromise) {
685
+ this.scrollHideCtrlPromise = null;
686
+ controller.init();
687
+ this.scrollHideCtrl = controller;
715
688
  }
716
689
  };
717
690
  this.setupFadeFooter = async (contentEl) => {
718
- const scrollEl = (this.scrollEl = await index$1.getScrollElement(contentEl));
691
+ const setupId = ++this.fadeSetupId;
692
+ const scrollEl = await index$1.getScrollElement(contentEl);
693
+ if (this.fadeSetupId !== setupId) {
694
+ return;
695
+ }
696
+ this.scrollEl = scrollEl;
719
697
  /**
720
698
  * Handle fading of toolbars on scroll
721
699
  */
@@ -733,7 +711,7 @@ const Footer = class {
733
711
  this.checkCollapsibleFooter();
734
712
  }
735
713
  async connectedCallback() {
736
- const promise = keyboardController.createKeyboardController(async (keyboardOpen, waitForResize) => {
714
+ const promise = scrollHideController.createKeyboardController(async (keyboardOpen, waitForResize) => {
737
715
  /**
738
716
  * If the keyboard is hiding, then we need to wait
739
717
  * for the webview to resize. Otherwise, the footer
@@ -760,6 +738,7 @@ const Footer = class {
760
738
  }
761
739
  }
762
740
  disconnectedCallback() {
741
+ this.destroyCollapsibleFooter();
763
742
  if (this.keyboardCtrlPromise) {
764
743
  this.keyboardCtrlPromise.then((ctrl) => ctrl.destroy());
765
744
  this.keyboardCtrlPromise = null;
@@ -770,29 +749,43 @@ const Footer = class {
770
749
  }
771
750
  }
772
751
  destroyCollapsibleFooter() {
752
+ this.activeEffect = undefined;
753
+ this.fadeSetupId++;
754
+ this.scrollHideCtrlPromise = null;
755
+ if (this.scrollHideCtrl) {
756
+ this.scrollHideCtrl.destroy();
757
+ this.scrollHideCtrl = undefined;
758
+ }
773
759
  if (this.scrollEl && this.contentScrollCallback) {
774
760
  this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
775
761
  this.contentScrollCallback = undefined;
776
762
  }
777
763
  }
778
764
  render() {
779
- const { translucent, collapse } = this;
780
- const mode = ionicGlobal.getIonMode(this);
765
+ const { translucent, scrollEffect, collapse } = this;
766
+ const theme = ionicGlobal.getIonTheme(this);
767
+ const effect = scrollEffect ?? collapse;
768
+ // fade via the deprecated `collapse` prop is iOS-only.
769
+ const isModeRestricted = scrollEffect === undefined && theme !== 'ios';
770
+ const hasHide = effect === 'hide';
771
+ const hasFade = effect === 'fade' && !isModeRestricted;
781
772
  const tabs = this.el.closest('ion-tabs');
782
773
  const tabBar = tabs?.querySelector(':scope > ion-tab-bar');
783
- return (index.h(index.Host, { key: '71939c4bbaef5062532a99ee2e33574102a9abad', role: "contentinfo", class: {
784
- [mode]: true,
774
+ return (index.h(index.Host, { key: 'a0777b4a639d22e15374879f018efcf589e756f8', role: "contentinfo", class: {
775
+ [theme]: true,
785
776
  // Used internally for styling
786
- [`footer-${mode}`]: true,
777
+ [`footer-${theme}`]: true,
787
778
  [`footer-translucent`]: translucent,
788
- [`footer-translucent-${mode}`]: translucent,
779
+ [`footer-translucent-${theme}`]: translucent,
789
780
  ['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
790
- [`footer-collapse-${collapse}`]: collapse !== undefined,
791
- } }, mode === 'ios' && translucent && index.h("div", { key: '2fa14f61661c47c661cecd696176728d6eafa74f', class: "footer-background" }), index.h("slot", { key: '8e63696e7c528d5c38201e546bf08135290d0945' })));
781
+ 'footer-collapse-fade': hasFade,
782
+ 'footer-scroll-effect-hide': hasHide,
783
+ } }, theme === 'ios' && translucent && index.h("div", { key: 'd78b46870cbf11c95b066d649c04ec398b66e614', class: "footer-background" }), index.h("slot", { key: '9dc34787cd29597fe1b1198db317602014ac1483' })));
792
784
  }
793
785
  get el() { return index.getElement(this); }
794
786
  };
795
787
  Footer.style = {
788
+ ionic: ionicFooterMdCss(),
796
789
  ios: footerIosCss(),
797
790
  md: footerMdCss()
798
791
  };
@@ -850,7 +843,7 @@ const setToolbarBackgroundOpacity = (headerEl, opacity) => {
850
843
  * has collapsed, so it is handled
851
844
  * by handleHeaderFade()
852
845
  */
853
- if (headerEl.collapse === 'fade') {
846
+ if ((headerEl.scrollEffect ?? headerEl.collapse) === 'fade') {
854
847
  return;
855
848
  }
856
849
  if (opacity === undefined) {
@@ -1008,46 +1001,69 @@ const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
1008
1001
  * Get the role type for the ion-header.
1009
1002
  *
1010
1003
  * @param isInsideMenu If ion-header is inside ion-menu.
1011
- * @param isCondensed If ion-header has collapse="condense".
1012
- * @param mode The current mode.
1013
- * @returns 'none' if inside ion-menu or if condensed in md
1014
- * mode, otherwise 'banner'.
1004
+ * @returns 'none' if inside ion-menu, otherwise 'banner'.
1005
+ * Condensed headers start as 'banner' and have their role
1006
+ * toggled dynamically by setHeaderActive() on scroll.
1015
1007
  */
1016
- const getRoleType = (isInsideMenu, isCondensed, mode) => {
1008
+ const getRoleType = (isInsideMenu) => {
1017
1009
  // If the header is inside a menu, it should not have the banner role.
1018
1010
  if (isInsideMenu) {
1019
1011
  return ROLE_NONE;
1020
1012
  }
1021
- /**
1022
- * Only apply role="none" to `md` mode condensed headers
1023
- * since the large header is never shown.
1024
- */
1025
- if (isCondensed && mode === 'md') {
1026
- return ROLE_NONE;
1027
- }
1028
1013
  // Default to banner role.
1029
1014
  return ROLE_BANNER;
1030
1015
  };
1031
1016
 
1032
- 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}`;
1017
+ 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}}`;
1018
+
1019
+ 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}`;
1033
1020
 
1034
- 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 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}`;
1035
1022
 
1036
1023
  const Header = class {
1037
1024
  constructor(hostRef) {
1038
1025
  index.registerInstance(this, hostRef);
1039
1026
  this.inheritedAttributes = {};
1027
+ this.scrollHideCtrlPromise = null;
1028
+ this.hasWarnedCollapse = false;
1029
+ this.fadeCondenseSetupId = 0;
1030
+ /**
1031
+ * If `true`, the header will have a line at the bottom.
1032
+ * TODO(ROU-10855): add support for this prop on ios/md themes
1033
+ */
1034
+ this.divider = false;
1040
1035
  /**
1041
1036
  * If `true`, the header will be translucent.
1042
- * Only applies when the mode is `"ios"` and the device supports
1037
+ * Only applies when the theme is `"ios"` or `"ionic"` and the device supports
1043
1038
  * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
1044
1039
  *
1045
1040
  * Note: In order to scroll content behind the header, the `fullscreen`
1046
1041
  * attribute needs to be set on the content.
1047
1042
  */
1048
1043
  this.translucent = false;
1044
+ this.setupScrollEffectHide = async (contentEl) => {
1045
+ const setupPromise = scrollHideController.createScrollHideController(contentEl, {
1046
+ el: this.el,
1047
+ cssVar: '--internal-header-hide-height',
1048
+ hiddenClass: 'header-scroll-hidden',
1049
+ contentPartnerClass: 'content-header-hide-scroll-partner',
1050
+ contentHiddenClass: 'content-header-hide-scroll-hidden',
1051
+ });
1052
+ this.scrollHideCtrlPromise = setupPromise;
1053
+ const controller = await setupPromise;
1054
+ if (this.scrollHideCtrlPromise === setupPromise) {
1055
+ this.scrollHideCtrlPromise = null;
1056
+ controller.init();
1057
+ this.scrollHideCtrl = controller;
1058
+ }
1059
+ };
1049
1060
  this.setupFadeHeader = async (contentEl, condenseHeader) => {
1050
- const scrollEl = (this.scrollEl = await index$1.getScrollElement(contentEl));
1061
+ const setupId = ++this.fadeCondenseSetupId;
1062
+ const scrollEl = await index$1.getScrollElement(contentEl);
1063
+ if (this.fadeCondenseSetupId !== setupId) {
1064
+ return;
1065
+ }
1066
+ this.scrollEl = scrollEl;
1051
1067
  /**
1052
1068
  * Handle fading of toolbars on scroll
1053
1069
  */
@@ -1071,37 +1087,63 @@ const Header = class {
1071
1087
  this.destroyCollapsibleHeader();
1072
1088
  }
1073
1089
  async checkCollapsibleHeader() {
1074
- const mode = ionicGlobal.getIonMode(this);
1075
- if (mode !== 'ios') {
1090
+ const { scrollEffect, collapse } = this;
1091
+ if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
1092
+ this.hasWarnedCollapse = true;
1093
+ index.printIonWarning(`[ion-header] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-header scroll-effect="${collapse}">`, this.el);
1094
+ }
1095
+ const effect = scrollEffect ?? collapse;
1096
+ // Skip teardown/rebuild if the effect hasn't changed.
1097
+ // This prevents re-renders from destroying the scroll controller
1098
+ // and resetting isHidden.
1099
+ if (effect === this.activeEffect) {
1076
1100
  return;
1077
1101
  }
1078
- const { collapse } = this;
1079
- const hasCondense = collapse === 'condense';
1080
- const hasFade = collapse === 'fade';
1102
+ const hasHide = effect === 'hide';
1103
+ const hasCondense = effect === 'condense';
1104
+ const hasFade = effect === 'fade';
1081
1105
  this.destroyCollapsibleHeader();
1082
- if (hasCondense) {
1083
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
1084
- const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
1106
+ const appRootSelector = index.config.get('appRootSelector', 'ion-app');
1107
+ const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
1108
+ const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
1109
+ if (hasHide && contentEl) {
1110
+ this.activeEffect = effect;
1111
+ await this.setupScrollEffectHide(contentEl);
1112
+ return;
1113
+ }
1114
+ // condense/fade via the deprecated `collapse` prop are iOS-only.
1115
+ // condense/fade via the new `scrollEffect` prop work in all themes.
1116
+ const isModeRestricted = scrollEffect === undefined && ionicGlobal.getIonTheme(this) !== 'ios';
1117
+ if (hasCondense && !isModeRestricted) {
1085
1118
  // Cloned elements are always needed in iOS transition
1086
1119
  index.writeTask(() => {
1087
1120
  const title = cloneElement('ion-title');
1088
1121
  title.size = 'large';
1089
1122
  cloneElement('ion-back-button');
1090
1123
  });
1091
- await this.setupCondenseHeader(contentEl, pageEl);
1124
+ const didSetup = await this.setupCondenseHeader(contentEl, pageEl);
1125
+ if (didSetup) {
1126
+ this.activeEffect = effect;
1127
+ }
1092
1128
  }
1093
- else if (hasFade) {
1094
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
1095
- const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
1129
+ else if (hasFade && !isModeRestricted) {
1096
1130
  if (!contentEl) {
1097
1131
  index$1.printIonContentErrorMsg(this.el);
1098
1132
  return;
1099
1133
  }
1100
- const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
1134
+ const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"],ion-header[scroll-effect="condense"]');
1135
+ this.activeEffect = effect;
1101
1136
  await this.setupFadeHeader(contentEl, condenseHeader);
1102
1137
  }
1103
1138
  }
1104
1139
  destroyCollapsibleHeader() {
1140
+ this.activeEffect = undefined;
1141
+ this.fadeCondenseSetupId++;
1142
+ this.scrollHideCtrlPromise = null;
1143
+ if (this.scrollHideCtrl) {
1144
+ this.scrollHideCtrl.destroy();
1145
+ this.scrollHideCtrl = undefined;
1146
+ }
1105
1147
  if (this.intersectionObserver) {
1106
1148
  this.intersectionObserver.disconnect();
1107
1149
  this.intersectionObserver = undefined;
@@ -1118,21 +1160,39 @@ const Header = class {
1118
1160
  async setupCondenseHeader(contentEl, pageEl) {
1119
1161
  if (!contentEl || !pageEl) {
1120
1162
  index$1.printIonContentErrorMsg(this.el);
1121
- return;
1163
+ return false;
1122
1164
  }
1123
1165
  if (typeof IntersectionObserver === 'undefined') {
1124
- return;
1166
+ return false;
1167
+ }
1168
+ const setupId = ++this.fadeCondenseSetupId;
1169
+ const scrollEl = await index$1.getScrollElement(contentEl);
1170
+ if (this.fadeCondenseSetupId !== setupId) {
1171
+ return false;
1172
+ }
1173
+ this.scrollEl = scrollEl;
1174
+ /**
1175
+ * The condense effect requires an ion-title with size="large"
1176
+ * in the condense header. Without it, there is nothing to
1177
+ * collapse into the main header toolbar.
1178
+ */
1179
+ const hasLargeTitle = this.el.querySelector('ion-title[size="large"]') !== null;
1180
+ if (!hasLargeTitle) {
1181
+ index.printIonWarning('[ion-header] - The condense scroll effect requires an <ion-title size="large"> in the condense header.', this.el);
1182
+ return false;
1125
1183
  }
1126
- this.scrollEl = await index$1.getScrollElement(contentEl);
1127
1184
  const headers = pageEl.querySelectorAll('ion-header');
1128
- this.collapsibleMainHeader = Array.from(headers).find((header) => header.collapse !== 'condense');
1185
+ this.collapsibleMainHeader = Array.from(headers).find((header) => {
1186
+ const effect = header.scrollEffect ?? header.collapse;
1187
+ return effect !== 'condense';
1188
+ });
1129
1189
  if (!this.collapsibleMainHeader) {
1130
- return;
1190
+ return false;
1131
1191
  }
1132
1192
  const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);
1133
1193
  const scrollHeaderIndex = createHeaderIndex(this.el);
1134
1194
  if (!mainHeaderIndex || !scrollHeaderIndex) {
1135
- return;
1195
+ return false;
1136
1196
  }
1137
1197
  setHeaderActive(mainHeaderIndex, false);
1138
1198
  setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);
@@ -1164,31 +1224,45 @@ const Header = class {
1164
1224
  this.collapsibleMainHeader.classList.add('header-collapse-main');
1165
1225
  }
1166
1226
  });
1227
+ return true;
1167
1228
  }
1168
1229
  render() {
1169
- const { translucent, inheritedAttributes } = this;
1170
- const mode = ionicGlobal.getIonMode(this);
1171
- const collapse = this.collapse || 'none';
1172
- const isCondensed = collapse === 'condense';
1230
+ const { translucent, inheritedAttributes, divider, scrollEffect, collapse } = this;
1231
+ const theme$1 = ionicGlobal.getIonTheme(this);
1232
+ const effect = scrollEffect ?? collapse;
1233
+ // condense/fade via the deprecated `collapse` prop are iOS-only.
1234
+ const isModeRestricted = scrollEffect === undefined && theme$1 !== 'ios';
1235
+ const hasHide = effect === 'hide';
1236
+ const hasCondense = effect === 'condense' && !isModeRestricted && this.el.querySelector('ion-title[size="large"]') !== null;
1237
+ const hasFade = effect === 'fade' && !isModeRestricted;
1238
+ // The condense header should be hidden when
1239
+ // - deprecated collapse prop is used on non-iOS (mode restricted), or
1240
+ // - scrollEffect="condense" is set but no ion-title[size="large"] is present
1241
+ const isHiddenCondense = effect === 'condense' && !hasCondense;
1173
1242
  // banner role must be at top level, so remove role if inside a menu
1174
- const roleType = getRoleType(theme.hostContext('ion-menu', this.el), isCondensed, mode);
1175
- return (index.h(index.Host, { key: '863c4568cd7b8c0ec55109f193bbbaed68a1346e', role: roleType, class: {
1176
- [mode]: true,
1243
+ const roleType = isHiddenCondense ? 'none' : getRoleType(theme.hostContext('ion-menu', this.el));
1244
+ return (index.h(index.Host, { key: '09f60ca014bb7b3a85d3c0a94e7989d5dbc43f46', role: roleType, class: {
1245
+ [theme$1]: true,
1177
1246
  // Used internally for styling
1178
- [`header-${mode}`]: true,
1247
+ [`header-${theme$1}`]: true,
1179
1248
  [`header-translucent`]: this.translucent,
1180
- [`header-collapse-${collapse}`]: true,
1181
- [`header-translucent-${mode}`]: this.translucent,
1182
- }, ...inheritedAttributes }, mode === 'ios' && translucent && index.h("div", { key: '25c3bdce328b0b35607d154c8b8374679313d881', class: "header-background" }), index.h("slot", { key: 'b44fab0a9be7920b9650da26117c783e751e1702' })));
1249
+ ['header-collapse-condense']: hasCondense,
1250
+ ['header-collapse-condense-hidden']: isHiddenCondense,
1251
+ ['header-collapse-fade']: hasFade,
1252
+ [`header-translucent-${theme$1}`]: this.translucent,
1253
+ ['header-divider']: divider,
1254
+ 'header-scroll-effect-hide': hasHide,
1255
+ }, ...inheritedAttributes }, theme$1 !== 'md' && translucent && index.h("div", { key: 'fd5ff245ae0166e5e1d50936cacc98c90625db48', class: "header-background" }), index.h("slot", { key: '1baa31af87b9eb6406a21073ec65afa191dfbb3d' })));
1183
1256
  }
1184
1257
  get el() { return index.getElement(this); }
1185
1258
  };
1186
1259
  Header.style = {
1260
+ ionic: headerIonicCss(),
1187
1261
  ios: headerIosCss(),
1188
1262
  md: headerMdCss()
1189
1263
  };
1190
1264
 
1191
- const routerOutletCss = () => `:host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
1265
+ const routerOutletCss = () => `:host{right:0;left:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
1192
1266
 
1193
1267
  const RouterOutlet = class {
1194
1268
  constructor(hostRef) {
@@ -1199,7 +1273,7 @@ const RouterOutlet = class {
1199
1273
  this.lockController = lockController.createLockController();
1200
1274
  this.gestureOrAnimationInProgress = false;
1201
1275
  /**
1202
- * The mode determines which platform styles to use.
1276
+ * The mode determines the platform behaviors of the component.
1203
1277
  */
1204
1278
  this.mode = ionicGlobal.getIonMode(this);
1205
1279
  /**
@@ -1220,7 +1294,7 @@ const RouterOutlet = class {
1220
1294
  this.swipeHandler.onStart();
1221
1295
  }
1222
1296
  };
1223
- this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-BYb_nLJe.js'); })).createSwipeBackGesture(this.el, () => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart(), () => onStart(), (step) => this.ani?.progressStep(step), (shouldComplete, step, dur) => {
1297
+ this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-BIbF7bVy.js'); })).createSwipeBackGesture(this.el, () => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart(), () => onStart(), (step) => this.ani?.progressStep(step), (shouldComplete, step, dur) => {
1224
1298
  if (this.ani) {
1225
1299
  this.ani.onFinish(() => {
1226
1300
  this.gestureOrAnimationInProgress = false;
@@ -1382,7 +1456,7 @@ const RouterOutlet = class {
1382
1456
  return true;
1383
1457
  }
1384
1458
  render() {
1385
- return index.h("slot", { key: '249e7d8a063c781db52fa535e42d648c7bf2909a' });
1459
+ return index.h("slot", { key: '7d8d23f014629831caf7fceaa36cbcef2fffb4bd' });
1386
1460
  }
1387
1461
  get el() { return index.getElement(this); }
1388
1462
  static get watchers() { return {
@@ -1396,9 +1470,11 @@ const RouterOutlet = class {
1396
1470
  };
1397
1471
  RouterOutlet.style = routerOutletCss();
1398
1472
 
1399
- 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)}}`;
1473
+ 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}`;
1474
+
1475
+ 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)}}`;
1400
1476
 
1401
- 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}`;
1477
+ 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}`;
1402
1478
 
1403
1479
  const ToolbarTitle = class {
1404
1480
  constructor(hostRef) {
@@ -1421,13 +1497,13 @@ const ToolbarTitle = class {
1421
1497
  return this.size !== undefined ? this.size : 'default';
1422
1498
  }
1423
1499
  render() {
1424
- const mode = ionicGlobal.getIonMode(this);
1500
+ const theme$1 = ionicGlobal.getIonTheme(this);
1425
1501
  const size = this.getSize();
1426
- return (index.h(index.Host, { key: 'c5f0b913ff0a22d9bf02da48a313a613c2ac8fe7', class: theme.createColorClasses(this.color, {
1427
- [mode]: true,
1502
+ return (index.h(index.Host, { key: '0d59a262a77d8c338f6e0dd03cd7bdfabea81491', class: theme.createColorClasses(this.color, {
1503
+ [theme$1]: true,
1428
1504
  [`title-${size}`]: true,
1429
1505
  'title-rtl': document.dir === 'rtl',
1430
- }) }, index.h("div", { key: '5253b9e39fb764bfe1e57370719139f8a83e9904', class: "toolbar-title" }, index.h("slot", { key: 'e38b1eccb0175c36f8cab211aee7ce4d61fc9035' }))));
1506
+ }) }, index.h("div", { key: '7666f10764ac8c017ce827c3cf81c26b73b6c37b', class: "toolbar-title" }, index.h("slot", { key: 'a3e46affecea26185c83cb39a41c8442201e71e8' }))));
1431
1507
  }
1432
1508
  get el() { return index.getElement(this); }
1433
1509
  static get watchers() { return {
@@ -1437,18 +1513,29 @@ const ToolbarTitle = class {
1437
1513
  }; }
1438
1514
  };
1439
1515
  ToolbarTitle.style = {
1516
+ ionic: titleIonicCss(),
1440
1517
  ios: titleIosCss(),
1441
1518
  md: titleMdCss()
1442
1519
  };
1443
1520
 
1444
- 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%}`;
1521
+ 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}`;
1445
1522
 
1446
- 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}`;
1523
+ 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%}`;
1524
+
1525
+ 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}`;
1447
1526
 
1448
1527
  const Toolbar = class {
1449
1528
  constructor(hostRef) {
1450
1529
  index.registerInstance(this, hostRef);
1451
1530
  this.childrenStyles = new Map();
1531
+ this.slotClasses = [
1532
+ 'has-start-content',
1533
+ 'has-end-content',
1534
+ 'has-primary-content',
1535
+ 'has-secondary-content',
1536
+ ];
1537
+ this.showClasses = ['show-start', 'show-end', 'show-primary', 'show-secondary'];
1538
+ this.slotSizeVars = ['--start-end-size', '--primary-secondary-size'];
1452
1539
  }
1453
1540
  componentWillLoad() {
1454
1541
  const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));
@@ -1465,6 +1552,170 @@ const Toolbar = class {
1465
1552
  if (lastButtons) {
1466
1553
  lastButtons.classList.add('buttons-last-slot');
1467
1554
  }
1555
+ this.updateSlotClasses();
1556
+ }
1557
+ componentDidLoad() {
1558
+ this.updateSlotClasses();
1559
+ this.updateSlotWidths();
1560
+ }
1561
+ titlePlacementChanged() {
1562
+ this.updateSlotClasses();
1563
+ }
1564
+ /**
1565
+ * Gets the title placement.
1566
+ * Returns the title placement if it is set, otherwise returns `"center"`
1567
+ * for `ionic` and `ios`, and `"start"` for `md`.
1568
+ */
1569
+ getTitlePlacement() {
1570
+ if (this.titlePlacement !== undefined) {
1571
+ return this.titlePlacement;
1572
+ }
1573
+ return ionicGlobal.getIonTheme(this) === 'ionic' || ionicGlobal.getIonTheme(this) === 'ios' ? 'center' : 'start';
1574
+ }
1575
+ /**
1576
+ * Updates the CSS custom properties for slot widths
1577
+ * This ensures that slots shown by their met conditions
1578
+ * have a minimum width matching their required slot
1579
+ */
1580
+ updateSlotWidths(tries = 0) {
1581
+ // Set timeout to try to execute after everything is rendered
1582
+ setTimeout(() => {
1583
+ // Attempt to measure and update
1584
+ const success = this.measureAndUpdateSlots();
1585
+ // If not all measurements were successful, try again in 100 ms
1586
+ // cap recursion at 5 tries for safety
1587
+ if (!success && tries < 5) {
1588
+ setTimeout(() => {
1589
+ this.updateSlotWidths(tries + 1);
1590
+ }, 100);
1591
+ }
1592
+ });
1593
+ }
1594
+ /**
1595
+ * Measure the widths of the slots and update the CSS custom properties
1596
+ * for the minimum width of each pair of slots based on the largest width in each pair.
1597
+ * Returns whether we successfully measured all of the slots we expect to have content.
1598
+ * If not, the content probably hasn't rendered yet and we need to try again.
1599
+ */
1600
+ measureAndUpdateSlots() {
1601
+ // Define the relationship between slots based on the conditions array
1602
+ // Group slots that should have the same width
1603
+ const slotPairs = [
1604
+ { name: 'start-end', slots: ['start', 'end'] },
1605
+ { name: 'primary-secondary', slots: ['primary', 'secondary'] },
1606
+ ];
1607
+ // First, measure all slot widths
1608
+ const slotWidths = new Map();
1609
+ let allMeasurementsSuccessful = true;
1610
+ // Measure all slots with content
1611
+ const slots = ['start', 'end', 'primary', 'secondary'];
1612
+ slots.forEach((slot) => {
1613
+ if (this.el.classList.contains(`has-${slot}-content`)) {
1614
+ const slotElement = this.el.shadowRoot?.querySelector(`slot[name="${slot}"]`);
1615
+ if (slotElement) {
1616
+ // Check if the slot contains an img or ion-img
1617
+ const assignedElements = slotElement.assignedElements({ flatten: true });
1618
+ const hasImg = assignedElements.some((el) => {
1619
+ if (el.tagName === 'IMG' || el.tagName === 'ION-IMG') {
1620
+ return true;
1621
+ }
1622
+ // Check for nested images
1623
+ return el.querySelector('img, ion-img') !== null;
1624
+ });
1625
+ // Temporarily allow slot to size to content by setting flex-basis
1626
+ // to 'auto'. This ensures that slotted images can render at their
1627
+ // intrinsic width for measurement.
1628
+ if (hasImg) {
1629
+ const { name } = slotPairs.find((pair) => pair.slots.includes(slot));
1630
+ this.el.style.setProperty(`--${name}-size`, 'auto');
1631
+ }
1632
+ const width = slotElement.offsetWidth;
1633
+ if (width > 0) {
1634
+ slotWidths.set(slot, width);
1635
+ }
1636
+ else {
1637
+ allMeasurementsSuccessful = false;
1638
+ }
1639
+ }
1640
+ }
1641
+ });
1642
+ // Then set the CSS custom properties based on the largest width in each pair
1643
+ slotPairs.forEach(({ name, slots }) => {
1644
+ // Find the maximum width among the slots in this pair
1645
+ let maxWidth = 0;
1646
+ let hasAnyContent = false;
1647
+ slots.forEach((slot) => {
1648
+ if (slotWidths.has(slot)) {
1649
+ hasAnyContent = true;
1650
+ maxWidth = Math.max(maxWidth, slotWidths.get(slot) ?? 0);
1651
+ }
1652
+ });
1653
+ // If at least one slot in the pair has content, set the min-width for the pair
1654
+ if (hasAnyContent && maxWidth > 0) {
1655
+ // Set a single CSS variable for the pair
1656
+ this.el.style.setProperty(`--${name}-size`, `${maxWidth}px`);
1657
+ }
1658
+ });
1659
+ return allMeasurementsSuccessful;
1660
+ }
1661
+ /**
1662
+ * Removes all slot visibility classes and slot width CSS variables.
1663
+ */
1664
+ removeSlotClasses() {
1665
+ this.el.classList.remove(...this.slotClasses, ...this.showClasses);
1666
+ this.slotSizeVars.forEach((cssVar) => this.el.style.removeProperty(cssVar));
1667
+ }
1668
+ updateSlotClasses() {
1669
+ const titlePlacement = this.getTitlePlacement();
1670
+ if (titlePlacement !== 'center') {
1671
+ this.removeSlotClasses();
1672
+ return;
1673
+ }
1674
+ // Check if slots have content
1675
+ const slots = ['start', 'end', 'primary', 'secondary'];
1676
+ const classesToAdd = [];
1677
+ const classesToRemove = [];
1678
+ slots.forEach((slot) => {
1679
+ const slotHasContent = this.hasSlotContent(slot);
1680
+ const slotClass = `has-${slot}-content`;
1681
+ if (slotHasContent) {
1682
+ classesToAdd.push(slotClass);
1683
+ }
1684
+ else {
1685
+ classesToRemove.push(slotClass);
1686
+ }
1687
+ });
1688
+ // Force visibilities in certain conditions. This works by adding a class to the toolbar
1689
+ // named `show-{slot}`. This class will be added if the toolbar has the required slots
1690
+ // and does not have any of the excluded slots, otherwise it will be removed.
1691
+ // This is useful to enforce centering of the toolbar content when there are different amounts
1692
+ // of slots on either side of the toolbar.
1693
+ const conditions = [
1694
+ { name: 'end', requiredSlots: ['start'], excludeSlots: ['end', 'primary'] },
1695
+ { name: 'start', requiredSlots: ['end'], excludeSlots: ['start', 'secondary'] },
1696
+ { name: 'secondary', requiredSlots: ['primary'], excludeSlots: ['secondary', 'start'] },
1697
+ { name: 'primary', requiredSlots: ['secondary'], excludeSlots: ['primary', 'end'] },
1698
+ ];
1699
+ conditions.forEach((condition) => {
1700
+ const hasRequiredSlots = condition.requiredSlots.every((slot) => classesToAdd.includes(`has-${slot}-content`));
1701
+ const hasExcludedSlots = condition.excludeSlots.some((slot) => classesToAdd.includes(`has-${slot}-content`));
1702
+ const className = `show-${condition.name}`;
1703
+ if (hasRequiredSlots && !hasExcludedSlots) {
1704
+ classesToAdd.push(className);
1705
+ }
1706
+ else {
1707
+ classesToRemove.push(className);
1708
+ }
1709
+ });
1710
+ // Add classes to the toolbar element
1711
+ this.el.classList.add(...classesToAdd);
1712
+ this.el.classList.remove(...classesToRemove);
1713
+ // Update slot widths after classes have been updated
1714
+ this.updateSlotWidths();
1715
+ }
1716
+ hasSlotContent(slotName) {
1717
+ const slotNode = this.el.shadowRoot?.querySelector(`slot[name="${slotName}"]`);
1718
+ return !!slotNode && slotNode.assignedNodes().length > 0;
1468
1719
  }
1469
1720
  childrenStyle(ev) {
1470
1721
  ev.stopPropagation();
@@ -1489,22 +1740,30 @@ const Toolbar = class {
1489
1740
  }
1490
1741
  }
1491
1742
  render() {
1492
- const mode = ionicGlobal.getIonMode(this);
1743
+ const theme$1 = ionicGlobal.getIonTheme(this);
1493
1744
  const childStyles = {};
1494
- this.childrenStyles.forEach((value) => {
1495
- Object.assign(childStyles, value);
1745
+ this.childrenStyles.forEach((style) => {
1746
+ Object.assign(childStyles, style);
1496
1747
  });
1497
- return (index.h(index.Host, { key: 'c16803dc4eae9972ef19bf43aa74b94feb4fd4c1', class: {
1498
- ...childStyles,
1748
+ const titlePlacement = this.getTitlePlacement();
1749
+ return (index.h(index.Host, { key: '642c8e5813e8f6c8164905d2f951407b0b204d47', class: {
1499
1750
  ...theme.createColorClasses(this.color, {
1500
- [mode]: true,
1751
+ [theme$1]: true,
1501
1752
  'in-toolbar': theme.hostContext('ion-toolbar', this.el),
1753
+ [`toolbar-title-placement-${titlePlacement}`]: true,
1502
1754
  }),
1503
- } }, index.h("div", { key: '20e3f85844c94b8399c245d2df125e6ab678d681', class: "toolbar-background", part: "background" }), index.h("div", { key: '12f09e324e8d9130b9d30c493106b500233fb016', class: "toolbar-container", part: "container" }, index.h("slot", { key: '6da0fe99ee0c4d7c969712e2908a4e7e6be5ed2c', name: "start" }), index.h("slot", { key: '177c346d6dcabb7857d810cda7d25c6dde32e6e2', name: "secondary" }), index.h("div", { key: '8c921b415940c71bf4c1a2c5c6887f36ad1afd16', class: "toolbar-content", part: "content" }, index.h("slot", { key: '1f2976b80d967bd51e86ed1357b363271d655df2' })), index.h("slot", { key: '0f7618044a7e8b0d9b715a8e208070f7ef2ee4c8', name: "primary" }), index.h("slot", { key: '125c393197e0660a3c2638dd4628c41ef7e05f19', name: "end" }))));
1755
+ ...childStyles,
1756
+ } }, index.h("div", { key: '6eb233aee80d46cbd807ba2291635ae3e9b21061', class: "toolbar-background", part: "background" }), index.h("div", { key: '781045c0f7a39ca78c5ca62e28e2c6783f7fcebf', class: "toolbar-container", part: "container" }, index.h("slot", { key: 'b15f81d53459ec8025b25c099096c6cdf569611f', name: "start", onSlotchange: () => this.updateSlotClasses }), index.h("slot", { key: 'c3204e0de1f7408e459154a04eb6d0eb5e569165', name: "secondary", onSlotchange: () => this.updateSlotClasses }), index.h("div", { key: 'a3674b28c55f9c62993e99109257c91b6360e001', class: "toolbar-content", part: "content" }, index.h("slot", { key: '80bf9e4305e2962f3b3ec300a3b8ef8006f18d78' })), index.h("slot", { key: '3bdc1b80ba028914efe0e0b3eda5af1aa6e178c5', name: "primary", onSlotchange: () => this.updateSlotClasses }), index.h("slot", { key: 'e2ad4237188f4bd0f132d015c07432f13a9f27ce', name: "end", onSlotchange: () => this.updateSlotClasses }))));
1504
1757
  }
1505
1758
  get el() { return index.getElement(this); }
1759
+ static get watchers() { return {
1760
+ "titlePlacement": [{
1761
+ "titlePlacementChanged": 0
1762
+ }]
1763
+ }; }
1506
1764
  };
1507
1765
  Toolbar.style = {
1766
+ ionic: toolbarIonicCss(),
1508
1767
  ios: toolbarIosCss(),
1509
1768
  md: toolbarMdCss()
1510
1769
  };