voyager-ionic-core 8.7.2 → 8.7.9

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 (1389) hide show
  1. package/components/action-sheet.js +7 -5
  2. package/components/alert.js +7 -5
  3. package/components/backdrop.js +4 -2
  4. package/components/button.js +8 -10
  5. package/components/buttons.js +4 -2
  6. package/components/checkbox.js +8 -9
  7. package/components/content.js +4 -2
  8. package/components/data.js +9 -6
  9. package/components/header.js +46 -6
  10. package/components/icon.js +4 -2
  11. package/components/index2.js +74 -3
  12. package/components/ion-accordion-group.js +4 -2
  13. package/components/ion-accordion.js +98 -17
  14. package/components/ion-app.js +4 -2
  15. package/components/ion-avatar.js +4 -2
  16. package/components/ion-back-button.js +5 -3
  17. package/components/ion-badge.js +4 -2
  18. package/components/ion-breadcrumb.js +5 -3
  19. package/components/ion-breadcrumbs.js +4 -2
  20. package/components/ion-card-content.js +4 -2
  21. package/components/ion-card-header.js +4 -2
  22. package/components/ion-card-subtitle.js +4 -2
  23. package/components/ion-card-title.js +4 -2
  24. package/components/ion-card.js +5 -3
  25. package/components/ion-chip.js +4 -2
  26. package/components/ion-col.js +4 -2
  27. package/components/ion-datetime-button.js +4 -2
  28. package/components/ion-datetime.js +12 -9
  29. package/components/ion-fab-button.js +6 -4
  30. package/components/ion-fab-list.js +4 -2
  31. package/components/ion-fab.js +4 -2
  32. package/components/ion-footer.js +4 -2
  33. package/components/ion-grid.js +4 -2
  34. package/components/ion-img.js +4 -2
  35. package/components/ion-infinite-scroll-content.js +4 -2
  36. package/components/ion-infinite-scroll.js +4 -2
  37. package/components/ion-input-otp.js +4 -2
  38. package/components/ion-input-password-toggle.js +4 -2
  39. package/components/ion-input.js +41 -12
  40. package/components/ion-item-divider.js +4 -2
  41. package/components/ion-item-group.js +4 -2
  42. package/components/ion-item-option.js +4 -2
  43. package/components/ion-item-options.js +4 -2
  44. package/components/ion-item-sliding.js +4 -2
  45. package/components/ion-loading.js +7 -5
  46. package/components/ion-menu-button.js +4 -2
  47. package/components/ion-menu-toggle.js +4 -2
  48. package/components/ion-menu.js +9 -4
  49. package/components/ion-nav-link.js +6 -4
  50. package/components/ion-nav.js +5 -3
  51. package/components/ion-note.js +4 -2
  52. package/components/ion-picker-legacy.js +7 -5
  53. package/components/ion-progress-bar.js +4 -2
  54. package/components/ion-range.js +5 -3
  55. package/components/ion-refresher-content.js +4 -2
  56. package/components/ion-refresher.js +22 -3
  57. package/components/ion-reorder-group.js +4 -2
  58. package/components/ion-reorder.js +4 -2
  59. package/components/ion-route-redirect.js +4 -2
  60. package/components/ion-route.js +7 -5
  61. package/components/ion-router-link.js +5 -3
  62. package/components/ion-router-outlet.js +5 -3
  63. package/components/ion-router.js +4 -2
  64. package/components/ion-row.js +4 -2
  65. package/components/ion-searchbar.js +4 -2
  66. package/components/ion-segment-button.js +4 -2
  67. package/components/ion-segment-content.js +4 -2
  68. package/components/ion-segment-view.js +11 -6
  69. package/components/ion-segment.js +4 -2
  70. package/components/ion-select-option.js +4 -2
  71. package/components/ion-select.js +62 -12
  72. package/components/ion-skeleton-text.js +4 -2
  73. package/components/ion-split-pane.js +4 -2
  74. package/components/ion-tab-bar.js +24 -9
  75. package/components/ion-tab-button.js +4 -2
  76. package/components/ion-tab.js +4 -2
  77. package/components/ion-tabs.js +25 -24
  78. package/components/ion-text.js +4 -2
  79. package/components/ion-textarea.js +40 -11
  80. package/components/ion-thumbnail.js +4 -2
  81. package/components/ion-toast.js +7 -5
  82. package/components/ion-toggle.js +8 -9
  83. package/components/item.js +6 -4
  84. package/components/label.js +4 -2
  85. package/components/list-header.js +4 -2
  86. package/components/list.js +4 -2
  87. package/components/modal.js +21 -9
  88. package/components/overlays.js +55 -124
  89. package/components/picker-column-option.js +7 -5
  90. package/components/picker-column.js +7 -41
  91. package/components/picker-column2.js +4 -2
  92. package/components/picker.js +4 -2
  93. package/components/popover.js +8 -6
  94. package/components/radio-group.js +4 -2
  95. package/components/radio.js +4 -2
  96. package/components/ripple-effect.js +4 -2
  97. package/components/select-modal.js +4 -2
  98. package/components/select-popover.js +4 -2
  99. package/components/spinner.js +4 -2
  100. package/components/title.js +4 -2
  101. package/components/toolbar.js +4 -2
  102. package/components/{notch-controller.js → validity.js} +14 -1
  103. package/dist/cjs/{animation-ZJ1lAkZD.js → animation-Bt3H9L1C.js} +1 -1
  104. package/dist/cjs/{app-globals-77ZfuXXk.js → app-globals-Ciccnk9_.js} +1 -1
  105. package/dist/cjs/{button-active-BzZenWWH.js → button-active-CMc8cD90.js} +1 -1
  106. package/dist/cjs/{config-CKhELRRu.js → config-C5fsO43a.js} +1 -1
  107. package/dist/cjs/{data-DW6ofvJ8.js → data-JwZKaIQB.js} +10 -7
  108. package/dist/cjs/{framework-delegate-WkyjrnCx.js → framework-delegate-DMJRBuDi.js} +1 -1
  109. package/dist/cjs/{hardware-back-button-BxdNu76F.js → hardware-back-button-VCK4V3mG.js} +1 -1
  110. package/dist/cjs/{helpers-DgwmcYAu.js → helpers-DrTqNghc.js} +1 -1
  111. package/dist/cjs/{index-BzEyuIww.js → index-094mMFB-.js} +78 -7
  112. package/dist/cjs/{index-bGpoPC4u.js → index-C534ULug.js} +2 -2
  113. package/dist/cjs/{index-Cc5PNMyz.js → index-CO6eryBo.js} +2 -2
  114. package/dist/cjs/{index-DNh170BW.js → index-D6Wc6v08.js} +51 -47
  115. package/dist/cjs/{index-D24wggHR.js → index-DrMUZJj6.js} +5 -5
  116. package/dist/cjs/index.cjs.js +12 -12
  117. package/dist/cjs/{input-shims-CLI_OrmU.js → input-shims-CW0KUFTQ.js} +3 -3
  118. package/dist/cjs/{input.utils-B2hZ5tX6.js → input.utils-B_QROI2g.js} +2 -2
  119. package/dist/cjs/ion-accordion_2.cjs.entry.js +94 -16
  120. package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
  121. package/dist/cjs/ion-alert.cjs.entry.js +9 -9
  122. package/dist/cjs/ion-app_8.cjs.entry.js +54 -16
  123. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  124. package/dist/cjs/ion-back-button.cjs.entry.js +3 -3
  125. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  126. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -3
  127. package/dist/cjs/ion-button_2.cjs.entry.js +6 -10
  128. package/dist/cjs/ion-card_5.cjs.entry.js +3 -3
  129. package/dist/cjs/ion-checkbox.cjs.entry.js +7 -10
  130. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  131. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  132. package/dist/cjs/ion-datetime-button.cjs.entry.js +4 -4
  133. package/dist/cjs/ion-datetime_3.cjs.entry.js +11 -11
  134. package/dist/cjs/ion-fab_3.cjs.entry.js +3 -3
  135. package/dist/cjs/ion-img.cjs.entry.js +3 -3
  136. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +5 -5
  137. package/dist/cjs/ion-input-otp.cjs.entry.js +3 -3
  138. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +2 -2
  139. package/dist/cjs/ion-input.cjs.entry.js +40 -14
  140. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  141. package/dist/cjs/ion-item_8.cjs.entry.js +3 -3
  142. package/dist/cjs/ion-loading.cjs.entry.js +8 -8
  143. package/dist/cjs/ion-menu_3.cjs.entry.js +13 -10
  144. package/dist/cjs/ion-modal.cjs.entry.js +21 -11
  145. package/dist/cjs/ion-nav_2.cjs.entry.js +6 -6
  146. package/dist/cjs/ion-picker-column-option.cjs.entry.js +6 -6
  147. package/dist/cjs/ion-picker-column.cjs.entry.js +6 -42
  148. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  149. package/dist/cjs/ion-popover.cjs.entry.js +8 -8
  150. package/dist/cjs/ion-progress-bar.cjs.entry.js +3 -3
  151. package/dist/cjs/ion-radio_2.cjs.entry.js +3 -3
  152. package/dist/cjs/ion-range.cjs.entry.js +4 -4
  153. package/dist/cjs/ion-refresher_2.cjs.entry.js +24 -7
  154. package/dist/cjs/ion-reorder_2.cjs.entry.js +4 -4
  155. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  156. package/dist/cjs/ion-route_4.cjs.entry.js +3 -3
  157. package/dist/cjs/ion-searchbar.cjs.entry.js +3 -3
  158. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  159. package/dist/cjs/ion-segment-view.cjs.entry.js +8 -5
  160. package/dist/cjs/ion-segment_2.cjs.entry.js +3 -3
  161. package/dist/cjs/ion-select-modal.cjs.entry.js +6 -6
  162. package/dist/cjs/ion-select_3.cjs.entry.js +62 -16
  163. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  164. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  165. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +23 -10
  166. package/dist/cjs/ion-tab_2.cjs.entry.js +24 -25
  167. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  168. package/dist/cjs/ion-textarea.cjs.entry.js +39 -13
  169. package/dist/cjs/ion-toast.cjs.entry.js +8 -8
  170. package/dist/cjs/ion-toggle.cjs.entry.js +7 -10
  171. package/dist/cjs/{ionic-global-UI5YPSi-.js → ionic-global-HMVqOFGO.js} +1 -1
  172. package/dist/cjs/ionic.cjs.js +5 -5
  173. package/dist/cjs/{ios.transition-DEitrLlG.js → ios.transition-BOt_uW73.js} +4 -4
  174. package/dist/cjs/loader.cjs.js +4 -4
  175. package/dist/cjs/{md.transition-BHtGC-Wg.js → md.transition-Dt968VXB.js} +4 -4
  176. package/dist/cjs/{overlays-CglR7j-u.js → overlays-DxIZwUXI.js} +59 -128
  177. package/dist/cjs/{status-tap-D9YPr62n.js → status-tap-g0sWWkXk.js} +3 -3
  178. package/dist/cjs/{swipe-back-Ck8mDs0g.js → swipe-back-C1stlUq5.js} +2 -2
  179. package/dist/cjs/{notch-controller-Bf5Rr4R5.js → validity-C8QoAYT2.js} +15 -1
  180. package/dist/collection/collection-manifest.json +1 -1
  181. package/dist/collection/components/accordion/accordion.js +101 -22
  182. package/dist/collection/components/accordion-group/accordion-group.js +8 -8
  183. package/dist/collection/components/action-sheet/action-sheet.js +16 -21
  184. package/dist/collection/components/alert/alert.js +18 -24
  185. package/dist/collection/components/back-button/back-button.js +10 -11
  186. package/dist/collection/components/backdrop/backdrop.js +3 -3
  187. package/dist/collection/components/badge/badge.js +2 -2
  188. package/dist/collection/components/breadcrumb/breadcrumb.js +20 -21
  189. package/dist/collection/components/breadcrumbs/breadcrumbs.js +6 -6
  190. package/dist/collection/components/button/button.js +28 -33
  191. package/dist/collection/components/buttons/buttons.js +1 -1
  192. package/dist/collection/components/card/card.js +14 -15
  193. package/dist/collection/components/card-header/card-header.js +3 -3
  194. package/dist/collection/components/card-subtitle/card-subtitle.js +2 -2
  195. package/dist/collection/components/card-title/card-title.js +2 -2
  196. package/dist/collection/components/checkbox/checkbox.js +21 -24
  197. package/dist/collection/components/chip/chip.js +4 -4
  198. package/dist/collection/components/col/col.js +48 -48
  199. package/dist/collection/components/content/content.js +9 -9
  200. package/dist/collection/components/datetime/datetime.js +40 -43
  201. package/dist/collection/components/datetime-button/datetime-button.js +4 -4
  202. package/dist/collection/components/fab/fab.js +6 -6
  203. package/dist/collection/components/fab-button/fab-button.js +22 -23
  204. package/dist/collection/components/fab-list/fab-list.js +2 -2
  205. package/dist/collection/components/footer/footer.js +3 -3
  206. package/dist/collection/components/grid/grid.js +1 -1
  207. package/dist/collection/components/header/header.ios.css +27 -1
  208. package/dist/collection/components/header/header.js +8 -7
  209. package/dist/collection/components/header/header.utils.js +37 -0
  210. package/dist/collection/components/img/img.js +4 -4
  211. package/dist/collection/components/infinite-scroll/infinite-scroll.js +3 -3
  212. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +4 -4
  213. package/dist/collection/components/input/input.js +89 -63
  214. package/dist/collection/components/input-otp/input-otp.js +17 -17
  215. package/dist/collection/components/input-password-toggle/input-password-toggle.js +7 -7
  216. package/dist/collection/components/item/item.js +22 -23
  217. package/dist/collection/components/item-divider/item-divider.js +3 -3
  218. package/dist/collection/components/item-option/item-option.js +13 -13
  219. package/dist/collection/components/item-options/item-options.js +1 -1
  220. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  221. package/dist/collection/components/label/label.js +4 -4
  222. package/dist/collection/components/list/list.js +3 -3
  223. package/dist/collection/components/list-header/list-header.js +4 -4
  224. package/dist/collection/components/loading/loading.js +18 -22
  225. package/dist/collection/components/menu/menu.js +19 -12
  226. package/dist/collection/components/menu-button/menu-button.js +7 -7
  227. package/dist/collection/components/menu-toggle/menu-toggle.js +3 -3
  228. package/dist/collection/components/modal/gestures/sheet.js +12 -2
  229. package/dist/collection/components/modal/modal.js +24 -31
  230. package/dist/collection/components/nav/nav.js +5 -8
  231. package/dist/collection/components/nav-link/nav-link.js +3 -5
  232. package/dist/collection/components/note/note.js +2 -2
  233. package/dist/collection/components/picker-column/picker-column.js +8 -44
  234. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +2 -2
  235. package/dist/collection/components/picker-column-option/picker-column-option.js +5 -5
  236. package/dist/collection/components/picker-column-option/picker-column-option.md.css +2 -2
  237. package/dist/collection/components/picker-legacy/picker.js +13 -19
  238. package/dist/collection/components/picker-legacy-column/picker-column.js +0 -1
  239. package/dist/collection/components/popover/popover.js +28 -33
  240. package/dist/collection/components/progress-bar/progress-bar.js +6 -6
  241. package/dist/collection/components/radio/radio.js +11 -11
  242. package/dist/collection/components/radio-group/radio-group.js +10 -10
  243. package/dist/collection/components/range/range.js +19 -20
  244. package/dist/collection/components/refresher/refresher.js +24 -7
  245. package/dist/collection/components/refresher-content/refresher-content.js +8 -8
  246. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  247. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  248. package/dist/collection/components/route/route.js +3 -6
  249. package/dist/collection/components/route-redirect/route-redirect.js +4 -4
  250. package/dist/collection/components/router/router.js +2 -2
  251. package/dist/collection/components/router-link/router-link.js +9 -10
  252. package/dist/collection/components/router-outlet/router-outlet.js +2 -5
  253. package/dist/collection/components/searchbar/searchbar.js +30 -30
  254. package/dist/collection/components/segment/segment.js +8 -8
  255. package/dist/collection/components/segment-button/segment-button.js +6 -6
  256. package/dist/collection/components/segment-view/segment-view.js +8 -5
  257. package/dist/collection/components/select/select.js +94 -46
  258. package/dist/collection/components/select-modal/select-modal.js +4 -5
  259. package/dist/collection/components/select-option/select-option.js +3 -3
  260. package/dist/collection/components/select-popover/select-popover.js +8 -9
  261. package/dist/collection/components/skeleton-text/skeleton-text.js +1 -1
  262. package/dist/collection/components/spinner/spinner.js +7 -7
  263. package/dist/collection/components/split-pane/split-pane.js +4 -4
  264. package/dist/collection/components/tab/tab.js +5 -6
  265. package/dist/collection/components/tab-bar/tab-bar.js +25 -12
  266. package/dist/collection/components/tab-button/tab-button.js +14 -14
  267. package/dist/collection/components/tabs/tabs.js +22 -23
  268. package/dist/collection/components/text/text.js +2 -2
  269. package/dist/collection/components/textarea/textarea.js +78 -52
  270. package/dist/collection/components/title/title.js +4 -4
  271. package/dist/collection/components/toast/toast.js +26 -31
  272. package/dist/collection/components/toggle/toggle.js +21 -24
  273. package/dist/collection/components/toolbar/toolbar.js +2 -2
  274. package/dist/collection/utils/forms/index.js +1 -0
  275. package/dist/collection/utils/forms/validity.js +15 -0
  276. package/dist/collection/utils/overlays.js +54 -124
  277. package/dist/collection/utils/test/playwright/page/utils/spy-on-event.js +32 -0
  278. package/dist/collection/utils/transition/index.js +74 -3
  279. package/dist/docs.json +18 -67
  280. package/dist/esm/{animation-BvhAtgca.js → animation-Dt8bGnA-.js} +1 -1
  281. package/dist/esm/{app-globals-CvLYUxE9.js → app-globals-BDSf8fOA.js} +1 -1
  282. package/dist/esm/{button-active-DBUPuLNw.js → button-active-L570Swow.js} +1 -1
  283. package/dist/esm/{config-Dx_6wPIJ.js → config-mCdtaoPe.js} +1 -1
  284. package/dist/esm/{data-CKHMWxfe.js → data-DCORV9FH.js} +10 -7
  285. package/dist/esm/{framework-delegate-BLEBgH06.js → framework-delegate-BYawdMXj.js} +1 -1
  286. package/dist/esm/{hardware-back-button-Dhbd-23H.js → hardware-back-button-CPLxO-Ev.js} +1 -1
  287. package/dist/esm/{helpers-8KSQQGQy.js → helpers-DEn3pfjm.js} +1 -1
  288. package/dist/esm/{index-7UbSlv7N.js → index-Bs3kT4bc.js} +2 -2
  289. package/dist/esm/{index-4DxY6_gG.js → index-C8IsBmNU.js} +51 -47
  290. package/dist/esm/{index-CXSTcaAW.js → index-CvDIirVx.js} +5 -5
  291. package/dist/esm/{index-C6WeRr09.js → index-ceb5RaMT.js} +2 -2
  292. package/dist/esm/{index-Dp7GXH1z.js → index-r2D9DEro.js} +78 -7
  293. package/dist/esm/index.js +12 -12
  294. package/dist/esm/{input-shims-C4KDnhxb.js → input-shims-DyOpfTg6.js} +3 -3
  295. package/dist/esm/{input.utils-be4gBvVY.js → input.utils-DrvTa8gz.js} +2 -2
  296. package/dist/esm/ion-accordion_2.entry.js +94 -16
  297. package/dist/esm/ion-action-sheet.entry.js +8 -8
  298. package/dist/esm/ion-alert.entry.js +9 -9
  299. package/dist/esm/ion-app_8.entry.js +54 -16
  300. package/dist/esm/ion-avatar_3.entry.js +2 -2
  301. package/dist/esm/ion-back-button.entry.js +3 -3
  302. package/dist/esm/ion-backdrop.entry.js +2 -2
  303. package/dist/esm/ion-breadcrumb_2.entry.js +3 -3
  304. package/dist/esm/ion-button_2.entry.js +6 -10
  305. package/dist/esm/ion-card_5.entry.js +3 -3
  306. package/dist/esm/ion-checkbox.entry.js +7 -10
  307. package/dist/esm/ion-chip.entry.js +2 -2
  308. package/dist/esm/ion-col_3.entry.js +2 -2
  309. package/dist/esm/ion-datetime-button.entry.js +4 -4
  310. package/dist/esm/ion-datetime_3.entry.js +11 -11
  311. package/dist/esm/ion-fab_3.entry.js +3 -3
  312. package/dist/esm/ion-img.entry.js +3 -3
  313. package/dist/esm/ion-infinite-scroll_2.entry.js +5 -5
  314. package/dist/esm/ion-input-otp.entry.js +3 -3
  315. package/dist/esm/ion-input-password-toggle.entry.js +2 -2
  316. package/dist/esm/ion-input.entry.js +39 -13
  317. package/dist/esm/ion-item-option_3.entry.js +4 -4
  318. package/dist/esm/ion-item_8.entry.js +3 -3
  319. package/dist/esm/ion-loading.entry.js +8 -8
  320. package/dist/esm/ion-menu_3.entry.js +13 -10
  321. package/dist/esm/ion-modal.entry.js +21 -11
  322. package/dist/esm/ion-nav_2.entry.js +6 -6
  323. package/dist/esm/ion-picker-column-option.entry.js +6 -6
  324. package/dist/esm/ion-picker-column.entry.js +6 -42
  325. package/dist/esm/ion-picker.entry.js +2 -2
  326. package/dist/esm/ion-popover.entry.js +8 -8
  327. package/dist/esm/ion-progress-bar.entry.js +3 -3
  328. package/dist/esm/ion-radio_2.entry.js +3 -3
  329. package/dist/esm/ion-range.entry.js +4 -4
  330. package/dist/esm/ion-refresher_2.entry.js +24 -7
  331. package/dist/esm/ion-reorder_2.entry.js +4 -4
  332. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  333. package/dist/esm/ion-route_4.entry.js +3 -3
  334. package/dist/esm/ion-searchbar.entry.js +3 -3
  335. package/dist/esm/ion-segment-content.entry.js +1 -1
  336. package/dist/esm/ion-segment-view.entry.js +8 -5
  337. package/dist/esm/ion-segment_2.entry.js +3 -3
  338. package/dist/esm/ion-select-modal.entry.js +6 -6
  339. package/dist/esm/ion-select_3.entry.js +61 -15
  340. package/dist/esm/ion-spinner.entry.js +2 -2
  341. package/dist/esm/ion-split-pane.entry.js +2 -2
  342. package/dist/esm/ion-tab-bar_2.entry.js +23 -10
  343. package/dist/esm/ion-tab_2.entry.js +24 -25
  344. package/dist/esm/ion-text.entry.js +2 -2
  345. package/dist/esm/ion-textarea.entry.js +38 -12
  346. package/dist/esm/ion-toast.entry.js +8 -8
  347. package/dist/esm/ion-toggle.entry.js +7 -10
  348. package/dist/esm/{ionic-global-CTSyufhF.js → ionic-global-CDrldh-5.js} +1 -1
  349. package/dist/esm/ionic.js +6 -6
  350. package/dist/esm/{ios.transition-eAEkgVAv.js → ios.transition-BDzw0_Hm.js} +4 -4
  351. package/dist/esm/loader.js +5 -5
  352. package/dist/esm/{md.transition-D8TeJ_Pz.js → md.transition-BzDYi3qq.js} +4 -4
  353. package/dist/esm/{overlays-ZX_4-t_r.js → overlays-BymNv-BL.js} +59 -128
  354. package/dist/esm/{status-tap-pATNXEtr.js → status-tap-5DQ7Fc4V.js} +3 -3
  355. package/dist/esm/{swipe-back-tV63j0BI.js → swipe-back-BEbA0QrR.js} +2 -2
  356. package/dist/esm/{notch-controller-lb417-kU.js → validity-B8oWougr.js} +15 -2
  357. package/dist/html.html-data.json +0 -212
  358. package/dist/ionic/index.esm.js +1 -1
  359. package/dist/ionic/ionic.esm.js +1 -1
  360. package/dist/ionic/p-020af078.entry.js +4 -0
  361. package/dist/ionic/{p-6383afc2.entry.js → p-074839fc.entry.js} +1 -1
  362. package/dist/ionic/{p-7bac2c5f.entry.js → p-0b80d700.entry.js} +1 -1
  363. package/dist/ionic/{p-16116947.entry.js → p-0dfa5a37.entry.js} +1 -1
  364. package/dist/ionic/{p-bc9f9032.entry.js → p-11518b31.entry.js} +1 -1
  365. package/dist/ionic/{p-ac434970.entry.js → p-15193d01.entry.js} +1 -1
  366. package/dist/ionic/{p-d04d66fc.entry.js → p-1647c46c.entry.js} +1 -1
  367. package/dist/ionic/{p-7b12d853.entry.js → p-2a939845.entry.js} +1 -1
  368. package/dist/ionic/{p-f7db572a.entry.js → p-31f7095f.entry.js} +1 -1
  369. package/dist/ionic/{p-54dec9b1.entry.js → p-370e4237.entry.js} +1 -1
  370. package/dist/ionic/{p-1191a2d9.entry.js → p-3a6caca9.entry.js} +1 -1
  371. package/dist/ionic/p-43ed1ef5.entry.js +4 -0
  372. package/dist/ionic/{p-a81be128.entry.js → p-46d74291.entry.js} +1 -1
  373. package/dist/ionic/{p-349fc921.entry.js → p-49d06882.entry.js} +1 -1
  374. package/dist/ionic/p-4cc26913.entry.js +4 -0
  375. package/dist/ionic/p-4efea47a.entry.js +4 -0
  376. package/dist/ionic/{p-91d6ccb0.entry.js → p-510d86e1.entry.js} +1 -1
  377. package/dist/ionic/{p-0f396661.entry.js → p-51a60e0f.entry.js} +1 -1
  378. package/dist/ionic/{p-bf81a468.entry.js → p-582824c5.entry.js} +1 -1
  379. package/dist/ionic/p-5a39a99a.entry.js +4 -0
  380. package/dist/ionic/p-5fb517e4.entry.js +4 -0
  381. package/dist/ionic/{p-528af4e6.entry.js → p-6241ce47.entry.js} +1 -1
  382. package/dist/ionic/p-639dd543.entry.js +4 -0
  383. package/dist/ionic/{p-36a54836.entry.js → p-6444c606.entry.js} +1 -1
  384. package/dist/ionic/p-675b1a31.entry.js +4 -0
  385. package/dist/ionic/p-6d070558.entry.js +4 -0
  386. package/dist/ionic/p-7268efa5.entry.js +4 -0
  387. package/dist/ionic/{p-7a53f04c.entry.js → p-72c38b88.entry.js} +1 -1
  388. package/dist/ionic/{p-7da05504.entry.js → p-79bd78f9.entry.js} +1 -1
  389. package/dist/ionic/{p-f9eb54ee.entry.js → p-7bcfc421.entry.js} +1 -1
  390. package/dist/ionic/{p-f2884bc2.entry.js → p-7da39a4d.entry.js} +1 -1
  391. package/dist/ionic/p-83be404e.entry.js +4 -0
  392. package/dist/ionic/{p-dbba38cf.entry.js → p-86f53961.entry.js} +1 -1
  393. package/dist/ionic/p-8bdfc8f6.entry.js +4 -0
  394. package/dist/ionic/{p-d3df6032.entry.js → p-94de5cfa.entry.js} +1 -1
  395. package/dist/ionic/{p-9ddf2620.entry.js → p-9575b654.entry.js} +1 -1
  396. package/dist/ionic/p-95bddd49.entry.js +4 -0
  397. package/dist/ionic/{p-6701ab96.entry.js → p-988f30f5.entry.js} +1 -1
  398. package/dist/ionic/{p-8d96a0cd.entry.js → p-98fc09eb.entry.js} +1 -1
  399. package/dist/ionic/{p-CvaZMP6T.js → p-B0q1YL7N.js} +1 -1
  400. package/dist/ionic/{p-Br3vSlYh.js → p-BFvmZNyx.js} +1 -1
  401. package/dist/ionic/{p-B5MDSrGg.js → p-BOVrCkpJ.js} +1 -1
  402. package/dist/ionic/{p-D2re3d9B.js → p-BXDhML4F.js} +1 -1
  403. package/dist/ionic/{p-BHGXdud8.js → p-BYEqWnSg.js} +1 -1
  404. package/dist/ionic/p-Bmgaetn_.js +4 -0
  405. package/dist/ionic/{p-BB-JoKGB.js → p-C7hRNDhM.js} +1 -1
  406. package/dist/ionic/p-C8IsBmNU.js +5 -0
  407. package/dist/ionic/{p-B1xocg0A.js → p-CJxh_yLS.js} +1 -1
  408. package/dist/ionic/{p-C-Cct-6D.js → p-CTfR9YZG.js} +1 -1
  409. package/dist/ionic/{p-BhNEp2QP.js → p-CwgG81ZD.js} +1 -1
  410. package/dist/ionic/p-D-eFFUkA.js +4 -0
  411. package/dist/ionic/{p-DiZPU8BH.js → p-D0dMcSkw.js} +1 -1
  412. package/dist/ionic/p-D87hU-Ly.js +4 -0
  413. package/dist/ionic/p-DDb5r57F.js +4 -0
  414. package/dist/ionic/{p-C8d2ebIg.js → p-DNcfiJwE.js} +1 -1
  415. package/dist/ionic/p-DUt5fQmA.js +4 -0
  416. package/dist/ionic/p-DZRJwG4S.js +4 -0
  417. package/dist/ionic/{p-EnaLTYYj.js → p-DbQ5QkTP.js} +1 -1
  418. package/dist/ionic/{p-CWvl4RPO.js → p-Dc45iWE4.js} +1 -1
  419. package/dist/ionic/p-DieJyvMP.js +4 -0
  420. package/dist/ionic/{p-D2fQU_qK.js → p-QHYY4sjU.js} +1 -1
  421. package/dist/ionic/p-a127bee2.entry.js +4 -0
  422. package/dist/ionic/{p-2cb0f39f.entry.js → p-ac4eb91d.entry.js} +1 -1
  423. package/dist/ionic/{p-afeb9df6.entry.js → p-b0a7585c.entry.js} +1 -1
  424. package/dist/ionic/{p-148bdf18.entry.js → p-b57c6d3e.entry.js} +1 -1
  425. package/dist/ionic/{p-ee2e35a6.entry.js → p-cc45bcbc.entry.js} +1 -1
  426. package/dist/ionic/p-d0a2a1ab.entry.js +4 -0
  427. package/dist/ionic/{p-e6c465ff.entry.js → p-d126e8d3.entry.js} +1 -1
  428. package/dist/ionic/{p-19f80390.entry.js → p-da7d04cc.entry.js} +1 -1
  429. package/dist/ionic/p-dc2e126d.entry.js +4 -0
  430. package/dist/ionic/{p-ab33ef20.entry.js → p-e16b69e1.entry.js} +1 -1
  431. package/dist/ionic/p-f65f9308.entry.js +4 -0
  432. package/dist/ionic/{p-3624b640.entry.js → p-f8f22cc0.entry.js} +1 -1
  433. package/dist/ionic/p-fc278823.entry.js +4 -0
  434. package/dist/types/components/accordion/accordion.d.ts +19 -2
  435. package/dist/types/components/checkbox/checkbox.d.ts +0 -1
  436. package/dist/types/components/fab-button/fab-button.d.ts +1 -1
  437. package/dist/types/components/header/header.utils.d.ts +10 -0
  438. package/dist/types/components/input/input.d.ts +5 -0
  439. package/dist/types/components/item/item.d.ts +1 -1
  440. package/dist/types/components/picker-column/picker-column.d.ts +0 -7
  441. package/dist/types/components/select/select.d.ts +6 -0
  442. package/dist/types/components/tab-bar/tab-bar.d.ts +2 -2
  443. package/dist/types/components/tabs/tabs.d.ts +3 -1
  444. package/dist/types/components/textarea/textarea.d.ts +5 -0
  445. package/dist/types/components/toggle/toggle.d.ts +0 -1
  446. package/dist/types/components.d.ts +6 -6
  447. package/dist/types/stencil-public-runtime.d.ts +39 -2
  448. package/dist/types/utils/forms/index.d.ts +1 -0
  449. package/dist/types/utils/forms/validity.d.ts +10 -0
  450. package/dist/types/utils/transition/index.d.ts +9 -0
  451. package/hydrate/index.d.ts +2 -0
  452. package/hydrate/index.js +561 -385
  453. package/hydrate/index.mjs +561 -385
  454. package/package.json +6 -6
  455. package/dist/ionic/p-1488b7cc.entry.js +0 -4
  456. package/dist/ionic/p-1bbd0a23.entry.js +0 -4
  457. package/dist/ionic/p-1d5b934a.entry.js +0 -4
  458. package/dist/ionic/p-29032e49.entry.js +0 -4
  459. package/dist/ionic/p-39ed3212.entry.js +0 -4
  460. package/dist/ionic/p-4DxY6_gG.js +0 -5
  461. package/dist/ionic/p-504e4c9c.entry.js +0 -4
  462. package/dist/ionic/p-5c976c00.entry.js +0 -4
  463. package/dist/ionic/p-7fa27903.entry.js +0 -4
  464. package/dist/ionic/p-982fe1c4.entry.js +0 -4
  465. package/dist/ionic/p-C87oPMMF.js +0 -4
  466. package/dist/ionic/p-CSwZyt05.js +0 -4
  467. package/dist/ionic/p-DAfH9Iif.js +0 -4
  468. package/dist/ionic/p-DCuOL88l.js +0 -4
  469. package/dist/ionic/p-DJKvq7vb.js +0 -4
  470. package/dist/ionic/p-Dm_oBkW1.js +0 -4
  471. package/dist/ionic/p-LaGjiAVo.js +0 -4
  472. package/dist/ionic/p-ac2be9d6.entry.js +0 -4
  473. package/dist/ionic/p-c0d58c8e.entry.js +0 -4
  474. package/dist/ionic/p-c5210d3e.entry.js +0 -4
  475. package/dist/ionic/p-c575e7ce.entry.js +0 -4
  476. package/dist/ionic/p-c836e1a2.entry.js +0 -4
  477. package/dist/ionic/p-cb335dbc.entry.js +0 -4
  478. package/dist/ionic/p-e6c3214c.entry.js +0 -4
  479. package/dist/ionic/p-ec76fec4.entry.js +0 -4
  480. package/dist/ionic/p-f456d176.entry.js +0 -4
  481. package/dist/ionic/svg/document-sharp.svg +0 -1
  482. package/dist/ionic/svg/document-text-outline.svg +0 -1
  483. package/dist/ionic/svg/document-text-sharp.svg +0 -1
  484. package/dist/ionic/svg/document-text.svg +0 -1
  485. package/dist/ionic/svg/document.svg +0 -1
  486. package/dist/ionic/svg/documents-outline.svg +0 -1
  487. package/dist/ionic/svg/documents-sharp.svg +0 -1
  488. package/dist/ionic/svg/documents.svg +0 -1
  489. package/dist/ionic/svg/download-outline.svg +0 -1
  490. package/dist/ionic/svg/download-sharp.svg +0 -1
  491. package/dist/ionic/svg/download.svg +0 -1
  492. package/dist/ionic/svg/duplicate-outline.svg +0 -1
  493. package/dist/ionic/svg/duplicate-sharp.svg +0 -1
  494. package/dist/ionic/svg/duplicate.svg +0 -1
  495. package/dist/ionic/svg/ear-outline.svg +0 -1
  496. package/dist/ionic/svg/ear-sharp.svg +0 -1
  497. package/dist/ionic/svg/ear.svg +0 -1
  498. package/dist/ionic/svg/earth-outline.svg +0 -1
  499. package/dist/ionic/svg/earth-sharp.svg +0 -1
  500. package/dist/ionic/svg/earth.svg +0 -1
  501. package/dist/ionic/svg/easel-outline.svg +0 -1
  502. package/dist/ionic/svg/easel-sharp.svg +0 -1
  503. package/dist/ionic/svg/easel.svg +0 -1
  504. package/dist/ionic/svg/egg-outline.svg +0 -1
  505. package/dist/ionic/svg/egg-sharp.svg +0 -1
  506. package/dist/ionic/svg/egg.svg +0 -1
  507. package/dist/ionic/svg/ellipse-outline.svg +0 -1
  508. package/dist/ionic/svg/ellipse-sharp.svg +0 -1
  509. package/dist/ionic/svg/ellipse.svg +0 -1
  510. package/dist/ionic/svg/ellipsis-horizontal-circle-outline.svg +0 -1
  511. package/dist/ionic/svg/ellipsis-horizontal-circle-sharp.svg +0 -1
  512. package/dist/ionic/svg/ellipsis-horizontal-circle.svg +0 -1
  513. package/dist/ionic/svg/ellipsis-horizontal-outline.svg +0 -1
  514. package/dist/ionic/svg/ellipsis-horizontal-sharp.svg +0 -1
  515. package/dist/ionic/svg/ellipsis-horizontal.svg +0 -1
  516. package/dist/ionic/svg/ellipsis-vertical-circle-outline.svg +0 -1
  517. package/dist/ionic/svg/ellipsis-vertical-circle-sharp.svg +0 -1
  518. package/dist/ionic/svg/ellipsis-vertical-circle.svg +0 -1
  519. package/dist/ionic/svg/ellipsis-vertical-outline.svg +0 -1
  520. package/dist/ionic/svg/ellipsis-vertical-sharp.svg +0 -1
  521. package/dist/ionic/svg/ellipsis-vertical.svg +0 -1
  522. package/dist/ionic/svg/enter-outline.svg +0 -1
  523. package/dist/ionic/svg/enter-sharp.svg +0 -1
  524. package/dist/ionic/svg/enter.svg +0 -1
  525. package/dist/ionic/svg/exit-outline.svg +0 -1
  526. package/dist/ionic/svg/exit-sharp.svg +0 -1
  527. package/dist/ionic/svg/exit.svg +0 -1
  528. package/dist/ionic/svg/expand-outline.svg +0 -1
  529. package/dist/ionic/svg/expand-sharp.svg +0 -1
  530. package/dist/ionic/svg/expand.svg +0 -1
  531. package/dist/ionic/svg/extension-puzzle-outline.svg +0 -1
  532. package/dist/ionic/svg/extension-puzzle-sharp.svg +0 -1
  533. package/dist/ionic/svg/extension-puzzle.svg +0 -1
  534. package/dist/ionic/svg/eye-off-outline.svg +0 -1
  535. package/dist/ionic/svg/eye-off-sharp.svg +0 -1
  536. package/dist/ionic/svg/eye-off.svg +0 -1
  537. package/dist/ionic/svg/eye-outline.svg +0 -1
  538. package/dist/ionic/svg/eye-sharp.svg +0 -1
  539. package/dist/ionic/svg/eye.svg +0 -1
  540. package/dist/ionic/svg/eyedrop-outline.svg +0 -1
  541. package/dist/ionic/svg/eyedrop-sharp.svg +0 -1
  542. package/dist/ionic/svg/eyedrop.svg +0 -1
  543. package/dist/ionic/svg/fast-food-outline.svg +0 -1
  544. package/dist/ionic/svg/fast-food-sharp.svg +0 -1
  545. package/dist/ionic/svg/fast-food.svg +0 -1
  546. package/dist/ionic/svg/female-outline.svg +0 -1
  547. package/dist/ionic/svg/female-sharp.svg +0 -1
  548. package/dist/ionic/svg/female.svg +0 -1
  549. package/dist/ionic/svg/file-tray-full-outline.svg +0 -1
  550. package/dist/ionic/svg/file-tray-full-sharp.svg +0 -1
  551. package/dist/ionic/svg/file-tray-full.svg +0 -1
  552. package/dist/ionic/svg/file-tray-outline.svg +0 -1
  553. package/dist/ionic/svg/file-tray-sharp.svg +0 -1
  554. package/dist/ionic/svg/file-tray-stacked-outline.svg +0 -1
  555. package/dist/ionic/svg/file-tray-stacked-sharp.svg +0 -1
  556. package/dist/ionic/svg/file-tray-stacked.svg +0 -1
  557. package/dist/ionic/svg/file-tray.svg +0 -1
  558. package/dist/ionic/svg/film-outline.svg +0 -1
  559. package/dist/ionic/svg/film-sharp.svg +0 -1
  560. package/dist/ionic/svg/film.svg +0 -1
  561. package/dist/ionic/svg/filter-circle-outline.svg +0 -1
  562. package/dist/ionic/svg/filter-circle-sharp.svg +0 -1
  563. package/dist/ionic/svg/filter-circle.svg +0 -1
  564. package/dist/ionic/svg/filter-outline.svg +0 -1
  565. package/dist/ionic/svg/filter-sharp.svg +0 -1
  566. package/dist/ionic/svg/filter.svg +0 -1
  567. package/dist/ionic/svg/finger-print-outline.svg +0 -1
  568. package/dist/ionic/svg/finger-print-sharp.svg +0 -1
  569. package/dist/ionic/svg/finger-print.svg +0 -1
  570. package/dist/ionic/svg/fish-outline.svg +0 -1
  571. package/dist/ionic/svg/fish-sharp.svg +0 -1
  572. package/dist/ionic/svg/fish.svg +0 -1
  573. package/dist/ionic/svg/fitness-outline.svg +0 -1
  574. package/dist/ionic/svg/fitness-sharp.svg +0 -1
  575. package/dist/ionic/svg/fitness.svg +0 -1
  576. package/dist/ionic/svg/flag-outline.svg +0 -1
  577. package/dist/ionic/svg/flag-sharp.svg +0 -1
  578. package/dist/ionic/svg/flag.svg +0 -1
  579. package/dist/ionic/svg/flame-outline.svg +0 -1
  580. package/dist/ionic/svg/flame-sharp.svg +0 -1
  581. package/dist/ionic/svg/flame.svg +0 -1
  582. package/dist/ionic/svg/flash-off-outline.svg +0 -1
  583. package/dist/ionic/svg/flash-off-sharp.svg +0 -1
  584. package/dist/ionic/svg/flash-off.svg +0 -1
  585. package/dist/ionic/svg/flash-outline.svg +0 -1
  586. package/dist/ionic/svg/flash-sharp.svg +0 -1
  587. package/dist/ionic/svg/flash.svg +0 -1
  588. package/dist/ionic/svg/flashlight-outline.svg +0 -1
  589. package/dist/ionic/svg/flashlight-sharp.svg +0 -1
  590. package/dist/ionic/svg/flashlight.svg +0 -1
  591. package/dist/ionic/svg/flask-outline.svg +0 -1
  592. package/dist/ionic/svg/flask-sharp.svg +0 -1
  593. package/dist/ionic/svg/flask.svg +0 -1
  594. package/dist/ionic/svg/flower-outline.svg +0 -1
  595. package/dist/ionic/svg/flower-sharp.svg +0 -1
  596. package/dist/ionic/svg/flower.svg +0 -1
  597. package/dist/ionic/svg/folder-open-outline.svg +0 -1
  598. package/dist/ionic/svg/folder-open-sharp.svg +0 -1
  599. package/dist/ionic/svg/folder-open.svg +0 -1
  600. package/dist/ionic/svg/folder-outline.svg +0 -1
  601. package/dist/ionic/svg/folder-sharp.svg +0 -1
  602. package/dist/ionic/svg/folder.svg +0 -1
  603. package/dist/ionic/svg/football-outline.svg +0 -1
  604. package/dist/ionic/svg/football-sharp.svg +0 -1
  605. package/dist/ionic/svg/football.svg +0 -1
  606. package/dist/ionic/svg/footsteps-outline.svg +0 -1
  607. package/dist/ionic/svg/footsteps-sharp.svg +0 -1
  608. package/dist/ionic/svg/footsteps.svg +0 -1
  609. package/dist/ionic/svg/funnel-outline.svg +0 -1
  610. package/dist/ionic/svg/funnel-sharp.svg +0 -1
  611. package/dist/ionic/svg/funnel.svg +0 -1
  612. package/dist/ionic/svg/game-controller-outline.svg +0 -1
  613. package/dist/ionic/svg/game-controller-sharp.svg +0 -1
  614. package/dist/ionic/svg/game-controller.svg +0 -1
  615. package/dist/ionic/svg/gift-outline.svg +0 -1
  616. package/dist/ionic/svg/gift-sharp.svg +0 -1
  617. package/dist/ionic/svg/gift.svg +0 -1
  618. package/dist/ionic/svg/git-branch-outline.svg +0 -1
  619. package/dist/ionic/svg/git-branch-sharp.svg +0 -1
  620. package/dist/ionic/svg/git-branch.svg +0 -1
  621. package/dist/ionic/svg/git-commit-outline.svg +0 -1
  622. package/dist/ionic/svg/git-commit-sharp.svg +0 -1
  623. package/dist/ionic/svg/git-commit.svg +0 -1
  624. package/dist/ionic/svg/git-compare-outline.svg +0 -1
  625. package/dist/ionic/svg/git-compare-sharp.svg +0 -1
  626. package/dist/ionic/svg/git-compare.svg +0 -1
  627. package/dist/ionic/svg/git-merge-outline.svg +0 -1
  628. package/dist/ionic/svg/git-merge-sharp.svg +0 -1
  629. package/dist/ionic/svg/git-merge.svg +0 -1
  630. package/dist/ionic/svg/git-network-outline.svg +0 -1
  631. package/dist/ionic/svg/git-network-sharp.svg +0 -1
  632. package/dist/ionic/svg/git-network.svg +0 -1
  633. package/dist/ionic/svg/git-pull-request-outline.svg +0 -1
  634. package/dist/ionic/svg/git-pull-request-sharp.svg +0 -1
  635. package/dist/ionic/svg/git-pull-request.svg +0 -1
  636. package/dist/ionic/svg/glasses-outline.svg +0 -1
  637. package/dist/ionic/svg/glasses-sharp.svg +0 -1
  638. package/dist/ionic/svg/glasses.svg +0 -1
  639. package/dist/ionic/svg/globe-outline.svg +0 -1
  640. package/dist/ionic/svg/globe-sharp.svg +0 -1
  641. package/dist/ionic/svg/globe.svg +0 -1
  642. package/dist/ionic/svg/golf-outline.svg +0 -1
  643. package/dist/ionic/svg/golf-sharp.svg +0 -1
  644. package/dist/ionic/svg/golf.svg +0 -1
  645. package/dist/ionic/svg/grid-outline.svg +0 -1
  646. package/dist/ionic/svg/grid-sharp.svg +0 -1
  647. package/dist/ionic/svg/grid.svg +0 -1
  648. package/dist/ionic/svg/hammer-outline.svg +0 -1
  649. package/dist/ionic/svg/hammer-sharp.svg +0 -1
  650. package/dist/ionic/svg/hammer.svg +0 -1
  651. package/dist/ionic/svg/hand-left-outline.svg +0 -1
  652. package/dist/ionic/svg/hand-left-sharp.svg +0 -1
  653. package/dist/ionic/svg/hand-left.svg +0 -1
  654. package/dist/ionic/svg/hand-right-outline.svg +0 -1
  655. package/dist/ionic/svg/hand-right-sharp.svg +0 -1
  656. package/dist/ionic/svg/hand-right.svg +0 -1
  657. package/dist/ionic/svg/happy-outline.svg +0 -1
  658. package/dist/ionic/svg/happy-sharp.svg +0 -1
  659. package/dist/ionic/svg/happy.svg +0 -1
  660. package/dist/ionic/svg/hardware-chip-outline.svg +0 -1
  661. package/dist/ionic/svg/hardware-chip-sharp.svg +0 -1
  662. package/dist/ionic/svg/hardware-chip.svg +0 -1
  663. package/dist/ionic/svg/headset-outline.svg +0 -1
  664. package/dist/ionic/svg/headset-sharp.svg +0 -1
  665. package/dist/ionic/svg/headset.svg +0 -1
  666. package/dist/ionic/svg/heart-circle-outline.svg +0 -1
  667. package/dist/ionic/svg/heart-circle-sharp.svg +0 -1
  668. package/dist/ionic/svg/heart-circle.svg +0 -1
  669. package/dist/ionic/svg/heart-dislike-circle-outline.svg +0 -1
  670. package/dist/ionic/svg/heart-dislike-circle-sharp.svg +0 -1
  671. package/dist/ionic/svg/heart-dislike-circle.svg +0 -1
  672. package/dist/ionic/svg/heart-dislike-outline.svg +0 -1
  673. package/dist/ionic/svg/heart-dislike-sharp.svg +0 -1
  674. package/dist/ionic/svg/heart-dislike.svg +0 -1
  675. package/dist/ionic/svg/heart-half-outline.svg +0 -1
  676. package/dist/ionic/svg/heart-half-sharp.svg +0 -1
  677. package/dist/ionic/svg/heart-half.svg +0 -1
  678. package/dist/ionic/svg/heart-outline.svg +0 -1
  679. package/dist/ionic/svg/heart-sharp.svg +0 -1
  680. package/dist/ionic/svg/heart.svg +0 -1
  681. package/dist/ionic/svg/help-buoy-outline.svg +0 -1
  682. package/dist/ionic/svg/help-buoy-sharp.svg +0 -1
  683. package/dist/ionic/svg/help-buoy.svg +0 -1
  684. package/dist/ionic/svg/help-circle-outline.svg +0 -1
  685. package/dist/ionic/svg/help-circle-sharp.svg +0 -1
  686. package/dist/ionic/svg/help-circle.svg +0 -1
  687. package/dist/ionic/svg/help-outline.svg +0 -1
  688. package/dist/ionic/svg/help-sharp.svg +0 -1
  689. package/dist/ionic/svg/help.svg +0 -1
  690. package/dist/ionic/svg/home-outline.svg +0 -1
  691. package/dist/ionic/svg/home-sharp.svg +0 -1
  692. package/dist/ionic/svg/home.svg +0 -1
  693. package/dist/ionic/svg/hourglass-outline.svg +0 -1
  694. package/dist/ionic/svg/hourglass-sharp.svg +0 -1
  695. package/dist/ionic/svg/hourglass.svg +0 -1
  696. package/dist/ionic/svg/ice-cream-outline.svg +0 -1
  697. package/dist/ionic/svg/ice-cream-sharp.svg +0 -1
  698. package/dist/ionic/svg/ice-cream.svg +0 -1
  699. package/dist/ionic/svg/id-card-outline.svg +0 -1
  700. package/dist/ionic/svg/id-card-sharp.svg +0 -1
  701. package/dist/ionic/svg/id-card.svg +0 -1
  702. package/dist/ionic/svg/image-outline.svg +0 -1
  703. package/dist/ionic/svg/image-sharp.svg +0 -1
  704. package/dist/ionic/svg/image.svg +0 -1
  705. package/dist/ionic/svg/images-outline.svg +0 -1
  706. package/dist/ionic/svg/images-sharp.svg +0 -1
  707. package/dist/ionic/svg/images.svg +0 -1
  708. package/dist/ionic/svg/infinite-outline.svg +0 -1
  709. package/dist/ionic/svg/infinite-sharp.svg +0 -1
  710. package/dist/ionic/svg/infinite.svg +0 -1
  711. package/dist/ionic/svg/information-circle-outline.svg +0 -1
  712. package/dist/ionic/svg/information-circle-sharp.svg +0 -1
  713. package/dist/ionic/svg/information-circle.svg +0 -1
  714. package/dist/ionic/svg/information-outline.svg +0 -1
  715. package/dist/ionic/svg/information-sharp.svg +0 -1
  716. package/dist/ionic/svg/information.svg +0 -1
  717. package/dist/ionic/svg/invert-mode-outline.svg +0 -1
  718. package/dist/ionic/svg/invert-mode-sharp.svg +0 -1
  719. package/dist/ionic/svg/invert-mode.svg +0 -1
  720. package/dist/ionic/svg/journal-outline.svg +0 -1
  721. package/dist/ionic/svg/journal-sharp.svg +0 -1
  722. package/dist/ionic/svg/journal.svg +0 -1
  723. package/dist/ionic/svg/key-outline.svg +0 -1
  724. package/dist/ionic/svg/key-sharp.svg +0 -1
  725. package/dist/ionic/svg/key.svg +0 -1
  726. package/dist/ionic/svg/keypad-outline.svg +0 -1
  727. package/dist/ionic/svg/keypad-sharp.svg +0 -1
  728. package/dist/ionic/svg/keypad.svg +0 -1
  729. package/dist/ionic/svg/language-outline.svg +0 -1
  730. package/dist/ionic/svg/language-sharp.svg +0 -1
  731. package/dist/ionic/svg/language.svg +0 -1
  732. package/dist/ionic/svg/laptop-outline.svg +0 -1
  733. package/dist/ionic/svg/laptop-sharp.svg +0 -1
  734. package/dist/ionic/svg/laptop.svg +0 -1
  735. package/dist/ionic/svg/layers-outline.svg +0 -1
  736. package/dist/ionic/svg/layers-sharp.svg +0 -1
  737. package/dist/ionic/svg/layers.svg +0 -1
  738. package/dist/ionic/svg/leaf-outline.svg +0 -1
  739. package/dist/ionic/svg/leaf-sharp.svg +0 -1
  740. package/dist/ionic/svg/leaf.svg +0 -1
  741. package/dist/ionic/svg/library-outline.svg +0 -1
  742. package/dist/ionic/svg/library-sharp.svg +0 -1
  743. package/dist/ionic/svg/library.svg +0 -1
  744. package/dist/ionic/svg/link-outline.svg +0 -1
  745. package/dist/ionic/svg/link-sharp.svg +0 -1
  746. package/dist/ionic/svg/link.svg +0 -1
  747. package/dist/ionic/svg/list-circle-outline.svg +0 -1
  748. package/dist/ionic/svg/list-circle-sharp.svg +0 -1
  749. package/dist/ionic/svg/list-circle.svg +0 -1
  750. package/dist/ionic/svg/list-outline.svg +0 -1
  751. package/dist/ionic/svg/list-sharp.svg +0 -1
  752. package/dist/ionic/svg/list.svg +0 -1
  753. package/dist/ionic/svg/locate-outline.svg +0 -1
  754. package/dist/ionic/svg/locate-sharp.svg +0 -1
  755. package/dist/ionic/svg/locate.svg +0 -1
  756. package/dist/ionic/svg/location-outline.svg +0 -1
  757. package/dist/ionic/svg/location-sharp.svg +0 -1
  758. package/dist/ionic/svg/location.svg +0 -1
  759. package/dist/ionic/svg/lock-closed-outline.svg +0 -1
  760. package/dist/ionic/svg/lock-closed-sharp.svg +0 -1
  761. package/dist/ionic/svg/lock-closed.svg +0 -1
  762. package/dist/ionic/svg/lock-open-outline.svg +0 -1
  763. package/dist/ionic/svg/lock-open-sharp.svg +0 -1
  764. package/dist/ionic/svg/lock-open.svg +0 -1
  765. package/dist/ionic/svg/log-in-outline.svg +0 -1
  766. package/dist/ionic/svg/log-in-sharp.svg +0 -1
  767. package/dist/ionic/svg/log-in.svg +0 -1
  768. package/dist/ionic/svg/log-out-outline.svg +0 -1
  769. package/dist/ionic/svg/log-out-sharp.svg +0 -1
  770. package/dist/ionic/svg/log-out.svg +0 -1
  771. package/dist/ionic/svg/logo-alipay.svg +0 -1
  772. package/dist/ionic/svg/logo-amazon.svg +0 -1
  773. package/dist/ionic/svg/logo-amplify.svg +0 -1
  774. package/dist/ionic/svg/logo-android.svg +0 -1
  775. package/dist/ionic/svg/logo-angular.svg +0 -1
  776. package/dist/ionic/svg/logo-appflow.svg +0 -1
  777. package/dist/ionic/svg/logo-apple-appstore.svg +0 -1
  778. package/dist/ionic/svg/logo-apple-ar.svg +0 -1
  779. package/dist/ionic/svg/logo-apple.svg +0 -1
  780. package/dist/ionic/svg/logo-behance.svg +0 -1
  781. package/dist/ionic/svg/logo-bitbucket.svg +0 -1
  782. package/dist/ionic/svg/logo-bitcoin.svg +0 -1
  783. package/dist/ionic/svg/logo-buffer.svg +0 -1
  784. package/dist/ionic/svg/logo-capacitor.svg +0 -1
  785. package/dist/ionic/svg/logo-chrome.svg +0 -1
  786. package/dist/ionic/svg/logo-closed-captioning.svg +0 -1
  787. package/dist/ionic/svg/logo-codepen.svg +0 -1
  788. package/dist/ionic/svg/logo-css3.svg +0 -1
  789. package/dist/ionic/svg/logo-designernews.svg +0 -1
  790. package/dist/ionic/svg/logo-deviantart.svg +0 -1
  791. package/dist/ionic/svg/logo-discord.svg +0 -1
  792. package/dist/ionic/svg/logo-docker.svg +0 -1
  793. package/dist/ionic/svg/logo-dribbble.svg +0 -1
  794. package/dist/ionic/svg/logo-dropbox.svg +0 -1
  795. package/dist/ionic/svg/logo-edge.svg +0 -1
  796. package/dist/ionic/svg/logo-electron.svg +0 -1
  797. package/dist/ionic/svg/logo-euro.svg +0 -1
  798. package/dist/ionic/svg/logo-facebook.svg +0 -1
  799. package/dist/ionic/svg/logo-figma.svg +0 -1
  800. package/dist/ionic/svg/logo-firebase.svg +0 -1
  801. package/dist/ionic/svg/logo-firefox.svg +0 -1
  802. package/dist/ionic/svg/logo-flickr.svg +0 -1
  803. package/dist/ionic/svg/logo-foursquare.svg +0 -1
  804. package/dist/ionic/svg/logo-github.svg +0 -1
  805. package/dist/ionic/svg/logo-gitlab.svg +0 -1
  806. package/dist/ionic/svg/logo-google-playstore.svg +0 -1
  807. package/dist/ionic/svg/logo-google.svg +0 -1
  808. package/dist/ionic/svg/logo-hackernews.svg +0 -1
  809. package/dist/ionic/svg/logo-html5.svg +0 -1
  810. package/dist/ionic/svg/logo-instagram.svg +0 -1
  811. package/dist/ionic/svg/logo-ionic.svg +0 -1
  812. package/dist/ionic/svg/logo-ionitron.svg +0 -1
  813. package/dist/ionic/svg/logo-javascript.svg +0 -1
  814. package/dist/ionic/svg/logo-laravel.svg +0 -1
  815. package/dist/ionic/svg/logo-linkedin.svg +0 -1
  816. package/dist/ionic/svg/logo-markdown.svg +0 -1
  817. package/dist/ionic/svg/logo-mastodon.svg +0 -1
  818. package/dist/ionic/svg/logo-medium.svg +0 -1
  819. package/dist/ionic/svg/logo-microsoft.svg +0 -1
  820. package/dist/ionic/svg/logo-no-smoking.svg +0 -1
  821. package/dist/ionic/svg/logo-nodejs.svg +0 -1
  822. package/dist/ionic/svg/logo-npm.svg +0 -1
  823. package/dist/ionic/svg/logo-octocat.svg +0 -1
  824. package/dist/ionic/svg/logo-paypal.svg +0 -1
  825. package/dist/ionic/svg/logo-pinterest.svg +0 -1
  826. package/dist/ionic/svg/logo-playstation.svg +0 -1
  827. package/dist/ionic/svg/logo-pwa.svg +0 -1
  828. package/dist/ionic/svg/logo-python.svg +0 -1
  829. package/dist/ionic/svg/logo-react.svg +0 -1
  830. package/dist/ionic/svg/logo-reddit.svg +0 -1
  831. package/dist/ionic/svg/logo-rss.svg +0 -1
  832. package/dist/ionic/svg/logo-sass.svg +0 -1
  833. package/dist/ionic/svg/logo-skype.svg +0 -1
  834. package/dist/ionic/svg/logo-slack.svg +0 -1
  835. package/dist/ionic/svg/logo-snapchat.svg +0 -1
  836. package/dist/ionic/svg/logo-soundcloud.svg +0 -1
  837. package/dist/ionic/svg/logo-stackoverflow.svg +0 -1
  838. package/dist/ionic/svg/logo-steam.svg +0 -1
  839. package/dist/ionic/svg/logo-stencil.svg +0 -1
  840. package/dist/ionic/svg/logo-tableau.svg +0 -1
  841. package/dist/ionic/svg/logo-threads.svg +0 -1
  842. package/dist/ionic/svg/logo-tiktok.svg +0 -1
  843. package/dist/ionic/svg/logo-trapeze.svg +0 -1
  844. package/dist/ionic/svg/logo-tumblr.svg +0 -1
  845. package/dist/ionic/svg/logo-tux.svg +0 -1
  846. package/dist/ionic/svg/logo-twitch.svg +0 -1
  847. package/dist/ionic/svg/logo-twitter.svg +0 -1
  848. package/dist/ionic/svg/logo-usd.svg +0 -1
  849. package/dist/ionic/svg/logo-venmo.svg +0 -1
  850. package/dist/ionic/svg/logo-vercel.svg +0 -1
  851. package/dist/ionic/svg/logo-vimeo.svg +0 -1
  852. package/dist/ionic/svg/logo-vk.svg +0 -1
  853. package/dist/ionic/svg/logo-vue.svg +0 -1
  854. package/dist/ionic/svg/logo-web-component.svg +0 -1
  855. package/dist/ionic/svg/logo-wechat.svg +0 -1
  856. package/dist/ionic/svg/logo-whatsapp.svg +0 -1
  857. package/dist/ionic/svg/logo-windows.svg +0 -1
  858. package/dist/ionic/svg/logo-wordpress.svg +0 -1
  859. package/dist/ionic/svg/logo-x.svg +0 -1
  860. package/dist/ionic/svg/logo-xbox.svg +0 -1
  861. package/dist/ionic/svg/logo-xing.svg +0 -1
  862. package/dist/ionic/svg/logo-yahoo.svg +0 -1
  863. package/dist/ionic/svg/logo-yen.svg +0 -1
  864. package/dist/ionic/svg/logo-youtube.svg +0 -1
  865. package/dist/ionic/svg/magnet-outline.svg +0 -1
  866. package/dist/ionic/svg/magnet-sharp.svg +0 -1
  867. package/dist/ionic/svg/magnet.svg +0 -1
  868. package/dist/ionic/svg/mail-open-outline.svg +0 -1
  869. package/dist/ionic/svg/mail-open-sharp.svg +0 -1
  870. package/dist/ionic/svg/mail-open.svg +0 -1
  871. package/dist/ionic/svg/mail-outline.svg +0 -1
  872. package/dist/ionic/svg/mail-sharp.svg +0 -1
  873. package/dist/ionic/svg/mail-unread-outline.svg +0 -1
  874. package/dist/ionic/svg/mail-unread-sharp.svg +0 -1
  875. package/dist/ionic/svg/mail-unread.svg +0 -1
  876. package/dist/ionic/svg/mail.svg +0 -1
  877. package/dist/ionic/svg/male-female-outline.svg +0 -1
  878. package/dist/ionic/svg/male-female-sharp.svg +0 -1
  879. package/dist/ionic/svg/male-female.svg +0 -1
  880. package/dist/ionic/svg/male-outline.svg +0 -1
  881. package/dist/ionic/svg/male-sharp.svg +0 -1
  882. package/dist/ionic/svg/male.svg +0 -1
  883. package/dist/ionic/svg/man-outline.svg +0 -1
  884. package/dist/ionic/svg/man-sharp.svg +0 -1
  885. package/dist/ionic/svg/man.svg +0 -1
  886. package/dist/ionic/svg/map-outline.svg +0 -1
  887. package/dist/ionic/svg/map-sharp.svg +0 -1
  888. package/dist/ionic/svg/map.svg +0 -1
  889. package/dist/ionic/svg/medal-outline.svg +0 -1
  890. package/dist/ionic/svg/medal-sharp.svg +0 -1
  891. package/dist/ionic/svg/medal.svg +0 -1
  892. package/dist/ionic/svg/medical-outline.svg +0 -1
  893. package/dist/ionic/svg/medical-sharp.svg +0 -1
  894. package/dist/ionic/svg/medical.svg +0 -1
  895. package/dist/ionic/svg/medkit-outline.svg +0 -1
  896. package/dist/ionic/svg/medkit-sharp.svg +0 -1
  897. package/dist/ionic/svg/medkit.svg +0 -1
  898. package/dist/ionic/svg/megaphone-outline.svg +0 -1
  899. package/dist/ionic/svg/megaphone-sharp.svg +0 -1
  900. package/dist/ionic/svg/megaphone.svg +0 -1
  901. package/dist/ionic/svg/menu-outline.svg +0 -1
  902. package/dist/ionic/svg/menu-sharp.svg +0 -1
  903. package/dist/ionic/svg/menu.svg +0 -1
  904. package/dist/ionic/svg/mic-circle-outline.svg +0 -1
  905. package/dist/ionic/svg/mic-circle-sharp.svg +0 -1
  906. package/dist/ionic/svg/mic-circle.svg +0 -1
  907. package/dist/ionic/svg/mic-off-circle-outline.svg +0 -1
  908. package/dist/ionic/svg/mic-off-circle-sharp.svg +0 -1
  909. package/dist/ionic/svg/mic-off-circle.svg +0 -1
  910. package/dist/ionic/svg/mic-off-outline.svg +0 -1
  911. package/dist/ionic/svg/mic-off-sharp.svg +0 -1
  912. package/dist/ionic/svg/mic-off.svg +0 -1
  913. package/dist/ionic/svg/mic-outline.svg +0 -1
  914. package/dist/ionic/svg/mic-sharp.svg +0 -1
  915. package/dist/ionic/svg/mic.svg +0 -1
  916. package/dist/ionic/svg/moon-outline.svg +0 -1
  917. package/dist/ionic/svg/moon-sharp.svg +0 -1
  918. package/dist/ionic/svg/moon.svg +0 -1
  919. package/dist/ionic/svg/move-outline.svg +0 -1
  920. package/dist/ionic/svg/move-sharp.svg +0 -1
  921. package/dist/ionic/svg/move.svg +0 -1
  922. package/dist/ionic/svg/musical-note-outline.svg +0 -1
  923. package/dist/ionic/svg/musical-note-sharp.svg +0 -1
  924. package/dist/ionic/svg/musical-note.svg +0 -1
  925. package/dist/ionic/svg/musical-notes-outline.svg +0 -1
  926. package/dist/ionic/svg/musical-notes-sharp.svg +0 -1
  927. package/dist/ionic/svg/musical-notes.svg +0 -1
  928. package/dist/ionic/svg/navigate-circle-outline.svg +0 -1
  929. package/dist/ionic/svg/navigate-circle-sharp.svg +0 -1
  930. package/dist/ionic/svg/navigate-circle.svg +0 -1
  931. package/dist/ionic/svg/navigate-outline.svg +0 -1
  932. package/dist/ionic/svg/navigate-sharp.svg +0 -1
  933. package/dist/ionic/svg/navigate.svg +0 -1
  934. package/dist/ionic/svg/newspaper-outline.svg +0 -1
  935. package/dist/ionic/svg/newspaper-sharp.svg +0 -1
  936. package/dist/ionic/svg/newspaper.svg +0 -1
  937. package/dist/ionic/svg/notifications-circle-outline.svg +0 -1
  938. package/dist/ionic/svg/notifications-circle-sharp.svg +0 -1
  939. package/dist/ionic/svg/notifications-circle.svg +0 -1
  940. package/dist/ionic/svg/notifications-off-circle-outline.svg +0 -1
  941. package/dist/ionic/svg/notifications-off-circle-sharp.svg +0 -1
  942. package/dist/ionic/svg/notifications-off-circle.svg +0 -1
  943. package/dist/ionic/svg/notifications-off-outline.svg +0 -1
  944. package/dist/ionic/svg/notifications-off-sharp.svg +0 -1
  945. package/dist/ionic/svg/notifications-off.svg +0 -1
  946. package/dist/ionic/svg/notifications-outline.svg +0 -1
  947. package/dist/ionic/svg/notifications-sharp.svg +0 -1
  948. package/dist/ionic/svg/notifications.svg +0 -1
  949. package/dist/ionic/svg/nuclear-outline.svg +0 -1
  950. package/dist/ionic/svg/nuclear-sharp.svg +0 -1
  951. package/dist/ionic/svg/nuclear.svg +0 -1
  952. package/dist/ionic/svg/nutrition-outline.svg +0 -1
  953. package/dist/ionic/svg/nutrition-sharp.svg +0 -1
  954. package/dist/ionic/svg/nutrition.svg +0 -1
  955. package/dist/ionic/svg/open-outline.svg +0 -1
  956. package/dist/ionic/svg/open-sharp.svg +0 -1
  957. package/dist/ionic/svg/open.svg +0 -1
  958. package/dist/ionic/svg/options-outline.svg +0 -1
  959. package/dist/ionic/svg/options-sharp.svg +0 -1
  960. package/dist/ionic/svg/options.svg +0 -1
  961. package/dist/ionic/svg/paper-plane-outline.svg +0 -1
  962. package/dist/ionic/svg/paper-plane-sharp.svg +0 -1
  963. package/dist/ionic/svg/paper-plane.svg +0 -1
  964. package/dist/ionic/svg/partly-sunny-outline.svg +0 -1
  965. package/dist/ionic/svg/partly-sunny-sharp.svg +0 -1
  966. package/dist/ionic/svg/partly-sunny.svg +0 -1
  967. package/dist/ionic/svg/pause-circle-outline.svg +0 -1
  968. package/dist/ionic/svg/pause-circle-sharp.svg +0 -1
  969. package/dist/ionic/svg/pause-circle.svg +0 -1
  970. package/dist/ionic/svg/pause-outline.svg +0 -1
  971. package/dist/ionic/svg/pause-sharp.svg +0 -1
  972. package/dist/ionic/svg/pause.svg +0 -1
  973. package/dist/ionic/svg/paw-outline.svg +0 -1
  974. package/dist/ionic/svg/paw-sharp.svg +0 -1
  975. package/dist/ionic/svg/paw.svg +0 -1
  976. package/dist/ionic/svg/pencil-outline.svg +0 -1
  977. package/dist/ionic/svg/pencil-sharp.svg +0 -1
  978. package/dist/ionic/svg/pencil.svg +0 -1
  979. package/dist/ionic/svg/people-circle-outline.svg +0 -1
  980. package/dist/ionic/svg/people-circle-sharp.svg +0 -1
  981. package/dist/ionic/svg/people-circle.svg +0 -1
  982. package/dist/ionic/svg/people-outline.svg +0 -1
  983. package/dist/ionic/svg/people-sharp.svg +0 -1
  984. package/dist/ionic/svg/people.svg +0 -1
  985. package/dist/ionic/svg/person-add-outline.svg +0 -1
  986. package/dist/ionic/svg/person-add-sharp.svg +0 -1
  987. package/dist/ionic/svg/person-add.svg +0 -1
  988. package/dist/ionic/svg/person-circle-outline.svg +0 -1
  989. package/dist/ionic/svg/person-circle-sharp.svg +0 -1
  990. package/dist/ionic/svg/person-circle.svg +0 -1
  991. package/dist/ionic/svg/person-outline.svg +0 -1
  992. package/dist/ionic/svg/person-remove-outline.svg +0 -1
  993. package/dist/ionic/svg/person-remove-sharp.svg +0 -1
  994. package/dist/ionic/svg/person-remove.svg +0 -1
  995. package/dist/ionic/svg/person-sharp.svg +0 -1
  996. package/dist/ionic/svg/person.svg +0 -1
  997. package/dist/ionic/svg/phone-landscape-outline.svg +0 -1
  998. package/dist/ionic/svg/phone-landscape-sharp.svg +0 -1
  999. package/dist/ionic/svg/phone-landscape.svg +0 -1
  1000. package/dist/ionic/svg/phone-portrait-outline.svg +0 -1
  1001. package/dist/ionic/svg/phone-portrait-sharp.svg +0 -1
  1002. package/dist/ionic/svg/phone-portrait.svg +0 -1
  1003. package/dist/ionic/svg/pie-chart-outline.svg +0 -1
  1004. package/dist/ionic/svg/pie-chart-sharp.svg +0 -1
  1005. package/dist/ionic/svg/pie-chart.svg +0 -1
  1006. package/dist/ionic/svg/pin-outline.svg +0 -1
  1007. package/dist/ionic/svg/pin-sharp.svg +0 -1
  1008. package/dist/ionic/svg/pin.svg +0 -1
  1009. package/dist/ionic/svg/pint-outline.svg +0 -1
  1010. package/dist/ionic/svg/pint-sharp.svg +0 -1
  1011. package/dist/ionic/svg/pint.svg +0 -1
  1012. package/dist/ionic/svg/pizza-outline.svg +0 -1
  1013. package/dist/ionic/svg/pizza-sharp.svg +0 -1
  1014. package/dist/ionic/svg/pizza.svg +0 -1
  1015. package/dist/ionic/svg/planet-outline.svg +0 -1
  1016. package/dist/ionic/svg/planet-sharp.svg +0 -1
  1017. package/dist/ionic/svg/planet.svg +0 -1
  1018. package/dist/ionic/svg/play-back-circle-outline.svg +0 -1
  1019. package/dist/ionic/svg/play-back-circle-sharp.svg +0 -1
  1020. package/dist/ionic/svg/play-back-circle.svg +0 -1
  1021. package/dist/ionic/svg/play-back-outline.svg +0 -1
  1022. package/dist/ionic/svg/play-back-sharp.svg +0 -1
  1023. package/dist/ionic/svg/play-back.svg +0 -1
  1024. package/dist/ionic/svg/play-circle-outline.svg +0 -1
  1025. package/dist/ionic/svg/play-circle-sharp.svg +0 -1
  1026. package/dist/ionic/svg/play-circle.svg +0 -1
  1027. package/dist/ionic/svg/play-forward-circle-outline.svg +0 -1
  1028. package/dist/ionic/svg/play-forward-circle-sharp.svg +0 -1
  1029. package/dist/ionic/svg/play-forward-circle.svg +0 -1
  1030. package/dist/ionic/svg/play-forward-outline.svg +0 -1
  1031. package/dist/ionic/svg/play-forward-sharp.svg +0 -1
  1032. package/dist/ionic/svg/play-forward.svg +0 -1
  1033. package/dist/ionic/svg/play-outline.svg +0 -1
  1034. package/dist/ionic/svg/play-sharp.svg +0 -1
  1035. package/dist/ionic/svg/play-skip-back-circle-outline.svg +0 -1
  1036. package/dist/ionic/svg/play-skip-back-circle-sharp.svg +0 -1
  1037. package/dist/ionic/svg/play-skip-back-circle.svg +0 -1
  1038. package/dist/ionic/svg/play-skip-back-outline.svg +0 -1
  1039. package/dist/ionic/svg/play-skip-back-sharp.svg +0 -1
  1040. package/dist/ionic/svg/play-skip-back.svg +0 -1
  1041. package/dist/ionic/svg/play-skip-forward-circle-outline.svg +0 -1
  1042. package/dist/ionic/svg/play-skip-forward-circle-sharp.svg +0 -1
  1043. package/dist/ionic/svg/play-skip-forward-circle.svg +0 -1
  1044. package/dist/ionic/svg/play-skip-forward-outline.svg +0 -1
  1045. package/dist/ionic/svg/play-skip-forward-sharp.svg +0 -1
  1046. package/dist/ionic/svg/play-skip-forward.svg +0 -1
  1047. package/dist/ionic/svg/play.svg +0 -1
  1048. package/dist/ionic/svg/podium-outline.svg +0 -1
  1049. package/dist/ionic/svg/podium-sharp.svg +0 -1
  1050. package/dist/ionic/svg/podium.svg +0 -1
  1051. package/dist/ionic/svg/power-outline.svg +0 -1
  1052. package/dist/ionic/svg/power-sharp.svg +0 -1
  1053. package/dist/ionic/svg/power.svg +0 -1
  1054. package/dist/ionic/svg/pricetag-outline.svg +0 -1
  1055. package/dist/ionic/svg/pricetag-sharp.svg +0 -1
  1056. package/dist/ionic/svg/pricetag.svg +0 -1
  1057. package/dist/ionic/svg/pricetags-outline.svg +0 -1
  1058. package/dist/ionic/svg/pricetags-sharp.svg +0 -1
  1059. package/dist/ionic/svg/pricetags.svg +0 -1
  1060. package/dist/ionic/svg/print-outline.svg +0 -1
  1061. package/dist/ionic/svg/print-sharp.svg +0 -1
  1062. package/dist/ionic/svg/print.svg +0 -1
  1063. package/dist/ionic/svg/prism-outline.svg +0 -1
  1064. package/dist/ionic/svg/prism-sharp.svg +0 -1
  1065. package/dist/ionic/svg/prism.svg +0 -1
  1066. package/dist/ionic/svg/pulse-outline.svg +0 -1
  1067. package/dist/ionic/svg/pulse-sharp.svg +0 -1
  1068. package/dist/ionic/svg/pulse.svg +0 -1
  1069. package/dist/ionic/svg/push-outline.svg +0 -1
  1070. package/dist/ionic/svg/push-sharp.svg +0 -1
  1071. package/dist/ionic/svg/push.svg +0 -1
  1072. package/dist/ionic/svg/qr-code-outline.svg +0 -1
  1073. package/dist/ionic/svg/qr-code-sharp.svg +0 -1
  1074. package/dist/ionic/svg/qr-code.svg +0 -1
  1075. package/dist/ionic/svg/radio-button-off-outline.svg +0 -1
  1076. package/dist/ionic/svg/radio-button-off-sharp.svg +0 -1
  1077. package/dist/ionic/svg/radio-button-off.svg +0 -1
  1078. package/dist/ionic/svg/radio-button-on-outline.svg +0 -1
  1079. package/dist/ionic/svg/radio-button-on-sharp.svg +0 -1
  1080. package/dist/ionic/svg/radio-button-on.svg +0 -1
  1081. package/dist/ionic/svg/radio-outline.svg +0 -1
  1082. package/dist/ionic/svg/radio-sharp.svg +0 -1
  1083. package/dist/ionic/svg/radio.svg +0 -1
  1084. package/dist/ionic/svg/rainy-outline.svg +0 -1
  1085. package/dist/ionic/svg/rainy-sharp.svg +0 -1
  1086. package/dist/ionic/svg/rainy.svg +0 -1
  1087. package/dist/ionic/svg/reader-outline.svg +0 -1
  1088. package/dist/ionic/svg/reader-sharp.svg +0 -1
  1089. package/dist/ionic/svg/reader.svg +0 -1
  1090. package/dist/ionic/svg/receipt-outline.svg +0 -1
  1091. package/dist/ionic/svg/receipt-sharp.svg +0 -1
  1092. package/dist/ionic/svg/receipt.svg +0 -1
  1093. package/dist/ionic/svg/recording-outline.svg +0 -1
  1094. package/dist/ionic/svg/recording-sharp.svg +0 -1
  1095. package/dist/ionic/svg/recording.svg +0 -1
  1096. package/dist/ionic/svg/refresh-circle-outline.svg +0 -1
  1097. package/dist/ionic/svg/refresh-circle-sharp.svg +0 -1
  1098. package/dist/ionic/svg/refresh-circle.svg +0 -1
  1099. package/dist/ionic/svg/refresh-outline.svg +0 -1
  1100. package/dist/ionic/svg/refresh-sharp.svg +0 -1
  1101. package/dist/ionic/svg/refresh.svg +0 -1
  1102. package/dist/ionic/svg/reload-circle-outline.svg +0 -1
  1103. package/dist/ionic/svg/reload-circle-sharp.svg +0 -1
  1104. package/dist/ionic/svg/reload-circle.svg +0 -1
  1105. package/dist/ionic/svg/reload-outline.svg +0 -1
  1106. package/dist/ionic/svg/reload-sharp.svg +0 -1
  1107. package/dist/ionic/svg/reload.svg +0 -1
  1108. package/dist/ionic/svg/remove-circle-outline.svg +0 -1
  1109. package/dist/ionic/svg/remove-circle-sharp.svg +0 -1
  1110. package/dist/ionic/svg/remove-circle.svg +0 -1
  1111. package/dist/ionic/svg/remove-outline.svg +0 -1
  1112. package/dist/ionic/svg/remove-sharp.svg +0 -1
  1113. package/dist/ionic/svg/remove.svg +0 -1
  1114. package/dist/ionic/svg/reorder-four-outline.svg +0 -1
  1115. package/dist/ionic/svg/reorder-four-sharp.svg +0 -1
  1116. package/dist/ionic/svg/reorder-four.svg +0 -1
  1117. package/dist/ionic/svg/reorder-three-outline.svg +0 -1
  1118. package/dist/ionic/svg/reorder-three-sharp.svg +0 -1
  1119. package/dist/ionic/svg/reorder-three.svg +0 -1
  1120. package/dist/ionic/svg/reorder-two-outline.svg +0 -1
  1121. package/dist/ionic/svg/reorder-two-sharp.svg +0 -1
  1122. package/dist/ionic/svg/reorder-two.svg +0 -1
  1123. package/dist/ionic/svg/repeat-outline.svg +0 -1
  1124. package/dist/ionic/svg/repeat-sharp.svg +0 -1
  1125. package/dist/ionic/svg/repeat.svg +0 -1
  1126. package/dist/ionic/svg/resize-outline.svg +0 -1
  1127. package/dist/ionic/svg/resize-sharp.svg +0 -1
  1128. package/dist/ionic/svg/resize.svg +0 -1
  1129. package/dist/ionic/svg/restaurant-outline.svg +0 -1
  1130. package/dist/ionic/svg/restaurant-sharp.svg +0 -1
  1131. package/dist/ionic/svg/restaurant.svg +0 -1
  1132. package/dist/ionic/svg/return-down-back-outline.svg +0 -1
  1133. package/dist/ionic/svg/return-down-back-sharp.svg +0 -1
  1134. package/dist/ionic/svg/return-down-back.svg +0 -1
  1135. package/dist/ionic/svg/return-down-forward-outline.svg +0 -1
  1136. package/dist/ionic/svg/return-down-forward-sharp.svg +0 -1
  1137. package/dist/ionic/svg/return-down-forward.svg +0 -1
  1138. package/dist/ionic/svg/return-up-back-outline.svg +0 -1
  1139. package/dist/ionic/svg/return-up-back-sharp.svg +0 -1
  1140. package/dist/ionic/svg/return-up-back.svg +0 -1
  1141. package/dist/ionic/svg/return-up-forward-outline.svg +0 -1
  1142. package/dist/ionic/svg/return-up-forward-sharp.svg +0 -1
  1143. package/dist/ionic/svg/return-up-forward.svg +0 -1
  1144. package/dist/ionic/svg/ribbon-outline.svg +0 -1
  1145. package/dist/ionic/svg/ribbon-sharp.svg +0 -1
  1146. package/dist/ionic/svg/ribbon.svg +0 -1
  1147. package/dist/ionic/svg/rocket-outline.svg +0 -1
  1148. package/dist/ionic/svg/rocket-sharp.svg +0 -1
  1149. package/dist/ionic/svg/rocket.svg +0 -1
  1150. package/dist/ionic/svg/rose-outline.svg +0 -1
  1151. package/dist/ionic/svg/rose-sharp.svg +0 -1
  1152. package/dist/ionic/svg/rose.svg +0 -1
  1153. package/dist/ionic/svg/sad-outline.svg +0 -1
  1154. package/dist/ionic/svg/sad-sharp.svg +0 -1
  1155. package/dist/ionic/svg/sad.svg +0 -1
  1156. package/dist/ionic/svg/save-outline.svg +0 -1
  1157. package/dist/ionic/svg/save-sharp.svg +0 -1
  1158. package/dist/ionic/svg/save.svg +0 -1
  1159. package/dist/ionic/svg/scale-outline.svg +0 -1
  1160. package/dist/ionic/svg/scale-sharp.svg +0 -1
  1161. package/dist/ionic/svg/scale.svg +0 -1
  1162. package/dist/ionic/svg/scan-circle-outline.svg +0 -1
  1163. package/dist/ionic/svg/scan-circle-sharp.svg +0 -1
  1164. package/dist/ionic/svg/scan-circle.svg +0 -1
  1165. package/dist/ionic/svg/scan-outline.svg +0 -1
  1166. package/dist/ionic/svg/scan-sharp.svg +0 -1
  1167. package/dist/ionic/svg/scan.svg +0 -1
  1168. package/dist/ionic/svg/school-outline.svg +0 -1
  1169. package/dist/ionic/svg/school-sharp.svg +0 -1
  1170. package/dist/ionic/svg/school.svg +0 -1
  1171. package/dist/ionic/svg/search-circle-outline.svg +0 -1
  1172. package/dist/ionic/svg/search-circle-sharp.svg +0 -1
  1173. package/dist/ionic/svg/search-circle.svg +0 -1
  1174. package/dist/ionic/svg/search-outline.svg +0 -1
  1175. package/dist/ionic/svg/search-sharp.svg +0 -1
  1176. package/dist/ionic/svg/search.svg +0 -1
  1177. package/dist/ionic/svg/send-outline.svg +0 -1
  1178. package/dist/ionic/svg/send-sharp.svg +0 -1
  1179. package/dist/ionic/svg/send.svg +0 -1
  1180. package/dist/ionic/svg/server-outline.svg +0 -1
  1181. package/dist/ionic/svg/server-sharp.svg +0 -1
  1182. package/dist/ionic/svg/server.svg +0 -1
  1183. package/dist/ionic/svg/settings-outline.svg +0 -1
  1184. package/dist/ionic/svg/settings-sharp.svg +0 -1
  1185. package/dist/ionic/svg/settings.svg +0 -1
  1186. package/dist/ionic/svg/shapes-outline.svg +0 -1
  1187. package/dist/ionic/svg/shapes-sharp.svg +0 -1
  1188. package/dist/ionic/svg/shapes.svg +0 -1
  1189. package/dist/ionic/svg/share-outline.svg +0 -1
  1190. package/dist/ionic/svg/share-sharp.svg +0 -1
  1191. package/dist/ionic/svg/share-social-outline.svg +0 -1
  1192. package/dist/ionic/svg/share-social-sharp.svg +0 -1
  1193. package/dist/ionic/svg/share-social.svg +0 -1
  1194. package/dist/ionic/svg/share.svg +0 -1
  1195. package/dist/ionic/svg/shield-checkmark-outline.svg +0 -1
  1196. package/dist/ionic/svg/shield-checkmark-sharp.svg +0 -1
  1197. package/dist/ionic/svg/shield-checkmark.svg +0 -1
  1198. package/dist/ionic/svg/shield-half-outline.svg +0 -1
  1199. package/dist/ionic/svg/shield-half-sharp.svg +0 -1
  1200. package/dist/ionic/svg/shield-half.svg +0 -1
  1201. package/dist/ionic/svg/shield-outline.svg +0 -1
  1202. package/dist/ionic/svg/shield-sharp.svg +0 -1
  1203. package/dist/ionic/svg/shield.svg +0 -1
  1204. package/dist/ionic/svg/shirt-outline.svg +0 -1
  1205. package/dist/ionic/svg/shirt-sharp.svg +0 -1
  1206. package/dist/ionic/svg/shirt.svg +0 -1
  1207. package/dist/ionic/svg/shuffle-outline.svg +0 -1
  1208. package/dist/ionic/svg/shuffle-sharp.svg +0 -1
  1209. package/dist/ionic/svg/shuffle.svg +0 -1
  1210. package/dist/ionic/svg/skull-outline.svg +0 -1
  1211. package/dist/ionic/svg/skull-sharp.svg +0 -1
  1212. package/dist/ionic/svg/skull.svg +0 -1
  1213. package/dist/ionic/svg/snow-outline.svg +0 -1
  1214. package/dist/ionic/svg/snow-sharp.svg +0 -1
  1215. package/dist/ionic/svg/snow.svg +0 -1
  1216. package/dist/ionic/svg/sparkles-outline.svg +0 -1
  1217. package/dist/ionic/svg/sparkles-sharp.svg +0 -1
  1218. package/dist/ionic/svg/sparkles.svg +0 -1
  1219. package/dist/ionic/svg/speedometer-outline.svg +0 -1
  1220. package/dist/ionic/svg/speedometer-sharp.svg +0 -1
  1221. package/dist/ionic/svg/speedometer.svg +0 -1
  1222. package/dist/ionic/svg/square-outline.svg +0 -1
  1223. package/dist/ionic/svg/square-sharp.svg +0 -1
  1224. package/dist/ionic/svg/square.svg +0 -1
  1225. package/dist/ionic/svg/star-half-outline.svg +0 -1
  1226. package/dist/ionic/svg/star-half-sharp.svg +0 -1
  1227. package/dist/ionic/svg/star-half.svg +0 -1
  1228. package/dist/ionic/svg/star-outline.svg +0 -1
  1229. package/dist/ionic/svg/star-sharp.svg +0 -1
  1230. package/dist/ionic/svg/star.svg +0 -1
  1231. package/dist/ionic/svg/stats-chart-outline.svg +0 -1
  1232. package/dist/ionic/svg/stats-chart-sharp.svg +0 -1
  1233. package/dist/ionic/svg/stats-chart.svg +0 -1
  1234. package/dist/ionic/svg/stop-circle-outline.svg +0 -1
  1235. package/dist/ionic/svg/stop-circle-sharp.svg +0 -1
  1236. package/dist/ionic/svg/stop-circle.svg +0 -1
  1237. package/dist/ionic/svg/stop-outline.svg +0 -1
  1238. package/dist/ionic/svg/stop-sharp.svg +0 -1
  1239. package/dist/ionic/svg/stop.svg +0 -1
  1240. package/dist/ionic/svg/stopwatch-outline.svg +0 -1
  1241. package/dist/ionic/svg/stopwatch-sharp.svg +0 -1
  1242. package/dist/ionic/svg/stopwatch.svg +0 -1
  1243. package/dist/ionic/svg/storefront-outline.svg +0 -1
  1244. package/dist/ionic/svg/storefront-sharp.svg +0 -1
  1245. package/dist/ionic/svg/storefront.svg +0 -1
  1246. package/dist/ionic/svg/subway-outline.svg +0 -1
  1247. package/dist/ionic/svg/subway-sharp.svg +0 -1
  1248. package/dist/ionic/svg/subway.svg +0 -1
  1249. package/dist/ionic/svg/sunny-outline.svg +0 -1
  1250. package/dist/ionic/svg/sunny-sharp.svg +0 -1
  1251. package/dist/ionic/svg/sunny.svg +0 -1
  1252. package/dist/ionic/svg/swap-horizontal-outline.svg +0 -1
  1253. package/dist/ionic/svg/swap-horizontal-sharp.svg +0 -1
  1254. package/dist/ionic/svg/swap-horizontal.svg +0 -1
  1255. package/dist/ionic/svg/swap-vertical-outline.svg +0 -1
  1256. package/dist/ionic/svg/swap-vertical-sharp.svg +0 -1
  1257. package/dist/ionic/svg/swap-vertical.svg +0 -1
  1258. package/dist/ionic/svg/sync-circle-outline.svg +0 -1
  1259. package/dist/ionic/svg/sync-circle-sharp.svg +0 -1
  1260. package/dist/ionic/svg/sync-circle.svg +0 -1
  1261. package/dist/ionic/svg/sync-outline.svg +0 -1
  1262. package/dist/ionic/svg/sync-sharp.svg +0 -1
  1263. package/dist/ionic/svg/sync.svg +0 -1
  1264. package/dist/ionic/svg/tablet-landscape-outline.svg +0 -1
  1265. package/dist/ionic/svg/tablet-landscape-sharp.svg +0 -1
  1266. package/dist/ionic/svg/tablet-landscape.svg +0 -1
  1267. package/dist/ionic/svg/tablet-portrait-outline.svg +0 -1
  1268. package/dist/ionic/svg/tablet-portrait-sharp.svg +0 -1
  1269. package/dist/ionic/svg/tablet-portrait.svg +0 -1
  1270. package/dist/ionic/svg/telescope-outline.svg +0 -1
  1271. package/dist/ionic/svg/telescope-sharp.svg +0 -1
  1272. package/dist/ionic/svg/telescope.svg +0 -1
  1273. package/dist/ionic/svg/tennisball-outline.svg +0 -1
  1274. package/dist/ionic/svg/tennisball-sharp.svg +0 -1
  1275. package/dist/ionic/svg/tennisball.svg +0 -1
  1276. package/dist/ionic/svg/terminal-outline.svg +0 -1
  1277. package/dist/ionic/svg/terminal-sharp.svg +0 -1
  1278. package/dist/ionic/svg/terminal.svg +0 -1
  1279. package/dist/ionic/svg/text-outline.svg +0 -1
  1280. package/dist/ionic/svg/text-sharp.svg +0 -1
  1281. package/dist/ionic/svg/text.svg +0 -1
  1282. package/dist/ionic/svg/thermometer-outline.svg +0 -1
  1283. package/dist/ionic/svg/thermometer-sharp.svg +0 -1
  1284. package/dist/ionic/svg/thermometer.svg +0 -1
  1285. package/dist/ionic/svg/thumbs-down-outline.svg +0 -1
  1286. package/dist/ionic/svg/thumbs-down-sharp.svg +0 -1
  1287. package/dist/ionic/svg/thumbs-down.svg +0 -1
  1288. package/dist/ionic/svg/thumbs-up-outline.svg +0 -1
  1289. package/dist/ionic/svg/thumbs-up-sharp.svg +0 -1
  1290. package/dist/ionic/svg/thumbs-up.svg +0 -1
  1291. package/dist/ionic/svg/thunderstorm-outline.svg +0 -1
  1292. package/dist/ionic/svg/thunderstorm-sharp.svg +0 -1
  1293. package/dist/ionic/svg/thunderstorm.svg +0 -1
  1294. package/dist/ionic/svg/ticket-outline.svg +0 -1
  1295. package/dist/ionic/svg/ticket-sharp.svg +0 -1
  1296. package/dist/ionic/svg/ticket.svg +0 -1
  1297. package/dist/ionic/svg/time-outline.svg +0 -1
  1298. package/dist/ionic/svg/time-sharp.svg +0 -1
  1299. package/dist/ionic/svg/time.svg +0 -1
  1300. package/dist/ionic/svg/timer-outline.svg +0 -1
  1301. package/dist/ionic/svg/timer-sharp.svg +0 -1
  1302. package/dist/ionic/svg/timer.svg +0 -1
  1303. package/dist/ionic/svg/today-outline.svg +0 -1
  1304. package/dist/ionic/svg/today-sharp.svg +0 -1
  1305. package/dist/ionic/svg/today.svg +0 -1
  1306. package/dist/ionic/svg/toggle-outline.svg +0 -1
  1307. package/dist/ionic/svg/toggle-sharp.svg +0 -1
  1308. package/dist/ionic/svg/toggle.svg +0 -1
  1309. package/dist/ionic/svg/trail-sign-outline.svg +0 -1
  1310. package/dist/ionic/svg/trail-sign-sharp.svg +0 -1
  1311. package/dist/ionic/svg/trail-sign.svg +0 -1
  1312. package/dist/ionic/svg/train-outline.svg +0 -1
  1313. package/dist/ionic/svg/train-sharp.svg +0 -1
  1314. package/dist/ionic/svg/train.svg +0 -1
  1315. package/dist/ionic/svg/transgender-outline.svg +0 -1
  1316. package/dist/ionic/svg/transgender-sharp.svg +0 -1
  1317. package/dist/ionic/svg/transgender.svg +0 -1
  1318. package/dist/ionic/svg/trash-bin-outline.svg +0 -1
  1319. package/dist/ionic/svg/trash-bin-sharp.svg +0 -1
  1320. package/dist/ionic/svg/trash-bin.svg +0 -1
  1321. package/dist/ionic/svg/trash-outline.svg +0 -1
  1322. package/dist/ionic/svg/trash-sharp.svg +0 -1
  1323. package/dist/ionic/svg/trash.svg +0 -1
  1324. package/dist/ionic/svg/trending-down-outline.svg +0 -1
  1325. package/dist/ionic/svg/trending-down-sharp.svg +0 -1
  1326. package/dist/ionic/svg/trending-down.svg +0 -1
  1327. package/dist/ionic/svg/trending-up-outline.svg +0 -1
  1328. package/dist/ionic/svg/trending-up-sharp.svg +0 -1
  1329. package/dist/ionic/svg/trending-up.svg +0 -1
  1330. package/dist/ionic/svg/triangle-outline.svg +0 -1
  1331. package/dist/ionic/svg/triangle-sharp.svg +0 -1
  1332. package/dist/ionic/svg/triangle.svg +0 -1
  1333. package/dist/ionic/svg/trophy-outline.svg +0 -1
  1334. package/dist/ionic/svg/trophy-sharp.svg +0 -1
  1335. package/dist/ionic/svg/trophy.svg +0 -1
  1336. package/dist/ionic/svg/tv-outline.svg +0 -1
  1337. package/dist/ionic/svg/tv-sharp.svg +0 -1
  1338. package/dist/ionic/svg/tv.svg +0 -1
  1339. package/dist/ionic/svg/umbrella-outline.svg +0 -1
  1340. package/dist/ionic/svg/umbrella-sharp.svg +0 -1
  1341. package/dist/ionic/svg/umbrella.svg +0 -1
  1342. package/dist/ionic/svg/unlink-outline.svg +0 -1
  1343. package/dist/ionic/svg/unlink-sharp.svg +0 -1
  1344. package/dist/ionic/svg/unlink.svg +0 -1
  1345. package/dist/ionic/svg/videocam-off-outline.svg +0 -1
  1346. package/dist/ionic/svg/videocam-off-sharp.svg +0 -1
  1347. package/dist/ionic/svg/videocam-off.svg +0 -1
  1348. package/dist/ionic/svg/videocam-outline.svg +0 -1
  1349. package/dist/ionic/svg/videocam-sharp.svg +0 -1
  1350. package/dist/ionic/svg/videocam.svg +0 -1
  1351. package/dist/ionic/svg/volume-high-outline.svg +0 -1
  1352. package/dist/ionic/svg/volume-high-sharp.svg +0 -1
  1353. package/dist/ionic/svg/volume-high.svg +0 -1
  1354. package/dist/ionic/svg/volume-low-outline.svg +0 -1
  1355. package/dist/ionic/svg/volume-low-sharp.svg +0 -1
  1356. package/dist/ionic/svg/volume-low.svg +0 -1
  1357. package/dist/ionic/svg/volume-medium-outline.svg +0 -1
  1358. package/dist/ionic/svg/volume-medium-sharp.svg +0 -1
  1359. package/dist/ionic/svg/volume-medium.svg +0 -1
  1360. package/dist/ionic/svg/volume-mute-outline.svg +0 -1
  1361. package/dist/ionic/svg/volume-mute-sharp.svg +0 -1
  1362. package/dist/ionic/svg/volume-mute.svg +0 -1
  1363. package/dist/ionic/svg/volume-off-outline.svg +0 -1
  1364. package/dist/ionic/svg/volume-off-sharp.svg +0 -1
  1365. package/dist/ionic/svg/volume-off.svg +0 -1
  1366. package/dist/ionic/svg/walk-outline.svg +0 -1
  1367. package/dist/ionic/svg/walk-sharp.svg +0 -1
  1368. package/dist/ionic/svg/walk.svg +0 -1
  1369. package/dist/ionic/svg/wallet-outline.svg +0 -1
  1370. package/dist/ionic/svg/wallet-sharp.svg +0 -1
  1371. package/dist/ionic/svg/wallet.svg +0 -1
  1372. package/dist/ionic/svg/warning-outline.svg +0 -1
  1373. package/dist/ionic/svg/warning-sharp.svg +0 -1
  1374. package/dist/ionic/svg/warning.svg +0 -1
  1375. package/dist/ionic/svg/watch-outline.svg +0 -1
  1376. package/dist/ionic/svg/watch-sharp.svg +0 -1
  1377. package/dist/ionic/svg/watch.svg +0 -1
  1378. package/dist/ionic/svg/water-outline.svg +0 -1
  1379. package/dist/ionic/svg/water-sharp.svg +0 -1
  1380. package/dist/ionic/svg/water.svg +0 -1
  1381. package/dist/ionic/svg/wifi-outline.svg +0 -1
  1382. package/dist/ionic/svg/wifi-sharp.svg +0 -1
  1383. package/dist/ionic/svg/wifi.svg +0 -1
  1384. package/dist/ionic/svg/wine-outline.svg +0 -1
  1385. package/dist/ionic/svg/wine-sharp.svg +0 -1
  1386. package/dist/ionic/svg/wine.svg +0 -1
  1387. package/dist/ionic/svg/woman-outline.svg +0 -1
  1388. package/dist/ionic/svg/woman-sharp.svg +0 -1
  1389. package/dist/ionic/svg/woman.svg +0 -1
