@ionic/core 9.0.6-dev.11790615145.1d8c56a2 → 9.0.6-dev.11790776272.1d27d1bd

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 (1098) hide show
  1. package/components/index.js +1 -1
  2. package/components/ion-accordion-group.js +1 -1
  3. package/components/ion-accordion.js +1 -1
  4. package/components/ion-action-sheet.js +1 -1
  5. package/components/ion-alert.js +1 -1
  6. package/components/ion-app.js +1 -1
  7. package/components/ion-avatar.js +1 -1
  8. package/components/ion-back-button.js +1 -1
  9. package/components/ion-backdrop.js +1 -1
  10. package/components/ion-badge.js +1 -1
  11. package/components/ion-breadcrumb.js +1 -1
  12. package/components/ion-breadcrumbs.js +1 -1
  13. package/components/ion-button.js +1 -1
  14. package/components/ion-buttons.js +1 -1
  15. package/components/ion-card-content.js +1 -1
  16. package/components/ion-card-header.js +1 -1
  17. package/components/ion-card-subtitle.js +1 -1
  18. package/components/ion-card-title.js +1 -1
  19. package/components/ion-card.js +1 -1
  20. package/components/ion-checkbox.js +1 -1
  21. package/components/ion-chip.js +1 -1
  22. package/components/ion-col.js +1 -1
  23. package/components/ion-content.js +1 -1
  24. package/components/ion-datetime-button.js +1 -1
  25. package/components/ion-datetime.js +1 -1
  26. package/components/ion-divider.d.ts +11 -0
  27. package/components/ion-divider.js +4 -0
  28. package/components/ion-fab-button.js +1 -1
  29. package/components/ion-fab-list.js +1 -1
  30. package/components/ion-fab.js +1 -1
  31. package/components/ion-footer.js +1 -1
  32. package/components/ion-gallery-item.d.ts +11 -0
  33. package/components/ion-gallery-item.js +4 -0
  34. package/components/ion-gallery.d.ts +11 -0
  35. package/components/ion-gallery.js +4 -0
  36. package/components/ion-grid.js +1 -1
  37. package/components/ion-header.js +1 -1
  38. package/components/ion-icon.js +1 -1
  39. package/components/ion-img.js +1 -1
  40. package/components/ion-infinite-scroll-content.js +1 -1
  41. package/components/ion-infinite-scroll.js +1 -1
  42. package/components/ion-input-otp.js +1 -1
  43. package/components/ion-input-password-toggle.js +1 -1
  44. package/components/ion-input.js +1 -1
  45. package/components/ion-item-divider.js +1 -1
  46. package/components/ion-item-group.js +1 -1
  47. package/components/ion-item-option.js +1 -1
  48. package/components/ion-item-options.js +1 -1
  49. package/components/ion-item-sliding.js +1 -1
  50. package/components/ion-item.js +1 -1
  51. package/components/ion-label.js +1 -1
  52. package/components/ion-list-header.js +1 -1
  53. package/components/ion-list.js +1 -1
  54. package/components/ion-loading.js +1 -1
  55. package/components/ion-menu-button.js +1 -1
  56. package/components/ion-menu-toggle.js +1 -1
  57. package/components/ion-menu.js +1 -1
  58. package/components/ion-modal.js +1 -1
  59. package/components/ion-nav-link.js +1 -1
  60. package/components/ion-nav.js +1 -1
  61. package/components/ion-note.js +1 -1
  62. package/components/ion-picker-column-option.js +1 -1
  63. package/components/ion-picker-column.js +1 -1
  64. package/components/ion-picker.js +1 -1
  65. package/components/ion-popover.js +1 -1
  66. package/components/ion-progress-bar.js +1 -1
  67. package/components/ion-radio-group.js +1 -1
  68. package/components/ion-radio.js +1 -1
  69. package/components/ion-range.js +1 -1
  70. package/components/ion-refresher-content.js +1 -1
  71. package/components/ion-refresher.js +1 -1
  72. package/components/ion-reorder-group.js +1 -1
  73. package/components/ion-reorder.js +1 -1
  74. package/components/ion-ripple-effect.js +1 -1
  75. package/components/ion-route-redirect.js +1 -1
  76. package/components/ion-route.js +1 -1
  77. package/components/ion-router-link.js +1 -1
  78. package/components/ion-router-outlet.js +1 -1
  79. package/components/ion-router.js +1 -1
  80. package/components/ion-row.js +1 -1
  81. package/components/ion-searchbar.js +1 -1
  82. package/components/ion-segment-button.js +1 -1
  83. package/components/ion-segment-content.js +1 -1
  84. package/components/ion-segment-view.js +1 -1
  85. package/components/ion-segment.js +1 -1
  86. package/components/ion-select-modal.js +1 -1
  87. package/components/ion-select-option.js +1 -1
  88. package/components/ion-select-popover.js +1 -1
  89. package/components/ion-select.js +1 -1
  90. package/components/ion-skeleton-text.js +1 -1
  91. package/components/ion-spinner.js +1 -1
  92. package/components/ion-split-pane.js +1 -1
  93. package/components/ion-tab-bar.js +1 -1
  94. package/components/ion-tab-button.js +1 -1
  95. package/components/ion-tab.js +1 -1
  96. package/components/ion-tabs.js +1 -1
  97. package/components/ion-text.js +1 -1
  98. package/components/ion-textarea.js +1 -1
  99. package/components/ion-thumbnail.js +1 -1
  100. package/components/ion-title.js +1 -1
  101. package/components/ion-toast.js +1 -1
  102. package/components/ion-toggle.js +1 -1
  103. package/components/ion-toolbar.js +1 -1
  104. package/components/p-0rXxxCTt.js +4 -0
  105. package/components/p-37X-8Gly.js +4 -0
  106. package/components/p-62jMqk_2.js +4 -0
  107. package/components/p-6bixixDn.js +4 -0
  108. package/components/p-8_oeT3pA.js +4 -0
  109. package/components/p-8n1_MTzx.js +4 -0
  110. package/components/{p-DWGgvN5e.js → p-A6ucUP3n.js} +1 -1
  111. package/components/{p-Bu6O-veK.js → p-B2N-uaer.js} +1 -1
  112. package/components/p-B6hzlC5j.js +4 -0
  113. package/components/p-B93Ra6bA.js +4 -0
  114. package/components/p-BNmpijWM.js +4 -0
  115. package/components/p-BUF_V-Kg.js +4 -0
  116. package/components/p-BYk20Mf5.js +4 -0
  117. package/components/{p-yjLe0sN2.js → p-Bdobqe7h.js} +1 -1
  118. package/components/p-BfDzKnZ-.js +4 -0
  119. package/components/p-BhahBl_4.js +4 -0
  120. package/components/p-BiYiyBQx.js +4 -0
  121. package/components/p-BrOe3-hG.js +4 -0
  122. package/components/{p-fFx6WCTj.js → p-BxmCDJGo.js} +1 -1
  123. package/components/p-BzTxsQy7.js +4 -0
  124. package/components/p-C1_1oiK1.js +4 -0
  125. package/components/{p-CVVUo4J1.js → p-CDgG2plB.js} +1 -1
  126. package/components/p-CG2KwvX8.js +4 -0
  127. package/components/p-CJgEqVkU.js +4 -0
  128. package/components/p-CODBQrPj.js +4 -0
  129. package/components/p-CO_NfcFI.js +4 -0
  130. package/components/p-COpUROd5.js +4 -0
  131. package/components/p-CU58nYdK.js +4 -0
  132. package/components/p-CfVt2cSa.js +4 -0
  133. package/components/p-CqJjxXhD.js +4 -0
  134. package/components/{p-Ctw69DyZ.js → p-CscIqeFa.js} +1 -1
  135. package/components/p-Cw238cJK.js +4 -0
  136. package/components/p-CzIKYlnt.js +4 -0
  137. package/components/p-D4qU_GAV.js +4 -0
  138. package/components/p-D5DnKj9A.js +4 -0
  139. package/components/{p-Dlr7b3_2.js → p-D5ld1tBr.js} +1 -1
  140. package/components/{p-C9ioHZq-.js → p-DGbHpbI3.js} +1 -1
  141. package/components/p-DI6CUKfX.js +4 -0
  142. package/components/p-DJHoSlfB.js +4 -0
  143. package/components/p-DKq6UKi0.js +4 -0
  144. package/components/{p-BKeulLTJ.js → p-DSXoSdmA.js} +1 -1
  145. package/components/p-D__93Idk.js +4 -0
  146. package/components/p-DdxgOJke.js +4 -0
  147. package/components/p-DfcwW1aR.js +4 -0
  148. package/components/p-DgFAwQsK.js +4 -0
  149. package/components/{p-T2dnrBya.js → p-Dgl8Vd2X.js} +1 -1
  150. package/components/{p-C_NQIzjP.js → p-Dk28-cNx.js} +1 -1
  151. package/components/p-DkiPZ_fu.js +4 -0
  152. package/components/p-ESP4CxsW.js +4 -0
  153. package/components/p-FyJJr6na.js +4 -0
  154. package/components/p-NcQUGze-.js +4 -0
  155. package/components/p-S3RGszMg.js +4 -0
  156. package/components/p-XNCy3pzc.js +4 -0
  157. package/components/p-YaCudw3M.js +4 -0
  158. package/components/p-YzlvZhlS.js +4 -0
  159. package/components/p-Z0yxDpWf.js +4 -0
  160. package/components/p-ZJCq7HeA.js +4 -0
  161. package/components/p-jQFnlcKd.js +4 -0
  162. package/components/p-yscb8Luf.js +4 -0
  163. package/css/core.css +1 -1
  164. package/css/core.css.map +1 -1
  165. package/css/display.css +1 -1
  166. package/css/display.css.map +1 -1
  167. package/css/flex-utils.css +1 -1
  168. package/css/flex-utils.css.map +1 -1
  169. package/css/float-elements.css.map +1 -1
  170. package/css/global.bundle.css.map +1 -1
  171. package/css/ionic/bundle.ionic.css +1 -0
  172. package/css/ionic/bundle.ionic.css.map +1 -0
  173. package/css/ionic/core.ionic.css +1 -0
  174. package/css/ionic/core.ionic.css.map +1 -0
  175. package/css/ionic/global.bundle.ionic.css +1 -0
  176. package/css/ionic/global.bundle.ionic.css.map +1 -0
  177. package/css/ionic/ionic-swiper.ionic.css +1 -0
  178. package/css/ionic/ionic-swiper.ionic.css.map +1 -0
  179. package/css/ionic/link.ionic.css +1 -0
  180. package/css/ionic/link.ionic.css.map +1 -0
  181. package/css/ionic/structure.ionic.css +1 -0
  182. package/css/ionic/structure.ionic.css.map +1 -0
  183. package/css/ionic/typography.ionic.css +1 -0
  184. package/css/ionic/typography.ionic.css.map +1 -0
  185. package/css/ionic/utils.bundle.ionic.css +1 -0
  186. package/css/ionic/utils.bundle.ionic.css.map +1 -0
  187. package/css/ionic-swiper.css +1 -1
  188. package/css/ionic-swiper.css.map +1 -1
  189. package/css/ionic.bundle.css +1 -1
  190. package/css/ionic.bundle.css.map +1 -1
  191. package/css/normalize.css.map +1 -1
  192. package/css/padding.css.map +1 -1
  193. package/css/palettes/dark.always.css.map +1 -1
  194. package/css/palettes/dark.class.css.map +1 -1
  195. package/css/palettes/dark.system.css.map +1 -1
  196. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  197. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  198. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  199. package/css/palettes/high-contrast.always.css.map +1 -1
  200. package/css/palettes/high-contrast.class.css.map +1 -1
  201. package/css/palettes/high-contrast.system.css.map +1 -1
  202. package/css/structure.css.map +1 -1
  203. package/css/text-alignment.css.map +1 -1
  204. package/css/text-transformation.css.map +1 -1
  205. package/css/typography.css.map +1 -1
  206. package/css/utils.bundle.css +1 -1
  207. package/css/utils.bundle.css.map +1 -1
  208. package/dist/cjs/{animation-BFKyYY11.js → animation-DGhvrwaP.js} +3 -3
  209. package/dist/cjs/{app-globals-BLTzqkrC.js → app-globals--knHahIC.js} +1 -1
  210. package/dist/cjs/{attribute-controller-CXIeB0Mn.js → attribute-controller-DqubM70Y.js} +3 -2
  211. package/dist/cjs/{button-active-CEQaiV9N.js → button-active-DJu01UHp.js} +2 -2
  212. package/dist/cjs/{capacitor-BMzmHhwe.js → capacitor-DmA66EwP.js} +3 -3
  213. package/dist/cjs/clear-button-press-controller-C6PTS3jC.js +45 -0
  214. package/dist/cjs/focus-visible-DGPRKkcx.js +151 -0
  215. package/dist/cjs/{format-CdRlDqPs.js → format-UTEj7kb_.js} +1 -1
  216. package/dist/cjs/{framework-delegate-DTLbqaaO.js → framework-delegate-Dc-OOm7D.js} +4 -2
  217. package/dist/cjs/{haptic-CJVUv_GB.js → haptic-Ch-X4gRx.js} +1 -1
  218. package/dist/cjs/{helpers-Crluoxqu.js → helpers-CLJM7hT0.js} +88 -10
  219. package/dist/cjs/{index-CElfU-dK.js → index-BzL2o7TC.js} +16 -14
  220. package/dist/cjs/{index-wOmugbdg.js → index-CxDnX7hd.js} +2 -0
  221. package/dist/cjs/{index-CgXTRA_-.js → index-DHE2MAbY.js} +4 -4
  222. package/dist/cjs/{index-BAM4223M.js → index-DKcBQZY9.js} +2 -2
  223. package/dist/cjs/{index-BKpybYNI.js → index-DaYKwu0A.js} +9 -7
  224. package/dist/cjs/index-DkNv4J_i.js +10 -0
  225. package/dist/cjs/{index-BSD7toMO.js → index-Dy4VfNzX.js} +1 -1
  226. package/dist/cjs/{index-SAR1xwtW.js → index-sCX9078m.js} +53 -4
  227. package/dist/cjs/index.cjs.js +20 -18
  228. package/dist/cjs/{input-shims-CHghGZe-.js → input-shims-BMQzAjOD.js} +18 -16
  229. package/dist/cjs/{input.utils-BBZr0wjw.js → input.utils-BrmvFLnI.js} +1 -1
  230. package/dist/cjs/ion-accordion_2.cjs.entry.js +57 -29
  231. package/dist/cjs/ion-action-sheet.cjs.entry.js +42 -37
  232. package/dist/cjs/ion-alert.cjs.entry.js +50 -45
  233. package/dist/cjs/ion-app_8.cjs.entry.js +457 -195
  234. package/dist/cjs/ion-avatar_3.cjs.entry.js +124 -13
  235. package/dist/cjs/ion-back-button.cjs.entry.js +31 -23
  236. package/dist/cjs/ion-backdrop.cjs.entry.js +11 -7
  237. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +42 -18
  238. package/dist/cjs/ion-button_2.cjs.entry.js +61 -23
  239. package/dist/cjs/ion-card_5.cjs.entry.js +57 -34
  240. package/dist/cjs/ion-checkbox.cjs.entry.js +43 -17
  241. package/dist/cjs/ion-chip.cjs.entry.js +51 -9
  242. package/dist/cjs/ion-col_3.cjs.entry.js +57 -62
  243. package/dist/cjs/ion-datetime-button.cjs.entry.js +14 -9
  244. package/dist/cjs/ion-datetime.cjs.entry.js +75 -33
  245. package/dist/cjs/ion-divider.cjs.entry.js +52 -0
  246. package/dist/cjs/ion-fab_3.cjs.entry.js +40 -28
  247. package/dist/cjs/ion-gallery-item.cjs.entry.js +59 -0
  248. package/dist/cjs/ion-gallery.cjs.entry.js +608 -0
  249. package/dist/cjs/ion-img.cjs.entry.js +9 -4
  250. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +91 -16
  251. package/dist/cjs/ion-input-otp.cjs.entry.js +74 -9
  252. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +42 -14
  253. package/dist/cjs/ion-input.cjs.entry.js +143 -38
  254. package/dist/cjs/ion-item-option_3.cjs.entry.js +466 -52
  255. package/dist/cjs/ion-item_8.cjs.entry.js +118 -51
  256. package/dist/cjs/ion-loading.cjs.entry.js +33 -28
  257. package/dist/cjs/ion-menu_3.cjs.entry.js +53 -35
  258. package/dist/cjs/ion-modal.cjs.entry.js +285 -157
  259. package/dist/cjs/ion-nav_2.cjs.entry.js +14 -10
  260. package/dist/cjs/ion-picker-column-option.cjs.entry.js +13 -8
  261. package/dist/cjs/ion-picker-column.cjs.entry.js +17 -15
  262. package/dist/cjs/ion-picker.cjs.entry.js +11 -6
  263. package/dist/cjs/ion-popover.cjs.entry.js +33 -28
  264. package/dist/cjs/ion-progress-bar.cjs.entry.js +28 -9
  265. package/dist/cjs/ion-radio_2.cjs.entry.js +37 -18
  266. package/dist/cjs/ion-range.cjs.entry.js +21 -13
  267. package/dist/cjs/ion-refresher_2.cjs.entry.js +45 -20
  268. package/dist/cjs/ion-reorder_2.cjs.entry.js +31 -13
  269. package/dist/cjs/ion-ripple-effect.cjs.entry.js +16 -7
  270. package/dist/cjs/ion-route_4.cjs.entry.js +12 -10
  271. package/dist/cjs/ion-searchbar.cjs.entry.js +118 -32
  272. package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
  273. package/dist/cjs/ion-segment-view.cjs.entry.js +13 -3
  274. package/dist/cjs/ion-segment_2.cjs.entry.js +24 -16
  275. package/dist/cjs/ion-select-modal.cjs.entry.js +54 -25
  276. package/dist/cjs/ion-select_3.cjs.entry.js +199 -81
  277. package/dist/cjs/ion-spinner.cjs.entry.js +31 -8
  278. package/dist/cjs/ion-split-pane.cjs.entry.js +14 -9
  279. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +150 -27
  280. package/dist/cjs/ion-tab_2.cjs.entry.js +9 -7
  281. package/dist/cjs/ion-text.cjs.entry.js +8 -7
  282. package/dist/cjs/ion-textarea.cjs.entry.js +242 -33
  283. package/dist/cjs/ion-toast.cjs.entry.js +86 -57
  284. package/dist/cjs/ion-toggle.cjs.entry.js +67 -25
  285. package/dist/cjs/ionic-global-BKBeko9D.js +518 -0
  286. package/dist/cjs/ionic.cjs.js +5 -4
  287. package/dist/cjs/{ios.transition-YFSxiyP_.js → ios.transition-EQ8LtRHj.js} +7 -4
  288. package/dist/cjs/{item-multiple-inputs-h2PyAFzG.js → item-multiple-inputs-Wc71a2xi.js} +1 -1
  289. package/dist/cjs/{keyboard-Cv-LNReK.js → keyboard-Cix5TVkD.js} +3 -5
  290. package/dist/cjs/{keyboard-C-C7xMKk.js → keyboard-cHxZlTyz.js} +1 -1
  291. package/dist/cjs/loader.cjs.js +5 -4
  292. package/dist/cjs/{md.transition-Cm8yg0UK.js → md.transition-By9Fre6y.js} +6 -4
  293. package/dist/cjs/{overlay-control-label-D2sdL2O8.js → overlay-control-label-DnRLQR1t.js} +13 -11
  294. package/dist/cjs/{overlays-C68wNDWY.js → overlays-Ch6nAoha.js} +309 -138
  295. package/dist/cjs/scroll-hide-controller-BwW-NV0Z.js +345 -0
  296. package/dist/cjs/{select-option-render-C-Yh9yZG.js → select-option-render-BmpnIokj.js} +2 -2
  297. package/dist/cjs/{slot-mutation-controller-zixZ5LyH.js → slot-mutation-controller-C7nTDVzj.js} +5 -4
  298. package/dist/cjs/{status-tap-C3frTJ4c.js → status-tap-Dw87jmOD.js} +5 -3
  299. package/dist/cjs/{swipe-back-BigumsQ1.js → swipe-back-BXYzN9QG.js} +4 -2
  300. package/dist/cjs/{theme-Bw0rpaNN.js → theme-Cy4joHPt.js} +25 -1
  301. package/dist/cjs/validity-CoPMWggj.js +51 -0
  302. package/dist/collection/collection-manifest.json +8 -0
  303. package/dist/collection/components/accordion/accordion.ionic.css +199 -0
  304. package/dist/collection/components/accordion/accordion.ios.css +73 -58
  305. package/dist/collection/components/accordion/accordion.js +36 -27
  306. package/dist/collection/components/accordion/accordion.md.css +67 -59
  307. package/dist/collection/components/accordion-group/accordion-group.ionic.css +93 -0
  308. package/dist/collection/components/accordion-group/accordion-group.ios.css +16 -4
  309. package/dist/collection/components/accordion-group/accordion-group.js +44 -8
  310. package/dist/collection/components/accordion-group/accordion-group.md.css +22 -4
  311. package/dist/collection/components/action-sheet/action-sheet.ionic.css +490 -0
  312. package/dist/collection/components/action-sheet/action-sheet.ios.css +184 -54
  313. package/dist/collection/components/action-sheet/action-sheet.js +16 -13
  314. package/dist/collection/components/action-sheet/action-sheet.md.css +179 -55
  315. package/dist/collection/components/alert/alert.ionic.css +779 -0
  316. package/dist/collection/components/alert/alert.ios.css +247 -54
  317. package/dist/collection/components/alert/alert.js +22 -19
  318. package/dist/collection/components/alert/alert.md.css +243 -56
  319. package/dist/collection/components/app/app.js +15 -83
  320. package/dist/collection/components/avatar/avatar.ionic.css +379 -0
  321. package/dist/collection/components/avatar/avatar.ios.css +7 -33
  322. package/dist/collection/components/avatar/avatar.js +120 -4
  323. package/dist/collection/components/avatar/avatar.md.css +51 -0
  324. package/dist/collection/components/back-button/back-button.ios.css +60 -48
  325. package/dist/collection/components/back-button/back-button.js +26 -20
  326. package/dist/collection/components/back-button/back-button.md.css +60 -48
  327. package/dist/collection/components/backdrop/backdrop.ionic.css +109 -0
  328. package/dist/collection/components/backdrop/backdrop.ios.css +56 -19
  329. package/dist/collection/components/backdrop/backdrop.js +12 -6
  330. package/dist/collection/components/backdrop/backdrop.md.css +56 -19
  331. package/dist/collection/components/badge/badge.ionic.css +269 -0
  332. package/dist/collection/components/badge/badge.ios.css +137 -12
  333. package/dist/collection/components/badge/badge.js +143 -9
  334. package/dist/collection/components/badge/badge.md.css +122 -12
  335. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +20 -8
  336. package/dist/collection/components/breadcrumb/breadcrumb.js +31 -11
  337. package/dist/collection/components/breadcrumb/breadcrumb.md.css +20 -8
  338. package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +6 -0
  339. package/dist/collection/components/breadcrumbs/breadcrumbs.js +11 -9
  340. package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +6 -0
  341. package/dist/collection/components/button/button.ionic.css +640 -0
  342. package/dist/collection/components/button/button.ios.css +154 -46
  343. package/dist/collection/components/button/button.js +63 -27
  344. package/dist/collection/components/button/button.md.css +150 -50
  345. package/dist/collection/components/buttons/buttons.ionic.css +97 -0
  346. package/dist/collection/components/buttons/buttons.ios.css +59 -7
  347. package/dist/collection/components/buttons/buttons.js +15 -9
  348. package/dist/collection/components/buttons/buttons.md.css +55 -3
  349. package/dist/collection/components/card/card.ionic.css +144 -0
  350. package/dist/collection/components/card/card.ios.css +65 -14
  351. package/dist/collection/components/card/card.js +41 -10
  352. package/dist/collection/components/card/card.md.css +65 -14
  353. package/dist/collection/components/card-content/card-content.ionic.css +88 -0
  354. package/dist/collection/components/card-content/card-content.ios.css +20 -35
  355. package/dist/collection/components/card-content/card-content.js +12 -10
  356. package/dist/collection/components/card-content/card-content.md.css +20 -35
  357. package/dist/collection/components/card-header/card-header.ionic.css +85 -0
  358. package/dist/collection/components/card-header/card-header.ios.css +27 -15
  359. package/dist/collection/components/card-header/card-header.js +13 -10
  360. package/dist/collection/components/card-header/card-header.md.css +27 -15
  361. package/dist/collection/components/card-subtitle/card-subtitle.ionic.css +143 -0
  362. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +12 -0
  363. package/dist/collection/components/card-subtitle/card-subtitle.js +11 -8
  364. package/dist/collection/components/card-subtitle/card-subtitle.md.css +12 -0
  365. package/dist/collection/components/card-title/card-title.ios.css +73 -0
  366. package/dist/collection/components/card-title/card-title.js +11 -8
  367. package/dist/collection/components/card-title/card-title.md.css +73 -0
  368. package/dist/collection/components/checkbox/checkbox.ionic.css +535 -0
  369. package/dist/collection/components/checkbox/checkbox.ios.css +244 -115
  370. package/dist/collection/components/checkbox/checkbox.js +80 -15
  371. package/dist/collection/components/checkbox/checkbox.md.css +245 -116
  372. package/dist/collection/components/chip/chip.ionic.css +216 -0
  373. package/dist/collection/components/chip/chip.ios.css +67 -14
  374. package/dist/collection/components/chip/chip.js +108 -8
  375. package/dist/collection/components/chip/chip.md.css +67 -14
  376. package/dist/collection/components/col/col.css +192 -4
  377. package/dist/collection/components/col/col.js +211 -66
  378. package/dist/collection/components/content/content.css +47 -2
  379. package/dist/collection/components/content/content.js +16 -11
  380. package/dist/collection/components/datetime/datetime.ionic.css +697 -0
  381. package/dist/collection/components/datetime/datetime.ios.css +305 -114
  382. package/dist/collection/components/datetime/datetime.js +61 -20
  383. package/dist/collection/components/datetime/datetime.md.css +295 -103
  384. package/dist/collection/components/datetime/utils/data.js +5 -5
  385. package/dist/collection/components/datetime-button/datetime-button.ios.css +6 -0
  386. package/dist/collection/components/datetime-button/datetime-button.js +11 -8
  387. package/dist/collection/components/datetime-button/datetime-button.md.css +6 -0
  388. package/dist/collection/components/divider/divider.ionic.css +148 -0
  389. package/dist/collection/components/divider/divider.ios.css +87 -0
  390. package/dist/collection/components/divider/divider.js +94 -0
  391. package/dist/collection/components/divider/divider.md.css +87 -0
  392. package/dist/collection/components/fab/fab.css +25 -1
  393. package/dist/collection/components/fab/fab.js +9 -5
  394. package/dist/collection/components/fab-button/fab-button.ios.css +18 -6
  395. package/dist/collection/components/fab-button/fab-button.js +31 -21
  396. package/dist/collection/components/fab-button/fab-button.md.css +20 -8
  397. package/dist/collection/components/fab-list/fab-list.css +12 -0
  398. package/dist/collection/components/fab-list/fab-list.js +9 -5
  399. package/dist/collection/components/footer/footer-interface.js +1 -0
  400. package/dist/collection/components/footer/footer.ios.css +33 -6
  401. package/dist/collection/components/footer/footer.js +117 -25
  402. package/dist/collection/components/footer/footer.md.css +40 -0
  403. package/dist/collection/components/gallery/gallery-constants.js +12 -0
  404. package/dist/collection/components/gallery/gallery-interface.js +1 -0
  405. package/dist/collection/components/gallery/gallery.css +15 -0
  406. package/dist/collection/components/gallery/gallery.js +678 -0
  407. package/dist/collection/components/gallery/test/utils.js +100 -0
  408. package/dist/collection/components/gallery-item/gallery-item.css +49 -0
  409. package/dist/collection/components/gallery-item/gallery-item.js +98 -0
  410. package/dist/collection/components/grid/grid.css +12 -0
  411. package/dist/collection/components/grid/grid.js +9 -5
  412. package/dist/collection/components/header/header-interface.js +1 -0
  413. package/dist/collection/components/header/header.ionic.css +286 -0
  414. package/dist/collection/components/header/header.ios.css +178 -133
  415. package/dist/collection/components/header/header.js +180 -39
  416. package/dist/collection/components/header/header.md.css +199 -9
  417. package/dist/collection/components/header/header.utils.js +5 -13
  418. package/dist/collection/components/img/img.js +7 -2
  419. package/dist/collection/components/infinite-scroll/infinite-scroll.js +99 -5
  420. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +12 -0
  421. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +16 -10
  422. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +12 -0
  423. package/dist/collection/components/input/input.ionic.css +957 -0
  424. package/dist/collection/components/input/input.ios.css +254 -160
  425. package/dist/collection/components/input/input.js +168 -44
  426. package/dist/collection/components/input/input.md.css +224 -232
  427. package/dist/collection/components/input-otp/input-otp.ionic.css +369 -0
  428. package/dist/collection/components/input-otp/input-otp.ios.css +105 -60
  429. package/dist/collection/components/input-otp/input-otp.js +73 -7
  430. package/dist/collection/components/input-otp/input-otp.md.css +105 -60
  431. package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +78 -0
  432. package/dist/collection/components/input-password-toggle/input-password-toggle.js +37 -10
  433. package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +61 -0
  434. package/dist/collection/components/item/item.ionic.css +495 -0
  435. package/dist/collection/components/item/item.ios.css +120 -80
  436. package/dist/collection/components/item/item.js +51 -21
  437. package/dist/collection/components/item/item.md.css +131 -79
  438. package/dist/collection/components/item-divider/item-divider.ios.css +18 -0
  439. package/dist/collection/components/item-divider/item-divider.js +11 -8
  440. package/dist/collection/components/item-divider/item-divider.md.css +18 -0
  441. package/dist/collection/components/item-group/item-group.ios.css +12 -0
  442. package/dist/collection/components/item-group/item-group.js +13 -7
  443. package/dist/collection/components/item-group/item-group.md.css +12 -0
  444. package/dist/collection/components/item-option/item-option.ionic.css +276 -0
  445. package/dist/collection/components/item-option/item-option.ios.css +136 -29
  446. package/dist/collection/components/item-option/item-option.js +73 -9
  447. package/dist/collection/components/item-option/item-option.md.css +136 -29
  448. package/dist/collection/components/item-options/item-options.ionic.css +221 -0
  449. package/dist/collection/components/item-options/item-options.ios.css +77 -34
  450. package/dist/collection/components/item-options/item-options.js +13 -7
  451. package/dist/collection/components/item-options/item-options.md.css +77 -34
  452. package/dist/collection/components/item-sliding/item-sliding.ionic.css +211 -0
  453. package/dist/collection/components/item-sliding/item-sliding.js +419 -35
  454. package/dist/collection/components/item-sliding/{item-sliding.css → item-sliding.native.css} +84 -9
  455. package/dist/collection/components/item-sliding/test/test.utils.js +13 -0
  456. package/dist/collection/components/label/label.ios.css +18 -0
  457. package/dist/collection/components/label/label.js +11 -8
  458. package/dist/collection/components/label/label.md.css +18 -0
  459. package/dist/collection/components/list/list.ionic.css +212 -0
  460. package/dist/collection/components/list/list.ios.css +54 -14
  461. package/dist/collection/components/list/list.js +48 -9
  462. package/dist/collection/components/list/list.md.css +56 -16
  463. package/dist/collection/components/list-header/list-header.ionic.css +189 -0
  464. package/dist/collection/components/list-header/list-header.ios.css +82 -38
  465. package/dist/collection/components/list-header/list-header.js +11 -8
  466. package/dist/collection/components/list-header/list-header.md.css +82 -38
  467. package/dist/collection/components/loading/loading.ios.css +13 -1
  468. package/dist/collection/components/loading/loading.js +15 -12
  469. package/dist/collection/components/loading/loading.md.css +13 -1
  470. package/dist/collection/components/menu/menu.ios.css +15 -3
  471. package/dist/collection/components/menu/menu.js +12 -7
  472. package/dist/collection/components/menu/menu.md.css +15 -3
  473. package/dist/collection/components/menu-button/menu-button.ionic.css +236 -0
  474. package/dist/collection/components/menu-button/menu-button.ios.css +48 -14
  475. package/dist/collection/components/menu-button/menu-button.js +23 -10
  476. package/dist/collection/components/menu-button/menu-button.md.css +49 -15
  477. package/dist/collection/components/menu-toggle/menu-toggle.js +8 -5
  478. package/dist/collection/components/modal/animations/ionic.enter.js +40 -0
  479. package/dist/collection/components/modal/animations/ionic.leave.js +28 -0
  480. package/dist/collection/components/modal/animations/sheet.js +8 -2
  481. package/dist/collection/components/modal/gestures/sheet.js +76 -10
  482. package/dist/collection/components/modal/modal.ionic.css +266 -0
  483. package/dist/collection/components/modal/modal.ios.css +178 -70
  484. package/dist/collection/components/modal/modal.js +52 -13
  485. package/dist/collection/components/modal/modal.md.css +178 -70
  486. package/dist/collection/components/nav/nav.css +7 -1
  487. package/dist/collection/components/nav/nav.js +10 -4
  488. package/dist/collection/components/nav-link/nav-link.js +5 -1
  489. package/dist/collection/components/note/note.ios.css +12 -0
  490. package/dist/collection/components/note/note.js +11 -8
  491. package/dist/collection/components/note/note.md.css +12 -0
  492. package/dist/collection/components/picker/picker.ios.css +15 -3
  493. package/dist/collection/components/picker/picker.js +8 -5
  494. package/dist/collection/components/picker/picker.md.css +15 -3
  495. package/dist/collection/components/picker-column/picker-column.css +9 -2
  496. package/dist/collection/components/picker-column/picker-column.js +8 -7
  497. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +6 -0
  498. package/dist/collection/components/picker-column-option/picker-column-option.js +13 -7
  499. package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -0
  500. package/dist/collection/components/popover/popover.ionic.css +289 -0
  501. package/dist/collection/components/popover/popover.ios.css +13 -1
  502. package/dist/collection/components/popover/popover.js +19 -16
  503. package/dist/collection/components/popover/popover.md.css +13 -1
  504. package/dist/collection/components/progress-bar/progress-bar.ionic.css +287 -0
  505. package/dist/collection/components/progress-bar/progress-bar.ios.css +48 -17
  506. package/dist/collection/components/progress-bar/progress-bar.js +43 -7
  507. package/dist/collection/components/progress-bar/progress-bar.md.css +48 -17
  508. package/dist/collection/components/radio/radio.ionic.css +421 -0
  509. package/dist/collection/components/radio/radio.ios.css +207 -102
  510. package/dist/collection/components/radio/radio.js +14 -9
  511. package/dist/collection/components/radio/radio.md.css +207 -102
  512. package/dist/collection/components/radio-group/radio-group.ionic.css +118 -0
  513. package/dist/collection/components/radio-group/radio-group.ios.css +43 -19
  514. package/dist/collection/components/radio-group/radio-group.js +48 -7
  515. package/dist/collection/components/radio-group/radio-group.md.css +43 -19
  516. package/dist/collection/components/range/range.ionic.css +566 -0
  517. package/dist/collection/components/range/range.ios.css +128 -85
  518. package/dist/collection/components/range/range.js +16 -10
  519. package/dist/collection/components/range/range.md.css +128 -85
  520. package/dist/collection/components/refresher/refresher.ios.css +14 -1
  521. package/dist/collection/components/refresher/refresher.js +11 -8
  522. package/dist/collection/components/refresher/refresher.md.css +15 -2
  523. package/dist/collection/components/refresher-content/refresher-content.js +34 -7
  524. package/dist/collection/components/reorder/reorder.ios.css +6 -0
  525. package/dist/collection/components/reorder/reorder.js +25 -6
  526. package/dist/collection/components/reorder/reorder.md.css +6 -0
  527. package/dist/collection/components/reorder-group/reorder-group.css +6 -0
  528. package/dist/collection/components/reorder-group/reorder-group.js +8 -4
  529. package/dist/collection/components/ripple-effect/{ripple-effect.css → ripple-effect.common.css} +7 -1
  530. package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +215 -0
  531. package/dist/collection/components/ripple-effect/ripple-effect.js +14 -6
  532. package/dist/collection/components/route/route.js +4 -0
  533. package/dist/collection/components/router/router.js +4 -0
  534. package/dist/collection/components/router-link/router-link.css +8 -2
  535. package/dist/collection/components/router-link/router-link.js +9 -5
  536. package/dist/collection/components/router-outlet/router-outlet.css +7 -1
  537. package/dist/collection/components/router-outlet/router-outlet.js +6 -3
  538. package/dist/collection/components/row/row.css +16 -0
  539. package/dist/collection/components/row/row.js +9 -2
  540. package/dist/collection/components/searchbar/searchbar.ionic.css +621 -0
  541. package/dist/collection/components/searchbar/searchbar.ios.css +56 -18
  542. package/dist/collection/components/searchbar/searchbar.js +164 -42
  543. package/dist/collection/components/searchbar/searchbar.md.css +56 -18
  544. package/dist/collection/components/segment/segment.ionic.css +115 -0
  545. package/dist/collection/components/segment/segment.ios.css +45 -2
  546. package/dist/collection/components/segment/segment.js +11 -8
  547. package/dist/collection/components/segment/segment.md.css +45 -2
  548. package/dist/collection/components/segment-button/segment-button.ionic.css +351 -0
  549. package/dist/collection/components/segment-button/segment-button.ios.css +146 -105
  550. package/dist/collection/components/segment-button/segment-button.js +11 -8
  551. package/dist/collection/components/segment-button/segment-button.md.css +148 -107
  552. package/dist/collection/components/segment-content/segment-content.js +1 -1
  553. package/dist/collection/components/segment-view/segment-view.ios.css +6 -0
  554. package/dist/collection/components/segment-view/segment-view.js +13 -4
  555. package/dist/collection/components/segment-view/segment-view.md.css +6 -0
  556. package/dist/collection/components/select/select.ionic.css +972 -0
  557. package/dist/collection/components/select/select.ios.css +300 -148
  558. package/dist/collection/components/select/select.js +228 -82
  559. package/dist/collection/components/select/select.md.css +316 -150
  560. package/dist/collection/components/select-modal/select-modal.ionic.css +254 -0
  561. package/dist/collection/components/select-modal/select-modal.ios.css +293 -45
  562. package/dist/collection/components/select-modal/select-modal.js +63 -15
  563. package/dist/collection/components/select-modal/select-modal.md.css +273 -43
  564. package/dist/collection/components/select-option/select-option.js +8 -4
  565. package/dist/collection/components/select-popover/select-popover.ionic.css +253 -0
  566. package/dist/collection/components/select-popover/select-popover.ios.css +188 -124
  567. package/dist/collection/components/select-popover/select-popover.js +17 -9
  568. package/dist/collection/components/select-popover/select-popover.md.css +228 -47
  569. package/dist/collection/components/skeleton-text/skeleton-text.css +6 -0
  570. package/dist/collection/components/skeleton-text/skeleton-text.js +9 -5
  571. package/dist/collection/components/spinner/{spinner.css → spinner.ionic.css} +78 -10
  572. package/dist/collection/components/spinner/spinner.js +47 -6
  573. package/dist/collection/components/spinner/spinner.native.css +199 -0
  574. package/dist/collection/components/split-pane/split-pane.ios.css +20 -2
  575. package/dist/collection/components/split-pane/split-pane.js +15 -8
  576. package/dist/collection/components/split-pane/split-pane.md.css +20 -2
  577. package/dist/collection/components/tab/tab.js +6 -2
  578. package/dist/collection/components/tab-bar/tab-bar.ionic.css +249 -0
  579. package/dist/collection/components/tab-bar/tab-bar.ios.css +86 -43
  580. package/dist/collection/components/tab-bar/tab-bar.js +178 -15
  581. package/dist/collection/components/tab-bar/tab-bar.md.css +86 -43
  582. package/dist/collection/components/tab-button/tab-button.ionic.css +372 -0
  583. package/dist/collection/components/tab-button/tab-button.ios.css +171 -95
  584. package/dist/collection/components/tab-button/tab-button.js +54 -9
  585. package/dist/collection/components/tab-button/tab-button.md.css +137 -93
  586. package/dist/collection/components/tabs/tabs.css +7 -1
  587. package/dist/collection/components/tabs/tabs.js +4 -1
  588. package/dist/collection/components/text/text.css +6 -0
  589. package/dist/collection/components/text/text.js +7 -6
  590. package/dist/collection/components/textarea/textarea.ionic.css +989 -0
  591. package/dist/collection/components/textarea/textarea.ios.css +318 -170
  592. package/dist/collection/components/textarea/textarea.js +270 -45
  593. package/dist/collection/components/textarea/textarea.md.css +332 -171
  594. package/dist/collection/components/thumbnail/thumbnail.css +6 -0
  595. package/dist/collection/components/thumbnail/thumbnail.js +9 -2
  596. package/dist/collection/components/title/title.ionic.css +125 -0
  597. package/dist/collection/components/title/title.ios.css +32 -4
  598. package/dist/collection/components/title/title.js +13 -7
  599. package/dist/collection/components/title/title.md.css +39 -4
  600. package/dist/collection/components/toast/animations/utils.js +1 -1
  601. package/dist/collection/components/toast/toast.ionic.css +391 -0
  602. package/dist/collection/components/toast/toast.ios.css +84 -45
  603. package/dist/collection/components/toast/toast.js +79 -13
  604. package/dist/collection/components/toast/toast.md.css +84 -45
  605. package/dist/collection/components/toggle/toggle.ionic.css +510 -0
  606. package/dist/collection/components/toggle/toggle.ios.css +247 -127
  607. package/dist/collection/components/toggle/toggle.js +58 -18
  608. package/dist/collection/components/toggle/toggle.md.css +245 -127
  609. package/dist/collection/components/toolbar/test/image.svg +1 -0
  610. package/dist/collection/components/toolbar/toolbar.ionic.css +249 -0
  611. package/dist/collection/components/toolbar/toolbar.ios.css +90 -47
  612. package/dist/collection/components/toolbar/toolbar.js +216 -14
  613. package/dist/collection/components/toolbar/toolbar.md.css +90 -47
  614. package/dist/collection/global/ionic-global.js +239 -13
  615. package/dist/collection/utils/css-value-validation.js +39 -0
  616. package/dist/collection/utils/focus-trap.js +15 -4
  617. package/dist/collection/utils/focus-visible.js +73 -2
  618. package/dist/collection/utils/forms/clear-button-press-controller.js +40 -0
  619. package/dist/collection/utils/forms/index.js +1 -0
  620. package/dist/collection/utils/forms/validity.js +31 -0
  621. package/dist/collection/utils/framework-delegate.js +3 -1
  622. package/dist/collection/utils/hardware-back-button.js +15 -0
  623. package/dist/collection/utils/helpers.js +84 -3
  624. package/dist/collection/utils/keyboard/keyboard-controller.js +3 -1
  625. package/dist/collection/utils/media.js +1 -0
  626. package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
  627. package/dist/collection/utils/menu-controller/animations/push.js +2 -1
  628. package/dist/collection/utils/menu-controller/animations/reveal.js +2 -1
  629. package/dist/collection/utils/overlay-control-label.js +13 -11
  630. package/dist/collection/utils/overlays.js +289 -10
  631. package/dist/collection/utils/scroll-hide-controller.js +178 -0
  632. package/dist/collection/utils/test/playwright/drag-element.js +32 -9
  633. package/dist/collection/utils/test/playwright/field-geometry.js +34 -0
  634. package/dist/collection/utils/test/playwright/generator.js +48 -23
  635. package/dist/collection/utils/test/playwright/index.js +1 -0
  636. package/dist/collection/utils/test/playwright/page/utils/goto.js +10 -1
  637. package/dist/collection/utils/test/playwright/page/utils/set-content.js +26 -3
  638. package/dist/collection/utils/theme.js +25 -1
  639. package/dist/collection/utils/transition/ios.transition.js +1 -0
  640. package/dist/docs.json +8890 -300
  641. package/dist/esm/{animation-CFd8Olt3.js → animation-BYhTNLb0.js} +2 -2
  642. package/dist/esm/{app-globals-7GHLBkwd.js → app-globals-DwKMi0nT.js} +1 -1
  643. package/dist/esm/{attribute-controller-Cn665x42.js → attribute-controller-DSgMe9D8.js} +2 -1
  644. package/dist/esm/{button-active-DMuYeDQN.js → button-active-z7D6HahS.js} +2 -2
  645. package/dist/esm/{capacitor-CoEgIpR9.js → capacitor-CFERIeaU.js} +1 -1
  646. package/dist/esm/clear-button-press-controller-6ph4kKYn.js +43 -0
  647. package/dist/esm/focus-visible-BYk20Mf5.js +146 -0
  648. package/dist/esm/{format-C9zPmwKU.js → format-Bzx6ja8X.js} +1 -1
  649. package/dist/esm/{framework-delegate-DeT5pmPB.js → framework-delegate-1jBLyhBr.js} +4 -2
  650. package/dist/esm/{haptic-Dxm7ZmT5.js → haptic-Cq4UAeka.js} +1 -1
  651. package/dist/esm/{helpers-B54ynME_.js → helpers-DxiyEiQq.js} +86 -8
  652. package/dist/esm/{index-D_xZtbw6.js → index-3qJiaSN_.js} +4 -2
  653. package/dist/esm/{index-D4ZMZz_3.js → index-BOBjcNAK.js} +1 -1
  654. package/dist/esm/{index-BvabGprD.js → index-BkJpfpXI.js} +2 -1
  655. package/dist/esm/{index-B8iieOdw.js → index-BrTerDOH.js} +4 -4
  656. package/dist/esm/{index-D9OR05yj.js → index-CsxpVq9f.js} +53 -4
  657. package/dist/esm/{index--21qeSt0.js → index-D0-93AmS.js} +2 -2
  658. package/dist/esm/{index-B9jhwvmO.js → index-LPo3JBab.js} +12 -10
  659. package/dist/esm/index-ZjP4CjeZ.js +7 -0
  660. package/dist/esm/index.js +14 -12
  661. package/dist/esm/{input-shims-MCrhq67U.js → input-shims-HqimWtEw.js} +7 -5
  662. package/dist/esm/{input.utils-B-IIWrwT.js → input.utils-BQE7ESFW.js} +1 -1
  663. package/dist/esm/ion-accordion_2.entry.js +57 -29
  664. package/dist/esm/ion-action-sheet.entry.js +27 -22
  665. package/dist/esm/ion-alert.entry.js +34 -29
  666. package/dist/esm/ion-app_8.entry.js +455 -193
  667. package/dist/esm/ion-avatar_3.entry.js +124 -13
  668. package/dist/esm/ion-back-button.entry.js +31 -23
  669. package/dist/esm/ion-backdrop.entry.js +11 -7
  670. package/dist/esm/ion-breadcrumb_2.entry.js +42 -18
  671. package/dist/esm/ion-button_2.entry.js +61 -23
  672. package/dist/esm/ion-card_5.entry.js +57 -34
  673. package/dist/esm/ion-checkbox.entry.js +43 -17
  674. package/dist/esm/ion-chip.entry.js +51 -9
  675. package/dist/esm/ion-col_3.entry.js +57 -62
  676. package/dist/esm/ion-datetime-button.entry.js +14 -9
  677. package/dist/esm/ion-datetime.entry.js +74 -32
  678. package/dist/esm/ion-divider.entry.js +50 -0
  679. package/dist/esm/ion-fab_3.entry.js +40 -28
  680. package/dist/esm/ion-gallery-item.entry.js +57 -0
  681. package/dist/esm/ion-gallery.entry.js +606 -0
  682. package/dist/esm/ion-img.entry.js +9 -4
  683. package/dist/esm/ion-infinite-scroll_2.entry.js +91 -16
  684. package/dist/esm/ion-input-otp.entry.js +74 -9
  685. package/dist/esm/ion-input-password-toggle.entry.js +42 -14
  686. package/dist/esm/ion-input.entry.js +143 -38
  687. package/dist/esm/ion-item-option_3.entry.js +466 -52
  688. package/dist/esm/ion-item_8.entry.js +118 -51
  689. package/dist/esm/ion-loading.entry.js +22 -17
  690. package/dist/esm/ion-menu_3.entry.js +45 -27
  691. package/dist/esm/ion-modal.entry.js +218 -90
  692. package/dist/esm/ion-nav_2.entry.js +14 -10
  693. package/dist/esm/ion-picker-column-option.entry.js +13 -8
  694. package/dist/esm/ion-picker-column.entry.js +14 -12
  695. package/dist/esm/ion-picker.entry.js +11 -6
  696. package/dist/esm/ion-popover.entry.js +23 -18
  697. package/dist/esm/ion-progress-bar.entry.js +28 -9
  698. package/dist/esm/ion-radio_2.entry.js +37 -18
  699. package/dist/esm/ion-range.entry.js +21 -13
  700. package/dist/esm/ion-refresher_2.entry.js +45 -20
  701. package/dist/esm/ion-reorder_2.entry.js +31 -13
  702. package/dist/esm/ion-ripple-effect.entry.js +16 -7
  703. package/dist/esm/ion-route_4.entry.js +12 -10
  704. package/dist/esm/ion-searchbar.entry.js +118 -32
  705. package/dist/esm/ion-segment-content.entry.js +2 -2
  706. package/dist/esm/ion-segment-view.entry.js +13 -3
  707. package/dist/esm/ion-segment_2.entry.js +24 -16
  708. package/dist/esm/ion-select-modal.entry.js +53 -24
  709. package/dist/esm/ion-select_3.entry.js +194 -76
  710. package/dist/esm/ion-spinner.entry.js +31 -8
  711. package/dist/esm/ion-split-pane.entry.js +14 -9
  712. package/dist/esm/ion-tab-bar_2.entry.js +149 -26
  713. package/dist/esm/ion-tab_2.entry.js +9 -7
  714. package/dist/esm/ion-text.entry.js +8 -7
  715. package/dist/esm/ion-textarea.entry.js +242 -33
  716. package/dist/esm/ion-toast.entry.js +48 -19
  717. package/dist/esm/ion-toggle.entry.js +67 -25
  718. package/dist/esm/ionic-global-BAIaPRGU.js +509 -0
  719. package/dist/esm/ionic.js +6 -5
  720. package/dist/esm/{ios.transition-CRfGj4Mo.js → ios.transition-BN0AUjKH.js} +7 -4
  721. package/dist/esm/{item-multiple-inputs-BSD9wGHO.js → item-multiple-inputs-f3Vz153y.js} +1 -1
  722. package/dist/esm/{keyboard-DDw62P0D.js → keyboard-Cj8mLJeq.js} +3 -5
  723. package/dist/esm/{keyboard-ly3M0GO7.js → keyboard-DAF8GNJ9.js} +1 -1
  724. package/dist/esm/loader.js +6 -5
  725. package/dist/esm/{md.transition-wqThNy_C.js → md.transition-BZ3TWMK6.js} +6 -4
  726. package/dist/esm/{overlay-control-label-BSQPZ79H.js → overlay-control-label-CODBQrPj.js} +13 -11
  727. package/dist/esm/{overlays-BQnV0HAU.js → overlays-CLqEprTi.js} +307 -133
  728. package/dist/esm/scroll-hide-controller-m-39_CyK.js +342 -0
  729. package/dist/esm/{select-option-render-CGxPejmz.js → select-option-render-CDyG_Ujc.js} +2 -2
  730. package/dist/esm/{slot-mutation-controller-C3s4-_YN.js → slot-mutation-controller-DXsogmcJ.js} +2 -1
  731. package/dist/esm/{status-tap-DRx9wSD_.js → status-tap-BzPUcwpI.js} +5 -3
  732. package/dist/esm/{swipe-back-Ch3UU_US.js → swipe-back-D8sqbjOf.js} +4 -2
  733. package/dist/esm/{theme-byZM6qHV.js → theme-BUF_V-Kg.js} +25 -1
  734. package/dist/esm/validity-NcQUGze-.js +48 -0
  735. package/dist/html.html-data.json +2631 -150
  736. package/dist/ionic/index.esm.js +1 -1
  737. package/dist/ionic/ionic.esm.js +1 -1
  738. package/dist/ionic/p-00e5052e.entry.js +4 -0
  739. package/dist/ionic/p-0cb3bf40.entry.js +4 -0
  740. package/dist/ionic/p-0cb9a213.entry.js +4 -0
  741. package/dist/ionic/p-10d11d15.entry.js +4 -0
  742. package/dist/ionic/p-1c2af758.entry.js +4 -0
  743. package/dist/ionic/p-1cd8acc1.entry.js +4 -0
  744. package/dist/ionic/p-1e11cfe6.entry.js +4 -0
  745. package/dist/ionic/p-1e13dfa6.entry.js +4 -0
  746. package/dist/ionic/p-2da8417a.entry.js +4 -0
  747. package/dist/ionic/p-30643dd0.entry.js +4 -0
  748. package/dist/ionic/p-3246c8db.entry.js +4 -0
  749. package/dist/ionic/p-335f6ac5.entry.js +4 -0
  750. package/dist/ionic/p-3636e449.entry.js +4 -0
  751. package/dist/ionic/p-3c073e44.entry.js +4 -0
  752. package/dist/ionic/p-3f78fbb9.entry.js +4 -0
  753. package/dist/ionic/p-473f56d0.entry.js +4 -0
  754. package/dist/ionic/p-4ce892d6.entry.js +4 -0
  755. package/dist/ionic/p-4d824bdd.entry.js +4 -0
  756. package/dist/ionic/p-57a084b1.entry.js +4 -0
  757. package/dist/ionic/p-5dfc15b7.entry.js +4 -0
  758. package/dist/ionic/p-5e4eec2e.entry.js +4 -0
  759. package/dist/ionic/p-67d0f149.entry.js +4 -0
  760. package/dist/ionic/p-6d48ce72.entry.js +4 -0
  761. package/dist/ionic/p-78963796.entry.js +4 -0
  762. package/dist/ionic/p-8201e3a4.entry.js +4 -0
  763. package/dist/ionic/p-8675912f.entry.js +4 -0
  764. package/dist/ionic/p-8c8001d1.entry.js +4 -0
  765. package/dist/ionic/p-96ef4bc4.entry.js +4 -0
  766. package/dist/ionic/p-978335f1.entry.js +4 -0
  767. package/dist/ionic/{p-PkaVMJga.js → p-B1XKnjaF.js} +1 -1
  768. package/dist/ionic/{p-DNxEB9-T.js → p-B3KpQBCL.js} +1 -1
  769. package/dist/ionic/p-BCYG0ntp.js +4 -0
  770. package/dist/ionic/p-BI5taije.js +4 -0
  771. package/dist/ionic/{p-DxvRP6ld.js → p-BMPN55of.js} +1 -1
  772. package/dist/ionic/p-BPZc3Ck-.js +4 -0
  773. package/dist/ionic/p-BSH8IzpI.js +4 -0
  774. package/dist/ionic/p-BUF_V-Kg.js +4 -0
  775. package/dist/ionic/p-BVTltcXo.js +4 -0
  776. package/dist/ionic/p-BYk20Mf5.js +4 -0
  777. package/dist/ionic/p-BfDzKnZ-.js +4 -0
  778. package/dist/ionic/p-BjQlYdiZ.js +4 -0
  779. package/dist/ionic/p-BkJpfpXI.js +4 -0
  780. package/dist/ionic/p-Bo9gphwB.js +4 -0
  781. package/dist/ionic/p-BsFwDB3d.js +4 -0
  782. package/dist/ionic/{p-BhMQahM6.js → p-BsSAvQwi.js} +1 -1
  783. package/dist/ionic/{p-BUB5OrpU.js → p-C0TTjAkK.js} +1 -1
  784. package/dist/ionic/p-CIGNaXM1.js +4 -0
  785. package/dist/ionic/p-CODBQrPj.js +4 -0
  786. package/dist/ionic/{p-CVwXN07G.js → p-CcJ1m8ij.js} +1 -1
  787. package/dist/ionic/p-CsxpVq9f.js +6 -0
  788. package/dist/ionic/p-CvHTFTlP.js +4 -0
  789. package/dist/ionic/{p-CCik51Nv.js → p-D1Dp9g6Y.js} +1 -1
  790. package/dist/ionic/p-D5I40TIB.js +4 -0
  791. package/dist/ionic/p-D5t_-oMk.js +4 -0
  792. package/{components/p-C7rB-0-1.js → dist/ionic/p-DN4HuOWQ.js} +1 -1
  793. package/dist/ionic/p-DbnqpMyu.js +4 -0
  794. package/dist/ionic/p-DlhQjMCJ.js +4 -0
  795. package/dist/ionic/{p-kKvGoaEe.js → p-Due7p-3G.js} +1 -1
  796. package/dist/ionic/p-NcQUGze-.js +4 -0
  797. package/dist/ionic/{p-BCgqWm-V.js → p-T71k3C35.js} +1 -1
  798. package/dist/ionic/p-U8dpZ2Zp.js +4 -0
  799. package/dist/ionic/p-ZjP4CjeZ.js +4 -0
  800. package/dist/ionic/p-a13d8dbd.entry.js +4 -0
  801. package/dist/ionic/p-a60ab478.entry.js +4 -0
  802. package/dist/ionic/p-ac35ffde.entry.js +4 -0
  803. package/dist/ionic/p-b397988a.entry.js +4 -0
  804. package/dist/ionic/p-bb125f13.entry.js +4 -0
  805. package/dist/ionic/p-bb69e27a.entry.js +4 -0
  806. package/dist/ionic/p-bd6dbe7c.entry.js +4 -0
  807. package/dist/ionic/p-c3775482.entry.js +4 -0
  808. package/dist/ionic/p-c5978136.entry.js +4 -0
  809. package/dist/ionic/p-c649b0c8.entry.js +4 -0
  810. package/dist/ionic/p-c80d354e.entry.js +4 -0
  811. package/dist/ionic/p-cc47e975.entry.js +4 -0
  812. package/dist/ionic/p-d0d6727a.entry.js +4 -0
  813. package/dist/ionic/p-d3a427d2.entry.js +4 -0
  814. package/dist/ionic/p-da25ac49.entry.js +4 -0
  815. package/dist/ionic/p-dc063e74.entry.js +4 -0
  816. package/dist/ionic/p-e022d624.entry.js +4 -0
  817. package/dist/ionic/p-e43deed1.entry.js +4 -0
  818. package/dist/ionic/p-e4bb0618.entry.js +4 -0
  819. package/dist/ionic/p-e5bff83e.entry.js +4 -0
  820. package/dist/ionic/p-ea10456b.entry.js +4 -0
  821. package/dist/ionic/p-ea80809c.entry.js +4 -0
  822. package/dist/ionic/p-f10b7057.entry.js +4 -0
  823. package/dist/ionic/p-f336761a.entry.js +4 -0
  824. package/dist/ionic/p-f6df1e51.entry.js +4 -0
  825. package/dist/ionic/p-fbbef443.entry.js +4 -0
  826. package/dist/ionic/p-ox5nzV5F.js +4 -0
  827. package/dist/ionic/p-s_fyA5w3.js +4 -0
  828. package/dist/ionic/p-xGKwMcE6.js +4 -0
  829. package/dist/types/components/accordion/accordion.d.ts +12 -3
  830. package/dist/types/components/accordion-group/accordion-group.d.ts +12 -1
  831. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +3 -7
  832. package/dist/types/components/action-sheet/action-sheet.d.ts +3 -2
  833. package/dist/types/components/alert/alert-interface.d.ts +3 -7
  834. package/dist/types/components/alert/alert.d.ts +3 -2
  835. package/dist/types/components/app/app.d.ts +4 -5
  836. package/dist/types/components/avatar/avatar.d.ts +32 -0
  837. package/dist/types/components/back-button/back-button.d.ts +10 -3
  838. package/dist/types/components/backdrop/backdrop.d.ts +4 -0
  839. package/dist/types/components/badge/badge.d.ts +34 -1
  840. package/dist/types/components/breadcrumb/breadcrumb.d.ts +14 -1
  841. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
  842. package/dist/types/components/button/button.d.ts +23 -8
  843. package/dist/types/components/buttons/buttons.d.ts +5 -1
  844. package/dist/types/components/card/card.d.ts +8 -1
  845. package/dist/types/components/card-content/card-content.d.ts +2 -1
  846. package/dist/types/components/card-header/card-header.d.ts +3 -2
  847. package/dist/types/components/card-subtitle/card-subtitle.d.ts +2 -1
  848. package/dist/types/components/card-title/card-title.d.ts +2 -1
  849. package/dist/types/components/checkbox/checkbox.d.ts +26 -5
  850. package/dist/types/components/chip/chip.d.ts +26 -1
  851. package/dist/types/components/col/col.d.ts +52 -5
  852. package/dist/types/components/content/content.d.ts +3 -0
  853. package/dist/types/components/datetime/datetime.d.ts +26 -1
  854. package/dist/types/components/datetime/utils/data.d.ts +5 -5
  855. package/dist/types/components/datetime-button/datetime-button.d.ts +2 -1
  856. package/dist/types/components/divider/divider.d.ts +20 -0
  857. package/dist/types/components/fab/fab.d.ts +4 -0
  858. package/dist/types/components/fab-button/fab-button.d.ts +11 -3
  859. package/dist/types/components/fab-list/fab-list.d.ts +4 -0
  860. package/dist/types/components/footer/footer-interface.d.ts +1 -0
  861. package/dist/types/components/footer/footer.d.ts +20 -3
  862. package/dist/types/components/gallery/gallery-constants.d.ts +9 -0
  863. package/dist/types/components/gallery/gallery-interface.d.ts +10 -0
  864. package/dist/types/components/gallery/gallery.d.ts +218 -0
  865. package/dist/types/components/gallery/test/utils.d.ts +3 -0
  866. package/dist/types/components/gallery-item/gallery-item.d.ts +33 -0
  867. package/dist/types/components/grid/grid.d.ts +4 -0
  868. package/dist/types/components/header/header-interface.d.ts +1 -0
  869. package/dist/types/components/header/header.d.ts +26 -3
  870. package/dist/types/components/header/header.utils.d.ts +4 -5
  871. package/dist/types/components/img/img.d.ts +2 -0
  872. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +21 -0
  873. package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +4 -0
  874. package/dist/types/components/input/input.d.ts +45 -5
  875. package/dist/types/components/input-otp/input-otp.d.ts +37 -0
  876. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +14 -0
  877. package/dist/types/components/item/item.d.ts +17 -4
  878. package/dist/types/components/item-divider/item-divider.d.ts +2 -1
  879. package/dist/types/components/item-group/item-group.d.ts +4 -0
  880. package/dist/types/components/item-option/item-option.d.ts +18 -1
  881. package/dist/types/components/item-options/item-options.d.ts +4 -0
  882. package/dist/types/components/item-sliding/item-sliding.d.ts +47 -1
  883. package/dist/types/components/item-sliding/test/test.utils.d.ts +13 -0
  884. package/dist/types/components/label/label.d.ts +2 -1
  885. package/dist/types/components/list/list.d.ts +15 -1
  886. package/dist/types/components/list-header/list-header.d.ts +2 -1
  887. package/dist/types/components/loading/loading-interface.d.ts +2 -7
  888. package/dist/types/components/loading/loading.d.ts +3 -2
  889. package/dist/types/components/menu/menu.d.ts +3 -0
  890. package/dist/types/components/menu-button/menu-button.d.ts +8 -1
  891. package/dist/types/components/menu-toggle/menu-toggle.d.ts +3 -0
  892. package/dist/types/components/modal/animations/ionic.enter.d.ts +6 -0
  893. package/dist/types/components/modal/animations/ionic.leave.d.ts +6 -0
  894. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  895. package/dist/types/components/modal/modal-interface.d.ts +4 -7
  896. package/dist/types/components/modal/modal.d.ts +11 -1
  897. package/dist/types/components/nav/nav-interface.d.ts +9 -1
  898. package/dist/types/components/nav/nav.d.ts +5 -1
  899. package/dist/types/components/nav-link/nav-link.d.ts +4 -0
  900. package/dist/types/components/note/note.d.ts +2 -1
  901. package/dist/types/components/picker/picker.d.ts +2 -1
  902. package/dist/types/components/picker-column/picker-column.d.ts +2 -1
  903. package/dist/types/components/picker-column-option/picker-column-option.d.ts +4 -0
  904. package/dist/types/components/popover/popover-interface.d.ts +3 -6
  905. package/dist/types/components/popover/popover.d.ts +6 -5
  906. package/dist/types/components/progress-bar/progress-bar.d.ts +10 -1
  907. package/dist/types/components/radio/radio.d.ts +2 -1
  908. package/dist/types/components/radio-group/radio-group.d.ts +12 -0
  909. package/dist/types/components/range/range.d.ts +2 -1
  910. package/dist/types/components/refresher/refresher.d.ts +2 -1
  911. package/dist/types/components/refresher-content/refresher-content.d.ts +10 -0
  912. package/dist/types/components/reorder/reorder.d.ts +9 -0
  913. package/dist/types/components/reorder-group/reorder-group.d.ts +4 -0
  914. package/dist/types/components/ripple-effect/ripple-effect.d.ts +4 -0
  915. package/dist/types/components/route/route.d.ts +4 -0
  916. package/dist/types/components/router/router.d.ts +4 -0
  917. package/dist/types/components/router-link/router-link.d.ts +4 -0
  918. package/dist/types/components/router-outlet/router-outlet.d.ts +4 -1
  919. package/dist/types/components/row/row.d.ts +4 -0
  920. package/dist/types/components/searchbar/searchbar.d.ts +56 -10
  921. package/dist/types/components/segment/segment.d.ts +2 -1
  922. package/dist/types/components/segment-button/segment-button.d.ts +2 -1
  923. package/dist/types/components/select/select.d.ts +59 -15
  924. package/dist/types/components/select-modal/select-modal.d.ts +13 -0
  925. package/dist/types/components/select-option/select-option.d.ts +7 -4
  926. package/dist/types/components/select-popover/select-popover.d.ts +3 -0
  927. package/dist/types/components/skeleton-text/skeleton-text.d.ts +4 -0
  928. package/dist/types/components/spinner/spinner.d.ts +15 -0
  929. package/dist/types/components/split-pane/split-pane.d.ts +4 -0
  930. package/dist/types/components/tab/tab.d.ts +4 -0
  931. package/dist/types/components/tab-bar/tab-bar-interface.d.ts +1 -0
  932. package/dist/types/components/tab-bar/tab-bar.d.ts +41 -3
  933. package/dist/types/components/tab-button/tab-button.d.ts +12 -1
  934. package/dist/types/components/tabs/tabs.d.ts +3 -0
  935. package/dist/types/components/text/text.d.ts +2 -1
  936. package/dist/types/components/textarea/textarea.d.ts +85 -10
  937. package/dist/types/components/thumbnail/thumbnail.d.ts +4 -0
  938. package/dist/types/components/title/title.d.ts +4 -0
  939. package/dist/types/components/toast/animations/utils.d.ts +2 -2
  940. package/dist/types/components/toast/toast-interface.d.ts +3 -7
  941. package/dist/types/components/toast/toast.d.ts +19 -2
  942. package/dist/types/components/toggle/toggle.d.ts +18 -1
  943. package/dist/types/components/toolbar/toolbar.d.ts +43 -3
  944. package/dist/types/components.d.ts +1839 -211
  945. package/dist/types/global/ionic-global.d.ts +28 -2
  946. package/dist/types/interface.d.ts +3 -0
  947. package/dist/types/utils/config.d.ts +128 -4
  948. package/dist/types/utils/css-value-validation.d.ts +21 -0
  949. package/dist/types/utils/focus-trap.d.ts +1 -1
  950. package/dist/types/utils/focus-visible.d.ts +33 -0
  951. package/dist/types/utils/forms/clear-button-press-controller.d.ts +20 -0
  952. package/dist/types/utils/forms/index.d.ts +1 -0
  953. package/dist/types/utils/forms/validity.d.ts +7 -0
  954. package/dist/types/utils/helpers.d.ts +29 -0
  955. package/dist/types/utils/overlay-control-label.d.ts +11 -9
  956. package/dist/types/utils/overlays-interface.d.ts +31 -1
  957. package/dist/types/utils/overlays.d.ts +1 -1
  958. package/dist/types/utils/scroll-hide-controller.d.ts +56 -0
  959. package/dist/types/utils/test/playwright/drag-element.d.ts +16 -3
  960. package/dist/types/utils/test/playwright/field-geometry.d.ts +13 -0
  961. package/dist/types/utils/test/playwright/generator.d.ts +31 -2
  962. package/dist/types/utils/test/playwright/index.d.ts +1 -0
  963. package/dist/types/utils/theme.d.ts +9 -0
  964. package/hydrate/index.js +5409 -1229
  965. package/hydrate/index.mjs +5409 -1229
  966. package/package.json +9 -6
  967. package/components/p-6sKRBFnK.js +0 -4
  968. package/components/p-B8HBLiYi.js +0 -4
  969. package/components/p-BEiYs-sz.js +0 -4
  970. package/components/p-BKxLivx4.js +0 -4
  971. package/components/p-BLjEwM6v.js +0 -4
  972. package/components/p-BNnmwjuy.js +0 -4
  973. package/components/p-BSJriPuC.js +0 -4
  974. package/components/p-BSQPZ79H.js +0 -4
  975. package/components/p-BUVGbkSc.js +0 -4
  976. package/components/p-B_tZQKpS.js +0 -4
  977. package/components/p-BhamHSw3.js +0 -4
  978. package/components/p-BinR4_P7.js +0 -4
  979. package/components/p-BmVRXR1y.js +0 -4
  980. package/components/p-BrOSQhkA.js +0 -4
  981. package/components/p-BriaEJK8.js +0 -4
  982. package/components/p-BsLM9eQu.js +0 -4
  983. package/components/p-CAQG0btC.js +0 -4
  984. package/components/p-CHHkdXfP.js +0 -4
  985. package/components/p-CJgshb3W.js +0 -4
  986. package/components/p-CQjNc-Pz.js +0 -4
  987. package/components/p-CTUMJM0R.js +0 -4
  988. package/components/p-CXy2v7GI.js +0 -4
  989. package/components/p-Canp1qah.js +0 -4
  990. package/components/p-CcQQ8oRo.js +0 -4
  991. package/components/p-CiFFeRH9.js +0 -4
  992. package/components/p-CiXOsJF2.js +0 -4
  993. package/components/p-CvzE7FFp.js +0 -4
  994. package/components/p-CzykzqAO.js +0 -4
  995. package/components/p-D0jSx7rE.js +0 -4
  996. package/components/p-D4NOsSCE.js +0 -4
  997. package/components/p-DGLuPe1e.js +0 -4
  998. package/components/p-DGUed0uX.js +0 -4
  999. package/components/p-DJztqcrH.js +0 -4
  1000. package/components/p-DM2jMsSO.js +0 -4
  1001. package/components/p-DPyjiKOq.js +0 -4
  1002. package/components/p-DSmHJ2DH.js +0 -4
  1003. package/components/p-DlUdjUlf.js +0 -4
  1004. package/components/p-LH1I_Zhd.js +0 -4
  1005. package/components/p-LpMHEu3v.js +0 -4
  1006. package/components/p-PPagT42x.js +0 -4
  1007. package/components/p-RJT5zTbD.js +0 -4
  1008. package/components/p-WMQuK_Tj.js +0 -4
  1009. package/components/p-byZM6qHV.js +0 -4
  1010. package/components/p-eJpG4UbM.js +0 -4
  1011. package/components/p-q2WJ5Igc.js +0 -4
  1012. package/components/p-y7Nhe3de.js +0 -4
  1013. package/dist/cjs/focus-visible-CCvKiLh3.js +0 -77
  1014. package/dist/cjs/ionic-global-C1h8Yi_K.js +0 -156
  1015. package/dist/cjs/keyboard-controller-CLcFxSnb.js +0 -167
  1016. package/dist/cjs/validity-BpS37YFM.js +0 -19
  1017. package/dist/esm/focus-visible-BmVRXR1y.js +0 -75
  1018. package/dist/esm/ionic-global-B-G43ddm.js +0 -151
  1019. package/dist/esm/keyboard-controller-Dzjet5wD.js +0 -165
  1020. package/dist/esm/validity-DJztqcrH.js +0 -17
  1021. package/dist/ionic/p-0517aec4.entry.js +0 -4
  1022. package/dist/ionic/p-083b1119.entry.js +0 -4
  1023. package/dist/ionic/p-0ab133d6.entry.js +0 -4
  1024. package/dist/ionic/p-1110da0d.entry.js +0 -4
  1025. package/dist/ionic/p-1213b719.entry.js +0 -4
  1026. package/dist/ionic/p-150f350e.entry.js +0 -4
  1027. package/dist/ionic/p-20d1ac29.entry.js +0 -4
  1028. package/dist/ionic/p-24b0a961.entry.js +0 -4
  1029. package/dist/ionic/p-28f506ce.entry.js +0 -4
  1030. package/dist/ionic/p-2e6e933d.entry.js +0 -4
  1031. package/dist/ionic/p-30dcf43b.entry.js +0 -4
  1032. package/dist/ionic/p-378341d1.entry.js +0 -4
  1033. package/dist/ionic/p-37f46670.entry.js +0 -4
  1034. package/dist/ionic/p-3a5faaa8.entry.js +0 -4
  1035. package/dist/ionic/p-3bd7e5df.entry.js +0 -4
  1036. package/dist/ionic/p-3c4b0ba7.entry.js +0 -4
  1037. package/dist/ionic/p-42b2a992.entry.js +0 -4
  1038. package/dist/ionic/p-52dc3309.entry.js +0 -4
  1039. package/dist/ionic/p-58f914ee.entry.js +0 -4
  1040. package/dist/ionic/p-5b9666be.entry.js +0 -4
  1041. package/dist/ionic/p-5c19330c.entry.js +0 -4
  1042. package/dist/ionic/p-61b304c8.entry.js +0 -4
  1043. package/dist/ionic/p-624f2fa8.entry.js +0 -4
  1044. package/dist/ionic/p-636349e2.entry.js +0 -4
  1045. package/dist/ionic/p-6865f0e1.entry.js +0 -4
  1046. package/dist/ionic/p-7441ed2b.entry.js +0 -4
  1047. package/dist/ionic/p-76309bab.entry.js +0 -4
  1048. package/dist/ionic/p-83448626.entry.js +0 -4
  1049. package/dist/ionic/p-834afcf7.entry.js +0 -4
  1050. package/dist/ionic/p-93cd738b.entry.js +0 -4
  1051. package/dist/ionic/p-9b78fedf.entry.js +0 -4
  1052. package/dist/ionic/p-9dd9788c.entry.js +0 -4
  1053. package/dist/ionic/p-B4ELlbJE.js +0 -4
  1054. package/dist/ionic/p-B4wzg4z4.js +0 -4
  1055. package/dist/ionic/p-B4xjg_Qu.js +0 -4
  1056. package/dist/ionic/p-BChRVdVv.js +0 -4
  1057. package/dist/ionic/p-BSQPZ79H.js +0 -4
  1058. package/dist/ionic/p-BVEsh7-M.js +0 -4
  1059. package/dist/ionic/p-Ba6ZV-qU.js +0 -4
  1060. package/dist/ionic/p-BmVRXR1y.js +0 -4
  1061. package/dist/ionic/p-BtHAx8im.js +0 -4
  1062. package/dist/ionic/p-Bv-6401R.js +0 -4
  1063. package/dist/ionic/p-BvabGprD.js +0 -4
  1064. package/dist/ionic/p-CTmJSZcs.js +0 -4
  1065. package/dist/ionic/p-CTrwMl44.js +0 -4
  1066. package/dist/ionic/p-CgQdInM0.js +0 -4
  1067. package/dist/ionic/p-CrAPHbJ3.js +0 -4
  1068. package/dist/ionic/p-CsWrz1c2.js +0 -4
  1069. package/dist/ionic/p-D5akOqD0.js +0 -4
  1070. package/dist/ionic/p-D9OR05yj.js +0 -6
  1071. package/dist/ionic/p-DHf9V6zI.js +0 -4
  1072. package/dist/ionic/p-DJztqcrH.js +0 -4
  1073. package/dist/ionic/p-DZUqAr_6.js +0 -4
  1074. package/dist/ionic/p-Dzew6Qv7.js +0 -4
  1075. package/dist/ionic/p-b0a3dd1a.entry.js +0 -4
  1076. package/dist/ionic/p-b1164028.entry.js +0 -4
  1077. package/dist/ionic/p-b710b4b8.entry.js +0 -4
  1078. package/dist/ionic/p-b9659d21.entry.js +0 -4
  1079. package/dist/ionic/p-ba7bd621.entry.js +0 -4
  1080. package/dist/ionic/p-byZM6qHV.js +0 -4
  1081. package/dist/ionic/p-daaecea3.entry.js +0 -4
  1082. package/dist/ionic/p-e05073f6.entry.js +0 -4
  1083. package/dist/ionic/p-e137f724.entry.js +0 -4
  1084. package/dist/ionic/p-e1969fd1.entry.js +0 -4
  1085. package/dist/ionic/p-e338693a.entry.js +0 -4
  1086. package/dist/ionic/p-e4c3f17f.entry.js +0 -4
  1087. package/dist/ionic/p-e7414c33.entry.js +0 -4
  1088. package/dist/ionic/p-eb762f80.entry.js +0 -4
  1089. package/dist/ionic/p-edcb63e5.entry.js +0 -4
  1090. package/dist/ionic/p-efa00ce5.entry.js +0 -4
  1091. package/dist/ionic/p-f19e50f8.entry.js +0 -4
  1092. package/dist/ionic/p-f20b6a9b.entry.js +0 -4
  1093. package/dist/ionic/p-f9057f70.entry.js +0 -4
  1094. package/dist/ionic/p-f99cf5aa.entry.js +0 -4
  1095. package/dist/ionic/p-fee863dc.entry.js +0 -4
  1096. package/dist/ionic/p-tXpzvta8.js +0 -4
  1097. package/dist/ionic/p-vPo3vRFc.js +0 -4
  1098. /package/dist/collection/components/{input-password-toggle/input-password-toggle.css → refresher-content/refresher-content.css} +0 -0
