@ionic/core 8.8.18-dev.11786487682.1e6f798f → 8.8.18-dev.11786663039.1d61e2fe

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 (1229) 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.js +1 -1
  59. package/components/ion-popover.js +1 -1
  60. package/components/ion-progress-bar.js +1 -1
  61. package/components/ion-radio-group.js +1 -1
  62. package/components/ion-radio.js +1 -1
  63. package/components/ion-range.js +1 -1
  64. package/components/ion-refresher-content.js +1 -1
  65. package/components/ion-refresher.js +1 -1
  66. package/components/ion-reorder-group.js +1 -1
  67. package/components/ion-reorder.js +1 -1
  68. package/components/ion-ripple-effect.js +1 -1
  69. package/components/ion-route-redirect.js +1 -1
  70. package/components/ion-route.js +1 -1
  71. package/components/ion-router-link.js +1 -1
  72. package/components/ion-router-outlet.js +1 -1
  73. package/components/ion-router.js +1 -1
  74. package/components/ion-row.js +1 -1
  75. package/components/ion-searchbar.js +1 -1
  76. package/components/ion-segment-button.js +1 -1
  77. package/components/ion-segment-content.js +1 -1
  78. package/components/ion-segment-view.js +1 -1
  79. package/components/ion-segment.js +1 -1
  80. package/components/ion-select-modal.js +1 -1
  81. package/components/ion-select-option.js +1 -1
  82. package/components/ion-select-popover.js +1 -1
  83. package/components/ion-select.js +1 -1
  84. package/components/ion-skeleton-text.js +1 -1
  85. package/components/ion-spinner.js +1 -1
  86. package/components/ion-split-pane.js +1 -1
  87. package/components/ion-tab-bar.js +1 -1
  88. package/components/ion-tab-button.js +1 -1
  89. package/components/ion-tab.js +1 -1
  90. package/components/ion-tabs.js +1 -1
  91. package/components/ion-text.js +1 -1
  92. package/components/ion-textarea.js +1 -1
  93. package/components/ion-thumbnail.js +1 -1
  94. package/components/ion-title.js +1 -1
  95. package/components/ion-toast.js +1 -1
  96. package/components/ion-toggle.js +1 -1
  97. package/components/ion-toolbar.js +1 -1
  98. package/components/p-0tt0PTAe.js +4 -0
  99. package/components/p-3dKnMgX5.js +4 -0
  100. package/components/p-6e_5igwn.js +4 -0
  101. package/components/p-AqD_wmvU.js +4 -0
  102. package/components/p-B-FxiyeI.js +4 -0
  103. package/components/p-B4COLbAV.js +4 -0
  104. package/components/p-B9zzUBwR.js +4 -0
  105. package/components/p-BFU7kgcj.js +4 -0
  106. package/components/p-BMPN55of.js +4 -0
  107. package/components/p-BPbRjpb2.js +4 -0
  108. package/components/p-BSQPZ79H.js +4 -0
  109. package/components/p-BXQ7upSC.js +4 -0
  110. package/components/p-BhamHSw3.js +4 -0
  111. package/components/p-BmVRXR1y.js +4 -0
  112. package/components/p-BrXE0XUu.js +4 -0
  113. package/components/p-Bv7Rqz3Z.js +4 -0
  114. package/components/p-Bw7MMRH7.js +4 -0
  115. package/components/p-C-X5vb8f.js +4 -0
  116. package/components/p-C117Majq.js +4 -0
  117. package/components/{p-DWoO0801.js → p-C6JOi8wS.js} +1 -1
  118. package/components/p-CCVPk59A.js +4 -0
  119. package/components/p-CEW4RXZO.js +4 -0
  120. package/components/p-CIGNaXM1.js +4 -0
  121. package/components/p-CKMc290p.js +4 -0
  122. package/components/{p-B2SvA6NE.js → p-CO5nI-BZ.js} +1 -1
  123. package/components/p-COQ_7Wwc.js +4 -0
  124. package/components/p-CQbh6Be_.js +4 -0
  125. package/components/p-CQtcj8t7.js +4 -0
  126. package/components/p-Cap9bvqr.js +4 -0
  127. package/components/p-CdP7ze2J.js +4 -0
  128. package/components/p-CfyJ_Ogc.js +4 -0
  129. package/components/p-ChWC4-vA.js +4 -0
  130. package/components/p-CmKf4pgI.js +4 -0
  131. package/components/p-CqYSqB9_.js +4 -0
  132. package/{dist/ionic/p-Cm20lBQw.js → components/p-Cwsd9bue.js} +1 -1
  133. package/components/p-D0pL_HuH.js +4 -0
  134. package/components/p-D0xd6h3Q.js +4 -0
  135. package/components/p-D28LaDuR.js +4 -0
  136. package/components/p-D7-vHX0A.js +4 -0
  137. package/components/p-D9KqizZs.js +4 -0
  138. package/components/p-DIZE3CVV.js +4 -0
  139. package/components/p-DJztqcrH.js +4 -0
  140. package/{dist/ionic/p-im8OkZlj.js → components/p-DL8rd5jo.js} +1 -1
  141. package/components/p-DRcApg6F.js +4 -0
  142. package/components/p-DTTnwMiS.js +4 -0
  143. package/components/p-DWCzVL3Y.js +4 -0
  144. package/components/p-DYmrV1HT.js +4 -0
  145. package/components/{p-BZwQa9ey.js → p-Dcu-SAJG.js} +1 -1
  146. package/components/p-DnINLmwC.js +4 -0
  147. package/components/{p-CVqhQif1.js → p-DsNz6_gM.js} +1 -1
  148. package/components/p-DtiuiOTk.js +4 -0
  149. package/components/p-DunYzubP.js +4 -0
  150. package/components/p-DwcSJ9u1.js +4 -0
  151. package/components/p-LpMHEu3v.js +4 -0
  152. package/components/p-QCPSB1bo.js +4 -0
  153. package/components/p-RvtofbHn.js +4 -0
  154. package/components/p-TXPDHL13.js +4 -0
  155. package/components/p-WOFp6fXj.js +4 -0
  156. package/components/p-ZjP4CjeZ.js +4 -0
  157. package/components/p-byZM6qHV.js +4 -0
  158. package/components/{p-B_jBop0E.js → p-ltNYIRmI.js} +1 -1
  159. package/components/p-miSGCTAU.js +4 -0
  160. package/components/p-mpdX3emm.js +4 -0
  161. package/components/p-nvqVLrWC.js +4 -0
  162. package/components/p-qiWM96Sz.js +4 -0
  163. package/components/p-vlF0Bcfd.js +4 -0
  164. package/css/core.css +1 -1
  165. package/css/core.css.map +1 -1
  166. package/css/display.css +1 -1
  167. package/css/display.css.map +1 -1
  168. package/css/flex-utils.css +1 -1
  169. package/css/flex-utils.css.map +1 -1
  170. package/css/float-elements.css.map +1 -1
  171. package/css/global.bundle.css.map +1 -1
  172. package/css/ionic-swiper.css +1 -1
  173. package/css/ionic-swiper.css.map +1 -1
  174. package/css/ionic.bundle.css +1 -1
  175. package/css/ionic.bundle.css.map +1 -1
  176. package/css/normalize.css.map +1 -1
  177. package/css/padding.css.map +1 -1
  178. package/css/palettes/dark.always.css.map +1 -1
  179. package/css/palettes/dark.class.css.map +1 -1
  180. package/css/palettes/dark.system.css.map +1 -1
  181. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  182. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  183. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  184. package/css/palettes/high-contrast.always.css.map +1 -1
  185. package/css/palettes/high-contrast.class.css.map +1 -1
  186. package/css/palettes/high-contrast.system.css.map +1 -1
  187. package/css/structure.css.map +1 -1
  188. package/css/text-alignment.css.map +1 -1
  189. package/css/text-transformation.css.map +1 -1
  190. package/css/typography.css.map +1 -1
  191. package/css/utils.bundle.css +1 -1
  192. package/css/utils.bundle.css.map +1 -1
  193. package/dist/cjs/{animation-B3xfVcDO.js → animation-D5WDBRvT.js} +6 -6
  194. package/dist/cjs/{app-globals-3ZoCVkn-.js → app-globals-C2s3Cbal.js} +1 -1
  195. package/dist/cjs/{button-active-3tZKuPbT.js → button-active-CXI2TseG.js} +3 -3
  196. package/dist/cjs/{capacitor-CQSg1uCo.js → capacitor-DmA66EwP.js} +3 -3
  197. package/dist/cjs/{config-DWdFbSNK.js → config-CjUbvdPW.js} +5 -4
  198. package/dist/cjs/{dir-Cn0z1rJH.js → dir-Brx7VkvP.js} +1 -1
  199. package/dist/{esm/focus-visible-vXpMhGrs.js → cjs/focus-visible-CCvKiLh3.js} +3 -23
  200. package/dist/cjs/{format-BCIkDef_.js → format-ZfKtcdit.js} +40 -30
  201. package/dist/cjs/{framework-delegate-DC5nq_NN.js → framework-delegate-Bdvk3JQO.js} +6 -10
  202. package/dist/cjs/{gesture-controller-dtqlP_q4.js → gesture-controller-BDUH7687.js} +15 -8
  203. package/dist/cjs/{haptic-eix26ESE.js → haptic-Ch-X4gRx.js} +3 -4
  204. package/dist/cjs/hardware-back-button-zr8zeYaH.js +121 -0
  205. package/dist/cjs/{helpers-DiOgV5hw.js → helpers-DURh1XdY.js} +6 -73
  206. package/dist/cjs/{index-DYRcC3bw.js → index-B7sCu6vN.js} +15 -16
  207. package/dist/cjs/{index-BxEZd5IE.js → index-BnhnwL1o.js} +2 -2
  208. package/dist/cjs/{index-bX3nz2vw.js → index-Btdix80K.js} +8 -9
  209. package/dist/cjs/{index-GZU9YrFc.js → index-CAThePqm.js} +8 -47
  210. package/dist/cjs/{index-Bj07IRTB.js → index-DhSx3VvD.js} +3 -3
  211. package/dist/cjs/index-DkNv4J_i.js +10 -0
  212. package/dist/cjs/{index-BaJ7_YbC.js → index-DsoHs7Ly.js} +5 -5
  213. package/dist/cjs/{index-CAvQ7Tka.js → index-P1nQxrpZ.js} +10 -4
  214. package/dist/cjs/{index-CxDnX7hd.js → index-wOmugbdg.js} +0 -2
  215. package/dist/cjs/index.cjs.js +17 -17
  216. package/dist/cjs/{input-shims-BSEBw22J.js → input-shims-CPbWb84M.js} +19 -22
  217. package/dist/cjs/{input.utils-D68wgI2Y.js → input.utils-CkASW3mE.js} +6 -7
  218. package/dist/cjs/ion-accordion_2.cjs.entry.js +378 -382
  219. package/dist/cjs/ion-action-sheet.cjs.entry.js +178 -86
  220. package/dist/cjs/ion-alert.cjs.entry.js +250 -125
  221. package/dist/cjs/ion-app_8.cjs.entry.js +460 -608
  222. package/dist/cjs/ion-avatar_3.cjs.entry.js +19 -125
  223. package/dist/cjs/ion-back-button.cjs.entry.js +64 -49
  224. package/dist/cjs/ion-backdrop.cjs.entry.js +23 -22
  225. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +211 -169
  226. package/dist/cjs/ion-button_2.cjs.entry.js +152 -117
  227. package/dist/cjs/ion-card_5.cjs.entry.js +109 -79
  228. package/dist/cjs/ion-checkbox.cjs.entry.js +163 -129
  229. package/dist/cjs/ion-chip.cjs.entry.js +21 -56
  230. package/dist/cjs/ion-col_3.cjs.entry.js +186 -61
  231. package/dist/cjs/ion-datetime-button.cjs.entry.js +255 -247
  232. package/dist/cjs/ion-datetime.cjs.entry.js +2767 -0
  233. package/dist/cjs/ion-fab_3.cjs.entry.js +154 -112
  234. package/dist/cjs/ion-img.cjs.entry.js +34 -16
  235. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +108 -156
  236. package/dist/cjs/ion-input-otp.cjs.entry.js +435 -437
  237. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +40 -64
  238. package/dist/cjs/ion-input.cjs.entry.js +330 -276
  239. package/dist/cjs/ion-item-option_3.cjs.entry.js +136 -511
  240. package/dist/cjs/ion-item_8.cjs.entry.js +217 -189
  241. package/dist/cjs/ion-loading.cjs.entry.js +151 -68
  242. package/dist/cjs/ion-menu_3.cjs.entry.js +181 -137
  243. package/dist/cjs/ion-modal.cjs.entry.js +534 -491
  244. package/dist/cjs/ion-nav_2.cjs.entry.js +103 -163
  245. package/dist/cjs/ion-picker-column-option.cjs.entry.js +39 -39
  246. package/dist/cjs/ion-picker-column.cjs.entry.js +421 -409
  247. package/dist/cjs/ion-picker.cjs.entry.js +405 -400
  248. package/dist/cjs/ion-popover.cjs.entry.js +323 -211
  249. package/dist/cjs/ion-progress-bar.cjs.entry.js +35 -47
  250. package/dist/cjs/ion-radio_2.cjs.entry.js +216 -161
  251. package/dist/cjs/ion-range.cjs.entry.js +307 -249
  252. package/dist/cjs/ion-refresher_2.cjs.entry.js +174 -121
  253. package/dist/cjs/ion-reorder_2.cjs.entry.js +59 -53
  254. package/dist/cjs/ion-ripple-effect.cjs.entry.js +18 -26
  255. package/dist/cjs/ion-route_4.cjs.entry.js +178 -75
  256. package/dist/cjs/ion-searchbar.cjs.entry.js +308 -331
  257. package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
  258. package/dist/cjs/ion-segment-view.cjs.entry.js +28 -27
  259. package/dist/cjs/ion-segment_2.cjs.entry.js +177 -141
  260. package/dist/cjs/ion-select-modal.cjs.entry.js +49 -69
  261. package/dist/cjs/ion-select_3.cjs.entry.js +481 -385
  262. package/dist/cjs/ion-spinner.cjs.entry.js +28 -36
  263. package/dist/cjs/ion-split-pane.cjs.entry.js +34 -25
  264. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +116 -179
  265. package/dist/cjs/ion-tab_2.cjs.entry.js +54 -29
  266. package/dist/cjs/ion-text.cjs.entry.js +13 -7
  267. package/dist/cjs/ion-textarea.cjs.entry.js +274 -269
  268. package/dist/cjs/ion-toast.cjs.entry.js +264 -169
  269. package/dist/cjs/ion-toggle.cjs.entry.js +184 -187
  270. package/dist/cjs/ionic-global-dMut1Czp.js +156 -0
  271. package/dist/cjs/ionic.cjs.js +4 -4
  272. package/dist/cjs/{ios.transition-DpFQfFfT.js → ios.transition-CeaFa0y2.js} +14 -20
  273. package/dist/cjs/{item-multiple-inputs-BG9f5_eV.js → item-multiple-inputs-HQO5Iy9I.js} +1 -1
  274. package/dist/cjs/{keyboard-faZBQysj.js → keyboard-Cix5TVkD.js} +4 -5
  275. package/dist/cjs/{keyboard-Bn0Ppim6.js → keyboard-cHxZlTyz.js} +3 -3
  276. package/dist/cjs/keyboard-controller-PtZoN2GS.js +167 -0
  277. package/dist/cjs/loader.cjs.js +4 -4
  278. package/dist/cjs/{md.transition-ChJcoZUH.js → md.transition-D4Q5jny7.js} +8 -10
  279. package/dist/cjs/{notch-controller-BO0UGB4F.js → notch-controller-fMfidI-7.js} +4 -4
  280. package/dist/cjs/{overlay-control-label-DnRLQR1t.js → overlay-control-label-D2sdL2O8.js} +11 -13
  281. package/dist/cjs/{overlays-CFGbPUmE.js → overlays-C2qrqpHm.js} +60 -336
  282. package/dist/cjs/{select-option-render-DqBHEjDn.js → select-option-render-Dh16lTnA.js} +3 -4
  283. package/dist/cjs/{status-tap-x2qDo5QR.js → status-tap-CgjQ-6jq.js} +3 -4
  284. package/dist/cjs/{swipe-back-CvZt_4YX.js → swipe-back-CmfRYdWQ.js} +5 -6
  285. package/dist/cjs/{theme-IlOsGAz7.js → theme-Bw0rpaNN.js} +7 -26
  286. package/dist/cjs/validity-BpS37YFM.js +19 -0
  287. package/dist/collection/collection-manifest.json +1 -13
  288. package/dist/collection/components/accordion/accordion.ios.css +58 -73
  289. package/dist/collection/components/accordion/accordion.js +327 -338
  290. package/dist/collection/components/accordion/accordion.md.css +59 -67
  291. package/dist/collection/components/accordion-group/accordion-group.ios.css +4 -16
  292. package/dist/collection/components/accordion-group/accordion-group.js +56 -69
  293. package/dist/collection/components/accordion-group/accordion-group.md.css +4 -22
  294. package/dist/collection/components/action-sheet/action-sheet.ios.css +54 -184
  295. package/dist/collection/components/action-sheet/action-sheet.js +166 -76
  296. package/dist/collection/components/action-sheet/action-sheet.md.css +55 -179
  297. package/dist/collection/components/action-sheet/test/basic/fixture.js +3 -0
  298. package/dist/collection/components/alert/alert.ios.css +54 -247
  299. package/dist/collection/components/alert/alert.js +236 -113
  300. package/dist/collection/components/alert/alert.md.css +56 -243
  301. package/dist/collection/components/app/app.js +86 -15
  302. package/dist/collection/components/avatar/avatar.ios.css +33 -7
  303. package/dist/collection/components/avatar/avatar.js +4 -120
  304. package/dist/collection/components/avatar/avatar.md.css +0 -51
  305. package/dist/collection/components/back-button/back-button.ios.css +48 -60
  306. package/dist/collection/components/back-button/back-button.js +61 -46
  307. package/dist/collection/components/back-button/back-button.md.css +48 -60
  308. package/dist/collection/components/backdrop/backdrop.ios.css +19 -56
  309. package/dist/collection/components/backdrop/backdrop.js +22 -26
  310. package/dist/collection/components/backdrop/backdrop.md.css +19 -56
  311. package/dist/collection/components/badge/badge.ios.css +12 -137
  312. package/dist/collection/components/badge/badge.js +15 -145
  313. package/dist/collection/components/badge/badge.md.css +12 -122
  314. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +8 -20
  315. package/dist/collection/components/breadcrumb/breadcrumb.js +101 -72
  316. package/dist/collection/components/breadcrumb/breadcrumb.md.css +8 -20
  317. package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +0 -6
  318. package/dist/collection/components/breadcrumbs/breadcrumbs.js +112 -99
  319. package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +0 -6
  320. package/dist/collection/components/button/button.ios.css +46 -154
  321. package/dist/collection/components/button/button.js +157 -122
  322. package/dist/collection/components/button/button.md.css +50 -150
  323. package/dist/collection/components/buttons/buttons.ios.css +7 -59
  324. package/dist/collection/components/buttons/buttons.js +21 -29
  325. package/dist/collection/components/buttons/buttons.md.css +3 -55
  326. package/dist/collection/components/card/card.ios.css +14 -65
  327. package/dist/collection/components/card/card.js +63 -61
  328. package/dist/collection/components/card/card.md.css +14 -65
  329. package/dist/collection/components/card-content/card-content.ios.css +35 -20
  330. package/dist/collection/components/card-content/card-content.js +10 -12
  331. package/dist/collection/components/card-content/card-content.md.css +35 -20
  332. package/dist/collection/components/card-header/card-header.ios.css +15 -27
  333. package/dist/collection/components/card-header/card-header.js +21 -20
  334. package/dist/collection/components/card-header/card-header.md.css +15 -27
  335. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +0 -12
  336. package/dist/collection/components/card-subtitle/card-subtitle.js +14 -11
  337. package/dist/collection/components/card-subtitle/card-subtitle.md.css +0 -12
  338. package/dist/collection/components/card-title/card-title.ios.css +0 -73
  339. package/dist/collection/components/card-title/card-title.js +14 -11
  340. package/dist/collection/components/card-title/card-title.md.css +0 -73
  341. package/dist/collection/components/checkbox/checkbox.ios.css +117 -242
  342. package/dist/collection/components/checkbox/checkbox.js +160 -165
  343. package/dist/collection/components/checkbox/checkbox.md.css +118 -243
  344. package/dist/collection/components/chip/chip.ios.css +14 -67
  345. package/dist/collection/components/chip/chip.js +20 -116
  346. package/dist/collection/components/chip/chip.md.css +14 -67
  347. package/dist/collection/components/col/col.css +4 -192
  348. package/dist/collection/components/col/col.js +186 -212
  349. package/dist/collection/components/content/content.css +2 -47
  350. package/dist/collection/components/content/content.js +101 -78
  351. package/dist/collection/components/datetime/datetime.ios.css +148 -304
  352. package/dist/collection/components/datetime/datetime.js +1064 -906
  353. package/dist/collection/components/datetime/datetime.md.css +138 -294
  354. package/dist/collection/components/datetime/utils/data.js +18 -19
  355. package/dist/collection/components/datetime/utils/format.js +21 -11
  356. package/dist/collection/components/datetime/utils/manipulation.js +8 -8
  357. package/dist/collection/components/datetime/utils/parse.js +10 -10
  358. package/dist/collection/components/datetime/utils/state.js +8 -2
  359. package/dist/collection/components/datetime/utils/validate.js +4 -5
  360. package/dist/collection/components/datetime-button/datetime-button.ios.css +5 -6
  361. package/dist/collection/components/datetime-button/datetime-button.js +253 -246
  362. package/dist/collection/components/datetime-button/datetime-button.md.css +5 -6
  363. package/dist/collection/components/fab/fab.css +1 -25
  364. package/dist/collection/components/fab/fab.js +25 -22
  365. package/dist/collection/components/fab-button/fab-button.ios.css +6 -18
  366. package/dist/collection/components/fab-button/fab-button.js +117 -83
  367. package/dist/collection/components/fab-button/fab-button.md.css +8 -20
  368. package/dist/collection/components/fab-list/fab-list.css +0 -12
  369. package/dist/collection/components/fab-list/fab-list.js +15 -20
  370. package/dist/collection/components/footer/footer.ios.css +6 -33
  371. package/dist/collection/components/footer/footer.js +65 -151
  372. package/dist/collection/components/footer/footer.md.css +0 -40
  373. package/dist/collection/components/grid/grid.css +0 -12
  374. package/dist/collection/components/grid/grid.js +9 -15
  375. package/dist/collection/components/header/header.ios.css +133 -178
  376. package/dist/collection/components/header/header.js +70 -202
  377. package/dist/collection/components/header/header.md.css +9 -199
  378. package/dist/collection/components/header/header.utils.js +13 -6
  379. package/dist/collection/components/img/img.js +34 -16
  380. package/dist/collection/components/infinite-scroll/infinite-scroll.js +76 -164
  381. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +0 -12
  382. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +30 -19
  383. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +0 -12
  384. package/dist/collection/components/input/input.ios.css +135 -223
  385. package/dist/collection/components/input/input.js +339 -307
  386. package/dist/collection/components/input/input.md.css +207 -193
  387. package/dist/collection/components/input-otp/input-otp.ios.css +60 -105
  388. package/dist/collection/components/input-otp/input-otp.js +432 -437
  389. package/dist/collection/components/input-otp/input-otp.md.css +60 -105
  390. package/dist/collection/components/input-password-toggle/input-password-toggle.js +37 -60
  391. package/dist/collection/components/item/item.ios.css +80 -120
  392. package/dist/collection/components/item/item.js +113 -102
  393. package/dist/collection/components/item/item.md.css +79 -131
  394. package/dist/collection/components/item-divider/item-divider.ios.css +0 -18
  395. package/dist/collection/components/item-divider/item-divider.js +23 -21
  396. package/dist/collection/components/item-divider/item-divider.md.css +0 -18
  397. package/dist/collection/components/item-group/item-group.ios.css +0 -12
  398. package/dist/collection/components/item-group/item-group.js +7 -13
  399. package/dist/collection/components/item-group/item-group.md.css +0 -12
  400. package/dist/collection/components/item-option/item-option.ios.css +29 -136
  401. package/dist/collection/components/item-option/item-option.js +56 -92
  402. package/dist/collection/components/item-option/item-option.md.css +29 -136
  403. package/dist/collection/components/item-options/item-options.ios.css +34 -77
  404. package/dist/collection/components/item-options/item-options.js +17 -20
  405. package/dist/collection/components/item-options/item-options.md.css +34 -77
  406. package/dist/collection/components/item-sliding/{item-sliding.native.css → item-sliding.css} +9 -84
  407. package/dist/collection/components/item-sliding/item-sliding.js +61 -441
  408. package/dist/collection/components/item-sliding/test/test.utils.js +0 -13
  409. package/dist/collection/components/label/label.ios.css +0 -18
  410. package/dist/collection/components/label/label.js +32 -15
  411. package/dist/collection/components/label/label.md.css +0 -18
  412. package/dist/collection/components/list/list.ios.css +14 -54
  413. package/dist/collection/components/list/list.js +19 -55
  414. package/dist/collection/components/list/list.md.css +16 -56
  415. package/dist/collection/components/list-header/list-header.ios.css +38 -82
  416. package/dist/collection/components/list-header/list-header.js +18 -11
  417. package/dist/collection/components/list-header/list-header.md.css +38 -82
  418. package/dist/collection/components/loading/loading.ios.css +1 -13
  419. package/dist/collection/components/loading/loading.js +143 -62
  420. package/dist/collection/components/loading/loading.md.css +1 -13
  421. package/dist/collection/components/menu/menu.ios.css +3 -15
  422. package/dist/collection/components/menu/menu.js +108 -71
  423. package/dist/collection/components/menu/menu.md.css +3 -15
  424. package/dist/collection/components/menu-button/menu-button.ios.css +14 -48
  425. package/dist/collection/components/menu-button/menu-button.js +38 -45
  426. package/dist/collection/components/menu-button/menu-button.md.css +15 -49
  427. package/dist/collection/components/menu-toggle/menu-toggle.js +25 -21
  428. package/dist/collection/components/modal/animations/ios.enter.js +1 -1
  429. package/dist/collection/components/modal/animations/md.enter.js +1 -1
  430. package/dist/collection/components/modal/animations/sheet.js +2 -8
  431. package/dist/collection/components/modal/gestures/sheet.js +16 -83
  432. package/dist/collection/components/modal/gestures/swipe-to-close.js +1 -2
  433. package/dist/collection/components/modal/modal.ios.css +70 -178
  434. package/dist/collection/components/modal/modal.js +399 -268
  435. package/dist/collection/components/modal/modal.md.css +70 -178
  436. package/dist/collection/components/modal/safe-area-utils.js +4 -5
  437. package/dist/collection/components/modal/test/fixtures.js +3 -0
  438. package/dist/collection/components/nav/nav.css +1 -7
  439. package/dist/collection/components/nav/nav.js +72 -256
  440. package/dist/collection/components/nav/view-controller.js +7 -1
  441. package/dist/collection/components/nav-link/nav-link.js +21 -14
  442. package/dist/collection/components/note/note.ios.css +0 -12
  443. package/dist/collection/components/note/note.js +14 -11
  444. package/dist/collection/components/note/note.md.css +0 -12
  445. package/dist/collection/components/picker/picker.ios.css +3 -15
  446. package/dist/collection/components/picker/picker.js +403 -398
  447. package/dist/collection/components/picker/picker.md.css +3 -15
  448. package/dist/collection/components/picker-column/picker-column.css +5 -9
  449. package/dist/collection/components/picker-column/picker-column.js +418 -409
  450. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +0 -6
  451. package/dist/collection/components/picker-column-option/picker-column-option.js +38 -42
  452. package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -7
  453. package/dist/collection/components/popover/animations/ios.enter.js +1 -2
  454. package/dist/collection/components/popover/animations/md.enter.js +1 -2
  455. package/dist/collection/components/popover/popover.ios.css +2 -15
  456. package/dist/collection/components/popover/popover.js +313 -199
  457. package/dist/collection/components/popover/popover.md.css +2 -15
  458. package/dist/collection/components/popover/test/fixture.js +1 -0
  459. package/dist/collection/components/popover/utils.js +4 -6
  460. package/dist/collection/components/progress-bar/progress-bar.ios.css +17 -48
  461. package/dist/collection/components/progress-bar/progress-bar.js +33 -65
  462. package/dist/collection/components/progress-bar/progress-bar.md.css +17 -48
  463. package/dist/collection/components/radio/radio.ios.css +102 -207
  464. package/dist/collection/components/radio/radio.js +108 -77
  465. package/dist/collection/components/radio/radio.md.css +102 -207
  466. package/dist/collection/components/radio-group/radio-group.ios.css +19 -43
  467. package/dist/collection/components/radio-group/radio-group.js +107 -113
  468. package/dist/collection/components/radio-group/radio-group.md.css +19 -43
  469. package/dist/collection/components/radio-group/test/fixtures.js +2 -0
  470. package/dist/collection/components/range/range.ios.css +85 -128
  471. package/dist/collection/components/range/range.js +303 -245
  472. package/dist/collection/components/range/range.md.css +85 -128
  473. package/dist/collection/components/refresher/refresher.ios.css +1 -14
  474. package/dist/collection/components/refresher/refresher.js +117 -88
  475. package/dist/collection/components/refresher/refresher.md.css +2 -15
  476. package/dist/collection/components/refresher-content/refresher-content.js +47 -31
  477. package/dist/collection/components/reorder/reorder.ios.css +0 -6
  478. package/dist/collection/components/reorder/reorder.js +7 -33
  479. package/dist/collection/components/reorder/reorder.md.css +0 -6
  480. package/dist/collection/components/reorder-group/reorder-group.css +0 -6
  481. package/dist/collection/components/reorder-group/reorder-group.js +47 -22
  482. package/dist/collection/components/ripple-effect/{ripple-effect.common.css → ripple-effect.css} +1 -7
  483. package/dist/collection/components/ripple-effect/ripple-effect.js +17 -26
  484. package/dist/collection/components/route/route.js +39 -14
  485. package/dist/collection/components/route-redirect/route-redirect.js +31 -0
  486. package/dist/collection/components/router/router.js +37 -37
  487. package/dist/collection/components/router/utils/dom.js +25 -7
  488. package/dist/collection/components/router/utils/matching.js +7 -9
  489. package/dist/collection/components/router/utils/parser.js +1 -1
  490. package/dist/collection/components/router/utils/path.js +0 -1
  491. package/dist/collection/components/router-link/router-link.css +2 -8
  492. package/dist/collection/components/router-link/router-link.js +40 -19
  493. package/dist/collection/components/router-outlet/router-outlet.css +1 -7
  494. package/dist/collection/components/router-outlet/router-outlet.js +83 -25
  495. package/dist/collection/components/row/row.css +0 -16
  496. package/dist/collection/components/row/row.js +2 -9
  497. package/dist/collection/components/searchbar/searchbar.ios.css +18 -56
  498. package/dist/collection/components/searchbar/searchbar.js +321 -380
  499. package/dist/collection/components/searchbar/searchbar.md.css +18 -56
  500. package/dist/collection/components/segment/segment.ios.css +2 -45
  501. package/dist/collection/components/segment/segment.js +126 -94
  502. package/dist/collection/components/segment/segment.md.css +2 -45
  503. package/dist/collection/components/segment-button/segment-button.ios.css +105 -146
  504. package/dist/collection/components/segment-button/segment-button.js +49 -46
  505. package/dist/collection/components/segment-button/segment-button.md.css +107 -148
  506. package/dist/collection/components/segment-content/segment-content.js +1 -1
  507. package/dist/collection/components/segment-view/segment-view.ios.css +0 -6
  508. package/dist/collection/components/segment-view/segment-view.js +28 -27
  509. package/dist/collection/components/segment-view/segment-view.md.css +0 -6
  510. package/dist/collection/components/select/select.ios.css +177 -316
  511. package/dist/collection/components/select/select.js +401 -399
  512. package/dist/collection/components/select/select.md.css +179 -332
  513. package/dist/collection/components/select-modal/select-modal.ios.css +45 -293
  514. package/dist/collection/components/select-modal/select-modal.js +37 -79
  515. package/dist/collection/components/select-modal/select-modal.md.css +43 -273
  516. package/dist/collection/components/select-modal/test/fixtures.js +8 -1
  517. package/dist/collection/components/select-option/select-option.js +48 -15
  518. package/dist/collection/components/select-popover/select-popover.ios.css +124 -188
  519. package/dist/collection/components/select-popover/select-popover.js +44 -37
  520. package/dist/collection/components/select-popover/select-popover.md.css +47 -228
  521. package/dist/collection/components/select-popover/test/fixtures.js +8 -1
  522. package/dist/collection/components/skeleton-text/skeleton-text.css +0 -6
  523. package/dist/collection/components/skeleton-text/skeleton-text.js +15 -15
  524. package/dist/collection/components/spinner/{spinner.ionic.css → spinner.css} +10 -78
  525. package/dist/collection/components/spinner/spinner.js +26 -55
  526. package/dist/collection/components/split-pane/split-pane.ios.css +2 -20
  527. package/dist/collection/components/split-pane/split-pane.js +33 -28
  528. package/dist/collection/components/split-pane/split-pane.md.css +2 -20
  529. package/dist/collection/components/tab/tab.js +17 -10
  530. package/dist/collection/components/tab-bar/tab-bar.ios.css +43 -86
  531. package/dist/collection/components/tab-bar/tab-bar.js +44 -190
  532. package/dist/collection/components/tab-bar/tab-bar.md.css +43 -86
  533. package/dist/collection/components/tab-button/tab-button.ios.css +95 -171
  534. package/dist/collection/components/tab-button/tab-button.js +68 -74
  535. package/dist/collection/components/tab-button/tab-button.md.css +93 -137
  536. package/dist/collection/components/tabs/tabs.css +1 -7
  537. package/dist/collection/components/tabs/tabs.js +33 -23
  538. package/dist/collection/components/text/text.css +0 -6
  539. package/dist/collection/components/text/text.js +12 -7
  540. package/dist/collection/components/textarea/textarea.ios.css +158 -298
  541. package/dist/collection/components/textarea/textarea.js +275 -295
  542. package/dist/collection/components/textarea/textarea.md.css +159 -312
  543. package/dist/collection/components/thumbnail/thumbnail.css +0 -6
  544. package/dist/collection/components/thumbnail/thumbnail.js +2 -9
  545. package/dist/collection/components/title/title.ios.css +4 -32
  546. package/dist/collection/components/title/title.js +23 -13
  547. package/dist/collection/components/title/title.md.css +4 -39
  548. package/dist/collection/components/toast/animations/utils.js +1 -1
  549. package/dist/collection/components/toast/toast.ios.css +45 -84
  550. package/dist/collection/components/toast/toast.js +232 -178
  551. package/dist/collection/components/toast/toast.md.css +45 -84
  552. package/dist/collection/components/toggle/toggle.ios.css +127 -247
  553. package/dist/collection/components/toggle/toggle.js +175 -177
  554. package/dist/collection/components/toggle/toggle.md.css +127 -245
  555. package/dist/collection/components/toolbar/toolbar.ios.css +47 -90
  556. package/dist/collection/components/toolbar/toolbar.js +25 -222
  557. package/dist/collection/components/toolbar/toolbar.md.css +47 -90
  558. package/dist/collection/global/config.js +4 -6
  559. package/dist/collection/global/ionic-global.js +20 -242
  560. package/dist/collection/index.js +1 -1
  561. package/dist/collection/utils/animation/animation.js +3 -3
  562. package/dist/collection/utils/config.js +5 -4
  563. package/dist/collection/utils/focus-controller/index.js +1 -1
  564. package/dist/collection/utils/focus-trap.js +5 -16
  565. package/dist/collection/utils/focus-visible.js +0 -22
  566. package/dist/collection/utils/forms/index.js +0 -1
  567. package/dist/collection/utils/forms/validity.js +0 -31
  568. package/dist/collection/utils/framework-delegate.js +5 -9
  569. package/dist/collection/utils/gesture/gesture-controller.js +15 -8
  570. package/dist/collection/utils/gesture/index.js +10 -2
  571. package/dist/collection/utils/gesture/listener.js +1 -1
  572. package/dist/collection/utils/hardware-back-button.js +3 -18
  573. package/dist/collection/utils/helpers.js +5 -72
  574. package/dist/collection/utils/input-shims/hacks/scroll-assist.js +4 -5
  575. package/dist/collection/utils/input-shims/hacks/scroll-data.js +1 -2
  576. package/dist/collection/utils/keyboard/keyboard-controller.js +6 -8
  577. package/dist/collection/utils/keyboard/keyboard.js +1 -1
  578. package/dist/collection/utils/media.js +0 -1
  579. package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
  580. package/dist/collection/utils/menu-controller/animations/push.js +1 -2
  581. package/dist/collection/utils/menu-controller/animations/reveal.js +1 -2
  582. package/dist/collection/utils/menu-controller/index.js +1 -2
  583. package/dist/collection/utils/native/haptic.js +2 -3
  584. package/dist/collection/utils/native/keyboard.js +2 -2
  585. package/dist/collection/utils/native/status-bar.js +1 -1
  586. package/dist/collection/utils/overlay-control-label.js +11 -13
  587. package/dist/collection/utils/overlays.js +45 -312
  588. package/dist/collection/utils/platform.js +4 -5
  589. package/dist/collection/utils/rtl/dir.js +1 -1
  590. package/dist/collection/utils/sanitization/index.js +2 -2
  591. package/dist/collection/utils/select-option-render.js +1 -2
  592. package/dist/collection/utils/slot-mutation-controller.js +1 -2
  593. package/dist/collection/utils/test/playwright/apply-keyboard-focus.js +1 -1
  594. package/dist/collection/utils/test/playwright/drag-element.js +11 -35
  595. package/dist/collection/utils/test/playwright/generator.js +25 -51
  596. package/dist/collection/utils/test/playwright/page/event-spy.js +11 -12
  597. package/dist/collection/utils/test/playwright/page/utils/goto.js +5 -15
  598. package/dist/collection/utils/test/playwright/page/utils/set-content.js +4 -27
  599. package/dist/collection/utils/test/playwright/page/utils/set-ion-viewport.js +2 -3
  600. package/dist/collection/utils/test/press-keys.js +10 -17
  601. package/dist/collection/utils/theme.js +7 -26
  602. package/dist/collection/utils/transition/ios.transition.js +9 -14
  603. package/dist/collection/utils/transition/md.transition.js +3 -4
  604. package/dist/docs.json +502 -10022
  605. package/dist/esm/{animation-B2qdQ_ou.js → animation-CVK55yMY.js} +5 -5
  606. package/dist/esm/{app-globals-DZ-iIjxA.js → app-globals-Bk1_t4sH.js} +1 -1
  607. package/dist/esm/{button-active-BmajAby6.js → button-active-CdCqmeT0.js} +3 -3
  608. package/dist/esm/{capacitor-CtQSWUU0.js → capacitor-CFERIeaU.js} +1 -1
  609. package/dist/esm/{config-BwKpO3Is.js → config-DWCzVL3Y.js} +5 -4
  610. package/dist/esm/{dir-C53feagD.js → dir-B-FxiyeI.js} +1 -1
  611. package/dist/{cjs/focus-visible-BIj-I3-C.js → esm/focus-visible-BmVRXR1y.js} +1 -27
  612. package/dist/esm/{format-2WlZcMvG.js → format-sMi4BZ_l.js} +41 -31
  613. package/dist/esm/{framework-delegate-DO2QXccA.js → framework-delegate-BfAlKlW5.js} +6 -10
  614. package/dist/esm/{gesture-controller-BTEOs1at.js → gesture-controller-TXPDHL13.js} +15 -8
  615. package/dist/esm/{haptic-DFgKNCce.js → haptic-Cq4UAeka.js} +3 -4
  616. package/dist/esm/hardware-back-button-DcHMMB9j.js +115 -0
  617. package/dist/esm/{helpers-DfF5_wJc.js → helpers-BPcITY5s.js} +7 -73
  618. package/dist/esm/{index-BjaaZqVY.js → index-B9GsUd2c.js} +3 -4
  619. package/dist/esm/{index-B4Kq2YNk.js → index-BvabGprD.js} +1 -2
  620. package/dist/esm/{index-C0EQceqV.js → index-D1CQtpUN.js} +9 -48
  621. package/dist/esm/{index-Mq5pCWmZ.js → index-DDa8edAS.js} +3 -3
  622. package/dist/esm/{index-KxK0gcRp.js → index-DcUt1pPn.js} +2 -2
  623. package/dist/esm/{index-CfgBF1SE.js → index-DppOcPFQ.js} +10 -4
  624. package/dist/esm/{index-BIUWGRUl.js → index-DqVqy_Cy.js} +5 -5
  625. package/dist/esm/index-ZjP4CjeZ.js +7 -0
  626. package/dist/esm/{index-Di034G4O.js → index-ks-BjikL.js} +12 -13
  627. package/dist/esm/index.js +17 -16
  628. package/dist/esm/{input-shims-DvNNw70a.js → input-shims-C1dCKVMO.js} +11 -14
  629. package/dist/esm/{input.utils-_LkBfBWt.js → input.utils-Dd5xwlP6.js} +4 -5
  630. package/dist/esm/ion-accordion_2.entry.js +378 -382
  631. package/dist/esm/ion-action-sheet.entry.js +178 -86
  632. package/dist/esm/ion-alert.entry.js +250 -125
  633. package/dist/esm/ion-app_8.entry.js +459 -607
  634. package/dist/esm/ion-avatar_3.entry.js +19 -125
  635. package/dist/esm/ion-back-button.entry.js +64 -49
  636. package/dist/esm/ion-backdrop.entry.js +23 -22
  637. package/dist/esm/ion-breadcrumb_2.entry.js +211 -169
  638. package/dist/esm/ion-button_2.entry.js +152 -117
  639. package/dist/esm/ion-card_5.entry.js +109 -79
  640. package/dist/esm/ion-checkbox.entry.js +163 -129
  641. package/dist/esm/ion-chip.entry.js +21 -56
  642. package/dist/esm/ion-col_3.entry.js +186 -61
  643. package/dist/esm/ion-datetime-button.entry.js +255 -247
  644. package/dist/esm/ion-datetime.entry.js +2765 -0
  645. package/dist/esm/ion-fab_3.entry.js +154 -112
  646. package/dist/esm/ion-img.entry.js +34 -16
  647. package/dist/esm/ion-infinite-scroll_2.entry.js +108 -156
  648. package/dist/esm/ion-input-otp.entry.js +435 -437
  649. package/dist/esm/ion-input-password-toggle.entry.js +40 -64
  650. package/dist/esm/ion-input.entry.js +330 -276
  651. package/dist/esm/ion-item-option_3.entry.js +136 -511
  652. package/dist/esm/ion-item_8.entry.js +217 -189
  653. package/dist/esm/ion-loading.entry.js +151 -68
  654. package/dist/esm/ion-menu_3.entry.js +181 -137
  655. package/dist/esm/ion-modal.entry.js +491 -448
  656. package/dist/esm/ion-nav_2.entry.js +103 -163
  657. package/dist/esm/ion-picker-column-option.entry.js +39 -39
  658. package/dist/esm/ion-picker-column.entry.js +421 -409
  659. package/dist/esm/ion-picker.entry.js +405 -400
  660. package/dist/esm/ion-popover.entry.js +323 -211
  661. package/dist/esm/ion-progress-bar.entry.js +35 -47
  662. package/dist/esm/ion-radio_2.entry.js +216 -161
  663. package/dist/esm/ion-range.entry.js +307 -249
  664. package/dist/esm/ion-refresher_2.entry.js +174 -121
  665. package/dist/esm/ion-reorder_2.entry.js +59 -53
  666. package/dist/esm/ion-ripple-effect.entry.js +18 -26
  667. package/dist/esm/ion-route_4.entry.js +178 -75
  668. package/dist/esm/ion-searchbar.entry.js +308 -331
  669. package/dist/esm/ion-segment-content.entry.js +2 -2
  670. package/dist/esm/ion-segment-view.entry.js +28 -27
  671. package/dist/esm/ion-segment_2.entry.js +177 -141
  672. package/dist/esm/ion-select-modal.entry.js +49 -69
  673. package/dist/esm/ion-select_3.entry.js +482 -386
  674. package/dist/esm/ion-spinner.entry.js +28 -36
  675. package/dist/esm/ion-split-pane.entry.js +34 -25
  676. package/dist/esm/ion-tab-bar_2.entry.js +115 -178
  677. package/dist/esm/ion-tab_2.entry.js +54 -29
  678. package/dist/esm/ion-text.entry.js +13 -7
  679. package/dist/esm/ion-textarea.entry.js +274 -269
  680. package/dist/esm/ion-toast.entry.js +243 -148
  681. package/dist/esm/ion-toggle.entry.js +184 -187
  682. package/dist/esm/ionic-global-5bZ91kOL.js +151 -0
  683. package/dist/esm/ionic.js +5 -5
  684. package/dist/esm/{ios.transition-CgScDbsb.js → ios.transition-OcwIGkv9.js} +14 -20
  685. package/dist/esm/{item-multiple-inputs-C6onMFOo.js → item-multiple-inputs-ifd3ZrqY.js} +1 -1
  686. package/dist/esm/{keyboard-WJix-wcz.js → keyboard-Cj8mLJeq.js} +4 -5
  687. package/dist/esm/{keyboard-CyyguLDw.js → keyboard-DAF8GNJ9.js} +3 -3
  688. package/dist/esm/keyboard-controller-DEwoa1ev.js +165 -0
  689. package/dist/esm/loader.js +5 -5
  690. package/dist/esm/{md.transition-DThqYazt.js → md.transition-BetdF0bc.js} +8 -10
  691. package/dist/esm/{notch-controller-MTblRxjD.js → notch-controller-DBSn-Uat.js} +2 -2
  692. package/dist/esm/{overlay-control-label-CODBQrPj.js → overlay-control-label-BSQPZ79H.js} +11 -13
  693. package/dist/esm/{overlays-tv6nLsmk.js → overlays-DUzb9CQf.js} +57 -333
  694. package/dist/esm/{select-option-render-BlKZ2H83.js → select-option-render-DsW8svRr.js} +3 -4
  695. package/dist/esm/{status-tap-CoPI1M2q.js → status-tap-C-wNhea0.js} +3 -4
  696. package/dist/esm/{swipe-back-qmvTRnSq.js → swipe-back-D6YSgAn7.js} +5 -6
  697. package/dist/esm/theme-byZM6qHV.js +48 -0
  698. package/dist/esm/validity-DJztqcrH.js +17 -0
  699. package/dist/html.html-data.json +146 -2713
  700. package/dist/ionic/index.esm.js +1 -1
  701. package/dist/ionic/ionic.esm.js +1 -1
  702. package/dist/ionic/p-01eaee58.entry.js +4 -0
  703. package/dist/ionic/p-0c567140.entry.js +4 -0
  704. package/dist/ionic/p-105bb794.entry.js +4 -0
  705. package/dist/ionic/p-10d55bb6.entry.js +4 -0
  706. package/dist/ionic/p-173a87d8.entry.js +4 -0
  707. package/dist/ionic/p-178da672.entry.js +4 -0
  708. package/dist/ionic/p-1ead2857.entry.js +4 -0
  709. package/dist/ionic/p-224e2464.entry.js +4 -0
  710. package/dist/ionic/p-2268e718.entry.js +4 -0
  711. package/dist/ionic/p-2b5283f3.entry.js +4 -0
  712. package/dist/ionic/p-2b6decac.entry.js +4 -0
  713. package/dist/ionic/p-2da5d9c6.entry.js +4 -0
  714. package/dist/ionic/p-31890acd.entry.js +4 -0
  715. package/dist/ionic/p-34ef7425.entry.js +4 -0
  716. package/dist/ionic/p-34f7c1d8.entry.js +4 -0
  717. package/dist/ionic/p-3b1e6fa4.entry.js +4 -0
  718. package/dist/ionic/p-42fefd2c.entry.js +4 -0
  719. package/dist/ionic/p-440cd489.entry.js +4 -0
  720. package/dist/ionic/p-460da491.entry.js +4 -0
  721. package/dist/ionic/p-53f680e8.entry.js +4 -0
  722. package/dist/ionic/p-57ba508f.entry.js +4 -0
  723. package/dist/ionic/p-599e5a75.entry.js +4 -0
  724. package/dist/ionic/p-5f670a9e.entry.js +4 -0
  725. package/dist/ionic/p-63502088.entry.js +4 -0
  726. package/dist/ionic/p-6e6bf45d.entry.js +4 -0
  727. package/dist/ionic/p-6f0b6a48.entry.js +4 -0
  728. package/dist/ionic/p-7438c462.entry.js +4 -0
  729. package/dist/ionic/p-747716e7.entry.js +4 -0
  730. package/dist/ionic/p-7759fcaf.entry.js +4 -0
  731. package/dist/ionic/p-7a8338e2.entry.js +4 -0
  732. package/dist/ionic/p-80f9f1dc.entry.js +4 -0
  733. package/dist/ionic/p-83ff4dcb.entry.js +4 -0
  734. package/dist/ionic/p-86f03895.entry.js +4 -0
  735. package/dist/ionic/p-87b8d70e.entry.js +4 -0
  736. package/dist/ionic/p-888236bf.entry.js +4 -0
  737. package/dist/ionic/p-8a92ca23.entry.js +4 -0
  738. package/dist/ionic/p-8c9af4ad.entry.js +4 -0
  739. package/dist/ionic/p-9669f546.entry.js +4 -0
  740. package/dist/ionic/p-9bcd8b74.entry.js +4 -0
  741. package/dist/ionic/p-B-FxiyeI.js +4 -0
  742. package/dist/ionic/p-B2trYd8K.js +4 -0
  743. package/dist/ionic/p-BMPN55of.js +4 -0
  744. package/dist/ionic/p-BNKr91bi.js +4 -0
  745. package/dist/ionic/p-BSQPZ79H.js +4 -0
  746. package/dist/ionic/p-BSzG1VcX.js +4 -0
  747. package/dist/ionic/p-BVgBHS96.js +4 -0
  748. package/dist/ionic/p-BX2IOAqC.js +4 -0
  749. package/dist/ionic/p-BhamHSw3.js +4 -0
  750. package/dist/ionic/p-BmVRXR1y.js +4 -0
  751. package/dist/ionic/p-BufXJ_A8.js +4 -0
  752. package/dist/ionic/p-BvabGprD.js +4 -0
  753. package/dist/ionic/p-C73UOs4m.js +4 -0
  754. package/dist/ionic/p-CHpEzg-o.js +4 -0
  755. package/dist/ionic/p-CIGNaXM1.js +4 -0
  756. package/{components/p-r_CFQBc1.js → dist/ionic/p-CUSwMljM.js} +1 -1
  757. package/dist/ionic/p-CeOSrSdu.js +4 -0
  758. package/dist/ionic/p-CfkB7_FV.js +4 -0
  759. package/dist/ionic/p-CmKf4pgI.js +4 -0
  760. package/dist/ionic/p-CnM-CMw7.js +4 -0
  761. package/dist/ionic/p-D1CQtpUN.js +5 -0
  762. package/dist/ionic/p-D5t_-oMk.js +4 -0
  763. package/dist/ionic/p-DJztqcrH.js +4 -0
  764. package/dist/ionic/p-DVYb1IVZ.js +4 -0
  765. package/dist/ionic/p-DWCzVL3Y.js +4 -0
  766. package/dist/ionic/p-DfJ-SVJf.js +4 -0
  767. package/dist/ionic/p-DmXrLsoD.js +4 -0
  768. package/dist/ionic/p-DtLHAMFW.js +4 -0
  769. package/dist/ionic/p-Dtlob2JL.js +4 -0
  770. package/dist/ionic/p-F7ipfyOA.js +4 -0
  771. package/dist/ionic/p-I9ETXg5W.js +4 -0
  772. package/dist/ionic/{p-oUgyLDGL.js → p-IaXd5VMv.js} +1 -1
  773. package/dist/ionic/p-T71k3C35.js +4 -0
  774. package/dist/ionic/p-TXPDHL13.js +4 -0
  775. package/dist/ionic/p-ZjP4CjeZ.js +4 -0
  776. package/dist/ionic/{p-Cipl19Qe.js → p-aL0G45tD.js} +1 -1
  777. package/dist/ionic/p-acbb97c3.entry.js +4 -0
  778. package/dist/ionic/p-aeb85531.entry.js +4 -0
  779. package/dist/ionic/p-b157f80d.entry.js +4 -0
  780. package/dist/ionic/p-b158de5d.entry.js +4 -0
  781. package/dist/ionic/p-b40c9715.entry.js +4 -0
  782. package/dist/ionic/p-b852101e.entry.js +4 -0
  783. package/dist/ionic/p-byZM6qHV.js +4 -0
  784. package/dist/ionic/p-c0d81bee.entry.js +4 -0
  785. package/dist/ionic/p-c8a327fb.entry.js +4 -0
  786. package/dist/ionic/p-d42ae99f.entry.js +4 -0
  787. package/dist/ionic/p-d47ff529.entry.js +4 -0
  788. package/dist/ionic/p-eHi73fGE.js +4 -0
  789. package/dist/ionic/p-eeabce92.entry.js +4 -0
  790. package/dist/ionic/p-efc66d77.entry.js +4 -0
  791. package/dist/ionic/p-f6d203dc.entry.js +4 -0
  792. package/dist/ionic/p-u2a770LZ.js +4 -0
  793. package/dist/types/components/accordion/accordion.d.ts +3 -6
  794. package/dist/types/components/accordion-group/accordion-group.d.ts +1 -12
  795. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +7 -3
  796. package/dist/types/components/action-sheet/action-sheet.d.ts +2 -3
  797. package/dist/types/components/alert/alert-interface.d.ts +7 -3
  798. package/dist/types/components/alert/alert.d.ts +2 -3
  799. package/dist/types/components/app/app.d.ts +5 -4
  800. package/dist/types/components/avatar/avatar.d.ts +0 -32
  801. package/dist/types/components/back-button/back-button.d.ts +1 -2
  802. package/dist/types/components/backdrop/backdrop.d.ts +0 -4
  803. package/dist/types/components/badge/badge.d.ts +1 -34
  804. package/dist/types/components/breadcrumb/breadcrumb.d.ts +1 -4
  805. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
  806. package/dist/types/components/button/button.d.ts +8 -23
  807. package/dist/types/components/buttons/buttons.d.ts +1 -5
  808. package/dist/types/components/card/card.d.ts +1 -8
  809. package/dist/types/components/card-content/card-content.d.ts +1 -2
  810. package/dist/types/components/card-header/card-header.d.ts +2 -3
  811. package/dist/types/components/card-subtitle/card-subtitle.d.ts +1 -2
  812. package/dist/types/components/card-title/card-title.d.ts +1 -2
  813. package/dist/types/components/checkbox/checkbox.d.ts +4 -14
  814. package/dist/types/components/chip/chip.d.ts +1 -26
  815. package/dist/types/components/col/col.d.ts +5 -52
  816. package/dist/types/components/content/content.d.ts +0 -3
  817. package/dist/types/components/datetime/datetime.d.ts +1 -26
  818. package/dist/types/components/datetime/utils/data.d.ts +5 -5
  819. package/dist/types/components/datetime-button/datetime-button.d.ts +1 -2
  820. package/dist/types/components/fab/fab.d.ts +0 -4
  821. package/dist/types/components/fab-button/fab-button.d.ts +3 -5
  822. package/dist/types/components/fab-list/fab-list.d.ts +0 -4
  823. package/dist/types/components/footer/footer.d.ts +3 -20
  824. package/dist/types/components/grid/grid.d.ts +0 -4
  825. package/dist/types/components/header/header.d.ts +3 -26
  826. package/dist/types/components/header/header.utils.d.ts +5 -4
  827. package/dist/types/components/img/img.d.ts +1 -2
  828. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +0 -21
  829. package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +0 -4
  830. package/dist/types/components/input/input.d.ts +6 -35
  831. package/dist/types/components/input-otp/input-otp.d.ts +0 -37
  832. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +0 -2
  833. package/dist/types/components/item/item.d.ts +4 -11
  834. package/dist/types/components/item-divider/item-divider.d.ts +1 -2
  835. package/dist/types/components/item-group/item-group.d.ts +0 -4
  836. package/dist/types/components/item-option/item-option.d.ts +1 -18
  837. package/dist/types/components/item-options/item-options.d.ts +0 -4
  838. package/dist/types/components/item-sliding/item-sliding.d.ts +1 -47
  839. package/dist/types/components/item-sliding/test/test.utils.d.ts +0 -13
  840. package/dist/types/components/label/label.d.ts +1 -2
  841. package/dist/types/components/list/list.d.ts +1 -15
  842. package/dist/types/components/list-header/list-header.d.ts +1 -2
  843. package/dist/types/components/loading/loading-interface.d.ts +7 -2
  844. package/dist/types/components/loading/loading.d.ts +2 -3
  845. package/dist/types/components/menu/menu.d.ts +0 -3
  846. package/dist/types/components/menu-button/menu-button.d.ts +1 -3
  847. package/dist/types/components/menu-toggle/menu-toggle.d.ts +0 -3
  848. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  849. package/dist/types/components/modal/modal-interface.d.ts +7 -4
  850. package/dist/types/components/modal/modal.d.ts +12 -15
  851. package/dist/types/components/nav/nav-interface.d.ts +1 -10
  852. package/dist/types/components/nav/nav.d.ts +3 -27
  853. package/dist/types/components/nav-link/nav-link.d.ts +0 -4
  854. package/dist/types/components/note/note.d.ts +1 -2
  855. package/dist/types/components/picker/picker.d.ts +1 -2
  856. package/dist/types/components/picker-column/picker-column.d.ts +1 -2
  857. package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -4
  858. package/dist/types/components/popover/popover-interface.d.ts +6 -3
  859. package/dist/types/components/popover/popover.d.ts +5 -6
  860. package/dist/types/components/progress-bar/progress-bar.d.ts +1 -10
  861. package/dist/types/components/radio/radio.d.ts +1 -2
  862. package/dist/types/components/radio-group/radio-group.d.ts +0 -12
  863. package/dist/types/components/range/range.d.ts +1 -2
  864. package/dist/types/components/refresher/refresher.d.ts +1 -2
  865. package/dist/types/components/refresher-content/refresher-content.d.ts +0 -4
  866. package/dist/types/components/reorder/reorder.d.ts +0 -9
  867. package/dist/types/components/reorder-group/reorder-group.d.ts +0 -4
  868. package/dist/types/components/ripple-effect/ripple-effect.d.ts +0 -4
  869. package/dist/types/components/route/route.d.ts +1 -5
  870. package/dist/types/components/router/router.d.ts +0 -4
  871. package/dist/types/components/router-link/router-link.d.ts +0 -4
  872. package/dist/types/components/router-outlet/router-outlet.d.ts +8 -4
  873. package/dist/types/components/row/row.d.ts +0 -4
  874. package/dist/types/components/searchbar/searchbar.d.ts +11 -57
  875. package/dist/types/components/segment/segment.d.ts +1 -2
  876. package/dist/types/components/segment-button/segment-button.d.ts +1 -2
  877. package/dist/types/components/select/select.d.ts +14 -49
  878. package/dist/types/components/select-modal/select-modal.d.ts +0 -8
  879. package/dist/types/components/select-option/select-option.d.ts +4 -7
  880. package/dist/types/components/select-popover/select-popover.d.ts +0 -3
  881. package/dist/types/components/skeleton-text/skeleton-text.d.ts +0 -4
  882. package/dist/types/components/spinner/spinner.d.ts +0 -15
  883. package/dist/types/components/split-pane/split-pane.d.ts +0 -4
  884. package/dist/types/components/tab/tab.d.ts +0 -4
  885. package/dist/types/components/tab-bar/tab-bar-interface.d.ts +0 -1
  886. package/dist/types/components/tab-bar/tab-bar.d.ts +3 -41
  887. package/dist/types/components/tab-button/tab-button.d.ts +1 -12
  888. package/dist/types/components/tabs/tabs.d.ts +0 -3
  889. package/dist/types/components/text/text.d.ts +1 -2
  890. package/dist/types/components/textarea/textarea.d.ts +4 -53
  891. package/dist/types/components/thumbnail/thumbnail.d.ts +0 -4
  892. package/dist/types/components/title/title.d.ts +0 -4
  893. package/dist/types/components/toast/animations/utils.d.ts +2 -2
  894. package/dist/types/components/toast/toast-interface.d.ts +7 -3
  895. package/dist/types/components/toast/toast.d.ts +2 -19
  896. package/dist/types/components/toggle/toggle.d.ts +1 -15
  897. package/dist/types/components/toolbar/toolbar.d.ts +3 -43
  898. package/dist/types/components.d.ts +263 -2171
  899. package/dist/types/global/ionic-global.d.ts +2 -28
  900. package/dist/types/index.d.ts +1 -1
  901. package/dist/types/interface.d.ts +0 -4
  902. package/dist/types/utils/config.d.ts +2 -114
  903. package/dist/types/utils/focus-trap.d.ts +1 -1
  904. package/dist/types/utils/focus-visible.d.ts +0 -13
  905. package/dist/types/utils/forms/index.d.ts +0 -1
  906. package/dist/types/utils/forms/validity.d.ts +0 -7
  907. package/dist/types/utils/helpers.d.ts +0 -22
  908. package/dist/types/utils/overlay-control-label.d.ts +9 -11
  909. package/dist/types/utils/overlays-interface.d.ts +1 -31
  910. package/dist/types/utils/overlays.d.ts +12 -10
  911. package/dist/types/utils/test/playwright/drag-element.d.ts +3 -16
  912. package/dist/types/utils/test/playwright/generator.d.ts +2 -31
  913. package/dist/types/utils/test/playwright/playwright-page.d.ts +1 -1
  914. package/dist/types/utils/test/playwright/testExpect.d.ts +1 -1
  915. package/dist/types/utils/theme.d.ts +0 -9
  916. package/hydrate/index.js +10246 -12016
  917. package/hydrate/index.mjs +10246 -12016
  918. package/package.json +56 -17
  919. package/components/ion-divider.d.ts +0 -11
  920. package/components/ion-divider.js +0 -4
  921. package/components/ion-gallery-item.d.ts +0 -11
  922. package/components/ion-gallery-item.js +0 -4
  923. package/components/ion-gallery.d.ts +0 -11
  924. package/components/ion-gallery.js +0 -4
  925. package/components/ion-picker-legacy-column.d.ts +0 -11
  926. package/components/ion-picker-legacy-column.js +0 -4
  927. package/components/ion-picker-legacy.d.ts +0 -11
  928. package/components/ion-picker-legacy.js +0 -4
  929. package/components/p-3VXQGlP7.js +0 -4
  930. package/components/p-B5krYTuW.js +0 -4
  931. package/components/p-B6a9IJZ0.js +0 -4
  932. package/components/p-BArGQkuV.js +0 -4
  933. package/components/p-BDqjX7Z_.js +0 -4
  934. package/components/p-BE21dB_a.js +0 -4
  935. package/components/p-BG-Q139o.js +0 -4
  936. package/components/p-BPxMDyfV.js +0 -4
  937. package/components/p-BT8fsdEQ.js +0 -4
  938. package/components/p-BTEOs1at.js +0 -4
  939. package/components/p-BWH3I3Dl.js +0 -4
  940. package/components/p-BYSs-jZz.js +0 -4
  941. package/components/p-BbVhJs-a.js +0 -4
  942. package/components/p-Bc6odfwr.js +0 -4
  943. package/components/p-BjW8SOqw.js +0 -4
  944. package/components/p-BkWXBpOv.js +0 -4
  945. package/components/p-Bt9GDUv-.js +0 -4
  946. package/components/p-BvNVjXg4.js +0 -4
  947. package/components/p-BwKpO3Is.js +0 -4
  948. package/components/p-BwlU9cX_.js +0 -4
  949. package/components/p-Bz4JFPmj.js +0 -4
  950. package/components/p-C53feagD.js +0 -4
  951. package/components/p-CBxy8OYq.js +0 -4
  952. package/components/p-CGdeq57o.js +0 -4
  953. package/components/p-CHPdgLHZ.js +0 -4
  954. package/components/p-CMZlqiT7.js +0 -4
  955. package/components/p-CMzkbes2.js +0 -4
  956. package/components/p-CODBQrPj.js +0 -4
  957. package/components/p-COPA4jD9.js +0 -4
  958. package/components/p-CPnW-OVE.js +0 -4
  959. package/components/p-CRmBpp1v.js +0 -4
  960. package/components/p-CT3P-wjL.js +0 -4
  961. package/components/p-CVYFPBs-.js +0 -4
  962. package/components/p-Cc3oC60a.js +0 -4
  963. package/components/p-CjY4Hs1X.js +0 -4
  964. package/components/p-Cl0B-RWe.js +0 -4
  965. package/components/p-CrYjk-l3.js +0 -4
  966. package/components/p-CsUcWJuB.js +0 -4
  967. package/components/p-D0Iqw6OZ.js +0 -4
  968. package/components/p-D0fnq0lf.js +0 -4
  969. package/components/p-D1kNlmYt.js +0 -4
  970. package/components/p-D1t981Ih.js +0 -4
  971. package/components/p-D9C5yWpF.js +0 -4
  972. package/components/p-DDNG-IsR.js +0 -4
  973. package/components/p-DJSp7Si8.js +0 -4
  974. package/components/p-DL5wyRub.js +0 -4
  975. package/components/p-DXKZXLjV.js +0 -4
  976. package/components/p-DaJxRxSQ.js +0 -4
  977. package/components/p-Dhi5xtNS.js +0 -4
  978. package/components/p-Do8qRv6r.js +0 -4
  979. package/components/p-Dt--PjSF.js +0 -4
  980. package/components/p-DylrHLJF.js +0 -4
  981. package/components/p-FCT_QxQG.js +0 -4
  982. package/components/p-OCde3AhO.js +0 -4
  983. package/components/p-OPFCgx0m.js +0 -4
  984. package/components/p-PCVpe9Tq.js +0 -4
  985. package/components/p-Rkm2AOZ2.js +0 -4
  986. package/components/p-WSZErkoI.js +0 -4
  987. package/components/p-bHSMZulH.js +0 -4
  988. package/components/p-fIOYmaqA.js +0 -4
  989. package/components/p-hNcst9K9.js +0 -4
  990. package/components/p-hW_3y-wm.js +0 -4
  991. package/components/p-nLMDgmzd.js +0 -4
  992. package/components/p-oI96rnOD.js +0 -4
  993. package/components/p-vXpMhGrs.js +0 -4
  994. package/components/p-zBZRdRDd.js +0 -4
  995. package/css/ionic/bundle.ionic.css +0 -1
  996. package/css/ionic/bundle.ionic.css.map +0 -1
  997. package/css/ionic/core.ionic.css +0 -1
  998. package/css/ionic/core.ionic.css.map +0 -1
  999. package/css/ionic/global.bundle.ionic.css +0 -1
  1000. package/css/ionic/global.bundle.ionic.css.map +0 -1
  1001. package/css/ionic/ionic-swiper.ionic.css +0 -1
  1002. package/css/ionic/ionic-swiper.ionic.css.map +0 -1
  1003. package/css/ionic/link.ionic.css +0 -1
  1004. package/css/ionic/link.ionic.css.map +0 -1
  1005. package/css/ionic/structure.ionic.css +0 -1
  1006. package/css/ionic/structure.ionic.css.map +0 -1
  1007. package/css/ionic/typography.ionic.css +0 -1
  1008. package/css/ionic/typography.ionic.css.map +0 -1
  1009. package/css/ionic/utils.bundle.ionic.css +0 -1
  1010. package/css/ionic/utils.bundle.ionic.css.map +0 -1
  1011. package/dist/cjs/caret-down-vtVgfXIs.js +0 -8
  1012. package/dist/cjs/caret-left-CxZXLRv5.js +0 -8
  1013. package/dist/cjs/caret-right-CRCgv98E.js +0 -8
  1014. package/dist/cjs/clear-button-press-controller-DGX8X5js.js +0 -45
  1015. package/dist/cjs/ion-datetime_3.cjs.entry.js +0 -3239
  1016. package/dist/cjs/ion-divider.cjs.entry.js +0 -51
  1017. package/dist/cjs/ion-gallery-item.cjs.entry.js +0 -59
  1018. package/dist/cjs/ion-gallery.cjs.entry.js +0 -607
  1019. package/dist/cjs/ionic-global-QoUqobrQ.js +0 -519
  1020. package/dist/cjs/list-a-7GSA6K.js +0 -8
  1021. package/dist/cjs/scroll-hide-controller-G9HOmmhN.js +0 -345
  1022. package/dist/cjs/validity-QmuwEptc.js +0 -51
  1023. package/dist/cjs/x-BTF99yFH.js +0 -8
  1024. package/dist/collection/components/accordion/accordion.ionic.css +0 -201
  1025. package/dist/collection/components/accordion-group/accordion-group.ionic.css +0 -93
  1026. package/dist/collection/components/action-sheet/action-sheet.ionic.css +0 -494
  1027. package/dist/collection/components/alert/alert.ionic.css +0 -787
  1028. package/dist/collection/components/avatar/avatar.ionic.css +0 -385
  1029. package/dist/collection/components/backdrop/backdrop.ionic.css +0 -109
  1030. package/dist/collection/components/badge/badge.ionic.css +0 -272
  1031. package/dist/collection/components/button/button.ionic.css +0 -644
  1032. package/dist/collection/components/buttons/buttons.ionic.css +0 -97
  1033. package/dist/collection/components/card/card.ionic.css +0 -144
  1034. package/dist/collection/components/card-content/card-content.ionic.css +0 -89
  1035. package/dist/collection/components/card-header/card-header.ionic.css +0 -85
  1036. package/dist/collection/components/card-subtitle/card-subtitle.ionic.css +0 -144
  1037. package/dist/collection/components/checkbox/checkbox.ionic.css +0 -543
  1038. package/dist/collection/components/chip/chip.ionic.css +0 -217
  1039. package/dist/collection/components/datetime/datetime.ionic.css +0 -703
  1040. package/dist/collection/components/divider/divider.ionic.css +0 -148
  1041. package/dist/collection/components/divider/divider.ios.css +0 -87
  1042. package/dist/collection/components/divider/divider.js +0 -94
  1043. package/dist/collection/components/divider/divider.md.css +0 -87
  1044. package/dist/collection/components/footer/footer-interface.js +0 -1
  1045. package/dist/collection/components/gallery/gallery-constants.js +0 -12
  1046. package/dist/collection/components/gallery/gallery-interface.js +0 -1
  1047. package/dist/collection/components/gallery/gallery.css +0 -15
  1048. package/dist/collection/components/gallery/gallery.js +0 -679
  1049. package/dist/collection/components/gallery/test/utils.js +0 -100
  1050. package/dist/collection/components/gallery-item/gallery-item.css +0 -49
  1051. package/dist/collection/components/gallery-item/gallery-item.js +0 -99
  1052. package/dist/collection/components/header/header-interface.js +0 -1
  1053. package/dist/collection/components/header/header.ionic.css +0 -250
  1054. package/dist/collection/components/input/input.ionic.css +0 -891
  1055. package/dist/collection/components/input-otp/input-otp.ionic.css +0 -371
  1056. package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +0 -78
  1057. package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +0 -61
  1058. package/dist/collection/components/item/item.ionic.css +0 -496
  1059. package/dist/collection/components/item-option/item-option.ionic.css +0 -277
  1060. package/dist/collection/components/item-options/item-options.ionic.css +0 -221
  1061. package/dist/collection/components/item-sliding/item-sliding.ionic.css +0 -211
  1062. package/dist/collection/components/list/list.ionic.css +0 -212
  1063. package/dist/collection/components/list-header/list-header.ionic.css +0 -190
  1064. package/dist/collection/components/menu-button/menu-button.ionic.css +0 -236
  1065. package/dist/collection/components/modal/animations/ionic.enter.js +0 -40
  1066. package/dist/collection/components/modal/animations/ionic.leave.js +0 -28
  1067. package/dist/collection/components/modal/modal.ionic.css +0 -255
  1068. package/dist/collection/components/picker-legacy/animations/ios.enter.js +0 -27
  1069. package/dist/collection/components/picker-legacy/animations/ios.leave.js +0 -23
  1070. package/dist/collection/components/picker-legacy/picker-interface.js +0 -1
  1071. package/dist/collection/components/picker-legacy/picker.ios.css +0 -312
  1072. package/dist/collection/components/picker-legacy/picker.js +0 -891
  1073. package/dist/collection/components/picker-legacy/picker.md.css +0 -299
  1074. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +0 -243
  1075. package/dist/collection/components/picker-legacy-column/picker-column.js +0 -422
  1076. package/dist/collection/components/picker-legacy-column/picker-column.md.css +0 -234
  1077. package/dist/collection/components/picker-legacy-column/test/test.utils.js +0 -43
  1078. package/dist/collection/components/popover/popover.ionic.css +0 -290
  1079. package/dist/collection/components/progress-bar/progress-bar.ionic.css +0 -287
  1080. package/dist/collection/components/radio/radio.ionic.css +0 -422
  1081. package/dist/collection/components/radio-group/radio-group.ionic.css +0 -119
  1082. package/dist/collection/components/range/range.ionic.css +0 -567
  1083. package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +0 -215
  1084. package/dist/collection/components/searchbar/searchbar.ionic.css +0 -622
  1085. package/dist/collection/components/segment/segment.ionic.css +0 -115
  1086. package/dist/collection/components/segment-button/segment-button.ionic.css +0 -352
  1087. package/dist/collection/components/select/select.ionic.css +0 -809
  1088. package/dist/collection/components/select-modal/select-modal.ionic.css +0 -257
  1089. package/dist/collection/components/select-popover/select-popover.ionic.css +0 -255
  1090. package/dist/collection/components/spinner/spinner.native.css +0 -199
  1091. package/dist/collection/components/tab-bar/tab-bar.ionic.css +0 -249
  1092. package/dist/collection/components/tab-button/tab-button.ionic.css +0 -373
  1093. package/dist/collection/components/textarea/textarea.ionic.css +0 -898
  1094. package/dist/collection/components/title/title.ionic.css +0 -127
  1095. package/dist/collection/components/toast/toast.ionic.css +0 -394
  1096. package/dist/collection/components/toggle/toggle.ionic.css +0 -512
  1097. package/dist/collection/components/toolbar/test/image.svg +0 -1
  1098. package/dist/collection/components/toolbar/toolbar.ionic.css +0 -249
  1099. package/dist/collection/utils/css-value-validation.js +0 -39
  1100. package/dist/collection/utils/forms/clear-button-press-controller.js +0 -40
  1101. package/dist/collection/utils/scroll-hide-controller.js +0 -178
  1102. package/dist/esm/caret-down-D1t981Ih.js +0 -6
  1103. package/dist/esm/caret-left-fIOYmaqA.js +0 -6
  1104. package/dist/esm/caret-right-BYSs-jZz.js +0 -6
  1105. package/dist/esm/clear-button-press-controller-C7AAVMKK.js +0 -43
  1106. package/dist/esm/ion-datetime_3.entry.js +0 -3235
  1107. package/dist/esm/ion-divider.entry.js +0 -49
  1108. package/dist/esm/ion-gallery-item.entry.js +0 -57
  1109. package/dist/esm/ion-gallery.entry.js +0 -605
  1110. package/dist/esm/ionic-global-BpkTponr.js +0 -508
  1111. package/dist/esm/list-Dhi5xtNS.js +0 -6
  1112. package/dist/esm/scroll-hide-controller-CUNW7EpD.js +0 -342
  1113. package/dist/esm/theme-DaJxRxSQ.js +0 -67
  1114. package/dist/esm/validity-BjW8SOqw.js +0 -48
  1115. package/dist/esm/x-BDqjX7Z_.js +0 -6
  1116. package/dist/ionic/p--sroV-k-.js +0 -4
  1117. package/dist/ionic/p-05ce9821.entry.js +0 -4
  1118. package/dist/ionic/p-085b8cdf.entry.js +0 -4
  1119. package/dist/ionic/p-0ef6bfc4.entry.js +0 -4
  1120. package/dist/ionic/p-18b7771e.entry.js +0 -4
  1121. package/dist/ionic/p-19f34fe5.entry.js +0 -4
  1122. package/dist/ionic/p-1b6e3914.entry.js +0 -4
  1123. package/dist/ionic/p-2740db6e.entry.js +0 -4
  1124. package/dist/ionic/p-2a1abbb1.entry.js +0 -4
  1125. package/dist/ionic/p-2d9c681b.entry.js +0 -4
  1126. package/dist/ionic/p-2fba8f15.entry.js +0 -4
  1127. package/dist/ionic/p-3886bfbe.entry.js +0 -4
  1128. package/dist/ionic/p-3ab9c35a.entry.js +0 -4
  1129. package/dist/ionic/p-3b4c5cb5.entry.js +0 -4
  1130. package/dist/ionic/p-3cfb4ff2.entry.js +0 -4
  1131. package/dist/ionic/p-41afaf15.entry.js +0 -4
  1132. package/dist/ionic/p-47b9dac0.entry.js +0 -4
  1133. package/dist/ionic/p-54419365.entry.js +0 -4
  1134. package/dist/ionic/p-54b7972e.entry.js +0 -4
  1135. package/dist/ionic/p-602cf876.entry.js +0 -4
  1136. package/dist/ionic/p-678ee14a.entry.js +0 -4
  1137. package/dist/ionic/p-679c1448.entry.js +0 -4
  1138. package/dist/ionic/p-68ea8ed1.entry.js +0 -4
  1139. package/dist/ionic/p-6e1ec775.entry.js +0 -4
  1140. package/dist/ionic/p-745d6b2b.entry.js +0 -4
  1141. package/dist/ionic/p-77254b78.entry.js +0 -4
  1142. package/dist/ionic/p-7k7Q1A38.js +0 -4
  1143. package/dist/ionic/p-898691b3.entry.js +0 -4
  1144. package/dist/ionic/p-89fedfda.entry.js +0 -4
  1145. package/dist/ionic/p-8cf82b85.entry.js +0 -4
  1146. package/dist/ionic/p-8d5fd199.entry.js +0 -4
  1147. package/dist/ionic/p-9087119f.entry.js +0 -4
  1148. package/dist/ionic/p-9c508a22.entry.js +0 -4
  1149. package/dist/ionic/p-B4Kq2YNk.js +0 -4
  1150. package/dist/ionic/p-BDSH5ckF.js +0 -4
  1151. package/dist/ionic/p-BDqjX7Z_.js +0 -4
  1152. package/dist/ionic/p-BFy_BK46.js +0 -4
  1153. package/dist/ionic/p-BTEOs1at.js +0 -4
  1154. package/dist/ionic/p-BYSs-jZz.js +0 -4
  1155. package/dist/ionic/p-BjW8SOqw.js +0 -4
  1156. package/dist/ionic/p-BlZo7Gy-.js +0 -4
  1157. package/dist/ionic/p-Bq8S4vhI.js +0 -4
  1158. package/dist/ionic/p-Btc4flkw.js +0 -4
  1159. package/dist/ionic/p-BwKpO3Is.js +0 -4
  1160. package/dist/ionic/p-C0EQceqV.js +0 -5
  1161. package/dist/ionic/p-C1I_d964.js +0 -4
  1162. package/dist/ionic/p-C53feagD.js +0 -4
  1163. package/dist/ionic/p-CB91Gr9M.js +0 -4
  1164. package/dist/ionic/p-CEkwLb3L.js +0 -4
  1165. package/dist/ionic/p-CJsJQPQD.js +0 -4
  1166. package/dist/ionic/p-CODBQrPj.js +0 -4
  1167. package/dist/ionic/p-Ch7MBNn_.js +0 -4
  1168. package/dist/ionic/p-Cl0B-RWe.js +0 -4
  1169. package/dist/ionic/p-CnAWnbNK.js +0 -4
  1170. package/dist/ionic/p-D1t981Ih.js +0 -4
  1171. package/dist/ionic/p-D4MT1z4_.js +0 -4
  1172. package/dist/ionic/p-D4veLKCq.js +0 -4
  1173. package/dist/ionic/p-DF7ubVci.js +0 -4
  1174. package/dist/ionic/p-DMaSfupH.js +0 -4
  1175. package/dist/ionic/p-DQDmksdT.js +0 -4
  1176. package/dist/ionic/p-DTsDGZPd.js +0 -4
  1177. package/dist/ionic/p-DaJxRxSQ.js +0 -4
  1178. package/dist/ionic/p-DdCaKRle.js +0 -4
  1179. package/dist/ionic/p-Dhi5xtNS.js +0 -4
  1180. package/dist/ionic/p-Dy243NXW.js +0 -4
  1181. package/dist/ionic/p-OkgYzj-7.js +0 -4
  1182. package/dist/ionic/p-YIsE5bNG.js +0 -4
  1183. package/dist/ionic/p-a4af8e39.entry.js +0 -4
  1184. package/dist/ionic/p-b2368a93.entry.js +0 -4
  1185. package/dist/ionic/p-b275f17e.entry.js +0 -4
  1186. package/dist/ionic/p-c5635175.entry.js +0 -4
  1187. package/dist/ionic/p-c76d57fb.entry.js +0 -4
  1188. package/dist/ionic/p-ca3a07b5.entry.js +0 -4
  1189. package/dist/ionic/p-ced3cda1.entry.js +0 -4
  1190. package/dist/ionic/p-cf22e991.entry.js +0 -4
  1191. package/dist/ionic/p-d0c1d21d.entry.js +0 -4
  1192. package/dist/ionic/p-d0d42da6.entry.js +0 -4
  1193. package/dist/ionic/p-d33dfc12.entry.js +0 -4
  1194. package/dist/ionic/p-d34bfb61.entry.js +0 -4
  1195. package/dist/ionic/p-dbc08f67.entry.js +0 -4
  1196. package/dist/ionic/p-dc8e0b91.entry.js +0 -4
  1197. package/dist/ionic/p-df642ef5.entry.js +0 -4
  1198. package/dist/ionic/p-e04d63e1.entry.js +0 -4
  1199. package/dist/ionic/p-e3615478.entry.js +0 -4
  1200. package/dist/ionic/p-f1810d29.entry.js +0 -4
  1201. package/dist/ionic/p-f1a8aead.entry.js +0 -4
  1202. package/dist/ionic/p-f69af9d3.entry.js +0 -4
  1203. package/dist/ionic/p-f760f90e.entry.js +0 -4
  1204. package/dist/ionic/p-f8001f8f.entry.js +0 -4
  1205. package/dist/ionic/p-f8b63ebb.entry.js +0 -4
  1206. package/dist/ionic/p-fIOYmaqA.js +0 -4
  1207. package/dist/ionic/p-fc6d26ff.entry.js +0 -4
  1208. package/dist/ionic/p-lMb_45ax.js +0 -4
  1209. package/dist/ionic/p-vXpMhGrs.js +0 -4
  1210. package/dist/types/components/divider/divider.d.ts +0 -20
  1211. package/dist/types/components/footer/footer-interface.d.ts +0 -1
  1212. package/dist/types/components/gallery/gallery-constants.d.ts +0 -9
  1213. package/dist/types/components/gallery/gallery-interface.d.ts +0 -10
  1214. package/dist/types/components/gallery/gallery.d.ts +0 -218
  1215. package/dist/types/components/gallery/test/utils.d.ts +0 -3
  1216. package/dist/types/components/gallery-item/gallery-item.d.ts +0 -33
  1217. package/dist/types/components/header/header-interface.d.ts +0 -1
  1218. package/dist/types/components/modal/animations/ionic.enter.d.ts +0 -6
  1219. package/dist/types/components/modal/animations/ionic.leave.d.ts +0 -6
  1220. package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +0 -5
  1221. package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +0 -5
  1222. package/dist/types/components/picker-legacy/picker-interface.d.ts +0 -52
  1223. package/dist/types/components/picker-legacy/picker.d.ts +0 -159
  1224. package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
  1225. package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +0 -9
  1226. package/dist/types/utils/css-value-validation.d.ts +0 -21
  1227. package/dist/types/utils/forms/clear-button-press-controller.d.ts +0 -20
  1228. package/dist/types/utils/scroll-hide-controller.d.ts +0 -56
  1229. /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');
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');
6
+ var index = require('./index-CAThePqm.js');
7
+ var hardwareBackButton = require('./hardware-back-button-zr8zeYaH.js');
8
+ var ionicGlobal = require('./ionic-global-dMut1Czp.js');
9
+ var helpers = require('./helpers-DURh1XdY.js');
10
+ var dir = require('./dir-Brx7VkvP.js');
11
+ var theme = require('./theme-Bw0rpaNN.js');
12
+ var index$1 = require('./index-BnhnwL1o.js');
13
+ var keyboardController = require('./keyboard-controller-PtZoN2GS.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-Bdvk3JQO.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-DsoHs7Ly.js');
18
+ require('./index-DkNv4J_i.js');
19
+ require('./keyboard-cHxZlTyz.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,54 @@ const App = class {
24
25
  constructor(hostRef) {
25
26
  index.registerInstance(this, hostRef);
26
27
  }
28
+ focusVisible;
29
+ loadTimeout;
30
+ get el() { return index.getElement(this); }
31
+ componentDidLoad() {
32
+ {
33
+ this.rIC(async () => {
34
+ const isHybrid = ionicGlobal.isPlatform(window, 'hybrid');
35
+ if (!index.config.getBoolean('_testing')) {
36
+ Promise.resolve().then(function () { return require('./index-Btdix80K.js'); }).then((module) => module.startTapClick(index.config));
37
+ }
38
+ if (index.config.getBoolean('statusTap', isHybrid)) {
39
+ Promise.resolve().then(function () { return require('./status-tap-CgjQ-6jq.js'); }).then((module) => module.startStatusTap());
40
+ }
41
+ if (index.config.getBoolean('inputShims', needInputShims())) {
42
+ /**
43
+ * needInputShims() ensures that only iOS and Android
44
+ * platforms proceed into this block.
45
+ */
46
+ const platform = ionicGlobal.isPlatform(window, 'ios') ? 'ios' : 'android';
47
+ Promise.resolve().then(function () { return require('./input-shims-CPbWb84M.js'); }).then((module) => module.startInputShims(index.config, platform));
48
+ }
49
+ const hardwareBackButtonModule = await Promise.resolve().then(function () { return require('./hardware-back-button-zr8zeYaH.js'); });
50
+ const supportsHardwareBackButtonEvents = isHybrid || hardwareBackButton.shouldUseCloseWatcher();
51
+ if (index.config.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {
52
+ hardwareBackButtonModule.startHardwareBackButton();
53
+ }
54
+ else {
55
+ /**
56
+ * If an app sets hardwareBackButton: false and experimentalCloseWatcher: true
57
+ * then the close watcher will not be used.
58
+ */
59
+ if (hardwareBackButton.shouldUseCloseWatcher()) {
60
+ 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.');
61
+ }
62
+ hardwareBackButtonModule.blockHardwareBackButton();
63
+ }
64
+ if (typeof window !== 'undefined') {
65
+ Promise.resolve().then(function () { return require('./keyboard-Cix5TVkD.js'); }).then((module) => module.startKeyboardAssist(window));
66
+ }
67
+ Promise.resolve().then(function () { return require('./focus-visible-CCvKiLh3.js'); }).then((module) => (this.focusVisible = module.startFocusVisible()));
68
+ });
69
+ }
70
+ }
71
+ disconnectedCallback() {
72
+ if (this.loadTimeout) {
73
+ clearTimeout(this.loadTimeout);
74
+ }
75
+ }
27
76
  /**
28
77
  * Used to set focus on an element that uses `ion-focusable`.
29
78
  * Do not use this if focusing the element as a result of a keyboard
@@ -36,62 +85,83 @@ const App = class {
36
85
  * @param elements An array of HTML elements to set focus on.
37
86
  */
38
87
  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);
88
+ if (this.focusVisible) {
89
+ this.focusVisible.setFocus(elements);
90
+ }
91
+ }
92
+ rIC(callback) {
93
+ if ('requestIdleCallback' in window) {
94
+ window.requestIdleCallback(callback);
95
+ }
96
+ else {
97
+ this.loadTimeout = setTimeout(callback, 32);
98
+ }
44
99
  }