package/hydrate/index.mjs CHANGED
@@ -390,7 +390,7 @@ const initialize = (userConfig = {}) => {
390
390
  const globalScripts = initialize;
391
391
 
392
392
  /*
393
- Stencil Hydrate Platform v4.36.2 | MIT Licensed | https://stenciljs.com
393
+ Stencil Hydrate Platform v4.38.0 | MIT Licensed | https://stenciljs.com
394
394
  */
395
395
  var __defProp = Object.defineProperty;
396
396
  var __export = (target, all) => {
@@ -988,7 +988,7 @@ var convertToPrivate = (node) => {
988
988
 
989
989
  // src/runtime/client-hydrate.ts
990
990
  var initializeClientHydrate = (hostElm, tagName, hostId, hostRef) => {
991
- var _a, _b, _c;
991
+ var _a, _b;
992
992
  const endHydrate = createTime("hydrateClient", tagName);
993
993
  const shadowRoot = hostElm.shadowRoot;
994
994
  const childRenderNodes = [];
@@ -997,21 +997,6 @@ var initializeClientHydrate = (hostElm, tagName, hostId, hostRef) => {
997
997
  const shadowRootNodes = shadowRoot ? [] : null;
998
998
  const vnode = newVNode(tagName, null);
999
999
  vnode.$elm$ = hostElm;
1000
- const members = Object.entries(((_a = hostRef.$cmpMeta$) == null ? void 0 : _a.$members$) || {});
1001
- members.forEach(([memberName, [memberFlags, metaAttributeName]]) => {
1002
- var _b2;
1003
- if (!(memberFlags & 31 /* Prop */)) {
1004
- return;
1005
- }
1006
- const attributeName = metaAttributeName || memberName;
1007
- const attrVal = hostElm.getAttribute(attributeName);
1008
- if (attrVal !== null) {
1009
- const attrPropVal = parsePropertyValue(
1010
- attrVal,
1011
- memberFlags);
1012
- (_b2 = hostRef == null ? void 0 : hostRef.$instanceValues$) == null ? void 0 : _b2.set(memberName, attrPropVal);
1013
- }
1014
- });
1015
1000
  let scopeId2;
1016
1001
  {
1017
1002
  const cmpMeta = hostRef.$cmpMeta$;
@@ -1050,7 +1035,7 @@ var initializeClientHydrate = (hostElm, tagName, hostId, hostRef) => {
1050
1035
  if (childRenderNode.$tag$ === "slot") {
1051
1036
  node["s-cr"] = hostElm["s-cr"];
1052
1037
  }
1053
- } else if (((_b = childRenderNode.$tag$) == null ? void 0 : _b.toString().includes("-")) && childRenderNode.$tag$ !== "slot-fb" && !childRenderNode.$elm$.shadowRoot) {
1038
+ } else if (((_a = childRenderNode.$tag$) == null ? void 0 : _a.toString().includes("-")) && childRenderNode.$tag$ !== "slot-fb" && !childRenderNode.$elm$.shadowRoot) {
1054
1039
  const cmpMeta = getHostRef(childRenderNode.$elm$);
1055
1040
  if (cmpMeta) {
1056
1041
  const scopeId3 = getScopeId(
@@ -1121,7 +1106,7 @@ var initializeClientHydrate = (hostElm, tagName, hostId, hostRef) => {
1121
1106
  }
1122
1107
  }
1123
1108
  addSlotRelocateNode(slottedItem.node, slottedItem.slot, false, slottedItem.node["s-oo"]);
1124
- if (((_c = slottedItem.node.parentElement) == null ? void 0 : _c.shadowRoot) && slottedItem.node["getAttribute"] && slottedItem.node.getAttribute("slot")) {
1109
+ if (((_b = slottedItem.node.parentElement) == null ? void 0 : _b.shadowRoot) && slottedItem.node["getAttribute"] && slottedItem.node.getAttribute("slot")) {
1125
1110
  slottedItem.node.removeAttribute("slot");
1126
1111
  }
1127
1112
  }
@@ -1837,12 +1822,6 @@ var parsePropertyValue = (propValue, propType, isFormAssociated) => {
1837
1822
  propValue = deserializeProperty(propValue);
1838
1823
  return propValue;
1839
1824
  }
1840
- if (typeof propValue === "string" && (propType & 16 /* Unknown */ || propType & 8 /* Any */) && (propValue.startsWith("{") && propValue.endsWith("}") || propValue.startsWith("[") && propValue.endsWith("]"))) {
1841
- try {
1842
- return JSON.parse(propValue);
1843
- } catch (e) {
1844
- }
1845
- }
1846
1825
  if (propValue != null && !isComplexType(propValue)) {
1847
1826
  if (propType & 4 /* Boolean */) {
1848
1827
  {
@@ -2438,9 +2417,11 @@ var renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {
2438
2417
  hostTagName = hostElm.tagName;
2439
2418
  if (cmpMeta.$attrsToReflect$) {
2440
2419
  rootVnode.$attrs$ = rootVnode.$attrs$ || {};
2441
- cmpMeta.$attrsToReflect$.map(
2442
- ([propName, attribute]) => rootVnode.$attrs$[attribute] = hostElm[propName]
2443
- );
2420
+ cmpMeta.$attrsToReflect$.forEach(([propName, attribute]) => {
2421
+ {
2422
+ rootVnode.$attrs$[attribute] = hostElm[propName];
2423
+ }
2424
+ });
2444
2425
  }
2445
2426
  if (isInitialLoad && rootVnode.$attrs$) {
2446
2427
  for (const key of Object.keys(rootVnode.$attrs$)) {
@@ -2568,10 +2549,15 @@ var dispatchHooks = (hostRef, isInitialLoad) => {
2568
2549
  let maybePromise;
2569
2550
  if (isInitialLoad) {
2570
2551
  {
2571
- hostRef.$flags$ |= 256 /* isListenReady */;
2572
- if (hostRef.$queuedListeners$) {
2573
- hostRef.$queuedListeners$.map(([methodName, event]) => safeCall$1(instance, methodName, event, elm));
2574
- hostRef.$queuedListeners$ = void 0;
2552
+ {
2553
+ hostRef.$flags$ |= 256 /* isListenReady */;
2554
+ if (hostRef.$queuedListeners$) {
2555
+ hostRef.$queuedListeners$.map(([methodName, event]) => safeCall$1(instance, methodName, event, elm));
2556
+ hostRef.$queuedListeners$ = void 0;
2557
+ }
2558
+ }
2559
+ if (hostRef.$fetchedCbList$.length) {
2560
+ hostRef.$fetchedCbList$.forEach((cb) => cb(elm));
2575
2561
  }
2576
2562
  }
2577
2563
  maybePromise = safeCall$1(instance, "componentWillLoad", void 0, elm);
@@ -2784,9 +2770,17 @@ var setValue = (ref, propName, newVal, cmpMeta) => {
2784
2770
  var proxyComponent = (Cstr, cmpMeta, flags) => {
2785
2771
  var _a;
2786
2772
  const prototype = Cstr.prototype;
2787
- if (cmpMeta.$members$ || (cmpMeta.$watchers$ || Cstr.watchers)) {
2788
- if (Cstr.watchers && !cmpMeta.$watchers$) {
2789
- cmpMeta.$watchers$ = Cstr.watchers;
2773
+ {
2774
+ {
2775
+ if (Cstr.watchers && !cmpMeta.$watchers$) {
2776
+ cmpMeta.$watchers$ = Cstr.watchers;
2777
+ }
2778
+ if (Cstr.deserializers && !cmpMeta.$deserializers$) {
2779
+ cmpMeta.$deserializers$ = Cstr.deserializers;
2780
+ }
2781
+ if (Cstr.serializers && !cmpMeta.$serializers$) {
2782
+ cmpMeta.$serializers$ = Cstr.serializers;
2783
+ }
2790
2784
  }
2791
2785
  const members = Object.entries((_a = cmpMeta.$members$) != null ? _a : {});
2792
2786
  members.map(([memberName, [memberFlags]]) => {
@@ -2821,8 +2815,6 @@ var proxyComponent = (Cstr, cmpMeta, flags) => {
2821
2815
  const currentValue = memberFlags & 32 /* State */ ? this[memberName] : ref.$hostElement$[memberName];
2822
2816
  if (typeof currentValue === "undefined" && ref.$instanceValues$.get(memberName)) {
2823
2817
  newValue = ref.$instanceValues$.get(memberName);
2824
- } else if (!ref.$instanceValues$.get(memberName) && currentValue) {
2825
- ref.$instanceValues$.set(memberName, currentValue);
2826
2818
  }
2827
2819
  origSetter.apply(this, [
2828
2820
  parsePropertyValue(
@@ -2868,6 +2860,8 @@ var initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {
2868
2860
  if (!Cstr.isProxied) {
2869
2861
  {
2870
2862
  cmpMeta.$watchers$ = Cstr.watchers;
2863
+ cmpMeta.$serializers$ = Cstr.serializers;
2864
+ cmpMeta.$deserializers$ = Cstr.deserializers;
2871
2865
  }
2872
2866
  proxyComponent(Cstr, cmpMeta);
2873
2867
  Cstr.isProxied = true;
@@ -3207,6 +3201,9 @@ var hAsync = (nodeName, vnodeData, ...children) => {
3207
3201
  // src/hydrate/platform/proxy-host-element.ts
3208
3202
  function proxyHostElement(elm, cstr) {
3209
3203
  const cmpMeta = cstr.cmpMeta;
3204
+ cmpMeta.$watchers$ = cmpMeta.$watchers$ || cstr.watchers;
3205
+ cmpMeta.$deserializers$ = cmpMeta.$deserializers$ || cstr.deserializers;
3206
+ cmpMeta.$serializers$ = cmpMeta.$serializers$ || cstr.serializers;
3210
3207
  if (typeof elm.componentOnReady !== "function") {
3211
3208
  elm.componentOnReady = componentOnReady$1;
3212
3209
  }
@@ -3220,7 +3217,7 @@ function proxyHostElement(elm, cstr) {
3220
3217
  const hostRef = getHostRef(elm);
3221
3218
  const members = Object.entries(cmpMeta.$members$);
3222
3219
  members.forEach(([memberName, [memberFlags, metaAttributeName]]) => {
3223
- var _a;
3220
+ var _a, _b;
3224
3221
  if (memberFlags & 31 /* Prop */) {
3225
3222
  const attributeName = metaAttributeName || memberName;
3226
3223
  const attrValue = elm.getAttribute(attributeName);
@@ -3228,7 +3225,13 @@ function proxyHostElement(elm, cstr) {
3228
3225
  let attrPropVal;
3229
3226
  const { get: origGetter, set: origSetter } = Object.getOwnPropertyDescriptor(cstr.prototype, memberName) || {};
3230
3227
  if (attrValue != null) {
3231
- attrPropVal = parsePropertyValue(attrValue, memberFlags);
3228
+ if ((_a = cmpMeta.$deserializers$) == null ? void 0 : _a[memberName]) {
3229
+ for (const methodName of cmpMeta.$deserializers$[memberName]) {
3230
+ attrPropVal = cstr.prototype[methodName](attrValue, memberName);
3231
+ }
3232
+ } else {
3233
+ attrPropVal = parsePropertyValue(attrValue, memberFlags);
3234
+ }
3232
3235
  }
3233
3236
  if (propValue !== void 0) {
3234
3237
  attrPropVal = propValue;
@@ -3239,7 +3242,7 @@ function proxyHostElement(elm, cstr) {
3239
3242
  origSetter.apply(elm, [attrPropVal]);
3240
3243
  attrPropVal = origGetter ? origGetter.apply(elm) : attrPropVal;
3241
3244
  }
3242
- (_a = hostRef == null ? void 0 : hostRef.$instanceValues$) == null ? void 0 : _a.set(memberName, attrPropVal);
3245
+ (_b = hostRef == null ? void 0 : hostRef.$instanceValues$) == null ? void 0 : _b.set(memberName, attrPropVal);
3243
3246
  }
3244
3247
  const getterSetterDescriptor = {
3245
3248
  get: function() {
@@ -3253,21 +3256,18 @@ function proxyHostElement(elm, cstr) {
3253
3256
  };
3254
3257
  Object.defineProperty(elm, memberName, getterSetterDescriptor);
3255
3258
  Object.defineProperty(elm, metaAttributeName, getterSetterDescriptor);
3256
- if (!cstr.prototype.__stencilAugmented) {
3257
- Object.defineProperty(cstr.prototype, memberName, {
3258
- get: function() {
3259
- var _a2;
3260
- const ref = getHostRef(this);
3261
- const attrPropVal2 = (_a2 = ref == null ? void 0 : ref.$instanceValues$) == null ? void 0 : _a2.get(memberName);
3262
- if (origGetter && attrPropVal2 === void 0 && !getValue(this, memberName)) {
3263
- setValue(this, memberName, origGetter.apply(this), cmpMeta);
3264
- }
3265
- return attrPropVal2 !== void 0 ? attrPropVal2 : origGetter ? origGetter.apply(this) : getValue(this, memberName);
3266
- },
3267
- configurable: true,
3268
- enumerable: true
3269
- });
3270
- }
3259
+ hostRef.$fetchedCbList$.push(() => {
3260
+ var _a2;
3261
+ if (!((_a2 = hostRef == null ? void 0 : hostRef.$instanceValues$) == null ? void 0 : _a2.has(memberName))) {
3262
+ setValue(
3263
+ elm,
3264
+ memberName,
3265
+ attrPropVal !== void 0 ? attrPropVal : hostRef.$lazyInstance$[memberName],
3266
+ cmpMeta
3267
+ );
3268
+ }
3269
+ Object.defineProperty(hostRef.$lazyInstance$, memberName, getterSetterDescriptor);
3270
+ });
3271
3271
  } else if (memberFlags & 64 /* Method */) {
3272
3272
  Object.defineProperty(elm, memberName, {
3273
3273
  value(...args) {
@@ -3283,7 +3283,6 @@ function proxyHostElement(elm, cstr) {
3283
3283
  });
3284
3284
  }
3285
3285
  });
3286
- cstr.prototype.__stencilAugmented = true;
3287
3286
  }
3288
3287
  }
3289
3288
  function componentOnReady$1() {
@@ -3643,6 +3642,7 @@ var getHostRef = (ref) => {
3643
3642
  return void 0;
3644
3643
  };
3645
3644
  var registerInstance = (lazyInstance, hostRef) => {
3645
+ if (!hostRef) return void 0;
3646
3646
  lazyInstance.__stencil__getHostRef = () => hostRef;
3647
3647
  hostRef.$lazyInstance$ = lazyInstance;
3648
3648
  return hostRef;
@@ -3653,8 +3653,10 @@ var registerHost = (elm, cmpMeta) => {
3653
3653
  $cmpMeta$: cmpMeta,
3654
3654
  $hostElement$: elm,
3655
3655
  $instanceValues$: /* @__PURE__ */ new Map(),
3656
+ $serializerValues$: /* @__PURE__ */ new Map(),
3656
3657
  $renderCount$: 0
3657
3658
  };
3659
+ hostRef.$fetchedCbList$ = [];
3658
3660
  hostRef.$onInstancePromise$ = new Promise((r) => hostRef.$onInstanceResolve$ = r);
3659
3661
  hostRef.$onReadyPromise$ = new Promise((r) => hostRef.$onReadyResolve$ = r);
3660
3662
  elm["s-p"] = [];
@@ -4038,10 +4040,57 @@ const accordionMdCss = ":host{display:block;position:relative;width:100%;backgro
4038
4040
  class Accordion {
4039
4041
  constructor(hostRef) {
4040
4042
  registerInstance(this, hostRef);
4041
- this.updateListener = () => this.updateState(false);
4043
+ this.accordionGroupUpdateHandler = () => {
4044
+ /**
4045
+ * Determine if this update will cause an actual state change.
4046
+ * We only want to mark as "interacted" if the state is changing.
4047
+ */
4048
+ const accordionGroup = this.accordionGroupEl;
4049
+ if (accordionGroup) {
4050
+ const value = accordionGroup.value;
4051
+ const accordionValue = this.value;
4052
+ const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue;
4053
+ const isExpanded = this.state === 4 /* AccordionState.Expanded */ || this.state === 8 /* AccordionState.Expanding */;
4054
+ const stateWillChange = shouldExpand !== isExpanded;
4055
+ /**
4056
+ * Only mark as interacted if:
4057
+ * 1. This is not the first update we've received with a defined value
4058
+ * 2. The state is actually changing (prevents redundant updates from enabling animations)
4059
+ */
4060
+ if (this.hasReceivedFirstUpdate && stateWillChange) {
4061
+ this.hasInteracted = true;
4062
+ }
4063
+ /**
4064
+ * Only count this as the first update if the group value is defined.
4065
+ * This prevents the initial undefined value from the group's componentDidLoad
4066
+ * from being treated as the first real update.
4067
+ */
4068
+ if (value !== undefined) {
4069
+ this.hasReceivedFirstUpdate = true;
4070
+ }
4071
+ }
4072
+ this.updateState();
4073
+ };
4042
4074
  this.state = 1 /* AccordionState.Collapsed */;
4043
4075
  this.isNext = false;
4044
4076
  this.isPrevious = false;
4077
+ /**
4078
+ * Tracks whether a user-initiated interaction has occurred.
4079
+ * Animations are disabled until the first interaction happens.
4080
+ * This prevents the accordion from animating when it's programmatically
4081
+ * set to an expanded or collapsed state on initial load.
4082
+ */
4083
+ this.hasInteracted = false;
4084
+ /**
4085
+ * Tracks if this accordion has ever been expanded.
4086
+ * Used to prevent the first expansion from animating.
4087
+ */
4088
+ this.hasEverBeenExpanded = false;
4089
+ /**
4090
+ * Tracks if this accordion has received its first update from the group.
4091
+ * Used to distinguish initial programmatic sets from user interactions.
4092
+ */
4093
+ this.hasReceivedFirstUpdate = false;
4045
4094
  /**
4046
4095
  * The value of the accordion. Defaults to an autogenerated
4047
4096
  * value.
@@ -4146,10 +4195,15 @@ class Accordion {
4146
4195
  iconEl.setAttribute('aria-hidden', 'true');
4147
4196
  ionItem.appendChild(iconEl);
4148
4197
  };
4149
- this.expandAccordion = (initialUpdate = false) => {
4198
+ this.expandAccordion = () => {
4150
4199
  const { contentEl, contentElWrapper } = this;
4151
- if (initialUpdate || contentEl === undefined || contentElWrapper === undefined) {
4200
+ /**
4201
+ * If the content elements aren't available yet, just set the state.
4202
+ * This happens on initial render before the DOM is ready.
4203
+ */
4204
+ if (contentEl === undefined || contentElWrapper === undefined) {
4152
4205
  this.state = 4 /* AccordionState.Expanded */;
4206
+ this.hasEverBeenExpanded = true;
4153
4207
  return;
4154
4208
  }
4155
4209
  if (this.state === 4 /* AccordionState.Expanded */) {
@@ -4158,6 +4212,11 @@ class Accordion {
4158
4212
  if (this.currentRaf !== undefined) {
4159
4213
  cancelAnimationFrame(this.currentRaf);
4160
4214
  }
4215
+ /**
4216
+ * Mark that this accordion has been expanded at least once.
4217
+ * This allows subsequent expansions to animate.
4218
+ */
4219
+ this.hasEverBeenExpanded = true;
4161
4220
  if (this.shouldAnimate()) {
4162
4221
  raf(() => {
4163
4222
  this.state = 8 /* AccordionState.Expanding */;
@@ -4175,9 +4234,13 @@ class Accordion {
4175
4234
  this.state = 4 /* AccordionState.Expanded */;
4176
4235
  }
4177
4236
  };
4178
- this.collapseAccordion = (initialUpdate = false) => {
4237
+ this.collapseAccordion = () => {
4179
4238
  const { contentEl } = this;
4180
- if (initialUpdate || contentEl === undefined) {
4239
+ /**
4240
+ * If the content element isn't available yet, just set the state.
4241
+ * This happens on initial render before the DOM is ready.
4242
+ */
4243
+ if (contentEl === undefined) {
4181
4244
  this.state = 1 /* AccordionState.Collapsed */;
4182
4245
  return;
4183
4246
  }
@@ -4212,6 +4275,18 @@ class Accordion {
4212
4275
  * of what is set in the config.
4213
4276
  */
4214
4277
  this.shouldAnimate = () => {
4278
+ /**
4279
+ * Don't animate until after the first user interaction.
4280
+ * This prevents animations on initial load when accordions
4281
+ * start in an expanded or collapsed state programmatically.
4282
+ *
4283
+ * Additionally, don't animate the very first expansion even if
4284
+ * hasInteracted is true. This handles edge cases like React StrictMode
4285
+ * where effects run twice and might incorrectly mark as interacted.
4286
+ */
4287
+ if (!this.hasInteracted || !this.hasEverBeenExpanded) {
4288
+ return false;
4289
+ }
4215
4290
  if (typeof window === 'undefined') {
4216
4291
  return false;
4217
4292
  }
@@ -4228,7 +4303,7 @@ class Accordion {
4228
4303
  }
4229
4304
  return true;
4230
4305
  };
4231
- this.updateState = async (initialUpdate = false) => {
4306
+ this.updateState = async () => {
4232
4307
  const accordionGroup = this.accordionGroupEl;
4233
4308
  const accordionValue = this.value;
4234
4309
  if (!accordionGroup) {
@@ -4237,11 +4312,11 @@ class Accordion {
4237
4312
  const value = accordionGroup.value;
4238
4313
  const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue;
4239
4314
  if (shouldExpand) {
4240
- this.expandAccordion(initialUpdate);
4315
+ this.expandAccordion();
4241
4316
  this.isNext = this.isPrevious = false;
4242
4317
  }
4243
4318
  else {
4244
- this.collapseAccordion(initialUpdate);
4319
+ this.collapseAccordion();
4245
4320
  /**
4246
4321
  * When using popout or inset,
4247
4322
  * the collapsed accordion items
@@ -4289,14 +4364,14 @@ class Accordion {
4289
4364
  var _a;
4290
4365
  const accordionGroupEl = (this.accordionGroupEl = (_a = this.el) === null || _a === void 0 ? void 0 : _a.closest('ion-accordion-group'));
4291
4366
  if (accordionGroupEl) {
4292
- this.updateState(true);
4293
- addEventListener$1(accordionGroupEl, 'ionValueChange', this.updateListener);
4367
+ this.updateState();
4368
+ addEventListener$1(accordionGroupEl, 'ionValueChange', this.accordionGroupUpdateHandler);
4294
4369
  }
4295
4370
  }
4296
4371
  disconnectedCallback() {
4297
4372
  const accordionGroupEl = this.accordionGroupEl;
4298
4373
  if (accordionGroupEl) {
4299
- removeEventListener(accordionGroupEl, 'ionValueChange', this.updateListener);
4374
+ removeEventListener(accordionGroupEl, 'ionValueChange', this.accordionGroupUpdateHandler);
4300
4375
  }
4301
4376
  }
4302
4377
  componentDidLoad() {
@@ -4320,6 +4395,11 @@ class Accordion {
4320
4395
  const { accordionGroupEl, disabled, readonly, value, state } = this;
4321
4396
  if (disabled || readonly)
4322
4397
  return;
4398
+ /**
4399
+ * Mark that the user has interacted with the accordion.
4400
+ * This enables animations for all future state changes.
4401
+ */
4402
+ this.hasInteracted = true;
4323
4403
  if (accordionGroupEl) {
4324
4404
  /**
4325
4405
  * Because the accordion group may or may
@@ -4340,7 +4420,7 @@ class Accordion {
4340
4420
  const headerPart = expanded ? 'header expanded' : 'header';
4341
4421
  const contentPart = expanded ? 'content expanded' : 'content';
4342
4422
  this.setAria(expanded);
4343
- return (hAsync(Host, { key: '073e1d02c18dcbc20c68648426e87c14750c031d', class: {
4423
+ return (hAsync(Host, { key: '9c90bce01eff7e5774a19f69c872f3761d66cf3c', class: {
4344
4424
  [mode]: true,
4345
4425
  'accordion-expanding': this.state === 8 /* AccordionState.Expanding */,
4346
4426
  'accordion-expanded': this.state === 4 /* AccordionState.Expanded */,
@@ -4351,7 +4431,7 @@ class Accordion {
4351
4431
  'accordion-disabled': disabled,
4352
4432
  'accordion-readonly': readonly,
4353
4433
  'accordion-animated': this.shouldAnimate(),
4354
- } }, hAsync("div", { key: '9b4cf326de8bb6b4033992903c0c1bfd7eea9bcc', onClick: () => this.toggleExpanded(), id: "header", part: headerPart, "aria-controls": "content", ref: (headerEl) => (this.headerEl = headerEl) }, hAsync("slot", { key: '464c32a37f64655eacf4218284214f5f30b14a1e', name: "header" })), hAsync("div", { key: '8bb52e6a62d7de0106b253201a89a32e79d9a594', id: "content", part: contentPart, role: "region", "aria-labelledby": "header", ref: (contentEl) => (this.contentEl = contentEl) }, hAsync("div", { key: '1d9dfd952ad493754aaeea7a8f625b33c2dd90a0', id: "content-wrapper", ref: (contentElWrapper) => (this.contentElWrapper = contentElWrapper) }, hAsync("slot", { key: '970dfbc55a612d739d0ca3b7b1a08e5c96d0c479', name: "content" })))));
4434
+ } }, hAsync("div", { key: 'cab40d5bcf3c93fd78e70b6d3906a541e725837d', onClick: () => this.toggleExpanded(), id: "header", part: headerPart, "aria-controls": "content", ref: (headerEl) => (this.headerEl = headerEl) }, hAsync("slot", { key: '672bc7fb3f9e18076b41e20fc9eaeab7cafcf3a2', name: "header" })), hAsync("div", { key: 'fd777ca5b4ab04aa4f44c339d58c8cd987c52bcb', id: "content", part: contentPart, role: "region", "aria-labelledby": "header", ref: (contentEl) => (this.contentEl = contentEl) }, hAsync("div", { key: '0aad70a71e2cd2c16b2e98fa0bdd40421d95fe16', id: "content-wrapper", ref: (contentElWrapper) => (this.contentElWrapper = contentElWrapper) }, hAsync("slot", { key: 'd630e10ac7c56b4dbf943b523f26759b83aead55', name: "content" })))));
4355
4435
  }
4356
4436
  static get delegatesFocus() { return true; }
4357
4437
  get el() { return getElement(this); }
@@ -4369,11 +4449,12 @@ class Accordion {
4369
4449
  "value": [1],
4370
4450
  "disabled": [4],
4371
4451
  "readonly": [4],
4372
- "toggleIcon": [1, "toggle-icon"],
4452
+ "toggleIcon": [8, "toggle-icon"],
4373
4453
  "toggleIconSlot": [1, "toggle-icon-slot"],
4374
4454
  "state": [32],
4375
4455
  "isNext": [32],
4376
- "isPrevious": [32]
4456
+ "isPrevious": [32],
4457
+ "hasInteracted": [32]
4377
4458
  },
4378
4459
  "$listeners$": undefined,
4379
4460
  "$lazyBundleId$": "-",
@@ -6159,7 +6240,7 @@ const getPresentedOverlay = (doc, overlayTag, id) => {
6159
6240
  */
6160
6241
  const setRootAriaHidden = (hidden = false) => {
6161
6242
  const root = getAppRoot(document);
6162
- const viewContainer = root.querySelector('ion-router-outlet, ion-nav, #ion-view-container-root');
6243
+ const viewContainer = root.querySelector('ion-router-outlet, #ion-view-container-root');
6163
6244
  if (!viewContainer) {
6164
6245
  return;
6165
6246
  }
@@ -6175,21 +6256,50 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
6175
6256
  if (overlay.presented) {
6176
6257
  return;
6177
6258
  }
6259
+ /**
6260
+ * When an overlay that steals focus
6261
+ * is dismissed, focus should be returned
6262
+ * to the element that was focused
6263
+ * prior to the overlay opening. Toast
6264
+ * does not steal focus and is excluded
6265
+ * from returning focus as a result.
6266
+ */
6267
+ if (overlay.el.tagName !== 'ION-TOAST') {
6268
+ restoreElementFocus(overlay.el);
6269
+ }
6178
6270
  /**
6179
6271
  * Due to accessibility guidelines, toasts do not have
6180
6272
  * focus traps.
6181
6273
  *
6182
6274
  * All other overlays should have focus traps to prevent
6183
- * the keyboard focus from leaving the overlay.
6184
- */
6185
- if (overlay.el.tagName !== 'ION-TOAST') {
6186
- setRootAriaHidden(true);
6187
- document.body.classList.add(BACKDROP_NO_SCROLL);
6188
- }
6189
- hideUnderlyingOverlaysFromScreenReaders(overlay.el);
6190
- hideAnimatingOverlayFromScreenReaders(overlay.el);
6275
+ * the keyboard focus from leaving the overlay unless
6276
+ * developers explicitly opt out (for example, sheet
6277
+ * modals that should permit background interaction).
6278
+ *
6279
+ * Note: Some apps move inline overlays to a specific container
6280
+ * during the willPresent lifecycle (e.g., React portals via
6281
+ * onWillPresent). Defer applying aria-hidden/inert to the app
6282
+ * root until after willPresent so we can detect where the
6283
+ * overlay is finally inserted. If the overlay is inside the
6284
+ * view container subtree, skip adding aria-hidden/inert there
6285
+ * to avoid disabling the overlay.
6286
+ */
6287
+ const overlayEl = overlay.el;
6288
+ const shouldTrapFocus = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false;
6289
+ // Only lock out root content when backdrop is active. Developers relying on showBackdrop=false
6290
+ // expect background interaction to remain enabled.
6291
+ const shouldLockRoot = shouldTrapFocus && overlayEl.showBackdrop !== false;
6191
6292
  overlay.presented = true;
6192
6293
  overlay.willPresent.emit();
6294
+ if (shouldLockRoot) {
6295
+ const root = getAppRoot(document);
6296
+ const viewContainer = root.querySelector('ion-router-outlet, #ion-view-container-root');
6297
+ const overlayInsideViewContainer = viewContainer ? viewContainer.contains(overlayEl) : false;
6298
+ if (!overlayInsideViewContainer) {
6299
+ setRootAriaHidden(true);
6300
+ }
6301
+ document.body.classList.add(BACKDROP_NO_SCROLL);
6302
+ }
6193
6303
  (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
6194
6304
  const mode = getIonMode$1(overlay);
6195
6305
  // get the user's animation fn if one was provided
@@ -6201,17 +6311,6 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
6201
6311
  overlay.didPresent.emit();
6202
6312
  (_b = overlay.didPresentShorthand) === null || _b === void 0 ? void 0 : _b.emit();
6203
6313
  }
6204
- /**
6205
- * When an overlay that steals focus
6206
- * is dismissed, focus should be returned
6207
- * to the element that was focused
6208
- * prior to the overlay opening. Toast
6209
- * does not steal focus and is excluded
6210
- * from returning focus as a result.
6211
- */
6212
- if (overlay.el.tagName !== 'ION-TOAST') {
6213
- restoreElementFocus(overlay.el);
6214
- }
6215
6314
  /**
6216
6315
  * If the focused element is already
6217
6316
  * inside the overlay component then
@@ -6234,6 +6333,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
6234
6333
  * screen readers.
6235
6334
  */
6236
6335
  overlay.el.removeAttribute('aria-hidden');
6336
+ overlay.el.removeAttribute('inert');
6237
6337
  };
6238
6338
  /**
6239
6339
  * When an overlay component is dismissed,
@@ -6250,6 +6350,8 @@ const restoreElementFocus = async (overlayEl) => {
6250
6350
  if (!previousElement) {
6251
6351
  return;
6252
6352
  }
6353
+ // Ensure active element is blurred to prevent a11y warning issues
6354
+ previousElement.blur();
6253
6355
  const shadowRoot = previousElement === null || previousElement === void 0 ? void 0 : previousElement.shadowRoot;
6254
6356
  if (shadowRoot) {
6255
6357
  // If there are no inner focusable elements, just focus the host element.
@@ -6294,31 +6396,29 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
6294
6396
  * For accessibility, toasts lack focus traps and don't receive
6295
6397
  * `aria-hidden` on the root element when presented.
6296
6398
  *
6297
- * All other overlays use focus traps to keep keyboard focus
6298
- * within the overlay, setting `aria-hidden` on the root element
6299
- * to enhance accessibility.
6300
- *
6301
- * Therefore, we must remove `aria-hidden` from the root element
6302
- * when the last non-toast overlay is dismissed.
6303
- */
6304
- const overlaysNotToast = presentedOverlays.filter((o) => o.tagName !== 'ION-TOAST');
6305
- const lastOverlayNotToast = overlaysNotToast.length === 1 && overlaysNotToast[0].id === overlay.el.id;
6399
+ * Overlays that opt into focus trapping set `aria-hidden`
6400
+ * on the root element to keep keyboard focus and pointer
6401
+ * events inside the overlay. We must remove `aria-hidden`
6402
+ * from the root element when the last focus-trapping overlay
6403
+ * is dismissed.
6404
+ */
6405
+ const overlaysLockingRoot = presentedOverlays.filter((o) => {
6406
+ const el = o;
6407
+ return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && el.showBackdrop !== false;
6408
+ });
6409
+ const overlayEl = overlay.el;
6410
+ const locksRoot = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false && overlayEl.showBackdrop !== false;
6306
6411
  /**
6307
- * If this is the last visible overlay that is not a toast
6412
+ * If this is the last visible overlay that is trapping focus
6308
6413
  * then we want to re-add the root to the accessibility tree.
6309
6414
  */
6310
- if (lastOverlayNotToast) {
6415
+ const lastOverlayTrappingFocus = locksRoot && overlaysLockingRoot.length === 1 && overlaysLockingRoot[0].id === overlayEl.id;
6416
+ if (lastOverlayTrappingFocus) {
6311
6417
  setRootAriaHidden(false);
6312
6418
  document.body.classList.remove(BACKDROP_NO_SCROLL);
6313
6419
  }
6314
6420
  overlay.presented = false;
6315
6421
  try {
6316
- /**
6317
- * There is no need to show the overlay to screen readers during
6318
- * the dismiss animation. This is because the overlay will be removed
6319
- * from the DOM after the animation is complete.
6320
- */
6321
- hideAnimatingOverlayFromScreenReaders(overlay.el);
6322
6422
  // Overlay contents should not be clickable during dismiss
6323
6423
  overlay.el.style.setProperty('pointer-events', 'none');
6324
6424
  overlay.willDismiss.emit({ data, role });
@@ -6357,7 +6457,6 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
6357
6457
  printIonError(`[${overlay.el.tagName.toLowerCase()}] - `, err);
6358
6458
  }
6359
6459
  overlay.el.remove();
6360
- revealOverlaysToScreenReaders();
6361
6460
  return true;
6362
6461
  };
6363
6462
  const getAppRoot = (doc) => {
@@ -6553,93 +6652,6 @@ const createTriggerController = () => {
6553
6652
  removeClickListener,
6554
6653
  };
6555
6654
  };
6556
- /**
6557
- * The overlay that is being animated also needs to hide from screen
6558
- * readers during its animation. This ensures that assistive technologies
6559
- * like TalkBack do not announce or interact with the content until the
6560
- * animation is complete, avoiding confusion for users.
6561
- *
6562
- * When the overlay is presented on an Android device, TalkBack's focus rings
6563
- * may appear in the wrong position due to the transition (specifically
6564
- * `transform` styles). This occurs because the focus rings are initially
6565
- * displayed at the starting position of the elements before the transition
6566
- * begins. This workaround ensures the focus rings do not appear in the
6567
- * incorrect location.
6568
- *
6569
- * If this solution is applied to iOS devices, then it leads to a bug where
6570
- * the overlays cannot be accessed by screen readers. This is due to
6571
- * VoiceOver not being able to update the accessibility tree when the
6572
- * `aria-hidden` is removed.
6573
- *
6574
- * @param overlay - The overlay that is being animated.
6575
- */
6576
- const hideAnimatingOverlayFromScreenReaders = (overlay) => {
6577
- if (doc === undefined)
6578
- return;
6579
- if (isPlatform('android')) {
6580
- /**
6581
- * Once the animation is complete, this attribute will be removed.
6582
- * This is done at the end of the `present` method.
6583
- */
6584
- overlay.setAttribute('aria-hidden', 'true');
6585
- }
6586
- };
6587
- /**
6588
- * Ensure that underlying overlays have aria-hidden if necessary so that screen readers
6589
- * cannot move focus to these elements. Note that we cannot rely on focus/focusin/focusout
6590
- * events here because those events do not fire when the screen readers moves to a non-focusable
6591
- * element such as text.
6592
- * Without this logic screen readers would be able to move focus outside of the top focus-trapped overlay.
6593
- *
6594
- * @param newTopMostOverlay - The overlay that is being presented. Since the overlay has not been
6595
- * fully presented yet at the time this function is called it will not be included in the getPresentedOverlays result.
6596
- */
6597
- const hideUnderlyingOverlaysFromScreenReaders = (newTopMostOverlay) => {
6598
- var _a;
6599
- if (doc === undefined)
6600
- return;
6601
- const overlays = getPresentedOverlays(doc);
6602
- for (let i = overlays.length - 1; i >= 0; i--) {
6603
- const presentedOverlay = overlays[i];
6604
- const nextPresentedOverlay = (_a = overlays[i + 1]) !== null && _a !== void 0 ? _a : newTopMostOverlay;
6605
- /**
6606
- * If next overlay has aria-hidden then all remaining overlays will have it too.
6607
- * Or, if the next overlay is a Toast that does not have aria-hidden then current overlay
6608
- * should not have aria-hidden either so focus can remain in the current overlay.
6609
- */
6610
- if (nextPresentedOverlay.hasAttribute('aria-hidden') || nextPresentedOverlay.tagName !== 'ION-TOAST') {
6611
- presentedOverlay.setAttribute('aria-hidden', 'true');
6612
- }
6613
- }
6614
- };
6615
- /**
6616
- * When dismissing an overlay we need to reveal the new top-most overlay to screen readers.
6617
- * If the top-most overlay is a Toast we potentially need to reveal more overlays since
6618
- * focus is never automatically moved to the Toast.
6619
- */
6620
- const revealOverlaysToScreenReaders = () => {
6621
- if (doc === undefined)
6622
- return;
6623
- const overlays = getPresentedOverlays(doc);
6624
- for (let i = overlays.length - 1; i >= 0; i--) {
6625
- const currentOverlay = overlays[i];
6626
- /**
6627
- * If the current we are looking at is a Toast then we can remove aria-hidden.
6628
- * However, we potentially need to keep looking at the overlay stack because there
6629
- * could be more Toasts underneath. Additionally, we need to unhide the closest non-Toast
6630
- * overlay too so focus can move there since focus is never automatically moved to the Toast.
6631
- */
6632
- currentOverlay.removeAttribute('aria-hidden');
6633
- /**
6634
- * If we found a non-Toast element then we can just remove aria-hidden and stop searching entirely
6635
- * since this overlay should always receive focus. As a result, all underlying overlays should still
6636
- * be hidden from screen readers.
6637
- */
6638
- if (currentOverlay.tagName !== 'ION-TOAST') {
6639
- break;
6640
- }
6641
- }
6642
- };
6643
6655
  const FOCUS_TRAP_DISABLE_CLASS = 'ion-disable-focus-trap';
6644
6656
 
6645
6657
  const hostContext = (selector, el) => {
@@ -7812,8 +7824,8 @@ class ActionSheet {
7812
7824
  "delegate": [16],
7813
7825
  "hasController": [4, "has-controller"],
7814
7826
  "keyboardClose": [4, "keyboard-close"],
7815
- "enterAnimation": [16, "enter-animation"],
7816
- "leaveAnimation": [16, "leave-animation"],
7827
+ "enterAnimation": [16],
7828
+ "leaveAnimation": [16],
7817
7829
  "buttons": [16],
7818
7830
  "cssClass": [1, "css-class"],
7819
7831
  "backdropDismiss": [4, "backdrop-dismiss"],
@@ -7821,7 +7833,7 @@ class ActionSheet {
7821
7833
  "subHeader": [1, "sub-header"],
7822
7834
  "translucent": [4],
7823
7835
  "animated": [4],
7824
- "htmlAttributes": [16, "html-attributes"],
7836
+ "htmlAttributes": [16],
7825
7837
  "isOpen": [4, "is-open"],
7826
7838
  "trigger": [1],
7827
7839
  "present": [64],
@@ -8545,8 +8557,8 @@ class Alert {
8545
8557
  "delegate": [16],
8546
8558
  "hasController": [4, "has-controller"],
8547
8559
  "keyboardClose": [4, "keyboard-close"],
8548
- "enterAnimation": [16, "enter-animation"],
8549
- "leaveAnimation": [16, "leave-animation"],
8560
+ "enterAnimation": [16],
8561
+ "leaveAnimation": [16],
8550
8562
  "cssClass": [1, "css-class"],
8551
8563
  "header": [1],
8552
8564
  "subHeader": [1, "sub-header"],
@@ -8556,7 +8568,7 @@ class Alert {
8556
8568
  "backdropDismiss": [4, "backdrop-dismiss"],
8557
8569
  "translucent": [4],
8558
8570
  "animated": [4],
8559
- "htmlAttributes": [16, "html-attributes"],
8571
+ "htmlAttributes": [16],
8560
8572
  "isOpen": [4, "is-open"],
8561
8573
  "trigger": [1],
8562
8574
  "present": [64],
@@ -8746,7 +8758,7 @@ class BackButton {
8746
8758
  "icon": [1],
8747
8759
  "text": [1],
8748
8760
  "type": [1],
8749
- "routerAnimation": [16, "router-animation"]
8761
+ "routerAnimation": [16]
8750
8762
  },
8751
8763
  "$listeners$": undefined,
8752
8764
  "$lazyBundleId$": "-",
@@ -8957,7 +8969,7 @@ class Breadcrumb {
8957
8969
  "separator": [4],
8958
8970
  "target": [1],
8959
8971
  "routerDirection": [1, "router-direction"],
8960
- "routerAnimation": [16, "router-animation"]
8972
+ "routerAnimation": [16]
8961
8973
  },
8962
8974
  "$listeners$": undefined,
8963
8975
  "$lazyBundleId$": "-",
@@ -9328,11 +9340,7 @@ class Button {
9328
9340
  target,
9329
9341
  };
9330
9342
  let fill = this.fill;
9331
- /**
9332
- * We check both undefined and null to
9333
- * work around https://github.com/ionic-team/stencil/issues/3586.
9334
- */
9335
- if (fill == null) {
9343
+ if (fill === undefined) {
9336
9344
  fill = this.inToolbar || this.inListHeader ? 'clear' : 'solid';
9337
9345
  }
9338
9346
  /**
@@ -9345,7 +9353,7 @@ class Button {
9345
9353
  {
9346
9354
  type !== 'button' && this.renderHiddenButton();
9347
9355
  }
9348
- return (hAsync(Host, { key: 'b105ad09215adb3ca2298acdadf0dc9154bbb9b0', onClick: this.handleClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
9356
+ return (hAsync(Host, { key: 'ed82ea53705523f9afc5f1a9addff44cc6424f27', onClick: this.handleClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
9349
9357
  [mode]: true,
9350
9358
  [buttonType]: true,
9351
9359
  [`${buttonType}-${expand}`]: expand !== undefined,
@@ -9360,7 +9368,7 @@ class Button {
9360
9368
  'button-disabled': disabled,
9361
9369
  'ion-activatable': true,
9362
9370
  'ion-focusable': true,
9363
- }) }, hAsync(TagType, Object.assign({ key: '66b4e7112bcb9e41d5a723fbbadb0a3104f9ee1d' }, attrs, { class: "button-native", part: "native", disabled: disabled, onFocus: this.onFocus, onBlur: this.onBlur }, inheritedAttributes), hAsync("span", { key: '1439fc3da280221028dcf7ce8ec9dab273c4d4bb', class: "button-inner" }, hAsync("slot", { key: 'd5269ae1afc87ec7b99746032f59cbae93720a9f', name: "icon-only", onSlotchange: this.slotChanged }), hAsync("slot", { key: '461c83e97aa246aa86d83e14f1e15a288d35041e', name: "start" }), hAsync("slot", { key: '807170d47101f9f6a333dd4ff489c89284f306fe' }), hAsync("slot", { key: 'e67f116dd0349a0d27893e4f3ff0ccef1d402f80', name: "end" })), mode === 'md' && hAsync("ion-ripple-effect", { key: '273f0bd9645a36c1bfd18a5c2ab4f81e22b7b989', type: this.rippleType }))));
9371
+ }) }, hAsync(TagType, Object.assign({ key: 'fadec13053469dd0405bbbc61b70ced568aa4826' }, attrs, { class: "button-native", part: "native", disabled: disabled, onFocus: this.onFocus, onBlur: this.onBlur }, inheritedAttributes), hAsync("span", { key: '6bf0e5144fb1148002e88038522402b789689d2c', class: "button-inner" }, hAsync("slot", { key: '25da0ca155cfa9e2754842c34f4fd09f576ac2d2', name: "icon-only", onSlotchange: this.slotChanged }), hAsync("slot", { key: '51414065bb11953ec9d818f8d9353589bc9072c5', name: "start" }), hAsync("slot", { key: 'c9b5f8842aeabd20628df2f4600f1257ea913d8d' }), hAsync("slot", { key: '478dd3671c7be1909fc84e672f0fa8dfe6082263', name: "end" })), mode === 'md' && hAsync("ion-ripple-effect", { key: 'e1d55f85a55144d743f58a5914cd116cb065fa8c', type: this.rippleType }))));
9364
9372
  }
9365
9373
  get el() { return getElement(this); }
9366
9374
  static get watchers() { return {
@@ -9382,7 +9390,7 @@ class Button {
9382
9390
  "expand": [513],
9383
9391
  "fill": [1537],
9384
9392
  "routerDirection": [1, "router-direction"],
9385
- "routerAnimation": [16, "router-animation"],
9393
+ "routerAnimation": [16],
9386
9394
  "download": [1],
9387
9395
  "href": [1],
9388
9396
  "rel": [1],
@@ -9523,7 +9531,7 @@ class Card {
9523
9531
  "href": [1],
9524
9532
  "rel": [1],
9525
9533
  "routerDirection": [1, "router-direction"],
9526
- "routerAnimation": [16, "router-animation"],
9534
+ "routerAnimation": [16],
9527
9535
  "target": [1]
9528
9536
  },
9529
9537
  "$listeners$": undefined,
@@ -9755,7 +9763,6 @@ class Checkbox {
9755
9763
  };
9756
9764
  this.toggleChecked = (ev) => {
9757
9765
  ev.preventDefault();
9758
- this.setFocus();
9759
9766
  this.setChecked(!this.checked);
9760
9767
  this.indeterminate = false;
9761
9768
  };
@@ -9792,9 +9799,7 @@ class Checkbox {
9792
9799
  }
9793
9800
  /** @internal */
9794
9801
  async setFocus() {
9795
- if (this.focusEl) {
9796
- this.focusEl.focus();
9797
- }
9802
+ this.el.focus();
9798
9803
  }
9799
9804
  getHintTextID() {
9800
9805
  const { el, helperText, errorText, helperTextId, errorTextId } = this;
@@ -9830,7 +9835,7 @@ class Checkbox {
9830
9835
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
9831
9836
  // The host element must have a checkbox role to ensure proper VoiceOver
9832
9837
  // support in Safari for accessibility.
9833
- return (hAsync(Host, { key: '26cbe7220e555107200e9b5deeae754aa534a80b', role: "checkbox", "aria-checked": indeterminate ? 'mixed' : `${checked}`, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId, "aria-labelledby": hasLabelContent ? this.inputLabelId : null, "aria-label": inheritedAttributes['aria-label'] || null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? undefined : 0, onKeyDown: this.onKeyDown, class: createColorClasses$1(color, {
9838
+ return (hAsync(Host, { key: 'ee2e02d28f9d15a1ec746609f7e9559444f621e5', role: "checkbox", "aria-checked": indeterminate ? 'mixed' : `${checked}`, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId, "aria-labelledby": hasLabelContent ? this.inputLabelId : null, "aria-label": inheritedAttributes['aria-label'] || null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? undefined : 0, onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
9834
9839
  [mode]: true,
9835
9840
  'in-item': hostContext('ion-item', el),
9836
9841
  'checkbox-checked': checked,
@@ -9840,10 +9845,10 @@ class Checkbox {
9840
9845
  [`checkbox-justify-${justify}`]: justify !== undefined,
9841
9846
  [`checkbox-alignment-${alignment}`]: alignment !== undefined,
9842
9847
  [`checkbox-label-placement-${labelPlacement}`]: true,
9843
- }), onClick: this.onClick }, hAsync("label", { key: 'f025cec5ff08e8be4487b9cc0324616ca5dfae2a', class: "checkbox-wrapper", htmlFor: inputId }, hAsync("input", Object.assign({ key: 'dc53f7e4e240dc2e18556e6350df2b5c3169f553', type: "checkbox", checked: checked ? true : undefined, disabled: disabled, id: inputId, onChange: this.toggleChecked, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl), required: required }, inheritedAttributes)), hAsync("div", { key: 'a625e9b50c3b617de8bbbfd624d772454fecaf2d', class: {
9848
+ }) }, hAsync("label", { key: '84d4c33da0348dc65ad36fb0fafd48be366dcf3b', class: "checkbox-wrapper", htmlFor: inputId }, hAsync("input", Object.assign({ key: '427db69a3ab8a17aa0867519c90f585b8930406b', type: "checkbox", checked: checked ? true : undefined, disabled: disabled, id: inputId, onChange: this.toggleChecked, required: required }, inheritedAttributes)), hAsync("div", { key: '9dda7024b3a4f1ee55351f783f9a10f9b4ad0d12', class: {
9844
9849
  'label-text-wrapper': true,
9845
9850
  'label-text-wrapper-hidden': !hasLabelContent,
9846
- }, part: "label", id: this.inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: '87d1a90691327945f4343406706e4ab27f453844' }), this.renderHintText()), hAsync("div", { key: 'b57fed8cdecee4df1ef0d57f157267ee77fac653', class: "native-wrapper" }, hAsync("svg", { key: 'd472a06ec6c8b74dfb651415d2236db8080f6805', class: "checkbox-icon", viewBox: "0 0 24 24", part: "container" }, path)))));
9851
+ }, part: "label", id: this.inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: 'f9d1d545ffd4164b650808241b51ea1bedc6a42c' }), this.renderHintText()), hAsync("div", { key: 'a96d61ac324864228f14caa0e9f2c0d15418882e', class: "native-wrapper" }, hAsync("svg", { key: '64ff3e4d87e190601811ef64323edec18d510cd1', class: "checkbox-icon", viewBox: "0 0 24 24", part: "container", "aria-hidden": "true" }, path)))));
9847
9852
  }
9848
9853
  getSVGPath(mode, indeterminate) {
9849
9854
  let path = indeterminate ? (hAsync("path", { d: "M6 12L18 12", part: "mark" })) : (hAsync("path", { d: "M5.9,12.5l3.8,3.8l8.8-8.8", part: "mark" }));
@@ -11431,17 +11436,18 @@ const getFormattedDayPeriod = (dayPeriod) => {
11431
11436
  * confusion.
11432
11437
  */
11433
11438
  const stripTimeZone = (formatOptions) => {
11434
- return Object.assign(Object.assign({}, formatOptions), {
11439
+ return Object.assign(Object.assign({}, formatOptions), {
11435
11440
  /**
11436
11441
  * Setting the time zone to UTC ensures that the value shown is always the
11437
11442
  * same as what was selected and safeguards against older Safari bugs with
11438
11443
  * Intl.DateTimeFormat.
11439
11444
  */
11440
- timeZone: 'UTC',
11445
+ timeZone: 'UTC',
11441
11446
  /**
11442
11447
  * We do not want to display the time zone name
11443
11448
  */
11444
- timeZoneName: undefined });
11449
+ timeZoneName: undefined
11450
+ });
11445
11451
  };
11446
11452
  const getLocalizedTime = (locale, refParts, hourCycle, formatOptions = { hour: 'numeric', minute: 'numeric' }) => {
11447
11453
  const timeParts = {
@@ -11451,12 +11457,13 @@ const getLocalizedTime = (locale, refParts, hourCycle, formatOptions = { hour: '
11451
11457
  if (timeParts.hour === undefined || timeParts.minute === undefined) {
11452
11458
  return 'Invalid Time';
11453
11459
  }
11454
- return new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, stripTimeZone(formatOptions)), {
11460
+ return new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, stripTimeZone(formatOptions)), {
11455
11461
  /**
11456
11462
  * We use hourCycle here instead of hour12 due to:
11457
11463
  * https://bugs.chromium.org/p/chromium/issues/detail?id=1347316&q=hour12&can=2
11458
11464
  */
11459
- hourCycle })).format(new Date(convertDataToISO(Object.assign({
11465
+ hourCycle
11466
+ })).format(new Date(convertDataToISO(Object.assign({
11460
11467
  /**
11461
11468
  * JS uses a simplified ISO 8601 format which allows for
11462
11469
  * date-only formats and date-time formats, but not
@@ -11468,7 +11475,8 @@ const getLocalizedTime = (locale, refParts, hourCycle, formatOptions = { hour: '
11468
11475
  * values, so passing these date values should have no impact
11469
11476
  * on the time output.
11470
11477
  */
11471
- year: 2023, day: 1, month: 1 }, timeParts)) + 'Z'));
11478
+ year: 2023, day: 1, month: 1
11479
+ }, timeParts)) + 'Z'));
11472
11480
  };
11473
11481
  /**
11474
11482
  * Adds padding to a time value so
@@ -13529,7 +13537,7 @@ class Datetime {
13529
13537
  const renderArray = forcePresentation === 'time-date'
13530
13538
  ? [this.renderTimePickerColumns(forcePresentation), this.renderDatePickerColumns(forcePresentation)]
13531
13539
  : [this.renderDatePickerColumns(forcePresentation), this.renderTimePickerColumns(forcePresentation)];
13532
- return hAsync("ion-picker", null, renderArray);
13540
+ return hAsync("ion-picker", { class: FOCUS_TRAP_DISABLE_CLASS }, renderArray);
13533
13541
  }
13534
13542
  renderDatePickerColumns(forcePresentation) {
13535
13543
  return forcePresentation === 'date-time' || forcePresentation === 'time-date'
@@ -14086,7 +14094,7 @@ class Datetime {
14086
14094
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
14087
14095
  const hasWheelVariant = hasDatePresentation && preferWheel;
14088
14096
  renderHiddenInput(true, el, name, formatValue(value), disabled);
14089
- return (hAsync(Host, { key: 'f35cf200ff05d33074576e3d2754d3b2a0735b96', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses$1(color, {
14097
+ return (hAsync(Host, { key: '57492534800ea059a7c2bbd9f0059cc0b75ae8d2', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses$1(color, {
14090
14098
  [mode]: true,
14091
14099
  ['datetime-readonly']: readonly,
14092
14100
  ['datetime-disabled']: disabled,
@@ -14096,7 +14104,7 @@ class Datetime {
14096
14104
  [`datetime-size-${size}`]: true,
14097
14105
  [`datetime-prefer-wheel`]: hasWheelVariant,
14098
14106
  [`datetime-grid`]: isGridStyle,
14099
- })) }, hAsync("div", { key: '859e9354a12bfa58ac3f964c2e66839f17071c00', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
14107
+ })) }, hAsync("div", { key: '97dac5e5195635ac0bc5fb472b9d09e5c3c6bbc3', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
14100
14108
  }
14101
14109
  get el() { return getElement(this); }
14102
14110
  static get watchers() { return {
@@ -14123,9 +14131,9 @@ class Datetime {
14123
14131
  "color": [1],
14124
14132
  "name": [1],
14125
14133
  "disabled": [4],
14126
- "formatOptions": [16, "format-options"],
14134
+ "formatOptions": [16],
14127
14135
  "readonly": [4],
14128
- "isDateEnabled": [16, "is-date-enabled"],
14136
+ "isDateEnabled": [16],
14129
14137
  "showAdjacentDays": [4, "show-adjacent-days"],
14130
14138
  "min": [1025],
14131
14139
  "max": [1025],
@@ -14140,9 +14148,9 @@ class Datetime {
14140
14148
  "minuteValues": [8, "minute-values"],
14141
14149
  "locale": [1],
14142
14150
  "firstDayOfWeek": [2, "first-day-of-week"],
14143
- "titleSelectedDatesFormatter": [16, "title-selected-dates-formatter"],
14151
+ "titleSelectedDatesFormatter": [16],
14144
14152
  "multiple": [4],
14145
- "highlightedDates": [16, "highlighted-dates"],
14153
+ "highlightedDates": [16],
14146
14154
  "value": [1025],
14147
14155
  "showDefaultTitle": [4, "show-default-title"],
14148
14156
  "showDefaultButtons": [4, "show-default-buttons"],
@@ -14732,13 +14740,13 @@ class FabButton {
14732
14740
  "href": [1],
14733
14741
  "rel": [1],
14734
14742
  "routerDirection": [1, "router-direction"],
14735
- "routerAnimation": [16, "router-animation"],
14743
+ "routerAnimation": [16],
14736
14744
  "target": [1],
14737
14745
  "show": [4],
14738
14746
  "translucent": [4],
14739
14747
  "type": [1],
14740
14748
  "size": [1],
14741
- "closeIcon": [1, "close-icon"]
14749
+ "closeIcon": [8, "close-icon"]
14742
14750
  },
14743
14751
  "$listeners$": undefined,
14744
14752
  "$lazyBundleId$": "-",
@@ -15291,6 +15299,8 @@ class Grid {
15291
15299
  }
15292
15300
 
15293
15301
  const TRANSITION = 'all 0.2s ease-in-out';
15302
+ const ROLE_NONE = 'none';
15303
+ const ROLE_BANNER = 'banner';
15294
15304
  const cloneElement = (tagName) => {
15295
15305
  const getCachedEl = document.querySelector(`${tagName}.ion-cloned-element`);
15296
15306
  if (getCachedEl !== null) {
@@ -15417,6 +15427,7 @@ const setHeaderActive = (headerIndex, active = true) => {
15417
15427
  const toolbars = headerIndex.toolbars;
15418
15428
  const ionTitles = toolbars.map((toolbar) => toolbar.ionTitleEl);
15419
15429
  if (active) {
15430
+ headerEl.setAttribute('role', ROLE_BANNER);
15420
15431
  headerEl.classList.remove('header-collapse-condense-inactive');
15421
15432
  ionTitles.forEach((ionTitle) => {
15422
15433
  if (ionTitle) {
@@ -15425,6 +15436,16 @@ const setHeaderActive = (headerIndex, active = true) => {
15425
15436
  });
15426
15437
  }
15427
15438
  else {
15439
+ /**
15440
+ * There can only be one banner landmark per page.
15441
+ * By default, all ion-headers have the banner role.
15442
+ * This causes an accessibility issue when using a
15443
+ * condensed header since there are two ion-headers
15444
+ * on the page at once (active and inactive).
15445
+ * To solve this, the role needs to be toggled
15446
+ * based on which header is active.
15447
+ */
15448
+ headerEl.setAttribute('role', ROLE_NONE);
15428
15449
  headerEl.classList.add('header-collapse-condense-inactive');
15429
15450
  /**
15430
15451
  * The small title should only be accessed by screen readers
@@ -15484,8 +15505,32 @@ const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
15484
15505
  });
15485
15506
  });
15486
15507
  };
15508
+ /**
15509
+ * Get the role type for the ion-header.
15510
+ *
15511
+ * @param isInsideMenu If ion-header is inside ion-menu.
15512
+ * @param isCondensed If ion-header has collapse="condense".
15513
+ * @param mode The current mode.
15514
+ * @returns 'none' if inside ion-menu or if condensed in md
15515
+ * mode, otherwise 'banner'.
15516
+ */
15517
+ const getRoleType = (isInsideMenu, isCondensed, mode) => {
15518
+ // If the header is inside a menu, it should not have the banner role.
15519
+ if (isInsideMenu) {
15520
+ return ROLE_NONE;
15521
+ }
15522
+ /**
15523
+ * Only apply role="none" to `md` mode condensed headers
15524
+ * since the large header is never shown.
15525
+ */
15526
+ if (isCondensed && mode === 'md') {
15527
+ return ROLE_NONE;
15528
+ }
15529
+ // Default to banner role.
15530
+ return ROLE_BANNER;
15531
+ };
15487
15532
 
15488
- 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-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{--background:var(--ion-background-color, #fff);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-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}";
15533
+ 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}";
15489
15534
 
15490
15535
  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-collapse-condense{display:none}.header-md.ion-no-border{-webkit-box-shadow:none;box-shadow:none}";
15491
15536
 
@@ -15628,16 +15673,17 @@ class Header {
15628
15673
  const { translucent, inheritedAttributes } = this;
15629
15674
  const mode = getIonMode$1(this);
15630
15675
  const collapse = this.collapse || 'none';
15676
+ const isCondensed = collapse === 'condense';
15631
15677
  // banner role must be at top level, so remove role if inside a menu
15632
- const roleType = hostContext('ion-menu', this.el) ? 'none' : 'banner';
15633
- return (hAsync(Host, Object.assign({ key: 'b6cc27f0b08afc9fcc889683525da765d80ba672', role: roleType, class: {
15678
+ const roleType = getRoleType(hostContext('ion-menu', this.el), isCondensed, mode);
15679
+ return (hAsync(Host, Object.assign({ key: '863c4568cd7b8c0ec55109f193bbbaed68a1346e', role: roleType, class: {
15634
15680
  [mode]: true,
15635
15681
  // Used internally for styling
15636
15682
  [`header-${mode}`]: true,
15637
15683
  [`header-translucent`]: this.translucent,
15638
15684
  [`header-collapse-${collapse}`]: true,
15639
15685
  [`header-translucent-${mode}`]: this.translucent,
15640
- } }, inheritedAttributes), mode === 'ios' && translucent && hAsync("div", { key: '395766d4dcee3398bc91960db21f922095292f14', class: "header-background" }), hAsync("slot", { key: '09a67ece27b258ff1248805d43d92a49b2c6859a' })));
15686
+ } }, inheritedAttributes), mode === 'ios' && translucent && hAsync("div", { key: '25c3bdce328b0b35607d154c8b8374679313d881', class: "header-background" }), hAsync("slot", { key: 'b44fab0a9be7920b9650da26117c783e751e1702' })));
15641
15687
  }
15642
15688
  get el() { return getElement(this); }
15643
15689
  static get style() { return {
@@ -16449,6 +16495,19 @@ const isOptionSelected = (currentValue, compareValue, compareWith) => {
16449
16495
  }
16450
16496
  };
16451
16497
 
16498
+ /**
16499
+ * Checks if the form element is in an invalid state based on
16500
+ * Ionic validation classes.
16501
+ *
16502
+ * @param el The form element to check.
16503
+ * @returns `true` if the element is invalid, `false` otherwise.
16504
+ */
16505
+ const checkInvalidState = (el) => {
16506
+ const hasIonTouched = el.classList.contains('ion-touched');
16507
+ const hasIonInvalid = el.classList.contains('ion-invalid');
16508
+ return hasIonTouched && hasIonInvalid;
16509
+ };
16510
+
16452
16511
  /**
16453
16512
  * Used to update a scoped component that uses emulated slots. This fires when
16454
16513
  * content is passed into the slot or when the content inside of a slot changes.
@@ -16627,6 +16686,10 @@ class Input {
16627
16686
  * is applied in both cases.
16628
16687
  */
16629
16688
  this.hasFocus = false;
16689
+ /**
16690
+ * Track validation state for proper aria-live announcements
16691
+ */
16692
+ this.isInvalid = false;
16630
16693
  /**
16631
16694
  * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.
16632
16695
  * Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`.
@@ -16814,6 +16877,8 @@ class Input {
16814
16877
  const { el } = this;
16815
16878
  this.slotMutationController = createSlotMutationController(el, ['label', 'start', 'end'], () => forceUpdate());
16816
16879
  this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
16880
+ // Always set initial state
16881
+ this.isInvalid = checkInvalidState(el);
16817
16882
  this.debounceChanged();
16818
16883
  }
16819
16884
  componentDidLoad() {
@@ -16840,6 +16905,11 @@ class Input {
16840
16905
  this.notchController.destroy();
16841
16906
  this.notchController = undefined;
16842
16907
  }
16908
+ // Clean up validation observer to prevent memory leaks
16909
+ if (this.validationObserver) {
16910
+ this.validationObserver.disconnect();
16911
+ this.validationObserver = undefined;
16912
+ }
16843
16913
  }
16844
16914
  /**
16845
16915
  * Sets focus on the native `input` in `ion-input`. Use this method instead of the global
@@ -16941,15 +17011,15 @@ class Input {
16941
17011
  * Renders the helper text or error text values
16942
17012
  */
16943
17013
  renderHintText() {
16944
- const { helperText, errorText, helperTextId, errorTextId } = this;
17014
+ const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
16945
17015
  return [
16946
- hAsync("div", { id: helperTextId, class: "helper-text" }, helperText),
16947
- hAsync("div", { id: errorTextId, class: "error-text" }, errorText),
17016
+ hAsync("div", { id: helperTextId, class: "helper-text", "aria-live": "polite" }, !isInvalid ? helperText : null),
17017
+ hAsync("div", { id: errorTextId, class: "error-text", role: "alert" }, isInvalid ? errorText : null),
16948
17018
  ];
16949
17019
  }
16950
17020
  getHintTextID() {
16951
- const { el, helperText, errorText, helperTextId, errorTextId } = this;
16952
- if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
17021
+ const { isInvalid, helperText, errorText, helperTextId, errorTextId } = this;
17022
+ if (isInvalid && errorText) {
16953
17023
  return errorTextId;
16954
17024
  }
16955
17025
  if (helperText) {
@@ -17062,7 +17132,7 @@ class Input {
17062
17132
  * TODO(FW-5592): Remove hasStartEndSlots condition
17063
17133
  */
17064
17134
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
17065
- return (hAsync(Host, { key: '41b2526627e7d2773a80f011b123284203a71ca0', class: createColorClasses$1(this.color, {
17135
+ return (hAsync(Host, { key: '97b5308021064d9e7434ef2d3d96f27045c1b0c4', class: createColorClasses$1(this.color, {
17066
17136
  [mode]: true,
17067
17137
  'has-value': hasValue,
17068
17138
  'has-focus': hasFocus,
@@ -17073,14 +17143,14 @@ class Input {
17073
17143
  'in-item': inItem,
17074
17144
  'in-item-color': hostContext('ion-item.ion-color', this.el),
17075
17145
  'input-disabled': disabled,
17076
- }) }, hAsync("label", { key: '9ab078363e32528102b441ad1791d83f86fdcbdc', class: "input-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: 'e34b594980ec62e4c618e827fadf7669a39ad0d8', class: "native-wrapper", onClick: this.onLabelClick }, hAsync("slot", { key: '12dc04ead5502e9e5736240e918bf9331bf7b5d9', name: "start" }), hAsync("input", Object.assign({ key: 'df356eb4ced23109b2c0242f36dc043aba8782d6', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (hAsync("button", { key: 'f79f68cabcd4ea99419331174a377827db0c0741', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
17146
+ }) }, hAsync("label", { key: '353f68726ce180299bd9adc81e5ff7d26a48f54f', class: "input-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: '2034b4bad04fc157f3298a1805819216b6f439d0', class: "native-wrapper", onClick: this.onLabelClick }, hAsync("slot", { key: '96bb5e30176b2bd76dfb75bfbf6c1c3d4403f4bb', name: "start" }), hAsync("input", Object.assign({ key: '1a1d75b0e414a95c89d5a760757c33548d234aca', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (hAsync("button", { key: '95f3df17b7691d9a2e7dcd4a51f16a94aa3ca36f', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
17077
17147
  /**
17078
17148
  * This prevents mobile browsers from
17079
17149
  * blurring the input when the clear
17080
17150
  * button is activated.
17081
17151
  */
17082
17152
  ev.preventDefault();
17083
- }, onClick: this.clearTextInput }, hAsync("ion-icon", { key: '237ec07ec2e10f08818a332bb596578c2c49f770', "aria-hidden": "true", icon: clearIconData }))), hAsync("slot", { key: '1f0a3624aa3e8dc3c307a6762230ab698768a5e5', name: "end" })), shouldRenderHighlight && hAsync("div", { key: '8a8cbb82695a722a0010b53dd0b1f1f97534a20b', class: "input-highlight" })), this.renderBottomContent()));
17153
+ }, onClick: this.clearTextInput }, hAsync("ion-icon", { key: '16b0af75eed50c8115fb5597f73b5fbf71c2530e', "aria-hidden": "true", icon: clearIconData }))), hAsync("slot", { key: 'c48da0f8ddb3764ac43efa705bb4a6bb2d9cc2fd', name: "end" })), shouldRenderHighlight && hAsync("div", { key: 'f15238481fc20de56ca7ecb6e350b3c024cc755e', class: "input-highlight" })), this.renderBottomContent()));
17084
17154
  }
17085
17155
  get el() { return getElement(this); }
17086
17156
  static get watchers() { return {
@@ -17106,7 +17176,7 @@ class Input {
17106
17176
  "clearInputIcon": [1, "clear-input-icon"],
17107
17177
  "clearOnEdit": [4, "clear-on-edit"],
17108
17178
  "counter": [4],
17109
- "counterFormatter": [16, "counter-formatter"],
17179
+ "counterFormatter": [16],
17110
17180
  "debounce": [2],
17111
17181
  "disabled": [516],
17112
17182
  "enterkeyhint": [1],
@@ -17132,6 +17202,7 @@ class Input {
17132
17202
  "type": [1],
17133
17203
  "value": [1032],
17134
17204
  "hasFocus": [32],
17205
+ "isInvalid": [32],
17135
17206
  "setFocus": [64],
17136
17207
  "getInputElement": [64]
17137
17208
  },
@@ -18156,13 +18227,13 @@ class Item {
18156
18227
  "color": [513],
18157
18228
  "button": [4],
18158
18229
  "detail": [4],
18159
- "detailIcon": [1, "detail-icon"],
18230
+ "detailIcon": [8, "detail-icon"],
18160
18231
  "disabled": [516],
18161
18232
  "download": [1],
18162
18233
  "href": [1],
18163
18234
  "rel": [1],
18164
18235
  "lines": [1],
18165
- "routerAnimation": [16, "router-animation"],
18236
+ "routerAnimation": [16],
18166
18237
  "routerDirection": [1, "router-direction"],
18167
18238
  "target": [1],
18168
18239
  "type": [1],
@@ -19344,8 +19415,8 @@ class Loading {
19344
19415
  "delegate": [16],
19345
19416
  "hasController": [4, "has-controller"],
19346
19417
  "keyboardClose": [4, "keyboard-close"],
19347
- "enterAnimation": [16, "enter-animation"],
19348
- "leaveAnimation": [16, "leave-animation"],
19418
+ "enterAnimation": [16],
19419
+ "leaveAnimation": [16],
19349
19420
  "message": [1],
19350
19421
  "cssClass": [1, "css-class"],
19351
19422
  "duration": [2],
@@ -19354,7 +19425,7 @@ class Loading {
19354
19425
  "spinner": [1025],
19355
19426
  "translucent": [4],
19356
19427
  "animated": [4],
19357
- "htmlAttributes": [16, "html-attributes"],
19428
+ "htmlAttributes": [16],
19358
19429
  "isOpen": [4, "is-open"],
19359
19430
  "trigger": [1],
19360
19431
  "present": [64],
@@ -20009,6 +20080,9 @@ class Menu {
20009
20080
  * @param role The role of the element that is closing the menu.
20010
20081
  */
20011
20082
  setOpen(shouldOpen, animated = true, role) {
20083
+ var _a;
20084
+ // Blur the active element to prevent it from being kept focused inside an element that will be set with aria-hidden="true"
20085
+ (_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.blur();
20012
20086
  return menuController._setOpen(this, shouldOpen, animated, role);
20013
20087
  }
20014
20088
  trapKeyboardFocus(ev, doc) {
@@ -20371,14 +20445,14 @@ class Menu {
20371
20445
  * the ionBackButton listener in the menu controller
20372
20446
  * will handle closing the menu when Escape is pressed.
20373
20447
  */
20374
- return (hAsync(Host, { key: 'a5c75aa40a34530b56ee3b98d706a5ac5ae300de', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
20448
+ return (hAsync(Host, { key: '70a427f3414a476414c3386efe6c8723fd37eccf', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
20375
20449
  [mode]: true,
20376
20450
  [`menu-type-${type}`]: true,
20377
20451
  'menu-enabled': !disabled,
20378
20452
  [`menu-side-${side}`]: true,
20379
20453
  'menu-pane-visible': isPaneVisible,
20380
20454
  'split-pane-side': hostContext('ion-split-pane', el),
20381
- } }, hAsync("div", { key: '3f5f70acd4d3ed6bb445122f4f01d73db738a75f', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, hAsync("slot", { key: '3161326c9330e7f7441299c428b87a91b31a83e9' })), hAsync("ion-backdrop", { key: '917b50f38489bdf03d0c642af8b4e4e172c7dc4c', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
20455
+ } }, hAsync("div", { key: '83af04e5a47d5a92caafaf06088a7114ae61984b', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, hAsync("slot", { key: '7b35048642864bd0f30de9f6b61c949c1b601692' })), hAsync("ion-backdrop", { key: '347af516c7970d80dd11c6d1ed61e9a040ceb5fb', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
20382
20456
  }
20383
20457
  get el() { return getElement(this); }
20384
20458
  static get watchers() { return {
@@ -20717,11 +20791,22 @@ const iosTransitionAnimation$1 = () => Promise.resolve().then(function () { retu
20717
20791
  const mdTransitionAnimation$1 = () => Promise.resolve().then(function () { return md_transition; });
20718
20792
  const focusController = createFocusController();
20719
20793
  // TODO(FW-2832): types
20794
+ /**
20795
+ * Executes the main page transition.
20796
+ * It also manages the lifecycle of header visibility (if any)
20797
+ * to prevent visual flickering in iOS. The flickering only
20798
+ * occurs for a condensed header that is placed above the content.
20799
+ *
20800
+ * @param opts Options for the transition.
20801
+ * @returns A promise that resolves when the transition is complete.
20802
+ */
20720
20803
  const transition = (opts) => {
20721
20804
  return new Promise((resolve, reject) => {
20722
20805
  writeTask(() => {
20723
- beforeTransition(opts);
20724
- runTransition(opts).then((result) => {
20806
+ const transitioningInactiveHeader = getIosIonHeader(opts);
20807
+ beforeTransition(opts, transitioningInactiveHeader);
20808
+ runTransition(opts)
20809
+ .then((result) => {
20725
20810
  if (result.animation) {
20726
20811
  result.animation.destroy();
20727
20812
  }
@@ -20730,15 +20815,21 @@ const transition = (opts) => {
20730
20815
  }, (error) => {
20731
20816
  afterTransition(opts);
20732
20817
  reject(error);
20818
+ })
20819
+ .finally(() => {
20820
+ // Ensure that the header is restored to its original state.
20821
+ setHeaderTransitionClass(transitioningInactiveHeader, false);
20733
20822
  });
20734
20823
  });
20735
20824
  });
20736
20825
  };
20737
- const beforeTransition = (opts) => {
20826
+ const beforeTransition = (opts, transitioningInactiveHeader) => {
20738
20827
  const enteringEl = opts.enteringEl;
20739
20828
  const leavingEl = opts.leavingEl;
20740
20829
  focusController.saveViewFocus(leavingEl);
20741
20830
  setZIndex(enteringEl, leavingEl, opts.direction);
20831
+ // Prevent flickering of the header by adding a class.
20832
+ setHeaderTransitionClass(transitioningInactiveHeader, true);
20742
20833
  if (opts.showGoBack) {
20743
20834
  enteringEl.classList.add('can-go-back');
20744
20835
  }
@@ -20927,6 +21018,39 @@ const setZIndex = (enteringEl, leavingEl, direction) => {
20927
21018
  leavingEl.style.zIndex = '100';
20928
21019
  }
20929
21020
  };
21021
+ /**
21022
+ * Add a class to ensure that the header (if any)
21023
+ * does not flicker during the transition. By adding the
21024
+ * transitioning class, we ensure that the header has
21025
+ * the necessary styles to prevent the following flickers:
21026
+ * 1. When entering a page with a condensed header, the
21027
+ * header should never be visible. However,
21028
+ * it briefly renders the background color while
21029
+ * the transition is occurring.
21030
+ * 2. When leaving a page with a condensed header, the
21031
+ * header has an opacity of 0 and the pages
21032
+ * have a z-index which causes the entering page to
21033
+ * briefly show it's content underneath the leaving page.
21034
+ * 3. When entering a page or leaving a page with a fade
21035
+ * header, the header should not have a background color.
21036
+ * However, it briefly shows the background color while
21037
+ * the transition is occurring.
21038
+ *
21039
+ * @param header The header element to modify.
21040
+ * @param isTransitioning Whether the transition is occurring.
21041
+ */
21042
+ const setHeaderTransitionClass = (header, isTransitioning) => {
21043
+ if (!header) {
21044
+ return;
21045
+ }
21046
+ const transitionClass = 'header-transitioning';
21047
+ if (isTransitioning) {
21048
+ header.classList.add(transitionClass);
21049
+ }
21050
+ else {
21051
+ header.classList.remove(transitionClass);
21052
+ }
21053
+ };
20930
21054
  const getIonPageElement = (element) => {
20931
21055
  if (element.classList.contains('ion-page')) {
20932
21056
  return element;
@@ -20938,6 +21062,27 @@ const getIonPageElement = (element) => {
20938
21062
  // idk, return the original element so at least something animates and we don't have a null pointer
20939
21063
  return element;
20940
21064
  };
21065
+ /**
21066
+ * Retrieves the ion-header element from a page based on the
21067
+ * direction of the transition.
21068
+ *
21069
+ * @param opts Options for the transition.
21070
+ * @returns The ion-header element or null if not found or not in 'ios' mode.
21071
+ */
21072
+ const getIosIonHeader = (opts) => {
21073
+ const enteringEl = opts.enteringEl;
21074
+ const leavingEl = opts.leavingEl;
21075
+ const direction = opts.direction;
21076
+ const mode = opts.mode;
21077
+ if (mode !== 'ios') {
21078
+ return null;
21079
+ }
21080
+ const element = direction === 'back' ? leavingEl : enteringEl;
21081
+ if (!element) {
21082
+ return null;
21083
+ }
21084
+ return element.querySelector('ion-header');
21085
+ };
20941
21086
 
20942
21087
  const KEYBOARD_DID_OPEN = 'ionKeyboardDidShow';
20943
21088
 
@@ -21875,6 +22020,12 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
21875
22020
  const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
21876
22021
  const contentAnimation = animation.childAnimations.find((ani) => ani.id === 'contentAnimation');
21877
22022
  const enableBackdrop = () => {
22023
+ // Respect explicit opt-out of focus trapping/backdrop interactions
22024
+ // If focusTrap is false or showBackdrop is false, do not enable the backdrop or re-enable focus trap
22025
+ const el = baseEl;
22026
+ if (el.focusTrap === false || el.showBackdrop === false) {
22027
+ return;
22028
+ }
21878
22029
  baseEl.style.setProperty('pointer-events', 'auto');
21879
22030
  backdropEl.style.setProperty('pointer-events', 'auto');
21880
22031
  /**
@@ -21999,7 +22150,9 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
21999
22150
  * ion-backdrop and .modal-wrapper always have pointer-events: auto
22000
22151
  * applied, so the modal content can still be interacted with.
22001
22152
  */
22002
- const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;
22153
+ const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint &&
22154
+ baseEl.focusTrap !== false &&
22155
+ baseEl.showBackdrop !== false;
22003
22156
  if (shouldEnableBackdrop) {
22004
22157
  enableBackdrop();
22005
22158
  }
@@ -22307,7 +22460,9 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
22307
22460
  * Backdrop should become enabled
22308
22461
  * after the backdropBreakpoint value
22309
22462
  */
22310
- const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;
22463
+ const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint &&
22464
+ baseEl.focusTrap !== false &&
22465
+ baseEl.showBackdrop !== false;
22311
22466
  if (shouldEnableBackdrop) {
22312
22467
  enableBackdrop();
22313
22468
  }
@@ -23248,8 +23403,8 @@ class Modal {
23248
23403
  "overlayIndex": [2, "overlay-index"],
23249
23404
  "delegate": [16],
23250
23405
  "keyboardClose": [4, "keyboard-close"],
23251
- "enterAnimation": [16, "enter-animation"],
23252
- "leaveAnimation": [16, "leave-animation"],
23406
+ "enterAnimation": [16],
23407
+ "leaveAnimation": [16],
23253
23408
  "breakpoints": [16],
23254
23409
  "expandToScroll": [4, "expand-to-scroll"],
23255
23410
  "initialBreakpoint": [2, "initial-breakpoint"],
@@ -23257,13 +23412,13 @@ class Modal {
23257
23412
  "handle": [4],
23258
23413
  "handleBehavior": [1, "handle-behavior"],
23259
23414
  "component": [1],
23260
- "componentProps": [16, "component-props"],
23415
+ "componentProps": [16],
23261
23416
  "cssClass": [1, "css-class"],
23262
23417
  "backdropDismiss": [4, "backdrop-dismiss"],
23263
23418
  "showBackdrop": [4, "show-backdrop"],
23264
23419
  "animated": [4],
23265
- "presentingElement": [16, "presenting-element"],
23266
- "htmlAttributes": [16, "html-attributes"],
23420
+ "presentingElement": [16],
23421
+ "htmlAttributes": [16],
23267
23422
  "isOpen": [4, "is-open"],
23268
23423
  "trigger": [1],
23269
23424
  "keepContentsMounted": [4, "keep-contents-mounted"],
@@ -24192,7 +24347,7 @@ class Nav {
24192
24347
  "swipeGesture": [1028, "swipe-gesture"],
24193
24348
  "animated": [4],
24194
24349
  "animation": [16],
24195
- "rootParams": [16, "root-params"],
24350
+ "rootParams": [16],
24196
24351
  "root": [1],
24197
24352
  "push": [64],
24198
24353
  "insert": [64],
@@ -24257,9 +24412,9 @@ class NavLink {
24257
24412
  "$tagName$": "ion-nav-link",
24258
24413
  "$members$": {
24259
24414
  "component": [1],
24260
- "componentProps": [16, "component-props"],
24415
+ "componentProps": [16],
24261
24416
  "routerDirection": [1, "router-direction"],
24262
- "routerAnimation": [16, "router-animation"]
24417
+ "routerAnimation": [16]
24263
24418
  },
24264
24419
  "$listeners$": undefined,
24265
24420
  "$lazyBundleId$": "-",
@@ -25065,8 +25220,8 @@ class Picker {
25065
25220
  "delegate": [16],
25066
25221
  "hasController": [4, "has-controller"],
25067
25222
  "keyboardClose": [4, "keyboard-close"],
25068
- "enterAnimation": [16, "enter-animation"],
25069
- "leaveAnimation": [16, "leave-animation"],
25223
+ "enterAnimation": [16],
25224
+ "leaveAnimation": [16],
25070
25225
  "buttons": [16],
25071
25226
  "columns": [16],
25072
25227
  "cssClass": [1, "css-class"],
@@ -25074,7 +25229,7 @@ class Picker {
25074
25229
  "showBackdrop": [4, "show-backdrop"],
25075
25230
  "backdropDismiss": [4, "backdrop-dismiss"],
25076
25231
  "animated": [4],
25077
- "htmlAttributes": [16, "html-attributes"],
25232
+ "htmlAttributes": [16],
25078
25233
  "isOpen": [4, "is-open"],
25079
25234
  "trigger": [1],
25080
25235
  "presented": [32],
@@ -25504,23 +25659,6 @@ class PickerColumn {
25504
25659
  var _a;
25505
25660
  return el ? (_a = el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : el.innerText : '';
25506
25661
  };
25507
- /**
25508
- * Render an element that overlays the column. This element is for assistive
25509
- * tech to allow users to navigate the column up/down. This element should receive
25510
- * focus as it listens for synthesized keyboard events as required by the
25511
- * slider role: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/slider_role
25512
- */
25513
- this.renderAssistiveFocusable = () => {
25514
- const { activeItem } = this;
25515
- const valueText = this.getOptionValueText(activeItem);
25516
- /**
25517
- * When using the picker, the valuetext provides important context that valuenow
25518
- * does not. Additionally, using non-zero valuemin/valuemax values can cause
25519
- * WebKit to incorrectly announce numeric valuetext values (such as a year
25520
- * like "2024") as percentages: https://bugs.webkit.org/show_bug.cgi?id=273126
25521
- */
25522
- return (hAsync("div", { ref: (el) => (this.assistiveFocusable = el), class: "assistive-focusable", role: "slider", tabindex: this.disabled ? undefined : 0, "aria-label": this.ariaLabel, "aria-valuemin": 0, "aria-valuemax": 0, "aria-valuenow": 0, "aria-valuetext": valueText, "aria-orientation": "vertical", onKeyDown: (ev) => this.onKeyDown(ev) }));
25523
- };
25524
25662
  }
25525
25663
  ariaLabelChanged(newValue) {
25526
25664
  this.ariaLabel = newValue;
@@ -25661,33 +25799,14 @@ class PickerColumn {
25661
25799
  render() {
25662
25800
  const { color, disabled, isActive, numericInput } = this;
25663
25801
  const mode = getIonMode$1(this);
25664
- return (hAsync(Host, { key: 'ea0280355b2f87895bf7dddd289ccf473aa759f3', class: createColorClasses$1(color, {
25802
+ return (hAsync(Host, { key: 'db903fd415f8a2d91994dececca481c1af8ba6a9', class: createColorClasses$1(color, {
25665
25803
  [mode]: true,
25666
25804
  ['picker-column-active']: isActive,
25667
25805
  ['picker-column-numeric-input']: numericInput,
25668
25806
  ['picker-column-disabled']: disabled,
25669
- }) }, this.renderAssistiveFocusable(), hAsync("slot", { key: '482992131cdeb85b1f61430d7fe1322a16345769', name: "prefix" }), hAsync("div", { key: '43f7f80d621d411ef366b3ca1396299e8c9a0c97', "aria-hidden": "true", class: "picker-opts", ref: (el) => {
25807
+ }) }, hAsync("slot", { key: '02ce9e1dd7df91afcd50b06416552bcffb5dec98', name: "prefix" }), hAsync("div", { key: '6dfd7d2429bec19244a6b1afb4448121963a031b', class: "picker-opts", ref: (el) => {
25670
25808
  this.scrollEl = el;
25671
- },
25672
- /**
25673
- * When an element has an overlay scroll style and
25674
- * a fixed height, Firefox will focus the scrollable
25675
- * container if the content exceeds the container's
25676
- * dimensions.
25677
- *
25678
- * This causes keyboard navigation to focus to this
25679
- * element instead of going to the next element in
25680
- * the tab order.
25681
- *
25682
- * The desired behavior is for the user to be able to
25683
- * focus the assistive focusable element and tab to
25684
- * the next element in the tab order. Instead of tabbing
25685
- * to this element.
25686
- *
25687
- * To prevent this, we set the tabIndex to -1. This
25688
- * will match the behavior of the other browsers.
25689
- */
25690
- tabIndex: -1 }, hAsync("div", { key: '13a9ee686132af32240710730765de4c0003a9e8', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'dbccba4920833cfcebe9b0fc763458ec3053705a', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '682b43f83a5ea2e46067457f3af118535e111edb', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", { key: 'd27e1e1dc0504b2f4627a29912a05bb91e8e413a' }), hAsync("div", { key: '61c948dbb9cf7469aed3018542bc0954211585ba', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'cf46c277fbee65e35ff44ce0d53ce12aa9cbf9db', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'bbc0e2d491d3f836ab849493ade2f7fa6ad9244e', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { key: 'd25cbbe14b2914fe7b878d43b4e3f4a8c8177d24', name: "suffix" })));
25809
+ }, role: "slider", tabindex: this.disabled ? undefined : 0, "aria-label": this.ariaLabel, "aria-valuemin": 0, "aria-valuemax": 0, "aria-valuenow": 0, "aria-valuetext": this.getOptionValueText(this.activeItem), "aria-orientation": "vertical", onKeyDown: (ev) => this.onKeyDown(ev) }, hAsync("div", { key: 'e30ce0b9cefbfe4d4441fa33acf595da31855c3f', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '8be2bd293c12c6ba720d9b31d0d561a96f42e97d', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '8afdcddddabbf646fbb55cb0ba4448309a2c1dd9', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", { key: '6aa0dacc34d6848575ad5b122b9046982308ca43' }), hAsync("div", { key: '92ec8a357414c1b779b11d1dd18fb87a7ee63982', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'b89457cb74b5907c25594ff6720ac54ca537e933', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '5bbc92e6bc24de08e39873bf08c5b668373ac0f8', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { key: 'd7bf2b519214f0f3576a4ca79844ad97827dd97f', name: "suffix" })));
25691
25810
  }
25692
25811
  get el() { return getElement(this); }
25693
25812
  static get watchers() { return {
@@ -26079,9 +26198,9 @@ const DECELERATION_FRICTION = 0.97;
26079
26198
  const MAX_PICKER_SPEED = 90;
26080
26199
  const TRANSITION_DURATION = 150;
26081
26200
 
26082
- const pickerColumnOptionIosCss = "button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) button{cursor:default}";
26201
+ const pickerColumnOptionIosCss = ".picker-column-option-button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) .picker-column-option-button{cursor:default}";
26083
26202
 
26084
- const pickerColumnOptionMdCss = "button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) button{cursor:default}:host(.option-active){color:var(--ion-color-base)}";
26203
+ const pickerColumnOptionMdCss = ".picker-column-option-button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) .picker-column-option-button{cursor:default}:host(.option-active){color:var(--ion-color-base)}";
26085
26204
 
26086
26205
  class PickerColumnOption {
26087
26206
  constructor(hostRef) {
@@ -26173,7 +26292,7 @@ class PickerColumnOption {
26173
26292
  return (hAsync(Host, { key: 'f816729941aabcb31ddfdce3ffe2e2139030d715', class: createColorClasses$1(color, {
26174
26293
  [mode]: true,
26175
26294
  ['option-disabled']: disabled,
26176
- }) }, hAsync("button", { key: '48dff7833bb60fc8331cd353a0885e6affa683d1', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: 'f9224d0e7b7aa6c05b29abfdcfe0f30ad6ee3141' }))));
26295
+ }) }, hAsync("div", { key: 'd942de84fd14d7dc06b1e5cf4f7920d1dc3c6371', class: 'picker-column-option-button', role: "button", "aria-label": ariaLabel, onClick: () => this.onClick() }, hAsync("slot", { key: 'b0df5717b42209e649097209a01476e1a66f5c5c' }))));
26177
26296
  }
26178
26297
  get el() { return getElement(this); }
26179
26298
  static get watchers() { return {
@@ -27601,10 +27720,10 @@ class Popover {
27601
27720
  "hasController": [4, "has-controller"],
27602
27721
  "delegate": [16],
27603
27722
  "overlayIndex": [2, "overlay-index"],
27604
- "enterAnimation": [16, "enter-animation"],
27605
- "leaveAnimation": [16, "leave-animation"],
27723
+ "enterAnimation": [16],
27724
+ "leaveAnimation": [16],
27606
27725
  "component": [1],
27607
- "componentProps": [16, "component-props"],
27726
+ "componentProps": [16],
27608
27727
  "keyboardClose": [4, "keyboard-close"],
27609
27728
  "cssClass": [1, "css-class"],
27610
27729
  "backdropDismiss": [4, "backdrop-dismiss"],
@@ -27612,7 +27731,7 @@ class Popover {
27612
27731
  "showBackdrop": [4, "show-backdrop"],
27613
27732
  "translucent": [4],
27614
27733
  "animated": [4],
27615
- "htmlAttributes": [16, "html-attributes"],
27734
+ "htmlAttributes": [16],
27616
27735
  "triggerAction": [1, "trigger-action"],
27617
27736
  "trigger": [1],
27618
27737
  "size": [1],
@@ -28907,7 +29026,7 @@ class Range {
28907
29026
  "min": [2],
28908
29027
  "max": [2],
28909
29028
  "pin": [4],
28910
- "pinFormatter": [16, "pin-formatter"],
29029
+ "pinFormatter": [16],
28911
29030
  "snaps": [4],
28912
29031
  "step": [2],
28913
29032
  "ticks": [4],
@@ -29332,6 +29451,14 @@ class Refresher {
29332
29451
  this.beginRefresh();
29333
29452
  this.didRefresh = true;
29334
29453
  hapticImpact({ style: ImpactStyle.Light });
29454
+ /**
29455
+ * Clear focus from any active element to prevent scroll jumps
29456
+ * when the refresh completes
29457
+ */
29458
+ const activeElement = document.activeElement;
29459
+ if ((activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur) !== undefined) {
29460
+ activeElement.blur();
29461
+ }
29335
29462
  /**
29336
29463
  * Translate the content element otherwise when pointer is removed
29337
29464
  * from screen the scroll content will bounce back over the refresher
@@ -29747,6 +29874,15 @@ class Refresher {
29747
29874
  this.state = 8 /* RefresherState.Refreshing */;
29748
29875
  // place the content in a hangout position while it thinks
29749
29876
  this.setCss(this.pullMin, this.snapbackDuration, true, '');
29877
+ /**
29878
+ * Clear focus from any active element to prevent the browser
29879
+ * from restoring focus and causing scroll jumps after refresh.
29880
+ * This ensures the view stays at the top after refresh completes.
29881
+ */
29882
+ const activeElement = document.activeElement;
29883
+ if ((activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur) !== undefined) {
29884
+ activeElement.blur();
29885
+ }
29750
29886
  // emit "refresh" because it was pulled down far enough
29751
29887
  // and they let go to begin refreshing
29752
29888
  this.ionRefresh.emit({
@@ -29829,7 +29965,7 @@ class Refresher {
29829
29965
  }
29830
29966
  render() {
29831
29967
  const mode = getIonMode$1(this);
29832
- return (hAsync(Host, { key: '8c7a5cc32da02a9cbeaa954258148683f60a6d1b', slot: "fixed", class: {
29968
+ return (hAsync(Host, { key: '2d1bd880877b698604542ab2d602d38b9504d975', slot: "fixed", class: {
29833
29969
  [mode]: true,
29834
29970
  // Used internally for styling
29835
29971
  [`refresher-${mode}`]: true,
@@ -30556,9 +30692,9 @@ class Route {
30556
30692
  "$members$": {
30557
30693
  "url": [1],
30558
30694
  "component": [1],
30559
- "componentProps": [16, "component-props"],
30560
- "beforeLeave": [16, "before-leave"],
30561
- "beforeEnter": [16, "before-enter"]
30695
+ "componentProps": [16],
30696
+ "beforeLeave": [16],
30697
+ "beforeEnter": [16]
30562
30698
  },
30563
30699
  "$listeners$": undefined,
30564
30700
  "$lazyBundleId$": "-",
@@ -31454,7 +31590,7 @@ class RouterLink {
31454
31590
  "href": [1],
31455
31591
  "rel": [1],
31456
31592
  "routerDirection": [1, "router-direction"],
31457
- "routerAnimation": [16, "router-animation"],
31593
+ "routerAnimation": [16],
31458
31594
  "target": [1]
31459
31595
  },
31460
31596
  "$listeners$": undefined,
@@ -31656,7 +31792,7 @@ class RouterOutlet {
31656
31792
  "delegate": [16],
31657
31793
  "animated": [4],
31658
31794
  "animation": [16],
31659
- "swipeHandler": [16, "swipe-handler"],
31795
+ "swipeHandler": [16],
31660
31796
  "commit": [64],
31661
31797
  "setRouteId": [64],
31662
31798
  "getRouteId": [64]
@@ -32957,7 +33093,8 @@ class SegmentView {
32957
33093
  handleScroll(ev) {
32958
33094
  var _a;
32959
33095
  const { scrollLeft, scrollWidth, clientWidth } = ev.target;
32960
- const scrollRatio = scrollLeft / (scrollWidth - clientWidth);
33096
+ const max = scrollWidth - clientWidth;
33097
+ const scrollRatio = (isRTL$1(this.el) ? -1 : 1) * (scrollLeft / max);
32961
33098
  this.ionSegmentViewScroll.emit({
32962
33099
  scrollRatio,
32963
33100
  isManualScroll: (_a = this.isManualScroll) !== null && _a !== void 0 ? _a : true,
@@ -33028,9 +33165,10 @@ class SegmentView {
33028
33165
  this.isManualScroll = false;
33029
33166
  this.resetScrollEndTimeout();
33030
33167
  const contentWidth = this.el.offsetWidth;
33168
+ const offset = index * contentWidth;
33031
33169
  this.el.scrollTo({
33032
33170
  top: 0,
33033
- left: index * contentWidth,
33171
+ left: (isRTL$1(this.el) ? -1 : 1) * offset,
33034
33172
  behavior: smoothScroll ? 'smooth' : 'instant',
33035
33173
  });
33036
33174
  }
@@ -33039,10 +33177,10 @@ class SegmentView {
33039
33177
  }
33040
33178
  render() {
33041
33179
  const { disabled, isManualScroll } = this;
33042
- return (hAsync(Host, { key: '754a374e89fd4dd682eb00497e717242a6f83357', class: {
33180
+ return (hAsync(Host, { key: 'e180b67bb3143a5f4611fb358c037be6fc782a8f', class: {
33043
33181
  'segment-view-disabled': disabled,
33044
33182
  'segment-view-scroll-disabled': isManualScroll === false,
33045
- } }, hAsync("slot", { key: '77366044eb61f0d4bba305bd6f0ef8fd1e25194b' })));
33183
+ } }, hAsync("slot", { key: '41c11d6a7406a10f5c64a2e73abfc072afd8fc73' })));
33046
33184
  }
33047
33185
  get el() { return getElement(this); }
33048
33186
  static get style() { return {
@@ -33107,6 +33245,10 @@ class Select {
33107
33245
  * is applied in both cases.
33108
33246
  */
33109
33247
  this.hasFocus = false;
33248
+ /**
33249
+ * Track validation state for proper aria-live announcements.
33250
+ */
33251
+ this.isInvalid = false;
33110
33252
  /**
33111
33253
  * The text to display on the cancel button.
33112
33254
  */
@@ -33229,9 +33371,12 @@ class Select {
33229
33371
  this.mutationO = watchForOptions(this.el, 'ion-select-option', async () => {
33230
33372
  this.updateOverlayOptions();
33231
33373
  });
33374
+ // Always set initial state
33375
+ this.isInvalid = checkInvalidState(this.el);
33232
33376
  }
33233
33377
  componentWillLoad() {
33234
33378
  this.inheritedAttributes = inheritAttributes$1(this.el, ['aria-label']);
33379
+ this.hintTextID = this.getHintTextID();
33235
33380
  }
33236
33381
  componentDidLoad() {
33237
33382
  /**
@@ -33255,6 +33400,11 @@ class Select {
33255
33400
  this.notchController.destroy();
33256
33401
  this.notchController = undefined;
33257
33402
  }
33403
+ // Clean up validation observer to prevent memory leaks.
33404
+ if (this.validationObserver) {
33405
+ this.validationObserver.disconnect();
33406
+ this.validationObserver = undefined;
33407
+ }
33258
33408
  }
33259
33409
  /**
33260
33410
  * Open the select overlay. The overlay is either an alert, action sheet, or popover,
@@ -33725,11 +33875,11 @@ class Select {
33725
33875
  }
33726
33876
  renderListbox() {
33727
33877
  const { disabled, inputId, isExpanded, required } = this;
33728
- return (hAsync("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId, "aria-required": `${required}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
33878
+ return (hAsync("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, "aria-describedby": this.hintTextID, "aria-invalid": this.isInvalid ? 'true' : undefined, "aria-required": `${required}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
33729
33879
  }
33730
33880
  getHintTextID() {
33731
- const { el, helperText, errorText, helperTextId, errorTextId } = this;
33732
- if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
33881
+ const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
33882
+ if (isInvalid && errorText) {
33733
33883
  return errorTextId;
33734
33884
  }
33735
33885
  if (helperText) {
@@ -33741,10 +33891,10 @@ class Select {
33741
33891
  * Renders the helper text or error text values
33742
33892
  */
33743
33893
  renderHintText() {
33744
- const { helperText, errorText, helperTextId, errorTextId } = this;
33894
+ const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
33745
33895
  return [
33746
- hAsync("div", { id: helperTextId, class: "helper-text", part: "supporting-text helper-text" }, helperText),
33747
- hAsync("div", { id: errorTextId, class: "error-text", part: "supporting-text error-text" }, errorText),
33896
+ hAsync("div", { id: helperTextId, class: "helper-text", part: "supporting-text helper-text", "aria-live": "polite" }, !isInvalid ? helperText : null),
33897
+ hAsync("div", { id: errorTextId, class: "error-text", part: "supporting-text error-text", role: "alert" }, isInvalid ? errorText : null),
33748
33898
  ];
33749
33899
  }
33750
33900
  /**
@@ -33792,7 +33942,7 @@ class Select {
33792
33942
  * TODO(FW-5592): Remove hasStartEndSlots condition
33793
33943
  */
33794
33944
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
33795
- return (hAsync(Host, { key: 'c03fb65e8fc9f9aab295e07b282377d57d910519', onClick: this.onClick, class: createColorClasses$1(this.color, {
33945
+ return (hAsync(Host, { key: '35b5e18e6f79a802ff2d46d1242e80ff755cc0b9', onClick: this.onClick, class: createColorClasses$1(this.color, {
33796
33946
  [mode]: true,
33797
33947
  'in-item': inItem,
33798
33948
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -33810,7 +33960,7 @@ class Select {
33810
33960
  [`select-justify-${justify}`]: justifyEnabled,
33811
33961
  [`select-shape-${shape}`]: shape !== undefined,
33812
33962
  [`select-label-placement-${labelPlacement}`]: true,
33813
- }) }, hAsync("label", { key: '0d0c8ec55269adcac625f2899a547f4e7f3e3741', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: 'f6dfc93c0e23cbe75a2947abde67d842db2dad78', class: "select-wrapper-inner" }, hAsync("slot", { key: '957bfadf9f101f519091419a362d3abdc2be66f6', name: "start" }), hAsync("div", { key: 'ca349202a484e7f2e884533fd330f0b136754f7d', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: 'f0e62a6533ff1c8f62bd2d27f60b23385c4fa9ed', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: 'fb840d46bafafb09898ebeebbe8c181906a3d8a2', class: "select-highlight" })), this.renderBottomContent()));
33963
+ }) }, hAsync("label", { key: '6005b34a0c50bc4d7653a4276bc232ecd02e083c', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: 'c7e07aa81ae856c057f16275dd058f37c5670a47', class: "select-wrapper-inner" }, hAsync("slot", { key: '7fc2deefe0424404caacdbbd9e08ed43ba55d28a', name: "start" }), hAsync("div", { key: '157d74ee717b1bc30b5f1c233a09b0c8456aa68e', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: 'ea66db304528b82bf9317730b6dce3db2612f235', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: '786eb1530b7476f0615d4e7c0bf4e7e4dc66509c', class: "select-highlight" })), this.renderBottomContent()));
33814
33964
  }
33815
33965
  get el() { return getElement(this); }
33816
33966
  static get watchers() { return {
@@ -33851,6 +34001,8 @@ class Select {
33851
34001
  "required": [4],
33852
34002
  "isExpanded": [32],
33853
34003
  "hasFocus": [32],
34004
+ "isInvalid": [32],
34005
+ "hintTextID": [32],
33854
34006
  "open": [64]
33855
34007
  },
33856
34008
  "$listeners$": undefined,
@@ -34435,6 +34587,7 @@ class TabBar {
34435
34587
  this.ionTabBarChanged = createEvent(this, "ionTabBarChanged", 7);
34436
34588
  this.ionTabBarLoaded = createEvent(this, "ionTabBarLoaded", 7);
34437
34589
  this.keyboardCtrl = null;
34590
+ this.didLoad = false;
34438
34591
  this.keyboardVisible = false;
34439
34592
  /**
34440
34593
  * If `true`, the tab bar will be translucent.
@@ -34444,14 +34597,29 @@ class TabBar {
34444
34597
  this.translucent = false;
34445
34598
  }
34446
34599
  selectedTabChanged() {
34600
+ // Skip the initial watcher call that happens during component load
34601
+ // We handle that in componentDidLoad to ensure children are ready
34602
+ if (!this.didLoad) {
34603
+ return;
34604
+ }
34447
34605
  if (this.selectedTab !== undefined) {
34448
34606
  this.ionTabBarChanged.emit({
34449
34607
  tab: this.selectedTab,
34450
34608
  });
34451
34609
  }
34452
34610
  }
34453
- componentWillLoad() {
34454
- this.selectedTabChanged();
34611
+ componentDidLoad() {
34612
+ this.ionTabBarLoaded.emit();
34613
+ // Set the flag to indicate the component has loaded
34614
+ // This allows the watcher to emit changes from this point forward
34615
+ this.didLoad = true;
34616
+ // Emit the initial selected tab after the component is fully loaded
34617
+ // This ensures all child components (ion-tab-button) are ready
34618
+ if (this.selectedTab !== undefined) {
34619
+ this.ionTabBarChanged.emit({
34620
+ tab: this.selectedTab,
34621
+ });
34622
+ }
34455
34623
  }
34456
34624
  async connectedCallback() {
34457
34625
  this.keyboardCtrl = await createKeyboardController(async (keyboardOpen, waitForResize) => {
@@ -34471,18 +34639,15 @@ class TabBar {
34471
34639
  this.keyboardCtrl.destroy();
34472
34640
  }
34473
34641
  }
34474
- componentDidLoad() {
34475
- this.ionTabBarLoaded.emit();
34476
- }
34477
34642
  render() {
34478
34643
  const { color, translucent, keyboardVisible } = this;
34479
34644
  const mode = getIonMode$1(this);
34480
34645
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
34481
- return (hAsync(Host, { key: '275dc6c1b30f6928ce9039b2f445208bb3500ddc', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
34646
+ return (hAsync(Host, { key: '388ec37ce308035bab78d6c9a016bb616e9517a9', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
34482
34647
  [mode]: true,
34483
34648
  'tab-bar-translucent': translucent,
34484
34649
  'tab-bar-hidden': shouldHide,
34485
- }) }, hAsync("slot", { key: 'ceac20128d75c6a4a0f445f2df8deb8cc71fc4da' })));
34650
+ }) }, hAsync("slot", { key: 'ce10ade2b86725e24f3254516483eeedd8ecb16a' })));
34486
34651
  }
34487
34652
  get el() { return getElement(this); }
34488
34653
  static get watchers() { return {
@@ -34667,29 +34832,27 @@ class Tabs {
34667
34832
  }
34668
34833
  this.ionNavWillLoad.emit();
34669
34834
  }
34670
- componentWillRender() {
34835
+ componentDidLoad() {
34836
+ this.updateTabBar();
34837
+ }
34838
+ componentDidUpdate() {
34839
+ this.updateTabBar();
34840
+ }
34841
+ updateTabBar() {
34671
34842
  const tabBar = this.el.querySelector('ion-tab-bar');
34672
- if (tabBar) {
34673
- let tab = this.selectedTab ? this.selectedTab.tab : undefined;
34674
- // Fallback: if no selectedTab is set but we're using router mode,
34675
- // determine the active tab from the current URL. This works around
34676
- // timing issues in React Router integration where setRouteId may not
34677
- // be called in time for the initial render.
34678
- // TODO(FW-6724): Remove this with React Router upgrade
34679
- if (!tab && this.useRouter && typeof window !== 'undefined') {
34680
- const currentPath = window.location.pathname;
34681
- const tabButtons = this.el.querySelectorAll('ion-tab-button');
34682
- // Look for a tab button that matches the current path pattern
34683
- for (const tabButton of tabButtons) {
34684
- const tabId = tabButton.getAttribute('tab');
34685
- if (tabId && currentPath.includes(tabId)) {
34686
- tab = tabId;
34687
- break;
34688
- }
34689
- }
34690
- }
34691
- tabBar.selectedTab = tab;
34843
+ if (!tabBar) {
34844
+ return;
34692
34845
  }
34846
+ const tab = this.selectedTab ? this.selectedTab.tab : undefined;
34847
+ // If tabs has no selected tab but tab-bar already has a selected-tab set,
34848
+ // don't overwrite it. This handles cases where tab-bar is used without ion-tab elements.
34849
+ if (tab === undefined) {
34850
+ return;
34851
+ }
34852
+ if (tabBar.selectedTab === tab) {
34853
+ return;
34854
+ }
34855
+ tabBar.selectedTab = tab;
34693
34856
  }
34694
34857
  /**
34695
34858
  * Select a tab by the value of its `tab` property or an element reference. This method is only available for vanilla JavaScript projects. The Angular, React, and Vue implementations of tabs are coupled to each framework's router.
@@ -34748,6 +34911,7 @@ class Tabs {
34748
34911
  this.selectedTab = selectedTab;
34749
34912
  this.ionTabsWillChange.emit({ tab: selectedTab.tab });
34750
34913
  selectedTab.active = true;
34914
+ this.updateTabBar();
34751
34915
  return Promise.resolve();
34752
34916
  }
34753
34917
  tabSwitch() {
@@ -34782,7 +34946,7 @@ class Tabs {
34782
34946
  return Array.from(this.el.querySelectorAll('ion-tab'));
34783
34947
  }
34784
34948
  render() {
34785
- return (hAsync(Host, { key: '6dd1d17cc5a7aff4b910303006b4478080ca97af', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: 'db54a692d1a825498a116f090eb305f7cceceb5a', name: "top" }), hAsync("div", { key: 'e1b7d49ba7032e9071de2029695254e2a8303be9', class: "tabs-inner" }, hAsync("slot", { key: '4c3b58d5292c8c834e7532c51de0861068943d79' })), hAsync("slot", { key: 'dd59c0b9b217dfbfb0fccdbc6896b593278549cc', name: "bottom" })));
34949
+ return (hAsync(Host, { key: '7b4b302f2942d8d131f6fc24e817989a8be08867', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: '2c51cf14c0f17a8ddf2d879858c984cdf8fd3147', name: "top" }), hAsync("div", { key: '7e9d6055092d41bd9bc80ae15965f77e216feb84', class: "tabs-inner" }, hAsync("slot", { key: 'c308a787e37ff7f6653531d70deca597a7602d26' })), hAsync("slot", { key: 'd5f5e693710c853570811602f859cf3e88272684', name: "bottom" })));
34786
34950
  }
34787
34951
  get el() { return getElement(this); }
34788
34952
  static get style() { return tabsCss; }
@@ -34877,6 +35041,10 @@ class Textarea {
34877
35041
  * is applied in both cases.
34878
35042
  */
34879
35043
  this.hasFocus = false;
35044
+ /**
35045
+ * Track validation state for proper aria-live announcements
35046
+ */
35047
+ this.isInvalid = false;
34880
35048
  /**
34881
35049
  * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.
34882
35050
  * Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`.
@@ -35026,6 +35194,8 @@ class Textarea {
35026
35194
  const { el } = this;
35027
35195
  this.slotMutationController = createSlotMutationController(el, ['label', 'start', 'end'], () => forceUpdate());
35028
35196
  this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
35197
+ // Always set initial state
35198
+ this.isInvalid = checkInvalidState(this.el);
35029
35199
  this.debounceChanged();
35030
35200
  }
35031
35201
  disconnectedCallback() {
@@ -35037,6 +35207,11 @@ class Textarea {
35037
35207
  this.notchController.destroy();
35038
35208
  this.notchController = undefined;
35039
35209
  }
35210
+ // Clean up validation observer to prevent memory leaks
35211
+ if (this.validationObserver) {
35212
+ this.validationObserver.disconnect();
35213
+ this.validationObserver = undefined;
35214
+ }
35040
35215
  }
35041
35216
  componentWillLoad() {
35042
35217
  this.inheritedAttributes = Object.assign(Object.assign({}, inheritAriaAttributes(this.el)), inheritAttributes$1(this.el, ['data-form-type', 'title', 'tabindex', 'dir']));
@@ -35207,15 +35382,15 @@ class Textarea {
35207
35382
  * Renders the helper text or error text values
35208
35383
  */
35209
35384
  renderHintText() {
35210
- const { helperText, errorText, helperTextId, errorTextId } = this;
35385
+ const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
35211
35386
  return [
35212
- hAsync("div", { id: helperTextId, class: "helper-text" }, helperText),
35213
- hAsync("div", { id: errorTextId, class: "error-text" }, errorText),
35387
+ hAsync("div", { id: helperTextId, class: "helper-text", "aria-live": "polite" }, !isInvalid ? helperText : null),
35388
+ hAsync("div", { id: errorTextId, class: "error-text", role: "alert" }, isInvalid ? errorText : null),
35214
35389
  ];
35215
35390
  }
35216
35391
  getHintTextID() {
35217
- const { el, helperText, errorText, helperTextId, errorTextId } = this;
35218
- if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
35392
+ const { isInvalid, helperText, errorText, helperTextId, errorTextId } = this;
35393
+ if (isInvalid && errorText) {
35219
35394
  return errorTextId;
35220
35395
  }
35221
35396
  if (helperText) {
@@ -35274,7 +35449,7 @@ class Textarea {
35274
35449
  * TODO(FW-5592): Remove hasStartEndSlots condition
35275
35450
  */
35276
35451
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
35277
- return (hAsync(Host, { key: 'd9f2ede0107987fc42c99e310cd2336bad5a5755', class: createColorClasses$1(this.color, {
35452
+ return (hAsync(Host, { key: 'a70a62d7aae3831a50acd74f60b930925ada1326', class: createColorClasses$1(this.color, {
35278
35453
  [mode]: true,
35279
35454
  'has-value': hasValue,
35280
35455
  'has-focus': hasFocus,
@@ -35283,7 +35458,7 @@ class Textarea {
35283
35458
  [`textarea-shape-${shape}`]: shape !== undefined,
35284
35459
  [`textarea-label-placement-${labelPlacement}`]: true,
35285
35460
  'textarea-disabled': disabled,
35286
- }) }, hAsync("label", { key: '9de598b95237462bb3bccffaefe83afbb43554b8', class: "textarea-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: 'e33c426c6541d723ccc246bb404c03687726ff83', class: "textarea-wrapper-inner" }, hAsync("div", { key: '521e11af9d54d281b0a2b1c25bcfc6f742c18296', class: "start-slot-wrapper" }, hAsync("slot", { key: '515523f6ca3ce0e5dd08f3275c21a190fb1ca177', name: "start" })), hAsync("div", { key: '916e01e00de8400ae00ef06bc1fb62d8be2eee08', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '810271e6532d90e27dab1fcb26546113c1ce9cb0', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId }, this.inheritedAttributes), value)), hAsync("div", { key: '80aca9ea9546dca9d38efd291a6b0be384bb6978', class: "end-slot-wrapper" }, hAsync("slot", { key: '407fab16c66a9f4a542369bfecc0d9afa0065977', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: 'f00523a6698fac8a1996e04303487bef01d10f25', class: "textarea-highlight" })), this.renderBottomContent()));
35461
+ }) }, hAsync("label", { key: '8a2dd59a60f7469df84018eb0ede3a9ec3862703', class: "textarea-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: '1bfc368236e3da7a225a45118c27fbfc1fe5fa46', class: "textarea-wrapper-inner" }, hAsync("div", { key: '215cbb2635ff52e31a8973376989b85e7245d40f', class: "start-slot-wrapper" }, hAsync("slot", { key: '9f6b461cdee9d629deb695d2bea054ece2f32305', name: "start" })), hAsync("div", { key: 'c1af35a2d5bc452bebe0b22a26d15ff52b4e9fc8', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '69a69b3cf0932baafbe37e6e846f1a571608d3f2', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined }, this.inheritedAttributes), value)), hAsync("div", { key: 'c053ea8b865d0e29763aed2e4939cc9c9e374c15', class: "end-slot-wrapper" }, hAsync("slot", { key: '930aa641833b0df54b9ea10368fc2f46d5f491f6', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: '8d12597d15f5f429d80e8272ea99e64ed924e482', class: "textarea-highlight" })), this.renderBottomContent()));
35287
35462
  }
35288
35463
  get el() { return getElement(this); }
35289
35464
  static get watchers() { return {
@@ -35321,13 +35496,14 @@ class Textarea {
35321
35496
  "autoGrow": [516, "auto-grow"],
35322
35497
  "value": [1025],
35323
35498
  "counter": [4],
35324
- "counterFormatter": [16, "counter-formatter"],
35499
+ "counterFormatter": [16],
35325
35500
  "errorText": [1, "error-text"],
35326
35501
  "helperText": [1, "helper-text"],
35327
35502
  "label": [1],
35328
35503
  "labelPlacement": [1, "label-placement"],
35329
35504
  "shape": [1],
35330
35505
  "hasFocus": [32],
35506
+ "isInvalid": [32],
35331
35507
  "setFocus": [64],
35332
35508
  "getInputElement": [64]
35333
35509
  },
@@ -36225,8 +36401,8 @@ class Toast {
36225
36401
  "delegate": [16],
36226
36402
  "hasController": [4, "has-controller"],
36227
36403
  "color": [513],
36228
- "enterAnimation": [16, "enter-animation"],
36229
- "leaveAnimation": [16, "leave-animation"],
36404
+ "enterAnimation": [16],
36405
+ "leaveAnimation": [16],
36230
36406
  "cssClass": [1, "css-class"],
36231
36407
  "duration": [2],
36232
36408
  "header": [1],
@@ -36239,7 +36415,7 @@ class Toast {
36239
36415
  "translucent": [4],
36240
36416
  "animated": [4],
36241
36417
  "icon": [1],
36242
- "htmlAttributes": [16, "html-attributes"],
36418
+ "htmlAttributes": [16],
36243
36419
  "swipeGesture": [1, "swipe-gesture"],
36244
36420
  "isOpen": [4, "is-open"],
36245
36421
  "trigger": [1],
@@ -36404,7 +36580,6 @@ class Toggle {
36404
36580
  const { checked, value } = this;
36405
36581
  const isNowChecked = !checked;
36406
36582
  this.checked = isNowChecked;
36407
- this.setFocus();
36408
36583
  this.ionChange.emit({
36409
36584
  checked: isNowChecked,
36410
36585
  value,
@@ -36455,9 +36630,7 @@ class Toggle {
36455
36630
  return this.value || '';
36456
36631
  }
36457
36632
  setFocus() {
36458
- if (this.focusEl) {
36459
- this.focusEl.focus();
36460
- }
36633
+ this.el.focus();
36461
36634
  }
36462
36635
  renderOnOffSwitchLabels(mode, checked) {
36463
36636
  const icon = this.getSwitchLabelIcon(mode, checked);
@@ -36507,7 +36680,7 @@ class Toggle {
36507
36680
  const value = this.getValue();
36508
36681
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
36509
36682
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
36510
- return (hAsync(Host, { key: '21037ea2e8326f58c84becadde475f007f931924', role: "switch", "aria-checked": `${checked}`, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === errorTextId, onClick: this.onClick, "aria-labelledby": hasLabel ? inputLabelId : null, "aria-label": inheritedAttributes['aria-label'] || null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? undefined : 0, onKeyDown: this.onKeyDown, class: createColorClasses$1(color, {
36683
+ return (hAsync(Host, { key: '17bbbc8d229868e5c872b2bc5a3faf579780c5e0', role: "switch", "aria-checked": `${checked}`, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === errorTextId, onClick: this.onClick, "aria-labelledby": hasLabel ? inputLabelId : null, "aria-label": inheritedAttributes['aria-label'] || null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? undefined : 0, onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, class: createColorClasses$1(color, {
36511
36684
  [mode]: true,
36512
36685
  'in-item': hostContext('ion-item', el),
36513
36686
  'toggle-activated': activated,
@@ -36517,10 +36690,10 @@ class Toggle {
36517
36690
  [`toggle-alignment-${alignment}`]: alignment !== undefined,
36518
36691
  [`toggle-label-placement-${labelPlacement}`]: true,
36519
36692
  [`toggle-${rtl}`]: true,
36520
- }) }, hAsync("label", { key: '4d153679d118d01286f6633d1c19558a97745ff6', class: "toggle-wrapper", htmlFor: inputId }, hAsync("input", Object.assign({ key: '0dfcd4df15b8d41bec5ff5f8912503afbb7bec53', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl), required: required }, inheritedAttributes)), hAsync("div", { key: 'ffed3a07ba2ab70e5b232e6041bc3b6b34be8331', class: {
36693
+ }) }, hAsync("label", { key: '673625b62a2c909e95dccb642c91312967a6cd1c', class: "toggle-wrapper", htmlFor: inputId }, hAsync("input", Object.assign({ key: '7dc3f357b4708116663970047765da9f8f845bf0', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, required: required }, inheritedAttributes)), hAsync("div", { key: '8f1c6a182031e8cbc6727e5f4ac0e00ad4247447', class: {
36521
36694
  'label-text-wrapper': true,
36522
36695
  'label-text-wrapper-hidden': !hasLabel,
36523
- }, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: 'd88e1e3dcdd8293f6b61f237cd7a0511dcbce300' }), this.renderHintText()), hAsync("div", { key: '0e924225f5f0caf3c88738acb6c557bd8c1b68f6', class: "native-wrapper" }, this.renderToggleControl()))));
36696
+ }, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: '8322b9d54dc7edeb4e16fefcde9f7ebca8d5c3e1' }), this.renderHintText()), hAsync("div", { key: 'fe6984143db817a7b3020a3f57cf5418fc3dcc0e', class: "native-wrapper" }, this.renderToggleControl()))));
36524
36697
  }
36525
36698
  get el() { return getElement(this); }
36526
36699
  static get watchers() { return {
@@ -37655,7 +37828,7 @@ var BUILD = {
37655
37828
  vdomRender: true,
37656
37829
  vdomStyle: true,
37657
37830
  vdomText: true,
37658
- watchCallback: true,
37831
+ propChangeCallback: true,
37659
37832
  taskQueue: true,
37660
37833
  hotModuleReplacement: false,
37661
37834
  isDebug: false,
@@ -37703,7 +37876,7 @@ var NAMESPACE = (
37703
37876
  );
37704
37877
 
37705
37878
  /*
37706
- Stencil Hydrate Runner v4.36.2 | MIT Licensed | https://stenciljs.com
37879
+ Stencil Hydrate Runner v4.38.0 | MIT Licensed | https://stenciljs.com
37707
37880
  */
37708
37881
  var __defProp = Object.defineProperty;
37709
37882
  var __export = (target, all) => {
@@ -52380,6 +52553,9 @@ var _colonHostContextRe = createSupportsRuleRe(":host-context");
52380
52553
  var setMode = (handler) => modeResolutionChain.push(handler);
52381
52554
  var CAPTURE_EVENT_SUFFIX = "Capture";
52382
52555
  var CAPTURE_EVENT_REGEX = new RegExp(CAPTURE_EVENT_SUFFIX + "$");
52556
+ var baseClass = BUILD.lazyLoad ? class {
52557
+ } : globalThis.HTMLElement || class {
52558
+ };
52383
52559
 
52384
52560
  // src/compiler/html/canonical-link.ts
52385
52561
  var updateCanonicalLink = (doc, href) => {