@ionic/core 8.8.9-dev.11780414486.1df2bd72 → 8.8.9-dev.11780493937.17fe092d

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 (1118) 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.d.ts +11 -0
  33. package/components/ion-gallery.js +4 -0
  34. package/components/ion-grid.js +1 -1
  35. package/components/ion-header.js +1 -1
  36. package/components/ion-icon.js +1 -1
  37. package/components/ion-img.js +1 -1
  38. package/components/ion-infinite-scroll-content.js +1 -1
  39. package/components/ion-infinite-scroll.js +1 -1
  40. package/components/ion-input-otp.js +1 -1
  41. package/components/ion-input-password-toggle.js +1 -1
  42. package/components/ion-input.js +1 -1
  43. package/components/ion-item-divider.js +1 -1
  44. package/components/ion-item-group.js +1 -1
  45. package/components/ion-item-option.js +1 -1
  46. package/components/ion-item-options.js +1 -1
  47. package/components/ion-item-sliding.js +1 -1
  48. package/components/ion-item.js +1 -1
  49. package/components/ion-label.js +1 -1
  50. package/components/ion-list-header.js +1 -1
  51. package/components/ion-list.js +1 -1
  52. package/components/ion-loading.js +1 -1
  53. package/components/ion-menu-button.js +1 -1
  54. package/components/ion-menu-toggle.js +1 -1
  55. package/components/ion-menu.js +1 -1
  56. package/components/ion-modal.js +1 -1
  57. package/components/ion-nav-link.js +1 -1
  58. package/components/ion-nav.js +1 -1
  59. package/components/ion-note.js +1 -1
  60. package/components/ion-picker-column-option.js +1 -1
  61. package/components/ion-picker-column.js +1 -1
  62. package/components/ion-picker-legacy-column.d.ts +11 -0
  63. package/components/ion-picker-legacy-column.js +4 -0
  64. package/components/ion-picker-legacy.d.ts +11 -0
  65. package/components/ion-picker-legacy.js +4 -0
  66. package/components/ion-picker.js +1 -1
  67. package/components/ion-popover.js +1 -1
  68. package/components/ion-progress-bar.js +1 -1
  69. package/components/ion-radio-group.js +1 -1
  70. package/components/ion-radio.js +1 -1
  71. package/components/ion-range.js +1 -1
  72. package/components/ion-refresher-content.js +1 -1
  73. package/components/ion-refresher.js +1 -1
  74. package/components/ion-reorder-group.js +1 -1
  75. package/components/ion-reorder.js +1 -1
  76. package/components/ion-ripple-effect.js +1 -1
  77. package/components/ion-route-redirect.js +1 -1
  78. package/components/ion-route.js +1 -1
  79. package/components/ion-router-link.js +1 -1
  80. package/components/ion-router-outlet.js +1 -1
  81. package/components/ion-router.js +1 -1
  82. package/components/ion-row.js +1 -1
  83. package/components/ion-searchbar.js +1 -1
  84. package/components/ion-segment-button.js +1 -1
  85. package/components/ion-segment-content.js +1 -1
  86. package/components/ion-segment-view.js +1 -1
  87. package/components/ion-segment.js +1 -1
  88. package/components/ion-select-modal.js +1 -1
  89. package/components/ion-select-option.js +1 -1
  90. package/components/ion-select-popover.js +1 -1
  91. package/components/ion-select.js +1 -1
  92. package/components/ion-skeleton-text.js +1 -1
  93. package/components/ion-spinner.js +1 -1
  94. package/components/ion-split-pane.js +1 -1
  95. package/components/ion-tab-bar.js +1 -1
  96. package/components/ion-tab-button.js +1 -1
  97. package/components/ion-tab.js +1 -1
  98. package/components/ion-tabs.js +1 -1
  99. package/components/ion-text.js +1 -1
  100. package/components/ion-textarea.js +1 -1
  101. package/components/ion-thumbnail.js +1 -1
  102. package/components/ion-title.js +1 -1
  103. package/components/ion-toast.js +1 -1
  104. package/components/ion-toggle.js +1 -1
  105. package/components/ion-toolbar.js +1 -1
  106. package/components/p-3Ni1Z654.js +4 -0
  107. package/components/p-B9MABkWm.js +4 -0
  108. package/components/p-BBu2n-9C.js +4 -0
  109. package/components/p-BDcohALy.js +4 -0
  110. package/components/p-BDqjX7Z_.js +4 -0
  111. package/components/p-BF5oFX1I.js +4 -0
  112. package/components/p-BJzJdLry.js +4 -0
  113. package/components/p-BYSs-jZz.js +4 -0
  114. package/components/p-BZCB7f49.js +4 -0
  115. package/components/p-BaPtaYEC.js +4 -0
  116. package/components/{p-Sh0ICmPV.js → p-BcbmT6b3.js} +1 -1
  117. package/components/p-Bg30AtDZ.js +4 -0
  118. package/components/p-BhkGOA7t.js +4 -0
  119. package/components/p-BjW8SOqw.js +4 -0
  120. package/components/p-Bk9hTY4h.js +4 -0
  121. package/components/p-BqDiJgC_.js +4 -0
  122. package/components/p-BsNpz2u3.js +4 -0
  123. package/components/p-Bt0d89x3.js +4 -0
  124. package/components/p-BwKpO3Is.js +4 -0
  125. package/components/p-BwQOIWD7.js +4 -0
  126. package/components/{p-D5Ubpm7D.js → p-ByW0kK1F.js} +1 -1
  127. package/components/p-C0U8YqYW.js +4 -0
  128. package/components/p-C75FIZBC.js +4 -0
  129. package/components/p-C8kBejTT.js +4 -0
  130. package/components/p-CBS0sBAa.js +4 -0
  131. package/{dist/ionic/p-VAemlbDS.js → components/p-CDgDBcU9.js} +1 -1
  132. package/components/p-CPm7KgOP.js +4 -0
  133. package/components/p-Cg-xpJhD.js +4 -0
  134. package/components/p-CgSn4J7d.js +4 -0
  135. package/components/p-CgZLVOCc.js +4 -0
  136. package/{dist/ionic/p-D13Eaw-8.js → components/p-Cllkut-B.js} +1 -1
  137. package/{dist/ionic/p-DzWaWHGc.js → components/p-Cmql_g3_.js} +1 -1
  138. package/components/p-CpFORZud.js +4 -0
  139. package/components/p-Cz4uz3Dy.js +4 -0
  140. package/components/p-CzC_ZSgb.js +4 -0
  141. package/components/p-D1t981Ih.js +4 -0
  142. package/components/p-D2mReIu8.js +4 -0
  143. package/components/p-D6g8ud1e.js +4 -0
  144. package/components/p-DAXhdEp5.js +4 -0
  145. package/components/p-DCS3n7Uq.js +4 -0
  146. package/components/p-DDw-NYxz.js +4 -0
  147. package/components/p-DN_scBC7.js +4 -0
  148. package/components/p-DVcs-2q3.js +4 -0
  149. package/components/{p-DNQI6d-L.js → p-DXehWlOr.js} +1 -1
  150. package/components/p-DaJxRxSQ.js +4 -0
  151. package/components/p-Dhi5xtNS.js +4 -0
  152. package/components/p-Do7NMUwR.js +4 -0
  153. package/components/p-Dp2x0MpA.js +4 -0
  154. package/components/p-GElQZ38c.js +4 -0
  155. package/components/p-GtzfsjJP.js +4 -0
  156. package/components/p-IYdTEyGb.js +4 -0
  157. package/components/p-Skz67GXZ.js +4 -0
  158. package/components/p-XegQjlzJ.js +4 -0
  159. package/components/p-d77Zk1DK.js +4 -0
  160. package/components/p-fIOYmaqA.js +4 -0
  161. package/components/p-hdGd8ben.js +4 -0
  162. package/components/p-hpwmNJ2Q.js +4 -0
  163. package/components/p-kKYBfhbe.js +4 -0
  164. package/components/p-lGSe6-vg.js +4 -0
  165. package/components/{p-BAYYcg3o.js → p-oF-CwZ0b.js} +1 -1
  166. package/components/p-pvh0bjpw.js +4 -0
  167. package/components/{p-cyNmxje6.js → p-re70ahxF.js} +1 -1
  168. package/components/p-sToA4Co7.js +4 -0
  169. package/components/p-vXpMhGrs.js +4 -0
  170. package/components/{p-ijF0iCrA.js → p-wCDzv5Q8.js} +1 -1
  171. package/components/{p-DqLB8yFQ.js → p-zWP0sUV_.js} +1 -1
  172. package/css/core.css +1 -1
  173. package/css/core.css.map +1 -1
  174. package/css/display.css +1 -1
  175. package/css/display.css.map +1 -1
  176. package/css/flex-utils.css +1 -1
  177. package/css/flex-utils.css.map +1 -1
  178. package/css/float-elements.css.map +1 -1
  179. package/css/global.bundle.css.map +1 -1
  180. package/css/ionic/bundle.ionic.css +1 -0
  181. package/css/ionic/bundle.ionic.css.map +1 -0
  182. package/css/ionic/core.ionic.css +1 -0
  183. package/css/ionic/core.ionic.css.map +1 -0
  184. package/css/ionic/global.bundle.ionic.css +1 -0
  185. package/css/ionic/global.bundle.ionic.css.map +1 -0
  186. package/css/ionic/ionic-swiper.ionic.css +1 -0
  187. package/css/ionic/ionic-swiper.ionic.css.map +1 -0
  188. package/css/ionic/link.ionic.css +1 -0
  189. package/css/ionic/link.ionic.css.map +1 -0
  190. package/css/ionic/structure.ionic.css +1 -0
  191. package/css/ionic/structure.ionic.css.map +1 -0
  192. package/css/ionic/typography.ionic.css +1 -0
  193. package/css/ionic/typography.ionic.css.map +1 -0
  194. package/css/ionic/utils.bundle.ionic.css +1 -0
  195. package/css/ionic/utils.bundle.ionic.css.map +1 -0
  196. package/css/ionic-swiper.css +1 -1
  197. package/css/ionic-swiper.css.map +1 -1
  198. package/css/ionic.bundle.css +1 -1
  199. package/css/ionic.bundle.css.map +1 -1
  200. package/css/normalize.css.map +1 -1
  201. package/css/padding.css.map +1 -1
  202. package/css/palettes/dark.always.css.map +1 -1
  203. package/css/palettes/dark.class.css.map +1 -1
  204. package/css/palettes/dark.system.css.map +1 -1
  205. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  206. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  207. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  208. package/css/palettes/high-contrast.always.css.map +1 -1
  209. package/css/palettes/high-contrast.class.css.map +1 -1
  210. package/css/palettes/high-contrast.system.css.map +1 -1
  211. package/css/structure.css.map +1 -1
  212. package/css/text-alignment.css.map +1 -1
  213. package/css/text-transformation.css.map +1 -1
  214. package/css/typography.css.map +1 -1
  215. package/css/utils.bundle.css +1 -1
  216. package/css/utils.bundle.css.map +1 -1
  217. package/dist/cjs/{animation-BJq0kcy2.js → animation-BZJ2wKuM.js} +3 -3
  218. package/dist/cjs/{app-globals-BlqrqKTN.js → app-globals-C-d5fQ35.js} +1 -1
  219. package/dist/cjs/{button-active-0mPOKmV2.js → button-active-B_20Nxkv.js} +2 -2
  220. package/dist/cjs/{capacitor-DmA66EwP.js → capacitor-CXqhdZym.js} +3 -3
  221. package/dist/cjs/caret-down-vtVgfXIs.js +8 -0
  222. package/dist/cjs/caret-left-CxZXLRv5.js +8 -0
  223. package/dist/cjs/caret-right-CRCgv98E.js +8 -0
  224. package/dist/cjs/config-DWdFbSNK.js +35 -0
  225. package/dist/cjs/{data-DLTUw-KF.js → data-DuOuKG7I.js} +6 -6
  226. package/dist/cjs/{focus-visible-CCvKiLh3.js → focus-visible-BIj-I3-C.js} +24 -0
  227. package/dist/cjs/{framework-delegate-BtICZDHr.js → framework-delegate-Dx9FrqAC.js} +4 -2
  228. package/dist/cjs/{haptic-ClPPQ_PS.js → haptic-CQJGW58i.js} +1 -1
  229. package/dist/cjs/{helpers-Cv23MFHM.js → helpers-DJYxKN5U.js} +57 -4
  230. package/dist/cjs/{config-xninhj0J.js → index-BJlwOs11.js} +1 -31
  231. package/dist/cjs/{index-CIrkNXqJ.js → index-BJrpF9T3.js} +2 -2
  232. package/dist/cjs/{index-aC4x3Fk3.js → index-BekUBS8C.js} +15 -15
  233. package/dist/cjs/{index-DqmRDbxg.js → index-CgAbCW6L.js} +2 -0
  234. package/dist/cjs/{index-D81eLYUM.js → index-CwxYd6UD.js} +9 -8
  235. package/dist/cjs/{index-Ct7gcRif.js → index-CzcLEdQ5.js} +64 -71
  236. package/dist/cjs/{index-BERfRao3.js → index-DSNlrgfO.js} +4 -4
  237. package/dist/cjs/index.cjs.js +17 -16
  238. package/dist/cjs/{input-shims-CFLg7uzj.js → input-shims-VyZciSxi.js} +18 -17
  239. package/dist/cjs/{input.utils-DetjmtH2.js → input.utils-Ct5KzpYv.js} +5 -5
  240. package/dist/cjs/ion-accordion_2.cjs.entry.js +61 -29
  241. package/dist/cjs/ion-action-sheet.cjs.entry.js +41 -26
  242. package/dist/cjs/ion-alert.cjs.entry.js +62 -45
  243. package/dist/cjs/ion-app_8.cjs.entry.js +568 -189
  244. package/dist/cjs/ion-avatar_3.cjs.entry.js +125 -13
  245. package/dist/cjs/ion-back-button.cjs.entry.js +31 -22
  246. package/dist/cjs/ion-backdrop.cjs.entry.js +10 -7
  247. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +54 -18
  248. package/dist/cjs/ion-button_2.cjs.entry.js +59 -22
  249. package/dist/cjs/ion-card_5.cjs.entry.js +55 -33
  250. package/dist/cjs/ion-checkbox.cjs.entry.js +34 -16
  251. package/dist/cjs/ion-chip.cjs.entry.js +50 -9
  252. package/dist/cjs/ion-col_3.cjs.entry.js +56 -57
  253. package/dist/cjs/ion-datetime-button.cjs.entry.js +13 -9
  254. package/dist/cjs/{ion-datetime.cjs.entry.js → ion-datetime_3.cjs.entry.js} +742 -29
  255. package/dist/cjs/ion-divider.cjs.entry.js +51 -0
  256. package/dist/cjs/ion-fab_3.cjs.entry.js +44 -28
  257. package/dist/cjs/ion-gallery.cjs.entry.js +510 -0
  258. package/dist/cjs/ion-img.cjs.entry.js +8 -4
  259. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +93 -17
  260. package/dist/cjs/ion-input-otp.cjs.entry.js +74 -9
  261. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +53 -15
  262. package/dist/cjs/ion-input.cjs.entry.js +125 -35
  263. package/dist/cjs/ion-item-option_3.cjs.entry.js +467 -52
  264. package/dist/cjs/ion-item_8.cjs.entry.js +116 -49
  265. package/dist/cjs/ion-loading.cjs.entry.js +22 -23
  266. package/dist/cjs/ion-menu_3.cjs.entry.js +47 -29
  267. package/dist/cjs/ion-modal.cjs.entry.js +262 -142
  268. package/dist/cjs/ion-nav_2.cjs.entry.js +14 -11
  269. package/dist/cjs/ion-picker-column-option.cjs.entry.js +12 -8
  270. package/dist/cjs/ion-picker-column.cjs.entry.js +14 -14
  271. package/dist/cjs/ion-picker.cjs.entry.js +10 -6
  272. package/dist/cjs/ion-popover.cjs.entry.js +21 -23
  273. package/dist/cjs/ion-progress-bar.cjs.entry.js +27 -9
  274. package/dist/cjs/ion-radio_2.cjs.entry.js +35 -17
  275. package/dist/cjs/ion-range.cjs.entry.js +20 -13
  276. package/dist/cjs/ion-refresher_2.cjs.entry.js +42 -23
  277. package/dist/cjs/ion-reorder_2.cjs.entry.js +39 -15
  278. package/dist/cjs/ion-ripple-effect.cjs.entry.js +15 -7
  279. package/dist/cjs/ion-route_4.cjs.entry.js +10 -9
  280. package/dist/cjs/ion-searchbar.cjs.entry.js +138 -25
  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 +97 -40
  285. package/dist/cjs/ion-select_3.cjs.entry.js +453 -115
  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 +147 -23
  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 +137 -23
  292. package/dist/cjs/ion-toast.cjs.entry.js +71 -47
  293. package/dist/cjs/ion-toggle.cjs.entry.js +84 -27
  294. package/dist/cjs/ionic-global-BW5tRzrz.js +519 -0
  295. package/dist/cjs/ionic.cjs.js +5 -5
  296. package/dist/cjs/{ios.transition-BOSWOaiK.js → ios.transition-CyNNpj1i.js} +7 -5
  297. package/dist/cjs/{keyboard-hHzlEQpk.js → keyboard-CA6RtoWx.js} +4 -3
  298. package/dist/cjs/{keyboard-UuAS4D_9.js → keyboard-VLGMzWBE.js} +1 -1
  299. package/dist/cjs/{keyboard-controller-GXBiBRKS.js → keyboard-controller-CCTvHp9l.js} +11 -9
  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-B8-wBZqt.js → md.transition-BEfrfWKW.js} +6 -5
  303. package/dist/cjs/{notch-controller-18PzRGXd.js → notch-controller-BTZCPOsd.js} +4 -4
  304. package/dist/cjs/{overlays-DSmSrd_4.js → overlays-BuMIwR8B.js} +117 -42
  305. package/dist/cjs/select-option-render-C7klBX2H.js +81 -0
  306. package/dist/cjs/{status-tap-BXX8H8_Y.js → status-tap-CTY2dMsZ.js} +4 -3
  307. package/dist/cjs/{swipe-back-C0GCB18x.js → swipe-back-jJFi5KCB.js} +3 -2
  308. package/dist/cjs/{theme-CeDs6Hcv.js → theme-IlOsGAz7.js} +25 -1
  309. package/dist/cjs/validity-QmuwEptc.js +51 -0
  310. package/dist/cjs/x-BTF99yFH.js +8 -0
  311. package/dist/collection/collection-manifest.json +13 -3
  312. package/dist/collection/components/accordion/accordion.ionic.css +201 -0
  313. package/dist/collection/components/accordion/accordion.ios.css +73 -58
  314. package/dist/collection/components/accordion/accordion.js +41 -27
  315. package/dist/collection/components/accordion/accordion.md.css +67 -59
  316. package/dist/collection/components/accordion-group/accordion-group.ionic.css +93 -0
  317. package/dist/collection/components/accordion-group/accordion-group.ios.css +16 -4
  318. package/dist/collection/components/accordion-group/accordion-group.js +44 -8
  319. package/dist/collection/components/accordion-group/accordion-group.md.css +22 -4
  320. package/dist/collection/components/action-sheet/action-sheet.ionic.css +834 -0
  321. package/dist/collection/components/action-sheet/action-sheet.ios.css +102 -6
  322. package/dist/collection/components/action-sheet/action-sheet.js +33 -18
  323. package/dist/collection/components/action-sheet/action-sheet.md.css +101 -5
  324. package/dist/collection/components/alert/alert.ionic.css +1165 -0
  325. package/dist/collection/components/alert/alert.ios.css +102 -1
  326. package/dist/collection/components/alert/alert.js +52 -35
  327. package/dist/collection/components/alert/alert.md.css +102 -1
  328. package/dist/collection/components/app/app.js +15 -83
  329. package/dist/collection/components/avatar/avatar.ionic.css +391 -0
  330. package/dist/collection/components/avatar/avatar.ios.css +7 -33
  331. package/dist/collection/components/avatar/avatar.js +120 -4
  332. package/dist/collection/components/avatar/avatar.md.css +51 -0
  333. package/dist/collection/components/back-button/back-button.ios.css +60 -48
  334. package/dist/collection/components/back-button/back-button.js +27 -19
  335. package/dist/collection/components/back-button/back-button.md.css +60 -48
  336. package/dist/collection/components/backdrop/backdrop.ionic.css +109 -0
  337. package/dist/collection/components/backdrop/backdrop.ios.css +56 -19
  338. package/dist/collection/components/backdrop/backdrop.js +12 -6
  339. package/dist/collection/components/backdrop/backdrop.md.css +56 -19
  340. package/dist/collection/components/badge/badge.ionic.css +275 -0
  341. package/dist/collection/components/badge/badge.ios.css +139 -12
  342. package/dist/collection/components/badge/badge.js +145 -9
  343. package/dist/collection/components/badge/badge.md.css +123 -12
  344. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +20 -8
  345. package/dist/collection/components/breadcrumb/breadcrumb.js +43 -11
  346. package/dist/collection/components/breadcrumb/breadcrumb.md.css +20 -8
  347. package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +6 -0
  348. package/dist/collection/components/breadcrumbs/breadcrumbs.js +11 -9
  349. package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +6 -0
  350. package/dist/collection/components/button/button.ionic.css +646 -0
  351. package/dist/collection/components/button/button.ios.css +154 -46
  352. package/dist/collection/components/button/button.js +63 -27
  353. package/dist/collection/components/button/button.md.css +150 -50
  354. package/dist/collection/components/buttons/buttons.ionic.css +97 -0
  355. package/dist/collection/components/buttons/buttons.ios.css +59 -7
  356. package/dist/collection/components/buttons/buttons.js +15 -9
  357. package/dist/collection/components/buttons/buttons.md.css +55 -3
  358. package/dist/collection/components/card/card.ionic.css +144 -0
  359. package/dist/collection/components/card/card.ios.css +65 -14
  360. package/dist/collection/components/card/card.js +41 -10
  361. package/dist/collection/components/card/card.md.css +65 -14
  362. package/dist/collection/components/card-content/card-content.ionic.css +89 -0
  363. package/dist/collection/components/card-content/card-content.ios.css +20 -35
  364. package/dist/collection/components/card-content/card-content.js +12 -10
  365. package/dist/collection/components/card-content/card-content.md.css +20 -35
  366. package/dist/collection/components/card-header/card-header.ionic.css +85 -0
  367. package/dist/collection/components/card-header/card-header.ios.css +27 -15
  368. package/dist/collection/components/card-header/card-header.js +13 -10
  369. package/dist/collection/components/card-header/card-header.md.css +27 -15
  370. package/dist/collection/components/card-subtitle/card-subtitle.ionic.css +144 -0
  371. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +12 -0
  372. package/dist/collection/components/card-subtitle/card-subtitle.js +11 -8
  373. package/dist/collection/components/card-subtitle/card-subtitle.md.css +12 -0
  374. package/dist/collection/components/card-title/card-title.ios.css +73 -0
  375. package/dist/collection/components/card-title/card-title.js +11 -8
  376. package/dist/collection/components/card-title/card-title.md.css +73 -0
  377. package/dist/collection/components/checkbox/checkbox.ionic.css +539 -0
  378. package/dist/collection/components/checkbox/checkbox.ios.css +161 -101
  379. package/dist/collection/components/checkbox/checkbox.js +70 -14
  380. package/dist/collection/components/checkbox/checkbox.md.css +162 -102
  381. package/dist/collection/components/chip/chip.ionic.css +217 -0
  382. package/dist/collection/components/chip/chip.ios.css +67 -14
  383. package/dist/collection/components/chip/chip.js +108 -8
  384. package/dist/collection/components/chip/chip.md.css +67 -14
  385. package/dist/collection/components/col/col.css +192 -4
  386. package/dist/collection/components/col/col.js +211 -61
  387. package/dist/collection/components/content/content.css +64 -2
  388. package/dist/collection/components/content/content.js +16 -11
  389. package/dist/collection/components/datetime/datetime.ionic.css +703 -0
  390. package/dist/collection/components/datetime/datetime.ios.css +302 -106
  391. package/dist/collection/components/datetime/datetime.js +98 -20
  392. package/dist/collection/components/datetime/datetime.md.css +293 -96
  393. package/dist/collection/components/datetime/utils/data.js +5 -5
  394. package/dist/collection/components/datetime-button/datetime-button.ios.css +6 -0
  395. package/dist/collection/components/datetime-button/datetime-button.js +11 -8
  396. package/dist/collection/components/datetime-button/datetime-button.md.css +6 -0
  397. package/dist/collection/components/divider/divider.ionic.css +148 -0
  398. package/dist/collection/components/divider/divider.ios.css +87 -0
  399. package/dist/collection/components/divider/divider.js +94 -0
  400. package/dist/collection/components/divider/divider.md.css +87 -0
  401. package/dist/collection/components/fab/fab.css +25 -1
  402. package/dist/collection/components/fab/fab.js +9 -5
  403. package/dist/collection/components/fab-button/fab-button.ios.css +18 -6
  404. package/dist/collection/components/fab-button/fab-button.js +36 -21
  405. package/dist/collection/components/fab-button/fab-button.md.css +20 -8
  406. package/dist/collection/components/fab-list/fab-list.css +12 -0
  407. package/dist/collection/components/fab-list/fab-list.js +9 -5
  408. package/dist/collection/components/footer/footer.ios.css +27 -2
  409. package/dist/collection/components/footer/footer.js +80 -28
  410. package/dist/collection/components/footer/footer.md.css +25 -0
  411. package/dist/collection/components/footer/footer.utils.js +9 -0
  412. package/dist/collection/components/gallery/gallery-constants.js +12 -0
  413. package/dist/collection/components/gallery/gallery-interface.js +1 -0
  414. package/dist/collection/components/gallery/gallery.css +100 -0
  415. package/dist/collection/components/gallery/gallery.js +595 -0
  416. package/dist/collection/components/gallery/test/utils.js +100 -0
  417. package/dist/collection/components/grid/grid.css +12 -0
  418. package/dist/collection/components/grid/grid.js +9 -5
  419. package/dist/collection/components/header/header.ionic.css +172 -0
  420. package/dist/collection/components/header/header.ios.css +93 -3
  421. package/dist/collection/components/header/header.js +87 -26
  422. package/dist/collection/components/header/header.md.css +91 -1
  423. package/dist/collection/components/header/header.utils.js +14 -5
  424. package/dist/collection/components/img/img.js +8 -2
  425. package/dist/collection/components/infinite-scroll/infinite-scroll.js +100 -5
  426. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +12 -0
  427. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +16 -10
  428. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +12 -0
  429. package/dist/collection/components/input/input.ionic.css +889 -0
  430. package/dist/collection/components/input/input.ios.css +223 -135
  431. package/dist/collection/components/input/input.js +153 -42
  432. package/dist/collection/components/input/input.md.css +193 -207
  433. package/dist/collection/components/input-otp/input-otp.ionic.css +371 -0
  434. package/dist/collection/components/input-otp/input-otp.ios.css +105 -60
  435. package/dist/collection/components/input-otp/input-otp.js +73 -6
  436. package/dist/collection/components/input-otp/input-otp.md.css +105 -60
  437. package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +78 -0
  438. package/dist/collection/components/input-password-toggle/input-password-toggle.js +48 -12
  439. package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +61 -0
  440. package/dist/collection/components/item/item.ionic.css +508 -0
  441. package/dist/collection/components/item/item.ios.css +109 -69
  442. package/dist/collection/components/item/item.js +51 -20
  443. package/dist/collection/components/item/item.md.css +120 -68
  444. package/dist/collection/components/item-divider/item-divider.ios.css +18 -0
  445. package/dist/collection/components/item-divider/item-divider.js +11 -8
  446. package/dist/collection/components/item-divider/item-divider.md.css +18 -0
  447. package/dist/collection/components/item-group/item-group.ios.css +12 -0
  448. package/dist/collection/components/item-group/item-group.js +13 -7
  449. package/dist/collection/components/item-group/item-group.md.css +12 -0
  450. package/dist/collection/components/item-option/item-option.ionic.css +278 -0
  451. package/dist/collection/components/item-option/item-option.ios.css +136 -29
  452. package/dist/collection/components/item-option/item-option.js +73 -9
  453. package/dist/collection/components/item-option/item-option.md.css +136 -29
  454. package/dist/collection/components/item-options/item-options.ionic.css +221 -0
  455. package/dist/collection/components/item-options/item-options.ios.css +77 -34
  456. package/dist/collection/components/item-options/item-options.js +13 -7
  457. package/dist/collection/components/item-options/item-options.md.css +77 -34
  458. package/dist/collection/components/item-sliding/item-sliding.ionic.css +211 -0
  459. package/dist/collection/components/item-sliding/item-sliding.js +421 -35
  460. package/dist/collection/components/item-sliding/{item-sliding.css → item-sliding.native.css} +84 -9
  461. package/dist/collection/components/item-sliding/test/test.utils.js +13 -0
  462. package/dist/collection/components/label/label.ios.css +18 -0
  463. package/dist/collection/components/label/label.js +11 -8
  464. package/dist/collection/components/label/label.md.css +18 -0
  465. package/dist/collection/components/list/list.ionic.css +212 -0
  466. package/dist/collection/components/list/list.ios.css +54 -14
  467. package/dist/collection/components/list/list.js +48 -9
  468. package/dist/collection/components/list/list.md.css +56 -16
  469. package/dist/collection/components/list-header/list-header.ionic.css +190 -0
  470. package/dist/collection/components/list-header/list-header.ios.css +82 -38
  471. package/dist/collection/components/list-header/list-header.js +11 -8
  472. package/dist/collection/components/list-header/list-header.md.css +82 -38
  473. package/dist/collection/components/loading/loading.ios.css +13 -1
  474. package/dist/collection/components/loading/loading.js +15 -16
  475. package/dist/collection/components/loading/loading.md.css +13 -1
  476. package/dist/collection/components/menu/menu.ios.css +15 -3
  477. package/dist/collection/components/menu/menu.js +12 -7
  478. package/dist/collection/components/menu/menu.md.css +15 -3
  479. package/dist/collection/components/menu-button/menu-button.ionic.css +236 -0
  480. package/dist/collection/components/menu-button/menu-button.ios.css +48 -14
  481. package/dist/collection/components/menu-button/menu-button.js +26 -10
  482. package/dist/collection/components/menu-button/menu-button.md.css +49 -15
  483. package/dist/collection/components/menu-toggle/menu-toggle.js +8 -5
  484. package/dist/collection/components/modal/animations/ionic.enter.js +40 -0
  485. package/dist/collection/components/modal/animations/ionic.leave.js +28 -0
  486. package/dist/collection/components/modal/animations/sheet.js +8 -2
  487. package/dist/collection/components/modal/gestures/sheet.js +76 -10
  488. package/dist/collection/components/modal/modal.ionic.css +247 -0
  489. package/dist/collection/components/modal/modal.ios.css +178 -70
  490. package/dist/collection/components/modal/modal.js +51 -17
  491. package/dist/collection/components/modal/modal.md.css +178 -70
  492. package/dist/collection/components/nav/nav.css +7 -1
  493. package/dist/collection/components/nav/nav.js +11 -5
  494. package/dist/collection/components/nav-link/nav-link.js +5 -1
  495. package/dist/collection/components/note/note.ios.css +12 -0
  496. package/dist/collection/components/note/note.js +11 -8
  497. package/dist/collection/components/note/note.md.css +12 -0
  498. package/dist/collection/components/picker/picker.ios.css +15 -3
  499. package/dist/collection/components/picker/picker.js +8 -5
  500. package/dist/collection/components/picker/picker.md.css +15 -3
  501. package/dist/collection/components/picker-column/picker-column.css +9 -2
  502. package/dist/collection/components/picker-column/picker-column.js +8 -7
  503. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +6 -0
  504. package/dist/collection/components/picker-column-option/picker-column-option.js +13 -7
  505. package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -0
  506. package/dist/collection/components/picker-legacy/animations/ios.enter.js +27 -0
  507. package/dist/collection/components/picker-legacy/animations/ios.leave.js +23 -0
  508. package/dist/collection/components/picker-legacy/picker-interface.js +1 -0
  509. package/dist/collection/components/picker-legacy/picker.ios.css +312 -0
  510. package/dist/collection/components/picker-legacy/picker.js +891 -0
  511. package/dist/collection/components/picker-legacy/picker.md.css +299 -0
  512. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +243 -0
  513. package/dist/collection/components/picker-legacy-column/picker-column.js +422 -0
  514. package/dist/collection/components/picker-legacy-column/picker-column.md.css +234 -0
  515. package/dist/collection/components/picker-legacy-column/test/test.utils.js +43 -0
  516. package/dist/collection/components/popover/popover.ionic.css +290 -0
  517. package/dist/collection/components/popover/popover.ios.css +29 -1
  518. package/dist/collection/components/popover/popover.js +19 -20
  519. package/dist/collection/components/popover/popover.md.css +29 -1
  520. package/dist/collection/components/progress-bar/progress-bar.ionic.css +287 -0
  521. package/dist/collection/components/progress-bar/progress-bar.ios.css +48 -17
  522. package/dist/collection/components/progress-bar/progress-bar.js +43 -7
  523. package/dist/collection/components/progress-bar/progress-bar.md.css +48 -17
  524. package/dist/collection/components/radio/radio.ionic.css +422 -0
  525. package/dist/collection/components/radio/radio.ios.css +134 -91
  526. package/dist/collection/components/radio/radio.js +15 -10
  527. package/dist/collection/components/radio/radio.md.css +134 -91
  528. package/dist/collection/components/radio-group/radio-group.ionic.css +119 -0
  529. package/dist/collection/components/radio-group/radio-group.ios.css +43 -19
  530. package/dist/collection/components/radio-group/radio-group.js +48 -7
  531. package/dist/collection/components/radio-group/radio-group.md.css +43 -19
  532. package/dist/collection/components/range/range.ionic.css +567 -0
  533. package/dist/collection/components/range/range.ios.css +128 -85
  534. package/dist/collection/components/range/range.js +16 -10
  535. package/dist/collection/components/range/range.md.css +128 -85
  536. package/dist/collection/components/refresher/refresher.ios.css +14 -1
  537. package/dist/collection/components/refresher/refresher.js +11 -8
  538. package/dist/collection/components/refresher/refresher.md.css +15 -2
  539. package/dist/collection/components/refresher-content/refresher-content.js +28 -7
  540. package/dist/collection/components/reorder/reorder.ios.css +6 -0
  541. package/dist/collection/components/reorder/reorder.js +33 -6
  542. package/dist/collection/components/reorder/reorder.md.css +6 -0
  543. package/dist/collection/components/reorder-group/reorder-group.css +6 -0
  544. package/dist/collection/components/reorder-group/reorder-group.js +8 -4
  545. package/dist/collection/components/ripple-effect/{ripple-effect.css → ripple-effect.common.css} +7 -1
  546. package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +215 -0
  547. package/dist/collection/components/ripple-effect/ripple-effect.js +14 -6
  548. package/dist/collection/components/route/route.js +4 -0
  549. package/dist/collection/components/router/router.js +4 -0
  550. package/dist/collection/components/router-link/router-link.css +8 -2
  551. package/dist/collection/components/router-link/router-link.js +9 -5
  552. package/dist/collection/components/router-outlet/router-outlet.css +7 -1
  553. package/dist/collection/components/router-outlet/router-outlet.js +10 -40
  554. package/dist/collection/components/row/row.css +16 -0
  555. package/dist/collection/components/row/row.js +9 -2
  556. package/dist/collection/components/searchbar/searchbar.ionic.css +626 -0
  557. package/dist/collection/components/searchbar/searchbar.ios.css +56 -18
  558. package/dist/collection/components/searchbar/searchbar.js +185 -38
  559. package/dist/collection/components/searchbar/searchbar.md.css +56 -18
  560. package/dist/collection/components/segment/segment.ionic.css +115 -0
  561. package/dist/collection/components/segment/segment.ios.css +45 -2
  562. package/dist/collection/components/segment/segment.js +11 -8
  563. package/dist/collection/components/segment/segment.md.css +45 -2
  564. package/dist/collection/components/segment-button/segment-button.ionic.css +353 -0
  565. package/dist/collection/components/segment-button/segment-button.ios.css +146 -105
  566. package/dist/collection/components/segment-button/segment-button.js +11 -8
  567. package/dist/collection/components/segment-button/segment-button.md.css +148 -107
  568. package/dist/collection/components/segment-content/segment-content.js +1 -1
  569. package/dist/collection/components/segment-view/segment-view.ios.css +6 -0
  570. package/dist/collection/components/segment-view/segment-view.js +13 -4
  571. package/dist/collection/components/segment-view/segment-view.md.css +6 -0
  572. package/dist/collection/components/select/select.ionic.css +810 -0
  573. package/dist/collection/components/select/select.ios.css +348 -176
  574. package/dist/collection/components/select/select.js +434 -97
  575. package/dist/collection/components/select/select.md.css +364 -178
  576. package/dist/collection/components/select-modal/select-modal.ionic.css +154 -0
  577. package/dist/collection/components/select-modal/select-modal.ios.css +95 -0
  578. package/dist/collection/components/select-modal/select-modal.js +109 -32
  579. package/dist/collection/components/select-modal/select-modal.md.css +83 -0
  580. package/dist/collection/components/select-option/select-option.js +32 -2
  581. package/dist/collection/components/select-popover/select-popover.ionic.css +499 -0
  582. package/dist/collection/components/select-popover/select-popover.ios.css +100 -0
  583. package/dist/collection/components/select-popover/select-popover.js +72 -31
  584. package/dist/collection/components/select-popover/select-popover.md.css +100 -0
  585. package/dist/collection/components/skeleton-text/skeleton-text.css +6 -0
  586. package/dist/collection/components/skeleton-text/skeleton-text.js +9 -5
  587. package/dist/collection/components/spinner/{spinner.css → spinner.ionic.css} +78 -10
  588. package/dist/collection/components/spinner/spinner.js +47 -6
  589. package/dist/collection/components/spinner/spinner.native.css +199 -0
  590. package/dist/collection/components/split-pane/split-pane.ios.css +20 -2
  591. package/dist/collection/components/split-pane/split-pane.js +16 -9
  592. package/dist/collection/components/split-pane/split-pane.md.css +20 -2
  593. package/dist/collection/components/tab/tab.js +6 -2
  594. package/dist/collection/components/tab-bar/tab-bar.ionic.css +227 -0
  595. package/dist/collection/components/tab-bar/tab-bar.ios.css +71 -43
  596. package/dist/collection/components/tab-bar/tab-bar.js +171 -13
  597. package/dist/collection/components/tab-bar/tab-bar.md.css +71 -43
  598. package/dist/collection/components/tab-button/tab-button.ionic.css +348 -0
  599. package/dist/collection/components/tab-button/tab-button.ios.css +171 -95
  600. package/dist/collection/components/tab-button/tab-button.js +54 -9
  601. package/dist/collection/components/tab-button/tab-button.md.css +137 -93
  602. package/dist/collection/components/tabs/tabs.css +7 -1
  603. package/dist/collection/components/tabs/tabs.js +4 -1
  604. package/dist/collection/components/text/text.css +6 -0
  605. package/dist/collection/components/text/text.js +7 -6
  606. package/dist/collection/components/textarea/textarea.ionic.css +898 -0
  607. package/dist/collection/components/textarea/textarea.ios.css +298 -158
  608. package/dist/collection/components/textarea/textarea.js +162 -24
  609. package/dist/collection/components/textarea/textarea.md.css +312 -159
  610. package/dist/collection/components/thumbnail/thumbnail.css +6 -0
  611. package/dist/collection/components/thumbnail/thumbnail.js +9 -2
  612. package/dist/collection/components/title/title.ionic.css +127 -0
  613. package/dist/collection/components/title/title.ios.css +32 -4
  614. package/dist/collection/components/title/title.js +13 -7
  615. package/dist/collection/components/title/title.md.css +32 -4
  616. package/dist/collection/components/toast/animations/utils.js +1 -1
  617. package/dist/collection/components/toast/toast.ionic.css +394 -0
  618. package/dist/collection/components/toast/toast.ios.css +84 -45
  619. package/dist/collection/components/toast/toast.js +76 -13
  620. package/dist/collection/components/toast/toast.md.css +84 -45
  621. package/dist/collection/components/toggle/toggle.ionic.css +508 -0
  622. package/dist/collection/components/toggle/toggle.ios.css +247 -131
  623. package/dist/collection/components/toggle/toggle.js +73 -18
  624. package/dist/collection/components/toggle/toggle.md.css +244 -131
  625. package/dist/collection/components/toolbar/test/image.svg +1 -0
  626. package/dist/collection/components/toolbar/toolbar.ionic.css +249 -0
  627. package/dist/collection/components/toolbar/toolbar.ios.css +90 -47
  628. package/dist/collection/components/toolbar/toolbar.js +218 -13
  629. package/dist/collection/components/toolbar/toolbar.md.css +90 -47
  630. package/dist/collection/global/ionic-global.js +241 -13
  631. package/dist/collection/index.js +1 -1
  632. package/dist/collection/utils/css-value-validation.js +25 -0
  633. package/dist/collection/utils/focus-trap.js +13 -2
  634. package/dist/collection/utils/focus-visible.js +22 -0
  635. package/dist/collection/utils/forms/validity.js +31 -0
  636. package/dist/collection/utils/framework-delegate.js +3 -1
  637. package/dist/collection/utils/hardware-back-button.js +15 -0
  638. package/dist/collection/utils/helpers.js +57 -3
  639. package/dist/collection/utils/keyboard/keyboard-controller.js +3 -1
  640. package/dist/collection/utils/media.js +1 -0
  641. package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
  642. package/dist/collection/utils/menu-controller/animations/push.js +2 -1
  643. package/dist/collection/utils/menu-controller/animations/reveal.js +2 -1
  644. package/dist/collection/utils/on-scroll/collapse-hide.utils.js +168 -0
  645. package/dist/collection/utils/overlays.js +97 -31
  646. package/dist/collection/utils/select-option-render.js +76 -0
  647. package/dist/collection/utils/test/playwright/drag-element.js +32 -9
  648. package/dist/collection/utils/test/playwright/generator.js +48 -23
  649. package/dist/collection/utils/test/playwright/page/utils/goto.js +14 -5
  650. package/dist/collection/utils/test/playwright/page/utils/set-content.js +26 -3
  651. package/dist/collection/utils/theme.js +25 -1
  652. package/dist/collection/utils/transition/ios.transition.js +1 -0
  653. package/dist/docs.json +10163 -690
  654. package/dist/esm/{animation-DLJpuoEz.js → animation-Cd1EA2ar.js} +2 -2
  655. package/dist/esm/{app-globals-D0C5S4hU.js → app-globals-9x_U7ofY.js} +1 -1
  656. package/dist/esm/{button-active-BSpTQmS9.js → button-active-B016u5N-.js} +2 -2
  657. package/dist/esm/{capacitor-CFERIeaU.js → capacitor-13SFuT1K.js} +1 -1
  658. package/dist/esm/caret-down-D1t981Ih.js +6 -0
  659. package/dist/esm/caret-left-fIOYmaqA.js +6 -0
  660. package/dist/esm/caret-right-BYSs-jZz.js +6 -0
  661. package/dist/esm/config-BwKpO3Is.js +31 -0
  662. package/dist/esm/{data-DZI70dKr.js → data-BNKYavC3.js} +6 -6
  663. package/dist/esm/{focus-visible-BmVRXR1y.js → focus-visible-vXpMhGrs.js} +23 -1
  664. package/dist/esm/{framework-delegate-FnPGymXL.js → framework-delegate-CjVwn_KZ.js} +4 -2
  665. package/dist/esm/{haptic-DzAMWJuk.js → haptic-CbnKC3go.js} +1 -1
  666. package/dist/esm/{helpers-HEqiOzXb.js → helpers-Do7zwvM1.js} +58 -5
  667. package/dist/esm/{index-B_dQk_WE.js → index-B2VWavcK.js} +4 -4
  668. package/dist/esm/{index-Q6UPU0Ay.js → index-BWMvrRiE.js} +11 -11
  669. package/dist/esm/{index-MEDq2S8l.js → index-BmkLokUL.js} +2 -2
  670. package/dist/esm/{index-AlrZKoWR.js → index-D2tu5BUg.js} +2 -1
  671. package/dist/esm/{index-BRHzoo00.js → index-D3WueHpT.js} +4 -3
  672. package/dist/esm/{config-DQCONYYp.js → index-D4ugF_sT.js} +2 -29
  673. package/dist/esm/{index-tcQvqkiX.js → index-Omi_TcwW.js} +64 -71
  674. package/dist/esm/index.js +14 -14
  675. package/dist/esm/{input-shims-D10mwcw1.js → input-shims-DU23z7Hg.js} +7 -6
  676. package/dist/esm/{input.utils-Y6NgW8bw.js → input.utils-C64RbLd_.js} +3 -3
  677. package/dist/esm/ion-accordion_2.entry.js +61 -29
  678. package/dist/esm/ion-action-sheet.entry.js +41 -26
  679. package/dist/esm/ion-alert.entry.js +61 -44
  680. package/dist/esm/ion-app_8.entry.js +568 -189
  681. package/dist/esm/ion-avatar_3.entry.js +125 -13
  682. package/dist/esm/ion-back-button.entry.js +31 -22
  683. package/dist/esm/ion-backdrop.entry.js +10 -7
  684. package/dist/esm/ion-breadcrumb_2.entry.js +54 -18
  685. package/dist/esm/ion-button_2.entry.js +59 -22
  686. package/dist/esm/ion-card_5.entry.js +55 -33
  687. package/dist/esm/ion-checkbox.entry.js +34 -16
  688. package/dist/esm/ion-chip.entry.js +50 -9
  689. package/dist/esm/ion-col_3.entry.js +56 -57
  690. package/dist/esm/ion-datetime-button.entry.js +13 -9
  691. package/dist/esm/{ion-datetime.entry.js → ion-datetime_3.entry.js} +741 -30
  692. package/dist/esm/ion-divider.entry.js +49 -0
  693. package/dist/esm/ion-fab_3.entry.js +44 -28
  694. package/dist/esm/ion-gallery.entry.js +508 -0
  695. package/dist/esm/ion-img.entry.js +8 -4
  696. package/dist/esm/ion-infinite-scroll_2.entry.js +92 -16
  697. package/dist/esm/ion-input-otp.entry.js +74 -9
  698. package/dist/esm/ion-input-password-toggle.entry.js +53 -15
  699. package/dist/esm/ion-input.entry.js +125 -35
  700. package/dist/esm/ion-item-option_3.entry.js +467 -52
  701. package/dist/esm/ion-item_8.entry.js +116 -49
  702. package/dist/esm/ion-loading.entry.js +21 -22
  703. package/dist/esm/ion-menu_3.entry.js +47 -29
  704. package/dist/esm/ion-modal.entry.js +215 -95
  705. package/dist/esm/ion-nav_2.entry.js +14 -11
  706. package/dist/esm/ion-picker-column-option.entry.js +12 -8
  707. package/dist/esm/ion-picker-column.entry.js +13 -13
  708. package/dist/esm/ion-picker.entry.js +10 -6
  709. package/dist/esm/ion-popover.entry.js +21 -23
  710. package/dist/esm/ion-progress-bar.entry.js +27 -9
  711. package/dist/esm/ion-radio_2.entry.js +35 -17
  712. package/dist/esm/ion-range.entry.js +20 -13
  713. package/dist/esm/ion-refresher_2.entry.js +40 -21
  714. package/dist/esm/ion-reorder_2.entry.js +39 -15
  715. package/dist/esm/ion-ripple-effect.entry.js +15 -7
  716. package/dist/esm/ion-route_4.entry.js +10 -9
  717. package/dist/esm/ion-searchbar.entry.js +138 -25
  718. package/dist/esm/ion-segment-content.entry.js +2 -2
  719. package/dist/esm/ion-segment-view.entry.js +13 -3
  720. package/dist/esm/ion-segment_2.entry.js +23 -16
  721. package/dist/esm/ion-select-modal.entry.js +97 -40
  722. package/dist/esm/ion-select_3.entry.js +454 -116
  723. package/dist/esm/ion-spinner.entry.js +30 -8
  724. package/dist/esm/ion-split-pane.entry.js +13 -9
  725. package/dist/esm/ion-tab-bar_2.entry.js +147 -23
  726. package/dist/esm/ion-tab_2.entry.js +8 -7
  727. package/dist/esm/ion-text.entry.js +7 -7
  728. package/dist/esm/ion-textarea.entry.js +137 -23
  729. package/dist/esm/ion-toast.entry.js +46 -22
  730. package/dist/esm/ion-toggle.entry.js +84 -27
  731. package/dist/esm/ionic-global--9mOmThr.js +508 -0
  732. package/dist/esm/ionic.js +6 -6
  733. package/dist/esm/{ios.transition-ClFrsIrS.js → ios.transition-DoQTN5Jk.js} +7 -5
  734. package/dist/esm/{keyboard-ywgs5efA.js → keyboard-Ca1zVCcH.js} +4 -3
  735. package/dist/esm/{keyboard-CUw4ekVy.js → keyboard-Dnno7-Ci.js} +1 -1
  736. package/dist/esm/{keyboard-controller-BaaVITYt.js → keyboard-controller-BpOdk6xN.js} +5 -3
  737. package/dist/esm/list-Dhi5xtNS.js +6 -0
  738. package/dist/esm/loader.js +5 -5
  739. package/dist/esm/{md.transition-D0msQmzI.js → md.transition-DZydrWwq.js} +6 -5
  740. package/dist/esm/{notch-controller-DKDjU_O7.js → notch-controller-klgNWpjJ.js} +2 -2
  741. package/dist/esm/{overlays-DLNOHWNc.js → overlays-CpQ6Df2g.js} +114 -39
  742. package/dist/esm/select-option-render-B2qc5ZP7.js +79 -0
  743. package/dist/esm/{status-tap-Kan2W7sh.js → status-tap-fYFdZg6z.js} +4 -3
  744. package/dist/esm/{swipe-back-DQ1q5MgD.js → swipe-back-BzGqTrrq.js} +3 -2
  745. package/dist/esm/{theme-DiVJyqlX.js → theme-DaJxRxSQ.js} +25 -1
  746. package/dist/esm/validity-BjW8SOqw.js +48 -0
  747. package/dist/esm/x-BDqjX7Z_.js +6 -0
  748. package/dist/html.html-data.json +2660 -145
  749. package/dist/ionic/index.esm.js +1 -1
  750. package/dist/ionic/ionic.esm.js +1 -1
  751. package/dist/ionic/p-0030507d.entry.js +4 -0
  752. package/dist/ionic/p-031df892.entry.js +4 -0
  753. package/dist/ionic/p-04b5794c.entry.js +4 -0
  754. package/dist/ionic/p-084c2623.entry.js +4 -0
  755. package/dist/ionic/p-09f8a57f.entry.js +4 -0
  756. package/dist/ionic/p-108c0f30.entry.js +4 -0
  757. package/dist/ionic/p-1439fecb.entry.js +4 -0
  758. package/dist/ionic/p-199bffb3.entry.js +4 -0
  759. package/dist/ionic/p-19a1ff9a.entry.js +4 -0
  760. package/dist/ionic/p-1a026890.entry.js +4 -0
  761. package/dist/ionic/p-1ad16c09.entry.js +4 -0
  762. package/dist/ionic/p-2aa7567e.entry.js +4 -0
  763. package/dist/ionic/p-3656314c.entry.js +4 -0
  764. package/dist/ionic/p-379cc989.entry.js +4 -0
  765. package/dist/ionic/p-3f18dfe9.entry.js +4 -0
  766. package/dist/ionic/p-40d9e029.entry.js +4 -0
  767. package/dist/ionic/p-44d483c2.entry.js +4 -0
  768. package/dist/ionic/p-456736d1.entry.js +4 -0
  769. package/dist/ionic/p-48e3cb9e.entry.js +4 -0
  770. package/dist/ionic/p-497f6391.entry.js +4 -0
  771. package/dist/ionic/p-52ed96a8.entry.js +4 -0
  772. package/dist/ionic/p-64b4e6eb.entry.js +4 -0
  773. package/dist/ionic/p-66eb0193.entry.js +4 -0
  774. package/dist/ionic/p-67c2d349.entry.js +4 -0
  775. package/dist/ionic/p-7054a1b9.entry.js +4 -0
  776. package/dist/ionic/p-7186786e.entry.js +4 -0
  777. package/dist/ionic/p-7194f6fa.entry.js +4 -0
  778. package/dist/ionic/p-76c70824.entry.js +4 -0
  779. package/dist/ionic/p-7f294078.entry.js +4 -0
  780. package/dist/ionic/p-8458f1b6.entry.js +4 -0
  781. package/dist/ionic/p-88048796.entry.js +4 -0
  782. package/dist/ionic/p-88e7f52a.entry.js +4 -0
  783. package/dist/ionic/p-89eab395.entry.js +4 -0
  784. package/dist/ionic/p-93315d96.entry.js +4 -0
  785. package/dist/ionic/p-9ccfb733.entry.js +4 -0
  786. package/dist/ionic/p-9dfbe98d.entry.js +4 -0
  787. package/{components/p-BT_5jSqG.js → dist/ionic/p-B2-sg7NJ.js} +1 -1
  788. package/dist/ionic/p-B4ikoeaj.js +4 -0
  789. package/dist/ionic/p-BDqjX7Z_.js +4 -0
  790. package/dist/ionic/p-BFBCtvFI.js +4 -0
  791. package/dist/ionic/p-BQgCYKKG.js +4 -0
  792. package/dist/ionic/p-BYAxJDlE.js +4 -0
  793. package/dist/ionic/p-BYSs-jZz.js +4 -0
  794. package/dist/ionic/p-BjW8SOqw.js +4 -0
  795. package/dist/ionic/{p-CKvCXMs9.js → p-BmEwy3tY.js} +1 -1
  796. package/dist/ionic/p-BwKpO3Is.js +4 -0
  797. package/dist/ionic/{p-DAAFkPFT.js → p-C8IHbcuP.js} +1 -1
  798. package/dist/ionic/p-CDn0uNJA.js +4 -0
  799. package/dist/ionic/p-CFjI63GE.js +4 -0
  800. package/dist/ionic/p-CHE1xWbg.js +4 -0
  801. package/dist/ionic/p-CK179dBb.js +4 -0
  802. package/dist/ionic/p-CWJdc8f_.js +4 -0
  803. package/dist/ionic/p-CYhXBSjd.js +4 -0
  804. package/{components/p-D13Eaw-8.js → dist/ionic/p-CuGhCBt7.js} +1 -1
  805. package/dist/ionic/p-D1t981Ih.js +4 -0
  806. package/dist/ionic/p-D2tu5BUg.js +4 -0
  807. package/dist/ionic/p-DDFhx1YX.js +4 -0
  808. package/dist/ionic/{p-Wk5HzclC.js → p-DKWXAwlR.js} +1 -1
  809. package/dist/ionic/p-DNGqaUsl.js +4 -0
  810. package/dist/ionic/p-DaJxRxSQ.js +4 -0
  811. package/dist/ionic/p-DaknVxZR.js +4 -0
  812. package/dist/ionic/p-Dhi5xtNS.js +4 -0
  813. package/dist/ionic/p-DoyDJ2X5.js +4 -0
  814. package/dist/ionic/p-E1wtzfO0.js +4 -0
  815. package/dist/ionic/p-FvDKM4Ax.js +4 -0
  816. package/dist/ionic/p-IXZW3FBt.js +4 -0
  817. package/dist/ionic/p-Omi_TcwW.js +5 -0
  818. package/dist/ionic/p-PoSbs6oh.js +4 -0
  819. package/dist/ionic/p-VAJ_3beW.js +4 -0
  820. package/dist/ionic/p-a3f9be52.entry.js +4 -0
  821. package/dist/ionic/p-ad4d0138.entry.js +4 -0
  822. package/dist/ionic/p-b4fd91b8.entry.js +4 -0
  823. package/dist/ionic/p-b653f4c2.entry.js +4 -0
  824. package/dist/ionic/p-b69add0e.entry.js +4 -0
  825. package/dist/ionic/p-b7235e85.entry.js +4 -0
  826. package/dist/ionic/p-bc317965.entry.js +4 -0
  827. package/dist/ionic/p-bf0c5a8d.entry.js +4 -0
  828. package/dist/ionic/p-bsfLvRbd.js +4 -0
  829. package/dist/ionic/p-c0558552.entry.js +4 -0
  830. package/dist/ionic/p-c684a3b6.entry.js +4 -0
  831. package/dist/ionic/p-c7139c41.entry.js +4 -0
  832. package/dist/ionic/p-dac1d4de.entry.js +4 -0
  833. package/dist/ionic/p-dd2981d0.entry.js +4 -0
  834. package/dist/ionic/p-eTI_FbQJ.js +4 -0
  835. package/dist/ionic/p-f08edb25.entry.js +4 -0
  836. package/dist/ionic/p-f167c55c.entry.js +4 -0
  837. package/dist/ionic/p-f7ca50a5.entry.js +4 -0
  838. package/dist/ionic/p-fIOYmaqA.js +4 -0
  839. package/dist/ionic/p-fbdbdb3e.entry.js +4 -0
  840. package/dist/ionic/p-ff09d2a5.entry.js +4 -0
  841. package/dist/ionic/p-vXpMhGrs.js +4 -0
  842. package/dist/types/components/accordion/accordion.d.ts +6 -3
  843. package/dist/types/components/accordion-group/accordion-group.d.ts +12 -1
  844. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +3 -7
  845. package/dist/types/components/action-sheet/action-sheet.d.ts +3 -2
  846. package/dist/types/components/alert/alert-interface.d.ts +3 -7
  847. package/dist/types/components/alert/alert.d.ts +3 -2
  848. package/dist/types/components/app/app.d.ts +4 -5
  849. package/dist/types/components/avatar/avatar.d.ts +32 -0
  850. package/dist/types/components/back-button/back-button.d.ts +2 -1
  851. package/dist/types/components/backdrop/backdrop.d.ts +4 -0
  852. package/dist/types/components/badge/badge.d.ts +34 -1
  853. package/dist/types/components/breadcrumb/breadcrumb.d.ts +4 -1
  854. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
  855. package/dist/types/components/button/button.d.ts +23 -8
  856. package/dist/types/components/buttons/buttons.d.ts +5 -1
  857. package/dist/types/components/card/card.d.ts +8 -1
  858. package/dist/types/components/card-content/card-content.d.ts +2 -1
  859. package/dist/types/components/card-header/card-header.d.ts +3 -2
  860. package/dist/types/components/card-subtitle/card-subtitle.d.ts +2 -1
  861. package/dist/types/components/card-title/card-title.d.ts +2 -1
  862. package/dist/types/components/checkbox/checkbox.d.ts +14 -4
  863. package/dist/types/components/chip/chip.d.ts +26 -1
  864. package/dist/types/components/col/col.d.ts +52 -5
  865. package/dist/types/components/content/content.d.ts +3 -0
  866. package/dist/types/components/datetime/datetime.d.ts +26 -1
  867. package/dist/types/components/datetime/utils/data.d.ts +5 -5
  868. package/dist/types/components/datetime-button/datetime-button.d.ts +2 -1
  869. package/dist/types/components/divider/divider.d.ts +20 -0
  870. package/dist/types/components/fab/fab.d.ts +4 -0
  871. package/dist/types/components/fab-button/fab-button.d.ts +5 -3
  872. package/dist/types/components/fab-list/fab-list.d.ts +4 -0
  873. package/dist/types/components/footer/footer.d.ts +15 -4
  874. package/dist/types/components/footer/footer.utils.d.ts +1 -0
  875. package/dist/types/components/gallery/gallery-constants.d.ts +9 -0
  876. package/dist/types/components/gallery/gallery-interface.d.ts +10 -0
  877. package/dist/types/components/gallery/gallery.d.ts +183 -0
  878. package/dist/types/components/gallery/test/utils.d.ts +2 -0
  879. package/dist/types/components/grid/grid.d.ts +4 -0
  880. package/dist/types/components/header/header.d.ts +18 -5
  881. package/dist/types/components/header/header.utils.d.ts +4 -3
  882. package/dist/types/components/img/img.d.ts +3 -0
  883. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +21 -0
  884. package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +4 -0
  885. package/dist/types/components/input/input.d.ts +32 -6
  886. package/dist/types/components/input-otp/input-otp.d.ts +37 -0
  887. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +2 -0
  888. package/dist/types/components/item/item.d.ts +11 -4
  889. package/dist/types/components/item-divider/item-divider.d.ts +2 -1
  890. package/dist/types/components/item-group/item-group.d.ts +4 -0
  891. package/dist/types/components/item-option/item-option.d.ts +18 -1
  892. package/dist/types/components/item-options/item-options.d.ts +4 -0
  893. package/dist/types/components/item-sliding/item-sliding.d.ts +47 -1
  894. package/dist/types/components/item-sliding/test/test.utils.d.ts +13 -0
  895. package/dist/types/components/label/label.d.ts +2 -1
  896. package/dist/types/components/list/list.d.ts +15 -1
  897. package/dist/types/components/list-header/list-header.d.ts +2 -1
  898. package/dist/types/components/loading/loading-interface.d.ts +2 -7
  899. package/dist/types/components/loading/loading.d.ts +3 -2
  900. package/dist/types/components/menu/menu.d.ts +3 -0
  901. package/dist/types/components/menu-button/menu-button.d.ts +3 -1
  902. package/dist/types/components/menu-toggle/menu-toggle.d.ts +3 -0
  903. package/dist/types/components/modal/animations/ionic.enter.d.ts +6 -0
  904. package/dist/types/components/modal/animations/ionic.leave.d.ts +6 -0
  905. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  906. package/dist/types/components/modal/modal-interface.d.ts +4 -7
  907. package/dist/types/components/modal/modal.d.ts +11 -1
  908. package/dist/types/components/nav/nav-interface.d.ts +9 -1
  909. package/dist/types/components/nav/nav.d.ts +5 -1
  910. package/dist/types/components/nav-link/nav-link.d.ts +4 -0
  911. package/dist/types/components/note/note.d.ts +2 -1
  912. package/dist/types/components/picker/picker.d.ts +2 -1
  913. package/dist/types/components/picker-column/picker-column.d.ts +2 -1
  914. package/dist/types/components/picker-column-option/picker-column-option.d.ts +4 -0
  915. package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +5 -0
  916. package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +5 -0
  917. package/dist/types/components/picker-legacy/picker-interface.d.ts +52 -0
  918. package/dist/types/components/picker-legacy/picker.d.ts +159 -0
  919. package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
  920. package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +9 -0
  921. package/dist/types/components/popover/popover-interface.d.ts +3 -6
  922. package/dist/types/components/popover/popover.d.ts +6 -5
  923. package/dist/types/components/progress-bar/progress-bar.d.ts +10 -1
  924. package/dist/types/components/radio/radio.d.ts +2 -1
  925. package/dist/types/components/radio-group/radio-group.d.ts +12 -0
  926. package/dist/types/components/range/range.d.ts +2 -1
  927. package/dist/types/components/refresher/refresher.d.ts +2 -1
  928. package/dist/types/components/refresher-content/refresher-content.d.ts +4 -0
  929. package/dist/types/components/reorder/reorder.d.ts +9 -0
  930. package/dist/types/components/reorder-group/reorder-group.d.ts +4 -0
  931. package/dist/types/components/ripple-effect/ripple-effect.d.ts +4 -0
  932. package/dist/types/components/route/route.d.ts +4 -0
  933. package/dist/types/components/router/router.d.ts +4 -0
  934. package/dist/types/components/router-link/router-link.d.ts +4 -0
  935. package/dist/types/components/router-outlet/router-outlet.d.ts +4 -8
  936. package/dist/types/components/row/row.d.ts +4 -0
  937. package/dist/types/components/searchbar/searchbar.d.ts +52 -10
  938. package/dist/types/components/segment/segment.d.ts +2 -1
  939. package/dist/types/components/segment-button/segment-button.d.ts +2 -1
  940. package/dist/types/components/select/select-interface.d.ts +23 -0
  941. package/dist/types/components/select/select.d.ts +66 -14
  942. package/dist/types/components/select-modal/select-modal.d.ts +8 -0
  943. package/dist/types/components/select-option/select-option.d.ts +12 -0
  944. package/dist/types/components/select-popover/select-popover.d.ts +3 -0
  945. package/dist/types/components/skeleton-text/skeleton-text.d.ts +4 -0
  946. package/dist/types/components/spinner/spinner.d.ts +15 -0
  947. package/dist/types/components/split-pane/split-pane.d.ts +4 -0
  948. package/dist/types/components/tab/tab.d.ts +4 -0
  949. package/dist/types/components/tab-bar/tab-bar.d.ts +37 -2
  950. package/dist/types/components/tab-button/tab-button.d.ts +12 -1
  951. package/dist/types/components/tabs/tabs.d.ts +3 -0
  952. package/dist/types/components/text/text.d.ts +2 -1
  953. package/dist/types/components/textarea/textarea.d.ts +53 -4
  954. package/dist/types/components/thumbnail/thumbnail.d.ts +4 -0
  955. package/dist/types/components/title/title.d.ts +4 -0
  956. package/dist/types/components/toast/animations/utils.d.ts +2 -2
  957. package/dist/types/components/toast/toast-interface.d.ts +3 -7
  958. package/dist/types/components/toast/toast.d.ts +19 -2
  959. package/dist/types/components/toggle/toggle.d.ts +15 -1
  960. package/dist/types/components/toolbar/toolbar.d.ts +43 -3
  961. package/dist/types/components.d.ts +2126 -267
  962. package/dist/types/global/ionic-global.d.ts +28 -2
  963. package/dist/types/index.d.ts +1 -1
  964. package/dist/types/interface.d.ts +4 -0
  965. package/dist/types/stencil-public-runtime.d.ts +1 -4
  966. package/dist/types/utils/config.d.ts +114 -2
  967. package/dist/types/utils/css-value-validation.d.ts +12 -0
  968. package/dist/types/utils/focus-trap.d.ts +1 -1
  969. package/dist/types/utils/focus-visible.d.ts +13 -0
  970. package/dist/types/utils/forms/validity.d.ts +7 -0
  971. package/dist/types/utils/helpers.d.ts +11 -0
  972. package/dist/types/utils/on-scroll/collapse-hide.utils.d.ts +26 -0
  973. package/dist/types/utils/overlays-interface.d.ts +31 -1
  974. package/dist/types/utils/overlays.d.ts +10 -12
  975. package/dist/types/utils/select-option-render.d.ts +22 -0
  976. package/dist/types/utils/test/playwright/drag-element.d.ts +16 -3
  977. package/dist/types/utils/test/playwright/generator.d.ts +31 -2
  978. package/dist/types/utils/theme.d.ts +9 -0
  979. package/hydrate/index.js +6522 -2329
  980. package/hydrate/index.mjs +6522 -2329
  981. package/package.json +12 -40
  982. package/components/p--JUspHvy.js +0 -4
  983. package/components/p-B8U2xbtx.js +0 -4
  984. package/components/p-B9jFTlwE.js +0 -4
  985. package/components/p-BTPfOxsU.js +0 -4
  986. package/components/p-Baq1XyAy.js +0 -4
  987. package/components/p-BhmadOit.js +0 -4
  988. package/components/p-BirPFsRD.js +0 -4
  989. package/components/p-BjfgFSSR.js +0 -4
  990. package/components/p-BmVRXR1y.js +0 -4
  991. package/components/p-BnqQlm7c.js +0 -4
  992. package/components/p-BtVHN9Na.js +0 -4
  993. package/components/p-Bz0dSlXZ.js +0 -4
  994. package/components/p-C1aScSTo.js +0 -4
  995. package/components/p-C4t5ymfq.js +0 -4
  996. package/components/p-CHqRYvYm.js +0 -4
  997. package/components/p-CHzfYZbv.js +0 -4
  998. package/components/p-CI3ncNZm.js +0 -4
  999. package/components/p-CIGNaXM1.js +0 -4
  1000. package/components/p-CO7fmmxt.js +0 -4
  1001. package/components/p-CSZf8_j0.js +0 -4
  1002. package/components/p-C_xFdyXe.js +0 -4
  1003. package/components/p-Ciz1-FuE.js +0 -4
  1004. package/components/p-Ck2wcXbv.js +0 -4
  1005. package/components/p-CmR5uXej.js +0 -4
  1006. package/components/p-CtWGkNnJ.js +0 -4
  1007. package/components/p-CtukzcyX.js +0 -4
  1008. package/components/p-D6Ynv7Xh.js +0 -4
  1009. package/components/p-D7bSXQD3.js +0 -4
  1010. package/components/p-DEBD4LvH.js +0 -4
  1011. package/components/p-DH50pr9O.js +0 -4
  1012. package/components/p-DIE4pXMl.js +0 -4
  1013. package/components/p-DJztqcrH.js +0 -4
  1014. package/components/p-DOFCbuQR.js +0 -4
  1015. package/components/p-DhkITZ-y.js +0 -4
  1016. package/components/p-DiVJyqlX.js +0 -4
  1017. package/components/p-DmpBvltk.js +0 -4
  1018. package/components/p-DnL1c9_X.js +0 -4
  1019. package/components/p-DpV-p5Xs.js +0 -4
  1020. package/components/p-DqZAXv2t.js +0 -4
  1021. package/components/p-Dz74mwlk.js +0 -4
  1022. package/components/p-W5nO8mX_.js +0 -4
  1023. package/components/p-XJWMAP8m.js +0 -4
  1024. package/components/p-ZjP4CjeZ.js +0 -4
  1025. package/components/p-djQLE88P.js +0 -4
  1026. package/components/p-j5IxBIan.js +0 -4
  1027. package/components/p-k_E4tX5Z.js +0 -4
  1028. package/components/p-lE_JGpHD.js +0 -4
  1029. package/components/p-r0aq7dpt.js +0 -4
  1030. package/components/p-ryqmO0B-.js +0 -4
  1031. package/components/p-wk2QqrAo.js +0 -4
  1032. package/dist/cjs/hardware-back-button-iUuF_76h.js +0 -121
  1033. package/dist/cjs/index-DkNv4J_i.js +0 -10
  1034. package/dist/cjs/ionic-global-B-cA6LkY.js +0 -151
  1035. package/dist/cjs/validity-BpS37YFM.js +0 -19
  1036. package/dist/esm/hardware-back-button-B93Gru0Y.js +0 -115
  1037. package/dist/esm/index-ZjP4CjeZ.js +0 -7
  1038. package/dist/esm/ionic-global-Cp_eT4sZ.js +0 -146
  1039. package/dist/esm/validity-DJztqcrH.js +0 -17
  1040. package/dist/ionic/p-03aa786d.entry.js +0 -4
  1041. package/dist/ionic/p-06c232a4.entry.js +0 -4
  1042. package/dist/ionic/p-11684553.entry.js +0 -4
  1043. package/dist/ionic/p-1ae21e4c.entry.js +0 -4
  1044. package/dist/ionic/p-20b1a044.entry.js +0 -4
  1045. package/dist/ionic/p-259d0d98.entry.js +0 -4
  1046. package/dist/ionic/p-2a6d6565.entry.js +0 -4
  1047. package/dist/ionic/p-341032b3.entry.js +0 -4
  1048. package/dist/ionic/p-3e91d32e.entry.js +0 -4
  1049. package/dist/ionic/p-441fbb13.entry.js +0 -4
  1050. package/dist/ionic/p-4502a274.entry.js +0 -4
  1051. package/dist/ionic/p-4621c387.entry.js +0 -4
  1052. package/dist/ionic/p-4bb3eb60.entry.js +0 -4
  1053. package/dist/ionic/p-4e92a11f.entry.js +0 -4
  1054. package/dist/ionic/p-50e1194a.entry.js +0 -4
  1055. package/dist/ionic/p-51cd1643.entry.js +0 -4
  1056. package/dist/ionic/p-5c3ec490.entry.js +0 -4
  1057. package/dist/ionic/p-627fabd9.entry.js +0 -4
  1058. package/dist/ionic/p-629e4703.entry.js +0 -4
  1059. package/dist/ionic/p-76e92a84.entry.js +0 -4
  1060. package/dist/ionic/p-7a37b3ce.entry.js +0 -4
  1061. package/dist/ionic/p-7aed7726.entry.js +0 -4
  1062. package/dist/ionic/p-7ebd980c.entry.js +0 -4
  1063. package/dist/ionic/p-80b44b3c.entry.js +0 -4
  1064. package/dist/ionic/p-81ea5652.entry.js +0 -4
  1065. package/dist/ionic/p-8c8eee7d.entry.js +0 -4
  1066. package/dist/ionic/p-8d624ee5.entry.js +0 -4
  1067. package/dist/ionic/p-8d6fd502.entry.js +0 -4
  1068. package/dist/ionic/p-9177f4ac.entry.js +0 -4
  1069. package/dist/ionic/p-9c6a5a8d.entry.js +0 -4
  1070. package/dist/ionic/p-9eeaBrnk.js +0 -4
  1071. package/dist/ionic/p-AlrZKoWR.js +0 -4
  1072. package/dist/ionic/p-BGqMS-oh.js +0 -4
  1073. package/dist/ionic/p-BUFIpxKM.js +0 -4
  1074. package/dist/ionic/p-BmVRXR1y.js +0 -4
  1075. package/dist/ionic/p-CFlfIb2g.js +0 -4
  1076. package/dist/ionic/p-CIGNaXM1.js +0 -4
  1077. package/dist/ionic/p-Cg5-OQYy.js +0 -4
  1078. package/dist/ionic/p-CtWGkNnJ.js +0 -4
  1079. package/dist/ionic/p-Cx3IXROA.js +0 -4
  1080. package/dist/ionic/p-D4uTWt4-.js +0 -4
  1081. package/dist/ionic/p-DC3RagnA.js +0 -4
  1082. package/dist/ionic/p-DIuEbVLu.js +0 -4
  1083. package/dist/ionic/p-DJztqcrH.js +0 -4
  1084. package/dist/ionic/p-DSG2s2Eb.js +0 -4
  1085. package/dist/ionic/p-Dfbt-q2k.js +0 -4
  1086. package/dist/ionic/p-DiVJyqlX.js +0 -4
  1087. package/dist/ionic/p-DoJvtrbw.js +0 -4
  1088. package/dist/ionic/p-KjNvRoEp.js +0 -4
  1089. package/dist/ionic/p-Nqf6uvGh.js +0 -4
  1090. package/dist/ionic/p-SNAkTDfm.js +0 -4
  1091. package/dist/ionic/p-ZjP4CjeZ.js +0 -4
  1092. package/dist/ionic/p-a2e51c5d.entry.js +0 -4
  1093. package/dist/ionic/p-a3bdcae6.entry.js +0 -4
  1094. package/dist/ionic/p-a44b7536.entry.js +0 -4
  1095. package/dist/ionic/p-a5213260.entry.js +0 -4
  1096. package/dist/ionic/p-a7628bc7.entry.js +0 -4
  1097. package/dist/ionic/p-b1599fca.entry.js +0 -4
  1098. package/dist/ionic/p-b16be471.entry.js +0 -4
  1099. package/dist/ionic/p-b6a7397c.entry.js +0 -4
  1100. package/dist/ionic/p-b9ac1fe0.entry.js +0 -4
  1101. package/dist/ionic/p-c6e49f3f.entry.js +0 -4
  1102. package/dist/ionic/p-c93553d2.entry.js +0 -4
  1103. package/dist/ionic/p-d2c7f046.entry.js +0 -4
  1104. package/dist/ionic/p-d8387b99.entry.js +0 -4
  1105. package/dist/ionic/p-d8ac9eea.entry.js +0 -4
  1106. package/dist/ionic/p-db1b6738.entry.js +0 -4
  1107. package/dist/ionic/p-dfa8d673.entry.js +0 -4
  1108. package/dist/ionic/p-ed797c72.entry.js +0 -4
  1109. package/dist/ionic/p-ef93ca92.entry.js +0 -4
  1110. package/dist/ionic/p-f09f9642.entry.js +0 -4
  1111. package/dist/ionic/p-f1c06f82.entry.js +0 -4
  1112. package/dist/ionic/p-f386f6ae.entry.js +0 -4
  1113. package/dist/ionic/p-fe4aa1db.entry.js +0 -4
  1114. package/dist/ionic/p-mjKAFv89.js +0 -4
  1115. package/dist/ionic/p-tcQvqkiX.js +0 -5
  1116. package/dist/ionic/p-viFHDgRs.js +0 -4
  1117. package/dist/ionic/p-xWb6fgfq.js +0 -4
  1118. /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-Ct7gcRif.js');