45
100
  render() {
46
- const theme = ionicGlobal.getIonTheme(this);
47
- return (index.h(index.Host, { key: '3b7e84c7c4187287123413f90838cda89136b2a4', class: {
48
- [theme]: true,
101
+ const mode = ionicGlobal.getIonMode(this);
102
+ return (index.h(index.Host, { key: '77a7459d3e42b3715a5a7e1cf468e2ebc99e54bb', class: {
103
+ [mode]: true,
49
104
  'ion-page': true,
50
105
  'force-statusbar-padding': index.config.getBoolean('_forceStatusbarPadding'),
51
106
  } }));
52
107
  }
53
- get el() { return index.getElement(this); }
108
+ };
109
+ const needInputShims = () => {
110
+ /**
111
+ * iOS always needs input shims
112
+ */
113
+ const needsShimsIOS = ionicGlobal.isPlatform(window, 'ios') && ionicGlobal.isPlatform(window, 'mobile');
114
+ if (needsShimsIOS) {
115
+ return true;
116
+ }
117
+ /**
118
+ * Android only needs input shims when running
119
+ * in the browser and only if the browser is using the
120
+ * new Chrome 108+ resize behavior: https://developer.chrome.com/blog/viewport-resize-behavior/
121
+ */
122
+ const isAndroidMobileWeb = ionicGlobal.isPlatform(window, 'android') && ionicGlobal.isPlatform(window, 'mobileweb');
123
+ if (isAndroidMobileWeb) {
124
+ return true;
125
+ }
126
+ return false;
54
127
  };
55
128
  App.style = appCss();
56
129
 
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)}`;
130
+ 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
131
 
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}`;
132
+ 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
133
 
63
134
  const Buttons = class {
64
135
  constructor(hostRef) {
65
136
  index.registerInstance(this, hostRef);
66
- /**
67
- * If true, buttons will disappear when its
68
- * parent toolbar has fully collapsed if the toolbar
69
- * is not the first toolbar. If the toolbar is the
70
- * first toolbar, the buttons will be hidden and will
71
- * only be shown once all toolbars have fully collapsed.
72
- *
73
- * Only applies in the `ios` theme with `collapse` set to
74
- * `true` on `ion-header`.
75
- *
76
- * Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
77
- */
78
- this.collapse = false;
79
137
  }
138
+ /**
139
+ * If true, buttons will disappear when its
140
+ * parent toolbar has fully collapsed if the toolbar
141
+ * is not the first toolbar. If the toolbar is the
142
+ * first toolbar, the buttons will be hidden and will
143
+ * only be shown once all toolbars have fully collapsed.
144
+ *
145
+ * Only applies in `ios` mode with `collapse` set to
146
+ * `true` on `ion-header`.
147
+ *
148
+ * Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
149
+ */
150
+ collapse = false;
80
151
  render() {
81
- const theme = ionicGlobal.getIonTheme(this);
82
- return (index.h(index.Host, { key: '95c107ba7871c801a5ef14c636dc8e2fe69debf3', class: {
83
- [theme]: true,
152
+ const mode = ionicGlobal.getIonMode(this);
153
+ return (index.h(index.Host, { key: '58c1fc5eb867d0731c63549b1ccb3ec3bbbe6e1b', class: {
154
+ [mode]: true,
84
155
  ['buttons-collapse']: this.collapse,
85
- } }, index.h("slot", { key: '58669abfce458e1344b84286d4200e305017b958' })));
156
+ } }, index.h("slot", { key: '0c8f95b9840c8fa0c4e50be84c5159620a3eb5c8' })));
86
157
  }
87
158
  };
88
159
  Buttons.style = {
89
- ionic: buttonsIonicCss(),
90
160
  ios: buttonsIosCss(),
91
161
  md: buttonsMdCss()
92
162
  };
93
163
 
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}}`;
164
+ 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
165
 
96
166
  const Content = class {
97
167
  constructor(hostRef) {
@@ -99,65 +169,96 @@ const Content = class {
99
169
  this.ionScrollStart = index.createEvent(this, "ionScrollStart", 7);
100
170
  this.ionScroll = index.createEvent(this, "ionScroll", 7);
101
171
  this.ionScrollEnd = index.createEvent(this, "ionScrollEnd", 7);
102
- this.watchDog = null;
103
- this.isScrolling = false;
104
- this.lastScroll = 0;
105
- this.queued = false;
106
- this.cTop = -1;
107
- this.cBottom = -1;
108
- this.isMainContent = true;
109
- this.resizeTimeout = null;
110
- this.inheritedAttributes = {};
111
- this.tabsElement = null;
112
- // Detail is used in a hot loop in the scroll event, by allocating it here
113
- // V8 will be able to inline any read/write to it since it's a monomorphic class.
114
- // https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html
115
- this.detail = {
116
- scrollTop: 0,
117
- scrollLeft: 0,
118
- type: 'scroll',
119
- event: undefined,
120
- startX: 0,
121
- startY: 0,
122
- startTime: 0,
123
- currentX: 0,
124
- currentY: 0,
125
- velocityX: 0,
126
- velocityY: 0,
127
- deltaX: 0,
128
- deltaY: 0,
129
- currentTime: 0,
130
- data: undefined,
131
- isScrolling: true,
132
- };
133
- /**
134
- * If `true`, the content will scroll behind the headers
135
- * and footers. This effect can easily be seen by setting the toolbar
136
- * to transparent.
137
- */
138
- this.fullscreen = false;
139
- /**
140
- * Controls where the fixed content is placed relative to the main content
141
- * in the DOM. This can be used to control the order in which fixed elements
142
- * receive keyboard focus.
143
- * For example, if a FAB in the fixed slot should receive keyboard focus before
144
- * the main page content, set this property to `'before'`.
145
- */
146
- this.fixedSlotPlacement = 'after';
147
- /**
148
- * If you want to enable the content scrolling in the X axis, set this property to `true`.
149
- */
150
- this.scrollX = false;
151
- /**
152
- * If you want to disable the content scrolling in the Y axis, set this property to `false`.
153
- */
154
- this.scrollY = true;
155
- /**
156
- * Because of performance reasons, ionScroll events are disabled by default, in order to enable them
157
- * and start listening from (ionScroll), set this property to `true`.
158
- */
159
- this.scrollEvents = false;
160
172
  }
173
+ watchDog = null;
174
+ isScrolling = false;
175
+ lastScroll = 0;
176
+ queued = false;
177
+ cTop = -1;
178
+ cBottom = -1;
179
+ scrollEl;
180
+ backgroundContentEl;
181
+ isMainContent = true;
182
+ resizeTimeout = null;
183
+ inheritedAttributes = {};
184
+ tabsElement = null;
185
+ tabsLoadCallback;
186
+ // Detail is used in a hot loop in the scroll event, by allocating it here
187
+ // V8 will be able to inline any read/write to it since it's a monomorphic class.
188
+ // https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html
189
+ detail = {
190
+ scrollTop: 0,
191
+ scrollLeft: 0,
192
+ type: 'scroll',
193
+ event: undefined,
194
+ startX: 0,
195
+ startY: 0,
196
+ startTime: 0,
197
+ currentX: 0,
198
+ currentY: 0,
199
+ velocityX: 0,
200
+ velocityY: 0,
201
+ deltaX: 0,
202
+ deltaY: 0,
203
+ currentTime: 0,
204
+ data: undefined,
205
+ isScrolling: true,
206
+ };
207
+ get el() { return index.getElement(this); }
208
+ /**
209
+ * The color to use from your application's color palette.
210
+ * Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
211
+ * For more information on colors, see [theming](/docs/theming/basics).
212
+ */
213
+ color;
214
+ /**
215
+ * If `true`, the content will scroll behind the headers
216
+ * and footers. This effect can easily be seen by setting the toolbar
217
+ * to transparent.
218
+ */
219
+ fullscreen = false;
220
+ /**
221
+ * Controls where the fixed content is placed relative to the main content
222
+ * in the DOM. This can be used to control the order in which fixed elements
223
+ * receive keyboard focus.
224
+ * For example, if a FAB in the fixed slot should receive keyboard focus before
225
+ * the main page content, set this property to `'before'`.
226
+ */
227
+ fixedSlotPlacement = 'after';
228
+ /**
229
+ * If `true` and the content does not cause an overflow scroll, the scroll interaction will cause a bounce.
230
+ * If the content exceeds the bounds of ionContent, nothing will change.
231
+ * Note, this does not disable the system bounce on iOS. That is an OS level setting.
232
+ */
233
+ forceOverscroll;
234
+ /**
235
+ * If you want to enable the content scrolling in the X axis, set this property to `true`.
236
+ */
237
+ scrollX = false;
238
+ /**
239
+ * If you want to disable the content scrolling in the Y axis, set this property to `false`.
240
+ */
241
+ scrollY = true;
242
+ /**
243
+ * Because of performance reasons, ionScroll events are disabled by default, in order to enable them
244
+ * and start listening from (ionScroll), set this property to `true`.
245
+ */
246
+ scrollEvents = false;
247
+ /**
248
+ * Emitted when the scroll has started. This event is disabled by default.
249
+ * Set `scrollEvents` to `true` to enable.
250
+ */
251
+ ionScrollStart;
252
+ /**
253
+ * Emitted while scrolling. This event is disabled by default.
254
+ * Set `scrollEvents` to `true` to enable.
255
+ */
256
+ ionScroll;
257
+ /**
258
+ * Emitted when the scroll has ended. This event is disabled by default.
259
+ * Set `scrollEvents` to `true` to enable.
260
+ */
261
+ ionScrollEnd;
161
262
  componentWillLoad() {
162
263
  this.inheritedAttributes = helpers.inheritAriaAttributes(this.el);
163
264
  }
@@ -254,8 +355,9 @@ const Content = class {
254
355
  this.resize();
255
356
  }, 100);
256
357
  }
257
- shouldForceOverscroll(mode) {
358
+ shouldForceOverscroll() {
258
359
  const { forceOverscroll } = this;
360
+ const mode = ionicGlobal.getIonMode(this);
259
361
  return forceOverscroll === undefined ? mode === 'ios' && ionicGlobal.isPlatform('ios') : forceOverscroll;
260
362
  }
261
363
  resize() {
@@ -451,13 +553,12 @@ const Content = class {
451
553
  render() {
452
554
  const { fixedSlotPlacement, inheritedAttributes, isMainContent, scrollX, scrollY, el } = this;
453
555
  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';
556
+ const mode = ionicGlobal.getIonMode(this);
557
+ const forceOverscroll = this.shouldForceOverscroll();
558
+ const transitionShadow = mode === 'ios';
458
559
  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,
560
+ return (index.h(index.Host, { key: '8c1bc4a4df8698d3884741eb38512dc059210c50', role: isMainContent ? 'main' : undefined, class: theme.createColorClasses(this.color, {
561
+ [mode]: true,
461
562
  'content-fullscreen': this.fullscreen,
462
563
  'content-sizing': theme.hostContext('ion-popover', this.el),
463
564
  overscroll: forceOverscroll,
@@ -465,22 +566,20 @@ const Content = class {
465
566
  }), style: {
466
567
  '--offset-top': `${this.cTop}px`,
467
568
  '--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: {
569
+ }, ...inheritedAttributes }, index.h("div", { key: '5e7412549b51ef7543d9378ecab9aac6bc461588', ref: (el) => (this.backgroundContentEl = el), id: "background-content", part: "background" }), fixedSlotPlacement === 'before' ? index.h("slot", { name: "fixed" }) : null, index.h("div", { key: '33f6fbf7e1e027c7cbd2dda95b487f18dc648cef', class: {
469
570
  'inner-scroll': true,
470
571
  'scroll-x': scrollX,
471
572
  'scroll-y': scrollY,
472
573
  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));
574
+ }, ref: (scrollEl) => (this.scrollEl = scrollEl), onScroll: this.scrollEvents ? (ev) => this.onScroll(ev) : undefined, part: "scroll" }, index.h("slot", { key: '00c8fe7b9e73533c702273c9457d274195d54e98' })), transitionShadow ? (index.h("div", { class: "transition-effect" }, index.h("div", { class: "transition-cover" }), index.h("div", { class: "transition-shadow" }))) : null, fixedSlotPlacement === 'after' ? index.h("slot", { name: "fixed" }) : null));
474
575
  }
475
- get el() { return index.getElement(this); }
476
576
  };
477
577
  const getParentElement = (el) => {
478
- var _a;
479
578
  if (el.parentElement) {
480
579
  // normal element with a parent element
481
580
  return el.parentElement;
482
581
  }
483
- if ((_a = el.parentNode) === null || _a === void 0 ? void 0 : _a.host) {
582
+ if (el.parentNode?.host) {
484
583
  // shadow dom's document fragment
485
584
  return el.parentNode.host;
486
585
  }
@@ -496,8 +595,7 @@ const getPageElement = (el) => {
496
595
  * between the popover and the edges of the screen. But if the popover contains
497
596
  * its own page element, we should use that instead.
498
597
  */
499
- const appRootSelector = index.config.get('appRootSelector', 'ion-app');
500
- const page = el.closest(`${appRootSelector}, ion-page, .ion-page, page-inner, .popover-content`);
598
+ const page = el.closest('ion-app, ion-page, .ion-page, page-inner, .popover-content');
501
599
  if (page) {
502
600
  return page;
503
601
  }
@@ -561,100 +659,34 @@ const handleFooterFade = (scrollEl, baseEl) => {
561
659
  });
562
660
  };
563
661
 
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}`;
565
-
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}`;
662
+ 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}`;
567
663
 
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}`;
664
+ 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
665
 
570
666
  const Footer = class {
571
667
  constructor(hostRef) {
572
668
  index.registerInstance(this, hostRef);
573
- this.keyboardCtrl = null;
574
- this.keyboardCtrlPromise = null;
575
- this.scrollHideCtrlPromise = null;
576
- this.hasWarnedCollapse = false;
577
- this.fadeSetupId = 0;
578
- this.keyboardVisible = false;
579
- /**
580
- * If `true`, the footer will be translucent.
581
- * Only applies when the theme is `"ios"` and the device supports
582
- * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
583
- *
584
- * Note: In order to scroll content behind the footer, the `fullscreen`
585
- * attribute needs to be set on the content.
586
- */
587
- 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) {
600
- return;
601
- }
602
- const hasHide = effect === 'hide';
603
- const hasFade = effect === 'fade';
604
- 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) {
617
- if (!contentEl) {
618
- index$1.printIonContentErrorMsg(this.el);
619
- return;
620
- }
621
- 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
- }
640
- };
641
- 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;
648
- /**
649
- * Handle fading of toolbars on scroll
650
- */
651
- this.contentScrollCallback = () => {
652
- handleFooterFade(scrollEl, this.el);
653
- };
654
- scrollEl.addEventListener('scroll', this.contentScrollCallback);
655
- handleFooterFade(scrollEl, this.el);
656
- };
657
669
  }
670
+ scrollEl;
671
+ contentScrollCallback;
672
+ keyboardCtrl = null;
673
+ keyboardCtrlPromise = null;
674
+ keyboardVisible = false;
675
+ get el() { return index.getElement(this); }
676
+ /**
677
+ * Describes the scroll effect that will be applied to the footer.
678
+ * Only applies in iOS mode.
679
+ */
680
+ collapse;
681
+ /**
682
+ * If `true`, the footer will be translucent.
683
+ * Only applies when the mode is `"ios"` and the device supports
684
+ * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
685
+ *
686
+ * Note: In order to scroll content behind the footer, the `fullscreen`
687
+ * attribute needs to be set on the content.
688
+ */
689
+ translucent = false;
658
690
  componentDidLoad() {
659
691
  this.checkCollapsibleFooter();
660
692
  }
@@ -662,7 +694,7 @@ const Footer = class {
662
694
  this.checkCollapsibleFooter();
663
695
  }
664
696
  async connectedCallback() {
665
- const promise = scrollHideController.createKeyboardController(async (keyboardOpen, waitForResize) => {
697
+ const promise = keyboardController.createKeyboardController(async (keyboardOpen, waitForResize) => {
666
698
  /**
667
699
  * If the keyboard is hiding, then we need to wait
668
700
  * for the webview to resize. Otherwise, the footer
@@ -689,7 +721,6 @@ const Footer = class {
689
721
  }
690
722
  }
691
723
  disconnectedCallback() {
692
- this.destroyCollapsibleFooter();
693
724
  if (this.keyboardCtrlPromise) {
694
725
  this.keyboardCtrlPromise.then((ctrl) => ctrl.destroy());
695
726
  this.keyboardCtrlPromise = null;
@@ -699,44 +730,58 @@ const Footer = class {
699
730
  this.keyboardCtrl = null;
700
731
  }
701
732
  }
702
- destroyCollapsibleFooter() {
703
- this.activeEffect = undefined;
704
- this.fadeSetupId++;
705
- this.scrollHideCtrlPromise = null;
706
- if (this.scrollHideCtrl) {
707
- this.scrollHideCtrl.destroy();
708
- this.scrollHideCtrl = undefined;
733
+ checkCollapsibleFooter = () => {
734
+ const mode = ionicGlobal.getIonMode(this);
735
+ if (mode !== 'ios') {
736
+ return;
737
+ }
738
+ const { collapse } = this;
739
+ const hasFade = collapse === 'fade';
740
+ this.destroyCollapsibleFooter();
741
+ if (hasFade) {
742
+ const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
743
+ const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
744
+ if (!contentEl) {
745
+ index$1.printIonContentErrorMsg(this.el);
746
+ return;
747
+ }
748
+ this.setupFadeFooter(contentEl);
709
749
  }
750
+ };
751
+ setupFadeFooter = async (contentEl) => {
752
+ const scrollEl = (this.scrollEl = await index$1.getScrollElement(contentEl));
753
+ /**
754
+ * Handle fading of toolbars on scroll
755
+ */
756
+ this.contentScrollCallback = () => {
757
+ handleFooterFade(scrollEl, this.el);
758
+ };
759
+ scrollEl.addEventListener('scroll', this.contentScrollCallback);
760
+ handleFooterFade(scrollEl, this.el);
761
+ };
762
+ destroyCollapsibleFooter() {
710
763
  if (this.scrollEl && this.contentScrollCallback) {
711
764
  this.scrollEl.removeEventListener('scroll', this.contentScrollCallback);
712
765
  this.contentScrollCallback = undefined;
713
766
  }
714
767
  }
715
768
  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;
769
+ const { translucent, collapse } = this;
770
+ const mode = ionicGlobal.getIonMode(this);
723
771
  const tabs = this.el.closest('ion-tabs');
724
- 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,
772
+ const tabBar = tabs?.querySelector(':scope > ion-tab-bar');
773
+ return (index.h(index.Host, { key: '71939c4bbaef5062532a99ee2e33574102a9abad', role: "contentinfo", class: {
774
+ [mode]: true,
727
775
  // Used internally for styling
728
- [`footer-${theme}`]: true,
776
+ [`footer-${mode}`]: true,
729
777
  [`footer-translucent`]: translucent,
730
- [`footer-translucent-${theme}`]: translucent,
778
+ [`footer-translucent-${mode}`]: translucent,
731
779
  ['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' })));
780
+ [`footer-collapse-${collapse}`]: collapse !== undefined,
781
+ } }, mode === 'ios' && translucent && index.h("div", { key: '2fa14f61661c47c661cecd696176728d6eafa74f', class: "footer-background" }), index.h("slot", { key: '8e63696e7c528d5c38201e546bf08135290d0945' })));
735
782
  }
736
- get el() { return index.getElement(this); }
737
783
  };
738
784
  Footer.style = {
739
- ionic: ionicFooterMdCss(),
740
785
  ios: footerIosCss(),
741
786
  md: footerMdCss()
742
787
  };
@@ -788,14 +833,13 @@ const handleContentScroll = (scrollEl, scrollHeaderIndex, contentEl) => {
788
833
  });
789
834
  };
790
835
  const setToolbarBackgroundOpacity = (headerEl, opacity) => {
791
- var _a;
792
836
  /**
793
837
  * Fading in the backdrop opacity
794
838
  * should happen after the large title
795
839
  * has collapsed, so it is handled
796
840
  * by handleHeaderFade()
797
841
  */
798
- if (((_a = headerEl.scrollEffect) !== null && _a !== void 0 ? _a : headerEl.collapse) === 'fade') {
842
+ if (headerEl.collapse === 'fade') {
799
843
  return;
800
844
  }
801
845
  if (opacity === undefined) {
@@ -953,79 +997,57 @@ const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
953
997
  * Get the role type for the ion-header.
954
998
  *
955
999
  * @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.
1000
+ * @param isCondensed If ion-header has collapse="condense".
1001
+ * @param mode The current mode.
1002
+ * @returns 'none' if inside ion-menu or if condensed in md
1003
+ * mode, otherwise 'banner'.
959
1004
  */
960
- const getRoleType = (isInsideMenu) => {
1005
+ const getRoleType = (isInsideMenu, isCondensed, mode) => {
961
1006
  // If the header is inside a menu, it should not have the banner role.
962
1007
  if (isInsideMenu) {
963
1008
  return ROLE_NONE;
964
1009
  }
1010
+ /**
1011
+ * Only apply role="none" to `md` mode condensed headers
1012
+ * since the large header is never shown.
1013
+ */
1014
+ if (isCondensed && mode === 'md') {
1015
+ return ROLE_NONE;
1016
+ }
965
1017
  // Default to banner role.
966
1018
  return ROLE_BANNER;
967
1019
  };
968
1020
 
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}}`;
1021
+ 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
1022
 
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}`;
1023
+ 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
1024
 
975
1025
  const Header = class {
976
1026
  constructor(hostRef) {
977
1027
  index.registerInstance(this, hostRef);
978
- 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
- /**
988
- * If `true`, the header will be translucent.
989
- * Only applies when the theme is `"ios"` or `"ionic"` and the device supports
990
- * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
991
- *
992
- * Note: In order to scroll content behind the header, the `fullscreen`
993
- * attribute needs to be set on the content.
994
- */
995
- 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
- 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;
1019
- /**
1020
- * Handle fading of toolbars on scroll
1021
- */
1022
- this.contentScrollCallback = () => {
1023
- handleHeaderFade(this.scrollEl, this.el, condenseHeader);
1024
- };
1025
- scrollEl.addEventListener('scroll', this.contentScrollCallback);
1026
- handleHeaderFade(this.scrollEl, this.el, condenseHeader);
1027
- };
1028
1028
  }
1029
+ scrollEl;
1030
+ contentScrollCallback;
1031
+ intersectionObserver;
1032
+ collapsibleMainHeader;
1033
+ inheritedAttributes = {};
1034
+ get el() { return index.getElement(this); }
1035
+ /**
1036
+ * Describes the scroll effect that will be applied to the header.
1037
+ * Only applies in iOS mode.
1038
+ *
1039
+ * Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
1040
+ */
1041
+ collapse;
1042
+ /**
1043
+ * If `true`, the header will be translucent.
1044
+ * Only applies when the mode is `"ios"` and the device supports
1045
+ * [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).
1046
+ *
1047
+ * Note: In order to scroll content behind the header, the `fullscreen`
1048
+ * attribute needs to be set on the content.
1049
+ */
1050
+ translucent = false;
1029
1051
  componentWillLoad() {
1030
1052
  this.inheritedAttributes = helpers.inheritAriaAttributes(this.el);
1031
1053
  }
@@ -1039,63 +1061,48 @@ const Header = class {
1039
1061
  this.destroyCollapsibleHeader();
1040
1062
  }
1041
1063
  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) {
1064
+ const mode = ionicGlobal.getIonMode(this);
1065
+ if (mode !== 'ios') {
1052
1066
  return;
1053
1067
  }
1054
- const hasHide = effect === 'hide';
1055
- const hasCondense = effect === 'condense';
1056
- const hasFade = effect === 'fade';
1068
+ const { collapse } = this;
1069
+ const hasCondense = collapse === 'condense';
1070
+ const hasFade = collapse === 'fade';
1057
1071
  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) {
1072
+ if (hasCondense) {
1073
+ const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
1074
+ const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
1070
1075
  // Cloned elements are always needed in iOS transition
1071
1076
  index.writeTask(() => {
1072
1077
  const title = cloneElement('ion-title');
1073
1078
  title.size = 'large';
1074
1079
  cloneElement('ion-back-button');
1075
1080
  });
1076
- const didSetup = await this.setupCondenseHeader(contentEl, pageEl);
1077
- if (didSetup) {
1078
- this.activeEffect = effect;
1079
- }
1081
+ await this.setupCondenseHeader(contentEl, pageEl);
1080
1082
  }
1081
- else if (hasFade && !isModeRestricted) {
1083
+ else if (hasFade) {
1084
+ const pageEl = this.el.closest('ion-app,ion-page,.ion-page,page-inner');
1085
+ const contentEl = pageEl ? index$1.findIonContent(pageEl) : null;
1082
1086
  if (!contentEl) {
1083
1087
  index$1.printIonContentErrorMsg(this.el);
1084
1088
  return;
1085
1089
  }
1086
- const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"],ion-header[scroll-effect="condense"]');
1087
- this.activeEffect = effect;
1090
+ const condenseHeader = contentEl.querySelector('ion-header[collapse="condense"]');
1088
1091
  await this.setupFadeHeader(contentEl, condenseHeader);
1089
1092
  }
1090
1093
  }
1094
+ setupFadeHeader = async (contentEl, condenseHeader) => {
1095
+ const scrollEl = (this.scrollEl = await index$1.getScrollElement(contentEl));
1096
+ /**
1097
+ * Handle fading of toolbars on scroll
1098
+ */
1099
+ this.contentScrollCallback = () => {
1100
+ handleHeaderFade(this.scrollEl, this.el, condenseHeader);
1101
+ };
1102
+ scrollEl.addEventListener('scroll', this.contentScrollCallback);
1103
+ handleHeaderFade(this.scrollEl, this.el, condenseHeader);
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,30 @@ 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, { 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
- get el() { return index.getElement(this); }
1211
1185
  };
1212
1186
  Header.style = {
1213
- ionic: headerIonicCss(),
1214
1187
  ios: headerIosCss(),
1215
1188
  md: headerMdCss()
1216
1189
  };
1217
1190
 
1218
- const routerOutletCss = () => `:host{right:0;left:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
1191
+ const routerOutletCss = () => `:host{left:0;right:0;top:0;bottom:0;position:absolute;contain:layout size style;z-index:0}`;
1219
1192
 
1220
1193
  const RouterOutlet = class {
1221
1194
  constructor(hostRef) {
@@ -1223,22 +1196,47 @@ const RouterOutlet = class {
1223
1196
  this.ionNavWillLoad = index.createEvent(this, "ionNavWillLoad", 7);
1224
1197
  this.ionNavWillChange = index.createEvent(this, "ionNavWillChange", 3);
1225
1198
  this.ionNavDidChange = index.createEvent(this, "ionNavDidChange", 3);
1226
- this.lockController = lockController.createLockController();
1227
- this.gestureOrAnimationInProgress = false;
1228
- /**
1229
- * The mode determines the platform behaviors of the component.
1230
- */
1231
- this.mode = ionicGlobal.getIonMode(this);
1232
- /**
1233
- * If `true`, the router-outlet should animate the transition of components.
1234
- */
1235
- this.animated = true;
1236
1199
  }
1200
+ lockController = lockController.createLockController();
1201
+ activeEl;
1202
+ // TODO(FW-2832): types
1203
+ activeComponent;
1204
+ activeParams;
1205
+ gesture;
1206
+ ani;
1207
+ gestureOrAnimationInProgress = false;
1208
+ get el() { return index.getElement(this); }
1209
+ /**
1210
+ * The mode determines which platform styles to use.
1211
+ */
1212
+ mode = ionicGlobal.getIonMode(this);
1213
+ /** @internal */
1214
+ delegate;
1215
+ /**
1216
+ * If `true`, the router-outlet should animate the transition of components.
1217
+ */
1218
+ animated = true;
1219
+ /** This property allows to create custom transition using AnimationBuilder functions. */
1220
+ animation;
1221
+ /**
1222
+ * If `true`, the router-outlet should allow navigation via swipe-to-go-back gesture.
1223
+ * Defaults to `true` for `"ios"` mode and `false` for `"md"` mode.
1224
+ */
1225
+ swipeGesture;
1226
+ swipeGestureChanged() {
1227
+ this.updateGestureEnabled();
1228
+ }
1229
+ /** @internal */
1230
+ swipeHandler;
1237
1231
  swipeHandlerChanged() {
1238
- if (this.gesture) {
1239
- this.gesture.enable(this.swipeHandler !== undefined);
1240
- }
1232
+ this.updateGestureEnabled();
1241
1233
  }
1234
+ /** @internal */
1235
+ ionNavWillLoad;
1236
+ /** @internal */
1237
+ ionNavWillChange;
1238
+ /** @internal */
1239
+ ionNavDidChange;
1242
1240
  async connectedCallback() {
1243
1241
  const onStart = () => {
1244
1242
  this.gestureOrAnimationInProgress = true;
@@ -1246,7 +1244,7 @@ const RouterOutlet = class {
1246
1244
  this.swipeHandler.onStart();
1247
1245
  }
1248
1246
  };
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) => {
1247
+ this.gesture = (await Promise.resolve().then(function () { return require('./swipe-back-CmfRYdWQ.js'); })).createSwipeBackGesture(this.el, () => !this.gestureOrAnimationInProgress && !!this.swipeHandler && this.swipeHandler.canStart(), () => onStart(), (step) => this.ani?.progressStep(step), (shouldComplete, step, dur) => {
1250
1248
  if (this.ani) {
1251
1249
  this.ani.onFinish(() => {
1252
1250
  this.gestureOrAnimationInProgress = false;
@@ -1277,11 +1275,21 @@ const RouterOutlet = class {
1277
1275
  this.gestureOrAnimationInProgress = false;
1278
1276
  }
1279
1277
  });
1280
- this.swipeHandlerChanged();
1278
+ if (this.swipeGesture === undefined) {
1279
+ this.swipeGesture = index.config.getBoolean('swipeBackEnabled', this.mode === 'ios');
1280
+ }
1281
+ else {
1282
+ this.updateGestureEnabled();
1283
+ }
1281
1284
  }
1282
1285
  componentWillLoad() {
1283
1286
  this.ionNavWillLoad.emit();
1284
1287
  }
1288
+ updateGestureEnabled() {
1289
+ if (this.gesture) {
1290
+ this.gesture.enable(this.swipeHandler !== undefined && this.swipeGesture === true);
1291
+ }
1292
+ }
1285
1293
  disconnectedCallback() {
1286
1294
  if (this.gesture) {
1287
1295
  this.gesture.destroy();
@@ -1348,16 +1356,19 @@ const RouterOutlet = class {
1348
1356
  const { el, mode } = this;
1349
1357
  const animated = this.animated && index.config.getBoolean('animated', true);
1350
1358
  const animationBuilder = opts.animationBuilder || this.animation || index.config.get('navAnimation');
1351
- await index$2.transition(Object.assign(Object.assign({ mode,
1359
+ await index$2.transition({
1360
+ mode,
1352
1361
  animated,
1353
1362
  enteringEl,
1354
- leavingEl, baseEl: el,
1363
+ leavingEl,
1364
+ baseEl: el,
1355
1365
  /**
1356
1366
  * We need to wait for all Stencil components
1357
1367
  * to be ready only when using the lazy
1358
1368
  * loaded bundle.
1359
1369
  */
1360
- deepWait: helpers.hasLazyBuild(el), progressCallback: opts.progressAnimation
1370
+ deepWait: helpers.hasLazyBuild(el),
1371
+ progressCallback: opts.progressAnimation
1361
1372
  ? (ani) => {
1362
1373
  /**
1363
1374
  * Because this progress callback is called asynchronously
@@ -1386,16 +1397,21 @@ const RouterOutlet = class {
1386
1397
  this.ani = ani;
1387
1398
  }
1388
1399
  }
1389
- : undefined }, opts), { animationBuilder }));
1400
+ : undefined,
1401
+ ...opts,
1402
+ animationBuilder,
1403
+ });
1390
1404
  // emit nav changed event
1391
1405
  this.ionNavDidChange.emit();
1392
1406
  return true;
1393
1407
  }
1394
1408
  render() {
1395
- return index.h("slot", { key: '56e3d06ed939755796058e30ef19fbc7f7cb490d' });
1409
+ return index.h("slot", { key: 'ce09e6fbba7b0a2276cdde5245bb37c9a162c1c7' });
1396
1410
  }
1397
- get el() { return index.getElement(this); }
1398
1411
  static get watchers() { return {
1412
+ "swipeGesture": [{
1413
+ "swipeGestureChanged": 0
1414
+ }],
1399
1415
  "swipeHandler": [{
1400
1416
  "swipeHandlerChanged": 0
1401
1417
  }]
@@ -1403,17 +1419,31 @@ const RouterOutlet = class {
1403
1419
  };
1404
1420
  RouterOutlet.style = routerOutletCss();
1405
1421
 
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)}}`;
1422
+ 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
1423
 
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}`;
1424
+ 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
1425
 
1412
1426
  const ToolbarTitle = class {
1413
1427
  constructor(hostRef) {
1414
1428
  index.registerInstance(this, hostRef);
1415
1429
  this.ionStyle = index.createEvent(this, "ionStyle", 7);
1416
1430
  }
1431
+ get el() { return index.getElement(this); }
1432
+ /**
1433
+ * The color to use from your application's color palette.
1434
+ * Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
1435
+ * For more information on colors, see [theming](/docs/theming/basics).
1436
+ */
1437
+ color;
1438
+ /**
1439
+ * The size of the toolbar title.
1440
+ */
1441
+ size;
1442
+ /**
1443
+ * Emitted when the styles change.
1444
+ * @internal
1445
+ */
1446
+ ionStyle;
1417
1447
  sizeChanged() {
1418
1448
  this.emitStyle();
1419
1449
  }
@@ -1430,15 +1460,14 @@ const ToolbarTitle = class {
1430
1460
  return this.size !== undefined ? this.size : 'default';
1431
1461
  }
1432
1462
  render() {
1433
- const theme$1 = ionicGlobal.getIonTheme(this);
1463
+ const mode = ionicGlobal.getIonMode(this);
1434
1464
  const size = this.getSize();
1435
- return (index.h(index.Host, { key: 'd64e86bed418cba707d4a26c9274f18ed06c0e9e', class: theme.createColorClasses(this.color, {
1436
- [theme$1]: true,
1465
+ return (index.h(index.Host, { key: 'd9317e8e66cb6112717f5a9c252658777efbd873', class: theme.createColorClasses(this.color, {
1466
+ [mode]: true,
1437
1467
  [`title-${size}`]: true,
1438
1468
  'title-rtl': document.dir === 'rtl',
1439
- }) }, index.h("div", { key: '386a71e974cde0bfbf5b655d69ed5f718de8ce48', class: "toolbar-title" }, index.h("slot", { key: '8aa804c9e1b11574a42268805d3117a085e699b4' }))));
1469
+ }) }, index.h("div", { key: 'a4d011d6d409bf006d8efe33667002edb109820a', class: "toolbar-title" }, index.h("slot", { key: '4ca3303b957a0e5387f1e9058e5adb4c6275afcc' }))));
1440
1470
  }
1441
- get el() { return index.getElement(this); }
1442
1471
  static get watchers() { return {
1443
1472
  "size": [{
1444
1473
  "sizeChanged": 0
@@ -1446,30 +1475,26 @@ const ToolbarTitle = class {
1446
1475
  }; }
1447
1476
  };
1448
1477
  ToolbarTitle.style = {
1449
- ionic: titleIonicCss(),
1450
1478
  ios: titleIosCss(),
1451
1479
  md: titleMdCss()
1452
1480
  };
1453
1481
 
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}`;
1482
+ 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
1483
 
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}`;
1484
+ 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
1485
 
1460
1486
  const Toolbar = class {
1461
1487
  constructor(hostRef) {
1462
1488
  index.registerInstance(this, hostRef);
1463
- 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
1489
  }
1490
+ childrenStyles = new Map();
1491
+ get el() { return index.getElement(this); }
1492
+ /**
1493
+ * The color to use from your application's color palette.
1494
+ * Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
1495
+ * For more information on colors, see [theming](/docs/theming/basics).
1496
+ */
1497
+ color;
1473
1498
  componentWillLoad() {
1474
1499
  const buttons = Array.from(this.el.querySelectorAll('ion-buttons'));
1475
1500
  const firstButtons = buttons.find((button) => {
@@ -1485,173 +1510,6 @@ const Toolbar = class {
1485
1510
  if (lastButtons) {
1486
1511
  lastButtons.classList.add('buttons-last-slot');
1487
1512
  }
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
1513
  }
1656
1514
  childrenStyle(ev) {
1657
1515
  ev.stopPropagation();
@@ -1676,27 +1534,21 @@ const Toolbar = class {
1676
1534
  }
1677
1535
  }
1678
1536
  render() {
1679
- const theme$1 = ionicGlobal.getIonTheme(this);
1537
+ const mode = ionicGlobal.getIonMode(this);
1680
1538
  const childStyles = {};
1681
- this.childrenStyles.forEach((style) => {
1682
- Object.assign(childStyles, style);
1539
+ this.childrenStyles.forEach((value) => {
1540
+ Object.assign(childStyles, value);
1683
1541
  });
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,
1687
- '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 }))));
1542
+ return (index.h(index.Host, { key: '40bad6fa7e94262438da4bbe037dcf8a5fa2df22', class: {
1543
+ ...childStyles,
1544
+ ...theme.createColorClasses(this.color, {
1545
+ [mode]: true,
1546
+ 'in-toolbar': theme.hostContext('ion-toolbar', this.el),
1547
+ }),
1548
+ } }, index.h("div", { key: 'df44c9f0fe3958116ab860b0dad79c53b89f6c59', class: "toolbar-background", part: "background" }), index.h("div", { key: '2169ffa576875b8d5624211cc0b4bf86191562bc', class: "toolbar-container", part: "container" }, index.h("slot", { key: 'c8910dcf1ce98ab427fd89c3396a67c2a75bdd07', name: "start" }), index.h("slot", { key: '05da24d5ef96b9eebd83b534ce02c1f7bcd06680', name: "secondary" }), index.h("div", { key: '090fea1541e7e2b6ad74a6ded4eadffdb471ccce', class: "toolbar-content", part: "content" }, index.h("slot", { key: '507e143f92f6fa59ff23d94026411fa2c74f2f8e' })), index.h("slot", { key: 'f79fdee472e657e26a910cb89d7551943e40e440', name: "primary" }), index.h("slot", { key: 'dd40fe9ed490cf4346c642e195fdb524dc6cc4f5', name: "end" }))));
1690
1549
  }
1691
- get el() { return index.getElement(this); }
1692
- static get watchers() { return {
1693
- "titlePlacement": [{
1694
- "titlePlacementChanged": 0
1695
- }]
1696
- }; }
1697
1550
  };
1698
1551
  Toolbar.style = {
1699
- ionic: toolbarIonicCss(),
1700
1552
  ios: toolbarIosCss(),
1701
1553
  md: toolbarMdCss()
1702
1554
  };