@ionic/core 8.8.18-dev.11786361672.19605941 → 8.8.18-dev.11786399582.1d58c37d

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 (1143) 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-fab-button.js +1 -1
  27. package/components/ion-fab-list.js +1 -1
  28. package/components/ion-fab.js +1 -1
  29. package/components/ion-footer.js +1 -1
  30. package/components/ion-grid.js +1 -1
  31. package/components/ion-header.js +1 -1
  32. package/components/ion-icon.js +1 -1
  33. package/components/ion-img.js +1 -1
  34. package/components/ion-infinite-scroll-content.js +1 -1
  35. package/components/ion-infinite-scroll.js +1 -1
  36. package/components/ion-input-otp.js +1 -1
  37. package/components/ion-input-password-toggle.js +1 -1
  38. package/components/ion-input.js +1 -1
  39. package/components/ion-item-divider.js +1 -1
  40. package/components/ion-item-group.js +1 -1
  41. package/components/ion-item-option.js +1 -1
  42. package/components/ion-item-options.js +1 -1
  43. package/components/ion-item-sliding.js +1 -1
  44. package/components/ion-item.js +1 -1
  45. package/components/ion-label.js +1 -1
  46. package/components/ion-list-header.js +1 -1
  47. package/components/ion-list.js +1 -1
  48. package/components/ion-loading.js +1 -1
  49. package/components/ion-menu-button.js +1 -1
  50. package/components/ion-menu-toggle.js +1 -1
  51. package/components/ion-menu.js +1 -1
  52. package/components/ion-modal.js +1 -1
  53. package/components/ion-nav-link.js +1 -1
  54. package/components/ion-nav.js +1 -1
  55. package/components/ion-note.js +1 -1
  56. package/components/ion-picker-column-option.js +1 -1
  57. package/components/ion-picker-column.js +1 -1
  58. package/components/ion-picker-legacy-column.js +1 -1
  59. package/components/ion-picker-legacy.js +1 -1
  60. package/components/ion-picker.js +1 -1
  61. package/components/ion-popover.js +1 -1
  62. package/components/ion-progress-bar.js +1 -1
  63. package/components/ion-radio-group.js +1 -1
  64. package/components/ion-radio.js +1 -1
  65. package/components/ion-range.js +1 -1
  66. package/components/ion-refresher-content.js +1 -1
  67. package/components/ion-refresher.js +1 -1
  68. package/components/ion-reorder-group.js +1 -1
  69. package/components/ion-reorder.js +1 -1
  70. package/components/ion-ripple-effect.js +1 -1
  71. package/components/ion-route-redirect.js +1 -1
  72. package/components/ion-route.js +1 -1
  73. package/components/ion-router-link.js +1 -1
  74. package/components/ion-router-outlet.js +1 -1
  75. package/components/ion-router.js +1 -1
  76. package/components/ion-row.js +1 -1
  77. package/components/ion-searchbar.js +1 -1
  78. package/components/ion-segment-button.js +1 -1
  79. package/components/ion-segment-content.js +1 -1
  80. package/components/ion-segment-view.js +1 -1
  81. package/components/ion-segment.js +1 -1
  82. package/components/ion-select-modal.js +1 -1
  83. package/components/ion-select-option.js +1 -1
  84. package/components/ion-select-popover.js +1 -1
  85. package/components/ion-select.js +1 -1
  86. package/components/ion-skeleton-text.js +1 -1
  87. package/components/ion-spinner.js +1 -1
  88. package/components/ion-split-pane.js +1 -1
  89. package/components/ion-tab-bar.js +1 -1
  90. package/components/ion-tab-button.js +1 -1
  91. package/components/ion-tab.js +1 -1
  92. package/components/ion-tabs.js +1 -1
  93. package/components/ion-text.js +1 -1
  94. package/components/ion-textarea.js +1 -1
  95. package/components/ion-thumbnail.js +1 -1
  96. package/components/ion-title.js +1 -1
  97. package/components/ion-toast.js +1 -1
  98. package/components/ion-toggle.js +1 -1
  99. package/components/ion-toolbar.js +1 -1
  100. package/components/p--JUspHvy.js +4 -0
  101. package/components/p-A3O24YmY.js +4 -0
  102. package/components/p-ABkNVeU9.js +4 -0
  103. package/{dist/ionic/p-Cm20lBQw.js → components/p-B-JJgYSG.js} +1 -1
  104. package/components/p-B9jFTlwE.js +4 -0
  105. package/components/p-BLmJ0zRm.js +4 -0
  106. package/components/p-BMI53wYL.js +4 -0
  107. package/components/p-BSEgsdFI.js +4 -0
  108. package/{dist/ionic/p-Cipl19Qe.js → components/p-BkKAANMJ.js} +1 -1
  109. package/components/p-BlIAuGv2.js +4 -0
  110. package/components/p-BmVRXR1y.js +4 -0
  111. package/components/p-Bnsn6KaP.js +4 -0
  112. package/components/p-BsBCoGa-.js +4 -0
  113. package/components/p-Bz0dSlXZ.js +4 -0
  114. package/components/p-CHqRYvYm.js +4 -0
  115. package/components/p-CIGNaXM1.js +4 -0
  116. package/components/p-CO7fmmxt.js +4 -0
  117. package/components/p-CQGnMY3n.js +4 -0
  118. package/components/p-CSZf8_j0.js +4 -0
  119. package/components/{p-B_jBop0E.js → p-C_hpsif8.js} +1 -1
  120. package/components/p-C_xFdyXe.js +4 -0
  121. package/components/{p-BE21dB_a.js → p-Cf2jSDS8.js} +1 -1
  122. package/components/p-Cfx4M1Bn.js +4 -0
  123. package/components/{p-DWoO0801.js → p-ChIZKXUu.js} +1 -1
  124. package/components/p-CkMSOsFF.js +4 -0
  125. package/components/p-CmR5uXej.js +4 -0
  126. package/components/p-Cp4GRDqq.js +4 -0
  127. package/components/p-CsNJ1ULL.js +4 -0
  128. package/components/p-CtWGkNnJ.js +4 -0
  129. package/components/p-CzCbeKys.js +4 -0
  130. package/components/p-D-aHdMxW.js +4 -0
  131. package/components/p-D0d8qTwj.js +4 -0
  132. package/components/{p-D0fnq0lf.js → p-D13Eaw-8.js} +1 -1
  133. package/components/p-D3xo7hqU.js +4 -0
  134. package/components/p-D6Ynv7Xh.js +4 -0
  135. package/components/p-D7uN07a3.js +4 -0
  136. package/components/p-DCnGU1fF.js +4 -0
  137. package/components/p-DGvrK8dD.js +4 -0
  138. package/components/p-DJztqcrH.js +4 -0
  139. package/components/p-DOFCbuQR.js +4 -0
  140. package/components/p-DRxvM2Ic.js +4 -0
  141. package/components/p-DV5mPYQS.js +4 -0
  142. package/components/p-DWkAgceV.js +4 -0
  143. package/components/p-DiVJyqlX.js +4 -0
  144. package/components/{p-BZwQa9ey.js → p-DqLB8yFQ.js} +1 -1
  145. package/components/p-DqZAXv2t.js +4 -0
  146. package/components/{p-Bz4JFPmj.js → p-Osve4qkc.js} +1 -1
  147. package/components/p-R8zmRi4c.js +4 -0
  148. package/components/p-SLS1rDZM.js +4 -0
  149. package/components/p-ZjP4CjeZ.js +4 -0
  150. package/components/p-aJ6PBUvj.js +4 -0
  151. package/{dist/ionic/p-OkgYzj-7.js → components/p-cyNmxje6.js} +1 -1
  152. package/components/p-gAg0kXZp.js +4 -0
  153. package/components/p-gYiraiT_.js +4 -0
  154. package/components/p-j5IxBIan.js +4 -0
  155. package/components/p-k_E4tX5Z.js +4 -0
  156. package/components/p-oD4kcBRX.js +4 -0
  157. package/components/p-rCa2eL0j.js +4 -0
  158. package/components/p-vRBNsYbs.js +4 -0
  159. package/components/p-yEQxMl70.js +4 -0
  160. package/components/p-yzCsOZE2.js +4 -0
  161. package/css/core.css +1 -1
  162. package/css/core.css.map +1 -1
  163. package/css/display.css +1 -1
  164. package/css/display.css.map +1 -1
  165. package/css/flex-utils.css +1 -1
  166. package/css/flex-utils.css.map +1 -1
  167. package/css/float-elements.css.map +1 -1
  168. package/css/global.bundle.css.map +1 -1
  169. package/css/ionic-swiper.css +1 -1
  170. package/css/ionic-swiper.css.map +1 -1
  171. package/css/ionic.bundle.css +1 -1
  172. package/css/ionic.bundle.css.map +1 -1
  173. package/css/normalize.css.map +1 -1
  174. package/css/padding.css.map +1 -1
  175. package/css/palettes/dark.always.css.map +1 -1
  176. package/css/palettes/dark.class.css.map +1 -1
  177. package/css/palettes/dark.system.css.map +1 -1
  178. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  179. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  180. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  181. package/css/palettes/high-contrast.always.css.map +1 -1
  182. package/css/palettes/high-contrast.class.css.map +1 -1
  183. package/css/palettes/high-contrast.system.css.map +1 -1
  184. package/css/structure.css.map +1 -1
  185. package/css/text-alignment.css.map +1 -1
  186. package/css/text-transformation.css.map +1 -1
  187. package/css/typography.css.map +1 -1
  188. package/css/utils.bundle.css +1 -1
  189. package/css/utils.bundle.css.map +1 -1
  190. package/dist/cjs/{animation-B3xfVcDO.js → animation-Ch16T-Nb.js} +3 -3
  191. package/dist/cjs/{app-globals-3ZoCVkn-.js → app-globals-Dd89e0MR.js} +1 -1
  192. package/dist/cjs/{button-active-3tZKuPbT.js → button-active-COnxOe4X.js} +2 -2
  193. package/dist/cjs/{capacitor-CQSg1uCo.js → capacitor-DmA66EwP.js} +3 -3
  194. package/dist/cjs/config-D6C-KlA9.js +201 -0
  195. package/dist/{esm/focus-visible-vXpMhGrs.js → cjs/focus-visible-CCvKiLh3.js} +3 -23
  196. package/dist/cjs/{format-BCIkDef_.js → format-BUFWn4Bn.js} +1 -1
  197. package/dist/cjs/{framework-delegate-DC5nq_NN.js → framework-delegate-BgU6U9Ez.js} +2 -4
  198. package/dist/cjs/{haptic-eix26ESE.js → haptic-ClPPQ_PS.js} +1 -1
  199. package/dist/cjs/hardware-back-button-CXmUnTJC.js +121 -0
  200. package/dist/cjs/{helpers-DiOgV5hw.js → helpers-gntk8bfm.js} +4 -71
  201. package/dist/cjs/{index-BaJ7_YbC.js → index-BS2uhvhT.js} +4 -4
  202. package/dist/cjs/{index-GZU9YrFc.js → index-BfaXsATC.js} +241 -43
  203. package/dist/cjs/{index-bX3nz2vw.js → index-BhhuJ1Yx.js} +8 -9
  204. package/dist/cjs/{index-BxEZd5IE.js → index-BiRrzGDi.js} +34 -2
  205. package/dist/cjs/index-DkNv4J_i.js +10 -0
  206. package/dist/cjs/{index-CxDnX7hd.js → index-DqmRDbxg.js} +1 -3
  207. package/dist/cjs/{index-DYRcC3bw.js → index-ooS8B4p9.js} +15 -15
  208. package/dist/cjs/index.cjs.js +16 -16
  209. package/dist/cjs/{input-shims-BSEBw22J.js → input-shims-Bn1cXfCM.js} +17 -18
  210. package/dist/cjs/{input.utils-D68wgI2Y.js → input.utils-BwhxZooW.js} +5 -5
  211. package/dist/cjs/ion-accordion_2.cjs.entry.js +29 -61
  212. package/dist/cjs/ion-action-sheet.cjs.entry.js +22 -41
  213. package/dist/cjs/ion-alert.cjs.entry.js +41 -78
  214. package/dist/cjs/ion-app_8.cjs.entry.js +244 -458
  215. package/dist/cjs/ion-avatar_3.cjs.entry.js +13 -125
  216. package/dist/cjs/ion-back-button.cjs.entry.js +22 -31
  217. package/dist/cjs/ion-backdrop.cjs.entry.js +7 -10
  218. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +18 -54
  219. package/dist/cjs/ion-button_2.cjs.entry.js +24 -61
  220. package/dist/cjs/ion-card_5.cjs.entry.js +33 -55
  221. package/dist/cjs/ion-checkbox.cjs.entry.js +17 -34
  222. package/dist/cjs/ion-chip.cjs.entry.js +9 -50
  223. package/dist/cjs/ion-col_3.cjs.entry.js +57 -56
  224. package/dist/cjs/ion-datetime-button.cjs.entry.js +9 -13
  225. package/dist/cjs/ion-datetime_3.cjs.entry.js +51 -123
  226. package/dist/cjs/ion-fab_3.cjs.entry.js +28 -44
  227. package/dist/cjs/ion-img.cjs.entry.js +4 -8
  228. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +17 -93
  229. package/dist/cjs/ion-input-otp.cjs.entry.js +9 -74
  230. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +15 -53
  231. package/dist/cjs/ion-input.cjs.entry.js +35 -146
  232. package/dist/cjs/ion-item-option_3.cjs.entry.js +52 -467
  233. package/dist/cjs/ion-item_8.cjs.entry.js +50 -121
  234. package/dist/cjs/ion-loading.cjs.entry.js +19 -22
  235. package/dist/cjs/ion-menu_3.cjs.entry.js +29 -47
  236. package/dist/cjs/ion-modal.cjs.entry.js +215 -309
  237. package/dist/cjs/ion-nav_2.cjs.entry.js +11 -14
  238. package/dist/cjs/ion-picker-column-option.cjs.entry.js +8 -12
  239. package/dist/cjs/ion-picker-column.cjs.entry.js +14 -14
  240. package/dist/cjs/ion-picker.cjs.entry.js +6 -10
  241. package/dist/cjs/ion-popover.cjs.entry.js +19 -21
  242. package/dist/cjs/ion-progress-bar.cjs.entry.js +9 -27
  243. package/dist/cjs/ion-radio_2.cjs.entry.js +18 -36
  244. package/dist/cjs/ion-range.cjs.entry.js +13 -20
  245. package/dist/cjs/ion-refresher_2.cjs.entry.js +24 -43
  246. package/dist/cjs/ion-reorder_2.cjs.entry.js +14 -38
  247. package/dist/cjs/ion-ripple-effect.cjs.entry.js +7 -15
  248. package/dist/cjs/ion-route_4.cjs.entry.js +10 -11
  249. package/dist/cjs/ion-searchbar.cjs.entry.js +27 -160
  250. package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
  251. package/dist/cjs/ion-segment-view.cjs.entry.js +3 -13
  252. package/dist/cjs/ion-segment_2.cjs.entry.js +16 -23
  253. package/dist/cjs/ion-select-modal.cjs.entry.js +38 -114
  254. package/dist/cjs/ion-select_3.cjs.entry.js +108 -557
  255. package/dist/cjs/ion-spinner.cjs.entry.js +8 -30
  256. package/dist/cjs/ion-split-pane.cjs.entry.js +9 -13
  257. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +28 -150
  258. package/dist/cjs/ion-tab_2.cjs.entry.js +7 -8
  259. package/dist/cjs/ion-text.cjs.entry.js +7 -7
  260. package/dist/cjs/ion-textarea.cjs.entry.js +23 -137
  261. package/dist/cjs/ion-toast.cjs.entry.js +46 -70
  262. package/dist/cjs/ion-toggle.cjs.entry.js +26 -82
  263. package/dist/cjs/ionic-global-BerQGEpE.js +151 -0
  264. package/dist/cjs/ionic.cjs.js +4 -4
  265. package/dist/cjs/{ios.transition-DpFQfFfT.js → ios.transition-IMJRwn29.js} +5 -7
  266. package/dist/cjs/{item-multiple-inputs-BG9f5_eV.js → item-multiple-inputs-jOJZE_I0.js} +1 -1
  267. package/dist/cjs/{keyboard-Bn0Ppim6.js → keyboard-UuAS4D_9.js} +1 -1
  268. package/dist/cjs/keyboard-controller-GXBiBRKS.js +167 -0
  269. package/dist/cjs/{keyboard-faZBQysj.js → keyboard-hHzlEQpk.js} +3 -4
  270. package/dist/cjs/loader.cjs.js +4 -4
  271. package/dist/cjs/{md.transition-ChJcoZUH.js → md.transition-CgQZxcoT.js} +5 -6
  272. package/dist/cjs/{notch-controller-BO0UGB4F.js → notch-controller-_SwR025y.js} +4 -4
  273. package/dist/cjs/{overlays-CFGbPUmE.js → overlays-DuSEMhIW.js} +18 -309
  274. package/dist/cjs/{status-tap-x2qDo5QR.js → status-tap-CSvBT7FV.js} +3 -4
  275. package/dist/cjs/{swipe-back-CvZt_4YX.js → swipe-back-CuIiziaa.js} +2 -3
  276. package/dist/cjs/{theme-IlOsGAz7.js → theme-CeDs6Hcv.js} +1 -25
  277. package/dist/cjs/validity-BpS37YFM.js +19 -0
  278. package/dist/collection/collection-manifest.json +1 -9
  279. package/dist/collection/components/accordion/accordion.ios.css +58 -73
  280. package/dist/collection/components/accordion/accordion.js +27 -41
  281. package/dist/collection/components/accordion/accordion.md.css +59 -67
  282. package/dist/collection/components/accordion-group/accordion-group.ios.css +4 -16
  283. package/dist/collection/components/accordion-group/accordion-group.js +8 -44
  284. package/dist/collection/components/accordion-group/accordion-group.md.css +4 -22
  285. package/dist/collection/components/action-sheet/action-sheet.ios.css +11 -367
  286. package/dist/collection/components/action-sheet/action-sheet.js +13 -32
  287. package/dist/collection/components/action-sheet/action-sheet.md.css +10 -306
  288. package/dist/collection/components/alert/alert.ios.css +19 -481
  289. package/dist/collection/components/alert/alert.js +30 -67
  290. package/dist/collection/components/alert/alert.md.css +29 -464
  291. package/dist/collection/components/app/app.js +83 -15
  292. package/dist/collection/components/avatar/avatar.ios.css +33 -7
  293. package/dist/collection/components/avatar/avatar.js +4 -120
  294. package/dist/collection/components/avatar/avatar.md.css +0 -51
  295. package/dist/collection/components/back-button/back-button.ios.css +48 -60
  296. package/dist/collection/components/back-button/back-button.js +19 -27
  297. package/dist/collection/components/back-button/back-button.md.css +48 -60
  298. package/dist/collection/components/backdrop/backdrop.ios.css +19 -56
  299. package/dist/collection/components/backdrop/backdrop.js +6 -12
  300. package/dist/collection/components/backdrop/backdrop.md.css +19 -56
  301. package/dist/collection/components/badge/badge.ios.css +12 -137
  302. package/dist/collection/components/badge/badge.js +9 -145
  303. package/dist/collection/components/badge/badge.md.css +12 -122
  304. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +8 -20
  305. package/dist/collection/components/breadcrumb/breadcrumb.js +11 -43
  306. package/dist/collection/components/breadcrumb/breadcrumb.md.css +8 -20
  307. package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +0 -6
  308. package/dist/collection/components/breadcrumbs/breadcrumbs.js +9 -11
  309. package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +0 -6
  310. package/dist/collection/components/button/button.ios.css +46 -154
  311. package/dist/collection/components/button/button.js +27 -63
  312. package/dist/collection/components/button/button.md.css +50 -150
  313. package/dist/collection/components/buttons/buttons.ios.css +7 -59
  314. package/dist/collection/components/buttons/buttons.js +9 -15
  315. package/dist/collection/components/buttons/buttons.md.css +3 -55
  316. package/dist/collection/components/card/card.ios.css +14 -65
  317. package/dist/collection/components/card/card.js +10 -41
  318. package/dist/collection/components/card/card.md.css +14 -65
  319. package/dist/collection/components/card-content/card-content.ios.css +35 -20
  320. package/dist/collection/components/card-content/card-content.js +10 -12
  321. package/dist/collection/components/card-content/card-content.md.css +35 -20
  322. package/dist/collection/components/card-header/card-header.ios.css +15 -27
  323. package/dist/collection/components/card-header/card-header.js +10 -13
  324. package/dist/collection/components/card-header/card-header.md.css +15 -27
  325. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +0 -12
  326. package/dist/collection/components/card-subtitle/card-subtitle.js +8 -11
  327. package/dist/collection/components/card-subtitle/card-subtitle.md.css +0 -12
  328. package/dist/collection/components/card-title/card-title.ios.css +0 -73
  329. package/dist/collection/components/card-title/card-title.js +8 -11
  330. package/dist/collection/components/card-title/card-title.md.css +0 -73
  331. package/dist/collection/components/checkbox/checkbox.ios.css +117 -242
  332. package/dist/collection/components/checkbox/checkbox.js +14 -69
  333. package/dist/collection/components/checkbox/checkbox.md.css +118 -243
  334. package/dist/collection/components/chip/chip.ios.css +14 -67
  335. package/dist/collection/components/chip/chip.js +8 -108
  336. package/dist/collection/components/chip/chip.md.css +14 -67
  337. package/dist/collection/components/col/col.css +4 -192
  338. package/dist/collection/components/col/col.js +61 -211
  339. package/dist/collection/components/content/content.css +2 -47
  340. package/dist/collection/components/content/content.js +63 -17
  341. package/dist/collection/components/datetime/datetime.ios.css +106 -302
  342. package/dist/collection/components/datetime/datetime.js +26 -100
  343. package/dist/collection/components/datetime/datetime.md.css +96 -293
  344. package/dist/collection/components/datetime/utils/data.js +5 -5
  345. package/dist/collection/components/datetime-button/datetime-button.ios.css +0 -6
  346. package/dist/collection/components/datetime-button/datetime-button.js +8 -11
  347. package/dist/collection/components/datetime-button/datetime-button.md.css +0 -6
  348. package/dist/collection/components/fab/fab.css +1 -25
  349. package/dist/collection/components/fab/fab.js +5 -9
  350. package/dist/collection/components/fab-button/fab-button.ios.css +6 -18
  351. package/dist/collection/components/fab-button/fab-button.js +21 -36
  352. package/dist/collection/components/fab-button/fab-button.md.css +8 -20
  353. package/dist/collection/components/fab-list/fab-list.css +0 -12
  354. package/dist/collection/components/fab-list/fab-list.js +5 -9
  355. package/dist/collection/components/footer/footer.ios.css +6 -33
  356. package/dist/collection/components/footer/footer.js +25 -117
  357. package/dist/collection/components/footer/footer.md.css +0 -40
  358. package/dist/collection/components/grid/grid.css +0 -12
  359. package/dist/collection/components/grid/grid.js +5 -9
  360. package/dist/collection/components/header/header.ios.css +133 -178
  361. package/dist/collection/components/header/header.js +39 -181
  362. package/dist/collection/components/header/header.md.css +9 -199
  363. package/dist/collection/components/header/header.utils.js +13 -6
  364. package/dist/collection/components/img/img.js +2 -8
  365. package/dist/collection/components/infinite-scroll/infinite-scroll.js +5 -100
  366. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +0 -12
  367. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +10 -16
  368. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +0 -12
  369. package/dist/collection/components/input/input.ios.css +137 -224
  370. package/dist/collection/components/input/input.js +39 -172
  371. package/dist/collection/components/input/input.md.css +209 -194
  372. package/dist/collection/components/input-otp/input-otp.ios.css +60 -105
  373. package/dist/collection/components/input-otp/input-otp.js +7 -74
  374. package/dist/collection/components/input-otp/input-otp.md.css +60 -105
  375. package/dist/collection/components/input-password-toggle/input-password-toggle.js +12 -48
  376. package/dist/collection/components/item/item.ios.css +80 -120
  377. package/dist/collection/components/item/item.js +21 -56
  378. package/dist/collection/components/item/item.md.css +79 -131
  379. package/dist/collection/components/item-divider/item-divider.ios.css +0 -18
  380. package/dist/collection/components/item-divider/item-divider.js +8 -11
  381. package/dist/collection/components/item-divider/item-divider.md.css +0 -18
  382. package/dist/collection/components/item-group/item-group.ios.css +0 -12
  383. package/dist/collection/components/item-group/item-group.js +7 -13
  384. package/dist/collection/components/item-group/item-group.md.css +0 -12
  385. package/dist/collection/components/item-option/item-option.ios.css +29 -136
  386. package/dist/collection/components/item-option/item-option.js +9 -73
  387. package/dist/collection/components/item-option/item-option.md.css +29 -136
  388. package/dist/collection/components/item-options/item-options.ios.css +34 -77
  389. package/dist/collection/components/item-options/item-options.js +7 -13
  390. package/dist/collection/components/item-options/item-options.md.css +34 -77
  391. package/dist/collection/components/item-sliding/{item-sliding.native.css → item-sliding.css} +9 -84
  392. package/dist/collection/components/item-sliding/item-sliding.js +35 -421
  393. package/dist/collection/components/item-sliding/test/test.utils.js +0 -13
  394. package/dist/collection/components/label/label.ios.css +0 -18
  395. package/dist/collection/components/label/label.js +8 -11
  396. package/dist/collection/components/label/label.md.css +0 -18
  397. package/dist/collection/components/list/list.ios.css +14 -54
  398. package/dist/collection/components/list/list.js +9 -48
  399. package/dist/collection/components/list/list.md.css +16 -56
  400. package/dist/collection/components/list-header/list-header.ios.css +38 -82
  401. package/dist/collection/components/list-header/list-header.js +8 -11
  402. package/dist/collection/components/list-header/list-header.md.css +38 -82
  403. package/dist/collection/components/loading/loading.ios.css +1 -13
  404. package/dist/collection/components/loading/loading.js +11 -14
  405. package/dist/collection/components/loading/loading.md.css +1 -13
  406. package/dist/collection/components/menu/menu.ios.css +3 -15
  407. package/dist/collection/components/menu/menu.js +7 -12
  408. package/dist/collection/components/menu/menu.md.css +3 -15
  409. package/dist/collection/components/menu-button/menu-button.ios.css +14 -48
  410. package/dist/collection/components/menu-button/menu-button.js +10 -26
  411. package/dist/collection/components/menu-button/menu-button.md.css +15 -49
  412. package/dist/collection/components/menu-toggle/menu-toggle.js +5 -8
  413. package/dist/collection/components/modal/animations/sheet.js +2 -8
  414. package/dist/collection/components/modal/gestures/sheet.js +32 -102
  415. package/dist/collection/components/modal/gestures/swipe-to-close.js +3 -32
  416. package/dist/collection/components/modal/gestures/utils.js +17 -0
  417. package/dist/collection/components/modal/modal.ios.css +70 -178
  418. package/dist/collection/components/modal/modal.js +34 -59
  419. package/dist/collection/components/modal/modal.md.css +70 -178
  420. package/dist/collection/components/modal/safe-area-utils.js +35 -0
  421. package/dist/collection/components/nav/nav.css +1 -7
  422. package/dist/collection/components/nav/nav.js +5 -11
  423. package/dist/collection/components/nav-link/nav-link.js +1 -5
  424. package/dist/collection/components/note/note.ios.css +0 -12
  425. package/dist/collection/components/note/note.js +8 -11
  426. package/dist/collection/components/note/note.md.css +0 -12
  427. package/dist/collection/components/picker/picker.ios.css +3 -15
  428. package/dist/collection/components/picker/picker.js +5 -8
  429. package/dist/collection/components/picker/picker.md.css +3 -15
  430. package/dist/collection/components/picker-column/picker-column.css +2 -9
  431. package/dist/collection/components/picker-column/picker-column.js +7 -8
  432. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +0 -6
  433. package/dist/collection/components/picker-column-option/picker-column-option.js +7 -13
  434. package/dist/collection/components/picker-column-option/picker-column-option.md.css +0 -6
  435. package/dist/collection/components/picker-legacy/picker.ios.css +1 -13
  436. package/dist/collection/components/picker-legacy/picker.js +6 -7
  437. package/dist/collection/components/picker-legacy/picker.md.css +1 -13
  438. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +0 -12
  439. package/dist/collection/components/picker-legacy-column/picker-column.js +4 -4
  440. package/dist/collection/components/picker-legacy-column/picker-column.md.css +0 -12
  441. package/dist/collection/components/popover/popover.ios.css +1 -29
  442. package/dist/collection/components/popover/popover.js +15 -18
  443. package/dist/collection/components/popover/popover.md.css +1 -29
  444. package/dist/collection/components/progress-bar/progress-bar.ios.css +17 -48
  445. package/dist/collection/components/progress-bar/progress-bar.js +7 -43
  446. package/dist/collection/components/progress-bar/progress-bar.md.css +17 -48
  447. package/dist/collection/components/radio/radio.ios.css +102 -207
  448. package/dist/collection/components/radio/radio.js +9 -14
  449. package/dist/collection/components/radio/radio.md.css +102 -207
  450. package/dist/collection/components/radio-group/radio-group.ios.css +19 -43
  451. package/dist/collection/components/radio-group/radio-group.js +7 -48
  452. package/dist/collection/components/radio-group/radio-group.md.css +19 -43
  453. package/dist/collection/components/range/range.ios.css +85 -128
  454. package/dist/collection/components/range/range.js +10 -16
  455. package/dist/collection/components/range/range.md.css +85 -128
  456. package/dist/collection/components/refresher/refresher.ios.css +1 -14
  457. package/dist/collection/components/refresher/refresher.js +10 -13
  458. package/dist/collection/components/refresher/refresher.md.css +2 -15
  459. package/dist/collection/components/refresher-content/refresher-content.js +7 -28
  460. package/dist/collection/components/reorder/reorder.ios.css +0 -6
  461. package/dist/collection/components/reorder/reorder.js +6 -33
  462. package/dist/collection/components/reorder/reorder.md.css +0 -6
  463. package/dist/collection/components/reorder-group/reorder-group.css +0 -6
  464. package/dist/collection/components/reorder-group/reorder-group.js +4 -8
  465. package/dist/collection/components/ripple-effect/{ripple-effect.common.css → ripple-effect.css} +1 -7
  466. package/dist/collection/components/ripple-effect/ripple-effect.js +6 -14
  467. package/dist/collection/components/route/route.js +0 -4
  468. package/dist/collection/components/router/router.js +0 -4
  469. package/dist/collection/components/router-link/router-link.css +2 -8
  470. package/dist/collection/components/router-link/router-link.js +5 -9
  471. package/dist/collection/components/router-outlet/router-outlet.css +1 -7
  472. package/dist/collection/components/router-outlet/router-outlet.js +3 -6
  473. package/dist/collection/components/row/row.css +0 -16
  474. package/dist/collection/components/row/row.js +2 -9
  475. package/dist/collection/components/searchbar/searchbar.ios.css +18 -56
  476. package/dist/collection/components/searchbar/searchbar.js +37 -205
  477. package/dist/collection/components/searchbar/searchbar.md.css +18 -56
  478. package/dist/collection/components/segment/segment.ios.css +2 -45
  479. package/dist/collection/components/segment/segment.js +8 -11
  480. package/dist/collection/components/segment/segment.md.css +2 -45
  481. package/dist/collection/components/segment-button/segment-button.ios.css +105 -146
  482. package/dist/collection/components/segment-button/segment-button.js +8 -11
  483. package/dist/collection/components/segment-button/segment-button.md.css +107 -148
  484. package/dist/collection/components/segment-content/segment-content.js +1 -1
  485. package/dist/collection/components/segment-view/segment-view.ios.css +0 -6
  486. package/dist/collection/components/segment-view/segment-view.js +4 -13
  487. package/dist/collection/components/segment-view/segment-view.md.css +0 -6
  488. package/dist/collection/components/select/select.ios.css +176 -348
  489. package/dist/collection/components/select/select.js +92 -521
  490. package/dist/collection/components/select/select.md.css +178 -364
  491. package/dist/collection/components/select-modal/select-modal.ios.css +0 -466
  492. package/dist/collection/components/select-modal/select-modal.js +30 -126
  493. package/dist/collection/components/select-modal/select-modal.md.css +0 -394
  494. package/dist/collection/components/select-option/select-option.js +4 -72
  495. package/dist/collection/components/select-popover/select-popover.ios.css +20 -302
  496. package/dist/collection/components/select-popover/select-popover.js +29 -89
  497. package/dist/collection/components/select-popover/select-popover.md.css +0 -345
  498. package/dist/collection/components/skeleton-text/skeleton-text.css +0 -6
  499. package/dist/collection/components/skeleton-text/skeleton-text.js +5 -9
  500. package/dist/collection/components/spinner/{spinner.ionic.css → spinner.css} +10 -78
  501. package/dist/collection/components/spinner/spinner.js +6 -47
  502. package/dist/collection/components/split-pane/split-pane.ios.css +2 -20
  503. package/dist/collection/components/split-pane/split-pane.js +8 -15
  504. package/dist/collection/components/split-pane/split-pane.md.css +2 -20
  505. package/dist/collection/components/tab/tab.js +2 -6
  506. package/dist/collection/components/tab-bar/tab-bar.ios.css +43 -86
  507. package/dist/collection/components/tab-bar/tab-bar.js +15 -179
  508. package/dist/collection/components/tab-bar/tab-bar.md.css +43 -86
  509. package/dist/collection/components/tab-button/tab-button.ios.css +95 -171
  510. package/dist/collection/components/tab-button/tab-button.js +9 -54
  511. package/dist/collection/components/tab-button/tab-button.md.css +93 -137
  512. package/dist/collection/components/tabs/tabs.css +1 -7
  513. package/dist/collection/components/tabs/tabs.js +1 -4
  514. package/dist/collection/components/text/text.css +0 -6
  515. package/dist/collection/components/text/text.js +6 -7
  516. package/dist/collection/components/textarea/textarea.ios.css +158 -298
  517. package/dist/collection/components/textarea/textarea.js +24 -162
  518. package/dist/collection/components/textarea/textarea.md.css +159 -312
  519. package/dist/collection/components/thumbnail/thumbnail.css +0 -6
  520. package/dist/collection/components/thumbnail/thumbnail.js +2 -9
  521. package/dist/collection/components/title/title.ios.css +4 -32
  522. package/dist/collection/components/title/title.js +7 -13
  523. package/dist/collection/components/title/title.md.css +4 -39
  524. package/dist/collection/components/toast/animations/utils.js +1 -1
  525. package/dist/collection/components/toast/toast.ios.css +45 -84
  526. package/dist/collection/components/toast/toast.js +13 -76
  527. package/dist/collection/components/toast/toast.md.css +45 -84
  528. package/dist/collection/components/toggle/toggle.ios.css +127 -247
  529. package/dist/collection/components/toggle/toggle.js +18 -72
  530. package/dist/collection/components/toggle/toggle.md.css +127 -245
  531. package/dist/collection/components/toolbar/toolbar.ios.css +47 -90
  532. package/dist/collection/components/toolbar/toolbar.js +13 -218
  533. package/dist/collection/components/toolbar/toolbar.md.css +47 -90
  534. package/dist/collection/global/ionic-global.js +13 -241
  535. package/dist/collection/utils/content/index.js +30 -0
  536. package/dist/collection/utils/focus-trap.js +2 -13
  537. package/dist/collection/utils/focus-visible.js +0 -22
  538. package/dist/collection/utils/forms/validity.js +0 -31
  539. package/dist/collection/utils/framework-delegate.js +1 -3
  540. package/dist/collection/utils/hardware-back-button.js +0 -15
  541. package/dist/collection/utils/helpers.js +3 -70
  542. package/dist/collection/utils/keyboard/keyboard-controller.js +1 -3
  543. package/dist/collection/utils/media.js +0 -1
  544. package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
  545. package/dist/collection/utils/menu-controller/animations/push.js +1 -2
  546. package/dist/collection/utils/menu-controller/animations/reveal.js +1 -2
  547. package/dist/collection/utils/overlays.js +8 -290
  548. package/dist/collection/utils/sanitization/index.js +18 -274
  549. package/dist/collection/utils/test/playwright/drag-element.js +9 -32
  550. package/dist/collection/utils/test/playwright/generator.js +23 -48
  551. package/dist/collection/utils/test/playwright/page/utils/goto.js +5 -14
  552. package/dist/collection/utils/test/playwright/page/utils/set-content.js +3 -26
  553. package/dist/collection/utils/theme.js +1 -25
  554. package/dist/collection/utils/transition/ios.transition.js +0 -1
  555. package/dist/docs.json +287 -9091
  556. package/dist/esm/{animation-B2qdQ_ou.js → animation-DLJpuoEz.js} +2 -2
  557. package/dist/esm/{app-globals-DZ-iIjxA.js → app-globals-D0C5S4hU.js} +1 -1
  558. package/dist/esm/{button-active-BmajAby6.js → button-active-BSpTQmS9.js} +2 -2
  559. package/dist/esm/{capacitor-CtQSWUU0.js → capacitor-CFERIeaU.js} +1 -1
  560. package/dist/esm/config-DQCONYYp.js +195 -0
  561. package/dist/{cjs/focus-visible-BIj-I3-C.js → esm/focus-visible-BmVRXR1y.js} +1 -27
  562. package/dist/esm/{format-2WlZcMvG.js → format-CAmvpAez.js} +1 -1
  563. package/dist/esm/{framework-delegate-DO2QXccA.js → framework-delegate-FnPGymXL.js} +2 -4
  564. package/dist/esm/{haptic-DFgKNCce.js → haptic-DzAMWJuk.js} +1 -1
  565. package/dist/esm/hardware-back-button-B93Gru0Y.js +115 -0
  566. package/dist/esm/{helpers-DfF5_wJc.js → helpers-HEqiOzXb.js} +5 -71
  567. package/dist/esm/{index-BjaaZqVY.js → index-BRHzoo00.js} +3 -4
  568. package/dist/esm/{index-BIUWGRUl.js → index-B_dQk_WE.js} +4 -4
  569. package/dist/esm/{index-B4Kq2YNk.js → index-DV3sJJW8.js} +2 -3
  570. package/dist/esm/{index-KxK0gcRp.js → index-Dw-wN0Ja.js} +33 -3
  571. package/dist/esm/{index-Di034G4O.js → index-Q6UPU0Ay.js} +11 -11
  572. package/dist/esm/index-ZjP4CjeZ.js +7 -0
  573. package/dist/esm/{index-C0EQceqV.js → index-tcQvqkiX.js} +222 -42
  574. package/dist/esm/index.js +14 -14
  575. package/dist/esm/{input-shims-DvNNw70a.js → input-shims-LXhI7LEx.js} +6 -7
  576. package/dist/esm/{input.utils-_LkBfBWt.js → input.utils-Y6NgW8bw.js} +3 -3
  577. package/dist/esm/ion-accordion_2.entry.js +29 -61
  578. package/dist/esm/ion-action-sheet.entry.js +22 -41
  579. package/dist/esm/ion-alert.entry.js +40 -77
  580. package/dist/esm/ion-app_8.entry.js +243 -457
  581. package/dist/esm/ion-avatar_3.entry.js +13 -125
  582. package/dist/esm/ion-back-button.entry.js +22 -31
  583. package/dist/esm/ion-backdrop.entry.js +7 -10
  584. package/dist/esm/ion-breadcrumb_2.entry.js +18 -54
  585. package/dist/esm/ion-button_2.entry.js +24 -61
  586. package/dist/esm/ion-card_5.entry.js +33 -55
  587. package/dist/esm/ion-checkbox.entry.js +17 -34
  588. package/dist/esm/ion-chip.entry.js +9 -50
  589. package/dist/esm/ion-col_3.entry.js +57 -56
  590. package/dist/esm/ion-datetime-button.entry.js +9 -13
  591. package/dist/esm/ion-datetime_3.entry.js +51 -123
  592. package/dist/esm/ion-fab_3.entry.js +28 -44
  593. package/dist/esm/ion-img.entry.js +4 -8
  594. package/dist/esm/ion-infinite-scroll_2.entry.js +16 -92
  595. package/dist/esm/ion-input-otp.entry.js +9 -74
  596. package/dist/esm/ion-input-password-toggle.entry.js +15 -53
  597. package/dist/esm/ion-input.entry.js +35 -146
  598. package/dist/esm/ion-item-option_3.entry.js +52 -467
  599. package/dist/esm/ion-item_8.entry.js +50 -121
  600. package/dist/esm/ion-loading.entry.js +18 -21
  601. package/dist/esm/ion-menu_3.entry.js +29 -47
  602. package/dist/esm/ion-modal.entry.js +181 -275
  603. package/dist/esm/ion-nav_2.entry.js +11 -14
  604. package/dist/esm/ion-picker-column-option.entry.js +8 -12
  605. package/dist/esm/ion-picker-column.entry.js +13 -13
  606. package/dist/esm/ion-picker.entry.js +6 -10
  607. package/dist/esm/ion-popover.entry.js +19 -21
  608. package/dist/esm/ion-progress-bar.entry.js +9 -27
  609. package/dist/esm/ion-radio_2.entry.js +18 -36
  610. package/dist/esm/ion-range.entry.js +13 -20
  611. package/dist/esm/ion-refresher_2.entry.js +22 -41
  612. package/dist/esm/ion-reorder_2.entry.js +14 -38
  613. package/dist/esm/ion-ripple-effect.entry.js +7 -15
  614. package/dist/esm/ion-route_4.entry.js +10 -11
  615. package/dist/esm/ion-searchbar.entry.js +27 -160
  616. package/dist/esm/ion-segment-content.entry.js +2 -2
  617. package/dist/esm/ion-segment-view.entry.js +3 -13
  618. package/dist/esm/ion-segment_2.entry.js +16 -23
  619. package/dist/esm/ion-select-modal.entry.js +38 -114
  620. package/dist/esm/ion-select_3.entry.js +108 -557
  621. package/dist/esm/ion-spinner.entry.js +8 -30
  622. package/dist/esm/ion-split-pane.entry.js +9 -13
  623. package/dist/esm/ion-tab-bar_2.entry.js +27 -149
  624. package/dist/esm/ion-tab_2.entry.js +7 -8
  625. package/dist/esm/ion-text.entry.js +7 -7
  626. package/dist/esm/ion-textarea.entry.js +23 -137
  627. package/dist/esm/ion-toast.entry.js +21 -45
  628. package/dist/esm/ion-toggle.entry.js +26 -82
  629. package/dist/esm/ionic-global-Cp_eT4sZ.js +146 -0
  630. package/dist/esm/ionic.js +5 -5
  631. package/dist/esm/{ios.transition-CgScDbsb.js → ios.transition-ClFrsIrS.js} +5 -7
  632. package/dist/esm/{item-multiple-inputs-C6onMFOo.js → item-multiple-inputs-DlNuqNJm.js} +1 -1
  633. package/dist/esm/{keyboard-CyyguLDw.js → keyboard-CUw4ekVy.js} +1 -1
  634. package/dist/esm/keyboard-controller-BaaVITYt.js +165 -0
  635. package/dist/esm/{keyboard-WJix-wcz.js → keyboard-ywgs5efA.js} +3 -4
  636. package/dist/esm/loader.js +5 -5
  637. package/dist/esm/{md.transition-DThqYazt.js → md.transition-D0msQmzI.js} +5 -6
  638. package/dist/esm/{notch-controller-MTblRxjD.js → notch-controller-DKDjU_O7.js} +2 -2
  639. package/dist/esm/{overlays-tv6nLsmk.js → overlays-Dg0q2_tJ.js} +15 -306
  640. package/dist/esm/{status-tap-CoPI1M2q.js → status-tap-vO-6s4Yp.js} +3 -4
  641. package/dist/esm/{swipe-back-qmvTRnSq.js → swipe-back-DQ1q5MgD.js} +2 -3
  642. package/dist/esm/{theme-DaJxRxSQ.js → theme-DiVJyqlX.js} +1 -25
  643. package/dist/esm/validity-DJztqcrH.js +17 -0
  644. package/dist/html.html-data.json +161 -2700
  645. package/dist/ionic/index.esm.js +1 -1
  646. package/dist/ionic/ionic.esm.js +1 -1
  647. package/dist/ionic/p-01f81ea5.entry.js +4 -0
  648. package/dist/ionic/p-06c232a4.entry.js +4 -0
  649. package/dist/ionic/p-0caa922c.entry.js +4 -0
  650. package/dist/ionic/p-0dc33652.entry.js +4 -0
  651. package/dist/ionic/p-0fa9c382.entry.js +4 -0
  652. package/dist/ionic/p-10e833ef.entry.js +4 -0
  653. package/dist/ionic/p-21eb76d5.entry.js +4 -0
  654. package/dist/ionic/p-27d30585.entry.js +4 -0
  655. package/dist/ionic/p-2a05aa64.entry.js +4 -0
  656. package/dist/ionic/p-2b204c59.entry.js +4 -0
  657. package/dist/ionic/p-2bb2cb18.entry.js +4 -0
  658. package/dist/ionic/p-2fa58e80.entry.js +4 -0
  659. package/dist/ionic/p-3353c229.entry.js +4 -0
  660. package/dist/ionic/p-34586ead.entry.js +4 -0
  661. package/dist/ionic/p-37e720da.entry.js +4 -0
  662. package/dist/ionic/p-390ca786.entry.js +4 -0
  663. package/dist/ionic/p-3ae5f277.entry.js +4 -0
  664. package/dist/ionic/p-4654ae1c.entry.js +4 -0
  665. package/dist/ionic/p-4745f534.entry.js +4 -0
  666. package/dist/ionic/p-4858af1f.entry.js +4 -0
  667. package/dist/ionic/p-4baa5b82.entry.js +4 -0
  668. package/dist/ionic/p-4e92a11f.entry.js +4 -0
  669. package/dist/ionic/p-50e1194a.entry.js +4 -0
  670. package/dist/ionic/p-5334df12.entry.js +4 -0
  671. package/dist/ionic/p-5d1da0a2.entry.js +4 -0
  672. package/dist/ionic/p-5e2f73ee.entry.js +4 -0
  673. package/dist/ionic/p-5eb8e86d.entry.js +4 -0
  674. package/dist/ionic/p-65ebdf1b.entry.js +4 -0
  675. package/dist/ionic/p-746fa988.entry.js +4 -0
  676. package/dist/ionic/p-75dc25ba.entry.js +4 -0
  677. package/dist/ionic/p-7c319341.entry.js +4 -0
  678. package/dist/ionic/p-829367ed.entry.js +4 -0
  679. package/dist/ionic/p-84d5ce05.entry.js +4 -0
  680. package/dist/ionic/p-874b4bd8.entry.js +4 -0
  681. package/dist/ionic/p-8eb8ee76.entry.js +4 -0
  682. package/dist/ionic/p-9eeaBrnk.js +4 -0
  683. package/dist/ionic/p-9f9db3a2.entry.js +4 -0
  684. package/dist/ionic/p-9fa3c405.entry.js +4 -0
  685. package/dist/ionic/p-BGqMS-oh.js +4 -0
  686. package/dist/ionic/p-BUFIpxKM.js +4 -0
  687. package/dist/ionic/p-BmVRXR1y.js +4 -0
  688. package/dist/ionic/{p-7k7Q1A38.js → p-C0eMdTCW.js} +1 -1
  689. package/dist/ionic/p-CFlfIb2g.js +4 -0
  690. package/dist/ionic/p-CIGNaXM1.js +4 -0
  691. package/{components/p-BPxMDyfV.js → dist/ionic/p-CKvCXMs9.js} +1 -1
  692. package/dist/ionic/p-CmcFnK-B.js +4 -0
  693. package/dist/ionic/p-CtWGkNnJ.js +4 -0
  694. package/dist/ionic/p-Cx3IXROA.js +4 -0
  695. package/dist/ionic/p-D-3ycHmd.js +4 -0
  696. package/dist/ionic/{p-DQDmksdT.js → p-D13Eaw-8.js} +1 -1
  697. package/dist/ionic/p-D4uTWt4-.js +4 -0
  698. package/dist/ionic/p-DC3RagnA.js +4 -0
  699. package/dist/ionic/p-DIuEbVLu.js +4 -0
  700. package/dist/ionic/p-DJztqcrH.js +4 -0
  701. package/dist/ionic/p-DV3sJJW8.js +4 -0
  702. package/dist/ionic/p-DiVJyqlX.js +4 -0
  703. package/dist/ionic/p-DoJvtrbw.js +4 -0
  704. package/dist/ionic/p-DqN5EA2O.js +4 -0
  705. package/dist/ionic/p-DzWaWHGc.js +4 -0
  706. package/dist/ionic/p-KjNvRoEp.js +4 -0
  707. package/dist/ionic/p-Nqf6uvGh.js +4 -0
  708. package/dist/ionic/p-SNAkTDfm.js +4 -0
  709. package/{components/p-PCVpe9Tq.js → dist/ionic/p-VAemlbDS.js} +1 -1
  710. package/dist/ionic/p-ZjP4CjeZ.js +4 -0
  711. package/dist/ionic/p-a3bdcae6.entry.js +4 -0
  712. package/dist/ionic/p-aaeedb6b.entry.js +4 -0
  713. package/dist/ionic/p-af55a72f.entry.js +4 -0
  714. package/dist/ionic/p-b2020591.entry.js +4 -0
  715. package/dist/ionic/p-b9fadbfe.entry.js +4 -0
  716. package/dist/ionic/p-biz8zWmJ.js +4 -0
  717. package/dist/ionic/p-c0fb8edd.entry.js +4 -0
  718. package/dist/ionic/p-c38b648e.entry.js +4 -0
  719. package/dist/ionic/p-c4d8641b.entry.js +4 -0
  720. package/dist/ionic/p-c6e49f3f.entry.js +4 -0
  721. package/dist/ionic/p-ca2ab74d.entry.js +4 -0
  722. package/dist/ionic/p-d889ff6d.entry.js +4 -0
  723. package/dist/ionic/p-dfa8d673.entry.js +4 -0
  724. package/dist/ionic/p-ea56626d.entry.js +4 -0
  725. package/dist/ionic/p-ef4c3bee.entry.js +4 -0
  726. package/dist/ionic/p-f386f6ae.entry.js +4 -0
  727. package/dist/ionic/p-mjKAFv89.js +4 -0
  728. package/dist/ionic/p-tcQvqkiX.js +5 -0
  729. package/dist/ionic/p-uWtqTrG8.js +4 -0
  730. package/dist/ionic/p-viFHDgRs.js +4 -0
  731. package/dist/ionic/p-xWb6fgfq.js +4 -0
  732. package/dist/types/components/accordion/accordion.d.ts +3 -6
  733. package/dist/types/components/accordion-group/accordion-group.d.ts +1 -12
  734. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +7 -3
  735. package/dist/types/components/action-sheet/action-sheet.d.ts +2 -3
  736. package/dist/types/components/alert/alert-interface.d.ts +7 -3
  737. package/dist/types/components/alert/alert.d.ts +2 -3
  738. package/dist/types/components/app/app.d.ts +5 -4
  739. package/dist/types/components/avatar/avatar.d.ts +0 -32
  740. package/dist/types/components/back-button/back-button.d.ts +1 -2
  741. package/dist/types/components/backdrop/backdrop.d.ts +0 -4
  742. package/dist/types/components/badge/badge.d.ts +1 -34
  743. package/dist/types/components/breadcrumb/breadcrumb.d.ts +1 -4
  744. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
  745. package/dist/types/components/button/button.d.ts +8 -23
  746. package/dist/types/components/buttons/buttons.d.ts +1 -5
  747. package/dist/types/components/card/card.d.ts +1 -8
  748. package/dist/types/components/card-content/card-content.d.ts +1 -2
  749. package/dist/types/components/card-header/card-header.d.ts +2 -3
  750. package/dist/types/components/card-subtitle/card-subtitle.d.ts +1 -2
  751. package/dist/types/components/card-title/card-title.d.ts +1 -2
  752. package/dist/types/components/checkbox/checkbox.d.ts +4 -14
  753. package/dist/types/components/chip/chip.d.ts +1 -26
  754. package/dist/types/components/col/col.d.ts +5 -52
  755. package/dist/types/components/content/content.d.ts +12 -3
  756. package/dist/types/components/datetime/datetime.d.ts +6 -27
  757. package/dist/types/components/datetime/utils/data.d.ts +5 -5
  758. package/dist/types/components/datetime-button/datetime-button.d.ts +1 -2
  759. package/dist/types/components/fab/fab.d.ts +0 -4
  760. package/dist/types/components/fab-button/fab-button.d.ts +3 -5
  761. package/dist/types/components/fab-list/fab-list.d.ts +0 -4
  762. package/dist/types/components/footer/footer.d.ts +3 -20
  763. package/dist/types/components/grid/grid.d.ts +0 -4
  764. package/dist/types/components/header/header.d.ts +3 -26
  765. package/dist/types/components/header/header.utils.d.ts +5 -4
  766. package/dist/types/components/img/img.d.ts +0 -3
  767. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +0 -21
  768. package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +0 -4
  769. package/dist/types/components/input/input.d.ts +5 -37
  770. package/dist/types/components/input-otp/input-otp.d.ts +0 -37
  771. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +0 -2
  772. package/dist/types/components/item/item.d.ts +4 -11
  773. package/dist/types/components/item-divider/item-divider.d.ts +1 -2
  774. package/dist/types/components/item-group/item-group.d.ts +0 -4
  775. package/dist/types/components/item-option/item-option.d.ts +1 -18
  776. package/dist/types/components/item-options/item-options.d.ts +0 -4
  777. package/dist/types/components/item-sliding/item-sliding.d.ts +1 -47
  778. package/dist/types/components/item-sliding/test/test.utils.d.ts +0 -13
  779. package/dist/types/components/label/label.d.ts +1 -2
  780. package/dist/types/components/list/list.d.ts +1 -15
  781. package/dist/types/components/list-header/list-header.d.ts +1 -2
  782. package/dist/types/components/loading/loading-interface.d.ts +7 -2
  783. package/dist/types/components/loading/loading.d.ts +2 -3
  784. package/dist/types/components/menu/menu.d.ts +0 -3
  785. package/dist/types/components/menu-button/menu-button.d.ts +1 -3
  786. package/dist/types/components/menu-toggle/menu-toggle.d.ts +0 -3
  787. package/dist/types/components/modal/gestures/sheet.d.ts +2 -1
  788. package/dist/types/components/modal/gestures/utils.d.ts +11 -0
  789. package/dist/types/components/modal/modal-interface.d.ts +7 -4
  790. package/dist/types/components/modal/modal.d.ts +7 -14
  791. package/dist/types/components/modal/safe-area-utils.d.ts +6 -0
  792. package/dist/types/components/nav/nav-interface.d.ts +1 -9
  793. package/dist/types/components/nav/nav.d.ts +1 -5
  794. package/dist/types/components/nav-link/nav-link.d.ts +0 -4
  795. package/dist/types/components/note/note.d.ts +1 -2
  796. package/dist/types/components/picker/picker.d.ts +1 -2
  797. package/dist/types/components/picker-column/picker-column.d.ts +1 -2
  798. package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -4
  799. package/dist/types/components/picker-legacy/picker.d.ts +1 -2
  800. package/dist/types/components/popover/popover-interface.d.ts +6 -3
  801. package/dist/types/components/popover/popover.d.ts +5 -6
  802. package/dist/types/components/progress-bar/progress-bar.d.ts +1 -10
  803. package/dist/types/components/radio/radio.d.ts +1 -2
  804. package/dist/types/components/radio-group/radio-group.d.ts +0 -12
  805. package/dist/types/components/range/range.d.ts +1 -2
  806. package/dist/types/components/refresher/refresher.d.ts +1 -2
  807. package/dist/types/components/refresher-content/refresher-content.d.ts +0 -4
  808. package/dist/types/components/reorder/reorder.d.ts +0 -9
  809. package/dist/types/components/reorder-group/reorder-group.d.ts +0 -4
  810. package/dist/types/components/ripple-effect/ripple-effect.d.ts +0 -4
  811. package/dist/types/components/route/route.d.ts +0 -4
  812. package/dist/types/components/router/router.d.ts +0 -4
  813. package/dist/types/components/router-link/router-link.d.ts +0 -4
  814. package/dist/types/components/router-outlet/router-outlet.d.ts +1 -4
  815. package/dist/types/components/row/row.d.ts +0 -4
  816. package/dist/types/components/searchbar/searchbar.d.ts +10 -59
  817. package/dist/types/components/segment/segment.d.ts +1 -2
  818. package/dist/types/components/segment-button/segment-button.d.ts +1 -2
  819. package/dist/types/components/select/select-interface.d.ts +0 -31
  820. package/dist/types/components/select/select.d.ts +13 -66
  821. package/dist/types/components/select-modal/select-modal.d.ts +0 -8
  822. package/dist/types/components/select-option/select-option.d.ts +1 -45
  823. package/dist/types/components/select-popover/select-popover.d.ts +0 -3
  824. package/dist/types/components/skeleton-text/skeleton-text.d.ts +0 -4
  825. package/dist/types/components/spinner/spinner.d.ts +0 -15
  826. package/dist/types/components/split-pane/split-pane.d.ts +0 -4
  827. package/dist/types/components/tab/tab.d.ts +0 -4
  828. package/dist/types/components/tab-bar/tab-bar-interface.d.ts +0 -1
  829. package/dist/types/components/tab-bar/tab-bar.d.ts +3 -41
  830. package/dist/types/components/tab-button/tab-button.d.ts +1 -12
  831. package/dist/types/components/tabs/tabs.d.ts +0 -3
  832. package/dist/types/components/text/text.d.ts +1 -2
  833. package/dist/types/components/textarea/textarea.d.ts +4 -53
  834. package/dist/types/components/thumbnail/thumbnail.d.ts +0 -4
  835. package/dist/types/components/title/title.d.ts +0 -4
  836. package/dist/types/components/toast/animations/utils.d.ts +2 -2
  837. package/dist/types/components/toast/toast-interface.d.ts +7 -3
  838. package/dist/types/components/toast/toast.d.ts +2 -19
  839. package/dist/types/components/toggle/toggle.d.ts +1 -15
  840. package/dist/types/components/toolbar/toolbar.d.ts +3 -43
  841. package/dist/types/components.d.ts +212 -1883
  842. package/dist/types/global/ionic-global.d.ts +2 -28
  843. package/dist/types/interface.d.ts +0 -3
  844. package/dist/types/utils/config.d.ts +2 -106
  845. package/dist/types/utils/content/index.d.ts +12 -0
  846. package/dist/types/utils/focus-trap.d.ts +1 -1
  847. package/dist/types/utils/focus-visible.d.ts +0 -13
  848. package/dist/types/utils/forms/validity.d.ts +0 -7
  849. package/dist/types/utils/helpers.d.ts +0 -22
  850. package/dist/types/utils/overlays-interface.d.ts +1 -31
  851. package/dist/types/utils/overlays.d.ts +1 -1
  852. package/dist/types/utils/sanitization/index.d.ts +2 -58
  853. package/dist/types/utils/test/playwright/drag-element.d.ts +3 -16
  854. package/dist/types/utils/test/playwright/generator.d.ts +2 -31
  855. package/dist/types/utils/theme.d.ts +0 -9
  856. package/hydrate/index.js +1555 -6458
  857. package/hydrate/index.mjs +1555 -6458
  858. package/package.json +7 -10
  859. package/components/ion-divider.d.ts +0 -11
  860. package/components/ion-divider.js +0 -4
  861. package/components/ion-gallery-item.d.ts +0 -11
  862. package/components/ion-gallery-item.js +0 -4
  863. package/components/ion-gallery.d.ts +0 -11
  864. package/components/ion-gallery.js +0 -4
  865. package/components/p-3VXQGlP7.js +0 -4
  866. package/components/p-B2SvA6NE.js +0 -4
  867. package/components/p-B5krYTuW.js +0 -4
  868. package/components/p-B6a9IJZ0.js +0 -4
  869. package/components/p-BArGQkuV.js +0 -4
  870. package/components/p-BDqjX7Z_.js +0 -4
  871. package/components/p-BG-Q139o.js +0 -4
  872. package/components/p-BWH3I3Dl.js +0 -4
  873. package/components/p-BYSs-jZz.js +0 -4
  874. package/components/p-BbVhJs-a.js +0 -4
  875. package/components/p-Bc6odfwr.js +0 -4
  876. package/components/p-BjW8SOqw.js +0 -4
  877. package/components/p-BkWXBpOv.js +0 -4
  878. package/components/p-Bt9GDUv-.js +0 -4
  879. package/components/p-BvNVjXg4.js +0 -4
  880. package/components/p-BwKpO3Is.js +0 -4
  881. package/components/p-BwlU9cX_.js +0 -4
  882. package/components/p-CBxy8OYq.js +0 -4
  883. package/components/p-CGdeq57o.js +0 -4
  884. package/components/p-CHPdgLHZ.js +0 -4
  885. package/components/p-CMZlqiT7.js +0 -4
  886. package/components/p-CMzkbes2.js +0 -4
  887. package/components/p-CODBQrPj.js +0 -4
  888. package/components/p-COPA4jD9.js +0 -4
  889. package/components/p-CPnW-OVE.js +0 -4
  890. package/components/p-CRmBpp1v.js +0 -4
  891. package/components/p-CT3P-wjL.js +0 -4
  892. package/components/p-CVYFPBs-.js +0 -4
  893. package/components/p-CVqhQif1.js +0 -4
  894. package/components/p-Cc3oC60a.js +0 -4
  895. package/components/p-CjY4Hs1X.js +0 -4
  896. package/components/p-CrYjk-l3.js +0 -4
  897. package/components/p-CsUcWJuB.js +0 -4
  898. package/components/p-D0Iqw6OZ.js +0 -4
  899. package/components/p-D1kNlmYt.js +0 -4
  900. package/components/p-D1t981Ih.js +0 -4
  901. package/components/p-D9C5yWpF.js +0 -4
  902. package/components/p-DDNG-IsR.js +0 -4
  903. package/components/p-DJSp7Si8.js +0 -4
  904. package/components/p-DL5wyRub.js +0 -4
  905. package/components/p-DXKZXLjV.js +0 -4
  906. package/components/p-DaJxRxSQ.js +0 -4
  907. package/components/p-Dhi5xtNS.js +0 -4
  908. package/components/p-Do8qRv6r.js +0 -4
  909. package/components/p-Dt--PjSF.js +0 -4
  910. package/components/p-DylrHLJF.js +0 -4
  911. package/components/p-FCT_QxQG.js +0 -4
  912. package/components/p-OCde3AhO.js +0 -4
  913. package/components/p-OPFCgx0m.js +0 -4
  914. package/components/p-Rkm2AOZ2.js +0 -4
  915. package/components/p-WSZErkoI.js +0 -4
  916. package/components/p-bHSMZulH.js +0 -4
  917. package/components/p-fIOYmaqA.js +0 -4
  918. package/components/p-hNcst9K9.js +0 -4
  919. package/components/p-hW_3y-wm.js +0 -4
  920. package/components/p-nLMDgmzd.js +0 -4
  921. package/components/p-oI96rnOD.js +0 -4
  922. package/components/p-r_CFQBc1.js +0 -4
  923. package/components/p-vXpMhGrs.js +0 -4
  924. package/components/p-zBZRdRDd.js +0 -4
  925. package/css/ionic/bundle.ionic.css +0 -1
  926. package/css/ionic/bundle.ionic.css.map +0 -1
  927. package/css/ionic/core.ionic.css +0 -1
  928. package/css/ionic/core.ionic.css.map +0 -1
  929. package/css/ionic/global.bundle.ionic.css +0 -1
  930. package/css/ionic/global.bundle.ionic.css.map +0 -1
  931. package/css/ionic/ionic-swiper.ionic.css +0 -1
  932. package/css/ionic/ionic-swiper.ionic.css.map +0 -1
  933. package/css/ionic/link.ionic.css +0 -1
  934. package/css/ionic/link.ionic.css.map +0 -1
  935. package/css/ionic/structure.ionic.css +0 -1
  936. package/css/ionic/structure.ionic.css.map +0 -1
  937. package/css/ionic/typography.ionic.css +0 -1
  938. package/css/ionic/typography.ionic.css.map +0 -1
  939. package/css/ionic/utils.bundle.ionic.css +0 -1
  940. package/css/ionic/utils.bundle.ionic.css.map +0 -1
  941. package/dist/cjs/caret-down-vtVgfXIs.js +0 -8
  942. package/dist/cjs/caret-left-CxZXLRv5.js +0 -8
  943. package/dist/cjs/caret-right-CRCgv98E.js +0 -8
  944. package/dist/cjs/config-DWdFbSNK.js +0 -35
  945. package/dist/cjs/index-Bj07IRTB.js +0 -429
  946. package/dist/cjs/ion-divider.cjs.entry.js +0 -51
  947. package/dist/cjs/ion-gallery-item.cjs.entry.js +0 -59
  948. package/dist/cjs/ion-gallery.cjs.entry.js +0 -607
  949. package/dist/cjs/ionic-global-QoUqobrQ.js +0 -519
  950. package/dist/cjs/list-a-7GSA6K.js +0 -8
  951. package/dist/cjs/overlay-control-label-DnRLQR1t.js +0 -52
  952. package/dist/cjs/scroll-hide-controller-G9HOmmhN.js +0 -345
  953. package/dist/cjs/select-option-render-DqBHEjDn.js +0 -124
  954. package/dist/cjs/validity-QmuwEptc.js +0 -51
  955. package/dist/cjs/x-BTF99yFH.js +0 -8
  956. package/dist/collection/components/accordion/accordion.ionic.css +0 -201
  957. package/dist/collection/components/accordion-group/accordion-group.ionic.css +0 -93
  958. package/dist/collection/components/action-sheet/action-sheet.ionic.css +0 -494
  959. package/dist/collection/components/alert/alert.ionic.css +0 -787
  960. package/dist/collection/components/avatar/avatar.ionic.css +0 -385
  961. package/dist/collection/components/backdrop/backdrop.ionic.css +0 -109
  962. package/dist/collection/components/badge/badge.ionic.css +0 -272
  963. package/dist/collection/components/button/button.ionic.css +0 -644
  964. package/dist/collection/components/buttons/buttons.ionic.css +0 -97
  965. package/dist/collection/components/card/card.ionic.css +0 -144
  966. package/dist/collection/components/card-content/card-content.ionic.css +0 -89
  967. package/dist/collection/components/card-header/card-header.ionic.css +0 -85
  968. package/dist/collection/components/card-subtitle/card-subtitle.ionic.css +0 -144
  969. package/dist/collection/components/checkbox/checkbox.ionic.css +0 -543
  970. package/dist/collection/components/chip/chip.ionic.css +0 -217
  971. package/dist/collection/components/datetime/datetime.ionic.css +0 -703
  972. package/dist/collection/components/divider/divider.ionic.css +0 -148
  973. package/dist/collection/components/divider/divider.ios.css +0 -87
  974. package/dist/collection/components/divider/divider.js +0 -94
  975. package/dist/collection/components/divider/divider.md.css +0 -87
  976. package/dist/collection/components/footer/footer-interface.js +0 -1
  977. package/dist/collection/components/gallery/gallery-constants.js +0 -12
  978. package/dist/collection/components/gallery/gallery-interface.js +0 -1
  979. package/dist/collection/components/gallery/gallery.css +0 -15
  980. package/dist/collection/components/gallery/gallery.js +0 -679
  981. package/dist/collection/components/gallery/test/utils.js +0 -100
  982. package/dist/collection/components/gallery-item/gallery-item.css +0 -49
  983. package/dist/collection/components/gallery-item/gallery-item.js +0 -99
  984. package/dist/collection/components/header/header-interface.js +0 -1
  985. package/dist/collection/components/header/header.ionic.css +0 -250
  986. package/dist/collection/components/input/input.ionic.css +0 -891
  987. package/dist/collection/components/input-otp/input-otp.ionic.css +0 -371
  988. package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +0 -78
  989. package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +0 -61
  990. package/dist/collection/components/item/item.ionic.css +0 -496
  991. package/dist/collection/components/item-option/item-option.ionic.css +0 -277
  992. package/dist/collection/components/item-options/item-options.ionic.css +0 -221
  993. package/dist/collection/components/item-sliding/item-sliding.ionic.css +0 -211
  994. package/dist/collection/components/list/list.ionic.css +0 -212
  995. package/dist/collection/components/list-header/list-header.ionic.css +0 -190
  996. package/dist/collection/components/menu-button/menu-button.ionic.css +0 -236
  997. package/dist/collection/components/modal/animations/ionic.enter.js +0 -40
  998. package/dist/collection/components/modal/animations/ionic.leave.js +0 -28
  999. package/dist/collection/components/modal/modal.ionic.css +0 -255
  1000. package/dist/collection/components/popover/popover.ionic.css +0 -290
  1001. package/dist/collection/components/progress-bar/progress-bar.ionic.css +0 -287
  1002. package/dist/collection/components/radio/radio.ionic.css +0 -422
  1003. package/dist/collection/components/radio-group/radio-group.ionic.css +0 -119
  1004. package/dist/collection/components/range/range.ionic.css +0 -567
  1005. package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +0 -215
  1006. package/dist/collection/components/searchbar/searchbar.ionic.css +0 -622
  1007. package/dist/collection/components/segment/segment.ionic.css +0 -115
  1008. package/dist/collection/components/segment-button/segment-button.ionic.css +0 -352
  1009. package/dist/collection/components/select/select.ionic.css +0 -809
  1010. package/dist/collection/components/select-modal/select-modal.ionic.css +0 -257
  1011. package/dist/collection/components/select-popover/select-popover.ionic.css +0 -255
  1012. package/dist/collection/components/spinner/spinner.native.css +0 -199
  1013. package/dist/collection/components/tab-bar/tab-bar.ionic.css +0 -249
  1014. package/dist/collection/components/tab-button/tab-button.ionic.css +0 -373
  1015. package/dist/collection/components/textarea/textarea.ionic.css +0 -898
  1016. package/dist/collection/components/title/title.ionic.css +0 -127
  1017. package/dist/collection/components/toast/toast.ionic.css +0 -394
  1018. package/dist/collection/components/toggle/toggle.ionic.css +0 -512
  1019. package/dist/collection/components/toolbar/test/image.svg +0 -1
  1020. package/dist/collection/components/toolbar/toolbar.ionic.css +0 -249
  1021. package/dist/collection/utils/css-value-validation.js +0 -39
  1022. package/dist/collection/utils/overlay-control-label.js +0 -47
  1023. package/dist/collection/utils/scroll-hide-controller.js +0 -178
  1024. package/dist/collection/utils/select-option-render.js +0 -119
  1025. package/dist/esm/caret-down-D1t981Ih.js +0 -6
  1026. package/dist/esm/caret-left-fIOYmaqA.js +0 -6
  1027. package/dist/esm/caret-right-BYSs-jZz.js +0 -6
  1028. package/dist/esm/config-BwKpO3Is.js +0 -31
  1029. package/dist/esm/index-Mq5pCWmZ.js +0 -424
  1030. package/dist/esm/ion-divider.entry.js +0 -49
  1031. package/dist/esm/ion-gallery-item.entry.js +0 -57
  1032. package/dist/esm/ion-gallery.entry.js +0 -605
  1033. package/dist/esm/ionic-global-BpkTponr.js +0 -508
  1034. package/dist/esm/list-Dhi5xtNS.js +0 -6
  1035. package/dist/esm/overlay-control-label-CODBQrPj.js +0 -49
  1036. package/dist/esm/scroll-hide-controller-CUNW7EpD.js +0 -342
  1037. package/dist/esm/select-option-render-BlKZ2H83.js +0 -122
  1038. package/dist/esm/validity-BjW8SOqw.js +0 -48
  1039. package/dist/esm/x-BDqjX7Z_.js +0 -6
  1040. package/dist/ionic/p--sroV-k-.js +0 -4
  1041. package/dist/ionic/p-05ce9821.entry.js +0 -4
  1042. package/dist/ionic/p-085b8cdf.entry.js +0 -4
  1043. package/dist/ionic/p-0ef6bfc4.entry.js +0 -4
  1044. package/dist/ionic/p-176d37f8.entry.js +0 -4
  1045. package/dist/ionic/p-18b7771e.entry.js +0 -4
  1046. package/dist/ionic/p-19f34fe5.entry.js +0 -4
  1047. package/dist/ionic/p-1b6e3914.entry.js +0 -4
  1048. package/dist/ionic/p-2740db6e.entry.js +0 -4
  1049. package/dist/ionic/p-2a1abbb1.entry.js +0 -4
  1050. package/dist/ionic/p-2d9c681b.entry.js +0 -4
  1051. package/dist/ionic/p-2fba8f15.entry.js +0 -4
  1052. package/dist/ionic/p-3886bfbe.entry.js +0 -4
  1053. package/dist/ionic/p-3ab9c35a.entry.js +0 -4
  1054. package/dist/ionic/p-3b4c5cb5.entry.js +0 -4
  1055. package/dist/ionic/p-3cfb4ff2.entry.js +0 -4
  1056. package/dist/ionic/p-41afaf15.entry.js +0 -4
  1057. package/dist/ionic/p-47b9dac0.entry.js +0 -4
  1058. package/dist/ionic/p-54419365.entry.js +0 -4
  1059. package/dist/ionic/p-54b7972e.entry.js +0 -4
  1060. package/dist/ionic/p-602cf876.entry.js +0 -4
  1061. package/dist/ionic/p-678ee14a.entry.js +0 -4
  1062. package/dist/ionic/p-679c1448.entry.js +0 -4
  1063. package/dist/ionic/p-68ea8ed1.entry.js +0 -4
  1064. package/dist/ionic/p-6e1ec775.entry.js +0 -4
  1065. package/dist/ionic/p-745d6b2b.entry.js +0 -4
  1066. package/dist/ionic/p-77254b78.entry.js +0 -4
  1067. package/dist/ionic/p-89fedfda.entry.js +0 -4
  1068. package/dist/ionic/p-8cf82b85.entry.js +0 -4
  1069. package/dist/ionic/p-8d5fd199.entry.js +0 -4
  1070. package/dist/ionic/p-9087119f.entry.js +0 -4
  1071. package/dist/ionic/p-9c508a22.entry.js +0 -4
  1072. package/dist/ionic/p-B4Kq2YNk.js +0 -4
  1073. package/dist/ionic/p-BDSH5ckF.js +0 -4
  1074. package/dist/ionic/p-BDqjX7Z_.js +0 -4
  1075. package/dist/ionic/p-BFy_BK46.js +0 -4
  1076. package/dist/ionic/p-BYSs-jZz.js +0 -4
  1077. package/dist/ionic/p-BjW8SOqw.js +0 -4
  1078. package/dist/ionic/p-BlZo7Gy-.js +0 -4
  1079. package/dist/ionic/p-Bq8S4vhI.js +0 -4
  1080. package/dist/ionic/p-BwKpO3Is.js +0 -4
  1081. package/dist/ionic/p-C0EQceqV.js +0 -5
  1082. package/dist/ionic/p-C1I_d964.js +0 -4
  1083. package/dist/ionic/p-CB91Gr9M.js +0 -4
  1084. package/dist/ionic/p-CEkwLb3L.js +0 -4
  1085. package/dist/ionic/p-CJsJQPQD.js +0 -4
  1086. package/dist/ionic/p-CODBQrPj.js +0 -4
  1087. package/dist/ionic/p-Ch7MBNn_.js +0 -4
  1088. package/dist/ionic/p-CnAWnbNK.js +0 -4
  1089. package/dist/ionic/p-D1t981Ih.js +0 -4
  1090. package/dist/ionic/p-D4MT1z4_.js +0 -4
  1091. package/dist/ionic/p-D4veLKCq.js +0 -4
  1092. package/dist/ionic/p-DF7ubVci.js +0 -4
  1093. package/dist/ionic/p-DMaSfupH.js +0 -4
  1094. package/dist/ionic/p-DTsDGZPd.js +0 -4
  1095. package/dist/ionic/p-DaJxRxSQ.js +0 -4
  1096. package/dist/ionic/p-DdCaKRle.js +0 -4
  1097. package/dist/ionic/p-Dhi5xtNS.js +0 -4
  1098. package/dist/ionic/p-Dy243NXW.js +0 -4
  1099. package/dist/ionic/p-YIsE5bNG.js +0 -4
  1100. package/dist/ionic/p-a4af8e39.entry.js +0 -4
  1101. package/dist/ionic/p-b2368a93.entry.js +0 -4
  1102. package/dist/ionic/p-b275f17e.entry.js +0 -4
  1103. package/dist/ionic/p-c5635175.entry.js +0 -4
  1104. package/dist/ionic/p-c76d57fb.entry.js +0 -4
  1105. package/dist/ionic/p-ca3a07b5.entry.js +0 -4
  1106. package/dist/ionic/p-ced3cda1.entry.js +0 -4
  1107. package/dist/ionic/p-cf22e991.entry.js +0 -4
  1108. package/dist/ionic/p-d0c1d21d.entry.js +0 -4
  1109. package/dist/ionic/p-d0d42da6.entry.js +0 -4
  1110. package/dist/ionic/p-d1de76b8.entry.js +0 -4
  1111. package/dist/ionic/p-d33dfc12.entry.js +0 -4
  1112. package/dist/ionic/p-d34bfb61.entry.js +0 -4
  1113. package/dist/ionic/p-dbc08f67.entry.js +0 -4
  1114. package/dist/ionic/p-dc8e0b91.entry.js +0 -4
  1115. package/dist/ionic/p-df642ef5.entry.js +0 -4
  1116. package/dist/ionic/p-e04d63e1.entry.js +0 -4
  1117. package/dist/ionic/p-e3615478.entry.js +0 -4
  1118. package/dist/ionic/p-f1810d29.entry.js +0 -4
  1119. package/dist/ionic/p-f1a8aead.entry.js +0 -4
  1120. package/dist/ionic/p-f69af9d3.entry.js +0 -4
  1121. package/dist/ionic/p-f8001f8f.entry.js +0 -4
  1122. package/dist/ionic/p-f8b63ebb.entry.js +0 -4
  1123. package/dist/ionic/p-fIOYmaqA.js +0 -4
  1124. package/dist/ionic/p-fc6d26ff.entry.js +0 -4
  1125. package/dist/ionic/p-im8OkZlj.js +0 -4
  1126. package/dist/ionic/p-lMb_45ax.js +0 -4
  1127. package/dist/ionic/p-oUgyLDGL.js +0 -4
  1128. package/dist/ionic/p-vXpMhGrs.js +0 -4
  1129. package/dist/types/components/divider/divider.d.ts +0 -20
  1130. package/dist/types/components/footer/footer-interface.d.ts +0 -1
  1131. package/dist/types/components/gallery/gallery-constants.d.ts +0 -9
  1132. package/dist/types/components/gallery/gallery-interface.d.ts +0 -10
  1133. package/dist/types/components/gallery/gallery.d.ts +0 -218
  1134. package/dist/types/components/gallery/test/utils.d.ts +0 -3
  1135. package/dist/types/components/gallery-item/gallery-item.d.ts +0 -33
  1136. package/dist/types/components/header/header-interface.d.ts +0 -1
  1137. package/dist/types/components/modal/animations/ionic.enter.d.ts +0 -6
  1138. package/dist/types/components/modal/animations/ionic.leave.d.ts +0 -6
  1139. package/dist/types/utils/css-value-validation.d.ts +0 -21
  1140. package/dist/types/utils/overlay-control-label.d.ts +0 -34
  1141. package/dist/types/utils/scroll-hide-controller.d.ts +0 -56
  1142. package/dist/types/utils/select-option-render.d.ts +0 -53
  1143. /package/dist/collection/components/{refresher-content/refresher-content.css → input-password-toggle/input-password-toggle.css} +0 -0