7
- var hardwareBackButton = require('./hardware-back-button-iUuF_76h.js');
8
- var ionicGlobal = require('./ionic-global-B-cA6LkY.js');
9
- var helpers = require('./helpers-Cv23MFHM.js');
6
+ var index = require('./index-CzcLEdQ5.js');
7
+ var focusVisible = require('./focus-visible-BIj-I3-C.js');
8
+ var ionicGlobal = require('./ionic-global-BW5tRzrz.js');
9
+ var helpers = require('./helpers-DJYxKN5U.js');
10
10
  var dir = require('./dir-Cn0z1rJH.js');
11
- var theme = require('./theme-CeDs6Hcv.js');
12
- var index$1 = require('./index-CIrkNXqJ.js');
13
- var keyboardController = require('./keyboard-controller-GXBiBRKS.js');
11
+ var theme = require('./theme-IlOsGAz7.js');
12
+ var index$1 = require('./index-BJrpF9T3.js');
13
+ var keyboardController = require('./keyboard-controller-CCTvHp9l.js');
14
14
  var cubicBezier = require('./cubic-bezier-DAjy1V-e.js');
15
- var frameworkDelegate = require('./framework-delegate-BtICZDHr.js');
15
+ var frameworkDelegate = require('./framework-delegate-Dx9FrqAC.js');
16
16
  var lockController = require('./lock-controller-aDB9wrEf.js');
