@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
@@ -1,21 +1,20 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import { r as registerInstance, e as config, f as printIonWarning, h, d as Host, g as getElement, c as createEvent, a as readTask, i as forceUpdate, w as writeTask, j as printIonError } from './index-tcQvqkiX.js';
5
- import { shouldUseCloseWatcher } from './hardware-back-button-B93Gru0Y.js';
6
- import { a as isPlatform, b as getIonMode } from './ionic-global-Cp_eT4sZ.js';
7
- import { i as inheritAriaAttributes, h as hasLazyBuild, c as componentOnReady, e as clamp, s as shallowEqualStringMap } from './helpers-HEqiOzXb.js';
4
+ import { r as registerInstance, h, e as config, d as Host, g as getElement, c as createEvent, a as readTask, i as forceUpdate, w as writeTask, j as printIonError } from './index-Omi_TcwW.js';
5
+ import { focusElements } from './focus-visible-vXpMhGrs.js';
6
+ import { c as getIonTheme, a as isPlatform, b as getIonMode } from './ionic-global--9mOmThr.js';
7
+ import { i as inheritAriaAttributes, h as hasLazyBuild, c as componentOnReady, e as clamp, s as shallowEqualStringMap } from './helpers-Do7zwvM1.js';
8
8
  import { i as isRTL } from './dir-C53feagD.js';
9
- import { c as createColorClasses, h as hostContext } from './theme-DiVJyqlX.js';
10
- import { a as findIonContent, p as printIonContentErrorMsg, g as getScrollElement } from './index-MEDq2S8l.js';
11
- import { c as createKeyboardController } from './keyboard-controller-BaaVITYt.js';
9
+ import { c as createColorClasses, h as hostContext } from './theme-DaJxRxSQ.js';
10
+ import { a as findIonContent, p as printIonContentErrorMsg, g as getScrollElement } from './index-BmkLokUL.js';
11
+ import { c as createKeyboardController } from './keyboard-controller-BpOdk6xN.js';
12
12
  import { g as getTimeGivenProgression } from './cubic-bezier-hHmYLOfE.js';
13
- import { a as attachComponent, d as detachComponent } from './framework-delegate-FnPGymXL.js';
13
+ import { a as attachComponent, d as detachComponent } from './framework-delegate-CjVwn_KZ.js';
14
14
  import { c as createLockController } from './lock-controller-B-hirT0v.js';
15
- import { t as transition } from './index-B_dQk_WE.js';
16
- import './index-ZjP4CjeZ.js';
17
- import './keyboard-CUw4ekVy.js';
18
- import './capacitor-CFERIeaU.js';
15
+ import { t as transition } from './index-B2VWavcK.js';
16
+ import './keyboard-Dnno7-Ci.js';
17
+ import './capacitor-13SFuT1K.js';
19
18
 
20
19
  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}`;
21
20
 
@@ -23,51 +22,6 @@ const App = class {
23
22
  constructor(hostRef) {
24
23
  registerInstance(this, hostRef);
25
24
  }
26
- componentDidLoad() {
27
- {
28
- this.rIC(async () => {
29
- const isHybrid = isPlatform(window, 'hybrid');
30
- if (!config.getBoolean('_testing')) {
31
- import('./index-BRHzoo00.js').then((module) => module.startTapClick(config));
32
- }
33
- if (config.getBoolean('statusTap', isHybrid)) {
34
- import('./status-tap-Kan2W7sh.js').then((module) => module.startStatusTap());
35
- }
36
- if (config.getBoolean('inputShims', needInputShims())) {
37
- /**
38
- * needInputShims() ensures that only iOS and Android
39
- * platforms proceed into this block.
40
- */
41
- const platform = isPlatform(window, 'ios') ? 'ios' : 'android';
42
- import('./input-shims-D10mwcw1.js').then((module) => module.startInputShims(config, platform));
43
- }
44
- const hardwareBackButtonModule = await import('./hardware-back-button-B93Gru0Y.js');
45
- const supportsHardwareBackButtonEvents = isHybrid || shouldUseCloseWatcher();
46
- if (config.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {
47
- hardwareBackButtonModule.startHardwareBackButton();
48
- }
49
- else {
50
- /**
51
- * If an app sets hardwareBackButton: false and experimentalCloseWatcher: true
52
- * then the close watcher will not be used.
53
- */
54
- if (shouldUseCloseWatcher()) {
55
- 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.');
56
- }
57
- hardwareBackButtonModule.blockHardwareBackButton();
58
- }
59
- if (typeof window !== 'undefined') {
60
- import('./keyboard-ywgs5efA.js').then((module) => module.startKeyboardAssist(window));
61
- }
62
- import('./focus-visible-BmVRXR1y.js').then((module) => (this.focusVisible = module.startFocusVisible()));
63
- });
64
- }
65
- }
66
- disconnectedCallback() {
67
- if (this.loadTimeout) {
68
- clearTimeout(this.loadTimeout);
69
- }
70
- }
71
25
  /**
72
26
  * Used to set focus on an element that uses `ion-focusable`.
73
27
  * Do not use this if focusing the element as a result of a keyboard
@@ -80,52 +34,29 @@ const App = class {
80
34
  * @param elements An array of HTML elements to set focus on.
81
35
  */
82
36
  async setFocus(elements) {
83
- if (this.focusVisible) {
84
- this.focusVisible.setFocus(elements);
85
- }
86
- }
87
- rIC(callback) {
88
- if ('requestIdleCallback' in window) {
89
- window.requestIdleCallback(callback);
90
- }
91
- else {
92
- this.loadTimeout = setTimeout(callback, 32);
93
- }
37
+ /**
38
+ * The focus-visible utility is used to set focus on an
39
+ * element that uses `ion-focusable`.
40
+ */
41
+ focusElements(elements);
94
42
  }
95
43
  render() {
96
- const mode = getIonMode(this);
97
- return (h(Host, { key: '77a7459d3e42b3715a5a7e1cf468e2ebc99e54bb', class: {
98
- [mode]: true,
44
+ const theme = getIonTheme(this);
45
+ return (h(Host, { key: '3b7e84c7c4187287123413f90838cda89136b2a4', class: {
46
+ [theme]: true,
99
47
  'ion-page': true,
100
48
  'force-statusbar-padding': config.getBoolean('_forceStatusbarPadding'),
101
49
  } }));
102
50
  }
103
51
  get el() { return getElement(this); }
104
52
  };
105
- const needInputShims = () => {
106
- /**
107
- * iOS always needs input shims
108
- */
109
- const needsShimsIOS = isPlatform(window, 'ios') && isPlatform(window, 'mobile');
110
- if (needsShimsIOS) {
111
- return true;
112
- }
113
- /**
114
- * Android only needs input shims when running
115
- * in the browser and only if the browser is using the
116
- * new Chrome 108+ resize behavior: https://developer.chrome.com/blog/viewport-resize-behavior/
117
- */
118
- const isAndroidMobileWeb = isPlatform(window, 'android') && isPlatform(window, 'mobileweb');
119
- if (isAndroidMobileWeb) {
120
- return true;
121
- }
122
- return false;
123
- };
124
53
  App.style = appCss();
125
54
 
126
- 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}`;
55
+ 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)}`;
56
+
57
+ 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}`;
127
58
 