@@ -3,20 +3,21 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-GZU9YrFc.js');
7
- var focusVisible = require('./focus-visible-BIj-I3-C.js');
8
- var ionicGlobal = require('./ionic-global-QoUqobrQ.js');
9
- var helpers = require('./helpers-DiOgV5hw.js');
6
+ var index = require('./index-BfaXsATC.js');
7
+ var hardwareBackButton = require('./hardware-back-button-CXmUnTJC.js');
8
+ var ionicGlobal = require('./ionic-global-BerQGEpE.js');
9
+ var helpers = require('./helpers-gntk8bfm.js');
10
10
  var dir = require('./dir-Cn0z1rJH.js');
11
- var theme = require('./theme-IlOsGAz7.js');
12
- var index$1 = require('./index-BxEZd5IE.js');
13
- var scrollHideController = require('./scroll-hide-controller-G9HOmmhN.js');
11
+ var theme = require('./theme-CeDs6Hcv.js');
12
+ var index$1 = require('./index-BiRrzGDi.js');
13
+ var keyboardController = require('./keyboard-controller-GXBiBRKS.js');
14
14
  var cubicBezier = require('./cubic-bezier-DAjy1V-e.js');
15
- var frameworkDelegate = require('./framework-delegate-DC5nq_NN.js');
15
+ var frameworkDelegate = require('./framework-delegate-BgU6U9Ez.js');
16
16
  var lockController = require('./lock-controller-aDB9wrEf.js');