17
- var index$2 = require('./index-BERfRao3.js');
18
- require('./index-DkNv4J_i.js');
19
- require('./keyboard-UuAS4D_9.js');
20
- require('./capacitor-DmA66EwP.js');
17
+ var index$2 = require('./index-DSNlrgfO.js');
18
+ require('./keyboard-VLGMzWBE.js');
19
+ require('./capacitor-CXqhdZym.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-D81eLYUM.js'); }).then((module) => module.startTapClick(index.config));
34
- }
35
- if (index.config.getBoolean('statusTap', isHybrid)) {
36
- Promise.resolve().then(function () { return require('./status-tap-BXX8H8_Y.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-CFLg7uzj.js'); }).then((module) => module.startInputShims(index.config, platform));
45
- }
46
- const hardwareBackButtonModule = await Promise.resolve().then(function () { return require('./hardware-back-button-iUuF_76h.js'); });
47
- const supportsHardwareBackButtonEvents = isHybrid || hardwareBackButton.shouldUseCloseWatcher();
48
- if (index.config.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {
49
- hardwareBackButtonModule.startHardwareBackButton();
50
- }
51
- else {
52
- /**
53
- * If an app sets hardwareBackButton: false and experimentalCloseWatcher: true
54
- * then the close watcher will not be used.
55
- */
56
- if (hardwareBackButton.shouldUseCloseWatcher()) {
57
- index.printIonWarning('[ion-app] - experimentalCloseWatcher was set to `true`, but hardwareBackButton was set to `false`. Both config options must be `true` for the Close Watcher API to be used.');
58
- }
59
- hardwareBackButtonModule.blockHardwareBackButton();
60
- }
61
- if (typeof window !== 'undefined') {
62
- Promise.resolve().then(function () { return require('./keyboard-hHzlEQpk.js'); }).then((module) => module.startKeyboardAssist(window));
63
- }
64
- Promise.resolve().then(function () { return require('./focus-visible-CCvKiLh3.js'); }).then((module) => (this.focusVisible = module.startFocusVisible()));
65
- });
66
- }
67
- }
68
- disconnectedCallback() {
69
- if (this.loadTimeout) {
70
- clearTimeout(this.loadTimeout);
71
- }
72
- }
73
27
  /**
74
28
  * Used to set focus on an element that uses `ion-focusable`.
75
29
  * Do not use this if focusing the element as a result of a keyboard
@@ -82,52 +36,29 @@ const App = class {
82
36
  * @param elements An array of HTML elements to set focus on.
83
37
  */