@@ -3,21 +3,23 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-SAR1xwtW.js');
7
- var hardwareBackButton = require('./overlays-C68wNDWY.js');
8
- var ionicGlobal = require('./ionic-global-C1h8Yi_K.js');
9
- var helpers = require('./helpers-Crluoxqu.js');
6
+ var index = require('./index-sCX9078m.js');
7
+ var focusVisible = require('./focus-visible-DGPRKkcx.js');
8
+ var ionicGlobal = require('./ionic-global-BKBeko9D.js');
9
+ var helpers = require('./helpers-CLJM7hT0.js');
10
+ var overlays = require('./overlays-Ch6nAoha.js');
10
11
  var dir = require('./dir-zwDPRE5K.js');
11
- var theme = require('./theme-Bw0rpaNN.js');
12
- var index$1 = require('./index-BAM4223M.js');
13
- var keyboardController = require('./keyboard-controller-CLcFxSnb.js');
12
+ var theme = require('./theme-Cy4joHPt.js');
13
+ var index$1 = require('./index-DKcBQZY9.js');
14
+ var scrollHideController = require('./scroll-hide-controller-BwW-NV0Z.js');
14
15
  var cubicBezier = require('./cubic-bezier-DAjy1V-e.js');
15
- var frameworkDelegate = require('./framework-delegate-DTLbqaaO.js');
16
+ var frameworkDelegate = require('./framework-delegate-Dc-OOm7D.js');
16
17
  var lockController = require('./lock-controller-aDB9wrEf.js');