17
- var index$2 = require('./index-BaJ7_YbC.js');
18
- require('./keyboard-Bn0Ppim6.js');
19
- require('./capacitor-CQSg1uCo.js');
17
+ var index$2 = require('./index-BS2uhvhT.js');
18
+ require('./index-DkNv4J_i.js');
19
+ require('./keyboard-UuAS4D_9.js');
20
+ require('./capacitor-DmA66EwP.js');
20
21
 
21
22
  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}`;
22
23
 
@@ -24,6 +25,51 @@ const App = class {
24
25
  constructor(hostRef) {
25
26
  index.registerInstance(this, hostRef);
26
27
  }
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-BhhuJ1Yx.js'); }).then((module) => module.startTapClick(index.config));
34
+ }
35
+ if (index.config.getBoolean('statusTap', isHybrid)) {
36
+ Promise.resolve().then(function () { return require('./status-tap-CSvBT7FV.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-Bn1cXfCM.js'); }).then((module) => module.startInputShims(index.config, platform));
45
+ }
46
+ const hardwareBackButtonModule = await Promise.resolve().then(function () { return require('./hardware-back-button-CXmUnTJC.js'); });
47
+ const supportsHardwareBackButtonEvents = isHybrid || hardwareBackButton.shouldUseCloseWatcher();
48
+ if (index.config.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {
49
+ hardwareBackButtonModule.startHardwareBackButton();
50
+ }
51
+ else {
52
+ /**
53
+ * If an app sets hardwareBackButton: false and experimentalCloseWatcher: true
54
+ * then the close watcher will not be used.
55
+ */
56
+ if (hardwareBackButton.shouldUseCloseWatcher()) {
57
+ index.printIonWarning('[ion-app] - experimentalCloseWatcher was set to `true`, but hardwareBackButton was set to `false`. Both config options must be `true` for the Close Watcher API to be used.');
58
+ }
59
+ hardwareBackButtonModule.blockHardwareBackButton();
60
+ }
61
+ if (typeof window !== 'undefined') {
62
+ Promise.resolve().then(function () { return require('./keyboard-hHzlEQpk.js'); }).then((module) => module.startKeyboardAssist(window));
63
+ }
64
+ Promise.resolve().then(function () { return require('./focus-visible-CCvKiLh3.js'); }).then((module) => (this.focusVisible = module.startFocusVisible()));
65
+ });
66
+ }
67
+ }
68
+ disconnectedCallback() {
69
+ if (this.loadTimeout) {
70
+ clearTimeout(this.loadTimeout);
71
+ }
72
+ }
27
73
  /**
28
74
  * Used to set focus on an element that uses `ion-focusable`.
29
75
  * Do not use this if focusing the element as a result of a keyboard
@@ -36,29 +82,52 @@ const App = class {
36
82
  * @param elements An array of HTML elements to set focus on.
37
83
  */
38
84
  async setFocus(elements) {
39
- /**
40
- * The focus-visible utility is used to set focus on an
41
- * element that uses `ion-focusable`.
42
- */
43
- focusVisible.focusElements(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
+ }
44
96
  }
45
97
  render() {
46
- const theme = ionicGlobal.getIonTheme(this);
47
- return (index.h(index.Host, { key: '3b7e84c7c4187287123413f90838cda89136b2a4', class: {
48
- [theme]: true,
98
+ const mode = ionicGlobal.getIonMode(this);
99
+ return (index.h(index.Host, { key: '77a7459d3e42b3715a5a7e1cf468e2ebc99e54bb', class: {
100
+ [mode]: true,
49
101
  'ion-page': true,
50
102
  'force-statusbar-padding': index.config.getBoolean('_forceStatusbarPadding'),
51
103
  } }));
52
104
  }
53
105
  get el() { return index.getElement(this); }
54
106
  };
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
+ };
55
126
  App.style = appCss();
56
127
 
57
- const buttonsIonicCss = () => `.sc-ion-buttons-ionic-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0)}.sc-ion-buttons-ionic-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ionic-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ionic-s .button-clear{--color:var(--token-text-default, var(--token-primitives-neutral-1200, #242424));--background:transparent;--background-activated:transparent;--background-focused:transparent;--background-hover:transparent}.sc-ion-buttons-ionic-s .button-has-icon-only{width:var(--token-scale-1000, 40px);height:var(--token-scale-1000, 40px)}.sc-ion-buttons-ionic-s ion-icon[slot=icon-only]{font-size:var(--token-font-size-500, 1.25rem)}`;
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}`;
58
129
 
59
- const buttonsIosCss = () => `.sc-ion-buttons-ios-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0)}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-h{z-index:99}.sc-ion-buttons-ios-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-ios-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:5px;--padding-end:5px;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-ios-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-ios-s ion-button:not(.button-round){--border-radius:4px}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button{--color:initial;--border-color:initial;--background-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-solid,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-solid{--background:var(--ion-color-contrast);--background-focused:#000;--background-focused-opacity:0.12;--background-activated:#000;--background-activated-opacity:0.12;--background-hover:var(--ion-color-base);--background-hover-opacity:0.45;--color:var(--ion-color-base);--color-focused:var(--ion-color-base)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-clear,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-clear{--color-activated:var(--ion-color-contrast);--color-focused:var(--ion-color-contrast)}.sc-ion-buttons-ios-h.ion-color.sc-ion-buttons-ios-s .button-outline,.ion-color .sc-ion-buttons-ios-h.sc-ion-buttons-ios-s .button-outline{--color-activated:var(--ion-color-base);--color-focused:var(--ion-color-contrast);--background-activated:var(--ion-color-contrast)}.sc-ion-buttons-ios-s .button-clear,.sc-ion-buttons-ios-s .button-outline{--background-activated:transparent;--background-focused:currentColor;--background-hover:transparent}.sc-ion-buttons-ios-s .button-solid:not(.ion-color){--background-focused:#000;--background-focused-opacity:0.12;--background-activated:#000;--background-activated-opacity:0.12}.sc-ion-buttons-ios-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.41em;line-height:0.67}.sc-ion-buttons-ios-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.65em;line-height:0.67}`;
60
-
61
- const buttonsMdCss = () => `.sc-ion-buttons-md-h{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0)}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-h{z-index:99}.sc-ion-buttons-md-s ion-button{--padding-top:0;--padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-buttons-md-s ion-button{--padding-top:3px;--padding-bottom:3px;--padding-start:8px;--padding-end:8px;--box-shadow:none;-webkit-margin-start:2px;margin-inline-start:2px;-webkit-margin-end:2px;margin-inline-end:2px;min-height:32px}.sc-ion-buttons-md-s .button-has-icon-only{--padding-top:0;--padding-bottom:0}.sc-ion-buttons-md-s ion-button:not(.button-round){--border-radius:2px}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button{--color:initial;--color-focused:var(--ion-color-contrast);--color-hover:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-contrast);--background-hover:var(--ion-color-contrast)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-solid,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-solid{--background:var(--ion-color-contrast);--background-activated:transparent;--background-focused:var(--ion-color-shade);--background-hover:var(--ion-color-base);--color:var(--ion-color-base);--color-focused:var(--ion-color-base);--color-hover:var(--ion-color-base)}.sc-ion-buttons-md-h.ion-color.sc-ion-buttons-md-s .button-outline,.ion-color .sc-ion-buttons-md-h.sc-ion-buttons-md-s .button-outline{--border-color:var(--ion-color-contrast)}.sc-ion-buttons-md-s .button-has-icon-only.button-clear{--padding-top:12px;--padding-end:12px;--padding-bottom:12px;--padding-start:12px;--border-radius:50%;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:3rem;height:3rem}.sc-ion-buttons-md-s .button{--background-hover:currentColor}.sc-ion-buttons-md-s .button-solid{--color:var(--ion-toolbar-background, var(--ion-background-color, #fff));--background:var(--ion-toolbar-color, var(--ion-text-color, #424242));--background-activated:transparent;--background-focused:currentColor}.sc-ion-buttons-md-s .button-outline{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor;--border-color:currentColor}.sc-ion-buttons-md-s .button-clear{--color:initial;--background:transparent;--background-activated:transparent;--background-focused:currentColor;--background-hover:currentColor}.sc-ion-buttons-md-s ion-icon[slot=start]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=end]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-margin-start:0.4em;margin-inline-start:0.4em;font-size:1.4em}.sc-ion-buttons-md-s ion-icon[slot=icon-only]{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;font-size:1.8em}`;
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}`;
62
131
 
63
132
  const Buttons = class {
64
133
  constructor(hostRef) {
@@ -70,7 +139,7 @@ const Buttons = class {
70
139
  * first toolbar, the buttons will be hidden and will
71
140
  * only be shown once all toolbars have fully collapsed.
72
141
  *
73
- * Only applies in the `ios` theme with `collapse` set to
142
+ * Only applies in `ios` mode with `collapse` set to
74
143
  * `true` on `ion-header`.
75
144
  *
76
145
  * Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
@@ -78,20 +147,19 @@ const Buttons = class {
78
147
  this.collapse = false;
79
148
  }
80
149
  render() {
81
- const theme = ionicGlobal.getIonTheme(this);
82
- return (index.h(index.Host, { key: '95c107ba7871c801a5ef14c636dc8e2fe69debf3', class: {
83
- [theme]: true,
150
+ const mode = ionicGlobal.getIonMode(this);
151
+ return (index.h(index.Host, { key: '58c1fc5eb867d0731c63549b1ccb3ec3bbbe6e1b', class: {
152
+ [mode]: true,
84
153
  ['buttons-collapse']: this.collapse,
85
- } }, index.h("slot", { key: '58669abfce458e1344b84286d4200e305017b958' })));
154
+ } }, index.h("slot", { key: '0c8f95b9840c8fa0c4e50be84c5159620a3eb5c8' })));
86
155
  }
87
156
  };
88
157
  Buttons.style = {
89
- ionic: buttonsIonicCss(),
90
158
  ios: buttonsIosCss(),
91
159
  md: buttonsMdCss()
92
160
  };
93
161
 
94
- const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{right:0px;left:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{right:0px;left:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--internal-content-safe-area-padding-bottom, 0px));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:""}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}:host(.content-header-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll{-webkit-transition:height 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:height 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), height 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), height 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}:host(.content-header-hide-scroll-partner:not(.content-fullscreen).content-header-hide-scroll-hidden) .inner-scroll{height:calc(100% + var(--internal-header-hide-height, 0px));-webkit-transform:translateY(calc(-1 * var(--internal-header-hide-height, 0px)));transform:translateY(calc(-1 * var(--internal-header-hide-height, 0px)));-webkit-transition:height 200ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:height 200ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), height 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), height 200ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1)}:host(.content-footer-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll{-webkit-transition:height 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:height 200ms cubic-bezier(0.16, 1, 0.3, 1)}:host(.content-footer-hide-scroll-partner:not(.content-fullscreen).content-footer-hide-scroll-hidden) .inner-scroll{height:calc(100% + var(--internal-footer-hide-height, 0px));-webkit-transition:height 350ms cubic-bezier(0.4, 0, 1, 1);transition:height 350ms cubic-bezier(0.4, 0, 1, 1)}:host(.content-tab-bar-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll{-webkit-transition:height 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:height 200ms cubic-bezier(0.16, 1, 0.3, 1)}:host(.content-tab-bar-hide-scroll-partner:not(.content-fullscreen).content-tab-bar-hide-scroll-hidden) .inner-scroll{height:calc(100% + var(--internal-tab-bar-hide-height, 0px));-webkit-transition:height 350ms cubic-bezier(0.4, 0, 1, 1);transition:height 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){:host(.content-header-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll,:host(.content-header-hide-scroll-partner:not(.content-fullscreen).content-header-hide-scroll-hidden) .inner-scroll,:host(.content-footer-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll,:host(.content-footer-hide-scroll-partner:not(.content-fullscreen).content-footer-hide-scroll-hidden) .inner-scroll,:host(.content-tab-bar-hide-scroll-partner:not(.content-fullscreen)) .inner-scroll,:host(.content-tab-bar-hide-scroll-partner:not(.content-fullscreen).content-tab-bar-hide-scroll-hidden) .inner-scroll{-webkit-transition:none;transition:none}}`;
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)}`;
95
163
 
96
164
  const Content = class {
97
165
  constructor(hostRef) {
@@ -158,6 +226,9 @@ const Content = class {
158
226
  */
159
227
  this.scrollEvents = false;
160
228
  }
229
+ fullscreenChanged() {
230
+ this.setupFullscreenResizeObserver();
231
+ }
161
232
  componentWillLoad() {
162
233
  this.inheritedAttributes = helpers.inheritAriaAttributes(this.el);
163
234
  }
@@ -197,6 +268,12 @@ const Content = class {
197
268
  closestTabs.addEventListener('ionTabBarLoaded', this.tabsLoadCallback);
198
269
  }
199
270
  }
271
+ // Re-observe on reattach, since componentDidLoad only fires once.
272
+ this.setupFullscreenResizeObserver();
273
+ }
274
+ componentDidLoad() {
275
+ // The custom elements build assigns fullscreen after connectedCallback.
276
+ this.setupFullscreenResizeObserver();
200
277
  }
201
278
  disconnectedCallback() {
202
279
  this.onScrollEnd();
@@ -218,6 +295,42 @@ const Content = class {
218
295
  clearTimeout(this.resizeTimeout);
219
296
  this.resizeTimeout = null;
220
297
  }
298
+ this.destroyFullscreenResizeObserver();
299
+ }
300
+ /**
301
+ * Header and footer sizes can change after load without a window resize
302
+ * firing, so the `resize` listener alone misses those changes.
303
+ *
304
+ * Popover content is excluded because `contain: none` lets its offsets drive
305
+ * the host's own height, which would feed back into the observer.
306
+ */
307
+ setupFullscreenResizeObserver() {
308
+ if (typeof ResizeObserver === 'undefined') {
309
+ return;
310
+ }
311
+ if (!this.fullscreen || theme.hostContext('ion-popover', this.el)) {
312
+ this.destroyFullscreenResizeObserver();
313
+ return;
314
+ }
315
+ if (this.fullscreenResizeObserver !== undefined) {
316
+ return;
317
+ }
318
+ this.fullscreenResizeObserver = new ResizeObserver(() => {
319
+ // A hidden page reports a 0x0 box, which would zero the offsets. Same
320
+ // reasoning as the guard in onResize, minus its debounce so the
321
+ // correction lands in the next frame instead of 100ms later.
322
+ if (this.el.offsetParent === null) {
323
+ return;
324
+ }
325
+ this.resize();
326
+ });
327
+ this.fullscreenResizeObserver.observe(this.el);
328
+ }
329
+ destroyFullscreenResizeObserver() {
330
+ if (this.fullscreenResizeObserver !== undefined) {
331
+ this.fullscreenResizeObserver.disconnect();
332
+ this.fullscreenResizeObserver = undefined;
333
+ }
221
334
  }
222
335
  /**
223
336
  * Rotating certain devices can update
@@ -254,8 +367,9 @@ const Content = class {
254
367
  this.resize();
255
368
  }, 100);
256
369
  }
257
- shouldForceOverscroll(mode) {
370
+ shouldForceOverscroll() {
258
371
  const { forceOverscroll } = this;
372
+ const mode = ionicGlobal.getIonMode(this);
259
373
  return forceOverscroll === undefined ? mode === 'ios' && ionicGlobal.isPlatform('ios') : forceOverscroll;
260
374
  }
261
375
  resize() {
@@ -451,13 +565,12 @@ const Content = class {
451
565
  render() {
452
566
  const { fixedSlotPlacement, inheritedAttributes, isMainContent, scrollX, scrollY, el } = this;
453
567
  const rtl = dir.isRTL(el) ? 'rtl' : 'ltr';
454
- const theme$1 = ionicGlobal.getIonTheme(this);
455
- const mode = ionicGlobal.getIonMode(this, theme$1);
456
- const forceOverscroll = this.shouldForceOverscroll(mode);
457
- const transitionShadow = theme$1 === 'ios';
568
+ const mode = ionicGlobal.getIonMode(this);
569
+ const forceOverscroll = this.shouldForceOverscroll();
570
+ const transitionShadow = mode === 'ios';
458
571
  this.resize();
459
- return (index.h(index.Host, Object.assign({ key: 'd7f325c30b698dc42ec5e8c45b29e82749743cf4', role: isMainContent ? 'main' : undefined, class: theme.createColorClasses(this.color, {
460
- [theme$1]: true,
572
+ return (index.h(index.Host, Object.assign({ key: '9551c759df407b10d809171641fc6e8f14d92219', role: isMainContent ? 'main' : undefined, class: theme.createColorClasses(this.color, {
573
+ [mode]: true,
461
574
  'content-fullscreen': this.fullscreen,
462
575
  'content-sizing': theme.hostContext('ion-popover', this.el),
463
576
  overscroll: forceOverscroll,
@@ -465,14 +578,19 @@ const Content = class {
465
578
  }), style: {
466
579
  '--offset-top': `${this.cTop}px`,
467
580
  '--offset-bottom': `${this.cBottom}px`,
468
- } }, inheritedAttributes), index.h("div", { key: 'c93b2c622a69c7fd153bbe9b0c6f8c24d85ed969', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? index.h("slot", { name: "fixed" }) : null, index.h("div", { key: '1700cc94e464ad1ab1c6672270f9649e90be3a5e', class: {
581
+ } }, inheritedAttributes), index.h("div", { key: 'c6de8fd226f0d10a534eb107fe032ac155fbe68e', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? index.h("slot", { name: "fixed" }) : null, index.h("div", { key: '082fc2936061360060b48221ecb1c864a3711fa0', class: {
469
582
  'inner-scroll': true,
470
583
  'scroll-x': scrollX,
471
584
  'scroll-y': scrollY,
472
585
  overscroll: (scrollX || scrollY) && forceOverscroll,
473
- }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: 'bff713ead4f61730e3f36b5af4b771ae62bde6cd' })), transitionShadow ? (index.h("div", { class: "transition-effect" }, index.h("div", { class: "transition-cover" }), index.h("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? index.h("slot", { name: "fixed" }) : null));
586
+ }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: '0d2286206facb22696a9ca7e74a3f6b7d2397aab' })), transitionShadow ? (index.h("div", { class: "transition-effect" }, index.h("div", { class: "transition-cover" }), index.h("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? index.h("slot", { name: "fixed" }) : null));
474
587
  }
475
588
  get el() { return index.getElement(this); }
589
+ static get watchers() { return {
590
+ "fullscreen": [{
591
+ "fullscreenChanged": 0
592
+ }]
593
+ }; }
476
594
  };
477
595
  const getParentElement = (el) => {
478
596
  var _a;
@@ -496,8 +614,7 @@ const getPageElement = (el) => {
496
614
  * between the popover and the edges of the screen. But if the popover contains
497
615
  * its own page element, we should use that instead.
498
616
  */
499
- const appRootSelector = index.config.get('appRootSelector', 'ion-app');
500
- const page = el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner, .popover-content`);
617
+ const page = el.closest('ion-app, ion-page, .ion-page, page-inner, .popover-content');
501
618
  if (page) {
502
619
  return page;
503
620
  }