84
38
  async setFocus(elements) {
85
- if (this.focusVisible) {
86
- this.focusVisible.setFocus(elements);
87
- }
88
- }
89
- rIC(callback) {
90
- if ('requestIdleCallback' in window) {
91
- window.requestIdleCallback(callback);
92
- }
93
- else {
94
- this.loadTimeout = setTimeout(callback, 32);
95
- }
39
+ /**
40
+ * The focus-visible utility is used to set focus on an
41
+ * element that uses `ion-focusable`.
42
+ */
43
+ focusVisible.focusElements(elements);
96
44
  }
97
45
  render() {
98
- const mode = ionicGlobal.getIonMode(this);
99
- return (index.h(index.Host, { key: '77a7459d3e42b3715a5a7e1cf468e2ebc99e54bb', class: {
100
- [mode]: true,
46
+ const theme = ionicGlobal.getIonTheme(this);
47
+ return (index.h(index.Host, { key: '3b7e84c7c4187287123413f90838cda89136b2a4', class: {
48
+ [theme]: true,
101
49
  'ion-page': true,
102
50
  'force-statusbar-padding': index.config.getBoolean('_forceStatusbarPadding'),
103
51
  } }));
104
52
  }
105
53
  get el() { return index.getElement(this); }
106
54
  };
107
- const needInputShims = () => {
108
- /**
109
- * iOS always needs input shims
110
- */
111
- const needsShimsIOS = ionicGlobal.isPlatform(window, 'ios') && ionicGlobal.isPlatform(window, 'mobile');
112
- if (needsShimsIOS) {
113
- return true;
114
- }
115
- /**
116
- * Android only needs input shims when running
117
- * in the browser and only if the browser is using the
118
- * new Chrome 108+ resize behavior: https://developer.chrome.com/blog/viewport-resize-behavior/
119
- */
120
- const isAndroidMobileWeb = ionicGlobal.isPlatform(window, 'android') && ionicGlobal.isPlatform(window, 'mobileweb');
121
- if (isAndroidMobileWeb) {
122
- return true;
123
- }
124
- return false;
125
- };
126
55
  App.style = appCss();
127
56
 
128
- const buttonsIosCss = () => `.sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:5px;--padding-end:5px;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-ios-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast);--background-activated:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.65em;line-height:0.67}`;
57
+ const buttonsIonicCss = () => `.sc-ion-buttons-ionic-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0)}.sc-ion-buttons-ionic-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ionic-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ionic-s .button-clear{--color:var(--token-text-default, var(--token-primitives-neutral-1200, #242424));--background:transparent;--background-activated:transparent;--background-focused:transparent;--background-hover:transparent}.sc-ion-buttons-ionic-s .button-has-icon-only{width:var(--token-scale-1000, 40px);height:var(--token-scale-1000, 40px)}.sc-ion-buttons-ionic-s ion-icon[slot=icon-only]{font-size:var(--token-font-size-600, 1.5rem)}`;
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-footer-hide-scroll-partner)) .inner-scroll{-webkit-transform:translateY(0);transform:translateY(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;height:100%;-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-footer-hide-scroll-partner).content-header-hide-scroll-hidden) .inner-scroll{-webkit-transform:translateY(calc(-1 * var(--header-hide-slide-y, 0px)));transform:translateY(calc(-1 * var(--header-hide-slide-y, 0px)));-webkit-backface-visibility:hidden;backface-visibility:hidden;height:calc(100% + var(--header-hide-slide-y, 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-header-hide-scroll-partner)) .inner-scroll{-webkit-transform:translateY(0);transform:translateY(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;height:100%;-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-footer-hide-scroll-partner:not(.content-header-hide-scroll-partner).content-footer-hide-scroll-hidden) .inner-scroll{-webkit-transform:translateY(0);transform:translateY(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;height:calc(100% + var(--footer-hide-slide-y, 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-header-hide-scroll-partner.content-footer-hide-scroll-partner:not(.content-header-hide-scroll-hidden):not(.content-footer-hide-scroll-hidden)) .inner-scroll{-webkit-transform:translateY(0);transform:translateY(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;height:100%;-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.content-footer-hide-scroll-partner.content-header-hide-scroll-hidden:not(.content-footer-hide-scroll-hidden)) .inner-scroll{-webkit-transform:translateY(calc(-1 * var(--header-hide-slide-y, 0px)));transform:translateY(calc(-1 * var(--header-hide-slide-y, 0px)));-webkit-backface-visibility:hidden;backface-visibility:hidden;height:calc(100% + var(--header-hide-slide-y, 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-header-hide-scroll-partner.content-footer-hide-scroll-partner:not(.content-header-hide-scroll-hidden).content-footer-hide-scroll-hidden) .inner-scroll{-webkit-transform:translateY(0);transform:translateY(0);-webkit-backface-visibility:hidden;backface-visibility:hidden;height:calc(100% + var(--footer-hide-slide-y, 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-header-hide-scroll-partner.content-footer-hide-scroll-partner.content-header-hide-scroll-hidden.content-footer-hide-scroll-hidden) .inner-scroll{-webkit-transform:translateY(calc(-1 * var(--header-hide-slide-y, 0px)));transform:translateY(calc(-1 * var(--header-hide-slide-y, 0px)));-webkit-backface-visibility:hidden;backface-visibility:hidden;height:calc(100% + var(--header-hide-slide-y, 0px) + var(--footer-hide-slide-y, 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)}`;
163
95
 
164
96
  const Content = class {
165
97
  constructor(hostRef) {
@@ -322,9 +254,8 @@ const Content = class {
322
254
  this.resize();
323
255
  }, 100);
324
256
  }
325
- shouldForceOverscroll() {
257
+ shouldForceOverscroll(mode) {
326
258
  const { forceOverscroll } = this;
327
- const mode = ionicGlobal.getIonMode(this);
328
259
  return forceOverscroll === undefined ? mode === 'ios' && ionicGlobal.isPlatform('ios') : forceOverscroll;
329
260
  }
330
261
  resize() {
@@ -520,12 +451,13 @@ const Content = class {
520
451
  render() {
521
452
  const { fixedSlotPlacement, inheritedAttributes, isMainContent, scrollX, scrollY, el } = this;
522
453
  const rtl = dir.isRTL(el) ? 'rtl' : 'ltr';
523
- const mode = ionicGlobal.getIonMode(this);
524
- const forceOverscroll = this.shouldForceOverscroll();
525
- const transitionShadow = mode === 'ios';
454
+ const theme$1 = ionicGlobal.getIonTheme(this);
455
+ const mode = ionicGlobal.getIonMode(this, theme$1);
456
+ const forceOverscroll = this.shouldForceOverscroll(mode);
457
+ const transitionShadow = theme$1 === 'ios';
526
458
  this.resize();
527
- return (index.h(index.Host, Object.assign({ key: '8c1bc4a4df8698d3884741eb38512dc059210c50', role: isMainContent ? 'main' : undefined, class: theme.createColorClasses(this.color, {
528
- [mode]: true,
459
+ return (index.h(index.Host, Object.assign({ key: 'd7f325c30b698dc42ec5e8c45b29e82749743cf4', role: isMainContent ? 'main' : undefined, class: theme.createColorClasses(this.color, {
460
+ [theme$1]: true,
529
461
  'content-fullscreen': this.fullscreen,
530
462
  'content-sizing': theme.hostContext('ion-popover', this.el),
531
463
  overscroll: forceOverscroll,
@@ -533,12 +465,12 @@ const Content = class {
533
465
  }), style: {
534
466
  '--offset-top': `${this.cTop}px`,
535
467
  '--offset-bottom': `${this.cBottom}px`,
536
- } }, inheritedAttributes), index.h("div", { key: '5e7412549b51ef7543d9378ecab9aac6bc461588', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? index.h("slot", { name: "fixed" }) : null, index.h("div", { key: '33f6fbf7e1e027c7cbd2dda95b487f18dc648cef', class: {
468
+ } }, inheritedAttributes), index.h("div", { key: 'c93b2c622a69c7fd153bbe9b0c6f8c24d85ed969', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? index.h("slot", { name: "fixed" }) : null, index.h("div", { key: '1700cc94e464ad1ab1c6672270f9649e90be3a5e', class: {
537
469
  'inner-scroll': true,
538
470
  'scroll-x': scrollX,
539
471
  'scroll-y': scrollY,
540
472
  overscroll: (scrollX || scrollY) && forceOverscroll,
541
- }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: '00c8fe7b9e73533c702273c9457d274195d54e98' })), 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));
473
+ }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: 'bff713ead4f61730e3f36b5af4b771ae62bde6cd' })), 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));
542
474
  }
543
475
  get el() { return index.getElement(this); }
544
476
  };
@@ -564,7 +496,8 @@ const getPageElement = (el) => {
564
496
  * between the popover and the edges of the screen. But if the popover contains
565
497
  * its own page element, we should use that instead.
566
498
  */
567
- const page = el.closest('ion-app, ion-page, .ion-page, page-inner, .popover-content');
499
+ const appRootSelector = index.config.get('appRootSelector', 'ion-app');
500
+ const page = el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner, .popover-content`);
568
501
  if (page) {
569
502
  return page;
570
503
  }
@@ -599,6 +532,171 @@ const updateScrollDetail = (detail, el, timestamp, shouldStart) => {
599
532
  };
600
533
  Content.style = contentCss();
601
534
 
535
+ /** Cumulative downward delta before hiding (header or footer `collapse="hide"`). */
536
+ const COLLAPSE_HIDE_THRESHOLD_PX = 24;
537
+ /**
538
+ * Cumulative upward delta before showing again after hide. Small bias
539
+ * (instead of "any upward delta") guards against inertial-scroll
540
+ * oscillation flicking the region back open during a downward gesture.
541
+ */
542
+ const COLLAPSE_SHOW_THRESHOLD_PX = 5;
543
+ const WHEEL_SCROLL_SUPPRESS_MS = 80;
544
+ const getContentHostFromScrollEl = (scrollEl) => {
545
+ const root = scrollEl.getRootNode();
546
+ if (root instanceof ShadowRoot && root.host instanceof HTMLElement) {
547
+ return root.host;
548
+ }
549
+ // Light-DOM fallback: the scroll element may live inside a non-shadow
550
+ // ion-content (e.g. custom scroll host). Walk up to the nearest ion-content.
551
+ return scrollEl.closest('ion-content');
552
+ };
553
+ const applySlideDistance = (regionEl, contentHost, slideCssVar, heightPx) => {
554
+ const value = `${Math.max(0, Math.ceil(heightPx))}px`;
555
+ regionEl.style.setProperty(slideCssVar, value);
556
+ contentHost === null || contentHost === void 0 ? void 0 : contentHost.style.setProperty(slideCssVar, value);
557
+ };
558
+ const clearSlideDistance = (regionEl, contentHost, slideCssVar) => {
559
+ regionEl.style.removeProperty(slideCssVar);
560
+ contentHost === null || contentHost === void 0 ? void 0 : contentHost.style.removeProperty(slideCssVar);
561
+ };
562
+ /**
563
+ * Scroll/wheel-driven hide/show for `collapse="hide"` on `ion-header` or `ion-footer`.
564
+ * Hide after {@link COLLAPSE_HIDE_THRESHOLD_PX}px cumulative downward delta; show after
565
+ * {@link COLLAPSE_SHOW_THRESHOLD_PX}px cumulative upward delta. Each direction drains
566
+ * (not resets) the opposing accumulator so inertial-scroll jitter doesn't stall either
567
+ * transition. Motion is defined in component SCSS and `content.scss`; this toggles
568
+ * classes and syncs the slide distance CSS var.
569
+ */
570
+ const createCollapseHideInteraction = ({ regionEl, scrollEl, slideCssVar, contentPartnerClass, contentHiddenClass, regionHiddenClass, }) => {
571
+ const contentHost = getContentHostFromScrollEl(scrollEl);
572
+ if (contentHost !== null) {
573
+ contentHost.classList.add(contentPartnerClass);
574
+ }
575
+ let resizeObserver;
576
+ let destroyed = false;
577
+ const syncSlideDistance = () => {
578
+ index.readTask(() => {
579
+ if (destroyed) {
580
+ return;
581
+ }
582
+ const heightPx = regionEl.offsetHeight;
583
+ index.writeTask(() => {
584
+ if (destroyed) {
585
+ return;
586
+ }
587
+ applySlideDistance(regionEl, contentHost, slideCssVar, heightPx);
588
+ });
589
+ });
590
+ };
591
+ if (typeof ResizeObserver !== 'undefined') {
592
+ resizeObserver = new ResizeObserver(() => {
593
+ syncSlideDistance();
594
+ });
595
+ resizeObserver.observe(regionEl);
596
+ }
597
+ syncSlideDistance();
598
+ requestAnimationFrame(() => {
599
+ if (!destroyed) {
600
+ syncSlideDistance();
601
+ }
602
+ });
603
+ let hidden = false;
604
+ let accDown = 0;
605
+ let accUp = 0;
606
+ let lastScrollTop = scrollEl.scrollTop;
607
+ let lastWheelTime = 0;
608
+ const setHidden = (next) => {
609
+ if (hidden === next || destroyed) {
610
+ return;
611
+ }
612
+ hidden = next;
613
+ // When transitioning to hidden, re-measure synchronously in case the
614
+ // initial layout reported offsetHeight === 0 (e.g. mid page transition).
615
+ // Without this the slide animates by 0px and only opacity fades.
616
+ if (hidden) {
617
+ const heightPx = regionEl.offsetHeight;
618
+ if (heightPx > 0) {
619
+ applySlideDistance(regionEl, contentHost, slideCssVar, heightPx);
620
+ }
621
+ }
622
+ index.writeTask(() => {
623
+ if (destroyed) {
624
+ return;
625
+ }
626
+ regionEl.classList.toggle(regionHiddenClass, hidden);
627
+ contentHost === null || contentHost === void 0 ? void 0 : contentHost.classList.toggle(contentHiddenClass, hidden);
628
+ if (hidden) {
629
+ // `inert` removes the subtree from the tab order and AT, AND moves
630
+ // focus out automatically in supporting browsers. `aria-hidden` is
631
+ // kept as a fallback for older engines without `inert` support.
632
+ regionEl.setAttribute('inert', '');
633
+ regionEl.setAttribute('aria-hidden', 'true');
634
+ }
635
+ else {
636
+ regionEl.removeAttribute('inert');
637
+ regionEl.removeAttribute('aria-hidden');
638
+ }
639
+ });
640
+ };
641
+ // Accumulate cumulative movement in each direction. The OPPOSITE accumulator
642
+ // is drained (not reset) by each event, so brief inertial jitter does not
643
+ // wipe a sustained gesture's accumulation. Crossing a threshold resets both.
644
+ const processDelta = (delta) => {
645
+ if (delta > 0) {
646
+ accUp = Math.max(0, accUp - delta);
647
+ accDown += delta;
648
+ if (accDown >= COLLAPSE_HIDE_THRESHOLD_PX) {
649
+ setHidden(true);
650
+ accDown = 0;
651
+ accUp = 0;
652
+ }
653
+ }
654
+ else if (delta < 0) {
655
+ const mag = -delta;
656
+ accDown = Math.max(0, accDown - mag);
657
+ accUp += mag;
658
+ if (accUp >= COLLAPSE_SHOW_THRESHOLD_PX) {
659
+ setHidden(false);
660
+ accUp = 0;
661
+ accDown = 0;
662
+ }
663
+ }
664
+ };
665
+ const onWheel = (ev) => {
666
+ if (destroyed) {
667
+ return;
668
+ }
669
+ lastWheelTime = performance.now();
670
+ processDelta(ev.deltaY);
671
+ };
672
+ const onScroll = () => {
673
+ if (destroyed) {
674
+ return;
675
+ }
676
+ const st = scrollEl.scrollTop;
677
+ if (performance.now() - lastWheelTime < WHEEL_SCROLL_SUPPRESS_MS) {
678
+ lastScrollTop = st;
679
+ return;
680
+ }
681
+ const delta = st - lastScrollTop;
682
+ lastScrollTop = st;
683
+ processDelta(delta);
684
+ };
685
+ scrollEl.addEventListener('wheel', onWheel, { passive: true });
686
+ scrollEl.addEventListener('scroll', onScroll, { passive: true });
687
+ return () => {
688
+ destroyed = true;
689
+ resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();
690
+ scrollEl.removeEventListener('wheel', onWheel);
691
+ scrollEl.removeEventListener('scroll', onScroll);
692
+ regionEl.classList.remove(regionHiddenClass);
693
+ regionEl.removeAttribute('inert');
694
+ regionEl.removeAttribute('aria-hidden');
695
+ contentHost === null || contentHost === void 0 ? void 0 : contentHost.classList.remove(contentPartnerClass, contentHiddenClass);
696
+ clearSlideDistance(regionEl, contentHost, slideCssVar);
697
+ };
698
+ };
699
+
602
700
  const handleFooterFade = (scrollEl, baseEl) => {
603
701
  index.readTask(() => {
604
702
  const scrollTop = scrollEl.scrollTop;
@@ -627,20 +725,32 @@ const handleFooterFade = (scrollEl, baseEl) => {
627
725
  });
628
726
  });
629
727
  };
728
+ const createFooterHideInteraction = (footerEl, scrollEl) => createCollapseHideInteraction({
729
+ regionEl: footerEl,
730
+ scrollEl,
731
+ slideCssVar: '--footer-hide-slide-y',
732
+ contentPartnerClass: 'content-footer-hide-scroll-partner',
733
+ contentHiddenClass: 'content-footer-hide-scroll-hidden',
734
+ regionHiddenClass: 'footer-collapse-hide-hidden',
735
+ });
736
+
737
+ 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)}ion-footer.footer-collapse-hide{-webkit-transform:translateY(0);transform:translateY(0);-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);opacity:1}ion-footer.footer-collapse-hide.footer-collapse-hide-hidden{-webkit-transform:translateY(var(--footer-hide-slide-y, 0px));transform:translateY(var(--footer-hide-slide-y, 0px));pointer-events:none;-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}.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}`;
630
738
 
631
- 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}`;
739
+ 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)}ion-footer.footer-collapse-hide{-webkit-transform:translateY(0);transform:translateY(0);-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);opacity:1}ion-footer.footer-collapse-hide.footer-collapse-hide-hidden{-webkit-transform:translateY(var(--footer-hide-slide-y, 0px));transform:translateY(var(--footer-hide-slide-y, 0px));pointer-events:none;-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}.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}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}`;
632
740
 
633
- 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}`;
741
+ 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)}ion-footer.footer-collapse-hide{-webkit-transform:translateY(0);transform:translateY(0);-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);opacity:1}ion-footer.footer-collapse-hide.footer-collapse-hide-hidden{-webkit-transform:translateY(var(--footer-hide-slide-y, 0px));transform:translateY(var(--footer-hide-slide-y, 0px));pointer-events:none;-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}.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}`;
634
742
 
635
743
  const Footer = class {
636
744
  constructor(hostRef) {
637
745
  index.registerInstance(this, hostRef);
746
+ this.didLoad = false;
747
+ this.setupToken = 0;
638
748
  this.keyboardCtrl = null;
639
749
  this.keyboardCtrlPromise = null;
640
750
  this.keyboardVisible = false;
641
751
  /**
642
752
  * If `true`, the footer will be translucent.
643
- * Only applies when the mode is `"ios"` and the device supports
753
+ * Only applies when the theme is `"ios"` and the device supports
644
754
  * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
645
755
  *
646
756
  * Note: In order to scroll content behind the footer, the `fullscreen`
@@ -648,25 +758,46 @@ const Footer = class {
648
758
  */
649
759
  this.translucent = false;
650
760
  this.checkCollapsibleFooter = () => {
651
- const mode = ionicGlobal.getIonMode(this);
652
- if (mode !== 'ios') {
653
- return;
654
- }
761
+ const theme = ionicGlobal.getIonTheme(this);
655
762
  const { collapse } = this;
656
763
  const hasFade = collapse === 'fade';
764
+ const hasHide = collapse === 'hide';
765
+ const runIosFade = theme === 'ios' && hasFade;
766
+ if (!runIosFade && !hasHide) {
767
+ this.destroyCollapsibleFooter();
768
+ return;
769
+ }
770
+ // Skip teardown/rebuild when the collapse mode and theme have not changed
771
+ // since the last setup — avoids thrashing listeners and resetting scroll
772
+ // accumulators on unrelated re-renders (e.g. keyboardVisible state flips).
773
+ const activeMode = hasHide ? 'hide' : 'fade';
774
+ if (this.appliedCollapse === activeMode && this.appliedTheme === theme) {
775
+ return;
776
+ }
657
777
  this.destroyCollapsibleFooter();
658
- if (hasFade) {
659
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
660
- const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
661
- if (!contentEl) {
662
- index$1.printIonContentErrorMsg(this.el);
663
- return;
664
- }
778
+ const appRootSelector = index.config.get('appRootSelector', 'ion-app');
779
+ const pageEl = this.el.closest(`${appRootSelector},ion-page,.ion-page,page-inner`);
780
+ const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
781
+ if (!contentEl) {
782
+ index$1.printIonContentErrorMsg(this.el);
783
+ return;
784
+ }
785
+ this.appliedCollapse = activeMode;
786
+ this.appliedTheme = theme;
787
+ if (runIosFade) {
665
788
  this.setupFadeFooter(contentEl);
666
789
  }
790
+ else if (hasHide) {
791
+ void this.setupHideFooter(contentEl);
792
+ }
667
793
  };
668
794
  this.setupFadeFooter = async (contentEl) => {
669
- const scrollEl = (this.scrollEl = await index$1.getScrollElement(contentEl));
795
+ const token = ++this.setupToken;
796
+ const scrollEl = await index$1.getScrollElement(contentEl);
797
+ if (token !== this.setupToken) {
798
+ return;
799
+ }
800
+ this.scrollEl = scrollEl;
670
801
  /**
671
802
  * Handle fading of toolbars on scroll
672
803
  */
@@ -678,12 +809,18 @@ const Footer = class {
678
809
  };
679
810
  }
680
811
  componentDidLoad() {
812
+ this.didLoad = true;
681
813
  this.checkCollapsibleFooter();
682
814
  }
683
815
  componentDidUpdate() {
684
816
  this.checkCollapsibleFooter();
685
817
  }
686
818
  async connectedCallback() {
819
+ // On re-attach (didLoad already true but disconnectedCallback ran since),
820
+ // componentDidLoad will not fire again — re-run setup here.
821
+ if (this.didLoad) {
822
+ this.checkCollapsibleFooter();
823
+ }
687
824
  const promise = keyboardController.createKeyboardController(async (keyboardOpen, waitForResize) => {
688
825
  /**
689
826
  * If the keyboard is hiding, then we need to wait
@@ -711,6 +848,7 @@ const Footer = class {
711
848
  }
712
849
  }
713
850
  disconnectedCallback() {
851
+ this.destroyCollapsibleFooter();
714
852
  if (this.keyboardCtrlPromise) {
715
853
  this.keyboardCtrlPromise.then((ctrl) => ctrl.destroy());
716
854
  this.keyboardCtrlPromise = null;
@@ -720,30 +858,49 @@ const Footer = class {
720
858
  this.keyboardCtrl = null;
721
859
  }
722
860
  }
861
+ async setupHideFooter(contentEl) {
862
+ const token = ++this.setupToken;
863
+ const scrollEl = await index$1.getScrollElement(contentEl);
864
+ // A newer checkCollapsibleFooter ran while we were awaiting — abandon.
865
+ if (token !== this.setupToken) {
866
+ return;
867
+ }
868
+ this.scrollEl = scrollEl;
869
+ this.footerHideCleanup = createFooterHideInteraction(this.el, scrollEl);
870
+ }
723
871
  destroyCollapsibleFooter() {
872
+ // Invalidate any in-flight setupHideFooter/setupFadeFooter awaits.
873
+ this.setupToken++;
874
+ if (this.footerHideCleanup) {
875
+ this.footerHideCleanup();
876
+ this.footerHideCleanup = undefined;
877
+ }
724
878
  if (this.scrollEl && this.contentScrollCallback) {
725
879
  this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
726
880
  this.contentScrollCallback = undefined;
727
881
  }
882
+ this.appliedCollapse = undefined;
883
+ this.appliedTheme = undefined;
728
884
  }
729
885
  render() {
730
886
  const { translucent, collapse } = this;
731
- const mode = ionicGlobal.getIonMode(this);
887
+ const theme = ionicGlobal.getIonTheme(this);
732
888
  const tabs = this.el.closest('ion-tabs');
733
889
  const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');
734
- return (index.h(index.Host, { key: '71939c4bbaef5062532a99ee2e33574102a9abad', role: "contentinfo", class: {
735
- [mode]: true,
890
+ return (index.h(index.Host, { key: '5df79a31f36febfad49c5858727e93c7ba5734f8', role: "contentinfo", class: {
891
+ [theme]: true,
736
892
  // Used internally for styling
737
- [`footer-${mode}`]: true,
893
+ [`footer-${theme}`]: true,
738
894
  [`footer-translucent`]: translucent,
739
- [`footer-translucent-${mode}`]: translucent,
895
+ [`footer-translucent-${theme}`]: translucent,
740
896
  ['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
741
897
  [`footer-collapse-${collapse}`]: collapse !== undefined,
742
- } }, mode === 'ios' && translucent && index.h("div", { key: '2fa14f61661c47c661cecd696176728d6eafa74f', class: "footer-background" }), index.h("slot", { key: '8e63696e7c528d5c38201e546bf08135290d0945' })));
898
+ } }, theme === 'ios' && translucent && index.h("div", { key: '9175ae4f6576d82dff2a00a36e91f4b633d8c9ad', class: "footer-background" }), index.h("slot", { key: 'd6d618cdae4726822d8e82edb782c5c86fc7b77b' })));
743
899
  }
744
900
  get el() { return index.getElement(this); }
745
901
  };
746
902
  Footer.style = {
903
+ ionic: ionicFooterMdCss(),
747
904
  ios: footerIosCss(),
748
905
  md: footerMdCss()
749
906
  };
@@ -924,6 +1081,14 @@ const scaleLargeTitles = (toolbars = [], scale = 1, transition = false) => {
924
1081
  titleDiv.style.transform = `scale3d(${scale}, ${scale}, 1)`;
925
1082
  });
926
1083
  };
1084
+ const createHeaderHideInteraction = (headerEl, scrollEl) => createCollapseHideInteraction({
1085
+ regionEl: headerEl,
1086
+ scrollEl,
1087
+ slideCssVar: '--header-hide-slide-y',
1088
+ contentPartnerClass: 'content-header-hide-scroll-partner',
1089
+ contentHiddenClass: 'content-header-hide-scroll-hidden',
1090
+ regionHiddenClass: 'header-collapse-hide-hidden',
1091
+ });
927
1092
  const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
928
1093
  index.readTask(() => {
929
1094
  const scrollTop = scrollEl.scrollTop;
@@ -960,37 +1125,45 @@ const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
960
1125
  *
961
1126
  * @param isInsideMenu If ion-header is inside ion-menu.
962
1127
  * @param isCondensed If ion-header has collapse="condense".
963
- * @param mode The current mode.
1128
+ * @param theme The current theme.
964
1129
  * @returns 'none' if inside ion-menu or if condensed in md
965
- * mode, otherwise 'banner'.
1130
+ * theme, otherwise 'banner'.
966
1131
  */
967
- const getRoleType = (isInsideMenu, isCondensed, mode) => {
1132
+ const getRoleType = (isInsideMenu, isCondensed, theme) => {
968
1133
  // If the header is inside a menu, it should not have the banner role.
969
1134
  if (isInsideMenu) {
970
1135
  return ROLE_NONE;
971
1136
  }
972
1137
  /**
973
- * Only apply role="none" to `md` mode condensed headers
1138
+ * Only apply role="none" to `md` & `ionic` theme condensed headers
974
1139
  * since the large header is never shown.
975
1140
  */
976
- if (isCondensed && mode === 'md') {
1141
+ if (isCondensed && theme !== 'ios') {
977
1142
  return ROLE_NONE;
978
1143
  }
979
1144
  // Default to banner role.
980
1145
  return ROLE_BANNER;
981
1146
  };
982
1147
 
983
- 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}`;
1148
+ 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)}ion-header.header-collapse-hide{-webkit-transform:translateY(0);transform:translateY(0);-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);opacity:1;z-index:10}ion-header.header-collapse-hide.header-collapse-hide-hidden{-webkit-transform:translateY(calc(-1 * var(--header-hide-slide-y, 0px)));transform:translateY(calc(-1 * var(--header-hide-slide-y, 0px)));pointer-events:none;-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}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}}`;
1149
+
1150
+ 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)}ion-header.header-collapse-hide{-webkit-transform:translateY(0);transform:translateY(0);-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);opacity:1;z-index:10}ion-header.header-collapse-hide.header-collapse-hide-hidden{-webkit-transform:translateY(calc(-1 * var(--header-hide-slide-y, 0px)));transform:translateY(calc(-1 * var(--header-hide-slide-y, 0px)));pointer-events:none;-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}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-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}`;
984
1151
 