128
- 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}`;
59
+ 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}`;
129
60
 
130
61
  const Buttons = class {
131
62
  constructor(hostRef) {
@@ -137,7 +68,7 @@ const Buttons = class {
137
68
  * first toolbar, the buttons will be hidden and will
138
69
  * only be shown once all toolbars have fully collapsed.
139
70
  *
140
- * Only applies in `ios` mode with `collapse` set to
71
+ * Only applies in the `ios` theme with `collapse` set to
141
72
  * `true` on `ion-header`.
142
73
  *
143
74
  * Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
@@ -145,19 +76,20 @@ const Buttons = class {
145
76
  this.collapse = false;
146
77
  }
147
78
  render() {
148
- const mode = getIonMode(this);
149
- return (h(Host, { key: '58c1fc5eb867d0731c63549b1ccb3ec3bbbe6e1b', class: {
150
- [mode]: true,
79
+ const theme = getIonTheme(this);
80
+ return (h(Host, { key: '95c107ba7871c801a5ef14c636dc8e2fe69debf3', class: {
81
+ [theme]: true,
151
82
  ['buttons-collapse']: this.collapse,
152
- } }, h("slot", { key: '0c8f95b9840c8fa0c4e50be84c5159620a3eb5c8' })));
83
+ } }, h("slot", { key: '58669abfce458e1344b84286d4200e305017b958' })));
153
84
  }
154
85
  };
155
86
  Buttons.style = {
87
+ ionic: buttonsIonicCss(),
156
88
  ios: buttonsIosCss(),
157
89
  md: buttonsMdCss()
158
90
  };
159
91
 
160
- 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)}`;
92
+ 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)}`;
161
93
 
162
94
  const Content = class {
163
95
  constructor(hostRef) {
@@ -320,9 +252,8 @@ const Content = class {
320
252
  this.resize();
321
253
  }, 100);
322
254
  }