@@ -561,90 +678,45 @@ const handleFooterFade = (scrollEl, baseEl) => {
561
678
  });
562
679
  };
563
680
 
564
- const ionicFooterMdCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}ion-footer.footer-scroll-effect-hide{-webkit-transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1), -webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1)}ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){ion-footer.footer-scroll-effect-hide,ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transition:none;transition:none}}.footer-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.footer-md.footer-collapse-fade{-webkit-box-shadow:none;box-shadow:none}.footer-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
681
+ 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}`;
565
682
 
566
- 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}`;
567
-
568
- const footerMdCss = () => `ion-footer{display:block;position:relative;-ms-flex-order:1;order:1;width:100%;z-index:10}ion-footer.footer-toolbar-padding ion-toolbar:last-of-type{padding-bottom:var(--ion-safe-area-bottom, 0)}.footer-collapse-fade ion-toolbar{--opacity-scale:inherit}ion-footer.footer-scroll-effect-hide{-webkit-transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:-webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1);transition:transform 200ms cubic-bezier(0.16, 1, 0.3, 1), -webkit-transform 200ms cubic-bezier(0.16, 1, 0.3, 1)}ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transform:translateY(100%);transform:translateY(100%);-webkit-transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:-webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1);transition:transform 350ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 350ms cubic-bezier(0.4, 0, 1, 1)}@media (prefers-reduced-motion: reduce){ion-footer.footer-scroll-effect-hide,ion-footer.footer-scroll-effect-hide.footer-scroll-hidden{-webkit-transition:none;transition:none}}.footer-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.footer-md.footer-collapse-fade{-webkit-box-shadow:none;box-shadow:none}.footer-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
683
+ 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}`;
569
684
 