985
- 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}`;
1152
+ 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)}ion-header.header-collapse-hide{-webkit-transform:translateY(0);transform:translateY(0);-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);opacity:1;z-index:10}ion-header.header-collapse-hide.header-collapse-hide-hidden{-webkit-transform:translateY(calc(-1 * var(--header-hide-slide-y, 0px)));transform:translateY(calc(-1 * var(--header-hide-slide-y, 0px)));pointer-events:none;-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}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{display:none}.header-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
986
1153
 
987
1154
  const Header = class {
988
1155
  constructor(hostRef) {
989
1156
  index.registerInstance(this, hostRef);
990
1157
  this.inheritedAttributes = {};
1158
+ this.didLoad = false;
1159
+ /**
1160
+ * If `true`, the header will have a line at the bottom.
1161
+ * TODO(ROU-10855): add support for this prop on ios/md themes
1162
+ */
1163
+ this.divider = false;
991
1164
  /**
992
1165
  * If `true`, the header will be translucent.
993
- * Only applies when the mode is `"ios"` and the device supports
1166
+ * Only applies when the theme is `"ios"` or `"ionic"` and the device supports
994
1167
  * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
995
1168
  *
996
1169
  * Note: In order to scroll content behind the header, the `fullscreen`
@@ -1013,25 +1186,38 @@ const Header = class {
1013
1186
  this.inheritedAttributes = helpers.inheritAriaAttributes(this.el);
1014
1187
  }
1015
1188
  componentDidLoad() {
1189
+ this.didLoad = true;
1016
1190
  this.checkCollapsibleHeader();
1017
1191
  }
1018
1192
  componentDidUpdate() {
1019
1193
  this.checkCollapsibleHeader();
1020
1194
  }
1195
+ connectedCallback() {
1196
+ // On re-attach (didLoad already true but disconnectedCallback ran since),
1197
+ // componentDidLoad will not fire again — re-run setup here.
1198
+ if (this.didLoad) {
1199
+ this.checkCollapsibleHeader();
1200
+ }
1201
+ }
1021
1202
  disconnectedCallback() {
1022
1203
  this.destroyCollapsibleHeader();
1023
1204
  }
1024
1205
  async checkCollapsibleHeader() {
1025
- const mode = ionicGlobal.getIonMode(this);
1026
- if (mode !== 'ios') {
1027
- return;
1028
- }
1206
+ const theme = ionicGlobal.getIonTheme(this);
1029
1207
  const { collapse } = this;
1030
1208
  const hasCondense = collapse === 'condense';
1031
1209
  const hasFade = collapse === 'fade';
1210
+ const hasHide = collapse === 'hide';
1211
+ const runIosCollapse = theme === 'ios' && (hasCondense || hasFade);
1212
+ const runHide = hasHide;
1213
+ if (!runIosCollapse && !runHide) {
1214
+ this.destroyCollapsibleHeader();
1215
+ return;
1216
+ }
1032
1217
  this.destroyCollapsibleHeader();
1033
- if (hasCondense) {
1034
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
1218
+ const appRootSelector = index.config.get('appRootSelector', 'ion-app');
1219
+ if (runIosCollapse && hasCondense) {
1220
+ const pageEl = this.el.closest(`${appRootSelector},ion-page,.ion-page,page-inner`);
1035
1221
  const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
1036
1222
  // Cloned elements are always needed in iOS transition
1037
1223
  index.writeTask(() => {
@@ -1041,8 +1227,8 @@ const Header = class {
1041
1227
  });
1042
1228
  await this.setupCondenseHeader(contentEl, pageEl);
1043
1229
  }
1044
- else if (hasFade) {
1045
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
1230
+ else if (runIosCollapse && hasFade) {
1231
+ const pageEl = this.el.closest(`${appRootSelector},ion-page,.ion-page,page-inner`);
1046
1232
  const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
1047
1233
  if (!contentEl) {
1048
1234
  index$1.printIonContentErrorMsg(this.el);
@@ -1051,12 +1237,29 @@ const Header = class {
1051
1237
  const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
1052
1238
  await this.setupFadeHeader(contentEl, condenseHeader);
1053
1239
  }
1240
+ if (runHide) {
1241
+ const pageEl = this.el.closest(`${appRootSelector},ion-page,.ion-page,page-inner`);
1242
+ const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
1243
+ if (!contentEl) {
1244
+ index$1.printIonContentErrorMsg(this.el);
1245
+ return;
1246
+ }
1247
+ await this.setupHideHeader(contentEl);
1248
+ }
1249
+ }
1250
+ async setupHideHeader(contentEl) {
1251
+ const scrollEl = (this.scrollEl = await index$1.getScrollElement(contentEl));
1252
+ this.headerHideCleanup = createHeaderHideInteraction(this.el, scrollEl);
1054
1253
  }
1055
1254
  destroyCollapsibleHeader() {
1056
1255
  if (this.intersectionObserver) {
1057
1256
  this.intersectionObserver.disconnect();
1058
1257
  this.intersectionObserver = undefined;
1059
1258
  }
1259
+ if (this.headerHideCleanup) {
1260
+ this.headerHideCleanup();
1261
+ this.headerHideCleanup = undefined;
1262
+ }
1060
1263
  if (this.scrollEl && this.contentScrollCallback) {
1061
1264
  this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
1062
1265
  this.contentScrollCallback = undefined;
@@ -1117,29 +1320,31 @@ const Header = class {
1117
1320
  });
1118
1321
  }
1119
1322
  render() {
1120
- const { translucent, inheritedAttributes } = this;
1121
- const mode = ionicGlobal.getIonMode(this);
1323
+ const { translucent, inheritedAttributes, divider } = this;
1324
+ const theme$1 = ionicGlobal.getIonTheme(this);
1122
1325
  const collapse = this.collapse || 'none';
1123
1326
  const isCondensed = collapse === 'condense';
1124
1327
  // banner role must be at top level, so remove role if inside a menu
1125
- const roleType = getRoleType(theme.hostContext('ion-menu', this.el), isCondensed, mode);
1126
- return (index.h(index.Host, Object.assign({ key: '863c4568cd7b8c0ec55109f193bbbaed68a1346e', role: roleType, class: {
1127
- [mode]: true,
1328
+ const roleType = getRoleType(theme.hostContext('ion-menu', this.el), isCondensed, theme$1);
1329
+ return (index.h(index.Host, Object.assign({ key: '5cae1ff0bbc5f2035325c128a9394caf7f1459a0', role: roleType, class: {
1330
+ [theme$1]: true,
1128
1331
  // Used internally for styling
1129
- [`header-${mode}`]: true,
1332
+ [`header-${theme$1}`]: true,
1130
1333
  [`header-translucent`]: this.translucent,
1131
1334
  [`header-collapse-${collapse}`]: true,
1132
- [`header-translucent-${mode}`]: this.translucent,
1133
- } }, inheritedAttributes), mode === 'ios' && translucent && index.h("div", { key: '25c3bdce328b0b35607d154c8b8374679313d881', class: "header-background" }), index.h("slot", { key: 'b44fab0a9be7920b9650da26117c783e751e1702' })));
1335
+ [`header-translucent-${theme$1}`]: this.translucent,
1336
+ ['header-divider']: divider,
1337
+ } }, inheritedAttributes), theme$1 !== 'md' && translucent && index.h("div", { key: '705f120951a3dd429286b66cd0b511fa267b3702', class: "header-background" }), index.h("slot", { key: '1c7a9d474083cf92abfe88c02d363f8d420716ca' })));
1134
1338
  }
1135
1339
  get el() { return index.getElement(this); }
1136
1340
  };
1137
1341
  Header.style = {
1342
+ ionic: headerIonicCss(),
1138
1343
  ios: headerIosCss(),
1139
1344
  md: headerMdCss()
1140
1345
  };
1141
1346
 
1142
- const routerOutletCss = () => `:host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
1347
+ const routerOutletCss = () => `:host{right:0;left:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
1143
1348
 
1144
1349
  const RouterOutlet = class {
1145
1350
  constructor(hostRef) {
@@ -1150,7 +1355,7 @@ const RouterOutlet = class {
1150
1355
  this.lockController = lockController.createLockController();
1151
1356
  this.gestureOrAnimationInProgress = false;
1152
1357
  /**
1153
- * The mode determines which platform styles to use.
1358
+ * The mode determines the platform behaviors of the component.
1154
1359
  */
1155
1360
  this.mode = ionicGlobal.getIonMode(this);
1156
1361
  /**
@@ -1158,11 +1363,10 @@ const RouterOutlet = class {
1158
1363
  */
1159
1364
  this.animated = true;
1160
1365
  }
1161
- swipeGestureChanged() {
1162
- this.updateGestureEnabled();
1163
- }
1164
1366
  swipeHandlerChanged() {
1165
- this.updateGestureEnabled();
1367
+ if (this.gesture) {
1368
+ this.gesture.enable(this.swipeHandler !== undefined);
1369
+ }
1166
1370
  }
1167
1371
  async connectedCallback() {
1168
1372
  const onStart = () => {
@@ -1171,7 +1375,7 @@ const RouterOutlet = class {
1171
1375
  this.swipeHandler.onStart();
1172
1376
  }
1173
1377
  };
1174
- this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-C0GCB18x.js'); })).createSwipeBackGesture(this.el, () => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart(), () => onStart(), (step) => { var _a; return (_a = this.ani) === null || _a === void 0 ? void 0 : _a.progressStep(step); }, (shouldComplete, step, dur) => {
1378
+ this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-jJFi5KCB.js'); })).createSwipeBackGesture(this.el, () => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart(), () => onStart(), (step) => { var _a; return (_a = this.ani) === null || _a === void 0 ? void 0 : _a.progressStep(step); }, (shouldComplete, step, dur) => {
1175
1379
  if (this.ani) {
1176
1380
  this.ani.onFinish(() => {
1177
1381
  this.gestureOrAnimationInProgress = false;
@@ -1202,21 +1406,11 @@ const RouterOutlet = class {
1202
1406
  this.gestureOrAnimationInProgress = false;
1203
1407
  }
1204
1408
  });
1205
- if (this.swipeGesture === undefined) {
1206
- this.swipeGesture = index.config.getBoolean('swipeBackEnabled', this.mode === 'ios');
1207
- }
1208
- else {
1209
- this.updateGestureEnabled();
1210
- }
1409
+ this.swipeHandlerChanged();
1211
1410
  }
1212
1411
  componentWillLoad() {
1213
1412
  this.ionNavWillLoad.emit();
1214
1413
  }
1215
- updateGestureEnabled() {
1216
- if (this.gesture) {
1217
- this.gesture.enable(this.swipeHandler !== undefined && this.swipeGesture === true);
1218
- }
1219
- }
1220
1414
  disconnectedCallback() {
1221
1415
  if (this.gesture) {
1222
1416
  this.gesture.destroy();
@@ -1327,13 +1521,10 @@ const RouterOutlet = class {
1327
1521
  return true;
1328
1522
  }
1329
1523
  render() {
1330
- return index.h("slot", { key: 'ce09e6fbba7b0a2276cdde5245bb37c9a162c1c7' });
1524
+ return index.h("slot", { key: 'f59dfdc11831ed91f5f7d8147cdc14f3c07bc289' });
1331
1525
  }
1332
1526
  get el() { return index.getElement(this); }
1333
1527
  static get watchers() { return {
1334
- "swipeGesture": [{
1335
- "swipeGestureChanged": 0
1336
- }],
1337
1528
  "swipeHandler": [{
1338
1529
  "swipeHandlerChanged": 0
1339
1530
  }]
@@ -1341,9 +1532,11 @@ const RouterOutlet = class {
1341
1532
  };
1342
1533
  RouterOutlet.style = routerOutletCss();
1343
1534
 
1344
- 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)}}`;
1535
+ 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}`;
1536
+
1537
+ 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)}}`;
1345
1538
 