17
- var index$2 = require('./index-CgXTRA_-.js');
18
+ var index$2 = require('./index-DHE2MAbY.js');
19
+ require('./index-DkNv4J_i.js');
18
20
  require('./gesture-controller-CeJslptU.js');
19
- require('./keyboard-C-C7xMKk.js');
20
- require('./capacitor-BMzmHhwe.js');
21
+ require('./keyboard-cHxZlTyz.js');
22
+ require('./capacitor-DmA66EwP.js');
21
23
 
22
24
  const appCss = () => `html.plt-mobile ion-app{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.plt-mobile ion-app [contenteditable]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}ion-app.force-statusbar-padding{--ion-safe-area-top:20px}`;
23
25
 
@@ -25,51 +27,6 @@ const App = class {
25
27
  constructor(hostRef) {
26
28
  index.registerInstance(this, hostRef);
27
29
  }
28
- componentDidLoad() {
29
- {
30
- this.rIC(async () => {
31
- const isHybrid = ionicGlobal.isPlatform(window, 'hybrid');
32
- if (!index.config.getBoolean('_testing')) {
33
- Promise.resolve().then(function () { return require('./index-BKpybYNI.js'); }).then((module) => module.startTapClick(index.config));
34
- }
35
- if (index.config.getBoolean('statusTap', isHybrid)) {
36
- Promise.resolve().then(function () { return require('./status-tap-C3frTJ4c.js'); }).then((module) => module.startStatusTap());
37
- }
38
- if (index.config.getBoolean('inputShims', needInputShims())) {
39
- /**
40
- * needInputShims() ensures that only iOS and Android
41
- * platforms proceed into this block.
42
- */
43
- const platform = ionicGlobal.isPlatform(window, 'ios') ? 'ios' : 'android';
44
- Promise.resolve().then(function () { return require('./input-shims-CHghGZe-.js'); }).then((module) => module.startInputShims(index.config, platform));
45
- }
46
- const hardwareBackButtonModule = await Promise.resolve().then(function () { return require('./overlays-C68wNDWY.js'); }).then(function (n) { return n.hardwareBackButton; });
47
- const supportsHardwareBackButtonEvents = isHybrid || hardwareBackButton.shouldUseCloseWatcher();
48
- if (index.config.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {
49
- hardwareBackButtonModule.startHardwareBackButton();
50
- }
51
- else {
52
- /**
53
- * If an app sets hardwareBackButton: false and experimentalCloseWatcher: true
54
- * then the close watcher will not be used.
55
- */
56
- if (hardwareBackButton.shouldUseCloseWatcher()) {
57
- index.printIonWarning('[ion-app] - experimentalCloseWatcher was set to `true`, but hardwareBackButton was set to `false`. Both config options must be `true` for the Close Watcher API to be used.');
58
- }
59
- hardwareBackButtonModule.blockHardwareBackButton();
60
- }
61
- if (typeof window !== 'undefined') {
62
- Promise.resolve().then(function () { return require('./keyboard-Cv-LNReK.js'); }).then((module) => module.startKeyboardAssist(window));
63
- }
64
- Promise.resolve().then(function () { return require('./focus-visible-CCvKiLh3.js'); }).then((module) => (this.focusVisible = module.startFocusVisible()));
65
- });
66
- }
67
- }
68
- disconnectedCallback() {
69
- if (this.loadTimeout) {
70
- clearTimeout(this.loadTimeout);
71
- }
72
- }
73
30
  /**
74
31
  * Used to set focus on an element that uses `ion-focusable`.
75
32
  * Do not use this if focusing the element as a result of a keyboard
@@ -82,52 +39,29 @@ const App = class {
82
39
  * @param elements An array of HTML elements to set focus on.
83
40
  */
84
41
  async setFocus(elements) {
85
- if (this.focusVisible) {
86
- this.focusVisible.setFocus(elements);
87
- }
88
- }
89
- rIC(callback) {
90
- if ('requestIdleCallback' in window) {
91
- window.requestIdleCallback(callback);
92
- }
93
- else {
94
- this.loadTimeout = setTimeout(callback, 32);
95
- }
42
+ /**
43
+ * The focus-visible utility is used to set focus on an
44
+ * element that uses `ion-focusable`.
45
+ */
46
+ focusVisible.focusElements(elements);
96
47
  }
97
48
  render() {
98
- const mode = ionicGlobal.getIonMode(this);
99
- return (index.h(index.Host, { key: '77a7459d3e42b3715a5a7e1cf468e2ebc99e54bb', class: {
100
- [mode]: true,
49
+ const theme = ionicGlobal.getIonTheme(this);
50
+ return (index.h(index.Host, { key: '3b7e84c7c4187287123413f90838cda89136b2a4', class: {
51
+ [theme]: true,
101
52
  'ion-page': true,
102
53
  'force-statusbar-padding': index.config.getBoolean('_forceStatusbarPadding'),
103
54
  } }));
104
55
  }
105
56
  get el() { return index.getElement(this); }
106
57
  };
107
- const needInputShims = () => {
108
- /**
109
- * iOS always needs input shims
110
- */
111
- const needsShimsIOS = ionicGlobal.isPlatform(window, 'ios') && ionicGlobal.isPlatform(window, 'mobile');
112
- if (needsShimsIOS) {
113
- return true;
114
- }
115
- /**
116
- * Android only needs input shims when running
117
- * in the browser and only if the browser is using the
118
- * new Chrome 108+ resize behavior: https://developer.chrome.com/blog/viewport-resize-behavior/
119
- */
120
- const isAndroidMobileWeb = ionicGlobal.isPlatform(window, 'android') && ionicGlobal.isPlatform(window, 'mobileweb');
121
- if (isAndroidMobileWeb) {
122
- return true;
123
- }
124
- return false;
125
- };
126
58
  App.style = appCss();
127
59
 
128
- const buttonsIosCss = () => `.sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:5px;--padding-end:5px;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-ios-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast);--background-activated:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:.12;--background-activated:#000;--background-activated-opacity:.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.65em;line-height:0.67}`;
60
+ 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, #242528));--background:transparent;--background-activated:transparent;--background-focused:transparent;--background-hover:transparent}.sc-ion-buttons-ionic-s .button-has-icon-only{width:var(--token-scale-1000, 40px);height:var(--token-scale-1000, 40px)}.sc-ion-buttons-ionic-s ion-icon[slot=icon-only]{font-size:var(--token-font-size-500, 1.25rem)}`;
61
+
62
+ const buttonsIosCss = () => `.sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0)}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-h{z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:5px;--padding-end:5px;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-ios-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:0.12;--background-activated:#000;--background-activated-opacity:0.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast);--background-activated:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:0.12;--background-activated:#000;--background-activated-opacity:0.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.65em;line-height:0.67}`;
129
63
 
130
- const buttonsMdCss = () => `.sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:8px;--padding-end:8px;--box-shadow:none;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-md-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:3rem;height:3rem}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}`;
64
+ const buttonsMdCss = () => `.sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0)}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-h{z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:8px;--padding-end:8px;--box-shadow:none;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-md-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:3rem;height:3rem}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}`;
131
65
 
132
66
  const Buttons = class {
133
67
  constructor(hostRef) {
@@ -139,7 +73,7 @@ const Buttons = class {
139
73
  * first toolbar, the buttons will be hidden and will
140
74
  * only be shown once all toolbars have fully collapsed.
141
75
  *
142
- * Only applies in `ios` mode with `collapse` set to
76
+ * Only applies in the `ios` theme with `collapse` set to
143
77
  * `true` on `ion-header`.
144
78
  *
145
79
  * Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
@@ -147,19 +81,20 @@ const Buttons = class {
147
81
  this.collapse = false;
148
82
  }
149
83
  render() {
150
- const mode = ionicGlobal.getIonMode(this);
151
- return (index.h(index.Host, { key: '58c1fc5eb867d0731c63549b1ccb3ec3bbbe6e1b', class: {
152
- [mode]: true,
84
+ const theme = ionicGlobal.getIonTheme(this);
85
+ return (index.h(index.Host, { key: '95c107ba7871c801a5ef14c636dc8e2fe69debf3', class: {
86
+ [theme]: true,
153
87
  ['buttons-collapse']: this.collapse,
154
- } }, index.h("slot", { key: '0c8f95b9840c8fa0c4e50be84c5159620a3eb5c8' })));
88
+ } }, index.h("slot", { key: '58669abfce458e1344b84286d4200e305017b958' })));
155
89
  }
156
90
  };
157
91
  Buttons.style = {
92
+ ionic: buttonsIonicCss(),
158
93
  ios: buttonsIosCss(),
159
94
  md: buttonsMdCss()
160
95
  };
161
96
 
162
- const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--internal-content-safe-area-padding-bottom, 0px));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:""}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}`;
97
+ const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{right:0px;left:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{right:0px;left:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--internal-content-safe-area-padding-bottom, 0px));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:""}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}:host(.content-header-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll{-webkit-transition:height 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:height 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), height 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), height 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}:host(.content-header-hide-scroll-partner:not(.content-fullscreen).content-header-hide-scroll-hidden) .inner-scroll{height:calc(100% + var(--internal-header-hide-height, 0px));-webkit-transform:translateY(calc(-1 * var(--internal-header-hide-height, 0px)));transform:translateY(calc(-1 * var(--internal-header-hide-height, 0px)));-webkit-transition:height 200ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:height 200ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), height 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), height 200ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1)}:host(.content-footer-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll{-webkit-transition:height 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:height 200ms cubic-bezier(0.16, 1, 0.3, 1)}:host(.content-footer-hide-scroll-partner:not(.content-fullscreen).content-footer-hide-scroll-hidden) .inner-scroll{height:calc(100% + var(--internal-footer-hide-height, 0px));-webkit-transition:height 350ms cubic-bezier(0.4, 0, 1, 1);transition:height 350ms cubic-bezier(0.4, 0, 1, 1)}:host(.content-tab-bar-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll{-webkit-transition:height 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:height 200ms cubic-bezier(0.16, 1, 0.3, 1)}:host(.content-tab-bar-hide-scroll-partner:not(.content-fullscreen).content-tab-bar-hide-scroll-hidden) .inner-scroll{height:calc(100% + var(--internal-tab-bar-hide-height, 0px));-webkit-transition:height 350ms cubic-bezier(0.4, 0, 1, 1);transition:height 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){:host(.content-header-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll,:host(.content-header-hide-scroll-partner:not(.content-fullscreen).content-header-hide-scroll-hidden) .inner-scroll,:host(.content-footer-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll,:host(.content-footer-hide-scroll-partner:not(.content-fullscreen).content-footer-hide-scroll-hidden) .inner-scroll,:host(.content-tab-bar-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll,:host(.content-tab-bar-hide-scroll-partner:not(.content-fullscreen).content-tab-bar-hide-scroll-hidden) .inner-scroll{-webkit-transition:none;transition:none}}`;
163
98
 
164
99
  const Content = class {
165
100
  constructor(hostRef) {
@@ -383,9 +318,8 @@ const Content = class {
383
318
  this.resize();
384
319
  }, 100);
385
320
  }
386
- shouldForceOverscroll() {
321
+ shouldForceOverscroll(mode) {
387
322
  const { forceOverscroll } = this;
388
- const mode = ionicGlobal.getIonMode(this);
389
323
  return forceOverscroll === undefined ? mode === 'ios' && ionicGlobal.isPlatform('ios') : forceOverscroll;
390
324
  }
391
325
  /**
@@ -410,7 +344,7 @@ const Content = class {
410
344
  return false;
411
345
  }
412
346
  const height = getComputedStyle(modal).getPropertyValue('--height');
413
- return hardwareBackButton.getOverlaySizeType(height) === 'content';
347
+ return overlays.getOverlaySizeType(height) === 'content';
414
348
  }
415
349
  resize() {
416
350
  /**
@@ -613,12 +547,13 @@ const Content = class {
613
547
  render() {
614
548
  const { fixedSlotPlacement, inheritedAttributes, isMainContent, scrollX, scrollY, el } = this;
615
549
  const rtl = dir.isRTL(el) ? 'rtl' : 'ltr';
616
- const mode = ionicGlobal.getIonMode(this);
617
- const forceOverscroll = this.shouldForceOverscroll();
618
- const transitionShadow = mode === 'ios';
550
+ const theme$1 = ionicGlobal.getIonTheme(this);
551
+ const mode = ionicGlobal.getIonMode(this, theme$1);
552
+ const forceOverscroll = this.shouldForceOverscroll(mode);
553
+ const transitionShadow = theme$1 === 'ios';
619
554
  this.resize();
620
- return (index.h(index.Host, { key: 'e1013621096729354ef92915af52dd823e69fdff', role: isMainContent ? 'main' : undefined, class: theme.createColorClasses(this.color, {
621
- [mode]: true,
555
+ return (index.h(index.Host, { key: '7e283337732b709e43fe89b08f6852c499b964ff', role: isMainContent ? 'main' : undefined, class: theme.createColorClasses(this.color, {
556
+ [theme$1]: true,
622
557
  'content-fullscreen': this.fullscreen,
623
558
  'content-sizing': this.sizeToContent,
624
559
  overscroll: forceOverscroll,
@@ -626,12 +561,12 @@ const Content = class {
626
561
  }), style: {
627
562
  '--offset-top': `${this.cTop}px`,
628
563
  '--offset-bottom': `${this.cBottom}px`,
629
- }, ...inheritedAttributes }, index.h("div", { key: '3d8649b164d6324beaa1bc50e1d204ad06c2ec1a', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? index.h("slot", { name: "fixed" }) : null, index.h("div", { key: 'dd2d3bed8690b4f5027a43f5ec60e7e7df18106d', class: {
564
+ }, ...inheritedAttributes }, index.h("div", { key: '0dcbe4f4fe2d0f85b8c36bc656fc619afdc89cfe', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? index.h("slot", { name: "fixed" }) : null, index.h("div", { key: 'cbe91794c2fc53a59f8994968571a677a2e8346b', class: {
630
565
  'inner-scroll': true,
631
566
  'scroll-x': scrollX,
632
567
  'scroll-y': scrollY,
633
568
  overscroll: (scrollX || scrollY) && forceOverscroll,
634
- }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: 'dc3d4584d9e9afd43699525a619b8e873078fbbf' })), transitionShadow ? (index.h("div", { class: "transition-effect" }, index.h("div", { class: "transition-cover" }), index.h("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? index.h("slot", { name: "fixed" }) : null));
569
+ }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: '1a6b9bf25051eee41003185e1b519e4c4af2c001' })), transitionShadow ? (index.h("div", { class: "transition-effect" }, index.h("div", { class: "transition-cover" }), index.h("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? index.h("slot", { name: "fixed" }) : null));
635
570
  }
636
571
  get el() { return index.getElement(this); }
637
572
  static get watchers() { return {
@@ -661,7 +596,8 @@ const getPageElement = (el) => {
661
596
  * between the popover and the edges of the screen. But if the popover contains
662
597
  * its own page element, we should use that instead.
663
598
  */
664
- const page = el.closest('ion-app, ion-page, .ion-page, page-inner, .popover-content');
599
+ const appRootSelector = index.config.get('appRootSelector', 'ion-app');
600
+ const page = el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner, .popover-content`);
665
601
  if (page) {
666
602
  return page;
667
603
  }
@@ -725,45 +661,90 @@ const handleFooterFade = (scrollEl, baseEl) => {
725
661
  });
726
662
  };
727
663
 
728
- 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}`;
664
+ const ionicFooterMdCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}ion-footer.footer-scroll-effect-hide{-webkit-transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1), -webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1)}ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){ion-footer.footer-scroll-effect-hide,ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transition:none;transition:none}}.footer-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.footer-md.footer-collapse-fade{-webkit-box-shadow:none;box-shadow:none}.footer-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
729
665
 