570
685
  const Footer = class {
571
686
  constructor(hostRef) {
572
687
  index.registerInstance(this, hostRef);
573
688
  this.keyboardCtrl = null;
574
689
  this.keyboardCtrlPromise = null;
575
- this.scrollHideCtrlPromise = null;
576
- this.hasWarnedCollapse = false;
577
- this.fadeSetupId = 0;
578
690
  this.keyboardVisible = false;
579
691
  /**
580
692
  * If `true`, the footer will be translucent.
581
- * Only applies when the theme is `"ios"` and the device supports
693
+ * Only applies when the mode is `"ios"` and the device supports
582
694
  * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
583
695
  *
584
696
  * Note: In order to scroll content behind the footer, the `fullscreen`
585
697
  * attribute needs to be set on the content.
586
698
  */
587
699
  this.translucent = false;
588
- this.checkCollapsibleFooter = async () => {
589
- const { scrollEffect, collapse } = this;
590
- if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
591
- this.hasWarnedCollapse = true;
592
- index.printIonWarning(`[ion-footer] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-footer scroll-effect="${collapse}">`, this.el);
593
- }
594
- const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
595
- // Skip teardown/rebuild if the effect hasn't changed.
596
- // This prevents keyboard toggles (which trigger re-renders via
597
- // @State keyboardVisible) from destroying the scroll controller
598
- // and resetting isHidden.
599
- if (effect === this.activeEffect) {
700
+ this.checkCollapsibleFooter = () => {
701
+ const mode = ionicGlobal.getIonMode(this);
702
+ if (mode !== 'ios') {
600
703
  return;
601
704
  }
602
- const hasHide = effect === 'hide';
603
- const hasFade = effect === 'fade';
705
+ const { collapse } = this;
706
+ const hasFade = collapse === 'fade';
604
707
  this.destroyCollapsibleFooter();
605
- const appRootSelector = index.config.get('appRootSelector', 'ion-app');
606
- const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
607
- const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
608
- if (hasHide && contentEl) {
609
- this.activeEffect = effect;
610
- await this.setupScrollEffectHide(contentEl);
611
- return;
612
- }
613
- // fade via the deprecated `collapse` prop is iOS-only.
614
- // fade via the new `scrollEffect` prop works in all themes.
615
- const isModeRestricted = scrollEffect === undefined && ionicGlobal.getIonTheme(this) !== 'ios';
616
- if (hasFade && !isModeRestricted) {
708
+ if (hasFade) {
709
+ const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
710
+ const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
617
711
  if (!contentEl) {
618
712
  index$1.printIonContentErrorMsg(this.el);
619
713
  return;
620
714
  }
621
715
  this.setupFadeFooter(contentEl);
622
- this.activeEffect = effect;
623
- }
624
- };
625
- this.setupScrollEffectHide = async (contentEl) => {
626
- const setupPromise = scrollHideController.createScrollHideController(contentEl, {
627
- el: this.el,
628
- cssVar: '--internal-footer-hide-height',
629
- hiddenClass: 'footer-scroll-hidden',
630
- contentPartnerClass: 'content-footer-hide-scroll-partner',
631
- contentHiddenClass: 'content-footer-hide-scroll-hidden',
632
- });
633
- this.scrollHideCtrlPromise = setupPromise;
634
- const controller = await setupPromise;
635
- if (this.scrollHideCtrlPromise === setupPromise) {
636
- this.scrollHideCtrlPromise = null;
637
- controller.init();
638
- this.scrollHideCtrl = controller;
639
716
  }
640
717
  };
641
718
  this.setupFadeFooter = async (contentEl) => {
642
- const setupId = ++this.fadeSetupId;
643
- const scrollEl = await index$1.getScrollElement(contentEl);
644
- if (this.fadeSetupId !== setupId) {
645
- return;
646
- }
647
- this.scrollEl = scrollEl;
719
+ const scrollEl = (this.scrollEl = await index$1.getScrollElement(contentEl));
648
720
  /**
649
721
  * Handle fading of toolbars on scroll
650
722
  */
@@ -662,7 +734,7 @@ const Footer = class {
662
734
  this.checkCollapsibleFooter();
663
735
  }
664
736
  async connectedCallback() {
665
- const promise = scrollHideController.createKeyboardController(async (keyboardOpen, waitForResize) => {
737
+ const promise = keyboardController.createKeyboardController(async (keyboardOpen, waitForResize) => {
666
738
  /**
667
739
  * If the keyboard is hiding, then we need to wait
668
740
  * for the webview to resize. Otherwise, the footer
@@ -689,7 +761,6 @@ const Footer = class {
689
761
  }
690
762
  }
691
763
  disconnectedCallback() {
692
- this.destroyCollapsibleFooter();
693
764
  if (this.keyboardCtrlPromise) {
694
765
  this.keyboardCtrlPromise.then((ctrl) => ctrl.destroy());
695
766
  this.keyboardCtrlPromise = null;
@@ -700,43 +771,29 @@ const Footer = class {
700
771
  }
701
772
  }
702
773
  destroyCollapsibleFooter() {
703
- this.activeEffect = undefined;
704
- this.fadeSetupId++;
705
- this.scrollHideCtrlPromise = null;
706
- if (this.scrollHideCtrl) {
707
- this.scrollHideCtrl.destroy();
708
- this.scrollHideCtrl = undefined;
709
- }
710
774
  if (this.scrollEl && this.contentScrollCallback) {
711
775
  this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
712
776
  this.contentScrollCallback = undefined;
713
777
  }
714
778
  }
715
779
  render() {
716
- const { translucent, scrollEffect, collapse } = this;
717
- const theme = ionicGlobal.getIonTheme(this);
718
- const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
719
- // fade via the deprecated `collapse` prop is iOS-only.
720
- const isModeRestricted = scrollEffect === undefined && theme !== 'ios';
721
- const hasHide = effect === 'hide';
722
- const hasFade = effect === 'fade' && !isModeRestricted;
780
+ const { translucent, collapse } = this;
781
+ const mode = ionicGlobal.getIonMode(this);
723
782
  const tabs = this.el.closest('ion-tabs');
724
783
  const tabBar = tabs === null || tabs === void 0 ? void 0 : tabs.querySelector(':scope > ion-tab-bar');
725
- return (index.h(index.Host, { key: 'a0777b4a639d22e15374879f018efcf589e756f8', role: "contentinfo", class: {
726
- [theme]: true,
784
+ return (index.h(index.Host, { key: '71939c4bbaef5062532a99ee2e33574102a9abad', role: "contentinfo", class: {
785
+ [mode]: true,
727
786
  // Used internally for styling
728
- [`footer-${theme}`]: true,
787
+ [`footer-${mode}`]: true,
729
788
  [`footer-translucent`]: translucent,
730
- [`footer-translucent-${theme}`]: translucent,
789
+ [`footer-translucent-${mode}`]: translucent,
731
790
  ['footer-toolbar-padding']: !this.keyboardVisible && (!tabBar || tabBar.slot !== 'bottom'),
732
- 'footer-collapse-fade': hasFade,
733
- 'footer-scroll-effect-hide': hasHide,
734
- } }, theme === 'ios' && translucent && index.h("div", { key: 'd78b46870cbf11c95b066d649c04ec398b66e614', class: "footer-background" }), index.h("slot", { key: '9dc34787cd29597fe1b1198db317602014ac1483' })));
791
+ [`footer-collapse-${collapse}`]: collapse !== undefined,
792
+ } }, mode === 'ios' && translucent && index.h("div", { key: '2fa14f61661c47c661cecd696176728d6eafa74f', class: "footer-background" }), index.h("slot", { key: '8e63696e7c528d5c38201e546bf08135290d0945' })));
735
793
  }
736
794
  get el() { return index.getElement(this); }
737
795
  };
738
796
  Footer.style = {
739
- ionic: ionicFooterMdCss(),
740
797
  ios: footerIosCss(),
741
798
  md: footerMdCss()
742
799
  };
@@ -788,14 +845,13 @@ const handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {
788
845
  });
789
846
  };
790
847
  const setToolbarBackgroundOpacity = (headerEl, opacity) => {
791
- var _a;
792
848
  /**
793
849
  * Fading in the backdrop opacity
794
850
  * should happen after the large title
795
851
  * has collapsed, so it is handled
796
852
  * by handleHeaderFade()
797
853
  */
798
- if (((_a = headerEl.scrollEffect) !== null && _a !== void 0 ? _a : headerEl.collapse) === 'fade') {
854
+ if (headerEl.collapse === 'fade') {
799
855
  return;
800
856
  }
801
857
  if (opacity === undefined) {
@@ -953,69 +1009,46 @@ const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
953
1009
  * Get the role type for the ion-header.
954
1010
  *
955
1011
  * @param isInsideMenu If ion-header is inside ion-menu.
956
- * @returns 'none' if inside ion-menu, otherwise 'banner'.
957
- * Condensed headers start as 'banner' and have their role
958
- * toggled dynamically by setHeaderActive() on scroll.
1012
+ * @param isCondensed If ion-header has collapse="condense".
1013
+ * @param mode The current mode.
1014
+ * @returns 'none' if inside ion-menu or if condensed in md
1015
+ * mode, otherwise 'banner'.
959
1016
  */
960
- const getRoleType = (isInsideMenu) => {
1017
+ const getRoleType = (isInsideMenu, isCondensed, mode) => {
961
1018
  // If the header is inside a menu, it should not have the banner role.
962
1019
  if (isInsideMenu) {
963
1020
  return ROLE_NONE;
964
1021
  }
1022
+ /**
1023
+ * Only apply role="none" to `md` mode condensed headers
1024
+ * since the large header is never shown.
1025
+ */
1026
+ if (isCondensed && mode === 'md') {
1027
+ return ROLE_NONE;
1028
+ }
965
1029
  // Default to banner role.
966
1030
  return ROLE_BANNER;
967
1031
  };
968
1032
 
969
- const headerIonicCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header:not(.header-collapse-main):has(~ion-content ion-header.header-collapse-condense){opacity:0}.header-collapse-condense-hidden{display:none}ion-header.header-scroll-effect-hide{-webkit-transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);opacity:0}@media (prefers-reduced-motion: reduce){ion-header.header-scroll-effect-hide,ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transition:none;transition:none}}ion-header{z-index:10}ion-header.header-divider{border-bottom:var(--token-border-size-025, var(--token-scale-025, 1px)) var(--token-border-style-solid, solid) var(--token-border-default, var(--token-primitives-neutral-400, #d5d5d5))}ion-toolbar+ion-toolbar{--padding-start:var(--token-space-400, var(--token-scale-400, 16px));--padding-end:var(--token-space-400, var(--token-scale-400, 16px))}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.header-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(var(--token-scale-100, 4px));backdrop-filter:saturate(180%) blur(var(--token-scale-100, 4px))}.header-translucent-ionic ion-toolbar{--opacity:0.7}}`;
1033
+ const headerIosCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%;z-index:10}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-ios ion-toolbar:last-of-type{--border-width:0 0 0.55px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.header-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}.header-translucent-ios ion-toolbar{--opacity:.8}.header-collapse-condense-inactive .header-background{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}}.header-ios.ion-no-border ion-toolbar:last-of-type{--border-width:0}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header.header-ios:not(.header-collapse-main):has(~ion-content ion-header.header-ios[collapse=condense],~ion-content ion-header.header-ios.header-collapse-condense){opacity:0}`;
970
1034
 
971
- 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}`;
972
-
973
- const headerMdCss = () => `ion-header{display:block;position:relative;-ms-flex-order:-1;order:-1;width:100%}ion-header ion-toolbar:first-of-type{padding-top:var(--ion-safe-area-top, 0)}.header-collapse-fade ion-toolbar{--opacity-scale:inherit}.header-collapse-fade.header-transitioning ion-toolbar{--background:transparent;--border-style:none}.header-collapse-condense{z-index:9}.header-collapse-condense ion-toolbar{position:-webkit-sticky;position:sticky;top:0}.header-collapse-condense ion-toolbar:first-of-type{padding-top:0px;z-index:1}.header-collapse-condense ion-toolbar{z-index:0}.header-collapse-condense ion-toolbar:last-of-type{--border-width:0px}.header-collapse-condense ion-toolbar ion-searchbar{padding-top:0px;padding-bottom:13px}.header-collapse-main{--opacity-scale:1}.header-collapse-main ion-toolbar{--opacity-scale:inherit}.header-collapse-main ion-toolbar.in-toolbar ion-title,.header-collapse-main ion-toolbar.in-toolbar ion-buttons{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.header-collapse-condense ion-toolbar,.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--background:var(--ion-background-color, #fff)}.header-collapse-condense-inactive.header-transitioning:not(.header-collapse-condense) ion-toolbar{--border-style:none;--opacity-scale:1}.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive:not(.header-collapse-condense) ion-toolbar.in-toolbar ion-buttons.buttons-collapse{opacity:0;pointer-events:none}.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-title,.header-collapse-condense-inactive.header-collapse-condense ion-toolbar.in-toolbar ion-buttons.buttons-collapse{visibility:hidden}ion-header:not(.header-collapse-main):has(~ion-content ion-header.header-collapse-condense){opacity:0}.header-collapse-condense-hidden{display:none}ion-header.header-scroll-effect-hide{-webkit-transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1);transition:transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), -webkit-transform 300ms cubic-bezier(0, 0, 0.2, 1)}ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1);transition:transform 200ms cubic-bezier(0.4, 0, 1, 1), opacity 300ms cubic-bezier(0.4, 0, 1, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 1, 1);opacity:0}@media (prefers-reduced-motion: reduce){ion-header.header-scroll-effect-hide,ion-header.header-scroll-effect-hide.header-scroll-hidden{-webkit-transition:none;transition:none}}ion-header{z-index:10}.header-md{-webkit-box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);box-shadow:0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12)}.header-md.header-collapse-condense{-webkit-box-shadow:none;box-shadow:none}.header-md.header-collapse-condense-inactive:not(.header-collapse-condense){-webkit-box-shadow:none;box-shadow:none}.header-md.header-collapse-fade{-webkit-box-shadow:none;box-shadow:none}.header-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}`;
1035
+ 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}`;
974
1036
 
975
1037
  const Header = class {
976
1038
  constructor(hostRef) {
977
1039
  index.registerInstance(this, hostRef);
978
1040
  this.inheritedAttributes = {};
979
- this.scrollHideCtrlPromise = null;
980
- this.hasWarnedCollapse = false;
981
- this.fadeCondenseSetupId = 0;
982
- /**
983
- * If `true`, the header will have a line at the bottom.
984
- * TODO(ROU-10855): add support for this prop on ios/md themes
985
- */
986
- this.divider = false;
987
1041
  /**
988
1042
  * If `true`, the header will be translucent.
989
- * Only applies when the theme is `"ios"` or `"ionic"` and the device supports
1043
+ * Only applies when the mode is `"ios"` and the device supports
990
1044
  * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
991
1045
  *
992
1046
  * Note: In order to scroll content behind the header, the `fullscreen`
993
1047
  * attribute needs to be set on the content.
994
1048
  */
995
1049
  this.translucent = false;
996
- this.setupScrollEffectHide = async (contentEl) => {
997
- const setupPromise = scrollHideController.createScrollHideController(contentEl, {
998
- el: this.el,
999
- cssVar: '--internal-header-hide-height',
1000
- hiddenClass: 'header-scroll-hidden',
1001
- contentPartnerClass: 'content-header-hide-scroll-partner',
1002
- contentHiddenClass: 'content-header-hide-scroll-hidden',
1003
- });
1004
- this.scrollHideCtrlPromise = setupPromise;
1005
- const controller = await setupPromise;
1006
- if (this.scrollHideCtrlPromise === setupPromise) {
1007
- this.scrollHideCtrlPromise = null;
1008
- controller.init();
1009
- this.scrollHideCtrl = controller;
1010
- }
1011
- };
1012
1050
  this.setupFadeHeader = async (contentEl, condenseHeader) => {
1013
- const setupId = ++this.fadeCondenseSetupId;
1014
- const scrollEl = await index$1.getScrollElement(contentEl);
1015
- if (this.fadeCondenseSetupId !== setupId) {
1016
- return;
1017
- }
1018
- this.scrollEl = scrollEl;
1051
+ const scrollEl = (this.scrollEl = await index$1.getScrollElement(contentEl));
1019
1052
  /**
1020
1053
  * Handle fading of toolbars on scroll
1021
1054
  */
@@ -1039,63 +1072,37 @@ const Header = class {
1039
1072
  this.destroyCollapsibleHeader();
1040
1073
  }
1041
1074
  async checkCollapsibleHeader() {
1042
- const { scrollEffect, collapse } = this;
1043
- if (collapse !== undefined && scrollEffect === undefined && !this.hasWarnedCollapse) {
1044
- this.hasWarnedCollapse = true;
1045
- index.printIonWarning(`[ion-header] - The \`collapse\` property is deprecated. Use \`scrollEffect\` instead.\nExample: <ion-header scroll-effect="${collapse}">`, this.el);
1046
- }
1047
- const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
1048
- // Skip teardown/rebuild if the effect hasn't changed.
1049
- // This prevents re-renders from destroying the scroll controller
1050
- // and resetting isHidden.
1051
- if (effect === this.activeEffect) {
1075
+ const mode = ionicGlobal.getIonMode(this);
1076
+ if (mode !== 'ios') {
1052
1077
  return;
1053
1078
  }
1054
- const hasHide = effect === 'hide';
1055
- const hasCondense = effect === 'condense';
1056
- const hasFade = effect === 'fade';
1079
+ const { collapse } = this;
1080
+ const hasCondense = collapse === 'condense';
1081
+ const hasFade = collapse === 'fade';
1057
1082
  this.destroyCollapsibleHeader();
1058
- const appRootSelector = index.config.get('appRootSelector', 'ion-app');
1059
- const pageEl = this.el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner`);
1060
- const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
1061
- if (hasHide && contentEl) {
1062
- this.activeEffect = effect;
1063
- await this.setupScrollEffectHide(contentEl);
1064
- return;
1065
- }
1066
- // condense/fade via the deprecated `collapse` prop are iOS-only.
1067
- // condense/fade via the new `scrollEffect` prop work in all themes.
1068
- const isModeRestricted = scrollEffect === undefined && ionicGlobal.getIonTheme(this) !== 'ios';
1069
- if (hasCondense && !isModeRestricted) {
1083
+ if (hasCondense) {
1084
+ const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
1085
+ const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
1070
1086
  // Cloned elements are always needed in iOS transition
1071
1087
  index.writeTask(() => {
1072
1088
  const title = cloneElement('ion-title');
1073
1089
  title.size = 'large';
1074
1090
  cloneElement('ion-back-button');
1075
1091
  });
1076
- const didSetup = await this.setupCondenseHeader(contentEl, pageEl);
1077
- if (didSetup) {
1078
- this.activeEffect = effect;
1079
- }
1092
+ await this.setupCondenseHeader(contentEl, pageEl);
1080
1093
  }
1081
- else if (hasFade && !isModeRestricted) {
1094
+ else if (hasFade) {
1095
+ const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
1096
+ const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
1082
1097
  if (!contentEl) {
1083
1098
  index$1.printIonContentErrorMsg(this.el);
1084
1099
  return;
1085
1100
  }
1086
- const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"],ion-header[scroll-effect="condense"]');
1087
- this.activeEffect = effect;
1101
+ const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
1088
1102
  await this.setupFadeHeader(contentEl, condenseHeader);
1089
1103
  }
1090
1104
  }
1091
1105
  destroyCollapsibleHeader() {
1092
- this.activeEffect = undefined;
1093
- this.fadeCondenseSetupId++;
1094
- this.scrollHideCtrlPromise = null;
1095
- if (this.scrollHideCtrl) {
1096
- this.scrollHideCtrl.destroy();
1097
- this.scrollHideCtrl = undefined;
1098
- }
1099
1106
  if (this.intersectionObserver) {
1100
1107
  this.intersectionObserver.disconnect();
1101
1108
  this.intersectionObserver = undefined;
@@ -1112,40 +1119,21 @@ const Header = class {
1112
1119
  async setupCondenseHeader(contentEl, pageEl) {
1113
1120
  if (!contentEl || !pageEl) {
1114
1121
  index$1.printIonContentErrorMsg(this.el);
1115
- return false;
1122
+ return;
1116
1123
  }
1117
1124
  if (typeof IntersectionObserver === 'undefined') {
1118
- return false;
1119
- }
1120
- const setupId = ++this.fadeCondenseSetupId;
1121
- const scrollEl = await index$1.getScrollElement(contentEl);
1122
- if (this.fadeCondenseSetupId !== setupId) {
1123
- return false;
1124
- }
1125
- this.scrollEl = scrollEl;
1126
- /**
1127
- * The condense effect requires an ion-title with size="large"
1128
- * in the condense header. Without it, there is nothing to
1129
- * collapse into the main header toolbar.
1130
- */
1131
- const hasLargeTitle = this.el.querySelector('ion-title[size="large"]') !== null;
1132
- if (!hasLargeTitle) {
1133
- index.printIonWarning('[ion-header] - The condense scroll effect requires an <ion-title size="large"> in the condense header.', this.el);
1134
- return false;
1125
+ return;
1135
1126
  }
1127
+ this.scrollEl = await index$1.getScrollElement(contentEl);
1136
1128
  const headers = pageEl.querySelectorAll('ion-header');
1137
- this.collapsibleMainHeader = Array.from(headers).find((header) => {
1138
- var _a;
1139
- const effect = (_a = header.scrollEffect) !== null && _a !== void 0 ? _a : header.collapse;
1140
- return effect !== 'condense';
1141
- });
1129
+ this.collapsibleMainHeader = Array.from(headers).find((header) => header.collapse !== 'condense');
1142
1130
  if (!this.collapsibleMainHeader) {
1143
- return false;
1131
+ return;
1144
1132
  }
1145
1133
  const mainHeaderIndex = createHeaderIndex(this.collapsibleMainHeader);
1146
1134
  const scrollHeaderIndex = createHeaderIndex(this.el);
1147
1135
  if (!mainHeaderIndex || !scrollHeaderIndex) {
1148
- return false;
1136
+ return;
1149
1137
  }
1150
1138
  setHeaderActive(mainHeaderIndex, false);
1151
1139
  setToolbarBackgroundOpacity(mainHeaderIndex.el, 0);
@@ -1177,45 +1165,31 @@ const Header = class {
1177
1165
  this.collapsibleMainHeader.classList.add('header-collapse-main');
1178
1166
  }
1179
1167
  });
1180
- return true;
1181
1168
  }
1182
1169
  render() {
1183
- const { translucent, inheritedAttributes, divider, scrollEffect, collapse } = this;
1184
- const theme$1 = ionicGlobal.getIonTheme(this);
1185
- const effect = scrollEffect !== null && scrollEffect !== void 0 ? scrollEffect : collapse;
1186
- // condense/fade via the deprecated `collapse` prop are iOS-only.
1187
- const isModeRestricted = scrollEffect === undefined && theme$1 !== 'ios';
1188
- const hasHide = effect === 'hide';
1189
- const hasCondense = effect === 'condense' && !isModeRestricted && this.el.querySelector('ion-title[size="large"]') !== null;
1190
- const hasFade = effect === 'fade' && !isModeRestricted;
1191
- // The condense header should be hidden when
1192
- // - deprecated collapse prop is used on non-iOS (mode restricted), or
1193
- // - scrollEffect="condense" is set but no ion-title[size="large"] is present
1194
- const isHiddenCondense = effect === 'condense' && !hasCondense;
1170
+ const { translucent, inheritedAttributes } = this;
1171
+ const mode = ionicGlobal.getIonMode(this);
1172
+ const collapse = this.collapse || 'none';
1173
+ const isCondensed = collapse === 'condense';
1195
1174
  // banner role must be at top level, so remove role if inside a menu
1196
- const roleType = isHiddenCondense ? 'none' : getRoleType(theme.hostContext('ion-menu', this.el));
1197
- return (index.h(index.Host, Object.assign({ key: '09f60ca014bb7b3a85d3c0a94e7989d5dbc43f46', role: roleType, class: {
1198
- [theme$1]: true,
1175
+ const roleType = getRoleType(theme.hostContext('ion-menu', this.el), isCondensed, mode);
1176
+ return (index.h(index.Host, Object.assign({ key: '863c4568cd7b8c0ec55109f193bbbaed68a1346e', role: roleType, class: {
1177
+ [mode]: true,
1199
1178
  // Used internally for styling
1200
- [`header-${theme$1}`]: true,
1179
+ [`header-${mode}`]: true,
1201
1180
  [`header-translucent`]: this.translucent,
1202
- ['header-collapse-condense']: hasCondense,
1203
- ['header-collapse-condense-hidden']: isHiddenCondense,
1204
- ['header-collapse-fade']: hasFade,
1205
- [`header-translucent-${theme$1}`]: this.translucent,
1206
- ['header-divider']: divider,
1207
- 'header-scroll-effect-hide': hasHide,
1208
- } }, inheritedAttributes), theme$1 !== 'md' && translucent && index.h("div", { key: 'fd5ff245ae0166e5e1d50936cacc98c90625db48', class: "header-background" }), index.h("slot", { key: '1baa31af87b9eb6406a21073ec65afa191dfbb3d' })));
1181
+ [`header-collapse-${collapse}`]: true,
1182
+ [`header-translucent-${mode}`]: this.translucent,
1183
+ } }, inheritedAttributes), mode === 'ios' && translucent && index.h("div", { key: '25c3bdce328b0b35607d154c8b8374679313d881', class: "header-background" }), index.h("slot", { key: 'b44fab0a9be7920b9650da26117c783e751e1702' })));
1209
1184
  }
1210
1185
  get el() { return index.getElement(this); }
1211
1186
  };
1212
1187
  Header.style = {
1213
- ionic: headerIonicCss(),
1214
1188
  ios: headerIosCss(),
1215
1189
  md: headerMdCss()
1216
1190
  };
1217
1191
 
1218
- const routerOutletCss = () => `:host{right:0;left:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
1192
+ const routerOutletCss = () => `:host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
1219
1193
 
1220
1194
  const RouterOutlet = class {
1221
1195
  constructor(hostRef) {
@@ -1226,7 +1200,7 @@ const RouterOutlet = class {
1226
1200
  this.lockController = lockController.createLockController();
1227
1201
  this.gestureOrAnimationInProgress = false;
1228
1202
  /**
1229
- * The mode determines the platform behaviors of the component.
1203
+ * The mode determines which platform styles to use.
1230
1204
  */
1231
1205
  this.mode = ionicGlobal.getIonMode(this);
1232
1206
  /**
@@ -1246,7 +1220,7 @@ const RouterOutlet = class {
1246
1220
  this.swipeHandler.onStart();
1247
1221
  }
1248
1222
  };
1249
- this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-CvZt_4YX.js'); })).createSwipeBackGesture(this.el, () => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart(), () => onStart(), (step) => { var _a; return (_a = this.ani) === null || _a === void 0 ? void 0 : _a.progressStep(step); }, (shouldComplete, step, dur) => {
1223
+ this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-CuIiziaa.js'); })).createSwipeBackGesture(this.el, () => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart(), () => onStart(), (step) => { var _a; return (_a = this.ani) === null || _a === void 0 ? void 0 : _a.progressStep(step); }, (shouldComplete, step, dur) => {
1250
1224
  if (this.ani) {
1251
1225
  this.ani.onFinish(() => {
1252
1226
  this.gestureOrAnimationInProgress = false;
@@ -1392,7 +1366,7 @@ const RouterOutlet = class {
1392
1366
  return true;
1393
1367
  }
1394
1368
  render() {
1395
- return index.h("slot", { key: '56e3d06ed939755796058e30ef19fbc7f7cb490d' });
1369
+ return index.h("slot", { key: '386c41745b61daba161cf75063da97fe29ba36cb' });
1396
1370
  }
1397
1371
  get el() { return index.getElement(this); }
1398
1372
  static get watchers() { return {
@@ -1403,11 +1377,9 @@ const RouterOutlet = class {
1403
1377
  };
1404
1378
  RouterOutlet.style = routerOutletCss();
1405
1379
 
1406
- const titleIonicCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{font-size:var(--token-font-size-450, 1.125rem);font-weight:var(--token-font-weight-medium, 500);letter-spacing:var(--token-font-letter-spacing-0, 0%);line-height:var(--token-font-line-height-700, var(--token-scale-700, 28px));text-decoration:none;text-transform:none;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host(.title-large){font-size:var(--token-font-size-700, 1.75rem);font-weight:var(--token-font-weight-medium, 500);letter-spacing:var(--token-font-letter-spacing-0, 0%);line-height:var(--token-font-line-height-900, var(--token-scale-900, 36px));text-decoration:none;text-transform:none}`;
1407
-
1408
- 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)}}`;
1380
+ const titleIosCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{top:0;-webkit-padding-start:90px;padding-inline-start:90px;-webkit-padding-end:90px;padding-inline-end:90px;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);position:absolute;width:100%;height:100%;-webkit-transform:translateZ(0);transform:translateZ(0);font-size:min(1.0625rem, 20.4px);font-weight:600;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;pointer-events:none}:host{inset-inline-start:0}:host(.title-small){-webkit-padding-start:9px;padding-inline-start:9px;-webkit-padding-end:9px;padding-inline-end:9px;padding-top:6px;padding-bottom:16px;position:relative;font-size:min(0.8125rem, 23.4px);font-weight:normal}:host(.title-large){-webkit-padding-start:12px;padding-inline-start:12px;-webkit-padding-end:12px;padding-inline-end:12px;padding-top:2px;padding-bottom:4px;-webkit-transform-origin:left center;transform-origin:left center;position:static;-ms-flex-align:end;align-items:flex-end;min-width:100%;font-size:min(2.125rem, 61.2px);font-weight:700;text-align:start}:host(.title-large.title-rtl){-webkit-transform-origin:right center;transform-origin:right center}:host(.title-large.ion-cloned-element){--color:var(--ion-text-color, #000);font-family:var(--ion-font-family)}:host(.title-large) .toolbar-title{-webkit-transform-origin:inherit;transform-origin:inherit;width:auto}:host-context([dir=rtl]):host(.title-large) .toolbar-title,:host-context([dir=rtl]).title-large .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}@supports selector(:dir(rtl)){:host(.title-large:dir(rtl)) .toolbar-title{-webkit-transform-origin:calc(100% - inherit);transform-origin:calc(100% - inherit)}}`;
1409
1381
 
1410
- 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}`;
1382
+ const titleMdCss = () => `:host{--color:initial;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-align:center;align-items:center;-webkit-transform:translateZ(0);transform:translateZ(0);color:var(--color)}:host(.ion-color){color:var(--ion-color-base)}.toolbar-title{display:block;width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;pointer-events:auto}:host(.title-small) .toolbar-title{white-space:normal}:host{-webkit-padding-start:20px;padding-inline-start:20px;-webkit-padding-end:20px;padding-inline-end:20px;padding-top:0;padding-bottom:0;font-size:1.25rem;font-weight:500;letter-spacing:0.0125em}:host(.title-small){width:100%;height:100%;font-size:0.9375rem;font-weight:normal}`;
1411
1383
 
1412
1384
  const ToolbarTitle = class {
1413
1385
  constructor(hostRef) {
@@ -1430,13 +1402,13 @@ const ToolbarTitle = class {
1430
1402
  return this.size !== undefined ? this.size : 'default';
1431
1403
  }
1432
1404
  render() {
1433
- const theme$1 = ionicGlobal.getIonTheme(this);
1405
+ const mode = ionicGlobal.getIonMode(this);
1434
1406
  const size = this.getSize();
1435
- return (index.h(index.Host, { key: 'd64e86bed418cba707d4a26c9274f18ed06c0e9e', class: theme.createColorClasses(this.color, {
1436
- [theme$1]: true,
1407
+ return (index.h(index.Host, { key: '44e63f8439df64c470692904427b417e19406476', class: theme.createColorClasses(this.color, {
1408
+ [mode]: true,
1437
1409
  [`title-${size}`]: true,
1438
1410
  'title-rtl': document.dir === 'rtl',
1439
- }) }, index.h("div", { key: '386a71e974cde0bfbf5b655d69ed5f718de8ce48', class: "toolbar-title" }, index.h("slot", { key: '8aa804c9e1b11574a42268805d3117a085e699b4' }))));
1411
+ }) }, index.h("div", { key: '784cf60a0db16045391891cc8fad0c7dbeba4039', class: "toolbar-title" }, index.h("slot", { key: '0c720a50479ba257e8756337aeb9b0ab7516a227' }))));
1440
1412
  }
1441
1413
  get el() { return index.getElement(this); }
1442
1414
  static get watchers() { return {
@@ -1446,29 +1418,18 @@ const ToolbarTitle = class {
1446
1418
  }; }
1447
1419
  };
1448
1420
  ToolbarTitle.style = {
1449
- ionic: titleIonicCss(),
1450
1421
  ios: titleIosCss(),
1451
1422
  md: titleMdCss()
1452
1423
  };
1453
1424
 
1454
- const toolbarIonicCss = () => `:host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);contain:content;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{right:0;left:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));pointer-events:none}::slotted(ion-progress-bar){right:0;left:0;bottom:0;position:absolute}:host{--background:var(--token-bg-surface-default, var(--token-primitives-base-white, #ffffff));--color:var(--token-text-default, var(--token-primitives-neutral-1200, #242424));--border-color:currentColor;--padding-top:var(--token-space-200, var(--token-scale-200, 8px));--padding-bottom:var(--token-space-200, var(--token-scale-200, 8px));--padding-start:var(--token-space-200, var(--token-scale-200, 8px));--padding-end:var(--token-space-200, var(--token-scale-200, 8px));--min-height:var(--token-scale-1400, 56px)}.toolbar-container{gap:var(--token-space-400, var(--token-scale-400, 16px));z-index:10}.toolbar-background{z-index:-1}.toolbar-content{-ms-flex:1 1 auto;flex:1 1 auto;min-width:0}:host(.toolbar-searchbar) ::slotted(ion-searchbar){padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}::slotted(ion-buttons){gap:var(--token-space-200, var(--token-scale-200, 8px))}::slotted(ion-title){-webkit-padding-start:var(--token-space-200, var(--token-scale-200, 8px));padding-inline-start:var(--token-space-200, var(--token-scale-200, 8px));-webkit-padding-end:var(--token-space-200, var(--token-scale-200, 8px));padding-inline-end:var(--token-space-200, var(--token-scale-200, 8px))}:host(.toolbar-title-large) ::slotted(ion-title){-webkit-padding-start:var(--token-space-400, var(--token-scale-400, 16px));padding-inline-start:var(--token-space-400, var(--token-scale-400, 16px));-webkit-padding-end:var(--token-space-400, var(--token-scale-400, 16px));padding-inline-end:var(--token-space-400, var(--token-scale-400, 16px))}:host(.has-end-content) slot[name=end],:host(.show-end) slot[name=end]{display:-ms-flexbox;display:flex;-ms-flex:0 0 var(--start-end-size, 0);flex:0 0 var(--start-end-size, 0);-ms-flex-pack:end;justify-content:flex-end;text-align:end}:host(.has-start-content) slot[name=start],:host(.show-start) slot[name=start]{display:-ms-flexbox;display:flex;-ms-flex:0 0 var(--start-end-size, 0);flex:0 0 var(--start-end-size, 0)}:host(.has-primary-content) slot[name=primary],:host(.show-primary) slot[name=primary]{display:-ms-flexbox;display:flex;-ms-flex:0 0 var(--primary-secondary-size, 0);flex:0 0 var(--primary-secondary-size, 0);-ms-flex-pack:end;justify-content:flex-end;text-align:end}:host(.has-secondary-content) slot[name=secondary],:host(.show-secondary) slot[name=secondary]{display:-ms-flexbox;display:flex;-ms-flex:0 0 var(--primary-secondary-size, 0);flex:0 0 var(--primary-secondary-size, 0)}:host(.toolbar-title-placement-start) ::slotted(ion-title){text-align:start}:host(.toolbar-title-placement-center) ::slotted(ion-title){text-align:center}:host(.toolbar-title-placement-end) ::slotted(ion-title){text-align:end}`;
1425
+ const toolbarIosCss = () => `:host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-color-step-50, var(--ion-background-color-step-50, #f7f7f7)));--color:var(--ion-toolbar-color, var(--ion-text-color, #000));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.2)))));--padding-top:3px;--padding-bottom:3px;--padding-start:4px;--padding-end:4px;--min-height:44px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:4;order:4;min-width:0}:host(.toolbar-segment) .toolbar-content{display:-ms-inline-flexbox;display:inline-flex}:host(.toolbar-searchbar) .toolbar-container{padding-top:0;padding-bottom:0}:host(.toolbar-searchbar) ::slotted(*){-ms-flex-item-align:start;align-self:start}:host(.toolbar-searchbar) ::slotted(ion-chip){margin-top:3px}::slotted(ion-buttons){min-height:38px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:3;order:3}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}:host(.toolbar-title-large) .toolbar-container{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:start;align-items:flex-start}:host(.toolbar-title-large) .toolbar-content ion-title{-ms-flex:1;flex:1;-ms-flex-order:8;order:8;min-width:100%}`;
1455
1426
 
1456
- 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%}`;
1457
-
1458
- 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}`;
1427
+ const toolbarMdCss = () => `:host{--border-width:0;--border-style:solid;--opacity:1;--opacity-scale:1;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:block;position:relative;width:100%;padding-right:var(--ion-safe-area-right);padding-left:var(--ion-safe-area-left);color:var(--color);font-family:var(--ion-font-family, inherit);contain:content;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}:host(.ion-color){color:var(--ion-color-contrast)}:host(.ion-color) .toolbar-background{background:var(--ion-color-base)}.toolbar-container{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;width:100%;min-height:var(--min-height);contain:content;overflow:hidden;z-index:10;-webkit-box-sizing:border-box;box-sizing:border-box}.toolbar-background{left:0;right:0;top:0;bottom:0;position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;opacity:calc(var(--opacity) * var(--opacity-scale));z-index:-1;pointer-events:none}::slotted(ion-progress-bar){left:0;right:0;bottom:0;position:absolute}:host{--background:var(--ion-toolbar-background, var(--ion-background-color, #fff));--color:var(--ion-toolbar-color, var(--ion-text-color, #424242));--border-color:var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, #c1c4cd))));--padding-top:0;--padding-bottom:0;--padding-start:0;--padding-end:0;--min-height:56px}.toolbar-content{-ms-flex:1;flex:1;-ms-flex-order:3;order:3;min-width:0;max-width:100%}::slotted(.buttons-first-slot){-webkit-margin-start:4px;margin-inline-start:4px}::slotted(.buttons-last-slot){-webkit-margin-end:4px;margin-inline-end:4px}::slotted([slot=start]){-ms-flex-order:2;order:2}::slotted([slot=secondary]){-ms-flex-order:4;order:4}::slotted([slot=primary]){-ms-flex-order:5;order:5;text-align:end}::slotted([slot=end]){-ms-flex-order:6;order:6;text-align:end}`;
1459
1428
 
1460
1429
  const Toolbar = class {
1461
1430
  constructor(hostRef) {
1462
1431
  index.registerInstance(this, hostRef);
1463
1432
  this.childrenStyles = new Map();
1464
- this.slotClasses = [
1465
- 'has-start-content',
1466
- 'has-end-content',
1467
- 'has-primary-content',
1468
- 'has-secondary-content',
1469
- ];
1470
- this.showClasses = ['show-start', 'show-end', 'show-primary', 'show-secondary'];
1471
- this.slotSizeVars = ['--start-end-size', '--primary-secondary-size'];
1472
1433
  }
1473
1434
  componentWillLoad() {
1474
1435
  const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));
@@ -1485,173 +1446,6 @@ const Toolbar = class {
1485
1446
  if (lastButtons) {
1486
1447
  lastButtons.classList.add('buttons-last-slot');
1487
1448
  }
1488
- this.updateSlotClasses();
1489
- }
1490
- componentDidLoad() {
1491
- this.updateSlotClasses();
1492
- this.updateSlotWidths();
1493
- }
1494
- titlePlacementChanged() {
1495
- this.updateSlotClasses();
1496
- }
1497
- /**
1498
- * Gets the title placement.
1499
- * Returns the title placement if it is set, otherwise returns `"center"`
1500
- * for `ionic` and `ios`, and `"start"` for `md`.
1501
- */
1502
- getTitlePlacement() {
1503
- if (this.titlePlacement !== undefined) {
1504
- return this.titlePlacement;
1505
- }
1506
- return ionicGlobal.getIonTheme(this) === 'ionic' || ionicGlobal.getIonTheme(this) === 'ios' ? 'center' : 'start';
1507
- }
1508
- /**
1509
- * Updates the CSS custom properties for slot widths
1510
- * This ensures that slots shown by their met conditions
1511
- * have a minimum width matching their required slot
1512
- */
1513
- updateSlotWidths(tries = 0) {
1514
- // Set timeout to try to execute after everything is rendered
1515
- setTimeout(() => {
1516
- // Attempt to measure and update
1517
- const success = this.measureAndUpdateSlots();
1518
- // If not all measurements were successful, try again in 100 ms
1519
- // cap recursion at 5 tries for safety
1520
- if (!success && tries < 5) {
1521
- setTimeout(() => {
1522
- this.updateSlotWidths(tries + 1);
1523
- }, 100);
1524
- }
1525
- });
1526
- }
1527
- /**
1528
- * Measure the widths of the slots and update the CSS custom properties
1529
- * for the minimum width of each pair of slots based on the largest width in each pair.
1530
- * Returns whether we successfully measured all of the slots we expect to have content.
1531
- * If not, the content probably hasn't rendered yet and we need to try again.
1532
- */
1533
- measureAndUpdateSlots() {
1534
- // Define the relationship between slots based on the conditions array
1535
- // Group slots that should have the same width
1536
- const slotPairs = [
1537
- { name: 'start-end', slots: ['start', 'end'] },
1538
- { name: 'primary-secondary', slots: ['primary', 'secondary'] },
1539
- ];
1540
- // First, measure all slot widths
1541
- const slotWidths = new Map();
1542
- let allMeasurementsSuccessful = true;
1543
- // Measure all slots with content
1544
- const slots = ['start', 'end', 'primary', 'secondary'];
1545
- slots.forEach((slot) => {
1546
- var _a;
1547
- if (this.el.classList.contains(`has-${slot}-content`)) {
1548
- const slotElement = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slot}"]`);
1549
- if (slotElement) {
1550
- // Check if the slot contains an img or ion-img
1551
- const assignedElements = slotElement.assignedElements({ flatten: true });
1552
- const hasImg = assignedElements.some((el) => {
1553
- if (el.tagName === 'IMG' || el.tagName === 'ION-IMG') {
1554
- return true;
1555
- }
1556
- // Check for nested images
1557
- return el.querySelector('img, ion-img');
1558
- });
1559
- // Temporarily allow slot to size to content by setting flex-basis
1560
- // to 'auto'. This ensures that slotted images can render at their
1561
- // intrinsic width for measurement.
1562
- if (hasImg) {
1563
- const { name } = slotPairs.find((pair) => pair.slots.includes(slot));
1564
- this.el.style.setProperty(`--${name}-size`, 'auto');
1565
- }
1566
- const width = slotElement.offsetWidth;
1567
- if (width > 0) {
1568
- slotWidths.set(slot, width);
1569
- }
1570
- else {
1571
- allMeasurementsSuccessful = false;
1572
- }
1573
- }
1574
- }
1575
- });
1576
- // Then set the CSS custom properties based on the largest width in each pair
1577
- slotPairs.forEach(({ name, slots }) => {
1578
- // Find the maximum width among the slots in this pair
1579
- let maxWidth = 0;
1580
- let hasAnyContent = false;
1581
- slots.forEach((slot) => {
1582
- var _a;
1583
- if (slotWidths.has(slot)) {
1584
- hasAnyContent = true;
1585
- maxWidth = Math.max(maxWidth, (_a = slotWidths.get(slot)) !== null && _a !== void 0 ? _a : 0);
1586
- }
1587
- });
1588
- // If at least one slot in the pair has content, set the min-width for the pair
1589
- if (hasAnyContent && maxWidth > 0) {
1590
- // Set a single CSS variable for the pair
1591
- this.el.style.setProperty(`--${name}-size`, `${maxWidth}px`);
1592
- }
1593
- });
1594
- return allMeasurementsSuccessful;
1595
- }
1596
- /**
1597
- * Removes all slot visibility classes and slot width CSS variables.
1598
- */
1599
- removeSlotClasses() {
1600
- this.el.classList.remove(...this.slotClasses, ...this.showClasses);
1601
- this.slotSizeVars.forEach((cssVar) => this.el.style.removeProperty(cssVar));
1602
- }
1603
- updateSlotClasses() {
1604
- const titlePlacement = this.getTitlePlacement();
1605
- if (titlePlacement !== 'center') {
1606
- this.removeSlotClasses();
1607
- return;
1608
- }
1609
- // Check if slots have content
1610
- const slots = ['start', 'end', 'primary', 'secondary'];
1611
- const classesToAdd = [];
1612
- const classesToRemove = [];
1613
- slots.forEach((slot) => {
1614
- const slotHasContent = this.hasSlotContent(slot);
1615
- const slotClass = `has-${slot}-content`;
1616
- if (slotHasContent) {
1617
- classesToAdd.push(slotClass);
1618
- }
1619
- else {
1620
- classesToRemove.push(slotClass);
1621
- }
1622
- });
1623
- // Force visibilities in certain conditions. This works by adding a class to the toolbar
1624
- // named `show-{slot}`. This class will be added if the toolbar has the required slots
1625
- // and does not have any of the excluded slots, otherwise it will be removed.
1626
- // This is useful to enforce centering of the toolbar content when there are different amounts
1627
- // of slots on either side of the toolbar.
1628
- const conditions = [
1629
- { name: 'end', requiredSlots: ['start'], excludeSlots: ['end', 'primary'] },
1630
- { name: 'start', requiredSlots: ['end'], excludeSlots: ['start', 'secondary'] },
1631
- { name: 'secondary', requiredSlots: ['primary'], excludeSlots: ['secondary', 'start'] },
1632
- { name: 'primary', requiredSlots: ['secondary'], excludeSlots: ['primary', 'end'] },
1633
- ];
1634
- conditions.forEach((condition) => {
1635
- const hasRequiredSlots = condition.requiredSlots.every((slot) => classesToAdd.includes(`has-${slot}-content`));
1636
- const hasExcludedSlots = condition.excludeSlots.some((slot) => classesToAdd.includes(`has-${slot}-content`));
1637
- const className = `show-${condition.name}`;
1638
- if (hasRequiredSlots && !hasExcludedSlots) {
1639
- classesToAdd.push(className);
1640
- }
1641
- else {
1642
- classesToRemove.push(className);
1643
- }
1644
- });
1645
- // Add classes to the toolbar element
1646
- this.el.classList.add(...classesToAdd);
1647
- this.el.classList.remove(...classesToRemove);
1648
- // Update slot widths after classes have been updated
1649
- this.updateSlotWidths();
1650
- }
1651
- hasSlotContent(slotName) {
1652
- var _a;
1653
- const slotNode = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`slot[name="${slotName}"]`);
1654
- return !!slotNode && slotNode.assignedNodes().length > 0;
1655
1449
  }
1656
1450
  childrenStyle(ev) {
1657
1451
  ev.stopPropagation();
@@ -1676,27 +1470,19 @@ const Toolbar = class {
1676
1470
  }
1677
1471
  }
1678
1472
  render() {
1679
- const theme$1 = ionicGlobal.getIonTheme(this);
1473
+ const mode = ionicGlobal.getIonMode(this);
1680
1474
  const childStyles = {};
1681
- this.childrenStyles.forEach((style) => {
1682
- Object.assign(childStyles, style);
1475
+ this.childrenStyles.forEach((value) => {
1476
+ Object.assign(childStyles, value);
1683
1477
  });
1684
- const titlePlacement = this.getTitlePlacement();
1685
- return (index.h(index.Host, { key: 'bcb621674157410d7eaeb006779bdd677346587e', class: Object.assign(Object.assign({}, theme.createColorClasses(this.color, {
1686
- [theme$1]: true,
1478
+ return (index.h(index.Host, { key: 'b849db2863778dee6c5a251bffa1b3a657aeb036', class: Object.assign(Object.assign({}, childStyles), theme.createColorClasses(this.color, {
1479
+ [mode]: true,
1687
1480
  'in-toolbar': theme.hostContext('ion-toolbar', this.el),
1688
- [`toolbar-title-placement-${titlePlacement}`]: true,
1689
- })), childStyles) }, index.h("div", { key: '0d31a98b2571b9a0ae142fbdfd83e2ebdcd8e069', class: "toolbar-background", part: "background" }), index.h("div", { key: 'de938534c487c6cb4060dac44b40c2d872130f50', class: "toolbar-container", part: "container" }, index.h("slot", { key: 'a337150d353e439eae67c31ff86e383ed51f3d8f', name: "start", onSlotchange: () => this.updateSlotClasses }), index.h("slot", { key: '02effd3ce0cdad5ec5645fa58ccb329321449190', name: "secondary", onSlotchange: () => this.updateSlotClasses }), index.h("div", { key: '3e22f5feda2aea02117bdea2fe8a4b8905ba82f6', class: "toolbar-content", part: "content" }, index.h("slot", { key: 'ebf828643ff05a8bf662a54715d21d0859168d31' })), index.h("slot", { key: 'a6940648dfe25a7aa8792a1bd9267437274f333c', name: "primary", onSlotchange: () => this.updateSlotClasses }), index.h("slot", { key: 'afb1d61aa0e430fcf483ba482af64762474e06fe', name: "end", onSlotchange: () => this.updateSlotClasses }))));
1481
+ })) }, index.h("div", { key: '67f5bba9c4f527c3f35bfe1313a2b85741f9b246', class: "toolbar-background", part: "background" }), index.h("div", { key: '085e8c68f056e5b0deb9d1606431fbeb45dae8e5', class: "toolbar-container", part: "container" }, index.h("slot", { key: '15227c79c3baf883fd8c43fdb7e1313453933c79', name: "start" }), index.h("slot", { key: '0b8a7f7e685aa31c80d9bc03446ccc3a9d07e0e8', name: "secondary" }), index.h("div", { key: '57e4628c1fa89df79dd80456259db961bb691404', class: "toolbar-content", part: "content" }, index.h("slot", { key: '82c2f6e1acf8d96db259bd8baf295881801edbd5' })), index.h("slot", { key: 'b2d4afb15214199f206c0a5e08b581e4c9c2f58a', name: "primary" }), index.h("slot", { key: 'bfb909a0c472f8834046c2ea23bef2f562167ad3', name: "end" }))));
1690
1482
  }
1691
1483
  get el() { return index.getElement(this); }
1692
- static get watchers() { return {
1693
- "titlePlacement": [{
1694
- "titlePlacementChanged": 0
1695
- }]
1696
- }; }
1697
1484
  };
1698
1485
  Toolbar.style = {
1699
- ionic: toolbarIonicCss(),
1700
1486
  ios: toolbarIosCss(),
1701
1487
  md: toolbarMdCss()
1702
1488
  };