1346
- 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}`;
1539
+ 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}`;
1347
1540
 
1348
1541
  const ToolbarTitle = class {
1349
1542
  constructor(hostRef) {
@@ -1366,13 +1559,13 @@ const ToolbarTitle = class {
1366
1559
  return this.size !== undefined ? this.size : 'default';
1367
1560
  }
1368
1561
  render() {
1369
- const mode = ionicGlobal.getIonMode(this);
1562
+ const theme$1 = ionicGlobal.getIonTheme(this);
1370
1563
  const size = this.getSize();
1371
- return (index.h(index.Host, { key: 'd9317e8e66cb6112717f5a9c252658777efbd873', class: theme.createColorClasses(this.color, {
1372
- [mode]: true,
1564
+ return (index.h(index.Host, { key: '87bb5264f4c13d0d6eeef874ed114539d0b59062', class: theme.createColorClasses(this.color, {
1565
+ [theme$1]: true,
1373
1566
  [`title-${size}`]: true,
1374
1567
  'title-rtl': document.dir === 'rtl',
1375
- }) }, index.h("div", { key: 'a4d011d6d409bf006d8efe33667002edb109820a', class: "toolbar-title" }, index.h("slot", { key: '4ca3303b957a0e5387f1e9058e5adb4c6275afcc' }))));
1568
+ }) }, index.h("div", { key: '75f2ddfaf693ffdec13d909eefdb09b441d76e80', class: "toolbar-title" }, index.h("slot", { key: '00539af5e250bee78fdd1c55f2ecdc8e53bc18b0' }))));
1376
1569
  }
1377
1570
  get el() { return index.getElement(this); }
1378
1571
  static get watchers() { return {
@@ -1382,18 +1575,29 @@ const ToolbarTitle = class {
1382
1575
  }; }
1383
1576
  };
1384
1577
  ToolbarTitle.style = {
1578
+ ionic: titleIonicCss(),
1385
1579
  ios: titleIosCss(),
1386
1580
  md: titleMdCss()
1387
1581
  };
1388
1582
 
1389
- 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%}`;
1583
+ 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}`;
1390
1584
 
1391
- 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}`;
1585
+ 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%}`;
1586
+
1587
+ 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}`;
1392
1588
 
1393
1589
  const Toolbar = class {
1394
1590
  constructor(hostRef) {
1395
1591
  index.registerInstance(this, hostRef);
1396
1592
  this.childrenStyles = new Map();
1593
+ this.slotClasses = [
1594
+ 'has-start-content',
1595
+ 'has-end-content',
1596
+ 'has-primary-content',
1597
+ 'has-secondary-content',
1598
+ ];
1599
+ this.showClasses = ['show-start', 'show-end', 'show-primary', 'show-secondary'];
1600
+ this.slotSizeVars = ['--start-end-size', '--primary-secondary-size'];
1397
1601
  }
1398
1602
  componentWillLoad() {
1399
1603
  const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));
@@ -1410,6 +1614,173 @@ const Toolbar = class {
1410
1614
  if (lastButtons) {
1411
1615
  lastButtons.classList.add('buttons-last-slot');
1412
1616
  }
1617
+ this.updateSlotClasses();
1618
+ }
1619
+ componentDidLoad() {
1620
+ this.updateSlotClasses();
1621
+ this.updateSlotWidths();
1622
+ }
1623
+ titlePlacementChanged() {
1624
+ this.updateSlotClasses();
1625
+ }
1626
+ /**
1627
+ * Gets the title placement.
1628
+ * Returns the title placement if it is set, otherwise returns `"center"`
1629
+ * for `ionic` and `ios`, and `"start"` for `md`.
1630
+ */
1631
+ getTitlePlacement() {
1632
+ if (this.titlePlacement !== undefined) {
1633
+ return this.titlePlacement;
1634
+ }
1635
+ return ionicGlobal.getIonTheme(this) === 'ionic' || ionicGlobal.getIonTheme(this) === 'ios' ? 'center' : 'start';
1636
+ }
1637
+ /**
1638
+ * Updates the CSS custom properties for slot widths
1639
+ * This ensures that slots shown by their met conditions
1640
+ * have a minimum width matching their required slot
1641
+ */
1642
+ updateSlotWidths(tries = 0) {
1643
+ // Set timeout to try to execute after everything is rendered
1644
+ setTimeout(() => {
1645
+ // Attempt to measure and update
1646
+ const success = this.measureAndUpdateSlots();
1647
+ // If not all measurements were successful, try again in 100 ms
1648
+ // cap recursion at 5 tries for safety
1649
+ if (!success && tries < 5) {
1650
+ setTimeout(() => {
1651
+ this.updateSlotWidths(tries + 1);
1652
+ }, 100);
1653
+ }
1654
+ });
1655
+ }
1656
+ /**
1657
+ * Measure the widths of the slots and update the CSS custom properties
1658
+ * for the minimum width of each pair of slots based on the largest width in each pair.
1659
+ * Returns whether we successfully measured all of the slots we expect to have content.
1660
+ * If not, the content probably hasn't rendered yet and we need to try again.
1661
+ */
1662
+ measureAndUpdateSlots() {
1663
+ // Define the relationship between slots based on the conditions array
1664
+ // Group slots that should have the same width
1665
+ const slotPairs = [
1666
+ { name: 'start-end', slots: ['start', 'end'] },
1667
+ { name: 'primary-secondary', slots: ['primary', 'secondary'] },
1668
+ ];
1669
+ // First, measure all slot widths
1670
+ const slotWidths = new Map();
1671
+ let allMeasurementsSuccessful = true;
1672
+ // Measure all slots with content
1673
+ const slots = ['start', 'end', 'primary', 'secondary'];
1674
+ slots.forEach((slot) => {
1675
+ var _a;
1676
+ if (this.el.classList.contains(`has-${slot}-content`)) {
1677
+ const slotElement = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slot}"]`);
1678
+ if (slotElement) {
1679
+ // Check if the slot contains an img or ion-img
1680
+ const assignedElements = slotElement.assignedElements({ flatten: true });
1681
+ const hasImg = assignedElements.some((el) => {
1682
+ if (el.tagName === 'IMG' || el.tagName === 'ION-IMG') {
1683
+ return true;
1684
+ }
1685
+ // Check for nested images
1686
+ return el.querySelector('img, ion-img');
1687
+ });
1688
+ // Temporarily allow slot to size to content by setting flex-basis
1689
+ // to 'auto'. This ensures that slotted images can render at their
1690
+ // intrinsic width for measurement.
1691
+ if (hasImg) {
1692
+ const { name } = slotPairs.find((pair) => pair.slots.includes(slot));
1693
+ this.el.style.setProperty(`--${name}-size`, 'auto');
1694
+ }
1695
+ const width = slotElement.offsetWidth;
1696
+ if (width > 0) {
1697
+ slotWidths.set(slot, width);
1698
+ }
1699
+ else {
1700
+ allMeasurementsSuccessful = false;
1701
+ }
1702
+ }
1703
+ }
1704
+ });
1705
+ // Then set the CSS custom properties based on the largest width in each pair
1706
+ slotPairs.forEach(({ name, slots }) => {
1707
+ // Find the maximum width among the slots in this pair
1708
+ let maxWidth = 0;
1709
+ let hasAnyContent = false;
1710
+ slots.forEach((slot) => {
1711
+ var _a;
1712
+ if (slotWidths.has(slot)) {
1713
+ hasAnyContent = true;
1714
+ maxWidth = Math.max(maxWidth, (_a = slotWidths.get(slot)) !== null && _a !== void 0 ? _a : 0);
1715
+ }
1716
+ });
1717
+ // If at least one slot in the pair has content, set the min-width for the pair
1718
+ if (hasAnyContent && maxWidth > 0) {
1719
+ // Set a single CSS variable for the pair
1720
+ this.el.style.setProperty(`--${name}-size`, `${maxWidth}px`);
1721
+ }
1722
+ });
1723
+ return allMeasurementsSuccessful;
1724
+ }
1725
+ /**
1726
+ * Removes all slot visibility classes and slot width CSS variables.
1727
+ */
1728
+ removeSlotClasses() {
1729
+ this.el.classList.remove(...this.slotClasses, ...this.showClasses);
1730
+ this.slotSizeVars.forEach((cssVar) => this.el.style.removeProperty(cssVar));
1731
+ }
1732
+ updateSlotClasses() {
1733
+ const titlePlacement = this.getTitlePlacement();
1734
+ if (titlePlacement !== 'center') {
1735
+ this.removeSlotClasses();
1736
+ return;
1737
+ }
1738
+ // Check if slots have content
1739
+ const slots = ['start', 'end', 'primary', 'secondary'];
1740
+ const classesToAdd = [];
1741
+ const classesToRemove = [];
1742
+ slots.forEach((slot) => {
1743
+ const slotHasContent = this.hasSlotContent(slot);
1744
+ const slotClass = `has-${slot}-content`;
1745
+ if (slotHasContent) {
1746
+ classesToAdd.push(slotClass);
1747
+ }
1748
+ else {
1749
+ classesToRemove.push(slotClass);
1750
+ }
1751
+ });
1752
+ // Force visibilities in certain conditions. This works by adding a class to the toolbar
1753
+ // named `show-{slot}`. This class will be added if the toolbar has the required slots
1754
+ // and does not have any of the excluded slots, otherwise it will be removed.
1755
+ // This is useful to enforce centering of the toolbar content when there are different amounts
1756
+ // of slots on either side of the toolbar.
1757
+ const conditions = [
1758
+ { name: 'end', requiredSlots: ['start'], excludeSlots: ['end', 'primary'] },
1759
+ { name: 'start', requiredSlots: ['end'], excludeSlots: ['start', 'secondary'] },
1760
+ { name: 'secondary', requiredSlots: ['primary'], excludeSlots: ['secondary', 'start'] },
1761
+ { name: 'primary', requiredSlots: ['secondary'], excludeSlots: ['primary', 'end'] },
1762
+ ];
1763
+ conditions.forEach((condition) => {
1764
+ const hasRequiredSlots = condition.requiredSlots.every((slot) => classesToAdd.includes(`has-${slot}-content`));
1765
+ const hasExcludedSlots = condition.excludeSlots.some((slot) => classesToAdd.includes(`has-${slot}-content`));
1766
+ const className = `show-${condition.name}`;
1767
+ if (hasRequiredSlots && !hasExcludedSlots) {
1768
+ classesToAdd.push(className);
1769
+ }
1770
+ else {
1771
+ classesToRemove.push(className);
1772
+ }
1773
+ });
1774
+ // Add classes to the toolbar element
1775
+ this.el.classList.add(...classesToAdd);
1776
+ this.el.classList.remove(...classesToRemove);
1777
+ // Update slot widths after classes have been updated
1778
+ this.updateSlotWidths();
1779
+ }
1780
+ hasSlotContent(slotName) {
1781
+ var _a;
1782
+ const slotNode = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slotName}"]`);
1783
+ return !!slotNode && slotNode.assignedNodes().length > 0;
1413
1784
  }