323
- shouldForceOverscroll() {
255
+ shouldForceOverscroll(mode) {
324
256
  const { forceOverscroll } = this;
325
- const mode = getIonMode(this);
326
257
  return forceOverscroll === undefined ? mode === 'ios' && isPlatform('ios') : forceOverscroll;
327
258
  }
328
259
  resize() {
@@ -518,12 +449,13 @@ const Content = class {
518
449
  render() {
519
450
  const { fixedSlotPlacement, inheritedAttributes, isMainContent, scrollX, scrollY, el } = this;
520
451
  const rtl = isRTL(el) ? 'rtl' : 'ltr';
521
- const mode = getIonMode(this);
522
- const forceOverscroll = this.shouldForceOverscroll();
523
- const transitionShadow = mode === 'ios';
452
+ const theme = getIonTheme(this);
453
+ const mode = getIonMode(this, theme);
454
+ const forceOverscroll = this.shouldForceOverscroll(mode);
455
+ const transitionShadow = theme === 'ios';
524
456
  this.resize();
525
- return (h(Host, Object.assign({ key: '8c1bc4a4df8698d3884741eb38512dc059210c50', role: isMainContent ? 'main' : undefined, class: createColorClasses(this.color, {
526
- [mode]: true,
457
+ return (h(Host, Object.assign({ key: 'd7f325c30b698dc42ec5e8c45b29e82749743cf4', role: isMainContent ? 'main' : undefined, class: createColorClasses(this.color, {
458
+ [theme]: true,
527
459
  'content-fullscreen': this.fullscreen,
528
460
  'content-sizing': hostContext('ion-popover', this.el),
529
461
  overscroll: forceOverscroll,
@@ -531,12 +463,12 @@ const Content = class {
531
463
  }), style: {
532
464
  '--offset-top': `${this.cTop}px`,
533
465
  '--offset-bottom': `${this.cBottom}px`,
534
- } }, inheritedAttributes), h("div", { key: '5e7412549b51ef7543d9378ecab9aac6bc461588', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? h("slot", { name: "fixed" }) : null, h("div", { key: '33f6fbf7e1e027c7cbd2dda95b487f18dc648cef', class: {
466
+ } }, inheritedAttributes), h("div", { key: 'c93b2c622a69c7fd153bbe9b0c6f8c24d85ed969', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? h("slot", { name: "fixed" }) : null, h("div", { key: '1700cc94e464ad1ab1c6672270f9649e90be3a5e', class: {
535
467
  'inner-scroll': true,
536
468
  'scroll-x': scrollX,
537
469
  'scroll-y': scrollY,
538
470
  overscroll: (scrollX || scrollY) && forceOverscroll,
539
- }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, h("slot", { key: '00c8fe7b9e73533c702273c9457d274195d54e98' })), transitionShadow ? (h("div", { class: "transition-effect" }, h("div", { class: "transition-cover" }), h("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? h("slot", { name: "fixed" }) : null));
471
+ }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, h("slot", { key: 'bff713ead4f61730e3f36b5af4b771ae62bde6cd' })), transitionShadow ? (h("div", { class: "transition-effect" }, h("div", { class: "transition-cover" }), h("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? h("slot", { name: "fixed" }) : null));
540
472
  }
541
473
  get el() { return getElement(this); }
542
474
  };
@@ -562,7 +494,8 @@ const getPageElement = (el) => {
562
494
  * between the popover and the edges of the screen. But if the popover contains
563
495
  * its own page element, we should use that instead.
564
496
  */
565
- const page = el.closest('ion-app, ion-page, .ion-page, page-inner, .popover-content');
497
+ const appRootSelector = config.get('appRootSelector', 'ion-app');
498
+ const page = el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner, .popover-content`);
566
499
  if (page) {
567
500
  return page;
568
501
  }
@@ -597,6 +530,171 @@ const updateScrollDetail = (detail, el, timestamp, shouldStart) => {
597
530
  };
598
531
  Content.style = contentCss();
599
532
 
533
+ /** Cumulative downward delta before hiding (header or footer `collapse="hide"`). */
534
+ const COLLAPSE_HIDE_THRESHOLD_PX = 24;
535
+ /**
536
+ * Cumulative upward delta before showing again after hide. Small bias
537
+ * (instead of "any upward delta") guards against inertial-scroll
538
+ * oscillation flicking the region back open during a downward gesture.
539
+ */
540
+ const COLLAPSE_SHOW_THRESHOLD_PX = 5;
541
+ const WHEEL_SCROLL_SUPPRESS_MS = 80;
542
+ const getContentHostFromScrollEl = (scrollEl) => {
543
+ const root = scrollEl.getRootNode();
544
+ if (root instanceof ShadowRoot && root.host instanceof HTMLElement) {
545
+ return root.host;
546
+ }
547
+ // Light-DOM fallback: the scroll element may live inside a non-shadow
548
+ // ion-content (e.g. custom scroll host). Walk up to the nearest ion-content.
549
+ return scrollEl.closest('ion-content');
550
+ };
551
+ const applySlideDistance = (regionEl, contentHost, slideCssVar, heightPx) => {
552
+ const value = `${Math.max(0, Math.ceil(heightPx))}px`;
553
+ regionEl.style.setProperty(slideCssVar, value);
554
+ contentHost === null || contentHost === void 0 ? void 0 : contentHost.style.setProperty(slideCssVar, value);
555
+ };
556
+ const clearSlideDistance = (regionEl, contentHost, slideCssVar) => {
557
+ regionEl.style.removeProperty(slideCssVar);
558
+ contentHost === null || contentHost === void 0 ? void 0 : contentHost.style.removeProperty(slideCssVar);
559
+ };
560
+ /**
561
+ * Scroll/wheel-driven hide/show for `collapse="hide"` on `ion-header` or `ion-footer`.
562
+ * Hide after {@link COLLAPSE_HIDE_THRESHOLD_PX}px cumulative downward delta; show after
563
+ * {@link COLLAPSE_SHOW_THRESHOLD_PX}px cumulative upward delta. Each direction drains
564
+ * (not resets) the opposing accumulator so inertial-scroll jitter doesn't stall either
565
+ * transition. Motion is defined in component SCSS and `content.scss`; this toggles
566
+ * classes and syncs the slide distance CSS var.
567
+ */
568
+ const createCollapseHideInteraction = ({ regionEl, scrollEl, slideCssVar, contentPartnerClass, contentHiddenClass, regionHiddenClass, }) => {
569
+ const contentHost = getContentHostFromScrollEl(scrollEl);
570
+ if (contentHost !== null) {
571
+ contentHost.classList.add(contentPartnerClass);
572
+ }
573
+ let resizeObserver;
574
+ let destroyed = false;
575
+ const syncSlideDistance = () => {
576
+ readTask(() => {
577
+ if (destroyed) {
578
+ return;
579
+ }
580
+ const heightPx = regionEl.offsetHeight;
581
+ writeTask(() => {
582
+ if (destroyed) {
583
+ return;
584
+ }
585
+ applySlideDistance(regionEl, contentHost, slideCssVar, heightPx);
586
+ });
587
+ });
588
+ };
589
+ if (typeof ResizeObserver !== 'undefined') {
590
+ resizeObserver = new ResizeObserver(() => {
591
+ syncSlideDistance();
592
+ });
593
+ resizeObserver.observe(regionEl);
594
+ }
595
+ syncSlideDistance();
596
+ requestAnimationFrame(() => {
597
+ if (!destroyed) {
598
+ syncSlideDistance();
599
+ }
600
+ });
601
+ let hidden = false;
602
+ let accDown = 0;
603
+ let accUp = 0;
604
+ let lastScrollTop = scrollEl.scrollTop;
605
+ let lastWheelTime = 0;
606
+ const setHidden = (next) => {
607
+ if (hidden === next || destroyed) {
608
+ return;
609
+ }
610
+ hidden = next;
611
+ // When transitioning to hidden, re-measure synchronously in case the
612
+ // initial layout reported offsetHeight === 0 (e.g. mid page transition).
613
+ // Without this the slide animates by 0px and only opacity fades.
614
+ if (hidden) {
615
+ const heightPx = regionEl.offsetHeight;
616
+ if (heightPx > 0) {
617
+ applySlideDistance(regionEl, contentHost, slideCssVar, heightPx);
618
+ }
619
+ }
620
+ writeTask(() => {
621
+ if (destroyed) {
622
+ return;
623
+ }
624
+ regionEl.classList.toggle(regionHiddenClass, hidden);
625
+ contentHost === null || contentHost === void 0 ? void 0 : contentHost.classList.toggle(contentHiddenClass, hidden);
626
+ if (hidden) {
627
+ // `inert` removes the subtree from the tab order and AT, AND moves
628
+ // focus out automatically in supporting browsers. `aria-hidden` is
629
+ // kept as a fallback for older engines without `inert` support.
630
+ regionEl.setAttribute('inert', '');
631
+ regionEl.setAttribute('aria-hidden', 'true');
632
+ }
633
+ else {
634
+ regionEl.removeAttribute('inert');
635
+ regionEl.removeAttribute('aria-hidden');
636
+ }
637
+ });
638
+ };
639
+ // Accumulate cumulative movement in each direction. The OPPOSITE accumulator
640
+ // is drained (not reset) by each event, so brief inertial jitter does not
641
+ // wipe a sustained gesture's accumulation. Crossing a threshold resets both.
642
+ const processDelta = (delta) => {
643
+ if (delta > 0) {
644
+ accUp = Math.max(0, accUp - delta);
645
+ accDown += delta;
646
+ if (accDown >= COLLAPSE_HIDE_THRESHOLD_PX) {
647
+ setHidden(true);
648
+ accDown = 0;
649
+ accUp = 0;
650
+ }
651
+ }
652
+ else if (delta < 0) {
653
+ const mag = -delta;
654
+ accDown = Math.max(0, accDown - mag);
655
+ accUp += mag;
656
+ if (accUp >= COLLAPSE_SHOW_THRESHOLD_PX) {
657
+ setHidden(false);
658
+ accUp = 0;
659
+ accDown = 0;
660
+ }
661
+ }
662
+ };
663
+ const onWheel = (ev) => {
664
+ if (destroyed) {
665
+ return;
666
+ }
667
+ lastWheelTime = performance.now();
668
+ processDelta(ev.deltaY);
669
+ };
670
+ const onScroll = () => {
671
+ if (destroyed) {
672
+ return;
673
+ }
674
+ const st = scrollEl.scrollTop;
675
+ if (performance.now() - lastWheelTime < WHEEL_SCROLL_SUPPRESS_MS) {
676
+ lastScrollTop = st;
677
+ return;
678
+ }
679
+ const delta = st - lastScrollTop;
680
+ lastScrollTop = st;
681
+ processDelta(delta);
682
+ };
683
+ scrollEl.addEventListener('wheel', onWheel, { passive: true });
684
+ scrollEl.addEventListener('scroll', onScroll, { passive: true });
685
+ return () => {
686
+ destroyed = true;
687
+ resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();
688
+ scrollEl.removeEventListener('wheel', onWheel);
689
+ scrollEl.removeEventListener('scroll', onScroll);
690
+ regionEl.classList.remove(regionHiddenClass);
691
+ regionEl.removeAttribute('inert');
692
+ regionEl.removeAttribute('aria-hidden');
693
+ contentHost === null || contentHost === void 0 ? void 0 : contentHost.classList.remove(contentPartnerClass, contentHiddenClass);
694
+ clearSlideDistance(regionEl, contentHost, slideCssVar);
695
+ };
696
+ };
697
+
600
698
  const handleFooterFade = (scrollEl, baseEl) => {
601
699
  readTask(() => {
602
700
  const scrollTop = scrollEl.scrollTop;
@@ -625,20 +723,32 @@ const handleFooterFade = (scrollEl, baseEl) => {
625
723
  });
626
724
  });
627
725
  };
726
+ const createFooterHideInteraction = (footerEl, scrollEl) => createCollapseHideInteraction({
727
+ regionEl: footerEl,
728
+ scrollEl,
729
+ slideCssVar: '--footer-hide-slide-y',
730
+ contentPartnerClass: 'content-footer-hide-scroll-partner',
731
+ contentHiddenClass: 'content-footer-hide-scroll-hidden',
732
+ regionHiddenClass: 'footer-collapse-hide-hidden',
733
+ });
734
+
735
+ 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}`;
628
736
 
629
- 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}`;
737
+ 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}`;
630
738
 
631
- 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}`;
739
+ 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}`;
632
740
 
633
741
  const Footer = class {
634
742
  constructor(hostRef) {
635
743
  registerInstance(this, hostRef);
744
+ this.didLoad = false;
745
+ this.setupToken = 0;
636
746
  this.keyboardCtrl = null;
637
747
  this.keyboardCtrlPromise = null;
638
748
  this.keyboardVisible = false;
639
749
  /**
640
750
  * If `true`, the footer will be translucent.
641
- * Only applies when the mode is `"ios"` and the device supports
751
+ * Only applies when the theme is `"ios"` and the device supports
642
752
  * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
643
753
  *
644
754
  * Note: In order to scroll content behind the footer, the `fullscreen`
@@ -646,25 +756,46 @@ const Footer = class {
646
756
  */
647
757
  this.translucent = false;
648
758
  this.checkCollapsibleFooter = () => {
649
- const mode = getIonMode(this);
650
- if (mode !== 'ios') {
651
- return;
652
- }
759
+ const theme = getIonTheme(this);
653
760
  const { collapse } = this;
654
761
  const hasFade = collapse === 'fade';
762
+ const hasHide = collapse === 'hide';
763
+ const runIosFade = theme === 'ios' && hasFade;
764
+ if (!runIosFade && !hasHide) {
765
+ this.destroyCollapsibleFooter();
766
+ return;
767
+ }
768
+ // Skip teardown/rebuild when the collapse mode and theme have not changed
769
+ // since the last setup — avoids thrashing listeners and resetting scroll
770
+ // accumulators on unrelated re-renders (e.g. keyboardVisible state flips).
771
+ const activeMode = hasHide ? 'hide' : 'fade';
772
+ if (this.appliedCollapse === activeMode && this.appliedTheme === theme) {
773
+ return;
774
+ }
655
775
  this.destroyCollapsibleFooter();
656
- if (hasFade) {
657
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
658
- const contentEl = pageEl ? findIonContent(pageEl) : null;
659
- if (!contentEl) {
660
- printIonContentErrorMsg(this.el);
661
- return;
662
- }
776
+ const appRootSelector = config.get('appRootSelector', 'ion-app');
777
+ const pageEl = this.el.closest(`${appRootSelector},ion-page,.ion-page,page-inner`);
778
+ const contentEl = pageEl ? findIonContent(pageEl) : null;
779
+ if (!contentEl) {
780
+ printIonContentErrorMsg(this.el);
781
+ return;
782
+ }
783
+ this.appliedCollapse = activeMode;
784
+ this.appliedTheme = theme;
785
+ if (runIosFade) {
663
786
  this.setupFadeFooter(contentEl);
664
787
  }
788
+ else if (hasHide) {
789
+ void this.setupHideFooter(contentEl);
790
+ }
665
791
  };
666
792
  this.setupFadeFooter = async (contentEl) => {
667
- const scrollEl = (this.scrollEl = await getScrollElement(contentEl));
793
+ const token = ++this.setupToken;
794
+ const scrollEl = await getScrollElement(contentEl);
795
+ if (token !== this.setupToken) {
796
+ return;
797
+ }
798
+ this.scrollEl = scrollEl;
668
799
  /**
669
800
  * Handle fading of toolbars on scroll
670
801
  */
@@ -676,12 +807,18 @@ const Footer = class {
676
807
  };
677
808
  }
678
809
  componentDidLoad() {
810
+ this.didLoad = true;
679
811
  this.checkCollapsibleFooter();
680
812
  }
681
813
  componentDidUpdate() {
682
814
  this.checkCollapsibleFooter();
683
815
  }
684
816
  async connectedCallback() {
817
+ // On re-attach (didLoad already true but disconnectedCallback ran since),
818
+ // componentDidLoad will not fire again — re-run setup here.
819
+ if (this.didLoad) {
820
+ this.checkCollapsibleFooter();
821
+ }
685
822
  const promise = createKeyboardController(async (keyboardOpen, waitForResize) => {
686
823
  /**
687
824
  * If the keyboard is hiding, then we need to wait
@@ -709,6 +846,7 @@ const Footer = class {
709
846
  }
710
847
  }
711
848
  disconnectedCallback() {
849
+ this.destroyCollapsibleFooter();
712
850
  if (this.keyboardCtrlPromise) {
713
851
  this.keyboardCtrlPromise.then((ctrl) => ctrl.destroy());
714
852
  this.keyboardCtrlPromise = null;
@@ -718,30 +856,49 @@ const Footer = class {
718
856
  this.keyboardCtrl = null;
719
857
  }
720
858
  }
859
+ async setupHideFooter(contentEl) {
860
+ const token = ++this.setupToken;
861
+ const scrollEl = await getScrollElement(contentEl);
862
+ // A newer checkCollapsibleFooter ran while we were awaiting — abandon.
863
+ if (token !== this.setupToken) {
864
+ return;
865
+ }
866
+ this.scrollEl = scrollEl;
867
+ this.footerHideCleanup = createFooterHideInteraction(this.el, scrollEl);
868
+ }
721
869
  destroyCollapsibleFooter() {
870
+ // Invalidate any in-flight setupHideFooter/setupFadeFooter awaits.
871
+ this.setupToken++;
872
+ if (this.footerHideCleanup) {
873
+ this.footerHideCleanup();
874
+ this.footerHideCleanup = undefined;
875
+ }
722
876
  if (this.scrollEl && this.contentScrollCallback) {
723
877
  this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
724
878
  this.contentScrollCallback = undefined;
725
879
  }
880
+ this.appliedCollapse = undefined;
881
+ this.appliedTheme = undefined;
726
882
  }
727
883
  render() {
728
884
  const { translucent, collapse } = this;
729
- const mode = getIonMode(this);
885
+ const theme = getIonTheme(this);
730
886
  const tabs = this.el.closest('ion-tabs');
731
887
  const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');
732
- return (h(Host, { key: '71939c4bbaef5062532a99ee2e33574102a9abad', role: "contentinfo", class: {
733
- [mode]: true,
888
+ return (h(Host, { key: '5df79a31f36febfad49c5858727e93c7ba5734f8', role: "contentinfo", class: {
889
+ [theme]: true,
734
890
  // Used internally for styling
735
- [`footer-${mode}`]: true,
891
+ [`footer-${theme}`]: true,
736
892
  [`footer-translucent`]: translucent,
737
- [`footer-translucent-${mode}`]: translucent,
893
+ [`footer-translucent-${theme}`]: translucent,
738
894
  ['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
739
895
  [`footer-collapse-${collapse}`]: collapse !== undefined,
740
- } }, mode === 'ios' && translucent && h("div", { key: '2fa14f61661c47c661cecd696176728d6eafa74f', class: "footer-background" }), h("slot", { key: '8e63696e7c528d5c38201e546bf08135290d0945' })));
896
+ } }, theme === 'ios' && translucent && h("div", { key: '9175ae4f6576d82dff2a00a36e91f4b633d8c9ad', class: "footer-background" }), h("slot", { key: 'd6d618cdae4726822d8e82edb782c5c86fc7b77b' })));
741
897
  }
742
898
  get el() { return getElement(this); }
743
899
  };
744
900
  Footer.style = {
901
+ ionic: ionicFooterMdCss(),
745
902
  ios: footerIosCss(),
746
903
  md: footerMdCss()
747
904
  };
@@ -922,6 +1079,14 @@ const scaleLargeTitles = (toolbars = [], scale = 1, transition = false) => {
922
1079
  titleDiv.style.transform = `scale3d(${scale}, ${scale}, 1)`;
923
1080
  });
924
1081
  };
1082
+ const createHeaderHideInteraction = (headerEl, scrollEl) => createCollapseHideInteraction({
1083
+ regionEl: headerEl,
1084
+ scrollEl,
1085
+ slideCssVar: '--header-hide-slide-y',
1086
+ contentPartnerClass: 'content-header-hide-scroll-partner',
1087
+ contentHiddenClass: 'content-header-hide-scroll-hidden',
1088
+ regionHiddenClass: 'header-collapse-hide-hidden',
1089
+ });
925
1090
  const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
926
1091
  readTask(() => {
927
1092
  const scrollTop = scrollEl.scrollTop;
@@ -958,37 +1123,45 @@ const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
958
1123
  *
959
1124
  * @param isInsideMenu If ion-header is inside ion-menu.
960
1125
  * @param isCondensed If ion-header has collapse="condense".
961
- * @param mode The current mode.
1126
+ * @param theme The current theme.
962
1127
  * @returns 'none' if inside ion-menu or if condensed in md
963
- * mode, otherwise 'banner'.
1128
+ * theme, otherwise 'banner'.
964
1129
  */
965
- const getRoleType = (isInsideMenu, isCondensed, mode) => {
1130
+ const getRoleType = (isInsideMenu, isCondensed, theme) => {
966
1131
  // If the header is inside a menu, it should not have the banner role.
967
1132
  if (isInsideMenu) {
968
1133
  return ROLE_NONE;
969
1134
  }
970
1135
  /**
971
- * Only apply role="none" to `md` mode condensed headers
1136
+ * Only apply role="none" to `md` & `ionic` theme condensed headers
972
1137
  * since the large header is never shown.
973
1138
  */
974
- if (isCondensed && mode === 'md') {
1139
+ if (isCondensed && theme !== 'ios') {
975
1140
  return ROLE_NONE;
976
1141
  }
977
1142
  // Default to banner role.
978
1143
  return ROLE_BANNER;
979
1144
  };
980
1145
 
981
- 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}`;
1146
+ 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}}`;
1147
+
1148
+ 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}`;
982
1149
 
983
- 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}`;
1150
+ 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}`;
984
1151
 
985
1152
  const Header = class {
986
1153
  constructor(hostRef) {
987
1154
  registerInstance(this, hostRef);
988
1155
  this.inheritedAttributes = {};
1156
+ this.didLoad = false;
1157
+ /**
1158
+ * If `true`, the header will have a line at the bottom.
1159
+ * TODO(ROU-10855): add support for this prop on ios/md themes
1160
+ */
1161
+ this.divider = false;
989
1162
  /**
990
1163
  * If `true`, the header will be translucent.
991
- * Only applies when the mode is `"ios"` and the device supports
1164
+ * Only applies when the theme is `"ios"` or `"ionic"` and the device supports
992
1165
  * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
993
1166
  *
994
1167
  * Note: In order to scroll content behind the header, the `fullscreen`
@@ -1011,25 +1184,38 @@ const Header = class {
1011
1184
  this.inheritedAttributes = inheritAriaAttributes(this.el);
1012
1185
  }
1013
1186
  componentDidLoad() {
1187
+ this.didLoad = true;
1014
1188
  this.checkCollapsibleHeader();
1015
1189
  }
1016
1190
  componentDidUpdate() {
1017
1191
  this.checkCollapsibleHeader();
1018
1192
  }
1193
+ connectedCallback() {
1194
+ // On re-attach (didLoad already true but disconnectedCallback ran since),
1195
+ // componentDidLoad will not fire again — re-run setup here.
1196
+ if (this.didLoad) {
1197
+ this.checkCollapsibleHeader();
1198
+ }
1199
+ }
1019
1200
  disconnectedCallback() {
1020
1201
  this.destroyCollapsibleHeader();
1021
1202
  }
1022
1203
  async checkCollapsibleHeader() {
1023
- const mode = getIonMode(this);
1024
- if (mode !== 'ios') {
1025
- return;
1026
- }
1204
+ const theme = getIonTheme(this);
1027
1205
  const { collapse } = this;
1028
1206
  const hasCondense = collapse === 'condense';
1029
1207
  const hasFade = collapse === 'fade';
1208
+ const hasHide = collapse === 'hide';
1209
+ const runIosCollapse = theme === 'ios' && (hasCondense || hasFade);
1210
+ const runHide = hasHide;
1211
+ if (!runIosCollapse && !runHide) {
1212
+ this.destroyCollapsibleHeader();
1213
+ return;
1214
+ }
1030
1215
  this.destroyCollapsibleHeader();
1031
- if (hasCondense) {
1032
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
1216
+ const appRootSelector = config.get('appRootSelector', 'ion-app');
1217
+ if (runIosCollapse && hasCondense) {
1218
+ const pageEl = this.el.closest(`${appRootSelector},ion-page,.ion-page,page-inner`);
1033
1219
  const contentEl = pageEl ? findIonContent(pageEl) : null;
1034
1220
  // Cloned elements are always needed in iOS transition
1035
1221
  writeTask(() => {
@@ -1039,8 +1225,8 @@ const Header = class {
1039
1225
  });
1040
1226
  await this.setupCondenseHeader(contentEl, pageEl);
1041
1227
  }
1042
- else if (hasFade) {
1043
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
1228
+ else if (runIosCollapse && hasFade) {
1229
+ const pageEl = this.el.closest(`${appRootSelector},ion-page,.ion-page,page-inner`);
1044
1230
  const contentEl = pageEl ? findIonContent(pageEl) : null;
1045
1231
  if (!contentEl) {
1046
1232
  printIonContentErrorMsg(this.el);
@@ -1049,12 +1235,29 @@ const Header = class {
1049
1235
  const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
1050
1236
  await this.setupFadeHeader(contentEl, condenseHeader);
1051
1237
  }
1238
+ if (runHide) {
1239
+ const pageEl = this.el.closest(`${appRootSelector},ion-page,.ion-page,page-inner`);
1240
+ const contentEl = pageEl ? findIonContent(pageEl) : null;
1241
+ if (!contentEl) {
1242
+ printIonContentErrorMsg(this.el);
1243
+ return;
1244
+ }
1245
+ await this.setupHideHeader(contentEl);
1246
+ }
1247
+ }
1248
+ async setupHideHeader(contentEl) {
1249
+ const scrollEl = (this.scrollEl = await getScrollElement(contentEl));
1250
+ this.headerHideCleanup = createHeaderHideInteraction(this.el, scrollEl);
1052
1251
  }
1053
1252
  destroyCollapsibleHeader() {
1054
1253
  if (this.intersectionObserver) {
1055
1254
  this.intersectionObserver.disconnect();
1056
1255
  this.intersectionObserver = undefined;
1057
1256
  }
1257
+ if (this.headerHideCleanup) {
1258
+ this.headerHideCleanup();
1259
+ this.headerHideCleanup = undefined;
1260
+ }
1058
1261
  if (this.scrollEl && this.contentScrollCallback) {
1059
1262
  this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
1060
1263
  this.contentScrollCallback = undefined;
@@ -1115,29 +1318,31 @@ const Header = class {
1115
1318
  });
1116
1319
  }
1117
1320
  render() {
1118
- const { translucent, inheritedAttributes } = this;
1119
- const mode = getIonMode(this);
1321
+ const { translucent, inheritedAttributes, divider } = this;
1322
+ const theme = getIonTheme(this);
1120
1323
  const collapse = this.collapse || 'none';
1121
1324
  const isCondensed = collapse === 'condense';
1122
1325
  // banner role must be at top level, so remove role if inside a menu
1123
- const roleType = getRoleType(hostContext('ion-menu', this.el), isCondensed, mode);
1124
- return (h(Host, Object.assign({ key: '863c4568cd7b8c0ec55109f193bbbaed68a1346e', role: roleType, class: {
1125
- [mode]: true,
1326
+ const roleType = getRoleType(hostContext('ion-menu', this.el), isCondensed, theme);
1327
+ return (h(Host, Object.assign({ key: '5cae1ff0bbc5f2035325c128a9394caf7f1459a0', role: roleType, class: {
1328
+ [theme]: true,
1126
1329
  // Used internally for styling
1127
- [`header-${mode}`]: true,
1330
+ [`header-${theme}`]: true,
1128
1331
  [`header-translucent`]: this.translucent,
1129
1332
  [`header-collapse-${collapse}`]: true,
1130
- [`header-translucent-${mode}`]: this.translucent,
1131
- } }, inheritedAttributes), mode === 'ios' && translucent && h("div", { key: '25c3bdce328b0b35607d154c8b8374679313d881', class: "header-background" }), h("slot", { key: 'b44fab0a9be7920b9650da26117c783e751e1702' })));
1333
+ [`header-translucent-${theme}`]: this.translucent,
1334
+ ['header-divider']: divider,
1335
+ } }, inheritedAttributes), theme !== 'md' && translucent && h("div", { key: '705f120951a3dd429286b66cd0b511fa267b3702', class: "header-background" }), h("slot", { key: '1c7a9d474083cf92abfe88c02d363f8d420716ca' })));
1132
1336
  }
1133
1337
  get el() { return getElement(this); }
1134
1338
  };
1135
1339
  Header.style = {
1340
+ ionic: headerIonicCss(),
1136
1341
  ios: headerIosCss(),
1137
1342
  md: headerMdCss()
1138
1343
  };
1139
1344
 
1140
- const routerOutletCss = () => `:host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
1345
+ const routerOutletCss = () => `:host{right:0;left:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
1141
1346
 
1142
1347
  const RouterOutlet = class {
1143
1348
  constructor(hostRef) {
@@ -1148,7 +1353,7 @@ const RouterOutlet = class {
1148
1353
  this.lockController = createLockController();
1149
1354
  this.gestureOrAnimationInProgress = false;
1150
1355
  /**
1151
- * The mode determines which platform styles to use.
1356
+ * The mode determines the platform behaviors of the component.
1152
1357
  */
1153
1358
  this.mode = getIonMode(this);
1154
1359
  /**
@@ -1156,11 +1361,10 @@ const RouterOutlet = class {
1156
1361
  */
1157
1362
  this.animated = true;
1158
1363
  }
1159
- swipeGestureChanged() {
1160
- this.updateGestureEnabled();
1161
- }
1162
1364
  swipeHandlerChanged() {
1163
- this.updateGestureEnabled();
1365
+ if (this.gesture) {
1366
+ this.gesture.enable(this.swipeHandler !== undefined);
1367
+ }
1164
1368
  }
1165
1369
  async connectedCallback() {
1166
1370
  const onStart = () => {
@@ -1169,7 +1373,7 @@ const RouterOutlet = class {
1169
1373
  this.swipeHandler.onStart();
1170
1374
  }
1171
1375
  };
1172
- this.gesture = (await import('./swipe-back-DQ1q5MgD.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) => {
1376
+ this.gesture = (await import('./swipe-back-BzGqTrrq.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) => {
1173
1377
  if (this.ani) {
1174
1378
  this.ani.onFinish(() => {
1175
1379
  this.gestureOrAnimationInProgress = false;
@@ -1200,21 +1404,11 @@ const RouterOutlet = class {
1200
1404
  this.gestureOrAnimationInProgress = false;
1201
1405
  }
1202
1406
  });
1203
- if (this.swipeGesture === undefined) {
1204
- this.swipeGesture = config.getBoolean('swipeBackEnabled', this.mode === 'ios');
1205
- }
1206
- else {
1207
- this.updateGestureEnabled();
1208
- }
1407
+ this.swipeHandlerChanged();
1209
1408
  }
1210
1409
  componentWillLoad() {
1211
1410
  this.ionNavWillLoad.emit();
1212
1411
  }
1213
- updateGestureEnabled() {
1214
- if (this.gesture) {
1215
- this.gesture.enable(this.swipeHandler !== undefined && this.swipeGesture === true);
1216
- }
1217
- }
1218
1412
  disconnectedCallback() {
1219
1413
  if (this.gesture) {
1220
1414
  this.gesture.destroy();
@@ -1325,13 +1519,10 @@ const RouterOutlet = class {
1325
1519
  return true;
1326
1520
  }
1327
1521
  render() {
1328
- return h("slot", { key: 'ce09e6fbba7b0a2276cdde5245bb37c9a162c1c7' });
1522
+ return h("slot", { key: 'f59dfdc11831ed91f5f7d8147cdc14f3c07bc289' });
1329
1523
  }
1330
1524
  get el() { return getElement(this); }
1331
1525
  static get watchers() { return {
1332
- "swipeGesture": [{
1333
- "swipeGestureChanged": 0
1334
- }],
1335
1526
  "swipeHandler": [{
1336
1527
  "swipeHandlerChanged": 0
1337
1528
  }]
@@ -1339,9 +1530,11 @@ const RouterOutlet = class {
1339
1530
  };
1340
1531
  RouterOutlet.style = routerOutletCss();
1341
1532
 
1342
- 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)}}`;
1533
+ 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}`;
1534
+
1535
+ 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)}}`;
1343
1536
 
1344
- 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}`;
1537
+ 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}`;
1345
1538
 
1346
1539
  const ToolbarTitle = class {
1347
1540
  constructor(hostRef) {
@@ -1364,13 +1557,13 @@ const ToolbarTitle = class {
1364
1557
  return this.size !== undefined ? this.size : 'default';
1365
1558
  }
1366
1559
  render() {
1367
- const mode = getIonMode(this);
1560
+ const theme = getIonTheme(this);
1368
1561
  const size = this.getSize();
1369
- return (h(Host, { key: 'd9317e8e66cb6112717f5a9c252658777efbd873', class: createColorClasses(this.color, {
1370
- [mode]: true,
1562
+ return (h(Host, { key: '87bb5264f4c13d0d6eeef874ed114539d0b59062', class: createColorClasses(this.color, {
1563
+ [theme]: true,
1371
1564
  [`title-${size}`]: true,
1372
1565
  'title-rtl': document.dir === 'rtl',
1373
- }) }, h("div", { key: 'a4d011d6d409bf006d8efe33667002edb109820a', class: "toolbar-title" }, h("slot", { key: '4ca3303b957a0e5387f1e9058e5adb4c6275afcc' }))));
1566
+ }) }, h("div", { key: '75f2ddfaf693ffdec13d909eefdb09b441d76e80', class: "toolbar-title" }, h("slot", { key: '00539af5e250bee78fdd1c55f2ecdc8e53bc18b0' }))));
1374
1567
  }
1375
1568
  get el() { return getElement(this); }
1376
1569
  static get watchers() { return {
@@ -1380,18 +1573,29 @@ const ToolbarTitle = class {
1380
1573
  }; }
1381
1574
  };
1382
1575
  ToolbarTitle.style = {
1576
+ ionic: titleIonicCss(),
1383
1577
  ios: titleIosCss(),
1384
1578
  md: titleMdCss()
1385
1579
  };
1386
1580
 
1387
- 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%}`;
1581
+ 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}`;
1388
1582
 
1389
- 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}`;
1583
+ 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%}`;
1584
+
1585
+ 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}`;
1390
1586
 
1391
1587
  const Toolbar = class {
1392
1588
  constructor(hostRef) {
1393
1589
  registerInstance(this, hostRef);
1394
1590
  this.childrenStyles = new Map();
1591
+ this.slotClasses = [
1592
+ 'has-start-content',
1593
+ 'has-end-content',
1594
+ 'has-primary-content',
1595
+ 'has-secondary-content',
1596
+ ];
1597
+ this.showClasses = ['show-start', 'show-end', 'show-primary', 'show-secondary'];
1598
+ this.slotSizeVars = ['--start-end-size', '--primary-secondary-size'];
1395
1599
  }
1396
1600
  componentWillLoad() {
1397
1601
  const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));
@@ -1408,6 +1612,173 @@ const Toolbar = class {
1408
1612
  if (lastButtons) {
1409
1613
  lastButtons.classList.add('buttons-last-slot');
1410
1614
  }
1615
+ this.updateSlotClasses();
1616
+ }
1617
+ componentDidLoad() {
1618
+ this.updateSlotClasses();
1619
+ this.updateSlotWidths();
1620
+ }
1621
+ titlePlacementChanged() {
1622
+ this.updateSlotClasses();
1623
+ }
1624
+ /**
1625
+ * Gets the title placement.
1626
+ * Returns the title placement if it is set, otherwise returns `"center"`
1627
+ * for `ionic` and `ios`, and `"start"` for `md`.
1628
+ */
1629
+ getTitlePlacement() {
1630
+ if (this.titlePlacement !== undefined) {
1631
+ return this.titlePlacement;
1632
+ }
1633
+ return getIonTheme(this) === 'ionic' || getIonTheme(this) === 'ios' ? 'center' : 'start';
1634
+ }
1635
+ /**
1636
+ * Updates the CSS custom properties for slot widths
1637
+ * This ensures that slots shown by their met conditions
1638
+ * have a minimum width matching their required slot
1639
+ */
1640
+ updateSlotWidths(tries = 0) {
1641
+ // Set timeout to try to execute after everything is rendered
1642
+ setTimeout(() => {
1643
+ // Attempt to measure and update
1644
+ const success = this.measureAndUpdateSlots();
1645
+ // If not all measurements were successful, try again in 100 ms
1646
+ // cap recursion at 5 tries for safety
1647
+ if (!success && tries < 5) {
1648
+ setTimeout(() => {
1649
+ this.updateSlotWidths(tries + 1);
1650
+ }, 100);
1651
+ }
1652
+ });
1653
+ }
1654
+ /**
1655
+ * Measure the widths of the slots and update the CSS custom properties
1656
+ * for the minimum width of each pair of slots based on the largest width in each pair.
1657
+ * Returns whether we successfully measured all of the slots we expect to have content.
1658
+ * If not, the content probably hasn't rendered yet and we need to try again.
1659
+ */
1660
+ measureAndUpdateSlots() {
1661
+ // Define the relationship between slots based on the conditions array
1662
+ // Group slots that should have the same width
1663
+ const slotPairs = [
1664
+ { name: 'start-end', slots: ['start', 'end'] },
1665
+ { name: 'primary-secondary', slots: ['primary', 'secondary'] },
1666
+ ];
1667
+ // First, measure all slot widths
1668
+ const slotWidths = new Map();
1669
+ let allMeasurementsSuccessful = true;
1670
+ // Measure all slots with content
1671
+ const slots = ['start', 'end', 'primary', 'secondary'];
1672
+ slots.forEach((slot) => {
1673
+ var _a;
1674
+ if (this.el.classList.contains(`has-${slot}-content`)) {
1675
+ const slotElement = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slot}"]`);
1676
+ if (slotElement) {
1677
+ // Check if the slot contains an img or ion-img
1678
+ const assignedElements = slotElement.assignedElements({ flatten: true });
1679
+ const hasImg = assignedElements.some((el) => {
1680
+ if (el.tagName === 'IMG' || el.tagName === 'ION-IMG') {
1681
+ return true;
1682
+ }
1683
+ // Check for nested images
1684
+ return el.querySelector('img, ion-img');
1685
+ });
1686
+ // Temporarily allow slot to size to content by setting flex-basis
1687
+ // to 'auto'. This ensures that slotted images can render at their
1688
+ // intrinsic width for measurement.
1689
+ if (hasImg) {
1690
+ const { name } = slotPairs.find((pair) => pair.slots.includes(slot));
1691
+ this.el.style.setProperty(`--${name}-size`, 'auto');
1692
+ }
1693
+ const width = slotElement.offsetWidth;
1694
+ if (width > 0) {
1695
+ slotWidths.set(slot, width);
1696
+ }
1697
+ else {
1698
+ allMeasurementsSuccessful = false;
1699
+ }
1700
+ }
1701
+ }
1702
+ });
1703
+ // Then set the CSS custom properties based on the largest width in each pair
1704
+ slotPairs.forEach(({ name, slots }) => {
1705
+ // Find the maximum width among the slots in this pair
1706
+ let maxWidth = 0;
1707
+ let hasAnyContent = false;
1708
+ slots.forEach((slot) => {
1709
+ var _a;
1710
+ if (slotWidths.has(slot)) {
1711
+ hasAnyContent = true;
1712
+ maxWidth = Math.max(maxWidth, (_a = slotWidths.get(slot)) !== null && _a !== void 0 ? _a : 0);
1713
+ }
1714
+ });
1715
+ // If at least one slot in the pair has content, set the min-width for the pair
1716
+ if (hasAnyContent && maxWidth > 0) {
1717
+ // Set a single CSS variable for the pair
1718
+ this.el.style.setProperty(`--${name}-size`, `${maxWidth}px`);
1719
+ }
1720
+ });
1721
+ return allMeasurementsSuccessful;
1722
+ }
1723
+ /**
1724
+ * Removes all slot visibility classes and slot width CSS variables.
1725
+ */
1726
+ removeSlotClasses() {
1727
+ this.el.classList.remove(...this.slotClasses, ...this.showClasses);
1728
+ this.slotSizeVars.forEach((cssVar) => this.el.style.removeProperty(cssVar));
1729
+ }
1730
+ updateSlotClasses() {
1731
+ const titlePlacement = this.getTitlePlacement();
1732
+ if (titlePlacement !== 'center') {
1733
+ this.removeSlotClasses();
1734
+ return;
1735
+ }
1736
+ // Check if slots have content
1737
+ const slots = ['start', 'end', 'primary', 'secondary'];
1738
+ const classesToAdd = [];
1739
+ const classesToRemove = [];
1740
+ slots.forEach((slot) => {
1741
+ const slotHasContent = this.hasSlotContent(slot);
1742
+ const slotClass = `has-${slot}-content`;
1743
+ if (slotHasContent) {
1744
+ classesToAdd.push(slotClass);
1745
+ }
1746
+ else {
1747
+ classesToRemove.push(slotClass);
1748
+ }
1749
+ });
1750
+ // Force visibilities in certain conditions. This works by adding a class to the toolbar
1751
+ // named `show-{slot}`. This class will be added if the toolbar has the required slots
1752
+ // and does not have any of the excluded slots, otherwise it will be removed.
1753
+ // This is useful to enforce centering of the toolbar content when there are different amounts
1754
+ // of slots on either side of the toolbar.
1755
+ const conditions = [
1756
+ { name: 'end', requiredSlots: ['start'], excludeSlots: ['end', 'primary'] },
1757
+ { name: 'start', requiredSlots: ['end'], excludeSlots: ['start', 'secondary'] },
1758
+ { name: 'secondary', requiredSlots: ['primary'], excludeSlots: ['secondary', 'start'] },
1759
+ { name: 'primary', requiredSlots: ['secondary'], excludeSlots: ['primary', 'end'] },
1760
+ ];
1761
+ conditions.forEach((condition) => {
1762
+ const hasRequiredSlots = condition.requiredSlots.every((slot) => classesToAdd.includes(`has-${slot}-content`));
1763
+ const hasExcludedSlots = condition.excludeSlots.some((slot) => classesToAdd.includes(`has-${slot}-content`));
1764
+ const className = `show-${condition.name}`;
1765
+ if (hasRequiredSlots && !hasExcludedSlots) {
1766
+ classesToAdd.push(className);
1767
+ }
1768
+ else {
1769
+ classesToRemove.push(className);
1770
+ }
1771
+ });
1772
+ // Add classes to the toolbar element
1773
+ this.el.classList.add(...classesToAdd);
1774
+ this.el.classList.remove(...classesToRemove);
1775
+ // Update slot widths after classes have been updated
1776
+ this.updateSlotWidths();
1777
+ }
1778
+ hasSlotContent(slotName) {
1779
+ var _a;
1780
+ const slotNode = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slotName}"]`);
1781
+ return !!slotNode && slotNode.assignedNodes().length > 0;
1411
1782
  }
1412
1783
  childrenStyle(ev) {
1413
1784
  ev.stopPropagation();
@@ -1432,19 +1803,27 @@ const Toolbar = class {
1432
1803
  }
1433
1804
  }
1434
1805
  render() {
1435
- const mode = getIonMode(this);
1806
+ const theme = getIonTheme(this);
1436
1807
  const childStyles = {};
1437
- this.childrenStyles.forEach((value) => {
1438
- Object.assign(childStyles, value);
1808
+ this.childrenStyles.forEach((style) => {
1809
+ Object.assign(childStyles, style);
1439
1810
  });
1440
- return (h(Host, { key: '40bad6fa7e94262438da4bbe037dcf8a5fa2df22', class: Object.assign(Object.assign({}, childStyles), createColorClasses(this.color, {
1441
- [mode]: true,
1811
+ const titlePlacement = this.getTitlePlacement();
1812
+ return (h(Host, { key: '069913e9241b8e9a2dee8e7d088d181b6faeab5e', class: Object.assign(Object.assign({}, createColorClasses(this.color, {
1813
+ [theme]: true,
1442
1814
  'in-toolbar': hostContext('ion-toolbar', this.el),
1443
- })) }, h("div", { key: 'df44c9f0fe3958116ab860b0dad79c53b89f6c59', class: "toolbar-background", part: "background" }), h("div", { key: '2169ffa576875b8d5624211cc0b4bf86191562bc', class: "toolbar-container", part: "container" }, h("slot", { key: 'c8910dcf1ce98ab427fd89c3396a67c2a75bdd07', name: "start" }), h("slot", { key: '05da24d5ef96b9eebd83b534ce02c1f7bcd06680', name: "secondary" }), h("div", { key: '090fea1541e7e2b6ad74a6ded4eadffdb471ccce', class: "toolbar-content", part: "content" }, h("slot", { key: '507e143f92f6fa59ff23d94026411fa2c74f2f8e' })), h("slot", { key: 'f79fdee472e657e26a910cb89d7551943e40e440', name: "primary" }), h("slot", { key: 'dd40fe9ed490cf4346c642e195fdb524dc6cc4f5', name: "end" }))));
1815
+ [`toolbar-title-placement-${titlePlacement}`]: true,
1816
+ })), childStyles) }, h("div", { key: '3255531be492b9afa7b47476a805f923beea09db', class: "toolbar-background", part: "background" }), h("div", { key: '8758189374c0a12f293c30ca7f8f049b732d2cab', class: "toolbar-container", part: "container" }, h("slot", { key: '74c3705f717968893bf94ea95c99cae313ce68f3', name: "start", onSlotchange: () => this.updateSlotClasses }), h("slot", { key: '298c78f93291442f140f8c52983871215f20ea87', name: "secondary", onSlotchange: () => this.updateSlotClasses }), h("div", { key: 'f7376320b704b8ce375fe2223ae30d51bfc05acb', class: "toolbar-content", part: "content" }, h("slot", { key: 'ddaec08b1fbd13384d834ba4c3b4441c4d749faf' })), h("slot", { key: '6d5bce85159859bb548e4d3fb6b22208dcb48987', name: "primary", onSlotchange: () => this.updateSlotClasses }), h("slot", { key: 'd1d21752ed3bcc7bf15c20de1c0a6fd956373450', name: "end", onSlotchange: () => this.updateSlotClasses }))));
1444
1817
  }
1445
1818
  get el() { return getElement(this); }
1819
+ static get watchers() { return {
1820
+ "titlePlacement": [{
1821
+ "titlePlacementChanged": 0
1822
+ }]
1823
+ }; }
1446
1824
  };
1447
1825
  Toolbar.style = {
1826
+ ionic: toolbarIonicCss(),
1448
1827
  ios: toolbarIosCss(),
1449
1828
  md: toolbarMdCss()
1450
1829
  };