730
- 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}`;
666
+ const footerIosCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}ion-footer.footer-scroll-effect-hide{-webkit-transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1), -webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1)}ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){ion-footer.footer-scroll-effect-hide,ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transition:none;transition:none}}.footer-ios ion-toolbar:first-of-type{--border-width:0.55px 0 0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.footer-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.footer-translucent-ios ion-toolbar{--opacity:0.8}}.footer-ios.ion-no-border ion-toolbar:first-of-type{--border-width:0}`;
667
+
668
+ const footerMdCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}ion-footer.footer-scroll-effect-hide{-webkit-transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1), -webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1)}ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){ion-footer.footer-scroll-effect-hide,ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transition:none;transition:none}}.footer-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.footer-md.footer-collapse-fade{-webkit-box-shadow:none;box-shadow:none}.footer-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
731
669
 
732
670
  const Footer = class {
733
671
  constructor(hostRef) {
734
672
  index.registerInstance(this, hostRef);
735
673
  this.keyboardCtrl = null;
736
674
  this.keyboardCtrlPromise = null;
675
+ this.scrollHideCtrlPromise = null;
676
+ this.hasWarnedCollapse = false;
677
+ this.fadeSetupId = 0;
737
678
  this.keyboardVisible = false;
738
679
  /**
739
680
  * If `true`, the footer will be translucent.
740
- * Only applies when the mode is `"ios"` and the device supports
681
+ * Only applies when the theme is `"ios"` and the device supports
741
682
  * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
742
683
  *
743
684
  * Note: In order to scroll content behind the footer, the `fullscreen`
744
685
  * attribute needs to be set on the content.
745
686
  */
746
687
  this.translucent = false;
747
- this.checkCollapsibleFooter = () => {
748
- const mode = ionicGlobal.getIonMode(this);
749
- if (mode !== 'ios') {
688
+ this.checkCollapsibleFooter = async () => {
689
+ const { scrollEffect, collapse } = this;
690
+ if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
691
+ this.hasWarnedCollapse = true;
692
+ index.printIonWarning(`[ion-footer] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-footer scroll-effect="${collapse}">`, this.el);
693
+ }
694
+ const effect = scrollEffect ?? collapse;
695
+ // Skip teardown/rebuild if the effect hasn't changed.
696
+ // This prevents keyboard toggles (which trigger re-renders via
697
+ // @State keyboardVisible) from destroying the scroll controller
698
+ // and resetting isHidden.
699
+ if (effect === this.activeEffect) {
750
700
  return;
751
701
  }
752
- const { collapse } = this;
753
- const hasFade = collapse === 'fade';
702
+ const hasHide = effect === 'hide';
703
+ const hasFade = effect === 'fade';
754
704
  this.destroyCollapsibleFooter();
755
- if (hasFade) {
756
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
757
- const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
705
+ const appRootSelector = index.config.get('appRootSelector', 'ion-app');
706
+ const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
707
+ const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
708
+ if (hasHide && contentEl) {
709
+ this.activeEffect = effect;
710
+ await this.setupScrollEffectHide(contentEl);
711
+ return;
712
+ }
713
+ // fade via the deprecated `collapse` prop is iOS-only.
714
+ // fade via the new `scrollEffect` prop works in all themes.
715
+ const isModeRestricted = scrollEffect === undefined && ionicGlobal.getIonTheme(this) !== 'ios';
716
+ if (hasFade && !isModeRestricted) {
758
717
  if (!contentEl) {
759
718
  index$1.printIonContentErrorMsg(this.el);
760
719
  return;
761
720
  }
762
721
  this.setupFadeFooter(contentEl);
722
+ this.activeEffect = effect;
723
+ }
724
+ };
725
+ this.setupScrollEffectHide = async (contentEl) => {
726
+ const setupPromise = scrollHideController.createScrollHideController(contentEl, {
727
+ el: this.el,
728
+ cssVar: '--internal-footer-hide-height',
729
+ hiddenClass: 'footer-scroll-hidden',
730
+ contentPartnerClass: 'content-footer-hide-scroll-partner',
731
+ contentHiddenClass: 'content-footer-hide-scroll-hidden',
732
+ });
733
+ this.scrollHideCtrlPromise = setupPromise;
734
+ const controller = await setupPromise;
735
+ if (this.scrollHideCtrlPromise === setupPromise) {
736
+ this.scrollHideCtrlPromise = null;
737
+ controller.init();
738
+ this.scrollHideCtrl = controller;
763
739
  }
764
740
  };
765
741
  this.setupFadeFooter = async (contentEl) => {
766
- const scrollEl = (this.scrollEl = await index$1.getScrollElement(contentEl));
742
+ const setupId = ++this.fadeSetupId;
743
+ const scrollEl = await index$1.getScrollElement(contentEl);
744
+ if (this.fadeSetupId !== setupId) {
745
+ return;
746
+ }
747
+ this.scrollEl = scrollEl;
767
748
  /**
768
749
  * Handle fading of toolbars on scroll
769
750
  */
@@ -781,7 +762,7 @@ const Footer = class {
781
762
  this.checkCollapsibleFooter();
782
763
  }
783
764
  async connectedCallback() {
784
- const promise = keyboardController.createKeyboardController(async (keyboardOpen, waitForResize) => {
765
+ const promise = scrollHideController.createKeyboardController(async (keyboardOpen, waitForResize) => {
785
766
  /**
786
767
  * If the keyboard is hiding, then we need to wait
787
768
  * for the webview to resize. Otherwise, the footer
@@ -808,6 +789,7 @@ const Footer = class {
808
789
  }
809
790
  }
810
791
  disconnectedCallback() {
792
+ this.destroyCollapsibleFooter();
811
793
  if (this.keyboardCtrlPromise) {
812
794
  this.keyboardCtrlPromise.then((ctrl) => ctrl.destroy());
813
795
  this.keyboardCtrlPromise = null;
@@ -818,29 +800,43 @@ const Footer = class {
818
800
  }
819
801
  }
820
802
  destroyCollapsibleFooter() {
803
+ this.activeEffect = undefined;
804
+ this.fadeSetupId++;
805
+ this.scrollHideCtrlPromise = null;
806
+ if (this.scrollHideCtrl) {
807
+ this.scrollHideCtrl.destroy();
808
+ this.scrollHideCtrl = undefined;
809
+ }
821
810
  if (this.scrollEl && this.contentScrollCallback) {
822
811
  this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
823
812
  this.contentScrollCallback = undefined;
824
813
  }
825
814
  }
826
815
  render() {
827
- const { translucent, collapse } = this;
828
- const mode = ionicGlobal.getIonMode(this);
816
+ const { translucent, scrollEffect, collapse } = this;
817
+ const theme = ionicGlobal.getIonTheme(this);
818
+ const effect = scrollEffect ?? collapse;
819
+ // fade via the deprecated `collapse` prop is iOS-only.
820
+ const isModeRestricted = scrollEffect === undefined && theme !== 'ios';
821
+ const hasHide = effect === 'hide';
822
+ const hasFade = effect === 'fade' && !isModeRestricted;
829
823
  const tabs = this.el.closest('ion-tabs');
830
824
  const tabBar = tabs?.querySelector(':scope > ion-tab-bar');
831
- return (index.h(index.Host, { key: '71939c4bbaef5062532a99ee2e33574102a9abad', role: "contentinfo", class: {
832
- [mode]: true,
825
+ return (index.h(index.Host, { key: 'a0777b4a639d22e15374879f018efcf589e756f8', role: "contentinfo", class: {
826
+ [theme]: true,
833
827
  // Used internally for styling
834
- [`footer-${mode}`]: true,
828
+ [`footer-${theme}`]: true,
835
829
  [`footer-translucent`]: translucent,
836
- [`footer-translucent-${mode}`]: translucent,
830
+ [`footer-translucent-${theme}`]: translucent,
837
831
  ['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
838
- [`footer-collapse-${collapse}`]: collapse !== undefined,
839
- } }, mode === 'ios' && translucent && index.h("div", { key: '2fa14f61661c47c661cecd696176728d6eafa74f', class: "footer-background" }), index.h("slot", { key: '8e63696e7c528d5c38201e546bf08135290d0945' })));
832
+ 'footer-collapse-fade': hasFade,
833
+ 'footer-scroll-effect-hide': hasHide,
834
+ } }, theme === 'ios' && translucent && index.h("div", { key: 'd78b46870cbf11c95b066d649c04ec398b66e614', class: "footer-background" }), index.h("slot", { key: '9dc34787cd29597fe1b1198db317602014ac1483' })));
840
835
  }
841
836
  get el() { return index.getElement(this); }
842
837
  };
843
838
  Footer.style = {
839
+ ionic: ionicFooterMdCss(),
844
840
  ios: footerIosCss(),
845
841
  md: footerMdCss()
846
842
  };
@@ -898,7 +894,7 @@ const setToolbarBackgroundOpacity = (headerEl, opacity) => {
898
894
  * has collapsed, so it is handled
899
895
  * by handleHeaderFade()
900
896
  */
901
- if (headerEl.collapse === 'fade') {
897
+ if ((headerEl.scrollEffect ?? headerEl.collapse) === 'fade') {
902
898
  return;
903
899
  }
904
900
  if (opacity === undefined) {
@@ -1056,46 +1052,69 @@ const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
1056
1052
  * Get the role type for the ion-header.
1057
1053
  *
1058
1054
  * @param isInsideMenu If ion-header is inside ion-menu.
1059
- * @param isCondensed If ion-header has collapse="condense".
1060
- * @param mode The current mode.
1061
- * @returns 'none' if inside ion-menu or if condensed in md
1062
- * mode, otherwise 'banner'.
1055
+ * @returns 'none' if inside ion-menu, otherwise 'banner'.
1056
+ * Condensed headers start as 'banner' and have their role
1057
+ * toggled dynamically by setHeaderActive() on scroll.
1063
1058
  */
1064
- const getRoleType = (isInsideMenu, isCondensed, mode) => {
1059
+ const getRoleType = (isInsideMenu) => {
1065
1060
  // If the header is inside a menu, it should not have the banner role.
1066
1061
  if (isInsideMenu) {
1067
1062
  return ROLE_NONE;
1068
1063
  }
1069
- /**
1070
- * Only apply role="none" to `md` mode condensed headers
1071
- * since the large header is never shown.
1072
- */
1073
- if (isCondensed && mode === 'md') {
1074
- return ROLE_NONE;
1075
- }
1076
1064
  // Default to banner role.
1077
1065
  return ROLE_BANNER;
1078
1066
  };
1079
1067
 
1080
- 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}`;
1068
+ const headerIonicCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header:not(.header-collapse-main):has(~ion-content ion-header.header-collapse-condense){opacity:0}.header-collapse-condense-hidden{display:none}ion-header.header-scroll-effect-hide{-webkit-transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);opacity:0}@media (prefers-reduced-motion: reduce){ion-header.header-scroll-effect-hide,ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transition:none;transition:none}}ion-header{z-index:10}ion-header.header-divider{border-bottom:var(--token-border-size-025, var(--token-scale-025, 1px)) solid var(--token-border-default, var(--token-primitives-neutral-400, #d0d7df))}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;pointer-events:none}.header-translucent-ionic .header-background-blur,.header-translucent-ionic .header-background-blur-layer{right:0;left:0;top:0;bottom:0;position:absolute}.header-translucent-ionic .header-background-blur-layer:nth-child(1){-webkit-backdrop-filter:blur(var(--token-scale-025, 1px));backdrop-filter:blur(var(--token-scale-025, 1px));-webkit-mask-image:-webkit-gradient(linear, left top, left bottom, color-stop(82.64%, #000), color-stop(91%, transparent));-webkit-mask-image:linear-gradient(to bottom, #000 82.64%, transparent 91%);mask-image:-webkit-gradient(linear, left top, left bottom, color-stop(82.64%, #000), color-stop(91%, transparent));mask-image:linear-gradient(to bottom, #000 82.64%, transparent 91%)}.header-translucent-ionic .header-background-blur-layer:nth-child(2){-webkit-backdrop-filter:blur(var(--token-scale-050, 2px));backdrop-filter:blur(var(--token-scale-050, 2px));-webkit-mask-image:-webkit-gradient(linear, left top, left bottom, color-stop(74.29%, #000), color-stop(82.64%, transparent));-webkit-mask-image:linear-gradient(to bottom, #000 74.29%, transparent 82.64%);mask-image:-webkit-gradient(linear, left top, left bottom, color-stop(74.29%, #000), color-stop(82.64%, transparent));mask-image:linear-gradient(to bottom, #000 74.29%, transparent 82.64%)}.header-translucent-ionic .header-background-blur-layer:nth-child(3){-webkit-backdrop-filter:blur(var(--token-scale-100, 4px));backdrop-filter:blur(var(--token-scale-100, 4px));-webkit-mask-image:-webkit-gradient(linear, left top, left bottom, color-stop(65.93%, #000), color-stop(74.29%, transparent));-webkit-mask-image:linear-gradient(to bottom, #000 65.93%, transparent 74.29%);mask-image:-webkit-gradient(linear, left top, left bottom, color-stop(65.93%, #000), color-stop(74.29%, transparent));mask-image:linear-gradient(to bottom, #000 65.93%, transparent 74.29%)}.header-translucent-ionic .header-background-blur-layer:nth-child(4){-webkit-backdrop-filter:blur(var(--token-scale-200, 8px));backdrop-filter:blur(var(--token-scale-200, 8px));-webkit-mask-image:-webkit-gradient(linear, left top, left bottom, color-stop(57.57%, #000), color-stop(65.93%, transparent));-webkit-mask-image:linear-gradient(to bottom, #000 57.57%, transparent 65.93%);mask-image:-webkit-gradient(linear, left top, left bottom, color-stop(57.57%, #000), color-stop(65.93%, transparent));mask-image:linear-gradient(to bottom, #000 57.57%, transparent 65.93%)}.header-translucent-ionic .header-background-blur-layer:nth-child(5){-webkit-backdrop-filter:blur(var(--token-scale-400, 16px));backdrop-filter:blur(var(--token-scale-400, 16px));-webkit-mask-image:-webkit-gradient(linear, left top, left bottom, color-stop(49.21%, #000), color-stop(57.57%, transparent));-webkit-mask-image:linear-gradient(to bottom, #000 49.21%, transparent 57.57%);mask-image:-webkit-gradient(linear, left top, left bottom, color-stop(49.21%, #000), color-stop(57.57%, transparent));mask-image:linear-gradient(to bottom, #000 49.21%, transparent 57.57%)}.header-translucent-ionic .header-background-blur-layer:nth-child(6){-webkit-backdrop-filter:blur(var(--token-scale-800, 32px));backdrop-filter:blur(var(--token-scale-800, 32px));-webkit-mask-image:-webkit-gradient(linear, left top, left bottom, color-stop(40.86%, #000), color-stop(49.21%, transparent));-webkit-mask-image:linear-gradient(to bottom, #000 40.86%, transparent 49.21%);mask-image:-webkit-gradient(linear, left top, left bottom, color-stop(40.86%, #000), color-stop(49.21%, transparent));mask-image:linear-gradient(to bottom, #000 40.86%, transparent 49.21%)}.header-translucent-ionic .header-background-blur-layer:nth-child(7){-webkit-backdrop-filter:blur(var(--token-scale-1600, 64px));backdrop-filter:blur(var(--token-scale-1600, 64px));-webkit-mask-image:-webkit-gradient(linear, left top, left bottom, color-stop(32.5%, #000), color-stop(40.86%, transparent));-webkit-mask-image:linear-gradient(to bottom, #000 32.5%, transparent 40.86%);mask-image:-webkit-gradient(linear, left top, left bottom, color-stop(32.5%, #000), color-stop(40.86%, transparent));mask-image:linear-gradient(to bottom, #000 32.5%, transparent 40.86%)}.header-translucent-ionic ion-toolbar{--background:linear-gradient(to bottom, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0))}}`;
1069
+
1070
+ const headerIosCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header:not(.header-collapse-main):has(~ion-content ion-header.header-collapse-condense){opacity:0}.header-collapse-condense-hidden{display:none}ion-header.header-scroll-effect-hide{-webkit-transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);opacity:0}@media (prefers-reduced-motion: reduce){ion-header.header-scroll-effect-hide,ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transition:none;transition:none}}ion-header{z-index:10}.header-ios ion-toolbar:last-of-type{--border-width:0 0 0.55px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.header-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.header-translucent-ios ion-toolbar{--opacity:0.8}.header-collapse-condense-inactive .header-background{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.header-ios.ion-no-border ion-toolbar:last-of-type{--border-width:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}`;
1081
1071
 
1082
- 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}`;
1072
+ const headerMdCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header:not(.header-collapse-main):has(~ion-content ion-header.header-collapse-condense){opacity:0}.header-collapse-condense-hidden{display:none}ion-header.header-scroll-effect-hide{-webkit-transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);opacity:0}@media (prefers-reduced-motion: reduce){ion-header.header-scroll-effect-hide,ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transition:none;transition:none}}ion-header{z-index:10}.header-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.header-md.header-collapse-condense{-webkit-box-shadow:none;box-shadow:none}.header-md.header-collapse-condense-inactive:not(.header-collapse-condense){-webkit-box-shadow:none;box-shadow:none}.header-md.header-collapse-fade{-webkit-box-shadow:none;box-shadow:none}.header-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
1083
1073
 
1084
1074
  const Header = class {
1085
1075
  constructor(hostRef) {
1086
1076
  index.registerInstance(this, hostRef);
1087
1077
  this.inheritedAttributes = {};
1078
+ this.scrollHideCtrlPromise = null;
1079
+ this.hasWarnedCollapse = false;
1080
+ this.fadeCondenseSetupId = 0;
1081
+ /**
1082
+ * If `true`, the header will have a line at the bottom.
1083
+ * TODO(ROU-10855): add support for this prop on ios/md themes
1084
+ */
1085
+ this.divider = false;
1088
1086
  /**
1089
1087
  * If `true`, the header will be translucent.
1090
- * Only applies when the mode is `"ios"` and the device supports
1088
+ * Only applies when the theme is `"ios"` or `"ionic"` and the device supports
1091
1089
  * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
1092
1090
  *
1093
1091
  * Note: In order to scroll content behind the header, the `fullscreen`
1094
1092
  * attribute needs to be set on the content.
1095
1093
  */
1096
1094
  this.translucent = false;
1095
+ this.setupScrollEffectHide = async (contentEl) => {
1096
+ const setupPromise = scrollHideController.createScrollHideController(contentEl, {
1097
+ el: this.el,
1098
+ cssVar: '--internal-header-hide-height',
1099
+ hiddenClass: 'header-scroll-hidden',
1100
+ contentPartnerClass: 'content-header-hide-scroll-partner',
1101
+ contentHiddenClass: 'content-header-hide-scroll-hidden',
1102
+ });
1103
+ this.scrollHideCtrlPromise = setupPromise;
1104
+ const controller = await setupPromise;
1105
+ if (this.scrollHideCtrlPromise === setupPromise) {
1106
+ this.scrollHideCtrlPromise = null;
1107
+ controller.init();
1108
+ this.scrollHideCtrl = controller;
1109
+ }
1110
+ };
1097
1111
  this.setupFadeHeader = async (contentEl, condenseHeader) => {
1098
- const scrollEl = (this.scrollEl = await index$1.getScrollElement(contentEl));
1112
+ const setupId = ++this.fadeCondenseSetupId;
1113
+ const scrollEl = await index$1.getScrollElement(contentEl);
1114
+ if (this.fadeCondenseSetupId !== setupId) {
1115
+ return;
1116
+ }
1117
+ this.scrollEl = scrollEl;
1099
1118
  /**
1100
1119
  * Handle fading of toolbars on scroll
1101
1120
  */
@@ -1119,37 +1138,63 @@ const Header = class {
1119
1138
  this.destroyCollapsibleHeader();
1120
1139
  }
1121
1140
  async checkCollapsibleHeader() {
1122
- const mode = ionicGlobal.getIonMode(this);
1123
- if (mode !== 'ios') {
1141
+ const { scrollEffect, collapse } = this;
1142
+ if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
1143
+ this.hasWarnedCollapse = true;
1144
+ index.printIonWarning(`[ion-header] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-header scroll-effect="${collapse}">`, this.el);
1145
+ }
1146
+ const effect = scrollEffect ?? collapse;
1147
+ // Skip teardown/rebuild if the effect hasn't changed.
1148
+ // This prevents re-renders from destroying the scroll controller
1149
+ // and resetting isHidden.
1150
+ if (effect === this.activeEffect) {
1124
1151
  return;
1125
1152
  }
1126
- const { collapse } = this;
1127
- const hasCondense = collapse === 'condense';
1128
- const hasFade = collapse === 'fade';
1153
+ const hasHide = effect === 'hide';
1154
+ const hasCondense = effect === 'condense';
1155
+ const hasFade = effect === 'fade';
1129
1156
  this.destroyCollapsibleHeader();
1130
- if (hasCondense) {
1131
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
1132
- const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
1157
+ const appRootSelector = index.config.get('appRootSelector', 'ion-app');
1158
+ const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
1159
+ const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
1160
+ if (hasHide && contentEl) {
1161
+ this.activeEffect = effect;
1162
+ await this.setupScrollEffectHide(contentEl);
1163
+ return;
1164
+ }
1165
+ // condense/fade via the deprecated `collapse` prop are iOS-only.
1166
+ // condense/fade via the new `scrollEffect` prop work in all themes.
1167
+ const isModeRestricted = scrollEffect === undefined && ionicGlobal.getIonTheme(this) !== 'ios';
1168
+ if (hasCondense && !isModeRestricted) {
1133
1169
  // Cloned elements are always needed in iOS transition
1134
1170
  index.writeTask(() => {
1135
1171
  const title = cloneElement('ion-title');
1136
1172
  title.size = 'large';
1137
1173
  cloneElement('ion-back-button');
1138
1174
  });
1139
- await this.setupCondenseHeader(contentEl, pageEl);
1175
+ const didSetup = await this.setupCondenseHeader(contentEl, pageEl);
1176
+ if (didSetup) {
1177
+ this.activeEffect = effect;
1178
+ }
1140
1179
  }
1141
- else if (hasFade) {
1142
- const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
1143
- const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
1180
+ else if (hasFade && !isModeRestricted) {
1144
1181
  if (!contentEl) {
1145
1182
  index$1.printIonContentErrorMsg(this.el);
1146
1183
  return;
1147
1184
  }
1148
- const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
1185
+ const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"],ion-header[scroll-effect="condense"]');
1186
+ this.activeEffect = effect;
1149
1187
  await this.setupFadeHeader(contentEl, condenseHeader);
1150
1188
  }
1151
1189
  }
1152
1190
  destroyCollapsibleHeader() {
1191
+ this.activeEffect = undefined;
1192
+ this.fadeCondenseSetupId++;
1193
+ this.scrollHideCtrlPromise = null;
1194
+ if (this.scrollHideCtrl) {
1195
+ this.scrollHideCtrl.destroy();
1196
+ this.scrollHideCtrl = undefined;
1197
+ }
1153
1198
  if (this.intersectionObserver) {
1154
1199
  this.intersectionObserver.disconnect();
1155
1200
  this.intersectionObserver = undefined;
@@ -1166,21 +1211,39 @@ const Header = class {
1166
1211
  async setupCondenseHeader(contentEl, pageEl) {
1167
1212
  if (!contentEl || !pageEl) {
1168
1213
  index$1.printIonContentErrorMsg(this.el);
1169
- return;
1214
+ return false;
1170
1215
  }
1171
1216
  if (typeof IntersectionObserver === 'undefined') {
1172
- return;
1217
+ return false;
1218
+ }
1219
+ const setupId = ++this.fadeCondenseSetupId;
1220
+ const scrollEl = await index$1.getScrollElement(contentEl);
1221
+ if (this.fadeCondenseSetupId !== setupId) {
1222
+ return false;
1223
+ }
1224
+ this.scrollEl = scrollEl;
1225
+ /**
1226
+ * The condense effect requires an ion-title with size="large"
1227
+ * in the condense header. Without it, there is nothing to
1228
+ * collapse into the main header toolbar.
1229
+ */
1230
+ const hasLargeTitle = this.el.querySelector('ion-title[size="large"]') !== null;
1231
+ if (!hasLargeTitle) {
1232
+ index.printIonWarning('[ion-header] - The condense scroll effect requires an <ion-title size="large"> in the condense header.', this.el);
1233
+ return false;
1173
1234
  }
1174
- this.scrollEl = await index$1.getScrollElement(contentEl);
1175
1235
  const headers = pageEl.querySelectorAll('ion-header');
1176
- this.collapsibleMainHeader = Array.from(headers).find((header) => header.collapse !== 'condense');
1236
+ this.collapsibleMainHeader = Array.from(headers).find((header) => {
1237
+ const effect = header.scrollEffect ?? header.collapse;
1238
+ return effect !== 'condense';
1239
+ });
1177
1240
  if (!this.collapsibleMainHeader) {
1178
- return;
1241
+ return false;
1179
1242
  }
1180
1243
  const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);
1181
1244
  const scrollHeaderIndex = createHeaderIndex(this.el);
1182
1245
  if (!mainHeaderIndex || !scrollHeaderIndex) {
1183
- return;
1246
+ return false;
1184
1247
  }
1185
1248
  setHeaderActive(mainHeaderIndex, false);
1186
1249
  setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);
@@ -1212,31 +1275,45 @@ const Header = class {
1212
1275
  this.collapsibleMainHeader.classList.add('header-collapse-main');
1213
1276
  }
1214
1277
  });
1278
+ return true;
1215
1279
  }
1216
1280
  render() {
1217
- const { translucent, inheritedAttributes } = this;
1218
- const mode = ionicGlobal.getIonMode(this);
1219
- const collapse = this.collapse || 'none';
1220
- const isCondensed = collapse === 'condense';
1281
+ const { translucent, inheritedAttributes, divider, scrollEffect, collapse } = this;
1282
+ const theme$1 = ionicGlobal.getIonTheme(this);
1283
+ const effect = scrollEffect ?? collapse;
1284
+ // condense/fade via the deprecated `collapse` prop are iOS-only.
1285
+ const isModeRestricted = scrollEffect === undefined && theme$1 !== 'ios';
1286
+ const hasHide = effect === 'hide';
1287
+ const hasCondense = effect === 'condense' && !isModeRestricted && this.el.querySelector('ion-title[size="large"]') !== null;
1288
+ const hasFade = effect === 'fade' && !isModeRestricted;
1289
+ // The condense header should be hidden when
1290
+ // - deprecated collapse prop is used on non-iOS (mode restricted), or
1291
+ // - scrollEffect="condense" is set but no ion-title[size="large"] is present
1292
+ const isHiddenCondense = effect === 'condense' && !hasCondense;
1221
1293
  // banner role must be at top level, so remove role if inside a menu
1222
- const roleType = getRoleType(theme.hostContext('ion-menu', this.el), isCondensed, mode);
1223
- return (index.h(index.Host, { key: '863c4568cd7b8c0ec55109f193bbbaed68a1346e', role: roleType, class: {
1224
- [mode]: true,
1294
+ const roleType = isHiddenCondense ? 'none' : getRoleType(theme.hostContext('ion-menu', this.el));
1295
+ return (index.h(index.Host, { key: '09f60ca014bb7b3a85d3c0a94e7989d5dbc43f46', role: roleType, class: {
1296
+ [theme$1]: true,
1225
1297
  // Used internally for styling
1226
- [`header-${mode}`]: true,
1298
+ [`header-${theme$1}`]: true,
1227
1299
  [`header-translucent`]: this.translucent,
1228
- [`header-collapse-${collapse}`]: true,
1229
- [`header-translucent-${mode}`]: this.translucent,
1230
- }, ...inheritedAttributes }, mode === 'ios' && translucent && index.h("div", { key: '25c3bdce328b0b35607d154c8b8374679313d881', class: "header-background" }), index.h("slot", { key: 'b44fab0a9be7920b9650da26117c783e751e1702' })));
1300
+ ['header-collapse-condense']: hasCondense,
1301
+ ['header-collapse-condense-hidden']: isHiddenCondense,
1302
+ ['header-collapse-fade']: hasFade,
1303
+ [`header-translucent-${theme$1}`]: this.translucent,
1304
+ ['header-divider']: divider,
1305
+ 'header-scroll-effect-hide': hasHide,
1306
+ }, ...inheritedAttributes }, theme$1 !== 'md' && translucent && (index.h("div", { key: '5179b806abb6f04ed294dc50166c4f014028a4e3', class: "header-background" }, theme$1 === 'ionic' && (index.h("div", { key: '4c9d23456672b5bd4ce55280ec6f3e6c39f162cc', class: "header-background-blur", "aria-hidden": "true" }, index.h("div", { key: '9b9da46049e24390491b2b97ab20863f6fefc079', class: "header-background-blur-layer" }), index.h("div", { key: 'fc2899267eea7fdd415cc4f394fb469188bfae50', class: "header-background-blur-layer" }), index.h("div", { key: '8a9747c21d2bd92670deeec8022a37409fd349c4', class: "header-background-blur-layer" }), index.h("div", { key: '03abc8d5e1e8554963a7f652349ab65430d14db9', class: "header-background-blur-layer" }), index.h("div", { key: '6a481b7894c44b37d8e3569784a3b6a1191fba09', class: "header-background-blur-layer" }), index.h("div", { key: '8e4cf985b7c58a836316baa47c35dbaac765f658', class: "header-background-blur-layer" }), index.h("div", { key: '4ce7402a8ea8aa8253fc2e69e614c50c22ae2c9d', class: "header-background-blur-layer" }))))), index.h("slot", { key: '1e5ae6dddd080197c7801ed58fb22b9f237b6099' })));
1231
1307
  }
1232
1308
  get el() { return index.getElement(this); }
1233
1309
  };
1234
1310
  Header.style = {
1311
+ ionic: headerIonicCss(),
1235
1312
  ios: headerIosCss(),
1236
1313
  md: headerMdCss()
1237
1314
  };
1238
1315
 
1239
- const routerOutletCss = () => `:host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
1316
+ const routerOutletCss = () => `:host{right:0;left:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
1240
1317
 
1241
1318
  const RouterOutlet = class {
1242
1319
  constructor(hostRef) {
@@ -1247,7 +1324,7 @@ const RouterOutlet = class {
1247
1324
  this.lockController = lockController.createLockController();
1248
1325
  this.gestureOrAnimationInProgress = false;
1249
1326
  /**
1250
- * The mode determines which platform styles to use.
1327
+ * The mode determines the platform behaviors of the component.
1251
1328
  */
1252
1329
  this.mode = ionicGlobal.getIonMode(this);
1253
1330
  /**
@@ -1268,7 +1345,7 @@ const RouterOutlet = class {
1268
1345
  this.swipeHandler.onStart();
1269
1346
  }
1270
1347
  };
1271
- this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-BigumsQ1.js'); })).createSwipeBackGesture(this.el, () => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart(), () => onStart(), (step) => this.ani?.progressStep(step), (shouldComplete, step, dur) => {
1348
+ this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-BXYzN9QG.js'); })).createSwipeBackGesture(this.el, () => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart(), () => onStart(), (step) => this.ani?.progressStep(step), (shouldComplete, step, dur) => {
1272
1349
  if (this.ani) {
1273
1350
  this.ani.onFinish(() => {
1274
1351
  this.gestureOrAnimationInProgress = false;
@@ -1430,7 +1507,7 @@ const RouterOutlet = class {
1430
1507
  return true;
1431
1508
  }
1432
1509
  render() {
1433
- return index.h("slot", { key: '249e7d8a063c781db52fa535e42d648c7bf2909a' });
1510
+ return index.h("slot", { key: '84a325aa6a162c51e80871f0927a02dd9971b660' });
1434
1511
  }
1435
1512
  get el() { return index.getElement(this); }
1436
1513
  static get watchers() { return {
@@ -1444,9 +1521,11 @@ const RouterOutlet = class {
1444
1521
  };
1445
1522
  RouterOutlet.style = routerOutletCss();
1446
1523
 
1447
- 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)}}`;
1524
+ 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-family:var(--token-font-family, -apple-system, system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol");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, 1.75rem);-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host(.title-large){font-family:var(--token-font-family, -apple-system, system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol");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, 2.25rem)}`;
1525
+
1526
+ 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)}}`;
1448
1527
 
1449
- 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}`;
1528
+ const titleMdCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host(.ion-color){color:var(--ion-color-base)}:host{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:0;padding-bottom:0;font-size:1.25rem;font-weight:500;letter-spacing:0.0125em}:host(.title-small){width:100%;height:100%;font-size:0.9375rem;font-weight:normal}:host(.title-large){width:100%;height:100%;font-size:1.75rem;font-weight:400}`;
1450
1529
 
1451
1530
  const ToolbarTitle = class {
1452
1531
  constructor(hostRef) {
@@ -1469,13 +1548,13 @@ const ToolbarTitle = class {
1469
1548
  return this.size !== undefined ? this.size : 'default';
1470
1549
  }
1471
1550
  render() {
1472
- const mode = ionicGlobal.getIonMode(this);
1551
+ const theme$1 = ionicGlobal.getIonTheme(this);
1473
1552
  const size = this.getSize();
1474
- return (index.h(index.Host, { key: 'c5f0b913ff0a22d9bf02da48a313a613c2ac8fe7', class: theme.createColorClasses(this.color, {
1475
- [mode]: true,
1553
+ return (index.h(index.Host, { key: '00b3027662f22cdc2cf682a24bb77cc83334673b', class: theme.createColorClasses(this.color, {
1554
+ [theme$1]: true,
1476
1555
  [`title-${size}`]: true,
1477
1556
  'title-rtl': document.dir === 'rtl',
1478
- }) }, index.h("div", { key: '5253b9e39fb764bfe1e57370719139f8a83e9904', class: "toolbar-title" }, index.h("slot", { key: 'e38b1eccb0175c36f8cab211aee7ce4d61fc9035' }))));
1557
+ }) }, index.h("div", { key: 'c58ed9751da3306ce1e285e93c644baaff884970', class: "toolbar-title" }, index.h("slot", { key: 'e9e8bbdd42e60df1b1a11ca8c4deef023685d818' }))));
1479
1558
  }
1480
1559
  get el() { return index.getElement(this); }
1481
1560
  static get watchers() { return {
@@ -1485,18 +1564,29 @@ const ToolbarTitle = class {
1485
1564
  }; }
1486
1565
  };
1487
1566
  ToolbarTitle.style = {
1567
+ ionic: titleIonicCss(),
1488
1568
  ios: titleIosCss(),
1489
1569
  md: titleMdCss()
1490
1570
  };
1491
1571
 
1492
- 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%}`;
1572
+ 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, #242528));--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}`;
1493
1573
 
1494
- 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}`;
1574
+ 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%}`;
1575
+
1576
+ 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}`;
1495
1577
 
1496
1578
  const Toolbar = class {
1497
1579
  constructor(hostRef) {
1498
1580
  index.registerInstance(this, hostRef);
1499
1581
  this.childrenStyles = new Map();
1582
+ this.slotClasses = [
1583
+ 'has-start-content',
1584
+ 'has-end-content',
1585
+ 'has-primary-content',
1586
+ 'has-secondary-content',
1587
+ ];
1588
+ this.showClasses = ['show-start', 'show-end', 'show-primary', 'show-secondary'];
1589
+ this.slotSizeVars = ['--start-end-size', '--primary-secondary-size'];
1500
1590
  }
1501
1591
  componentWillLoad() {
1502
1592
  const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));
@@ -1513,6 +1603,170 @@ const Toolbar = class {
1513
1603
  if (lastButtons) {
1514
1604
  lastButtons.classList.add('buttons-last-slot');
1515
1605
  }
1606
+ this.updateSlotClasses();
1607
+ }
1608
+ componentDidLoad() {
1609
+ this.updateSlotClasses();
1610
+ this.updateSlotWidths();
1611
+ }
1612
+ titlePlacementChanged() {
1613
+ this.updateSlotClasses();
1614
+ }
1615
+ /**
1616
+ * Gets the title placement.
1617
+ * Returns the title placement if it is set, otherwise returns `"center"`
1618
+ * for `ionic` and `ios`, and `"start"` for `md`.
1619
+ */
1620
+ getTitlePlacement() {
1621
+ if (this.titlePlacement !== undefined) {
1622
+ return this.titlePlacement;
1623
+ }
1624
+ return ionicGlobal.getIonTheme(this) === 'ionic' || ionicGlobal.getIonTheme(this) === 'ios' ? 'center' : 'start';
1625
+ }
1626
+ /**
1627
+ * Updates the CSS custom properties for slot widths
1628
+ * This ensures that slots shown by their met conditions
1629
+ * have a minimum width matching their required slot
1630
+ */
1631
+ updateSlotWidths(tries = 0) {
1632
+ // Set timeout to try to execute after everything is rendered
1633
+ setTimeout(() => {
1634
+ // Attempt to measure and update
1635
+ const success = this.measureAndUpdateSlots();
1636
+ // If not all measurements were successful, try again in 100 ms
1637
+ // cap recursion at 5 tries for safety
1638
+ if (!success && tries < 5) {
1639
+ setTimeout(() => {
1640
+ this.updateSlotWidths(tries + 1);
1641
+ }, 100);
1642
+ }
1643
+ });
1644
+ }
1645
+ /**
1646
+ * Measure the widths of the slots and update the CSS custom properties
1647
+ * for the minimum width of each pair of slots based on the largest width in each pair.
1648
+ * Returns whether we successfully measured all of the slots we expect to have content.
1649
+ * If not, the content probably hasn't rendered yet and we need to try again.
1650
+ */
1651
+ measureAndUpdateSlots() {
1652
+ // Define the relationship between slots based on the conditions array
1653
+ // Group slots that should have the same width
1654
+ const slotPairs = [
1655
+ { name: 'start-end', slots: ['start', 'end'] },
1656
+ { name: 'primary-secondary', slots: ['primary', 'secondary'] },
1657
+ ];
1658
+ // First, measure all slot widths
1659
+ const slotWidths = new Map();
1660
+ let allMeasurementsSuccessful = true;
1661
+ // Measure all slots with content
1662
+ const slots = ['start', 'end', 'primary', 'secondary'];
1663
+ slots.forEach((slot) => {
1664
+ if (this.el.classList.contains(`has-${slot}-content`)) {
1665
+ const slotElement = this.el.shadowRoot?.querySelector(`slot[name="${slot}"]`);
1666
+ if (slotElement) {
1667
+ // Check if the slot contains an img or ion-img
1668
+ const assignedElements = slotElement.assignedElements({ flatten: true });
1669
+ const hasImg = assignedElements.some((el) => {
1670
+ if (el.tagName === 'IMG' || el.tagName === 'ION-IMG') {
1671
+ return true;
1672
+ }
1673
+ // Check for nested images
1674
+ return el.querySelector('img, ion-img') !== null;
1675
+ });
1676
+ // Temporarily allow slot to size to content by setting flex-basis
1677
+ // to 'auto'. This ensures that slotted images can render at their
1678
+ // intrinsic width for measurement.
1679
+ if (hasImg) {
1680
+ const { name } = slotPairs.find((pair) => pair.slots.includes(slot));
1681
+ this.el.style.setProperty(`--${name}-size`, 'auto');
1682
+ }
1683
+ const width = slotElement.offsetWidth;
1684
+ if (width > 0) {
1685
+ slotWidths.set(slot, width);
1686
+ }
1687
+ else {
1688
+ allMeasurementsSuccessful = false;
1689
+ }
1690
+ }
1691
+ }
1692
+ });
1693
+ // Then set the CSS custom properties based on the largest width in each pair
1694
+ slotPairs.forEach(({ name, slots }) => {
1695
+ // Find the maximum width among the slots in this pair
1696
+ let maxWidth = 0;
1697
+ let hasAnyContent = false;
1698
+ slots.forEach((slot) => {
1699
+ if (slotWidths.has(slot)) {
1700
+ hasAnyContent = true;
1701
+ maxWidth = Math.max(maxWidth, slotWidths.get(slot) ?? 0);
1702
+ }
1703
+ });
1704
+ // If at least one slot in the pair has content, set the min-width for the pair
1705
+ if (hasAnyContent && maxWidth > 0) {
1706
+ // Set a single CSS variable for the pair
1707
+ this.el.style.setProperty(`--${name}-size`, `${maxWidth}px`);
1708
+ }
1709
+ });
1710
+ return allMeasurementsSuccessful;
1711
+ }
1712
+ /**
1713
+ * Removes all slot visibility classes and slot width CSS variables.
1714
+ */
1715
+ removeSlotClasses() {
1716
+ this.el.classList.remove(...this.slotClasses, ...this.showClasses);
1717
+ this.slotSizeVars.forEach((cssVar) => this.el.style.removeProperty(cssVar));
1718
+ }
1719
+ updateSlotClasses() {
1720
+ const titlePlacement = this.getTitlePlacement();
1721
+ if (titlePlacement !== 'center') {
1722
+ this.removeSlotClasses();
1723
+ return;
1724
+ }
1725
+ // Check if slots have content
1726
+ const slots = ['start', 'end', 'primary', 'secondary'];
1727
+ const classesToAdd = [];
1728
+ const classesToRemove = [];
1729
+ slots.forEach((slot) => {
1730
+ const slotHasContent = this.hasSlotContent(slot);
1731
+ const slotClass = `has-${slot}-content`;
1732
+ if (slotHasContent) {
1733
+ classesToAdd.push(slotClass);
1734
+ }
1735
+ else {
1736
+ classesToRemove.push(slotClass);
1737
+ }
1738
+ });
1739
+ // Force visibilities in certain conditions. This works by adding a class to the toolbar
1740
+ // named `show-{slot}`. This class will be added if the toolbar has the required slots
1741
+ // and does not have any of the excluded slots, otherwise it will be removed.
1742
+ // This is useful to enforce centering of the toolbar content when there are different amounts
1743
+ // of slots on either side of the toolbar.
1744
+ const conditions = [
1745
+ { name: 'end', requiredSlots: ['start'], excludeSlots: ['end', 'primary'] },
1746
+ { name: 'start', requiredSlots: ['end'], excludeSlots: ['start', 'secondary'] },
1747
+ { name: 'secondary', requiredSlots: ['primary'], excludeSlots: ['secondary', 'start'] },
1748
+ { name: 'primary', requiredSlots: ['secondary'], excludeSlots: ['primary', 'end'] },
1749
+ ];
1750
+ conditions.forEach((condition) => {
1751
+ const hasRequiredSlots = condition.requiredSlots.every((slot) => classesToAdd.includes(`has-${slot}-content`));
1752
+ const hasExcludedSlots = condition.excludeSlots.some((slot) => classesToAdd.includes(`has-${slot}-content`));
1753
+ const className = `show-${condition.name}`;
1754
+ if (hasRequiredSlots && !hasExcludedSlots) {
1755
+ classesToAdd.push(className);
1756
+ }
1757
+ else {
1758
+ classesToRemove.push(className);
1759
+ }
1760
+ });
1761
+ // Add classes to the toolbar element
1762
+ this.el.classList.add(...classesToAdd);
1763
+ this.el.classList.remove(...classesToRemove);
1764
+ // Update slot widths after classes have been updated
1765
+ this.updateSlotWidths();
1766
+ }
1767
+ hasSlotContent(slotName) {
1768
+ const slotNode = this.el.shadowRoot?.querySelector(`slot[name="${slotName}"]`);
1769
+ return !!slotNode && slotNode.assignedNodes().length > 0;
1516
1770
  }
1517
1771
  childrenStyle(ev) {
1518
1772
  ev.stopPropagation();
@@ -1537,22 +1791,30 @@ const Toolbar = class {
1537
1791
  }
1538
1792
  }
1539
1793
  render() {
1540
- const mode = ionicGlobal.getIonMode(this);
1794
+ const theme$1 = ionicGlobal.getIonTheme(this);
1541
1795
  const childStyles = {};
1542
- this.childrenStyles.forEach((value) => {
1543
- Object.assign(childStyles, value);
1796
+ this.childrenStyles.forEach((style) => {
1797
+ Object.assign(childStyles, style);
1544
1798
  });
1545
- return (index.h(index.Host, { key: 'c16803dc4eae9972ef19bf43aa74b94feb4fd4c1', class: {
1546
- ...childStyles,
1799
+ const titlePlacement = this.getTitlePlacement();
1800
+ return (index.h(index.Host, { key: '3b97d3de5b1910257170355995eb7a50a2b6dcc4', class: {
1547
1801
  ...theme.createColorClasses(this.color, {
1548
- [mode]: true,
1802
+ [theme$1]: true,
1549
1803
  'in-toolbar': theme.hostContext('ion-toolbar', this.el),
1804
+ [`toolbar-title-placement-${titlePlacement}`]: true,
1550
1805
  }),
1551
- } }, index.h("div", { key: '20e3f85844c94b8399c245d2df125e6ab678d681', class: "toolbar-background", part: "background" }), index.h("div", { key: '12f09e324e8d9130b9d30c493106b500233fb016', class: "toolbar-container", part: "container" }, index.h("slot", { key: '6da0fe99ee0c4d7c969712e2908a4e7e6be5ed2c', name: "start" }), index.h("slot", { key: '177c346d6dcabb7857d810cda7d25c6dde32e6e2', name: "secondary" }), index.h("div", { key: '8c921b415940c71bf4c1a2c5c6887f36ad1afd16', class: "toolbar-content", part: "content" }, index.h("slot", { key: '1f2976b80d967bd51e86ed1357b363271d655df2' })), index.h("slot", { key: '0f7618044a7e8b0d9b715a8e208070f7ef2ee4c8', name: "primary" }), index.h("slot", { key: '125c393197e0660a3c2638dd4628c41ef7e05f19', name: "end" }))));
1806
+ ...childStyles,
1807
+ } }, index.h("div", { key: '26f85390aa62f118e585fd8560fba0620b30fd51', class: "toolbar-background", part: "background" }), index.h("div", { key: '57e32773d5642dde7f5d7cca9aaceb41b4d800bd', class: "toolbar-container", part: "container" }, index.h("slot", { key: '5429b3f898703339749a55af6bb28d7e4d969679', name: "start", onSlotchange: () => this.updateSlotClasses }), index.h("slot", { key: 'c5565f7020f52a1f075d9c6908ace042d488642f', name: "secondary", onSlotchange: () => this.updateSlotClasses }), index.h("div", { key: '2d083bcd57512041321a68b43d6b90144eb20166', class: "toolbar-content", part: "content" }, index.h("slot", { key: 'eb8abc0b9b96c699355891fbd0d284094cde7632' })), index.h("slot", { key: 'ca66f2dcce1f5382ed40a120cf32f759597a11ad', name: "primary", onSlotchange: () => this.updateSlotClasses }), index.h("slot", { key: '19e3eb792d45c21404fe48f119d68248b5d7dca7', name: "end", onSlotchange: () => this.updateSlotClasses }))));
1552
1808
  }
1553
1809
  get el() { return index.getElement(this); }
1810
+ static get watchers() { return {
1811
+ "titlePlacement": [{
1812
+ "titlePlacementChanged": 0
1813
+ }]
1814
+ }; }
1554
1815
  };
1555
1816
  Toolbar.style = {
1817
+ ionic: toolbarIonicCss(),
1556
1818
  ios: toolbarIosCss(),
1557
1819
  md: toolbarMdCss()
1558
1820
  };