1414
1785
  childrenStyle(ev) {
1415
1786
  ev.stopPropagation();
@@ -1434,19 +1805,27 @@ const Toolbar = class {
1434
1805
  }
1435
1806
  }
1436
1807
  render() {
1437
- const mode = ionicGlobal.getIonMode(this);
1808
+ const theme$1 = ionicGlobal.getIonTheme(this);
1438
1809
  const childStyles = {};
1439
- this.childrenStyles.forEach((value) => {
1440
- Object.assign(childStyles, value);
1810
+ this.childrenStyles.forEach((style) => {
1811
+ Object.assign(childStyles, style);
1441
1812
  });
1442
- return (index.h(index.Host, { key: '40bad6fa7e94262438da4bbe037dcf8a5fa2df22', class: Object.assign(Object.assign({}, childStyles), theme.createColorClasses(this.color, {
1443
- [mode]: true,
1813
+ const titlePlacement = this.getTitlePlacement();
1814
+ return (index.h(index.Host, { key: '069913e9241b8e9a2dee8e7d088d181b6faeab5e', class: Object.assign(Object.assign({}, theme.createColorClasses(this.color, {
1815
+ [theme$1]: true,
1444
1816
  'in-toolbar': theme.hostContext('ion-toolbar', this.el),
1445
- })) }, index.h("div", { key: 'df44c9f0fe3958116ab860b0dad79c53b89f6c59', class: "toolbar-background", part: "background" }), index.h("div", { key: '2169ffa576875b8d5624211cc0b4bf86191562bc', class: "toolbar-container", part: "container" }, index.h("slot", { key: 'c8910dcf1ce98ab427fd89c3396a67c2a75bdd07', name: "start" }), index.h("slot", { key: '05da24d5ef96b9eebd83b534ce02c1f7bcd06680', name: "secondary" }), index.h("div", { key: '090fea1541e7e2b6ad74a6ded4eadffdb471ccce', class: "toolbar-content", part: "content" }, index.h("slot", { key: '507e143f92f6fa59ff23d94026411fa2c74f2f8e' })), index.h("slot", { key: 'f79fdee472e657e26a910cb89d7551943e40e440', name: "primary" }), index.h("slot", { key: 'dd40fe9ed490cf4346c642e195fdb524dc6cc4f5', name: "end" }))));
1817
+ [`toolbar-title-placement-${titlePlacement}`]: true,
1818
+ })), childStyles) }, index.h("div", { key: '3255531be492b9afa7b47476a805f923beea09db', class: "toolbar-background", part: "background" }), index.h("div", { key: '8758189374c0a12f293c30ca7f8f049b732d2cab', class: "toolbar-container", part: "container" }, index.h("slot", { key: '74c3705f717968893bf94ea95c99cae313ce68f3', name: "start", onSlotchange: () => this.updateSlotClasses }), index.h("slot", { key: '298c78f93291442f140f8c52983871215f20ea87', name: "secondary", onSlotchange: () => this.updateSlotClasses }), index.h("div", { key: 'f7376320b704b8ce375fe2223ae30d51bfc05acb', class: "toolbar-content", part: "content" }, index.h("slot", { key: 'ddaec08b1fbd13384d834ba4c3b4441c4d749faf' })), index.h("slot", { key: '6d5bce85159859bb548e4d3fb6b22208dcb48987', name: "primary", onSlotchange: () => this.updateSlotClasses }), index.h("slot", { key: 'd1d21752ed3bcc7bf15c20de1c0a6fd956373450', name: "end", onSlotchange: () => this.updateSlotClasses }))));
1446
1819
  }
1447
1820
  get el() { return index.getElement(this); }
1821
+ static get watchers() { return {
1822
+ "titlePlacement": [{
1823
+ "titlePlacementChanged": 0
1824
+ }]
1825
+ }; }
1448
1826
  };
1449
1827
  Toolbar.style = {
1828
+ ionic: toolbarIonicCss(),
1450
1829
  ios: toolbarIosCss(),
1451
1830
  md: toolbarMdCss()
1452
1831
  };