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.js CHANGED
@@ -392,7 +392,7 @@ const initialize = (userConfig = {}) => {
392
392
  const globalScripts = initialize;
393
393
 
394
394
  /*
395
- Stencil Hydrate Platform v4.36.2 | MIT Licensed | https://stenciljs.com
395
+ Stencil Hydrate Platform v4.38.0 | MIT Licensed | https://stenciljs.com
396
396
  */
397
397
  var __defProp = Object.defineProperty;
398
398
  var __export = (target, all) => {
@@ -990,7 +990,7 @@ var convertToPrivate = (node) => {
990
990
 
991
991
  // src/runtime/client-hydrate.ts
992
992
  var initializeClientHydrate = (hostElm, tagName, hostId, hostRef) => {
993
- var _a, _b, _c;
993
+ var _a, _b;
994
994
  const endHydrate = createTime("hydrateClient", tagName);
995
995
  const shadowRoot = hostElm.shadowRoot;
996
996
  const childRenderNodes = [];
@@ -999,21 +999,6 @@ var initializeClientHydrate = (hostElm, tagName, hostId, hostRef) => {
999
999
  const shadowRootNodes = shadowRoot ? [] : null;
1000
1000
  const vnode = newVNode(tagName, null);
1001
1001
  vnode.$elm$ = hostElm;
1002
- const members = Object.entries(((_a = hostRef.$cmpMeta$) == null ? void 0 : _a.$members$) || {});
1003
- members.forEach(([memberName, [memberFlags, metaAttributeName]]) => {
1004
- var _b2;
1005
- if (!(memberFlags & 31 /* Prop */)) {
1006
- return;
1007
- }
1008
- const attributeName = metaAttributeName || memberName;
1009
- const attrVal = hostElm.getAttribute(attributeName);
1010
- if (attrVal !== null) {
1011
- const attrPropVal = parsePropertyValue(
1012
- attrVal,
1013
- memberFlags);
1014
- (_b2 = hostRef == null ? void 0 : hostRef.$instanceValues$) == null ? void 0 : _b2.set(memberName, attrPropVal);
1015
- }
1016
- });
1017
1002
  let scopeId2;
1018
1003
  {
1019
1004
  const cmpMeta = hostRef.$cmpMeta$;
@@ -1052,7 +1037,7 @@ var initializeClientHydrate = (hostElm, tagName, hostId, hostRef) => {
1052
1037
  if (childRenderNode.$tag$ === "slot") {
1053
1038
  node["s-cr"] = hostElm["s-cr"];
1054
1039
  }
1055
- } else if (((_b = childRenderNode.$tag$) == null ? void 0 : _b.toString().includes("-")) && childRenderNode.$tag$ !== "slot-fb" && !childRenderNode.$elm$.shadowRoot) {
1040
+ } else if (((_a = childRenderNode.$tag$) == null ? void 0 : _a.toString().includes("-")) && childRenderNode.$tag$ !== "slot-fb" && !childRenderNode.$elm$.shadowRoot) {
1056
1041
  const cmpMeta = getHostRef(childRenderNode.$elm$);
1057
1042
  if (cmpMeta) {
1058
1043
  const scopeId3 = getScopeId(
@@ -1123,7 +1108,7 @@ var initializeClientHydrate = (hostElm, tagName, hostId, hostRef) => {
1123
1108
  }
1124
1109
  }
1125
1110
  addSlotRelocateNode(slottedItem.node, slottedItem.slot, false, slottedItem.node["s-oo"]);
1126
- if (((_c = slottedItem.node.parentElement) == null ? void 0 : _c.shadowRoot) && slottedItem.node["getAttribute"] && slottedItem.node.getAttribute("slot")) {
1111
+ if (((_b = slottedItem.node.parentElement) == null ? void 0 : _b.shadowRoot) && slottedItem.node["getAttribute"] && slottedItem.node.getAttribute("slot")) {
1127
1112
  slottedItem.node.removeAttribute("slot");
1128
1113
  }
1129
1114
  }
@@ -1839,12 +1824,6 @@ var parsePropertyValue = (propValue, propType, isFormAssociated) => {
1839
1824
  propValue = deserializeProperty(propValue);
1840
1825
  return propValue;
1841
1826
  }
1842
- if (typeof propValue === "string" && (propType & 16 /* Unknown */ || propType & 8 /* Any */) && (propValue.startsWith("{") && propValue.endsWith("}") || propValue.startsWith("[") && propValue.endsWith("]"))) {
1843
- try {
1844
- return JSON.parse(propValue);
1845
- } catch (e) {
1846
- }
1847
- }
1848
1827
  if (propValue != null && !isComplexType(propValue)) {
1849
1828
  if (propType & 4 /* Boolean */) {
1850
1829
  {
@@ -2440,9 +2419,11 @@ var renderVdom = (hostRef, renderFnResults, isInitialLoad = false) => {
2440
2419
  hostTagName = hostElm.tagName;
2441
2420
  if (cmpMeta.$attrsToReflect$) {
2442
2421
  rootVnode.$attrs$ = rootVnode.$attrs$ || {};
2443
- cmpMeta.$attrsToReflect$.map(
2444
- ([propName, attribute]) => rootVnode.$attrs$[attribute] = hostElm[propName]
2445
- );
2422
+ cmpMeta.$attrsToReflect$.forEach(([propName, attribute]) => {
2423
+ {
2424
+ rootVnode.$attrs$[attribute] = hostElm[propName];
2425
+ }
2426
+ });
2446
2427
  }
2447
2428
  if (isInitialLoad && rootVnode.$attrs$) {
2448
2429
  for (const key of Object.keys(rootVnode.$attrs$)) {
@@ -2570,10 +2551,15 @@ var dispatchHooks = (hostRef, isInitialLoad) => {
2570
2551
  let maybePromise;
2571
2552
  if (isInitialLoad) {
2572
2553
  {
2573
- hostRef.$flags$ |= 256 /* isListenReady */;
2574
- if (hostRef.$queuedListeners$) {
2575
- hostRef.$queuedListeners$.map(([methodName, event]) => safeCall$1(instance, methodName, event, elm));
2576
- hostRef.$queuedListeners$ = void 0;
2554
+ {
2555
+ hostRef.$flags$ |= 256 /* isListenReady */;
2556
+ if (hostRef.$queuedListeners$) {
2557
+ hostRef.$queuedListeners$.map(([methodName, event]) => safeCall$1(instance, methodName, event, elm));
2558
+ hostRef.$queuedListeners$ = void 0;
2559
+ }
2560
+ }
2561
+ if (hostRef.$fetchedCbList$.length) {
2562
+ hostRef.$fetchedCbList$.forEach((cb) => cb(elm));
2577
2563
  }
2578
2564
  }
2579
2565
  maybePromise = safeCall$1(instance, "componentWillLoad", void 0, elm);
@@ -2786,9 +2772,17 @@ var setValue = (ref, propName, newVal, cmpMeta) => {
2786
2772
  var proxyComponent = (Cstr, cmpMeta, flags) => {
2787
2773
  var _a;
2788
2774
  const prototype = Cstr.prototype;
2789
- if (cmpMeta.$members$ || (cmpMeta.$watchers$ || Cstr.watchers)) {
2790
- if (Cstr.watchers && !cmpMeta.$watchers$) {
2791
- cmpMeta.$watchers$ = Cstr.watchers;
2775
+ {
2776
+ {
2777
+ if (Cstr.watchers && !cmpMeta.$watchers$) {
2778
+ cmpMeta.$watchers$ = Cstr.watchers;
2779
+ }
2780
+ if (Cstr.deserializers && !cmpMeta.$deserializers$) {
2781
+ cmpMeta.$deserializers$ = Cstr.deserializers;
2782
+ }
2783
+ if (Cstr.serializers && !cmpMeta.$serializers$) {
2784
+ cmpMeta.$serializers$ = Cstr.serializers;
2785
+ }
2792
2786
  }
2793
2787
  const members = Object.entries((_a = cmpMeta.$members$) != null ? _a : {});
2794
2788
  members.map(([memberName, [memberFlags]]) => {
@@ -2823,8 +2817,6 @@ var proxyComponent = (Cstr, cmpMeta, flags) => {
2823
2817
  const currentValue = memberFlags & 32 /* State */ ? this[memberName] : ref.$hostElement$[memberName];
2824
2818
  if (typeof currentValue === "undefined" && ref.$instanceValues$.get(memberName)) {
2825
2819
  newValue = ref.$instanceValues$.get(memberName);
2826
- } else if (!ref.$instanceValues$.get(memberName) && currentValue) {
2827
- ref.$instanceValues$.set(memberName, currentValue);
2828
2820
  }
2829
2821
  origSetter.apply(this, [
2830
2822
  parsePropertyValue(
@@ -2870,6 +2862,8 @@ var initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {
2870
2862
  if (!Cstr.isProxied) {
2871
2863
  {
2872
2864
  cmpMeta.$watchers$ = Cstr.watchers;
2865
+ cmpMeta.$serializers$ = Cstr.serializers;
2866
+ cmpMeta.$deserializers$ = Cstr.deserializers;
2873
2867
  }
2874
2868
  proxyComponent(Cstr, cmpMeta);
2875
2869
  Cstr.isProxied = true;
@@ -3209,6 +3203,9 @@ var hAsync = (nodeName, vnodeData, ...children) => {
3209
3203
  // src/hydrate/platform/proxy-host-element.ts
3210
3204
  function proxyHostElement(elm, cstr) {
3211
3205
  const cmpMeta = cstr.cmpMeta;
3206
+ cmpMeta.$watchers$ = cmpMeta.$watchers$ || cstr.watchers;
3207
+ cmpMeta.$deserializers$ = cmpMeta.$deserializers$ || cstr.deserializers;
3208
+ cmpMeta.$serializers$ = cmpMeta.$serializers$ || cstr.serializers;
3212
3209
  if (typeof elm.componentOnReady !== "function") {
3213
3210
  elm.componentOnReady = componentOnReady$1;
3214
3211
  }
@@ -3222,7 +3219,7 @@ function proxyHostElement(elm, cstr) {
3222
3219
  const hostRef = getHostRef(elm);
3223
3220
  const members = Object.entries(cmpMeta.$members$);
3224
3221
  members.forEach(([memberName, [memberFlags, metaAttributeName]]) => {
3225
- var _a;
3222
+ var _a, _b;
3226
3223
  if (memberFlags & 31 /* Prop */) {
3227
3224
  const attributeName = metaAttributeName || memberName;
3228
3225
  const attrValue = elm.getAttribute(attributeName);
@@ -3230,7 +3227,13 @@ function proxyHostElement(elm, cstr) {
3230
3227
  let attrPropVal;
3231
3228
  const { get: origGetter, set: origSetter } = Object.getOwnPropertyDescriptor(cstr.prototype, memberName) || {};
3232
3229
  if (attrValue != null) {
3233
- attrPropVal = parsePropertyValue(attrValue, memberFlags);
3230
+ if ((_a = cmpMeta.$deserializers$) == null ? void 0 : _a[memberName]) {
3231
+ for (const methodName of cmpMeta.$deserializers$[memberName]) {
3232
+ attrPropVal = cstr.prototype[methodName](attrValue, memberName);
3233
+ }
3234
+ } else {
3235
+ attrPropVal = parsePropertyValue(attrValue, memberFlags);
3236
+ }
3234
3237
  }
3235
3238
  if (propValue !== void 0) {
3236
3239
  attrPropVal = propValue;
@@ -3241,7 +3244,7 @@ function proxyHostElement(elm, cstr) {
3241
3244
  origSetter.apply(elm, [attrPropVal]);
3242
3245
  attrPropVal = origGetter ? origGetter.apply(elm) : attrPropVal;
3243
3246
  }
3244
- (_a = hostRef == null ? void 0 : hostRef.$instanceValues$) == null ? void 0 : _a.set(memberName, attrPropVal);
3247
+ (_b = hostRef == null ? void 0 : hostRef.$instanceValues$) == null ? void 0 : _b.set(memberName, attrPropVal);
3245
3248
  }
3246
3249
  const getterSetterDescriptor = {
3247
3250
  get: function() {
@@ -3255,21 +3258,18 @@ function proxyHostElement(elm, cstr) {
3255
3258
  };
3256
3259
  Object.defineProperty(elm, memberName, getterSetterDescriptor);
3257
3260
  Object.defineProperty(elm, metaAttributeName, getterSetterDescriptor);
3258
- if (!cstr.prototype.__stencilAugmented) {
3259
- Object.defineProperty(cstr.prototype, memberName, {
3260
- get: function() {
3261
- var _a2;
3262
- const ref = getHostRef(this);
3263
- const attrPropVal2 = (_a2 = ref == null ? void 0 : ref.$instanceValues$) == null ? void 0 : _a2.get(memberName);
3264
- if (origGetter && attrPropVal2 === void 0 && !getValue(this, memberName)) {
3265
- setValue(this, memberName, origGetter.apply(this), cmpMeta);
3266
- }
3267
- return attrPropVal2 !== void 0 ? attrPropVal2 : origGetter ? origGetter.apply(this) : getValue(this, memberName);
3268
- },
3269
- configurable: true,
3270
- enumerable: true
3271
- });
3272
- }
3261
+ hostRef.$fetchedCbList$.push(() => {
3262
+ var _a2;
3263
+ if (!((_a2 = hostRef == null ? void 0 : hostRef.$instanceValues$) == null ? void 0 : _a2.has(memberName))) {
3264
+ setValue(
3265
+ elm,
3266
+ memberName,
3267
+ attrPropVal !== void 0 ? attrPropVal : hostRef.$lazyInstance$[memberName],
3268
+ cmpMeta
3269
+ );
3270
+ }
3271
+ Object.defineProperty(hostRef.$lazyInstance$, memberName, getterSetterDescriptor);
3272
+ });
3273
3273
  } else if (memberFlags & 64 /* Method */) {
3274
3274
  Object.defineProperty(elm, memberName, {
3275
3275
  value(...args) {
@@ -3285,7 +3285,6 @@ function proxyHostElement(elm, cstr) {
3285
3285
  });
3286
3286
  }
3287
3287
  });
3288
- cstr.prototype.__stencilAugmented = true;
3289
3288
  }
3290
3289
  }
3291
3290
  function componentOnReady$1() {
@@ -3645,6 +3644,7 @@ var getHostRef = (ref) => {
3645
3644
  return void 0;
3646
3645
  };
3647
3646
  var registerInstance = (lazyInstance, hostRef) => {
3647
+ if (!hostRef) return void 0;
3648
3648
  lazyInstance.__stencil__getHostRef = () => hostRef;
3649
3649
  hostRef.$lazyInstance$ = lazyInstance;
3650
3650
  return hostRef;
@@ -3655,8 +3655,10 @@ var registerHost = (elm, cmpMeta) => {
3655
3655
  $cmpMeta$: cmpMeta,
3656
3656
  $hostElement$: elm,
3657
3657
  $instanceValues$: /* @__PURE__ */ new Map(),
3658
+ $serializerValues$: /* @__PURE__ */ new Map(),
3658
3659
  $renderCount$: 0
3659
3660
  };
3661
+ hostRef.$fetchedCbList$ = [];
3660
3662
  hostRef.$onInstancePromise$ = new Promise((r) => hostRef.$onInstanceResolve$ = r);
3661
3663
  hostRef.$onReadyPromise$ = new Promise((r) => hostRef.$onReadyResolve$ = r);
3662
3664
  elm["s-p"] = [];
@@ -4040,10 +4042,57 @@ const accordionMdCss = ":host{display:block;position:relative;width:100%;backgro
4040
4042
  class Accordion {
4041
4043
  constructor(hostRef) {
4042
4044
  registerInstance(this, hostRef);
4043
- this.updateListener = () => this.updateState(false);
4045
+ this.accordionGroupUpdateHandler = () => {
4046
+ /**
4047
+ * Determine if this update will cause an actual state change.
4048
+ * We only want to mark as "interacted" if the state is changing.
4049
+ */
4050
+ const accordionGroup = this.accordionGroupEl;
4051
+ if (accordionGroup) {
4052
+ const value = accordionGroup.value;
4053
+ const accordionValue = this.value;
4054
+ const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue;
4055
+ const isExpanded = this.state === 4 /* AccordionState.Expanded */ || this.state === 8 /* AccordionState.Expanding */;
4056
+ const stateWillChange = shouldExpand !== isExpanded;
4057
+ /**
4058
+ * Only mark as interacted if:
4059
+ * 1. This is not the first update we've received with a defined value
4060
+ * 2. The state is actually changing (prevents redundant updates from enabling animations)
4061
+ */
4062
+ if (this.hasReceivedFirstUpdate && stateWillChange) {
4063
+ this.hasInteracted = true;
4064
+ }
4065
+ /**
4066
+ * Only count this as the first update if the group value is defined.
4067
+ * This prevents the initial undefined value from the group's componentDidLoad
4068
+ * from being treated as the first real update.
4069
+ */
4070
+ if (value !== undefined) {
4071
+ this.hasReceivedFirstUpdate = true;
4072
+ }
4073
+ }
4074
+ this.updateState();
4075
+ };
4044
4076
  this.state = 1 /* AccordionState.Collapsed */;
4045
4077
  this.isNext = false;
4046
4078
  this.isPrevious = false;
4079
+ /**
4080
+ * Tracks whether a user-initiated interaction has occurred.
4081
+ * Animations are disabled until the first interaction happens.
4082
+ * This prevents the accordion from animating when it's programmatically
4083
+ * set to an expanded or collapsed state on initial load.
4084
+ */
4085
+ this.hasInteracted = false;
4086
+ /**
4087
+ * Tracks if this accordion has ever been expanded.
4088
+ * Used to prevent the first expansion from animating.
4089
+ */
4090
+ this.hasEverBeenExpanded = false;
4091
+ /**
4092
+ * Tracks if this accordion has received its first update from the group.
4093
+ * Used to distinguish initial programmatic sets from user interactions.
4094
+ */
4095
+ this.hasReceivedFirstUpdate = false;
4047
4096
  /**
4048
4097
  * The value of the accordion. Defaults to an autogenerated
4049
4098
  * value.
@@ -4148,10 +4197,15 @@ class Accordion {
4148
4197
  iconEl.setAttribute('aria-hidden', 'true');
4149
4198
  ionItem.appendChild(iconEl);
4150
4199
  };
4151
- this.expandAccordion = (initialUpdate = false) => {
4200
+ this.expandAccordion = () => {
4152
4201
  const { contentEl, contentElWrapper } = this;
4153
- if (initialUpdate || contentEl === undefined || contentElWrapper === undefined) {
4202
+ /**
4203
+ * If the content elements aren't available yet, just set the state.
4204
+ * This happens on initial render before the DOM is ready.
4205
+ */
4206
+ if (contentEl === undefined || contentElWrapper === undefined) {
4154
4207
  this.state = 4 /* AccordionState.Expanded */;
4208
+ this.hasEverBeenExpanded = true;
4155
4209
  return;
4156
4210
  }
4157
4211
  if (this.state === 4 /* AccordionState.Expanded */) {
@@ -4160,6 +4214,11 @@ class Accordion {
4160
4214
  if (this.currentRaf !== undefined) {
4161
4215
  cancelAnimationFrame(this.currentRaf);
4162
4216
  }
4217
+ /**
4218
+ * Mark that this accordion has been expanded at least once.
4219
+ * This allows subsequent expansions to animate.
4220
+ */
4221
+ this.hasEverBeenExpanded = true;
4163
4222
  if (this.shouldAnimate()) {
4164
4223
  raf(() => {
4165
4224
  this.state = 8 /* AccordionState.Expanding */;
@@ -4177,9 +4236,13 @@ class Accordion {
4177
4236
  this.state = 4 /* AccordionState.Expanded */;
4178
4237
  }
4179
4238
  };
4180
- this.collapseAccordion = (initialUpdate = false) => {
4239
+ this.collapseAccordion = () => {
4181
4240
  const { contentEl } = this;
4182
- if (initialUpdate || contentEl === undefined) {
4241
+ /**
4242
+ * If the content element isn't available yet, just set the state.
4243
+ * This happens on initial render before the DOM is ready.
4244
+ */
4245
+ if (contentEl === undefined) {
4183
4246
  this.state = 1 /* AccordionState.Collapsed */;
4184
4247
  return;
4185
4248
  }
@@ -4214,6 +4277,18 @@ class Accordion {
4214
4277
  * of what is set in the config.
4215
4278
  */
4216
4279
  this.shouldAnimate = () => {
4280
+ /**
4281
+ * Don't animate until after the first user interaction.
4282
+ * This prevents animations on initial load when accordions
4283
+ * start in an expanded or collapsed state programmatically.
4284
+ *
4285
+ * Additionally, don't animate the very first expansion even if
4286
+ * hasInteracted is true. This handles edge cases like React StrictMode
4287
+ * where effects run twice and might incorrectly mark as interacted.
4288
+ */
4289
+ if (!this.hasInteracted || !this.hasEverBeenExpanded) {
4290
+ return false;
4291
+ }
4217
4292
  if (typeof window === 'undefined') {
4218
4293
  return false;
4219
4294
  }
@@ -4230,7 +4305,7 @@ class Accordion {
4230
4305
  }
4231
4306
  return true;
4232
4307
  };
4233
- this.updateState = async (initialUpdate = false) => {
4308
+ this.updateState = async () => {
4234
4309
  const accordionGroup = this.accordionGroupEl;
4235
4310
  const accordionValue = this.value;
4236
4311
  if (!accordionGroup) {
@@ -4239,11 +4314,11 @@ class Accordion {
4239
4314
  const value = accordionGroup.value;
4240
4315
  const shouldExpand = Array.isArray(value) ? value.includes(accordionValue) : value === accordionValue;
4241
4316
  if (shouldExpand) {
4242
- this.expandAccordion(initialUpdate);
4317
+ this.expandAccordion();
4243
4318
  this.isNext = this.isPrevious = false;
4244
4319
  }
4245
4320
  else {
4246
- this.collapseAccordion(initialUpdate);
4321
+ this.collapseAccordion();
4247
4322
  /**
4248
4323
  * When using popout or inset,
4249
4324
  * the collapsed accordion items
@@ -4291,14 +4366,14 @@ class Accordion {
4291
4366
  var _a;
4292
4367
  const accordionGroupEl = (this.accordionGroupEl = (_a = this.el) === null || _a === void 0 ? void 0 : _a.closest('ion-accordion-group'));
4293
4368
  if (accordionGroupEl) {
4294
- this.updateState(true);
4295
- addEventListener$1(accordionGroupEl, 'ionValueChange', this.updateListener);
4369
+ this.updateState();
4370
+ addEventListener$1(accordionGroupEl, 'ionValueChange', this.accordionGroupUpdateHandler);
4296
4371
  }
4297
4372
  }
4298
4373
  disconnectedCallback() {
4299
4374
  const accordionGroupEl = this.accordionGroupEl;
4300
4375
  if (accordionGroupEl) {
4301
- removeEventListener(accordionGroupEl, 'ionValueChange', this.updateListener);
4376
+ removeEventListener(accordionGroupEl, 'ionValueChange', this.accordionGroupUpdateHandler);
4302
4377
  }
4303
4378
  }
4304
4379
  componentDidLoad() {
@@ -4322,6 +4397,11 @@ class Accordion {
4322
4397
  const { accordionGroupEl, disabled, readonly, value, state } = this;
4323
4398
  if (disabled || readonly)
4324
4399
  return;
4400
+ /**
4401
+ * Mark that the user has interacted with the accordion.
4402
+ * This enables animations for all future state changes.
4403
+ */
4404
+ this.hasInteracted = true;
4325
4405
  if (accordionGroupEl) {
4326
4406
  /**
4327
4407
  * Because the accordion group may or may
@@ -4342,7 +4422,7 @@ class Accordion {
4342
4422
  const headerPart = expanded ? 'header expanded' : 'header';
4343
4423
  const contentPart = expanded ? 'content expanded' : 'content';
4344
4424
  this.setAria(expanded);
4345
- return (hAsync(Host, { key: '073e1d02c18dcbc20c68648426e87c14750c031d', class: {
4425
+ return (hAsync(Host, { key: '9c90bce01eff7e5774a19f69c872f3761d66cf3c', class: {
4346
4426
  [mode]: true,
4347
4427
  'accordion-expanding': this.state === 8 /* AccordionState.Expanding */,
4348
4428
  'accordion-expanded': this.state === 4 /* AccordionState.Expanded */,
@@ -4353,7 +4433,7 @@ class Accordion {
4353
4433
  'accordion-disabled': disabled,
4354
4434
  'accordion-readonly': readonly,
4355
4435
  'accordion-animated': this.shouldAnimate(),
4356
- } }, 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" })))));
4436
+ } }, 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" })))));
4357
4437
  }
4358
4438
  static get delegatesFocus() { return true; }
4359
4439
  get el() { return getElement(this); }
@@ -4371,11 +4451,12 @@ class Accordion {
4371
4451
  "value": [1],
4372
4452
  "disabled": [4],
4373
4453
  "readonly": [4],
4374
- "toggleIcon": [1, "toggle-icon"],
4454
+ "toggleIcon": [8, "toggle-icon"],
4375
4455
  "toggleIconSlot": [1, "toggle-icon-slot"],
4376
4456
  "state": [32],
4377
4457
  "isNext": [32],
4378
- "isPrevious": [32]
4458
+ "isPrevious": [32],
4459
+ "hasInteracted": [32]
4379
4460
  },
4380
4461
  "$listeners$": undefined,
4381
4462
  "$lazyBundleId$": "-",
@@ -6161,7 +6242,7 @@ const getPresentedOverlay = (doc, overlayTag, id) => {
6161
6242
  */
6162
6243
  const setRootAriaHidden = (hidden = false) => {
6163
6244
  const root = getAppRoot(document);
6164
- const viewContainer = root.querySelector('ion-router-outlet, ion-nav, #ion-view-container-root');
6245
+ const viewContainer = root.querySelector('ion-router-outlet, #ion-view-container-root');
6165
6246
  if (!viewContainer) {
6166
6247
  return;
6167
6248
  }
@@ -6177,21 +6258,50 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
6177
6258
  if (overlay.presented) {
6178
6259
  return;
6179
6260
  }
6261
+ /**
6262
+ * When an overlay that steals focus
6263
+ * is dismissed, focus should be returned
6264
+ * to the element that was focused
6265
+ * prior to the overlay opening. Toast
6266
+ * does not steal focus and is excluded
6267
+ * from returning focus as a result.
6268
+ */
6269
+ if (overlay.el.tagName !== 'ION-TOAST') {
6270
+ restoreElementFocus(overlay.el);
6271
+ }
6180
6272
  /**
6181
6273
  * Due to accessibility guidelines, toasts do not have
6182
6274
  * focus traps.
6183
6275
  *
6184
6276
  * All other overlays should have focus traps to prevent
6185
- * the keyboard focus from leaving the overlay.
6186
- */
6187
- if (overlay.el.tagName !== 'ION-TOAST') {
6188
- setRootAriaHidden(true);
6189
- document.body.classList.add(BACKDROP_NO_SCROLL);
6190
- }
6191
- hideUnderlyingOverlaysFromScreenReaders(overlay.el);
6192
- hideAnimatingOverlayFromScreenReaders(overlay.el);
6277
+ * the keyboard focus from leaving the overlay unless
6278
+ * developers explicitly opt out (for example, sheet
6279
+ * modals that should permit background interaction).
6280
+ *
6281
+ * Note: Some apps move inline overlays to a specific container
6282
+ * during the willPresent lifecycle (e.g., React portals via
6283
+ * onWillPresent). Defer applying aria-hidden/inert to the app
6284
+ * root until after willPresent so we can detect where the
6285
+ * overlay is finally inserted. If the overlay is inside the
6286
+ * view container subtree, skip adding aria-hidden/inert there
6287
+ * to avoid disabling the overlay.
6288
+ */
6289
+ const overlayEl = overlay.el;
6290
+ const shouldTrapFocus = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false;
6291
+ // Only lock out root content when backdrop is active. Developers relying on showBackdrop=false
6292
+ // expect background interaction to remain enabled.
6293
+ const shouldLockRoot = shouldTrapFocus && overlayEl.showBackdrop !== false;
6193
6294
  overlay.presented = true;
6194
6295
  overlay.willPresent.emit();
6296
+ if (shouldLockRoot) {
6297
+ const root = getAppRoot(document);
6298
+ const viewContainer = root.querySelector('ion-router-outlet, #ion-view-container-root');
6299
+ const overlayInsideViewContainer = viewContainer ? viewContainer.contains(overlayEl) : false;
6300
+ if (!overlayInsideViewContainer) {
6301
+ setRootAriaHidden(true);
6302
+ }
6303
+ document.body.classList.add(BACKDROP_NO_SCROLL);
6304
+ }
6195
6305
  (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
6196
6306
  const mode = getIonMode$1(overlay);
6197
6307
  // get the user's animation fn if one was provided
@@ -6203,17 +6313,6 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
6203
6313
  overlay.didPresent.emit();
6204
6314
  (_b = overlay.didPresentShorthand) === null || _b === void 0 ? void 0 : _b.emit();
6205
6315
  }
6206
- /**
6207
- * When an overlay that steals focus
6208
- * is dismissed, focus should be returned
6209
- * to the element that was focused
6210
- * prior to the overlay opening. Toast
6211
- * does not steal focus and is excluded
6212
- * from returning focus as a result.
6213
- */
6214
- if (overlay.el.tagName !== 'ION-TOAST') {
6215
- restoreElementFocus(overlay.el);
6216
- }
6217
6316
  /**
6218
6317
  * If the focused element is already
6219
6318
  * inside the overlay component then
@@ -6236,6 +6335,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
6236
6335
  * screen readers.
6237
6336
  */
6238
6337
  overlay.el.removeAttribute('aria-hidden');
6338
+ overlay.el.removeAttribute('inert');
6239
6339
  };
6240
6340
  /**
6241
6341
  * When an overlay component is dismissed,
@@ -6252,6 +6352,8 @@ const restoreElementFocus = async (overlayEl) => {
6252
6352
  if (!previousElement) {
6253
6353
  return;
6254
6354
  }
6355
+ // Ensure active element is blurred to prevent a11y warning issues
6356
+ previousElement.blur();
6255
6357
  const shadowRoot = previousElement === null || previousElement === void 0 ? void 0 : previousElement.shadowRoot;
6256
6358
  if (shadowRoot) {
6257
6359
  // If there are no inner focusable elements, just focus the host element.
@@ -6296,31 +6398,29 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
6296
6398
  * For accessibility, toasts lack focus traps and don't receive
6297
6399
  * `aria-hidden` on the root element when presented.
6298
6400
  *
6299
- * All other overlays use focus traps to keep keyboard focus
6300
- * within the overlay, setting `aria-hidden` on the root element
6301
- * to enhance accessibility.
6302
- *
6303
- * Therefore, we must remove `aria-hidden` from the root element
6304
- * when the last non-toast overlay is dismissed.
6305
- */
6306
- const overlaysNotToast = presentedOverlays.filter((o) => o.tagName !== 'ION-TOAST');
6307
- const lastOverlayNotToast = overlaysNotToast.length === 1 && overlaysNotToast[0].id === overlay.el.id;
6401
+ * Overlays that opt into focus trapping set `aria-hidden`
6402
+ * on the root element to keep keyboard focus and pointer
6403
+ * events inside the overlay. We must remove `aria-hidden`
6404
+ * from the root element when the last focus-trapping overlay
6405
+ * is dismissed.
6406
+ */
6407
+ const overlaysLockingRoot = presentedOverlays.filter((o) => {
6408
+ const el = o;
6409
+ return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && el.showBackdrop !== false;
6410
+ });
6411
+ const overlayEl = overlay.el;
6412
+ const locksRoot = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false && overlayEl.showBackdrop !== false;
6308
6413
  /**
6309
- * If this is the last visible overlay that is not a toast
6414
+ * If this is the last visible overlay that is trapping focus
6310
6415
  * then we want to re-add the root to the accessibility tree.
6311
6416
  */
6312
- if (lastOverlayNotToast) {
6417
+ const lastOverlayTrappingFocus = locksRoot && overlaysLockingRoot.length === 1 && overlaysLockingRoot[0].id === overlayEl.id;
6418
+ if (lastOverlayTrappingFocus) {
6313
6419
  setRootAriaHidden(false);
6314
6420
  document.body.classList.remove(BACKDROP_NO_SCROLL);
6315
6421
  }
6316
6422
  overlay.presented = false;
6317
6423
  try {
6318
- /**
6319
- * There is no need to show the overlay to screen readers during
6320
- * the dismiss animation. This is because the overlay will be removed
6321
- * from the DOM after the animation is complete.
6322
- */
6323
- hideAnimatingOverlayFromScreenReaders(overlay.el);
6324
6424
  // Overlay contents should not be clickable during dismiss
6325
6425
  overlay.el.style.setProperty('pointer-events', 'none');
6326
6426
  overlay.willDismiss.emit({ data, role });
@@ -6359,7 +6459,6 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
6359
6459
  printIonError(`[${overlay.el.tagName.toLowerCase()}] - `, err);
6360
6460
  }
6361
6461
  overlay.el.remove();
6362
- revealOverlaysToScreenReaders();
6363
6462
  return true;
6364
6463
  };
6365
6464
  const getAppRoot = (doc) => {
@@ -6555,93 +6654,6 @@ const createTriggerController = () => {
6555
6654
  removeClickListener,
6556
6655
  };
6557
6656
  };
6558
- /**
6559
- * The overlay that is being animated also needs to hide from screen
6560
- * readers during its animation. This ensures that assistive technologies
6561
- * like TalkBack do not announce or interact with the content until the
6562
- * animation is complete, avoiding confusion for users.
6563
- *
6564
- * When the overlay is presented on an Android device, TalkBack's focus rings
6565
- * may appear in the wrong position due to the transition (specifically
6566
- * `transform` styles). This occurs because the focus rings are initially
6567
- * displayed at the starting position of the elements before the transition
6568
- * begins. This workaround ensures the focus rings do not appear in the
6569
- * incorrect location.
6570
- *
6571
- * If this solution is applied to iOS devices, then it leads to a bug where
6572
- * the overlays cannot be accessed by screen readers. This is due to
6573
- * VoiceOver not being able to update the accessibility tree when the
6574
- * `aria-hidden` is removed.
6575
- *
6576
- * @param overlay - The overlay that is being animated.
6577
- */
6578
- const hideAnimatingOverlayFromScreenReaders = (overlay) => {
6579
- if (doc === undefined)
6580
- return;
6581
- if (isPlatform('android')) {
6582
- /**
6583
- * Once the animation is complete, this attribute will be removed.
6584
- * This is done at the end of the `present` method.
6585
- */
6586
- overlay.setAttribute('aria-hidden', 'true');
6587
- }
6588
- };
6589
- /**
6590
- * Ensure that underlying overlays have aria-hidden if necessary so that screen readers
6591
- * cannot move focus to these elements. Note that we cannot rely on focus/focusin/focusout
6592
- * events here because those events do not fire when the screen readers moves to a non-focusable
6593
- * element such as text.
6594
- * Without this logic screen readers would be able to move focus outside of the top focus-trapped overlay.
6595
- *
6596
- * @param newTopMostOverlay - The overlay that is being presented. Since the overlay has not been
6597
- * fully presented yet at the time this function is called it will not be included in the getPresentedOverlays result.
6598
- */
6599
- const hideUnderlyingOverlaysFromScreenReaders = (newTopMostOverlay) => {
6600
- var _a;
6601
- if (doc === undefined)
6602
- return;
6603
- const overlays = getPresentedOverlays(doc);
6604
- for (let i = overlays.length - 1; i >= 0; i--) {
6605
- const presentedOverlay = overlays[i];
6606
- const nextPresentedOverlay = (_a = overlays[i + 1]) !== null && _a !== void 0 ? _a : newTopMostOverlay;
6607
- /**
6608
- * If next overlay has aria-hidden then all remaining overlays will have it too.
6609
- * Or, if the next overlay is a Toast that does not have aria-hidden then current overlay
6610
- * should not have aria-hidden either so focus can remain in the current overlay.
6611
- */
6612
- if (nextPresentedOverlay.hasAttribute('aria-hidden') || nextPresentedOverlay.tagName !== 'ION-TOAST') {
6613
- presentedOverlay.setAttribute('aria-hidden', 'true');
6614
- }
6615
- }
6616
- };
6617
- /**
6618
- * When dismissing an overlay we need to reveal the new top-most overlay to screen readers.
6619
- * If the top-most overlay is a Toast we potentially need to reveal more overlays since
6620
- * focus is never automatically moved to the Toast.
6621
- */
6622
- const revealOverlaysToScreenReaders = () => {
6623
- if (doc === undefined)
6624
- return;
6625
- const overlays = getPresentedOverlays(doc);
6626
- for (let i = overlays.length - 1; i >= 0; i--) {
6627
- const currentOverlay = overlays[i];
6628
- /**
6629
- * If the current we are looking at is a Toast then we can remove aria-hidden.
6630
- * However, we potentially need to keep looking at the overlay stack because there
6631
- * could be more Toasts underneath. Additionally, we need to unhide the closest non-Toast
6632
- * overlay too so focus can move there since focus is never automatically moved to the Toast.
6633
- */
6634
- currentOverlay.removeAttribute('aria-hidden');
6635
- /**
6636
- * If we found a non-Toast element then we can just remove aria-hidden and stop searching entirely
6637
- * since this overlay should always receive focus. As a result, all underlying overlays should still
6638
- * be hidden from screen readers.
6639
- */
6640
- if (currentOverlay.tagName !== 'ION-TOAST') {
6641
- break;
6642
- }
6643
- }
6644
- };
6645
6657
  const FOCUS_TRAP_DISABLE_CLASS = 'ion-disable-focus-trap';
6646
6658
 
6647
6659
  const hostContext = (selector, el) => {
@@ -7814,8 +7826,8 @@ class ActionSheet {
7814
7826
  "delegate": [16],
7815
7827
  "hasController": [4, "has-controller"],
7816
7828
  "keyboardClose": [4, "keyboard-close"],
7817
- "enterAnimation": [16, "enter-animation"],
7818
- "leaveAnimation": [16, "leave-animation"],
7829
+ "enterAnimation": [16],
7830
+ "leaveAnimation": [16],
7819
7831
  "buttons": [16],
7820
7832
  "cssClass": [1, "css-class"],
7821
7833
  "backdropDismiss": [4, "backdrop-dismiss"],
@@ -7823,7 +7835,7 @@ class ActionSheet {
7823
7835
  "subHeader": [1, "sub-header"],
7824
7836
  "translucent": [4],
7825
7837
  "animated": [4],
7826
- "htmlAttributes": [16, "html-attributes"],
7838
+ "htmlAttributes": [16],
7827
7839
  "isOpen": [4, "is-open"],
7828
7840
  "trigger": [1],
7829
7841
  "present": [64],
@@ -8547,8 +8559,8 @@ class Alert {
8547
8559
  "delegate": [16],
8548
8560
  "hasController": [4, "has-controller"],
8549
8561
  "keyboardClose": [4, "keyboard-close"],
8550
- "enterAnimation": [16, "enter-animation"],
8551
- "leaveAnimation": [16, "leave-animation"],
8562
+ "enterAnimation": [16],
8563
+ "leaveAnimation": [16],
8552
8564
  "cssClass": [1, "css-class"],
8553
8565
  "header": [1],
8554
8566
  "subHeader": [1, "sub-header"],
@@ -8558,7 +8570,7 @@ class Alert {
8558
8570
  "backdropDismiss": [4, "backdrop-dismiss"],
8559
8571
  "translucent": [4],
8560
8572
  "animated": [4],
8561
- "htmlAttributes": [16, "html-attributes"],
8573
+ "htmlAttributes": [16],
8562
8574
  "isOpen": [4, "is-open"],
8563
8575
  "trigger": [1],
8564
8576
  "present": [64],
@@ -8748,7 +8760,7 @@ class BackButton {
8748
8760
  "icon": [1],
8749
8761
  "text": [1],
8750
8762
  "type": [1],
8751
- "routerAnimation": [16, "router-animation"]
8763
+ "routerAnimation": [16]
8752
8764
  },
8753
8765
  "$listeners$": undefined,
8754
8766
  "$lazyBundleId$": "-",
@@ -8959,7 +8971,7 @@ class Breadcrumb {
8959
8971
  "separator": [4],
8960
8972
  "target": [1],
8961
8973
  "routerDirection": [1, "router-direction"],
8962
- "routerAnimation": [16, "router-animation"]
8974
+ "routerAnimation": [16]
8963
8975
  },
8964
8976
  "$listeners$": undefined,
8965
8977
  "$lazyBundleId$": "-",
@@ -9330,11 +9342,7 @@ class Button {
9330
9342
  target,
9331
9343
  };
9332
9344
  let fill = this.fill;
9333
- /**
9334
- * We check both undefined and null to
9335
- * work around https://github.com/ionic-team/stencil/issues/3586.
9336
- */
9337
- if (fill == null) {
9345
+ if (fill === undefined) {
9338
9346
  fill = this.inToolbar || this.inListHeader ? 'clear' : 'solid';
9339
9347
  }
9340
9348
  /**
@@ -9347,7 +9355,7 @@ class Button {
9347
9355
  {
9348
9356
  type !== 'button' && this.renderHiddenButton();
9349
9357
  }
9350
- return (hAsync(Host, { key: 'b105ad09215adb3ca2298acdadf0dc9154bbb9b0', onClick: this.handleClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
9358
+ return (hAsync(Host, { key: 'ed82ea53705523f9afc5f1a9addff44cc6424f27', onClick: this.handleClick, "aria-disabled": disabled ? 'true' : null, class: createColorClasses$1(color, {
9351
9359
  [mode]: true,
9352
9360
  [buttonType]: true,
9353
9361
  [`${buttonType}-${expand}`]: expand !== undefined,
@@ -9362,7 +9370,7 @@ class Button {
9362
9370
  'button-disabled': disabled,
9363
9371
  'ion-activatable': true,
9364
9372
  'ion-focusable': true,
9365
- }) }, 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 }))));
9373
+ }) }, 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 }))));
9366
9374
  }
9367
9375
  get el() { return getElement(this); }
9368
9376
  static get watchers() { return {
@@ -9384,7 +9392,7 @@ class Button {
9384
9392
  "expand": [513],
9385
9393
  "fill": [1537],
9386
9394
  "routerDirection": [1, "router-direction"],
9387
- "routerAnimation": [16, "router-animation"],
9395
+ "routerAnimation": [16],
9388
9396
  "download": [1],
9389
9397
  "href": [1],
9390
9398
  "rel": [1],
@@ -9525,7 +9533,7 @@ class Card {
9525
9533
  "href": [1],
9526
9534
  "rel": [1],
9527
9535
  "routerDirection": [1, "router-direction"],
9528
- "routerAnimation": [16, "router-animation"],
9536
+ "routerAnimation": [16],
9529
9537
  "target": [1]
9530
9538
  },
9531
9539
  "$listeners$": undefined,
@@ -9757,7 +9765,6 @@ class Checkbox {
9757
9765
  };
9758
9766
  this.toggleChecked = (ev) => {
9759
9767
  ev.preventDefault();
9760
- this.setFocus();
9761
9768
  this.setChecked(!this.checked);
9762
9769
  this.indeterminate = false;
9763
9770
  };
@@ -9794,9 +9801,7 @@ class Checkbox {
9794
9801
  }
9795
9802
  /** @internal */
9796
9803
  async setFocus() {
9797
- if (this.focusEl) {
9798
- this.focusEl.focus();
9799
- }
9804
+ this.el.focus();
9800
9805
  }
9801
9806
  getHintTextID() {
9802
9807
  const { el, helperText, errorText, helperTextId, errorTextId } = this;
@@ -9832,7 +9837,7 @@ class Checkbox {
9832
9837
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
9833
9838
  // The host element must have a checkbox role to ensure proper VoiceOver
9834
9839
  // support in Safari for accessibility.
9835
- 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, {
9840
+ 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, {
9836
9841
  [mode]: true,
9837
9842
  'in-item': hostContext('ion-item', el),
9838
9843
  'checkbox-checked': checked,
@@ -9842,10 +9847,10 @@ class Checkbox {
9842
9847
  [`checkbox-justify-${justify}`]: justify !== undefined,
9843
9848
  [`checkbox-alignment-${alignment}`]: alignment !== undefined,
9844
9849
  [`checkbox-label-placement-${labelPlacement}`]: true,
9845
- }), 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: {
9850
+ }) }, 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: {
9846
9851
  'label-text-wrapper': true,
9847
9852
  'label-text-wrapper-hidden': !hasLabelContent,
9848
- }, 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)))));
9853
+ }, 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)))));
9849
9854
  }
9850
9855
  getSVGPath(mode, indeterminate) {
9851
9856
  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" }));
@@ -11433,17 +11438,18 @@ const getFormattedDayPeriod = (dayPeriod) => {
11433
11438
  * confusion.
11434
11439
  */
11435
11440
  const stripTimeZone = (formatOptions) => {
11436
- return Object.assign(Object.assign({}, formatOptions), {
11441
+ return Object.assign(Object.assign({}, formatOptions), {
11437
11442
  /**
11438
11443
  * Setting the time zone to UTC ensures that the value shown is always the
11439
11444
  * same as what was selected and safeguards against older Safari bugs with
11440
11445
  * Intl.DateTimeFormat.
11441
11446
  */
11442
- timeZone: 'UTC',
11447
+ timeZone: 'UTC',
11443
11448
  /**
11444
11449
  * We do not want to display the time zone name
11445
11450
  */
11446
- timeZoneName: undefined });
11451
+ timeZoneName: undefined
11452
+ });
11447
11453
  };
11448
11454
  const getLocalizedTime = (locale, refParts, hourCycle, formatOptions = { hour: 'numeric', minute: 'numeric' }) => {
11449
11455
  const timeParts = {
@@ -11453,12 +11459,13 @@ const getLocalizedTime = (locale, refParts, hourCycle, formatOptions = { hour: '
11453
11459
  if (timeParts.hour === undefined || timeParts.minute === undefined) {
11454
11460
  return 'Invalid Time';
11455
11461
  }
11456
- return new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, stripTimeZone(formatOptions)), {
11462
+ return new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, stripTimeZone(formatOptions)), {
11457
11463
  /**
11458
11464
  * We use hourCycle here instead of hour12 due to:
11459
11465
  * https://bugs.chromium.org/p/chromium/issues/detail?id=1347316&q=hour12&can=2
11460
11466
  */
11461
- hourCycle })).format(new Date(convertDataToISO(Object.assign({
11467
+ hourCycle
11468
+ })).format(new Date(convertDataToISO(Object.assign({
11462
11469
  /**
11463
11470
  * JS uses a simplified ISO 8601 format which allows for
11464
11471
  * date-only formats and date-time formats, but not
@@ -11470,7 +11477,8 @@ const getLocalizedTime = (locale, refParts, hourCycle, formatOptions = { hour: '
11470
11477
  * values, so passing these date values should have no impact
11471
11478
  * on the time output.
11472
11479
  */
11473
- year: 2023, day: 1, month: 1 }, timeParts)) + 'Z'));
11480
+ year: 2023, day: 1, month: 1
11481
+ }, timeParts)) + 'Z'));
11474
11482
  };
11475
11483
  /**
11476
11484
  * Adds padding to a time value so
@@ -13531,7 +13539,7 @@ class Datetime {
13531
13539
  const renderArray = forcePresentation === 'time-date'
13532
13540
  ? [this.renderTimePickerColumns(forcePresentation), this.renderDatePickerColumns(forcePresentation)]
13533
13541
  : [this.renderDatePickerColumns(forcePresentation), this.renderTimePickerColumns(forcePresentation)];
13534
- return hAsync("ion-picker", null, renderArray);
13542
+ return hAsync("ion-picker", { class: FOCUS_TRAP_DISABLE_CLASS }, renderArray);
13535
13543
  }
13536
13544
  renderDatePickerColumns(forcePresentation) {
13537
13545
  return forcePresentation === 'date-time' || forcePresentation === 'time-date'
@@ -14088,7 +14096,7 @@ class Datetime {
14088
14096
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
14089
14097
  const hasWheelVariant = hasDatePresentation && preferWheel;
14090
14098
  renderHiddenInput(true, el, name, formatValue(value), disabled);
14091
- return (hAsync(Host, { key: 'f35cf200ff05d33074576e3d2754d3b2a0735b96', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses$1(color, {
14099
+ return (hAsync(Host, { key: '57492534800ea059a7c2bbd9f0059cc0b75ae8d2', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: Object.assign({}, createColorClasses$1(color, {
14092
14100
  [mode]: true,
14093
14101
  ['datetime-readonly']: readonly,
14094
14102
  ['datetime-disabled']: disabled,
@@ -14098,7 +14106,7 @@ class Datetime {
14098
14106
  [`datetime-size-${size}`]: true,
14099
14107
  [`datetime-prefer-wheel`]: hasWheelVariant,
14100
14108
  [`datetime-grid`]: isGridStyle,
14101
- })) }, hAsync("div", { key: '859e9354a12bfa58ac3f964c2e66839f17071c00', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
14109
+ })) }, hAsync("div", { key: '97dac5e5195635ac0bc5fb472b9d09e5c3c6bbc3', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
14102
14110
  }
14103
14111
  get el() { return getElement(this); }
14104
14112
  static get watchers() { return {
@@ -14125,9 +14133,9 @@ class Datetime {
14125
14133
  "color": [1],
14126
14134
  "name": [1],
14127
14135
  "disabled": [4],
14128
- "formatOptions": [16, "format-options"],
14136
+ "formatOptions": [16],
14129
14137
  "readonly": [4],
14130
- "isDateEnabled": [16, "is-date-enabled"],
14138
+ "isDateEnabled": [16],
14131
14139
  "showAdjacentDays": [4, "show-adjacent-days"],
14132
14140
  "min": [1025],
14133
14141
  "max": [1025],
@@ -14142,9 +14150,9 @@ class Datetime {
14142
14150
  "minuteValues": [8, "minute-values"],
14143
14151
  "locale": [1],
14144
14152
  "firstDayOfWeek": [2, "first-day-of-week"],
14145
- "titleSelectedDatesFormatter": [16, "title-selected-dates-formatter"],
14153
+ "titleSelectedDatesFormatter": [16],
14146
14154
  "multiple": [4],
14147
- "highlightedDates": [16, "highlighted-dates"],
14155
+ "highlightedDates": [16],
14148
14156
  "value": [1025],
14149
14157
  "showDefaultTitle": [4, "show-default-title"],
14150
14158
  "showDefaultButtons": [4, "show-default-buttons"],
@@ -14734,13 +14742,13 @@ class FabButton {
14734
14742
  "href": [1],
14735
14743
  "rel": [1],
14736
14744
  "routerDirection": [1, "router-direction"],
14737
- "routerAnimation": [16, "router-animation"],
14745
+ "routerAnimation": [16],
14738
14746
  "target": [1],
14739
14747
  "show": [4],
14740
14748
  "translucent": [4],
14741
14749
  "type": [1],
14742
14750
  "size": [1],
14743
- "closeIcon": [1, "close-icon"]
14751
+ "closeIcon": [8, "close-icon"]
14744
14752
  },
14745
14753
  "$listeners$": undefined,
14746
14754
  "$lazyBundleId$": "-",
@@ -15293,6 +15301,8 @@ class Grid {
15293
15301
  }
15294
15302
 
15295
15303
  const TRANSITION = 'all 0.2s ease-in-out';
15304
+ const ROLE_NONE = 'none';
15305
+ const ROLE_BANNER = 'banner';
15296
15306
  const cloneElement = (tagName) => {
15297
15307
  const getCachedEl = document.querySelector(`${tagName}.ion-cloned-element`);
15298
15308
  if (getCachedEl !== null) {
@@ -15419,6 +15429,7 @@ const setHeaderActive = (headerIndex, active = true) => {
15419
15429
  const toolbars = headerIndex.toolbars;
15420
15430
  const ionTitles = toolbars.map((toolbar) => toolbar.ionTitleEl);
15421
15431
  if (active) {
15432
+ headerEl.setAttribute('role', ROLE_BANNER);
15422
15433
  headerEl.classList.remove('header-collapse-condense-inactive');
15423
15434
  ionTitles.forEach((ionTitle) => {
15424
15435
  if (ionTitle) {
@@ -15427,6 +15438,16 @@ const setHeaderActive = (headerIndex, active = true) => {
15427
15438
  });
15428
15439
  }
15429
15440
  else {
15441
+ /**
15442
+ * There can only be one banner landmark per page.
15443
+ * By default, all ion-headers have the banner role.
15444
+ * This causes an accessibility issue when using a
15445
+ * condensed header since there are two ion-headers
15446
+ * on the page at once (active and inactive).
15447
+ * To solve this, the role needs to be toggled
15448
+ * based on which header is active.
15449
+ */
15450
+ headerEl.setAttribute('role', ROLE_NONE);
15430
15451
  headerEl.classList.add('header-collapse-condense-inactive');
15431
15452
  /**
15432
15453
  * The small title should only be accessed by screen readers
@@ -15486,8 +15507,32 @@ const handleHeaderFade = (scrollEl, baseEl, condenseHeader) => {
15486
15507
  });
15487
15508
  });
15488
15509
  };
15510
+ /**
15511
+ * Get the role type for the ion-header.
15512
+ *
15513
+ * @param isInsideMenu If ion-header is inside ion-menu.
15514
+ * @param isCondensed If ion-header has collapse="condense".
15515
+ * @param mode The current mode.
15516
+ * @returns 'none' if inside ion-menu or if condensed in md
15517
+ * mode, otherwise 'banner'.
15518
+ */
15519
+ const getRoleType = (isInsideMenu, isCondensed, mode) => {
15520
+ // If the header is inside a menu, it should not have the banner role.
15521
+ if (isInsideMenu) {
15522
+ return ROLE_NONE;
15523
+ }
15524
+ /**
15525
+ * Only apply role="none" to `md` mode condensed headers
15526
+ * since the large header is never shown.
15527
+ */
15528
+ if (isCondensed && mode === 'md') {
15529
+ return ROLE_NONE;
15530
+ }
15531
+ // Default to banner role.
15532
+ return ROLE_BANNER;
15533
+ };
15489
15534
 
15490
- 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}";
15535
+ 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}";
15491
15536
 
15492
15537
  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}";
15493
15538
 
@@ -15630,16 +15675,17 @@ class Header {
15630
15675
  const { translucent, inheritedAttributes } = this;
15631
15676
  const mode = getIonMode$1(this);
15632
15677
  const collapse = this.collapse || 'none';
15678
+ const isCondensed = collapse === 'condense';
15633
15679
  // banner role must be at top level, so remove role if inside a menu
15634
- const roleType = hostContext('ion-menu', this.el) ? 'none' : 'banner';
15635
- return (hAsync(Host, Object.assign({ key: 'b6cc27f0b08afc9fcc889683525da765d80ba672', role: roleType, class: {
15680
+ const roleType = getRoleType(hostContext('ion-menu', this.el), isCondensed, mode);
15681
+ return (hAsync(Host, Object.assign({ key: '863c4568cd7b8c0ec55109f193bbbaed68a1346e', role: roleType, class: {
15636
15682
  [mode]: true,
15637
15683
  // Used internally for styling
15638
15684
  [`header-${mode}`]: true,
15639
15685
  [`header-translucent`]: this.translucent,
15640
15686
  [`header-collapse-${collapse}`]: true,
15641
15687
  [`header-translucent-${mode}`]: this.translucent,
15642
- } }, inheritedAttributes), mode === 'ios' && translucent && hAsync("div", { key: '395766d4dcee3398bc91960db21f922095292f14', class: "header-background" }), hAsync("slot", { key: '09a67ece27b258ff1248805d43d92a49b2c6859a' })));
15688
+ } }, inheritedAttributes), mode === 'ios' && translucent && hAsync("div", { key: '25c3bdce328b0b35607d154c8b8374679313d881', class: "header-background" }), hAsync("slot", { key: 'b44fab0a9be7920b9650da26117c783e751e1702' })));
15643
15689
  }
15644
15690
  get el() { return getElement(this); }
15645
15691
  static get style() { return {
@@ -16451,6 +16497,19 @@ const isOptionSelected = (currentValue, compareValue, compareWith) => {
16451
16497
  }
16452
16498
  };
16453
16499
 
16500
+ /**
16501
+ * Checks if the form element is in an invalid state based on
16502
+ * Ionic validation classes.
16503
+ *
16504
+ * @param el The form element to check.
16505
+ * @returns `true` if the element is invalid, `false` otherwise.
16506
+ */
16507
+ const checkInvalidState = (el) => {
16508
+ const hasIonTouched = el.classList.contains('ion-touched');
16509
+ const hasIonInvalid = el.classList.contains('ion-invalid');
16510
+ return hasIonTouched && hasIonInvalid;
16511
+ };
16512
+
16454
16513
  /**
16455
16514
  * Used to update a scoped component that uses emulated slots. This fires when
16456
16515
  * content is passed into the slot or when the content inside of a slot changes.
@@ -16629,6 +16688,10 @@ class Input {
16629
16688
  * is applied in both cases.
16630
16689
  */
16631
16690
  this.hasFocus = false;
16691
+ /**
16692
+ * Track validation state for proper aria-live announcements
16693
+ */
16694
+ this.isInvalid = false;
16632
16695
  /**
16633
16696
  * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.
16634
16697
  * Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`.
@@ -16816,6 +16879,8 @@ class Input {
16816
16879
  const { el } = this;
16817
16880
  this.slotMutationController = createSlotMutationController(el, ['label', 'start', 'end'], () => forceUpdate());
16818
16881
  this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
16882
+ // Always set initial state
16883
+ this.isInvalid = checkInvalidState(el);
16819
16884
  this.debounceChanged();
16820
16885
  }
16821
16886
  componentDidLoad() {
@@ -16842,6 +16907,11 @@ class Input {
16842
16907
  this.notchController.destroy();
16843
16908
  this.notchController = undefined;
16844
16909
  }
16910
+ // Clean up validation observer to prevent memory leaks
16911
+ if (this.validationObserver) {
16912
+ this.validationObserver.disconnect();
16913
+ this.validationObserver = undefined;
16914
+ }
16845
16915
  }
16846
16916
  /**
16847
16917
  * Sets focus on the native `input` in `ion-input`. Use this method instead of the global
@@ -16943,15 +17013,15 @@ class Input {
16943
17013
  * Renders the helper text or error text values
16944
17014
  */
16945
17015
  renderHintText() {
16946
- const { helperText, errorText, helperTextId, errorTextId } = this;
17016
+ const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
16947
17017
  return [
16948
- hAsync("div", { id: helperTextId, class: "helper-text" }, helperText),
16949
- hAsync("div", { id: errorTextId, class: "error-text" }, errorText),
17018
+ hAsync("div", { id: helperTextId, class: "helper-text", "aria-live": "polite" }, !isInvalid ? helperText : null),
17019
+ hAsync("div", { id: errorTextId, class: "error-text", role: "alert" }, isInvalid ? errorText : null),
16950
17020
  ];
16951
17021
  }
16952
17022
  getHintTextID() {
16953
- const { el, helperText, errorText, helperTextId, errorTextId } = this;
16954
- if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
17023
+ const { isInvalid, helperText, errorText, helperTextId, errorTextId } = this;
17024
+ if (isInvalid && errorText) {
16955
17025
  return errorTextId;
16956
17026
  }
16957
17027
  if (helperText) {
@@ -17064,7 +17134,7 @@ class Input {
17064
17134
  * TODO(FW-5592): Remove hasStartEndSlots condition
17065
17135
  */
17066
17136
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
17067
- return (hAsync(Host, { key: '41b2526627e7d2773a80f011b123284203a71ca0', class: createColorClasses$1(this.color, {
17137
+ return (hAsync(Host, { key: '97b5308021064d9e7434ef2d3d96f27045c1b0c4', class: createColorClasses$1(this.color, {
17068
17138
  [mode]: true,
17069
17139
  'has-value': hasValue,
17070
17140
  'has-focus': hasFocus,
@@ -17075,14 +17145,14 @@ class Input {
17075
17145
  'in-item': inItem,
17076
17146
  'in-item-color': hostContext('ion-item.ion-color', this.el),
17077
17147
  'input-disabled': disabled,
17078
- }) }, 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) => {
17148
+ }) }, 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) => {
17079
17149
  /**
17080
17150
  * This prevents mobile browsers from
17081
17151
  * blurring the input when the clear
17082
17152
  * button is activated.
17083
17153
  */
17084
17154
  ev.preventDefault();
17085
- }, 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()));
17155
+ }, 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()));
17086
17156
  }
17087
17157
  get el() { return getElement(this); }
17088
17158
  static get watchers() { return {
@@ -17108,7 +17178,7 @@ class Input {
17108
17178
  "clearInputIcon": [1, "clear-input-icon"],
17109
17179
  "clearOnEdit": [4, "clear-on-edit"],
17110
17180
  "counter": [4],
17111
- "counterFormatter": [16, "counter-formatter"],
17181
+ "counterFormatter": [16],
17112
17182
  "debounce": [2],
17113
17183
  "disabled": [516],
17114
17184
  "enterkeyhint": [1],
@@ -17134,6 +17204,7 @@ class Input {
17134
17204
  "type": [1],
17135
17205
  "value": [1032],
17136
17206
  "hasFocus": [32],
17207
+ "isInvalid": [32],
17137
17208
  "setFocus": [64],
17138
17209
  "getInputElement": [64]
17139
17210
  },
@@ -18158,13 +18229,13 @@ class Item {
18158
18229
  "color": [513],
18159
18230
  "button": [4],
18160
18231
  "detail": [4],
18161
- "detailIcon": [1, "detail-icon"],
18232
+ "detailIcon": [8, "detail-icon"],
18162
18233
  "disabled": [516],
18163
18234
  "download": [1],
18164
18235
  "href": [1],
18165
18236
  "rel": [1],
18166
18237
  "lines": [1],
18167
- "routerAnimation": [16, "router-animation"],
18238
+ "routerAnimation": [16],
18168
18239
  "routerDirection": [1, "router-direction"],
18169
18240
  "target": [1],
18170
18241
  "type": [1],
@@ -19346,8 +19417,8 @@ class Loading {
19346
19417
  "delegate": [16],
19347
19418
  "hasController": [4, "has-controller"],
19348
19419
  "keyboardClose": [4, "keyboard-close"],
19349
- "enterAnimation": [16, "enter-animation"],
19350
- "leaveAnimation": [16, "leave-animation"],
19420
+ "enterAnimation": [16],
19421
+ "leaveAnimation": [16],
19351
19422
  "message": [1],
19352
19423
  "cssClass": [1, "css-class"],
19353
19424
  "duration": [2],
@@ -19356,7 +19427,7 @@ class Loading {
19356
19427
  "spinner": [1025],
19357
19428
  "translucent": [4],
19358
19429
  "animated": [4],
19359
- "htmlAttributes": [16, "html-attributes"],
19430
+ "htmlAttributes": [16],
19360
19431
  "isOpen": [4, "is-open"],
19361
19432
  "trigger": [1],
19362
19433
  "present": [64],
@@ -20011,6 +20082,9 @@ class Menu {
20011
20082
  * @param role The role of the element that is closing the menu.
20012
20083
  */
20013
20084
  setOpen(shouldOpen, animated = true, role) {
20085
+ var _a;
20086
+ // Blur the active element to prevent it from being kept focused inside an element that will be set with aria-hidden="true"
20087
+ (_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.blur();
20014
20088
  return menuController._setOpen(this, shouldOpen, animated, role);
20015
20089
  }
20016
20090
  trapKeyboardFocus(ev, doc) {
@@ -20373,14 +20447,14 @@ class Menu {
20373
20447
  * the ionBackButton listener in the menu controller
20374
20448
  * will handle closing the menu when Escape is pressed.
20375
20449
  */
20376
- return (hAsync(Host, { key: 'a5c75aa40a34530b56ee3b98d706a5ac5ae300de', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
20450
+ return (hAsync(Host, { key: '70a427f3414a476414c3386efe6c8723fd37eccf', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
20377
20451
  [mode]: true,
20378
20452
  [`menu-type-${type}`]: true,
20379
20453
  'menu-enabled': !disabled,
20380
20454
  [`menu-side-${side}`]: true,
20381
20455
  'menu-pane-visible': isPaneVisible,
20382
20456
  'split-pane-side': hostContext('ion-split-pane', el),
20383
- } }, 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" })));
20457
+ } }, 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" })));
20384
20458
  }
20385
20459
  get el() { return getElement(this); }
20386
20460
  static get watchers() { return {
@@ -20719,11 +20793,22 @@ const iosTransitionAnimation$1 = () => Promise.resolve().then(function () { retu
20719
20793
  const mdTransitionAnimation$1 = () => Promise.resolve().then(function () { return md_transition; });
20720
20794
  const focusController = createFocusController();
20721
20795
  // TODO(FW-2832): types
20796
+ /**
20797
+ * Executes the main page transition.
20798
+ * It also manages the lifecycle of header visibility (if any)
20799
+ * to prevent visual flickering in iOS. The flickering only
20800
+ * occurs for a condensed header that is placed above the content.
20801
+ *
20802
+ * @param opts Options for the transition.
20803
+ * @returns A promise that resolves when the transition is complete.
20804
+ */
20722
20805
  const transition = (opts) => {
20723
20806
  return new Promise((resolve, reject) => {
20724
20807
  writeTask(() => {
20725
- beforeTransition(opts);
20726
- runTransition(opts).then((result) => {
20808
+ const transitioningInactiveHeader = getIosIonHeader(opts);
20809
+ beforeTransition(opts, transitioningInactiveHeader);
20810
+ runTransition(opts)
20811
+ .then((result) => {
20727
20812
  if (result.animation) {
20728
20813
  result.animation.destroy();
20729
20814
  }
@@ -20732,15 +20817,21 @@ const transition = (opts) => {
20732
20817
  }, (error) => {
20733
20818
  afterTransition(opts);
20734
20819
  reject(error);
20820
+ })
20821
+ .finally(() => {
20822
+ // Ensure that the header is restored to its original state.
20823
+ setHeaderTransitionClass(transitioningInactiveHeader, false);
20735
20824
  });
20736
20825
  });
20737
20826
  });
20738
20827
  };
20739
- const beforeTransition = (opts) => {
20828
+ const beforeTransition = (opts, transitioningInactiveHeader) => {
20740
20829
  const enteringEl = opts.enteringEl;
20741
20830
  const leavingEl = opts.leavingEl;
20742
20831
  focusController.saveViewFocus(leavingEl);
20743
20832
  setZIndex(enteringEl, leavingEl, opts.direction);
20833
+ // Prevent flickering of the header by adding a class.
20834
+ setHeaderTransitionClass(transitioningInactiveHeader, true);
20744
20835
  if (opts.showGoBack) {
20745
20836
  enteringEl.classList.add('can-go-back');
20746
20837
  }
@@ -20929,6 +21020,39 @@ const setZIndex = (enteringEl, leavingEl, direction) => {
20929
21020
  leavingEl.style.zIndex = '100';
20930
21021
  }
20931
21022
  };
21023
+ /**
21024
+ * Add a class to ensure that the header (if any)
21025
+ * does not flicker during the transition. By adding the
21026
+ * transitioning class, we ensure that the header has
21027
+ * the necessary styles to prevent the following flickers:
21028
+ * 1. When entering a page with a condensed header, the
21029
+ * header should never be visible. However,
21030
+ * it briefly renders the background color while
21031
+ * the transition is occurring.
21032
+ * 2. When leaving a page with a condensed header, the
21033
+ * header has an opacity of 0 and the pages
21034
+ * have a z-index which causes the entering page to
21035
+ * briefly show it's content underneath the leaving page.
21036
+ * 3. When entering a page or leaving a page with a fade
21037
+ * header, the header should not have a background color.
21038
+ * However, it briefly shows the background color while
21039
+ * the transition is occurring.
21040
+ *
21041
+ * @param header The header element to modify.
21042
+ * @param isTransitioning Whether the transition is occurring.
21043
+ */
21044
+ const setHeaderTransitionClass = (header, isTransitioning) => {
21045
+ if (!header) {
21046
+ return;
21047
+ }
21048
+ const transitionClass = 'header-transitioning';
21049
+ if (isTransitioning) {
21050
+ header.classList.add(transitionClass);
21051
+ }
21052
+ else {
21053
+ header.classList.remove(transitionClass);
21054
+ }
21055
+ };
20932
21056
  const getIonPageElement = (element) => {
20933
21057
  if (element.classList.contains('ion-page')) {
20934
21058
  return element;
@@ -20940,6 +21064,27 @@ const getIonPageElement = (element) => {
20940
21064
  // idk, return the original element so at least something animates and we don't have a null pointer
20941
21065
  return element;
20942
21066
  };
21067
+ /**
21068
+ * Retrieves the ion-header element from a page based on the
21069
+ * direction of the transition.
21070
+ *
21071
+ * @param opts Options for the transition.
21072
+ * @returns The ion-header element or null if not found or not in 'ios' mode.
21073
+ */
21074
+ const getIosIonHeader = (opts) => {
21075
+ const enteringEl = opts.enteringEl;
21076
+ const leavingEl = opts.leavingEl;
21077
+ const direction = opts.direction;
21078
+ const mode = opts.mode;
21079
+ if (mode !== 'ios') {
21080
+ return null;
21081
+ }
21082
+ const element = direction === 'back' ? leavingEl : enteringEl;
21083
+ if (!element) {
21084
+ return null;
21085
+ }
21086
+ return element.querySelector('ion-header');
21087
+ };
20943
21088
 
20944
21089
  const KEYBOARD_DID_OPEN = 'ionKeyboardDidShow';
20945
21090
 
@@ -21877,6 +22022,12 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
21877
22022
  const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
21878
22023
  const contentAnimation = animation.childAnimations.find((ani) => ani.id === 'contentAnimation');
21879
22024
  const enableBackdrop = () => {
22025
+ // Respect explicit opt-out of focus trapping/backdrop interactions
22026
+ // If focusTrap is false or showBackdrop is false, do not enable the backdrop or re-enable focus trap
22027
+ const el = baseEl;
22028
+ if (el.focusTrap === false || el.showBackdrop === false) {
22029
+ return;
22030
+ }
21880
22031
  baseEl.style.setProperty('pointer-events', 'auto');
21881
22032
  backdropEl.style.setProperty('pointer-events', 'auto');
21882
22033
  /**
@@ -22001,7 +22152,9 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
22001
22152
  * ion-backdrop and .modal-wrapper always have pointer-events: auto
22002
22153
  * applied, so the modal content can still be interacted with.
22003
22154
  */
22004
- const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;
22155
+ const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint &&
22156
+ baseEl.focusTrap !== false &&
22157
+ baseEl.showBackdrop !== false;
22005
22158
  if (shouldEnableBackdrop) {
22006
22159
  enableBackdrop();
22007
22160
  }
@@ -22309,7 +22462,9 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
22309
22462
  * Backdrop should become enabled
22310
22463
  * after the backdropBreakpoint value
22311
22464
  */
22312
- const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;
22465
+ const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint &&
22466
+ baseEl.focusTrap !== false &&
22467
+ baseEl.showBackdrop !== false;
22313
22468
  if (shouldEnableBackdrop) {
22314
22469
  enableBackdrop();
22315
22470
  }
@@ -23250,8 +23405,8 @@ class Modal {
23250
23405
  "overlayIndex": [2, "overlay-index"],
23251
23406
  "delegate": [16],
23252
23407
  "keyboardClose": [4, "keyboard-close"],
23253
- "enterAnimation": [16, "enter-animation"],
23254
- "leaveAnimation": [16, "leave-animation"],
23408
+ "enterAnimation": [16],
23409
+ "leaveAnimation": [16],
23255
23410
  "breakpoints": [16],
23256
23411
  "expandToScroll": [4, "expand-to-scroll"],
23257
23412
  "initialBreakpoint": [2, "initial-breakpoint"],
@@ -23259,13 +23414,13 @@ class Modal {
23259
23414
  "handle": [4],
23260
23415
  "handleBehavior": [1, "handle-behavior"],
23261
23416
  "component": [1],
23262
- "componentProps": [16, "component-props"],
23417
+ "componentProps": [16],
23263
23418
  "cssClass": [1, "css-class"],
23264
23419
  "backdropDismiss": [4, "backdrop-dismiss"],
23265
23420
  "showBackdrop": [4, "show-backdrop"],
23266
23421
  "animated": [4],
23267
- "presentingElement": [16, "presenting-element"],
23268
- "htmlAttributes": [16, "html-attributes"],
23422
+ "presentingElement": [16],
23423
+ "htmlAttributes": [16],
23269
23424
  "isOpen": [4, "is-open"],
23270
23425
  "trigger": [1],
23271
23426
  "keepContentsMounted": [4, "keep-contents-mounted"],
@@ -24194,7 +24349,7 @@ class Nav {
24194
24349
  "swipeGesture": [1028, "swipe-gesture"],
24195
24350
  "animated": [4],
24196
24351
  "animation": [16],
24197
- "rootParams": [16, "root-params"],
24352
+ "rootParams": [16],
24198
24353
  "root": [1],
24199
24354
  "push": [64],
24200
24355
  "insert": [64],
@@ -24259,9 +24414,9 @@ class NavLink {
24259
24414
  "$tagName$": "ion-nav-link",
24260
24415
  "$members$": {
24261
24416
  "component": [1],
24262
- "componentProps": [16, "component-props"],
24417
+ "componentProps": [16],
24263
24418
  "routerDirection": [1, "router-direction"],
24264
- "routerAnimation": [16, "router-animation"]
24419
+ "routerAnimation": [16]
24265
24420
  },
24266
24421
  "$listeners$": undefined,
24267
24422
  "$lazyBundleId$": "-",
@@ -25067,8 +25222,8 @@ class Picker {
25067
25222
  "delegate": [16],
25068
25223
  "hasController": [4, "has-controller"],
25069
25224
  "keyboardClose": [4, "keyboard-close"],
25070
- "enterAnimation": [16, "enter-animation"],
25071
- "leaveAnimation": [16, "leave-animation"],
25225
+ "enterAnimation": [16],
25226
+ "leaveAnimation": [16],
25072
25227
  "buttons": [16],
25073
25228
  "columns": [16],
25074
25229
  "cssClass": [1, "css-class"],
@@ -25076,7 +25231,7 @@ class Picker {
25076
25231
  "showBackdrop": [4, "show-backdrop"],
25077
25232
  "backdropDismiss": [4, "backdrop-dismiss"],
25078
25233
  "animated": [4],
25079
- "htmlAttributes": [16, "html-attributes"],
25234
+ "htmlAttributes": [16],
25080
25235
  "isOpen": [4, "is-open"],
25081
25236
  "trigger": [1],
25082
25237
  "presented": [32],
@@ -25506,23 +25661,6 @@ class PickerColumn {
25506
25661
  var _a;
25507
25662
  return el ? (_a = el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : el.innerText : '';
25508
25663
  };
25509
- /**
25510
- * Render an element that overlays the column. This element is for assistive
25511
- * tech to allow users to navigate the column up/down. This element should receive
25512
- * focus as it listens for synthesized keyboard events as required by the
25513
- * slider role: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/slider_role
25514
- */
25515
- this.renderAssistiveFocusable = () => {
25516
- const { activeItem } = this;
25517
- const valueText = this.getOptionValueText(activeItem);
25518
- /**
25519
- * When using the picker, the valuetext provides important context that valuenow
25520
- * does not. Additionally, using non-zero valuemin/valuemax values can cause
25521
- * WebKit to incorrectly announce numeric valuetext values (such as a year
25522
- * like "2024") as percentages: https://bugs.webkit.org/show_bug.cgi?id=273126
25523
- */
25524
- 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) }));
25525
- };
25526
25664
  }
25527
25665
  ariaLabelChanged(newValue) {
25528
25666
  this.ariaLabel = newValue;
@@ -25663,33 +25801,14 @@ class PickerColumn {
25663
25801
  render() {
25664
25802
  const { color, disabled, isActive, numericInput } = this;
25665
25803
  const mode = getIonMode$1(this);
25666
- return (hAsync(Host, { key: 'ea0280355b2f87895bf7dddd289ccf473aa759f3', class: createColorClasses$1(color, {
25804
+ return (hAsync(Host, { key: 'db903fd415f8a2d91994dececca481c1af8ba6a9', class: createColorClasses$1(color, {
25667
25805
  [mode]: true,
25668
25806
  ['picker-column-active']: isActive,
25669
25807
  ['picker-column-numeric-input']: numericInput,
25670
25808
  ['picker-column-disabled']: disabled,
25671
- }) }, this.renderAssistiveFocusable(), hAsync("slot", { key: '482992131cdeb85b1f61430d7fe1322a16345769', name: "prefix" }), hAsync("div", { key: '43f7f80d621d411ef366b3ca1396299e8c9a0c97', "aria-hidden": "true", class: "picker-opts", ref: (el) => {
25809
+ }) }, hAsync("slot", { key: '02ce9e1dd7df91afcd50b06416552bcffb5dec98', name: "prefix" }), hAsync("div", { key: '6dfd7d2429bec19244a6b1afb4448121963a031b', class: "picker-opts", ref: (el) => {
25672
25810
  this.scrollEl = el;
25673
- },
25674
- /**
25675
- * When an element has an overlay scroll style and
25676
- * a fixed height, Firefox will focus the scrollable
25677
- * container if the content exceeds the container's
25678
- * dimensions.
25679
- *
25680
- * This causes keyboard navigation to focus to this
25681
- * element instead of going to the next element in
25682
- * the tab order.
25683
- *
25684
- * The desired behavior is for the user to be able to
25685
- * focus the assistive focusable element and tab to
25686
- * the next element in the tab order. Instead of tabbing
25687
- * to this element.
25688
- *
25689
- * To prevent this, we set the tabIndex to -1. This
25690
- * will match the behavior of the other browsers.
25691
- */
25692
- 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" })));
25811
+ }, 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" })));
25693
25812
  }
25694
25813
  get el() { return getElement(this); }
25695
25814
  static get watchers() { return {
@@ -26081,9 +26200,9 @@ const DECELERATION_FRICTION = 0.97;
26081
26200
  const MAX_PICKER_SPEED = 90;
26082
26201
  const TRANSITION_DURATION = 150;
26083
26202
 
26084
- 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}";
26203
+ 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}";
26085
26204
 
26086
- 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)}";
26205
+ 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)}";
26087
26206
 
26088
26207
  class PickerColumnOption {
26089
26208
  constructor(hostRef) {
@@ -26175,7 +26294,7 @@ class PickerColumnOption {
26175
26294
  return (hAsync(Host, { key: 'f816729941aabcb31ddfdce3ffe2e2139030d715', class: createColorClasses$1(color, {
26176
26295
  [mode]: true,
26177
26296
  ['option-disabled']: disabled,
26178
- }) }, hAsync("button", { key: '48dff7833bb60fc8331cd353a0885e6affa683d1', tabindex: "-1", "aria-label": ariaLabel, disabled: disabled, onClick: () => this.onClick() }, hAsync("slot", { key: 'f9224d0e7b7aa6c05b29abfdcfe0f30ad6ee3141' }))));
26297
+ }) }, hAsync("div", { key: 'd942de84fd14d7dc06b1e5cf4f7920d1dc3c6371', class: 'picker-column-option-button', role: "button", "aria-label": ariaLabel, onClick: () => this.onClick() }, hAsync("slot", { key: 'b0df5717b42209e649097209a01476e1a66f5c5c' }))));
26179
26298
  }
26180
26299
  get el() { return getElement(this); }
26181
26300
  static get watchers() { return {
@@ -27603,10 +27722,10 @@ class Popover {
27603
27722
  "hasController": [4, "has-controller"],
27604
27723
  "delegate": [16],
27605
27724
  "overlayIndex": [2, "overlay-index"],
27606
- "enterAnimation": [16, "enter-animation"],
27607
- "leaveAnimation": [16, "leave-animation"],
27725
+ "enterAnimation": [16],
27726
+ "leaveAnimation": [16],
27608
27727
  "component": [1],
27609
- "componentProps": [16, "component-props"],
27728
+ "componentProps": [16],
27610
27729
  "keyboardClose": [4, "keyboard-close"],
27611
27730
  "cssClass": [1, "css-class"],
27612
27731
  "backdropDismiss": [4, "backdrop-dismiss"],
@@ -27614,7 +27733,7 @@ class Popover {
27614
27733
  "showBackdrop": [4, "show-backdrop"],
27615
27734
  "translucent": [4],
27616
27735
  "animated": [4],
27617
- "htmlAttributes": [16, "html-attributes"],
27736
+ "htmlAttributes": [16],
27618
27737
  "triggerAction": [1, "trigger-action"],
27619
27738
  "trigger": [1],
27620
27739
  "size": [1],
@@ -28909,7 +29028,7 @@ class Range {
28909
29028
  "min": [2],
28910
29029
  "max": [2],
28911
29030
  "pin": [4],
28912
- "pinFormatter": [16, "pin-formatter"],
29031
+ "pinFormatter": [16],
28913
29032
  "snaps": [4],
28914
29033
  "step": [2],
28915
29034
  "ticks": [4],
@@ -29334,6 +29453,14 @@ class Refresher {
29334
29453
  this.beginRefresh();
29335
29454
  this.didRefresh = true;
29336
29455
  hapticImpact({ style: ImpactStyle.Light });
29456
+ /**
29457
+ * Clear focus from any active element to prevent scroll jumps
29458
+ * when the refresh completes
29459
+ */
29460
+ const activeElement = document.activeElement;
29461
+ if ((activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur) !== undefined) {
29462
+ activeElement.blur();
29463
+ }
29337
29464
  /**
29338
29465
  * Translate the content element otherwise when pointer is removed
29339
29466
  * from screen the scroll content will bounce back over the refresher
@@ -29749,6 +29876,15 @@ class Refresher {
29749
29876
  this.state = 8 /* RefresherState.Refreshing */;
29750
29877
  // place the content in a hangout position while it thinks
29751
29878
  this.setCss(this.pullMin, this.snapbackDuration, true, '');
29879
+ /**
29880
+ * Clear focus from any active element to prevent the browser
29881
+ * from restoring focus and causing scroll jumps after refresh.
29882
+ * This ensures the view stays at the top after refresh completes.
29883
+ */
29884
+ const activeElement = document.activeElement;
29885
+ if ((activeElement === null || activeElement === void 0 ? void 0 : activeElement.blur) !== undefined) {
29886
+ activeElement.blur();
29887
+ }
29752
29888
  // emit "refresh" because it was pulled down far enough
29753
29889
  // and they let go to begin refreshing
29754
29890
  this.ionRefresh.emit({
@@ -29831,7 +29967,7 @@ class Refresher {
29831
29967
  }
29832
29968
  render() {
29833
29969
  const mode = getIonMode$1(this);
29834
- return (hAsync(Host, { key: '8c7a5cc32da02a9cbeaa954258148683f60a6d1b', slot: "fixed", class: {
29970
+ return (hAsync(Host, { key: '2d1bd880877b698604542ab2d602d38b9504d975', slot: "fixed", class: {
29835
29971
  [mode]: true,
29836
29972
  // Used internally for styling
29837
29973
  [`refresher-${mode}`]: true,
@@ -30558,9 +30694,9 @@ class Route {
30558
30694
  "$members$": {
30559
30695
  "url": [1],
30560
30696
  "component": [1],
30561
- "componentProps": [16, "component-props"],
30562
- "beforeLeave": [16, "before-leave"],
30563
- "beforeEnter": [16, "before-enter"]
30697
+ "componentProps": [16],
30698
+ "beforeLeave": [16],
30699
+ "beforeEnter": [16]
30564
30700
  },
30565
30701
  "$listeners$": undefined,
30566
30702
  "$lazyBundleId$": "-",
@@ -31456,7 +31592,7 @@ class RouterLink {
31456
31592
  "href": [1],
31457
31593
  "rel": [1],
31458
31594
  "routerDirection": [1, "router-direction"],
31459
- "routerAnimation": [16, "router-animation"],
31595
+ "routerAnimation": [16],
31460
31596
  "target": [1]
31461
31597
  },
31462
31598
  "$listeners$": undefined,
@@ -31658,7 +31794,7 @@ class RouterOutlet {
31658
31794
  "delegate": [16],
31659
31795
  "animated": [4],
31660
31796
  "animation": [16],
31661
- "swipeHandler": [16, "swipe-handler"],
31797
+ "swipeHandler": [16],
31662
31798
  "commit": [64],
31663
31799
  "setRouteId": [64],
31664
31800
  "getRouteId": [64]
@@ -32959,7 +33095,8 @@ class SegmentView {
32959
33095
  handleScroll(ev) {
32960
33096
  var _a;
32961
33097
  const { scrollLeft, scrollWidth, clientWidth } = ev.target;
32962
- const scrollRatio = scrollLeft / (scrollWidth - clientWidth);
33098
+ const max = scrollWidth - clientWidth;
33099
+ const scrollRatio = (isRTL$1(this.el) ? -1 : 1) * (scrollLeft / max);
32963
33100
  this.ionSegmentViewScroll.emit({
32964
33101
  scrollRatio,
32965
33102
  isManualScroll: (_a = this.isManualScroll) !== null && _a !== void 0 ? _a : true,
@@ -33030,9 +33167,10 @@ class SegmentView {
33030
33167
  this.isManualScroll = false;
33031
33168
  this.resetScrollEndTimeout();
33032
33169
  const contentWidth = this.el.offsetWidth;
33170
+ const offset = index * contentWidth;
33033
33171
  this.el.scrollTo({
33034
33172
  top: 0,
33035
- left: index * contentWidth,
33173
+ left: (isRTL$1(this.el) ? -1 : 1) * offset,
33036
33174
  behavior: smoothScroll ? 'smooth' : 'instant',
33037
33175
  });
33038
33176
  }
@@ -33041,10 +33179,10 @@ class SegmentView {
33041
33179
  }
33042
33180
  render() {
33043
33181
  const { disabled, isManualScroll } = this;
33044
- return (hAsync(Host, { key: '754a374e89fd4dd682eb00497e717242a6f83357', class: {
33182
+ return (hAsync(Host, { key: 'e180b67bb3143a5f4611fb358c037be6fc782a8f', class: {
33045
33183
  'segment-view-disabled': disabled,
33046
33184
  'segment-view-scroll-disabled': isManualScroll === false,
33047
- } }, hAsync("slot", { key: '77366044eb61f0d4bba305bd6f0ef8fd1e25194b' })));
33185
+ } }, hAsync("slot", { key: '41c11d6a7406a10f5c64a2e73abfc072afd8fc73' })));
33048
33186
  }
33049
33187
  get el() { return getElement(this); }
33050
33188
  static get style() { return {
@@ -33109,6 +33247,10 @@ class Select {
33109
33247
  * is applied in both cases.
33110
33248
  */
33111
33249
  this.hasFocus = false;
33250
+ /**
33251
+ * Track validation state for proper aria-live announcements.
33252
+ */
33253
+ this.isInvalid = false;
33112
33254
  /**
33113
33255
  * The text to display on the cancel button.
33114
33256
  */
@@ -33231,9 +33373,12 @@ class Select {
33231
33373
  this.mutationO = watchForOptions(this.el, 'ion-select-option', async () => {
33232
33374
  this.updateOverlayOptions();
33233
33375
  });
33376
+ // Always set initial state
33377
+ this.isInvalid = checkInvalidState(this.el);
33234
33378
  }
33235
33379
  componentWillLoad() {
33236
33380
  this.inheritedAttributes = inheritAttributes$1(this.el, ['aria-label']);
33381
+ this.hintTextID = this.getHintTextID();
33237
33382
  }
33238
33383
  componentDidLoad() {
33239
33384
  /**
@@ -33257,6 +33402,11 @@ class Select {
33257
33402
  this.notchController.destroy();
33258
33403
  this.notchController = undefined;
33259
33404
  }
33405
+ // Clean up validation observer to prevent memory leaks.
33406
+ if (this.validationObserver) {
33407
+ this.validationObserver.disconnect();
33408
+ this.validationObserver = undefined;
33409
+ }
33260
33410
  }
33261
33411
  /**
33262
33412
  * Open the select overlay. The overlay is either an alert, action sheet, or popover,
@@ -33727,11 +33877,11 @@ class Select {
33727
33877
  }
33728
33878
  renderListbox() {
33729
33879
  const { disabled, inputId, isExpanded, required } = this;
33730
- 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) }));
33880
+ 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) }));
33731
33881
  }
33732
33882
  getHintTextID() {
33733
- const { el, helperText, errorText, helperTextId, errorTextId } = this;
33734
- if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
33883
+ const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
33884
+ if (isInvalid && errorText) {
33735
33885
  return errorTextId;
33736
33886
  }
33737
33887
  if (helperText) {
@@ -33743,10 +33893,10 @@ class Select {
33743
33893
  * Renders the helper text or error text values
33744
33894
  */
33745
33895
  renderHintText() {
33746
- const { helperText, errorText, helperTextId, errorTextId } = this;
33896
+ const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
33747
33897
  return [
33748
- hAsync("div", { id: helperTextId, class: "helper-text", part: "supporting-text helper-text" }, helperText),
33749
- hAsync("div", { id: errorTextId, class: "error-text", part: "supporting-text error-text" }, errorText),
33898
+ hAsync("div", { id: helperTextId, class: "helper-text", part: "supporting-text helper-text", "aria-live": "polite" }, !isInvalid ? helperText : null),
33899
+ hAsync("div", { id: errorTextId, class: "error-text", part: "supporting-text error-text", role: "alert" }, isInvalid ? errorText : null),
33750
33900
  ];
33751
33901
  }
33752
33902
  /**
@@ -33794,7 +33944,7 @@ class Select {
33794
33944
  * TODO(FW-5592): Remove hasStartEndSlots condition
33795
33945
  */
33796
33946
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
33797
- return (hAsync(Host, { key: 'c03fb65e8fc9f9aab295e07b282377d57d910519', onClick: this.onClick, class: createColorClasses$1(this.color, {
33947
+ return (hAsync(Host, { key: '35b5e18e6f79a802ff2d46d1242e80ff755cc0b9', onClick: this.onClick, class: createColorClasses$1(this.color, {
33798
33948
  [mode]: true,
33799
33949
  'in-item': inItem,
33800
33950
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -33812,7 +33962,7 @@ class Select {
33812
33962
  [`select-justify-${justify}`]: justifyEnabled,
33813
33963
  [`select-shape-${shape}`]: shape !== undefined,
33814
33964
  [`select-label-placement-${labelPlacement}`]: true,
33815
- }) }, 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()));
33965
+ }) }, 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()));
33816
33966
  }
33817
33967
  get el() { return getElement(this); }
33818
33968
  static get watchers() { return {
@@ -33853,6 +34003,8 @@ class Select {
33853
34003
  "required": [4],
33854
34004
  "isExpanded": [32],
33855
34005
  "hasFocus": [32],
34006
+ "isInvalid": [32],
34007
+ "hintTextID": [32],
33856
34008
  "open": [64]
33857
34009
  },
33858
34010
  "$listeners$": undefined,
@@ -34437,6 +34589,7 @@ class TabBar {
34437
34589
  this.ionTabBarChanged = createEvent(this, "ionTabBarChanged", 7);
34438
34590
  this.ionTabBarLoaded = createEvent(this, "ionTabBarLoaded", 7);
34439
34591
  this.keyboardCtrl = null;
34592
+ this.didLoad = false;
34440
34593
  this.keyboardVisible = false;
34441
34594
  /**
34442
34595
  * If `true`, the tab bar will be translucent.
@@ -34446,14 +34599,29 @@ class TabBar {
34446
34599
  this.translucent = false;
34447
34600
  }
34448
34601
  selectedTabChanged() {
34602
+ // Skip the initial watcher call that happens during component load
34603
+ // We handle that in componentDidLoad to ensure children are ready
34604
+ if (!this.didLoad) {
34605
+ return;
34606
+ }
34449
34607
  if (this.selectedTab !== undefined) {
34450
34608
  this.ionTabBarChanged.emit({
34451
34609
  tab: this.selectedTab,
34452
34610
  });
34453
34611
  }
34454
34612
  }
34455
- componentWillLoad() {
34456
- this.selectedTabChanged();
34613
+ componentDidLoad() {
34614
+ this.ionTabBarLoaded.emit();
34615
+ // Set the flag to indicate the component has loaded
34616
+ // This allows the watcher to emit changes from this point forward
34617
+ this.didLoad = true;
34618
+ // Emit the initial selected tab after the component is fully loaded
34619
+ // This ensures all child components (ion-tab-button) are ready
34620
+ if (this.selectedTab !== undefined) {
34621
+ this.ionTabBarChanged.emit({
34622
+ tab: this.selectedTab,
34623
+ });
34624
+ }
34457
34625
  }
34458
34626
  async connectedCallback() {
34459
34627
  this.keyboardCtrl = await createKeyboardController(async (keyboardOpen, waitForResize) => {
@@ -34473,18 +34641,15 @@ class TabBar {
34473
34641
  this.keyboardCtrl.destroy();
34474
34642
  }
34475
34643
  }
34476
- componentDidLoad() {
34477
- this.ionTabBarLoaded.emit();
34478
- }
34479
34644
  render() {
34480
34645
  const { color, translucent, keyboardVisible } = this;
34481
34646
  const mode = getIonMode$1(this);
34482
34647
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
34483
- return (hAsync(Host, { key: '275dc6c1b30f6928ce9039b2f445208bb3500ddc', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
34648
+ return (hAsync(Host, { key: '388ec37ce308035bab78d6c9a016bb616e9517a9', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
34484
34649
  [mode]: true,
34485
34650
  'tab-bar-translucent': translucent,
34486
34651
  'tab-bar-hidden': shouldHide,
34487
- }) }, hAsync("slot", { key: 'ceac20128d75c6a4a0f445f2df8deb8cc71fc4da' })));
34652
+ }) }, hAsync("slot", { key: 'ce10ade2b86725e24f3254516483eeedd8ecb16a' })));
34488
34653
  }
34489
34654
  get el() { return getElement(this); }
34490
34655
  static get watchers() { return {
@@ -34669,29 +34834,27 @@ class Tabs {
34669
34834
  }
34670
34835
  this.ionNavWillLoad.emit();
34671
34836
  }
34672
- componentWillRender() {
34837
+ componentDidLoad() {
34838
+ this.updateTabBar();
34839
+ }
34840
+ componentDidUpdate() {
34841
+ this.updateTabBar();
34842
+ }
34843
+ updateTabBar() {
34673
34844
  const tabBar = this.el.querySelector('ion-tab-bar');
34674
- if (tabBar) {
34675
- let tab = this.selectedTab ? this.selectedTab.tab : undefined;
34676
- // Fallback: if no selectedTab is set but we're using router mode,
34677
- // determine the active tab from the current URL. This works around
34678
- // timing issues in React Router integration where setRouteId may not
34679
- // be called in time for the initial render.
34680
- // TODO(FW-6724): Remove this with React Router upgrade
34681
- if (!tab && this.useRouter && typeof window !== 'undefined') {
34682
- const currentPath = window.location.pathname;
34683
- const tabButtons = this.el.querySelectorAll('ion-tab-button');
34684
- // Look for a tab button that matches the current path pattern
34685
- for (const tabButton of tabButtons) {
34686
- const tabId = tabButton.getAttribute('tab');
34687
- if (tabId && currentPath.includes(tabId)) {
34688
- tab = tabId;
34689
- break;
34690
- }
34691
- }
34692
- }
34693
- tabBar.selectedTab = tab;
34845
+ if (!tabBar) {
34846
+ return;
34694
34847
  }
34848
+ const tab = this.selectedTab ? this.selectedTab.tab : undefined;
34849
+ // If tabs has no selected tab but tab-bar already has a selected-tab set,
34850
+ // don't overwrite it. This handles cases where tab-bar is used without ion-tab elements.
34851
+ if (tab === undefined) {
34852
+ return;
34853
+ }
34854
+ if (tabBar.selectedTab === tab) {
34855
+ return;
34856
+ }
34857
+ tabBar.selectedTab = tab;
34695
34858
  }
34696
34859
  /**
34697
34860
  * 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.
@@ -34750,6 +34913,7 @@ class Tabs {
34750
34913
  this.selectedTab = selectedTab;
34751
34914
  this.ionTabsWillChange.emit({ tab: selectedTab.tab });
34752
34915
  selectedTab.active = true;
34916
+ this.updateTabBar();
34753
34917
  return Promise.resolve();
34754
34918
  }
34755
34919
  tabSwitch() {
@@ -34784,7 +34948,7 @@ class Tabs {
34784
34948
  return Array.from(this.el.querySelectorAll('ion-tab'));
34785
34949
  }
34786
34950
  render() {
34787
- 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" })));
34951
+ 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" })));
34788
34952
  }
34789
34953
  get el() { return getElement(this); }
34790
34954
  static get style() { return tabsCss; }
@@ -34879,6 +35043,10 @@ class Textarea {
34879
35043
  * is applied in both cases.
34880
35044
  */
34881
35045
  this.hasFocus = false;
35046
+ /**
35047
+ * Track validation state for proper aria-live announcements
35048
+ */
35049
+ this.isInvalid = false;
34882
35050
  /**
34883
35051
  * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.
34884
35052
  * Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`.
@@ -35028,6 +35196,8 @@ class Textarea {
35028
35196
  const { el } = this;
35029
35197
  this.slotMutationController = createSlotMutationController(el, ['label', 'start', 'end'], () => forceUpdate());
35030
35198
  this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
35199
+ // Always set initial state
35200
+ this.isInvalid = checkInvalidState(this.el);
35031
35201
  this.debounceChanged();
35032
35202
  }
35033
35203
  disconnectedCallback() {
@@ -35039,6 +35209,11 @@ class Textarea {
35039
35209
  this.notchController.destroy();
35040
35210
  this.notchController = undefined;
35041
35211
  }
35212
+ // Clean up validation observer to prevent memory leaks
35213
+ if (this.validationObserver) {
35214
+ this.validationObserver.disconnect();
35215
+ this.validationObserver = undefined;
35216
+ }
35042
35217
  }
35043
35218
  componentWillLoad() {
35044
35219
  this.inheritedAttributes = Object.assign(Object.assign({}, inheritAriaAttributes(this.el)), inheritAttributes$1(this.el, ['data-form-type', 'title', 'tabindex', 'dir']));
@@ -35209,15 +35384,15 @@ class Textarea {
35209
35384
  * Renders the helper text or error text values
35210
35385
  */
35211
35386
  renderHintText() {
35212
- const { helperText, errorText, helperTextId, errorTextId } = this;
35387
+ const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
35213
35388
  return [
35214
- hAsync("div", { id: helperTextId, class: "helper-text" }, helperText),
35215
- hAsync("div", { id: errorTextId, class: "error-text" }, errorText),
35389
+ hAsync("div", { id: helperTextId, class: "helper-text", "aria-live": "polite" }, !isInvalid ? helperText : null),
35390
+ hAsync("div", { id: errorTextId, class: "error-text", role: "alert" }, isInvalid ? errorText : null),
35216
35391
  ];
35217
35392
  }
35218
35393
  getHintTextID() {
35219
- const { el, helperText, errorText, helperTextId, errorTextId } = this;
35220
- if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
35394
+ const { isInvalid, helperText, errorText, helperTextId, errorTextId } = this;
35395
+ if (isInvalid && errorText) {
35221
35396
  return errorTextId;
35222
35397
  }
35223
35398
  if (helperText) {
@@ -35276,7 +35451,7 @@ class Textarea {
35276
35451
  * TODO(FW-5592): Remove hasStartEndSlots condition
35277
35452
  */
35278
35453
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
35279
- return (hAsync(Host, { key: 'd9f2ede0107987fc42c99e310cd2336bad5a5755', class: createColorClasses$1(this.color, {
35454
+ return (hAsync(Host, { key: 'a70a62d7aae3831a50acd74f60b930925ada1326', class: createColorClasses$1(this.color, {
35280
35455
  [mode]: true,
35281
35456
  'has-value': hasValue,
35282
35457
  'has-focus': hasFocus,
@@ -35285,7 +35460,7 @@ class Textarea {
35285
35460
  [`textarea-shape-${shape}`]: shape !== undefined,
35286
35461
  [`textarea-label-placement-${labelPlacement}`]: true,
35287
35462
  'textarea-disabled': disabled,
35288
- }) }, 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()));
35463
+ }) }, 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()));
35289
35464
  }
35290
35465
  get el() { return getElement(this); }
35291
35466
  static get watchers() { return {
@@ -35323,13 +35498,14 @@ class Textarea {
35323
35498
  "autoGrow": [516, "auto-grow"],
35324
35499
  "value": [1025],
35325
35500
  "counter": [4],
35326
- "counterFormatter": [16, "counter-formatter"],
35501
+ "counterFormatter": [16],
35327
35502
  "errorText": [1, "error-text"],
35328
35503
  "helperText": [1, "helper-text"],
35329
35504
  "label": [1],
35330
35505
  "labelPlacement": [1, "label-placement"],
35331
35506
  "shape": [1],
35332
35507
  "hasFocus": [32],
35508
+ "isInvalid": [32],
35333
35509
  "setFocus": [64],
35334
35510
  "getInputElement": [64]
35335
35511
  },
@@ -36227,8 +36403,8 @@ class Toast {
36227
36403
  "delegate": [16],
36228
36404
  "hasController": [4, "has-controller"],
36229
36405
  "color": [513],
36230
- "enterAnimation": [16, "enter-animation"],
36231
- "leaveAnimation": [16, "leave-animation"],
36406
+ "enterAnimation": [16],
36407
+ "leaveAnimation": [16],
36232
36408
  "cssClass": [1, "css-class"],
36233
36409
  "duration": [2],
36234
36410
  "header": [1],
@@ -36241,7 +36417,7 @@ class Toast {
36241
36417
  "translucent": [4],
36242
36418
  "animated": [4],
36243
36419
  "icon": [1],
36244
- "htmlAttributes": [16, "html-attributes"],
36420
+ "htmlAttributes": [16],
36245
36421
  "swipeGesture": [1, "swipe-gesture"],
36246
36422
  "isOpen": [4, "is-open"],
36247
36423
  "trigger": [1],
@@ -36406,7 +36582,6 @@ class Toggle {
36406
36582
  const { checked, value } = this;
36407
36583
  const isNowChecked = !checked;
36408
36584
  this.checked = isNowChecked;
36409
- this.setFocus();
36410
36585
  this.ionChange.emit({
36411
36586
  checked: isNowChecked,
36412
36587
  value,
@@ -36457,9 +36632,7 @@ class Toggle {
36457
36632
  return this.value || '';
36458
36633
  }
36459
36634
  setFocus() {
36460
- if (this.focusEl) {
36461
- this.focusEl.focus();
36462
- }
36635
+ this.el.focus();
36463
36636
  }
36464
36637
  renderOnOffSwitchLabels(mode, checked) {
36465
36638
  const icon = this.getSwitchLabelIcon(mode, checked);
@@ -36509,7 +36682,7 @@ class Toggle {
36509
36682
  const value = this.getValue();
36510
36683
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
36511
36684
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
36512
- 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, {
36685
+ 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, {
36513
36686
  [mode]: true,
36514
36687
  'in-item': hostContext('ion-item', el),
36515
36688
  'toggle-activated': activated,
@@ -36519,10 +36692,10 @@ class Toggle {
36519
36692
  [`toggle-alignment-${alignment}`]: alignment !== undefined,
36520
36693
  [`toggle-label-placement-${labelPlacement}`]: true,
36521
36694
  [`toggle-${rtl}`]: true,
36522
- }) }, 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: {
36695
+ }) }, 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: {
36523
36696
  'label-text-wrapper': true,
36524
36697
  'label-text-wrapper-hidden': !hasLabel,
36525
- }, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: 'd88e1e3dcdd8293f6b61f237cd7a0511dcbce300' }), this.renderHintText()), hAsync("div", { key: '0e924225f5f0caf3c88738acb6c557bd8c1b68f6', class: "native-wrapper" }, this.renderToggleControl()))));
36698
+ }, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: '8322b9d54dc7edeb4e16fefcde9f7ebca8d5c3e1' }), this.renderHintText()), hAsync("div", { key: 'fe6984143db817a7b3020a3f57cf5418fc3dcc0e', class: "native-wrapper" }, this.renderToggleControl()))));
36526
36699
  }
36527
36700
  get el() { return getElement(this); }
36528
36701
  static get watchers() { return {
@@ -37657,7 +37830,7 @@ var BUILD = {
37657
37830
  vdomRender: true,
37658
37831
  vdomStyle: true,
37659
37832
  vdomText: true,
37660
- watchCallback: true,
37833
+ propChangeCallback: true,
37661
37834
  taskQueue: true,
37662
37835
  hotModuleReplacement: false,
37663
37836
  isDebug: false,
@@ -37705,7 +37878,7 @@ var NAMESPACE = (
37705
37878
  );
37706
37879
 
37707
37880
  /*
37708
- Stencil Hydrate Runner v4.36.2 | MIT Licensed | https://stenciljs.com
37881
+ Stencil Hydrate Runner v4.38.0 | MIT Licensed | https://stenciljs.com
37709
37882
  */
37710
37883
  var __defProp = Object.defineProperty;
37711
37884
  var __export = (target, all) => {
@@ -52382,6 +52555,9 @@ var _colonHostContextRe = createSupportsRuleRe(":host-context");
52382
52555
  var setMode = (handler) => modeResolutionChain.push(handler);
52383
52556
  var CAPTURE_EVENT_SUFFIX = "Capture";
52384
52557
  var CAPTURE_EVENT_REGEX = new RegExp(CAPTURE_EVENT_SUFFIX + "$");
52558
+ var baseClass = BUILD.lazyLoad ? class {
52559
+ } : globalThis.HTMLElement || class {
52560
+ };
52385
52561
 
52386
52562
  // src/compiler/html/canonical-link.ts
52387
52563
  var updateCanonicalLink = (doc, href) => {