@ionic/core 9.0.10-dev.11792788258.1f71cfee → 9.0.10-dev.11793383958.19a7d413

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 (376) hide show
  1. package/components/index.js +1 -1
  2. package/components/ion-accordion.js +1 -1
  3. package/components/ion-action-sheet.js +1 -1
  4. package/components/ion-alert.js +1 -1
  5. package/components/ion-app.js +1 -1
  6. package/components/ion-back-button.js +1 -1
  7. package/components/ion-breadcrumb.js +1 -1
  8. package/components/ion-button.js +1 -1
  9. package/components/ion-card.js +1 -1
  10. package/components/ion-checkbox.js +1 -1
  11. package/components/ion-col.js +1 -1
  12. package/components/ion-content.js +1 -1
  13. package/components/ion-datetime-button.js +1 -1
  14. package/components/ion-datetime.js +1 -1
  15. package/components/ion-fab-button.js +1 -1
  16. package/components/ion-footer.js +1 -1
  17. package/components/ion-header.js +1 -1
  18. package/components/ion-img.js +1 -1
  19. package/components/ion-infinite-scroll.js +1 -1
  20. package/components/ion-input-otp.js +1 -1
  21. package/components/ion-input-password-toggle.js +1 -1
  22. package/components/ion-input.js +1 -1
  23. package/components/ion-item-options.js +1 -1
  24. package/components/ion-item-sliding.js +1 -1
  25. package/components/ion-item.js +1 -1
  26. package/components/ion-label.js +1 -1
  27. package/components/ion-loading.js +1 -1
  28. package/components/ion-menu-button.js +1 -1
  29. package/components/ion-menu-toggle.js +1 -1
  30. package/components/ion-menu.js +1 -1
  31. package/components/ion-modal.js +1 -1
  32. package/components/ion-nav.js +1 -1
  33. package/components/ion-picker-column-option.js +1 -1
  34. package/components/ion-picker-column.js +1 -1
  35. package/components/ion-picker.js +1 -1
  36. package/components/ion-popover.js +1 -1
  37. package/components/ion-progress-bar.js +1 -1
  38. package/components/ion-radio-group.js +1 -1
  39. package/components/ion-radio.js +1 -1
  40. package/components/ion-range.js +1 -1
  41. package/components/ion-refresher-content.js +1 -1
  42. package/components/ion-refresher.js +1 -1
  43. package/components/ion-reorder-group.js +1 -1
  44. package/components/ion-router-outlet.js +1 -1
  45. package/components/ion-router.js +1 -1
  46. package/components/ion-searchbar.js +1 -1
  47. package/components/ion-segment-button.js +1 -1
  48. package/components/ion-segment-view.js +1 -1
  49. package/components/ion-segment.js +1 -1
  50. package/components/ion-select-modal.js +1 -1
  51. package/components/ion-select-popover.js +1 -1
  52. package/components/ion-select.js +1 -1
  53. package/components/ion-tab-button.js +1 -1
  54. package/components/ion-tab.js +1 -1
  55. package/components/ion-textarea.js +1 -1
  56. package/components/ion-title.js +1 -1
  57. package/components/ion-toast.js +1 -1
  58. package/components/ion-toggle.js +1 -1
  59. package/components/{p-PkD1iLNN.js → p--cshUOAU.js} +1 -1
  60. package/components/{p-D8FyR2IB.js → p-B02CcbPD.js} +1 -1
  61. package/components/{p-CUQjkOdi.js → p-B4IBdPVJ.js} +1 -1
  62. package/components/p-BODcC-C0.js +4 -0
  63. package/components/p-BVNUhOOf.js +4 -0
  64. package/components/{p-BZ1k9WL7.js → p-Ba9_OzSY.js} +1 -1
  65. package/components/p-Bd8hg9FK.js +4 -0
  66. package/components/{p-3avHDbEF.js → p-BqyLLYLm.js} +1 -1
  67. package/components/p-C1AxSUnp.js +4 -0
  68. package/components/{p-DwTzX8Vi.js → p-CKTjkpAq.js} +1 -1
  69. package/components/{p-Dah8BCNg.js → p-CKiqp4Vl.js} +1 -1
  70. package/components/p-CONpe3oX.js +4 -0
  71. package/components/p-CVrOcN5N.js +4 -0
  72. package/components/p-CYctYy9B.js +4 -0
  73. package/components/{p-C-SO5kIs.js → p-C_gnmBt2.js} +1 -1
  74. package/components/{p-DnBabjgY.js → p-CxEV3Vwy.js} +1 -1
  75. package/components/p-Cyajikho.js +4 -0
  76. package/components/p-D0nwlsl_.js +4 -0
  77. package/components/{p-BT2InaHz.js → p-DBtFJlTi.js} +1 -1
  78. package/components/{p-BBsseItU.js → p-DD92Fw3n.js} +1 -1
  79. package/components/{p-kKGBuIkf.js → p-DDI6VLW9.js} +1 -1
  80. package/components/{p-LkEGRiq0.js → p-DfDIY2oP.js} +1 -1
  81. package/components/{p-Dj4J3LkD.js → p-Dojwmvde.js} +1 -1
  82. package/components/p-Drpw2dyl.js +4 -0
  83. package/components/{p-07wRJfkt.js → p-GpqwNbxf.js} +1 -1
  84. package/components/p-IQN1T5zw.js +4 -0
  85. package/components/{p-DTGCMApY.js → p-ODGeXc3M.js} +1 -1
  86. package/components/p-SHHIB5F0.js +4 -0
  87. package/components/{p-D5_mEbGJ.js → p-V1THdfzs.js} +1 -1
  88. package/components/p-YNnH1_Hs.js +4 -0
  89. package/components/{p-C8BAigo3.js → p-ZrYBjOcc.js} +1 -1
  90. package/components/p-_y7kwBO8.js +4 -0
  91. package/components/{p-BrrMFd9K.js → p-jsVMT15X.js} +1 -1
  92. package/components/{p-7NbIvzb4.js → p-r59A3wQk.js} +1 -1
  93. package/components/{p-Dy7x-KDF.js → p-yGD6MBgf.js} +1 -1
  94. package/dist/cjs/{animation-UiXhXV49.js → animation-DcgLg_PI.js} +1 -1
  95. package/dist/cjs/{attribute-controller-0-lwbVEj.js → attribute-controller-BjTE2TOf.js} +1 -1
  96. package/dist/cjs/{button-active-DzN1aPt-.js → button-active-FdsfRDY_.js} +1 -1
  97. package/dist/cjs/{capacitor-BTjfXFlK.js → capacitor-C6Pp4Z7A.js} +1 -1
  98. package/dist/cjs/{dir-Bma_9Lqh.js → dir-zwDPRE5K.js} +1 -1
  99. package/dist/cjs/{framework-delegate-hNMKEiQC.js → framework-delegate-JbKIVMzR.js} +1 -1
  100. package/dist/cjs/{haptic-BD5qPgy8.js → haptic--4QteuuM.js} +1 -1
  101. package/dist/cjs/{helpers-BrETKUUX.js → helpers-Cqr69qxA.js} +3 -2
  102. package/dist/cjs/{index-bwclzjks.js → index-BQpSekmz.js} +2 -2
  103. package/dist/cjs/{index-BTc0Jnhx.js → index-BhWiDK25.js} +3 -3
  104. package/dist/cjs/{index-DMz2Eyis.js → index-CNaZ6SYM.js} +1 -1
  105. package/dist/cjs/{index-DNBYnlrc.js → index-DCfr5hz-.js} +3 -3
  106. package/dist/cjs/index.cjs.js +9 -9
  107. package/dist/cjs/{input-shims-CRmdShL9.js → input-shims-2AsXPZ5m.js} +9 -8
  108. package/dist/cjs/ion-accordion_2.cjs.entry.js +2 -2
  109. package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
  110. package/dist/cjs/ion-alert.cjs.entry.js +19 -19
  111. package/dist/cjs/ion-app_8.cjs.entry.js +18 -18
  112. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  113. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
  114. package/dist/cjs/ion-button_2.cjs.entry.js +3 -3
  115. package/dist/cjs/ion-card_5.cjs.entry.js +3 -3
  116. package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
  117. package/dist/cjs/ion-col_3.cjs.entry.js +12 -14
  118. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  119. package/dist/cjs/ion-datetime.cjs.entry.js +9 -8
  120. package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
  121. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  122. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -3
  123. package/dist/cjs/ion-input-otp.cjs.entry.js +128 -12
  124. package/dist/cjs/ion-input.cjs.entry.js +3 -3
  125. package/dist/cjs/ion-item-option_3.cjs.entry.js +9 -9
  126. package/dist/cjs/ion-item_8.cjs.entry.js +10 -10
  127. package/dist/cjs/ion-loading.cjs.entry.js +5 -5
  128. package/dist/cjs/ion-menu_3.cjs.entry.js +6 -6
  129. package/dist/cjs/ion-modal.cjs.entry.js +10 -10
  130. package/dist/cjs/ion-nav_2.cjs.entry.js +5 -5
  131. package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
  132. package/dist/cjs/ion-picker-column.cjs.entry.js +4 -4
  133. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  134. package/dist/cjs/ion-popover.cjs.entry.js +14 -28
  135. package/dist/cjs/ion-progress-bar.cjs.entry.js +5 -6
  136. package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
  137. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  138. package/dist/cjs/ion-refresher_2.cjs.entry.js +6 -6
  139. package/dist/cjs/ion-reorder_2.cjs.entry.js +5 -5
  140. package/dist/cjs/ion-route_4.cjs.entry.js +124 -19
  141. package/dist/cjs/ion-searchbar.cjs.entry.js +2 -2
  142. package/dist/cjs/ion-segment-view.cjs.entry.js +1 -1
  143. package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
  144. package/dist/cjs/ion-select-modal.cjs.entry.js +4 -4
  145. package/dist/cjs/ion-select_3.cjs.entry.js +5 -5
  146. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +5 -5
  147. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  148. package/dist/cjs/ion-textarea.cjs.entry.js +3 -3
  149. package/dist/cjs/ion-toast.cjs.entry.js +5 -5
  150. package/dist/cjs/ion-toggle.cjs.entry.js +4 -4
  151. package/dist/cjs/ionic.cjs.js +1 -1
  152. package/dist/cjs/{ios.transition-CN092Fh6.js → ios.transition-Ca6XODo9.js} +15 -15
  153. package/dist/cjs/{keyboard-BMpscicm.js → keyboard-BlHp4a_c.js} +1 -1
  154. package/dist/cjs/{keyboard-4OBzkjOG.js → keyboard-c2_I35b-.js} +4 -4
  155. package/dist/cjs/{keyboard-controller-DZE97OtR.js → keyboard-controller-DHS0BgXp.js} +2 -2
  156. package/dist/cjs/loader.cjs.js +1 -1
  157. package/dist/cjs/{md.transition-B6961Ny9.js → md.transition-D8SfNYEp.js} +4 -4
  158. package/dist/cjs/{overlays-BbVQG3UT.js → overlays-CLld3axA.js} +2 -2
  159. package/dist/cjs/{slot-mutation-controller-CRa_cKOh.js → slot-mutation-controller-B2OfJEBH.js} +2 -2
  160. package/dist/cjs/{status-tap-hRIvObiJ.js → status-tap-CDA0Y3Ad.js} +3 -3
  161. package/dist/cjs/{swipe-back-C-aigThB.js → swipe-back-Idb4gqUk.js} +2 -2
  162. package/dist/collection/components/alert/alert.js +11 -11
  163. package/dist/collection/components/col/col.js +12 -14
  164. package/dist/collection/components/datetime/datetime.js +5 -4
  165. package/dist/collection/components/input-otp/input-otp.ios.css +30 -5
  166. package/dist/collection/components/input-otp/input-otp.js +191 -12
  167. package/dist/collection/components/input-otp/input-otp.md.css +30 -5
  168. package/dist/collection/components/item/item.js +4 -5
  169. package/dist/collection/components/item-options/item-options.js +2 -2
  170. package/dist/collection/components/item-sliding/item-sliding.js +4 -5
  171. package/dist/collection/components/label/label.js +3 -4
  172. package/dist/collection/components/popover/animations/ios.enter.js +3 -4
  173. package/dist/collection/components/popover/animations/md.enter.js +3 -4
  174. package/dist/collection/components/popover/popover.js +2 -17
  175. package/dist/collection/components/progress-bar/progress-bar.js +3 -5
  176. package/dist/collection/components/route/route.js +9 -1
  177. package/dist/collection/components/route-redirect/route-redirect.js +1 -1
  178. package/dist/collection/components/router/utils/constants.js +2 -0
  179. package/dist/collection/components/router/utils/matching.js +97 -14
  180. package/dist/collection/components/router/utils/path.js +17 -3
  181. package/dist/collection/components/title/title.js +3 -4
  182. package/dist/collection/utils/helpers.js +2 -1
  183. package/dist/collection/utils/input-shims/hacks/common.js +4 -4
  184. package/dist/collection/utils/rtl/dir.js +1 -1
  185. package/dist/collection/utils/transition/ios.transition.js +11 -12
  186. package/dist/docs.json +92 -3
  187. package/dist/esm/{animation-C_V9lXzL.js → animation-DmtJpz89.js} +1 -1
  188. package/dist/esm/{attribute-controller-ItNOXNp9.js → attribute-controller-DPMIcbef.js} +1 -1
  189. package/dist/esm/{button-active-rB-Ct9KZ.js → button-active-DVk40Sjl.js} +1 -1
  190. package/dist/esm/{capacitor-BY7l8HgR.js → capacitor-CHJaJ9aX.js} +1 -1
  191. package/dist/esm/{dir-Dj4J3LkD.js → dir-Dojwmvde.js} +1 -1
  192. package/dist/esm/{framework-delegate-CW5_kWfc.js → framework-delegate-CDjM1vRH.js} +1 -1
  193. package/dist/esm/{haptic-ES_sSPLn.js → haptic-WXfMCob9.js} +1 -1
  194. package/dist/esm/{helpers-p94IkmEA.js → helpers-BJqKF1pr.js} +3 -2
  195. package/dist/esm/{index-DLDbwWW7.js → index-Clv8QC5L.js} +2 -2
  196. package/dist/esm/{index-txcXIB3P.js → index-DIouXecD.js} +3 -3
  197. package/dist/esm/{index-CBkVO5D0.js → index-TkLga3ma.js} +1 -1
  198. package/dist/esm/{index-vgPixHgF.js → index-z9vdZN7I.js} +3 -3
  199. package/dist/esm/index.js +9 -9
  200. package/dist/esm/{input-shims-KNXj3DAv.js → input-shims-C1iYF5JK.js} +9 -8
  201. package/dist/esm/ion-accordion_2.entry.js +2 -2
  202. package/dist/esm/ion-action-sheet.entry.js +8 -8
  203. package/dist/esm/ion-alert.entry.js +19 -19
  204. package/dist/esm/ion-app_8.entry.js +18 -18
  205. package/dist/esm/ion-back-button.entry.js +2 -2
  206. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  207. package/dist/esm/ion-button_2.entry.js +3 -3
  208. package/dist/esm/ion-card_5.entry.js +3 -3
  209. package/dist/esm/ion-checkbox.entry.js +2 -2
  210. package/dist/esm/ion-col_3.entry.js +13 -15
  211. package/dist/esm/ion-datetime-button.entry.js +2 -2
  212. package/dist/esm/ion-datetime.entry.js +9 -8
  213. package/dist/esm/ion-fab_3.entry.js +2 -2
  214. package/dist/esm/ion-img.entry.js +2 -2
  215. package/dist/esm/ion-infinite-scroll_2.entry.js +3 -3
  216. package/dist/esm/ion-input-otp.entry.js +129 -13
  217. package/dist/esm/ion-input.entry.js +3 -3
  218. package/dist/esm/ion-item-option_3.entry.js +9 -9
  219. package/dist/esm/ion-item_8.entry.js +10 -10
  220. package/dist/esm/ion-loading.entry.js +5 -5
  221. package/dist/esm/ion-menu_3.entry.js +6 -6
  222. package/dist/esm/ion-modal.entry.js +10 -10
  223. package/dist/esm/ion-nav_2.entry.js +5 -5
  224. package/dist/esm/ion-picker-column-option.entry.js +2 -2
  225. package/dist/esm/ion-picker-column.entry.js +4 -4
  226. package/dist/esm/ion-picker.entry.js +2 -2
  227. package/dist/esm/ion-popover.entry.js +14 -28
  228. package/dist/esm/ion-progress-bar.entry.js +6 -7
  229. package/dist/esm/ion-radio_2.entry.js +2 -2
  230. package/dist/esm/ion-range.entry.js +3 -3
  231. package/dist/esm/ion-refresher_2.entry.js +6 -6
  232. package/dist/esm/ion-reorder_2.entry.js +5 -5
  233. package/dist/esm/ion-route_4.entry.js +124 -19
  234. package/dist/esm/ion-searchbar.entry.js +2 -2
  235. package/dist/esm/ion-segment-view.entry.js +1 -1
  236. package/dist/esm/ion-segment_2.entry.js +2 -2
  237. package/dist/esm/ion-select-modal.entry.js +4 -4
  238. package/dist/esm/ion-select_3.entry.js +5 -5
  239. package/dist/esm/ion-tab-bar_2.entry.js +5 -5
  240. package/dist/esm/ion-tab_2.entry.js +3 -3
  241. package/dist/esm/ion-textarea.entry.js +3 -3
  242. package/dist/esm/ion-toast.entry.js +5 -5
  243. package/dist/esm/ion-toggle.entry.js +4 -4
  244. package/dist/esm/ionic.js +1 -1
  245. package/dist/esm/{ios.transition-CW92wRDL.js → ios.transition-BkUGiDUz.js} +15 -15
  246. package/dist/esm/{keyboard-BumguZrM.js → keyboard-B4Y-Gph8.js} +4 -4
  247. package/dist/esm/{keyboard-CutS8BPd.js → keyboard-Cmqp5iZD.js} +1 -1
  248. package/dist/esm/{keyboard-controller-DqohyEsZ.js → keyboard-controller-B2NoF7bV.js} +2 -2
  249. package/dist/esm/loader.js +1 -1
  250. package/dist/esm/{md.transition-yhfkYX1P.js → md.transition-B6hlrWjR.js} +4 -4
  251. package/dist/esm/{overlays-BBgMM61s.js → overlays-DmDY-El7.js} +2 -2
  252. package/dist/esm/{slot-mutation-controller-uKdPbY9K.js → slot-mutation-controller-Btpr9-9O.js} +2 -2
  253. package/dist/esm/{status-tap-BskkGI4e.js → status-tap-VGRBYwiC.js} +3 -3
  254. package/dist/esm/{swipe-back-BZdyM2Q-.js → swipe-back-DV3UpWzz.js} +2 -2
  255. package/dist/html.html-data.json +10 -2
  256. package/dist/ionic/index.esm.js +1 -1
  257. package/dist/ionic/ionic.esm.js +1 -1
  258. package/dist/ionic/{p-013b9aba.entry.js → p-01b7e3f2.entry.js} +1 -1
  259. package/dist/ionic/{p-9515f840.entry.js → p-095da8ec.entry.js} +1 -1
  260. package/dist/ionic/{p-ec08a7e6.entry.js → p-0b09c60e.entry.js} +1 -1
  261. package/dist/ionic/{p-5b47b8d5.entry.js → p-0c32c626.entry.js} +1 -1
  262. package/dist/ionic/p-0f97175e.entry.js +4 -0
  263. package/dist/ionic/{p-b0faaae2.entry.js → p-107a81a6.entry.js} +1 -1
  264. package/dist/ionic/{p-27960f65.entry.js → p-293cb1d5.entry.js} +1 -1
  265. package/dist/ionic/{p-1ffa5577.entry.js → p-362dcd86.entry.js} +1 -1
  266. package/dist/ionic/{p-0562139b.entry.js → p-4bd80334.entry.js} +1 -1
  267. package/dist/ionic/{p-16de8fd9.entry.js → p-4f25b926.entry.js} +1 -1
  268. package/dist/ionic/{p-0f1613f2.entry.js → p-52a16f94.entry.js} +1 -1
  269. package/dist/ionic/{p-436d4ac8.entry.js → p-5bb24bce.entry.js} +1 -1
  270. package/dist/ionic/{p-9d7e5a0b.entry.js → p-60780b88.entry.js} +1 -1
  271. package/dist/ionic/{p-1f342c2d.entry.js → p-62c87f3d.entry.js} +1 -1
  272. package/dist/ionic/{p-7868eb92.entry.js → p-64ac3864.entry.js} +1 -1
  273. package/dist/ionic/{p-f37e6ed2.entry.js → p-67f004eb.entry.js} +1 -1
  274. package/dist/ionic/p-6c7b5930.entry.js +4 -0
  275. package/dist/ionic/p-705759fd.entry.js +4 -0
  276. package/dist/ionic/{p-a45caa30.entry.js → p-7db20410.entry.js} +1 -1
  277. package/dist/ionic/{p-694f3e78.entry.js → p-7e9c2a97.entry.js} +1 -1
  278. package/dist/ionic/p-7l6ENjIV.js +4 -0
  279. package/dist/ionic/{p-77540bcb.entry.js → p-82abf431.entry.js} +1 -1
  280. package/dist/ionic/p-8d2ccf0c.entry.js +4 -0
  281. package/dist/ionic/{p-87fb6d59.entry.js → p-8d651adb.entry.js} +1 -1
  282. package/dist/ionic/{p-51af4728.entry.js → p-8db08782.entry.js} +1 -1
  283. package/dist/ionic/{p-af15fc5d.entry.js → p-91f3cd8b.entry.js} +1 -1
  284. package/dist/ionic/{p-c7ea2647.entry.js → p-930c3538.entry.js} +1 -1
  285. package/dist/ionic/p-94f1f7df.entry.js +4 -0
  286. package/dist/ionic/p-99c518de.entry.js +4 -0
  287. package/dist/ionic/{p-014c3633.entry.js → p-9ffccbf1.entry.js} +1 -1
  288. package/dist/ionic/p-BNXIurCt.js +4 -0
  289. package/dist/ionic/p-BOLqP2-V.js +4 -0
  290. package/dist/ionic/{p-5a3UxQAh.js → p-BY4FwwBp.js} +1 -1
  291. package/dist/ionic/p-BZTgGzGK.js +4 -0
  292. package/dist/ionic/p-BdHBcCZF.js +4 -0
  293. package/dist/ionic/{p-8B39TMv-.js → p-BpED_ep_.js} +1 -1
  294. package/dist/ionic/p-BuLlVedw.js +4 -0
  295. package/dist/ionic/p-Bx5x5GJV.js +4 -0
  296. package/dist/ionic/{p-C4SpVvhx.js → p-C1WYZOZj.js} +1 -1
  297. package/dist/ionic/p-C2LaBx3E.js +4 -0
  298. package/dist/ionic/{p-BWKtcudz.js → p-CXs4J83x.js} +1 -1
  299. package/dist/ionic/p-CgcGX08t.js +4 -0
  300. package/dist/ionic/p-CngfKMRU.js +4 -0
  301. package/dist/ionic/p-Co7eql8D.js +4 -0
  302. package/dist/ionic/{p-DArnNWiu.js → p-D13gXhdC.js} +1 -1
  303. package/dist/ionic/p-D926OmIX.js +4 -0
  304. package/dist/ionic/{p-BBZQUbCq.js → p-DPNVo1nr.js} +1 -1
  305. package/dist/ionic/{p-B0afqOUt.js → p-DXXGkPA8.js} +1 -1
  306. package/dist/ionic/{p-CJmyfI8x.js → p-Dk4Mdaru.js} +1 -1
  307. package/dist/ionic/{p-Dj4J3LkD.js → p-Dojwmvde.js} +1 -1
  308. package/dist/ionic/p-a4389f13.entry.js +4 -0
  309. package/dist/ionic/p-af8fb360.entry.js +4 -0
  310. package/dist/ionic/{p-f6a1ab48.entry.js → p-b9ed3a52.entry.js} +1 -1
  311. package/dist/ionic/p-bfdbe24b.entry.js +4 -0
  312. package/dist/ionic/{p-77e7b612.entry.js → p-c250b6b0.entry.js} +1 -1
  313. package/dist/ionic/p-c83dbc12.entry.js +4 -0
  314. package/dist/ionic/{p-1bb1be7e.entry.js → p-d0e374f8.entry.js} +1 -1
  315. package/dist/ionic/{p-af4b4719.entry.js → p-d2406889.entry.js} +1 -1
  316. package/dist/ionic/{p-cbc73380.entry.js → p-d72accc4.entry.js} +1 -1
  317. package/dist/ionic/{p-1252621e.entry.js → p-e7ab4def.entry.js} +1 -1
  318. package/dist/ionic/{p-5dcddfd5.entry.js → p-e8e69c21.entry.js} +1 -1
  319. package/dist/ionic/{p-96d040b0.entry.js → p-eb989dc9.entry.js} +1 -1
  320. package/dist/ionic/{p-59e4b521.entry.js → p-ec259ac5.entry.js} +1 -1
  321. package/dist/ionic/p-f2116a54.entry.js +4 -0
  322. package/dist/ionic/{p-B2JD8_LP.js → p-nCAPr1Ah.js} +1 -1
  323. package/dist/types/components/alert/alert.d.ts +0 -4
  324. package/dist/types/components/col/col.d.ts +0 -1
  325. package/dist/types/components/input-otp/input-otp-interface.d.ts +1 -0
  326. package/dist/types/components/input-otp/input-otp.d.ts +40 -2
  327. package/dist/types/components/popover/popover.d.ts +0 -1
  328. package/dist/types/components/progress-bar/progress-bar.d.ts +0 -1
  329. package/dist/types/components/route/route.d.ts +8 -0
  330. package/dist/types/components/route-redirect/route-redirect.d.ts +3 -1
  331. package/dist/types/components/router/utils/constants.d.ts +2 -0
  332. package/dist/types/components/router/utils/matching.d.ts +10 -0
  333. package/dist/types/components/router/utils/path.d.ts +5 -1
  334. package/dist/types/components.d.ts +32 -6
  335. package/dist/types/utils/helpers.d.ts +3 -2
  336. package/dist/types/utils/rtl/dir.d.ts +1 -1
  337. package/hydrate/index.js +301 -109
  338. package/hydrate/index.mjs +301 -109
  339. package/package.json +1 -1
  340. package/components/p-B3dSuofL.js +0 -4
  341. package/components/p-BWbz71uB.js +0 -4
  342. package/components/p-C0TdbIVo.js +0 -4
  343. package/components/p-C6Y0cCH_.js +0 -4
  344. package/components/p-CCFj0kgH.js +0 -4
  345. package/components/p-CRb2xRCz.js +0 -4
  346. package/components/p-DLEJ61lJ.js +0 -4
  347. package/components/p-DRm4t-by.js +0 -4
  348. package/components/p-D_U0pDe5.js +0 -4
  349. package/components/p-DaW9OZ6S.js +0 -4
  350. package/components/p-DaojW_d_.js +0 -4
  351. package/components/p-Ds5vN3iu.js +0 -4
  352. package/components/p-RhI78AKb.js +0 -4
  353. package/components/p-z-EWo6r-.js +0 -4
  354. package/dist/ionic/p-129f7b95.entry.js +0 -4
  355. package/dist/ionic/p-210f906e.entry.js +0 -4
  356. package/dist/ionic/p-3c6fc2e8.entry.js +0 -4
  357. package/dist/ionic/p-43729675.entry.js +0 -4
  358. package/dist/ionic/p-4468e439.entry.js +0 -4
  359. package/dist/ionic/p-800ce1e0.entry.js +0 -4
  360. package/dist/ionic/p-84470714.entry.js +0 -4
  361. package/dist/ionic/p-8af85fa8.entry.js +0 -4
  362. package/dist/ionic/p-8dQB1sG_.js +0 -4
  363. package/dist/ionic/p-B2y1T0dN.js +0 -4
  364. package/dist/ionic/p-BHBb21Hp.js +0 -4
  365. package/dist/ionic/p-BgkRGRO3.js +0 -4
  366. package/dist/ionic/p-CNdt1FPc.js +0 -4
  367. package/dist/ionic/p-Cf6KtUnA.js +0 -4
  368. package/dist/ionic/p-CfccUand.js +0 -4
  369. package/dist/ionic/p-DBFcFCH5.js +0 -4
  370. package/dist/ionic/p-DCmOKz8e.js +0 -4
  371. package/dist/ionic/p-DFPZa_No.js +0 -4
  372. package/dist/ionic/p-DYKDWM2f.js +0 -4
  373. package/dist/ionic/p-DzQk7Lu8.js +0 -4
  374. package/dist/ionic/p-c56c23b6.entry.js +0 -4
  375. package/dist/ionic/p-c8c77f7b.entry.js +0 -4
  376. package/dist/ionic/p-d58e9da3.entry.js +0 -4
package/hydrate/index.mjs CHANGED
@@ -6000,7 +6000,7 @@ const isRTL$1 = (hostEl) => {
6000
6000
  return false;
6001
6001
  }
6002
6002
  }
6003
- return hostEl.ownerDocument?.dir?.toLowerCase() === 'rtl';
6003
+ return document?.dir?.toLowerCase() === 'rtl';
6004
6004
  };
6005
6005
 
6006
6006
  const transitionEndAsync = (el, expectedDuration = 0) => {
@@ -6302,7 +6302,8 @@ const assert = (actual, reason) => {
6302
6302
  *
6303
6303
  * @param side The current side before being redefined based on the direction.
6304
6304
  * @param hostEl The component's host element. The direction is resolved from
6305
- * it or its nearest ancestor that declares one, falling back to the document.
6305
+ * it or its nearest ancestor that declares one. When omitted, the direction
6306
+ * is resolved from the document.
6306
6307
  */
6307
6308
  const isEndSide = (side, hostEl) => {
6308
6309
  const rtl = isRTL$1(hostEl);
@@ -11282,14 +11283,6 @@ class Alert {
11282
11283
  * the alert dismisses. You will need to do that in your code.
11283
11284
  */
11284
11285
  this.isOpen = false;
11285
- /**
11286
- * Prevent Enter from toggling the checkbox, which only Space should do.
11287
- */
11288
- this.onCheckboxKeydown = (ev) => {
11289
- if (ev.key === 'Enter') {
11290
- ev.preventDefault();
11291
- }
11292
- };
11293
11286
  this.onBackdropTap = () => {
11294
11287
  this.dismiss(undefined, BACKDROP);
11295
11288
  };
@@ -11317,6 +11310,14 @@ class Alert {
11317
11310
  }
11318
11311
  onKeydown(ev) {
11319
11312
  const inputTypes = new Set(this.processedInputs.map((i) => i.type));
11313
+ /**
11314
+ * Based on keyboard navigation requirements, the
11315
+ * checkbox should not respond to the enter keydown event.
11316
+ */
11317
+ if (inputTypes.has('checkbox') && ev.key === 'Enter') {
11318
+ ev.preventDefault();
11319
+ return;
11320
+ }
11320
11321
  /**
11321
11322
  * Ensure when alert container is being focused, and the user presses the tab + shift keys, the focus will be set to the last alert button.
11322
11323
  */
@@ -11626,7 +11627,7 @@ class Alert {
11626
11627
  };
11627
11628
  const defaultLabelPlacement = getOverlayLabelPlacement(mode, 'checkbox');
11628
11629
  const defaultJustify = getOverlayLabelJustify(mode, 'checkbox');
11629
- return (hAsync("button", { type: "button", onClick: () => this.cbClick(i), onKeyDown: this.onCheckboxKeydown, "aria-checked": `${i.checked}`, id: i.id, disabled: i.disabled, tabIndex: i.tabindex, role: "checkbox", class: {
11630
+ return (hAsync("button", { type: "button", onClick: () => this.cbClick(i), "aria-checked": `${i.checked}`, id: i.id, disabled: i.disabled, tabIndex: i.tabindex, role: "checkbox", class: {
11630
11631
  ...getClassMap(i.cssClass),
11631
11632
  'alert-tappable': true,
11632
11633
  'alert-checkbox': true,
@@ -11776,14 +11777,14 @@ class Alert {
11776
11777
  * If neither are defined, do not set aria-labelledby.
11777
11778
  */
11778
11779
  const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
11779
- return (hAsync(Host, { key: '5d0b4ff618d956178aa5a1cd869f9ed28dc629ee', tabindex: "-1", style: {
11780
+ return (hAsync(Host, { key: '083b5250dc4c76e85240e0225abcb7ca2b66de2f', tabindex: "-1", style: {
11780
11781
  zIndex: `${20000 + overlayIndex}`,
11781
11782
  }, class: {
11782
11783
  ...getClassMap(this.cssClass),
11783
11784
  [mode]: true,
11784
11785
  'overlay-hidden': true,
11785
11786
  'alert-translucent': this.translucent,
11786
- }, onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, hAsync("ion-backdrop", { key: '77ed27df27261f6784d7f7858da88c58d3f21ea3', tappable: this.backdropDismiss }), hAsync("div", { key: '0f7c74fd5368f215075a3cb8f2dcb0908953e274', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '67b88fc531ce9232e7ec7188722bfd8991689dad', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "0", ref: (el) => (this.wrapperEl = el), ...htmlAttributes }, hAsync("div", { key: 'e3d63359996f815c33aad28cf1dc0afbfbe6d6b1', class: "alert-head" }, header && (hAsync("h2", { key: 'd7675c3948806229429c698b3b4aef47afe8421d', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (hAsync("h2", { key: 'd87035599cf1c30a2ddf85cd5ea3618ce64ec749', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (hAsync("h3", { key: 'bf1d4fdecf73a9ed838bb4202e2d33bd36bd07b3', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), hAsync("div", { key: 'a843f27506320d9136c0fd3346473a52328477c7', tabindex: "0", "aria-hidden": "true" })));
11787
+ }, onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, hAsync("ion-backdrop", { key: '65c92a956d998ae9016396dd2a29c42ab7376d0e', tappable: this.backdropDismiss }), hAsync("div", { key: 'f2288fa0b7ef9d0bf031c168fe78c48422cf91c8', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: 'dbb109435c378f77c6b0231e58756f8a0467732d', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "0", ref: (el) => (this.wrapperEl = el), ...htmlAttributes }, hAsync("div", { key: '075597f94719673cf1f894a8566e1036849afa75', class: "alert-head" }, header && (hAsync("h2", { key: 'f96f4b1db8473c62040beed6e96108c733978d73', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (hAsync("h2", { key: 'dbd824ef19a07bddde4eb928f11de7c7cadf98b8', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (hAsync("h3", { key: '4774fa13700dd23aec7930492acae80de3bdf5d1', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), hAsync("div", { key: '5c728b7457e231f64294bbec821bdb547c6437dd', tabindex: "0", "aria-hidden": "true" })));
11787
11788
  }
11788
11789
  get el() { return getElement(this); }
11789
11790
  static get watchers() { return {
@@ -13929,28 +13930,27 @@ class Col {
13929
13930
  [modifier]: amount,
13930
13931
  };
13931
13932
  }
13932
- calculateOffset(rtl) {
13933
- return this.calculatePosition('offset', rtl ? 'margin-right' : 'margin-left');
13933
+ calculateOffset(isRTL) {
13934
+ return this.calculatePosition('offset', isRTL ? 'margin-right' : 'margin-left');
13934
13935
  }
13935
- calculatePull(rtl) {
13936
- return this.calculatePosition('pull', rtl ? 'left' : 'right');
13936
+ calculatePull(isRTL) {
13937
+ return this.calculatePosition('pull', isRTL ? 'left' : 'right');
13937
13938
  }
13938
- calculatePush(rtl) {
13939
- return this.calculatePosition('push', rtl ? 'right' : 'left');
13939
+ calculatePush(isRTL) {
13940
+ return this.calculatePosition('push', isRTL ? 'right' : 'left');
13940
13941
  }
13941
13942
  render() {
13942
- const rtl = isRTL$1(this.el);
13943
+ const isRTL = document.dir === 'rtl';
13943
13944
  const mode = getIonMode$1(this);
13944
- return (hAsync(Host, { key: '98f3c88ee5408120539e3daf097982dea1b4842a', class: {
13945
+ return (hAsync(Host, { key: 'e12293a4315cb474bbde73421dd0b4129f1df1cc', class: {
13945
13946
  [mode]: true,
13946
13947
  }, style: {
13947
- ...this.calculateOffset(rtl),
13948
- ...this.calculatePull(rtl),
13949
- ...this.calculatePush(rtl),
13948
+ ...this.calculateOffset(isRTL),
13949
+ ...this.calculatePull(isRTL),
13950
+ ...this.calculatePush(isRTL),
13950
13951
  ...this.calculateSize(),
13951
- } }, hAsync("slot", { key: '14e2f0c30bc3fea9aa9683e3bd4ed5dd4a3be05c' })));
13952
+ } }, hAsync("slot", { key: '869317ea6574111a57a7a9d096c53d264c335d28' })));
13952
13953
  }
13953
- get el() { return getElement(this); }
13954
13954
  static get style() { return colCss(); }
13955
13955
  static get cmpMeta() { return {
13956
13956
  "$flags$": 265,
@@ -17986,12 +17986,13 @@ class Datetime {
17986
17986
  const collapsedIcon = mode === 'ios' ? chevronForward : caretDownSharp;
17987
17987
  const prevMonthDisabled = disabled || isPrevMonthDisabled(this.workingParts, this.minParts, this.maxParts);
17988
17988
  const nextMonthDisabled = disabled || isNextMonthDisabled(this.workingParts, this.maxParts);
17989
- const hostDir = isRTL$1(this.el) ? 'rtl' : 'ltr';
17989
+ // don't use the inheritAttributes util because it removes dir from the host, and we still need that
17990
+ const hostDir = this.el.getAttribute('dir') || undefined;
17990
17991
  return (hAsync("div", { class: "calendar-header", part: "calendar-header" }, hAsync("div", { class: "calendar-action-buttons" }, hAsync("div", { class: "calendar-month-year" }, hAsync("button", { class: {
17991
17992
  'calendar-month-year-toggle': true,
17992
17993
  'ion-activatable': true,
17993
17994
  'ion-focusable': true,
17994
- }, part: "month-year-button", disabled: disabled, "aria-label": this.showMonthAndYear ? 'Hide year picker' : 'Show year picker', onClick: () => this.toggleMonthAndYearView() }, hAsync("span", { id: "toggle-wrapper" }, getMonthAndYear(this.locale, this.workingParts), hAsync("ion-icon", { dir: hostDir, "aria-hidden": "true", icon: this.showMonthAndYear ? expandedIcon : collapsedIcon, lazy: false, flipRtl: true })), mode === 'md' && hAsync("ion-ripple-effect", null))), hAsync("div", { class: "calendar-next-prev" }, hAsync("ion-buttons", null, hAsync("ion-button", { "aria-label": "Previous month", disabled: prevMonthDisabled, onClick: () => this.prevMonth(), part: "navigation-button previous-button" }, hAsync("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronBack, lazy: false, flipRtl: true })), hAsync("ion-button", { "aria-label": "Next month", disabled: nextMonthDisabled, onClick: () => this.nextMonth(), part: "navigation-button next-button" }, hAsync("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronForward, lazy: false, flipRtl: true }))))), hAsync("div", { class: "calendar-days-of-week", "aria-hidden": "true", part: "calendar-days-of-week" }, getDaysOfWeek(this.locale, mode, this.firstDayOfWeek % 7).map((d) => {
17995
+ }, part: "month-year-button", disabled: disabled, "aria-label": this.showMonthAndYear ? 'Hide year picker' : 'Show year picker', onClick: () => this.toggleMonthAndYearView() }, hAsync("span", { id: "toggle-wrapper" }, getMonthAndYear(this.locale, this.workingParts), hAsync("ion-icon", { "aria-hidden": "true", icon: this.showMonthAndYear ? expandedIcon : collapsedIcon, lazy: false, flipRtl: true })), mode === 'md' && hAsync("ion-ripple-effect", null))), hAsync("div", { class: "calendar-next-prev" }, hAsync("ion-buttons", null, hAsync("ion-button", { "aria-label": "Previous month", disabled: prevMonthDisabled, onClick: () => this.prevMonth(), part: "navigation-button previous-button" }, hAsync("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronBack, lazy: false, flipRtl: true })), hAsync("ion-button", { "aria-label": "Next month", disabled: nextMonthDisabled, onClick: () => this.nextMonth(), part: "navigation-button next-button" }, hAsync("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronForward, lazy: false, flipRtl: true }))))), hAsync("div", { class: "calendar-days-of-week", "aria-hidden": "true", part: "calendar-days-of-week" }, getDaysOfWeek(this.locale, mode, this.firstDayOfWeek % 7).map((d) => {
17995
17996
  return hAsync("div", { class: "day-of-week" }, d);
17996
17997
  }))));
17997
17998
  }
@@ -18308,7 +18309,7 @@ class Datetime {
18308
18309
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
18309
18310
  const hasWheelVariant = hasDatePresentation && preferWheel;
18310
18311
  renderHiddenInput(true, el, name, formatValue(value), disabled);
18311
- return (hAsync(Host, { key: '465c9c22bccabc4a82ea4054c536c6086b85ddf9', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: {
18312
+ return (hAsync(Host, { key: 'e9b99bb5610fc7fe879200a56dcc865c6e2f1404', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: {
18312
18313
  ...createColorClasses$1(color, {
18313
18314
  [mode]: true,
18314
18315
  ['datetime-readonly']: readonly,
@@ -18320,7 +18321,7 @@ class Datetime {
18320
18321
  [`datetime-prefer-wheel`]: hasWheelVariant,
18321
18322
  [`datetime-grid`]: isGridStyle,
18322
18323
  }),
18323
- } }, hAsync("div", { key: '9732b003440a0ca23520bc8a09e73125d88fd565', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
18324
+ } }, hAsync("div", { key: 'a5e61be2989468dc24ec8fb394116d9339b7824c', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
18324
18325
  }
18325
18326
  get el() { return getElement(this); }
18326
18327
  static get watchers() { return {
@@ -21443,9 +21444,9 @@ class Input {
21443
21444
  }
21444
21445
  let inputIds$1 = 0;
21445
21446
 
21446
- const inputOtpIosCss = () => `.sc-ion-input-otp-ios-h{--margin-top:0;--margin-end:0;--margin-bottom:0;--margin-start:0;--padding-top:16px;--padding-end:0;--padding-bottom:16px;--padding-start:0;--color:initial;--min-width:40px;--separator-width:8px;--separator-height:var(--separator-width);--separator-border-radius:999px;--separator-color:var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--highlight-color:var(--highlight-color-focused);display:block;position:relative;font-size:0.875rem}.input-otp-group.sc-ion-input-otp-ios{-webkit-margin-start:var(--margin-start);margin-inline-start:var(--margin-start);-webkit-margin-end:var(--margin-end);margin-inline-end:var(--margin-end);margin-top:var(--margin-top);margin-bottom:var(--margin-bottom);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.native-wrapper.sc-ion-input-otp-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:var(--min-width)}.native-input.sc-ion-input-otp-ios{border-radius:var(--border-radius);width:var(--width);min-width:inherit;height:var(--height);border-width:var(--border-width);border-style:solid;border-color:var(--border-color);background:var(--background);color:var(--color);font-size:inherit;text-align:center;-webkit-appearance:none;-moz-appearance:none;appearance:none}.has-focus.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{caret-color:var(--highlight-color)}.input-otp-description.sc-ion-input-otp-ios{color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem;line-height:1.25rem;text-align:center}.input-otp-description-hidden.sc-ion-input-otp-ios{display:none}.input-otp-separator.sc-ion-input-otp-ios{border-radius:var(--separator-border-radius);-ms-flex-negative:0;flex-shrink:0;width:var(--separator-width);height:var(--separator-height);background:var(--separator-color)}.input-otp-size-small.sc-ion-input-otp-ios-h{--width:40px;--height:40px}.input-otp-size-small.sc-ion-input-otp-ios-h .input-otp-group.sc-ion-input-otp-ios{gap:8px}.input-otp-size-medium.sc-ion-input-otp-ios-h{--width:48px;--height:48px}.input-otp-size-large.sc-ion-input-otp-ios-h{--width:56px;--height:56px}.input-otp-size-medium.sc-ion-input-otp-ios-h .input-otp-group.sc-ion-input-otp-ios,.input-otp-size-large.sc-ion-input-otp-ios-h .input-otp-group.sc-ion-input-otp-ios{gap:12px}.input-otp-shape-round.sc-ion-input-otp-ios-h{--border-radius:16px}.input-otp-shape-soft.sc-ion-input-otp-ios-h{--border-radius:8px}.input-otp-shape-rectangular.sc-ion-input-otp-ios-h{--border-radius:0}.input-otp-fill-outline.sc-ion-input-otp-ios-h{--background:none}.input-otp-fill-solid.sc-ion-input-otp-ios-h{--border-color:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-disabled.sc-ion-input-otp-ios-h{--color:var(--ion-color-step-350, var(--ion-text-color-step-650, #a6a6a6))}.input-otp-fill-outline.input-otp-disabled.sc-ion-input-otp-ios-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.input-otp-disabled.sc-ion-input-otp-ios-h,.input-otp-disabled.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:disabled{cursor:not-allowed}.has-focus.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:focus{--border-color:var(--highlight-color);outline:none}.input-otp-fill-outline.input-otp-readonly.sc-ion-input-otp-ios-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-fill-solid.input-otp-disabled.sc-ion-input-otp-ios-h,.input-otp-fill-solid.input-otp-readonly.sc-ion-input-otp-ios-h{--border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.ion-touched.ion-invalid.sc-ion-input-otp-ios-h{--highlight-color:var(--highlight-color-invalid)}.ion-valid.sc-ion-input-otp-ios-h{--highlight-color:var(--highlight-color-valid)}.has-focus.ion-valid.sc-ion-input-otp-ios-h,.ion-touched.ion-invalid.sc-ion-input-otp-ios-h{--border-color:var(--highlight-color)}.ion-color.sc-ion-input-otp-ios-h{--highlight-color-focused:var(--ion-color-base)}.input-otp-fill-outline.ion-color.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:focus{border-color:rgba(var(--ion-color-base-rgb), 0.6)}.input-otp-fill-outline.ion-color.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-outline.ion-color.has-focus.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.has-focus.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{border-color:var(--ion-color-danger, #c5000f)}.input-otp-fill-outline.ion-color.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-outline.ion-color.has-focus.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.has-focus.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{border-color:var(--ion-color-success, #2dd55b)}.input-otp-fill-outline.input-otp-disabled.ion-color.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{border-color:rgba(var(--ion-color-base-rgb), 0.3)}.sc-ion-input-otp-ios-h{--border-width:0.55px}.has-focus.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:focus{--border-width:1px}.input-otp-fill-outline.sc-ion-input-otp-ios-h{--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))))}`;
21447
+ const inputOtpIosCss = () => `.sc-ion-input-otp-ios-h{--margin-top:0;--margin-end:0;--margin-bottom:0;--margin-start:0;--padding-top:16px;--padding-end:0;--padding-bottom:16px;--padding-start:0;--color:initial;--min-width:40px;--separator-width:8px;--separator-height:var(--separator-width);--separator-border-radius:999px;--separator-color:var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--highlight-color:var(--highlight-color-focused);--border-color:initial;display:block;position:relative;font-size:0.875rem}.input-otp-group.sc-ion-input-otp-ios{-webkit-margin-start:var(--margin-start);margin-inline-start:var(--margin-start);-webkit-margin-end:var(--margin-end);margin-inline-end:var(--margin-end);margin-top:var(--margin-top);margin-bottom:var(--margin-bottom);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.native-wrapper.sc-ion-input-otp-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:var(--min-width)}.native-input.sc-ion-input-otp-ios{border-radius:var(--border-radius);width:var(--width);min-width:inherit;height:var(--height);border-width:var(--border-width);border-style:solid;border-color:var(--border-color, var(--internal-border-color));background:var(--background);color:var(--color);font-size:inherit;text-align:center;-webkit-appearance:none;-moz-appearance:none;appearance:none}.has-focus.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{caret-color:var(--highlight-color)}.input-otp-description.sc-ion-input-otp-ios{color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem;line-height:1.25rem;text-align:center}.input-otp-description-hidden.sc-ion-input-otp-ios{display:none}.input-otp-bottom.sc-ion-input-otp-ios{font-size:0.75rem;line-height:1.25rem;text-align:center}.input-otp-bottom.sc-ion-input-otp-ios .error-text.sc-ion-input-otp-ios{display:none;color:var(--highlight-color-invalid)}.input-otp-bottom.sc-ion-input-otp-ios .helper-text.sc-ion-input-otp-ios{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}.ion-touched.ion-invalid.sc-ion-input-otp-ios-h .input-otp-bottom.sc-ion-input-otp-ios .error-text.sc-ion-input-otp-ios{display:block}.ion-touched.ion-invalid.sc-ion-input-otp-ios-h .input-otp-bottom.sc-ion-input-otp-ios .helper-text.sc-ion-input-otp-ios{display:none}.input-otp-separator.sc-ion-input-otp-ios{border-radius:var(--separator-border-radius);-ms-flex-negative:0;flex-shrink:0;width:var(--separator-width);height:var(--separator-height);background:var(--separator-color)}.input-otp-size-small.sc-ion-input-otp-ios-h{--width:40px;--height:40px}.input-otp-size-small.sc-ion-input-otp-ios-h .input-otp-group.sc-ion-input-otp-ios{gap:8px}.input-otp-size-medium.sc-ion-input-otp-ios-h{--width:48px;--height:48px}.input-otp-size-large.sc-ion-input-otp-ios-h{--width:56px;--height:56px}.input-otp-size-medium.sc-ion-input-otp-ios-h .input-otp-group.sc-ion-input-otp-ios,.input-otp-size-large.sc-ion-input-otp-ios-h .input-otp-group.sc-ion-input-otp-ios{gap:12px}.input-otp-shape-round.sc-ion-input-otp-ios-h{--border-radius:16px}.input-otp-shape-soft.sc-ion-input-otp-ios-h{--border-radius:8px}.input-otp-shape-rectangular.sc-ion-input-otp-ios-h{--border-radius:0}.input-otp-fill-outline.sc-ion-input-otp-ios-h{--background:none}.input-otp-fill-solid.sc-ion-input-otp-ios-h{--internal-border-color:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-disabled.sc-ion-input-otp-ios-h{--color:var(--ion-color-step-350, var(--ion-text-color-step-650, #a6a6a6))}.input-otp-fill-outline.input-otp-disabled.sc-ion-input-otp-ios-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--internal-border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.input-otp-disabled.sc-ion-input-otp-ios-h,.input-otp-disabled.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:disabled{cursor:not-allowed}.has-focus.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:focus{--border-color:var(--highlight-color);outline:none}.input-otp-fill-outline.input-otp-readonly.sc-ion-input-otp-ios-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-fill-solid.input-otp-disabled.sc-ion-input-otp-ios-h,.input-otp-fill-solid.input-otp-readonly.sc-ion-input-otp-ios-h{--internal-border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.ion-touched.ion-invalid.sc-ion-input-otp-ios-h{--highlight-color:var(--highlight-color-invalid)}.ion-valid.sc-ion-input-otp-ios-h{--highlight-color:var(--highlight-color-valid)}.has-focus.ion-valid.sc-ion-input-otp-ios-h,.ion-touched.ion-invalid.sc-ion-input-otp-ios-h{--border-color:var(--highlight-color)}.ion-color.sc-ion-input-otp-ios-h{--highlight-color-focused:var(--ion-color-base)}.input-otp-fill-outline.ion-color.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:focus{border-color:rgba(var(--ion-color-base-rgb), 0.6)}.input-otp-fill-outline.ion-color.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-outline.ion-color.has-focus.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.has-focus.ion-invalid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{border-color:var(--ion-color-danger, #c5000f)}.input-otp-fill-outline.ion-color.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-outline.ion-color.has-focus.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios,.input-otp-fill-solid.ion-color.has-focus.ion-valid.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{border-color:var(--ion-color-success, #2dd55b)}.input-otp-fill-outline.input-otp-disabled.ion-color.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios{border-color:rgba(var(--ion-color-base-rgb), 0.3)}.sc-ion-input-otp-ios-h{--border-width:0.55px}.has-focus.sc-ion-input-otp-ios-h .native-input.sc-ion-input-otp-ios:focus{--border-width:1px}.input-otp-fill-outline.sc-ion-input-otp-ios-h{--internal-border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))))}`;
21447
21448
 
21448
- const inputOtpMdCss = () => `.sc-ion-input-otp-md-h{--margin-top:0;--margin-end:0;--margin-bottom:0;--margin-start:0;--padding-top:16px;--padding-end:0;--padding-bottom:16px;--padding-start:0;--color:initial;--min-width:40px;--separator-width:8px;--separator-height:var(--separator-width);--separator-border-radius:999px;--separator-color:var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--highlight-color:var(--highlight-color-focused);display:block;position:relative;font-size:0.875rem}.input-otp-group.sc-ion-input-otp-md{-webkit-margin-start:var(--margin-start);margin-inline-start:var(--margin-start);-webkit-margin-end:var(--margin-end);margin-inline-end:var(--margin-end);margin-top:var(--margin-top);margin-bottom:var(--margin-bottom);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.native-wrapper.sc-ion-input-otp-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:var(--min-width)}.native-input.sc-ion-input-otp-md{border-radius:var(--border-radius);width:var(--width);min-width:inherit;height:var(--height);border-width:var(--border-width);border-style:solid;border-color:var(--border-color);background:var(--background);color:var(--color);font-size:inherit;text-align:center;-webkit-appearance:none;-moz-appearance:none;appearance:none}.has-focus.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{caret-color:var(--highlight-color)}.input-otp-description.sc-ion-input-otp-md{color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem;line-height:1.25rem;text-align:center}.input-otp-description-hidden.sc-ion-input-otp-md{display:none}.input-otp-separator.sc-ion-input-otp-md{border-radius:var(--separator-border-radius);-ms-flex-negative:0;flex-shrink:0;width:var(--separator-width);height:var(--separator-height);background:var(--separator-color)}.input-otp-size-small.sc-ion-input-otp-md-h{--width:40px;--height:40px}.input-otp-size-small.sc-ion-input-otp-md-h .input-otp-group.sc-ion-input-otp-md{gap:8px}.input-otp-size-medium.sc-ion-input-otp-md-h{--width:48px;--height:48px}.input-otp-size-large.sc-ion-input-otp-md-h{--width:56px;--height:56px}.input-otp-size-medium.sc-ion-input-otp-md-h .input-otp-group.sc-ion-input-otp-md,.input-otp-size-large.sc-ion-input-otp-md-h .input-otp-group.sc-ion-input-otp-md{gap:12px}.input-otp-shape-round.sc-ion-input-otp-md-h{--border-radius:16px}.input-otp-shape-soft.sc-ion-input-otp-md-h{--border-radius:8px}.input-otp-shape-rectangular.sc-ion-input-otp-md-h{--border-radius:0}.input-otp-fill-outline.sc-ion-input-otp-md-h{--background:none}.input-otp-fill-solid.sc-ion-input-otp-md-h{--border-color:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-disabled.sc-ion-input-otp-md-h{--color:var(--ion-color-step-350, var(--ion-text-color-step-650, #a6a6a6))}.input-otp-fill-outline.input-otp-disabled.sc-ion-input-otp-md-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.input-otp-disabled.sc-ion-input-otp-md-h,.input-otp-disabled.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:disabled{cursor:not-allowed}.has-focus.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:focus{--border-color:var(--highlight-color);outline:none}.input-otp-fill-outline.input-otp-readonly.sc-ion-input-otp-md-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-fill-solid.input-otp-disabled.sc-ion-input-otp-md-h,.input-otp-fill-solid.input-otp-readonly.sc-ion-input-otp-md-h{--border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.ion-touched.ion-invalid.sc-ion-input-otp-md-h{--highlight-color:var(--highlight-color-invalid)}.ion-valid.sc-ion-input-otp-md-h{--highlight-color:var(--highlight-color-valid)}.has-focus.ion-valid.sc-ion-input-otp-md-h,.ion-touched.ion-invalid.sc-ion-input-otp-md-h{--border-color:var(--highlight-color)}.ion-color.sc-ion-input-otp-md-h{--highlight-color-focused:var(--ion-color-base)}.input-otp-fill-outline.ion-color.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:focus{border-color:rgba(var(--ion-color-base-rgb), 0.6)}.input-otp-fill-outline.ion-color.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-outline.ion-color.has-focus.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.has-focus.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{border-color:var(--ion-color-danger, #c5000f)}.input-otp-fill-outline.ion-color.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-outline.ion-color.has-focus.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.has-focus.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{border-color:var(--ion-color-success, #2dd55b)}.input-otp-fill-outline.input-otp-disabled.ion-color.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{border-color:rgba(var(--ion-color-base-rgb), 0.3)}.sc-ion-input-otp-md-h{--border-width:1px}.has-focus.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:focus{--border-width:2px}.input-otp-fill-outline.sc-ion-input-otp-md-h{--border-color:var(--ion-color-step-300, var(--ion-background-color-step-300, #b3b3b3))}`;
21449
+ const inputOtpMdCss = () => `.sc-ion-input-otp-md-h{--margin-top:0;--margin-end:0;--margin-bottom:0;--margin-start:0;--padding-top:16px;--padding-end:0;--padding-bottom:16px;--padding-start:0;--color:initial;--min-width:40px;--separator-width:8px;--separator-height:var(--separator-width);--separator-border-radius:999px;--separator-color:var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--highlight-color:var(--highlight-color-focused);--border-color:initial;display:block;position:relative;font-size:0.875rem}.input-otp-group.sc-ion-input-otp-md{-webkit-margin-start:var(--margin-start);margin-inline-start:var(--margin-start);-webkit-margin-end:var(--margin-end);margin-inline-end:var(--margin-end);margin-top:var(--margin-top);margin-bottom:var(--margin-bottom);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.native-wrapper.sc-ion-input-otp-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-width:var(--min-width)}.native-input.sc-ion-input-otp-md{border-radius:var(--border-radius);width:var(--width);min-width:inherit;height:var(--height);border-width:var(--border-width);border-style:solid;border-color:var(--border-color, var(--internal-border-color));background:var(--background);color:var(--color);font-size:inherit;text-align:center;-webkit-appearance:none;-moz-appearance:none;appearance:none}.has-focus.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{caret-color:var(--highlight-color)}.input-otp-description.sc-ion-input-otp-md{color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem;line-height:1.25rem;text-align:center}.input-otp-description-hidden.sc-ion-input-otp-md{display:none}.input-otp-bottom.sc-ion-input-otp-md{font-size:0.75rem;line-height:1.25rem;text-align:center}.input-otp-bottom.sc-ion-input-otp-md .error-text.sc-ion-input-otp-md{display:none;color:var(--highlight-color-invalid)}.input-otp-bottom.sc-ion-input-otp-md .helper-text.sc-ion-input-otp-md{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}.ion-touched.ion-invalid.sc-ion-input-otp-md-h .input-otp-bottom.sc-ion-input-otp-md .error-text.sc-ion-input-otp-md{display:block}.ion-touched.ion-invalid.sc-ion-input-otp-md-h .input-otp-bottom.sc-ion-input-otp-md .helper-text.sc-ion-input-otp-md{display:none}.input-otp-separator.sc-ion-input-otp-md{border-radius:var(--separator-border-radius);-ms-flex-negative:0;flex-shrink:0;width:var(--separator-width);height:var(--separator-height);background:var(--separator-color)}.input-otp-size-small.sc-ion-input-otp-md-h{--width:40px;--height:40px}.input-otp-size-small.sc-ion-input-otp-md-h .input-otp-group.sc-ion-input-otp-md{gap:8px}.input-otp-size-medium.sc-ion-input-otp-md-h{--width:48px;--height:48px}.input-otp-size-large.sc-ion-input-otp-md-h{--width:56px;--height:56px}.input-otp-size-medium.sc-ion-input-otp-md-h .input-otp-group.sc-ion-input-otp-md,.input-otp-size-large.sc-ion-input-otp-md-h .input-otp-group.sc-ion-input-otp-md{gap:12px}.input-otp-shape-round.sc-ion-input-otp-md-h{--border-radius:16px}.input-otp-shape-soft.sc-ion-input-otp-md-h{--border-radius:8px}.input-otp-shape-rectangular.sc-ion-input-otp-md-h{--border-radius:0}.input-otp-fill-outline.sc-ion-input-otp-md-h{--background:none}.input-otp-fill-solid.sc-ion-input-otp-md-h{--internal-border-color:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-disabled.sc-ion-input-otp-md-h{--color:var(--ion-color-step-350, var(--ion-text-color-step-650, #a6a6a6))}.input-otp-fill-outline.input-otp-disabled.sc-ion-input-otp-md-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--internal-border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.input-otp-disabled.sc-ion-input-otp-md-h,.input-otp-disabled.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:disabled{cursor:not-allowed}.has-focus.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:focus{--border-color:var(--highlight-color);outline:none}.input-otp-fill-outline.input-otp-readonly.sc-ion-input-otp-md-h{--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2))}.input-otp-fill-solid.input-otp-disabled.sc-ion-input-otp-md-h,.input-otp-fill-solid.input-otp-readonly.sc-ion-input-otp-md-h{--internal-border-color:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.ion-touched.ion-invalid.sc-ion-input-otp-md-h{--highlight-color:var(--highlight-color-invalid)}.ion-valid.sc-ion-input-otp-md-h{--highlight-color:var(--highlight-color-valid)}.has-focus.ion-valid.sc-ion-input-otp-md-h,.ion-touched.ion-invalid.sc-ion-input-otp-md-h{--border-color:var(--highlight-color)}.ion-color.sc-ion-input-otp-md-h{--highlight-color-focused:var(--ion-color-base)}.input-otp-fill-outline.ion-color.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:focus{border-color:rgba(var(--ion-color-base-rgb), 0.6)}.input-otp-fill-outline.ion-color.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-outline.ion-color.has-focus.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.has-focus.ion-invalid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{border-color:var(--ion-color-danger, #c5000f)}.input-otp-fill-outline.ion-color.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-outline.ion-color.has-focus.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md,.input-otp-fill-solid.ion-color.has-focus.ion-valid.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{border-color:var(--ion-color-success, #2dd55b)}.input-otp-fill-outline.input-otp-disabled.ion-color.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md{border-color:rgba(var(--ion-color-base-rgb), 0.3)}.sc-ion-input-otp-md-h{--border-width:1px}.has-focus.sc-ion-input-otp-md-h .native-input.sc-ion-input-otp-md:focus{--border-width:2px}.input-otp-fill-outline.sc-ion-input-otp-md-h{--internal-border-color:var(--ion-color-step-300, var(--ion-background-color-step-300, #b3b3b3))}`;
21449
21450
 
21450
21451
  class InputOTP {
21451
21452
  constructor(hostRef) {
@@ -21455,9 +21456,11 @@ class InputOTP {
21455
21456
  this.ionComplete = createEvent(this, "ionComplete", 7);
21456
21457
  this.ionBlur = createEvent(this, "ionBlur", 7);
21457
21458
  this.ionFocus = createEvent(this, "ionFocus", 7);
21458
- this.inheritedAttributes = {};
21459
21459
  this.inputRefs = [];
21460
21460
  this.inputId = `ion-input-otp-${inputIds++}`;
21461
+ this.helperTextId = `${this.inputId}-helper-text`;
21462
+ this.errorTextId = `${this.inputId}-error-text`;
21463
+ this.descriptionId = `${this.inputId}-description`;
21461
21464
  this.parsedSeparators = [];
21462
21465
  /**
21463
21466
  * Tracks whether the user is navigating through input boxes using keyboard navigation
@@ -21473,6 +21476,7 @@ class InputOTP {
21473
21476
  this.inputValues = [];
21474
21477
  this.hasFocus = false;
21475
21478
  this.previousInputValues = [];
21479
+ this.isInvalid = false;
21476
21480
  /**
21477
21481
  * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.
21478
21482
  * Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`.
@@ -21825,6 +21829,9 @@ class InputOTP {
21825
21829
  this.inputRefs[tabbableIndex]?.focus();
21826
21830
  }
21827
21831
  }
21832
+ // The host keeps these (see `HOST_ARIA_ATTRIBUTES`), so re-render when they change
21833
+ onHostAriaChange() {
21834
+ }
21828
21835
  valueChanged() {
21829
21836
  this.initializeValues();
21830
21837
  this.updateTabIndexes();
@@ -21881,13 +21888,29 @@ class InputOTP {
21881
21888
  }
21882
21889
  this.parsedSeparators = separatorValues.filter((pos) => pos <= length);
21883
21890
  }
21891
+ connectedCallback() {
21892
+ const { el } = this;
21893
+ this.isInvalid = checkInvalidState(el);
21894
+ // Resumes watching after a move, since `componentWillLoad` only runs once
21895
+ this.ariaController?.init();
21896
+ }
21897
+ disconnectedCallback() {
21898
+ this.ariaController?.destroy();
21899
+ if (this.validationObserver) {
21900
+ this.validationObserver.disconnect();
21901
+ this.validationObserver = undefined;
21902
+ }
21903
+ }
21884
21904
  componentWillLoad() {
21885
- this.inheritedAttributes = inheritAriaAttributes(this.el);
21905
+ // Only read `role` at load so a later host write isn't copied to the group
21906
+ this.ariaController = createAttributeController(this.el, ariaAttributes.filter((attr) => !HOST_ARIA_ATTRIBUTES.includes(attr)), () => forceUpdate(), ['role']);
21886
21907
  this.processSeparators();
21887
21908
  this.initializeValues();
21888
21909
  }
21889
21910
  componentDidLoad() {
21890
21911
  this.updateTabIndexes();
21912
+ // The description only exists after the first render, so render again to reference it
21913
+ if (this.getDescriptionText()) ;
21891
21914
  }
21892
21915
  componentDidRender() {
21893
21916
  if (this.updateTabIndexesAfterRender) {
@@ -22065,14 +22088,77 @@ class InputOTP {
22065
22088
  const { length } = this;
22066
22089
  return this.parsedSeparators.includes(index + 1) && index < length - 1;
22067
22090
  }
22091
+ /**
22092
+ * Returns `undefined` until the first render creates the description container.
22093
+ */
22094
+ getDescriptionText() {
22095
+ return this.el.querySelector('.input-otp-description')?.textContent?.trim();
22096
+ }
22097
+ getHintTextId() {
22098
+ const { isInvalid, helperText, errorText, helperTextId, errorTextId } = this;
22099
+ if (isInvalid && errorText) {
22100
+ return errorTextId;
22101
+ }
22102
+ if (helperText) {
22103
+ return helperTextId;
22104
+ }
22105
+ return undefined;
22106
+ }
22107
+ renderHintText() {
22108
+ const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
22109
+ return [
22110
+ hAsync("div", { id: helperTextId, class: "helper-text", "aria-live": "polite" }, !isInvalid ? helperText : null),
22111
+ hAsync("div", { id: errorTextId, class: "error-text", role: "alert" }, isInvalid ? errorText : null),
22112
+ ];
22113
+ }
22114
+ renderBottomContent() {
22115
+ const { helperText, errorText } = this;
22116
+ if (!helperText && !errorText) {
22117
+ return;
22118
+ }
22119
+ return hAsync("div", { class: "input-otp-bottom" }, this.renderHintText());
22120
+ }
22121
+ /**
22122
+ * A custom formatter is used as is so translators control the whole name.
22123
+ * With a host `aria-labelledby`, each box also references itself so its
22124
+ * position is still read.
22125
+ */
22126
+ getInputLabelAttributes(index, hostAttributes) {
22127
+ const { inputId, inputLabelFormatter, length } = this;
22128
+ const hostLabel = hostAttributes['aria-label'];
22129
+ const hostLabelledBy = hostAttributes['aria-labelledby'];
22130
+ const position = `${index + 1} of ${length}`;
22131
+ if (inputLabelFormatter !== undefined) {
22132
+ try {
22133
+ return { 'aria-label': inputLabelFormatter(index, length) };
22134
+ }
22135
+ catch (e) {
22136
+ printIonError('[ion-input-otp] - Exception in provided `inputLabelFormatter`:', e);
22137
+ }
22138
+ }
22139
+ if (hostLabelledBy) {
22140
+ return { 'aria-label': position, 'aria-labelledby': `${hostLabelledBy} ${inputId}-${index}` };
22141
+ }
22142
+ return { 'aria-label': hostLabel ? `${hostLabel}, ${position}` : `Input ${position}` };
22143
+ }
22068
22144
  render() {
22069
- const { autocapitalize, color, disabled, el, fill, hasFocus, inheritedAttributes, inputId, inputRefs, inputValues, length, readonly, shape, size, } = this;
22145
+ const { ariaController, autocapitalize, color, descriptionId, disabled, el, fill, hasFocus, inputId, inputRefs, inputValues, isInvalid, length, readonly, shape, size, } = this;
22070
22146
  const mode = getIonMode$1(this);
22071
22147
  const inputmode = this.getInputmode();
22072
22148
  const tabbableIndex = this.getTabbableIndex();
22073
22149
  const pattern = this.getPattern();
22074
- const hasDescription = el.querySelector('.input-otp-description')?.textContent?.trim() !== '';
22075
- return (hAsync(Host, { key: 'def9fbd4fa135e6f435380c6ea86ac1621b4a111', class: createColorClasses$1(color, {
22150
+ const descriptionText = this.getDescriptionText();
22151
+ // Keep the description visible until the first render can check it
22152
+ const hasDescription = descriptionText !== '';
22153
+ /**
22154
+ * Screen readers only announce these from the focused input. The
22155
+ * description stays on the group so it isn't repeated for every input.
22156
+ */
22157
+ const { 'aria-errormessage': ariaErrorMessage, 'aria-required': ariaRequired, ...groupAttributes } = ariaController?.attributes ?? {};
22158
+ const hostDescribedBy = el.getAttribute('aria-describedby');
22159
+ const hostInvalid = el.getAttribute('aria-invalid') ?? undefined;
22160
+ const describedBy = [hostDescribedBy, this.getHintTextId()].filter(Boolean).join(' ');
22161
+ return (hAsync(Host, { key: '5b13c3bed3979e269cf4409895954edb171d68f3', class: createColorClasses$1(color, {
22076
22162
  [mode]: true,
22077
22163
  'has-focus': hasFocus,
22078
22164
  [`input-otp-size-${size}`]: true,
@@ -22080,7 +22166,7 @@ class InputOTP {
22080
22166
  [`input-otp-fill-${fill}`]: true,
22081
22167
  'input-otp-disabled': disabled,
22082
22168
  'input-otp-readonly': readonly,
22083
- }) }, hAsync("div", { key: '5d3d7646a3d4fc856b7b2e1f53d29fca47b10baf', role: "group", "aria-label": "One-time password input", class: "input-otp-group", ...inheritedAttributes }, Array.from({ length }).map((_, index) => (hAsync(Fragment, null, hAsync("div", { class: "native-wrapper" }, hAsync("input", { class: "native-input", id: `${inputId}-${index}`, "aria-label": `Input ${index + 1} of ${length}`, type: "text", autoCapitalize: autocapitalize, inputmode: inputmode, pattern: pattern, disabled: disabled, readOnly: readonly, tabIndex: index === tabbableIndex ? 0 : -1, value: inputValues[index] || '', autocomplete: "one-time-code", ref: (el) => {
22169
+ }) }, hAsync("div", { key: '6db010743f0eb5e059dc00de5822f117a264bb16', role: "group", class: "input-otp-group", ...groupAttributes, "aria-label": groupAttributes['aria-label'] || 'One-time password input', "aria-describedby": descriptionText ? descriptionId : undefined }, Array.from({ length }).map((_, index) => (hAsync(Fragment, null, hAsync("div", { class: "native-wrapper" }, hAsync("input", { class: "native-input", id: `${inputId}-${index}`, ...this.getInputLabelAttributes(index, groupAttributes), "aria-describedby": describedBy || undefined, "aria-errormessage": ariaErrorMessage, "aria-invalid": isInvalid ? 'true' : hostInvalid, "aria-required": ariaRequired, type: "text", autoCapitalize: autocapitalize, inputmode: inputmode, pattern: pattern, disabled: disabled, readOnly: readonly, tabIndex: index === tabbableIndex ? 0 : -1, value: inputValues[index] || '', autocomplete: "one-time-code", ref: (el) => {
22084
22170
  if (el) {
22085
22171
  inputRefs[index] = el;
22086
22172
  }
@@ -22088,13 +22174,19 @@ class InputOTP {
22088
22174
  // The input was removed, so drop its ref and any after it.
22089
22175
  inputRefs.splice(index);
22090
22176
  }
22091
- }, onInput: this.onInput(index), onBlur: this.onBlur, onFocus: this.onFocus(index), onKeyDown: this.onKeyDown(index), onPaste: this.onPaste })), this.showSeparator(index) && hAsync("div", { class: "input-otp-separator" }))))), hAsync("div", { key: '9d72a4ab35b5fdd6bba9701050c385ed253b310f', class: {
22177
+ }, onInput: this.onInput(index), onBlur: this.onBlur, onFocus: this.onFocus(index), onKeyDown: this.onKeyDown(index), onPaste: this.onPaste })), this.showSeparator(index) && hAsync("div", { class: "input-otp-separator" }))))), hAsync("div", { key: '4d55d7532dcc28fadcb2f860dd2fcd2aa45ccccc', id: descriptionId, class: {
22092
22178
  'input-otp-description': true,
22093
22179
  'input-otp-description-hidden': !hasDescription,
22094
- } }, hAsync("slot", { key: '7deb3373c0d4e5deac22fa51577d271b9bb3a6d2' }))));
22180
+ } }, hAsync("slot", { key: '5d6823f48a9786799c9d485ce0d6b9de2ae7f537' })), this.renderBottomContent()));
22095
22181
  }
22096
22182
  get el() { return getElement(this); }
22097
22183
  static get watchers() { return {
22184
+ "aria-describedby": [{
22185
+ "onHostAriaChange": 0
22186
+ }],
22187
+ "aria-invalid": [{
22188
+ "onHostAriaChange": 0
22189
+ }],
22098
22190
  "value": [{
22099
22191
  "valueChanged": 0
22100
22192
  }],
@@ -22118,7 +22210,10 @@ class InputOTP {
22118
22210
  "autocapitalize": [1],
22119
22211
  "color": [513],
22120
22212
  "disabled": [516],
22213
+ "errorText": [1, "error-text"],
22121
22214
  "fill": [1],
22215
+ "helperText": [1, "helper-text"],
22216
+ "inputLabelFormatter": [16],
22122
22217
  "inputmode": [1],
22123
22218
  "length": [2],
22124
22219
  "pattern": [1],
@@ -22131,6 +22226,7 @@ class InputOTP {
22131
22226
  "inputValues": [32],
22132
22227
  "hasFocus": [32],
22133
22228
  "previousInputValues": [32],
22229
+ "isInvalid": [32],
22134
22230
  "setFocus": [64]
22135
22231
  },
22136
22232
  "$listeners$": undefined,
@@ -22139,6 +22235,12 @@ class InputOTP {
22139
22235
  }; }
22140
22236
  }
22141
22237
  let inputIds = 0;
22238
+ /**
22239
+ * The attribute controller removes these from the host, so an app could never
22240
+ * clear them. They stay on the host instead, which only works for global
22241
+ * attributes since the host has no role.
22242
+ */
22243
+ const HOST_ARIA_ATTRIBUTES = ['aria-describedby', 'aria-invalid'];
22142
22244
 
22143
22245
  const iosInputPasswordToggleCss = () => ``;
22144
22246
 
@@ -22458,7 +22560,7 @@ class Item {
22458
22560
  return controls[0];
22459
22561
  }
22460
22562
  render() {
22461
- const { detail, detailIcon, download, labelColorStyles, lines, disabled, href, rel, target, routerAnimation, routerDirection, multipleInputs, el, } = this;
22563
+ const { detail, detailIcon, download, labelColorStyles, lines, disabled, href, rel, target, routerAnimation, routerDirection, multipleInputs, } = this;
22462
22564
  const inheritedAriaAttributes = this.ariaController?.attributes ?? {};
22463
22565
  const childStyles = {};
22464
22566
  const mode = getIonMode$1(this);
@@ -22535,7 +22637,7 @@ class Item {
22535
22637
  * multi-input item, and in a clickable item, which is a second tab stop.
22536
22638
  */
22537
22639
  const slottedIndicatorNeedsRoom = this.hasSlottedIndicatorControl && (multipleInputs || this.isClickable());
22538
- return (hAsync(Host, { key: 'dedd4fbc4f9e4db557c6f8bd91299778af9aba1c', "aria-disabled": ariaDisabled, class: {
22640
+ return (hAsync(Host, { key: '7fe924642310c19f057ae1bfa29c1acdf5cc7ed6', "aria-disabled": ariaDisabled, class: {
22539
22641
  ...childStyles,
22540
22642
  ...labelColorStyles,
22541
22643
  ...createColorClasses$1(this.color, {
@@ -22550,9 +22652,9 @@ class Item {
22550
22652
  'item-focus-indicator-room': slottedIndicatorNeedsRoom,
22551
22653
  'ion-activatable': canActivate,
22552
22654
  'ion-focusable': this.focusable,
22553
- 'item-rtl': isRTL$1(el),
22655
+ 'item-rtl': document.dir === 'rtl',
22554
22656
  }),
22555
- }, role: inList ? 'listitem' : null }, hAsync(TagType, { key: '949000f555bbc8b76a227d84a2442defc3577a4e', ...attrs, ...inheritedAriaAttributes, class: "item-native", part: "native", disabled: disabled, ...clickFn }, hAsync("slot", { key: '9fde070c0f830cfed9c7e25ea4d1f1d7ab710d07', name: "start", onSlotchange: this.updateInteractivityOnSlotChange }), hAsync("div", { key: 'd7ab19b4d7e5d4a7fec2d66e1cb865ff30c609f0', class: "item-inner", part: "inner" }, hAsync("div", { key: 'fdf3f306b98ab6af536e320341985fb34d50ef35', class: "input-wrapper", part: "container" }, hAsync("slot", { key: '06ecb3817c2bdf171f806e2b3e8701d3eb52897e', onSlotchange: this.updateInteractivityOnSlotChange })), hAsync("slot", { key: '7e401db776cd19b0399004e77920b23e526c551a', name: "end", onSlotchange: this.updateInteractivityOnSlotChange }), showDetail && (hAsync("ion-icon", { key: '1dac0a6d5a1ce811731fd5b81b92440de8725989', icon: detailIcon, lazy: false, class: "item-detail-icon", part: "detail-icon", "aria-hidden": "true", "flip-rtl": detailIcon === chevronForward }))), canActivate && mode === 'md' && hAsync("ion-ripple-effect", { key: '7a782fa9c7e74e600191c41c7dd90a4a499de64e' }))));
22657
+ }, role: inList ? 'listitem' : null }, hAsync(TagType, { key: '8fddfb2a076b4b98e45ee8b23579d011dba12acb', ...attrs, ...inheritedAriaAttributes, class: "item-native", part: "native", disabled: disabled, ...clickFn }, hAsync("slot", { key: '7f888b62b2023cf501fd308e32629e7a291c2d05', name: "start", onSlotchange: this.updateInteractivityOnSlotChange }), hAsync("div", { key: '6d5cdde307caa65b131edb65cb0a5f8294cf151c', class: "item-inner", part: "inner" }, hAsync("div", { key: '9fbfffdff4cf51adf1f02d573953cf8b145574b0', class: "input-wrapper", part: "container" }, hAsync("slot", { key: '574c7e61cdaa3959a28bad7353105ef217a76ed9', onSlotchange: this.updateInteractivityOnSlotChange })), hAsync("slot", { key: 'ed7e211960cd65ed17f865a6d50d5bdde069416b', name: "end", onSlotchange: this.updateInteractivityOnSlotChange }), showDetail && (hAsync("ion-icon", { key: '2847bb21f42e9d5ab8ea86262b2bc1c3b3f7c902', icon: detailIcon, lazy: false, class: "item-detail-icon", part: "detail-icon", "aria-hidden": "true", "flip-rtl": detailIcon === chevronForward }))), canActivate && mode === 'md' && hAsync("ion-ripple-effect", { key: '55502ef394db0953144387fa3baebf9fa6a976a9' }))));
22556
22658
  }
22557
22659
  get el() { return getElement(this); }
22558
22660
  static get watchers() { return {
@@ -22779,8 +22881,8 @@ class ItemOptions {
22779
22881
  }
22780
22882
  render() {
22781
22883
  const mode = getIonMode$1(this);
22782
- const isEnd = isEndSide(this.side, this.el);
22783
- return (hAsync(Host, { key: '47d4bf67ac04745ce2d4990844257320f27908dd', class: {
22884
+ const isEnd = isEndSide(this.side);
22885
+ return (hAsync(Host, { key: '6e60ff004d48bf7701711e518ec0b21264496ae8', class: {
22784
22886
  [mode]: true,
22785
22887
  // Used internally for styling
22786
22888
  [`item-options-${mode}`]: true,
@@ -22974,7 +23076,7 @@ class ItemSliding {
22974
23076
  side = optionsToOpen === this.leftOptions ? 'start' : 'end';
22975
23077
  }
22976
23078
  // In RTL we want to switch the sides
22977
- side = isEndSide(side, this.el) ? 'end' : 'start';
23079
+ side = isEndSide(side) ? 'end' : 'start';
22978
23080
  const isStartOpen = this.openAmount < 0;
22979
23081
  const isEndOpen = this.openAmount > 0;
22980
23082
  /**
@@ -23043,7 +23145,7 @@ class ItemSliding {
23043
23145
  // Reset left and right options in case they were removed
23044
23146
  this.leftOptions = this.rightOptions = undefined;
23045
23147
  for (const option of options) {
23046
- const side = isEndSide(option.side ?? option.getAttribute('side'), option) ? 'end' : 'start';
23148
+ const side = isEndSide(option.side ?? option.getAttribute('side')) ? 'end' : 'start';
23047
23149
  if (side === 'start') {
23048
23150
  this.leftOptions = option;
23049
23151
  sides |= 1 /* ItemSide.Start */;
@@ -23062,7 +23164,7 @@ class ItemSliding {
23062
23164
  * do not open left side so swipe to go
23063
23165
  * back will still work.
23064
23166
  */
23065
- const rtl = isRTL$1(this.el);
23167
+ const rtl = document.dir === 'rtl';
23066
23168
  const atEdge = rtl ? window.innerWidth - gesture.startX < 15 : gesture.startX < 15;
23067
23169
  if (atEdge) {
23068
23170
  return false;
@@ -23241,7 +23343,7 @@ class ItemSliding {
23241
23343
  }
23242
23344
  render() {
23243
23345
  const mode = getIonMode$1(this);
23244
- return (hAsync(Host, { key: '94e1e3ae3505bc821b4c806a1e99a0c707ffec64', class: {
23346
+ return (hAsync(Host, { key: '02174ca963753d3a51a4249068f3d436f8acb03d', class: {
23245
23347
  [mode]: true,
23246
23348
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
23247
23349
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
@@ -23353,13 +23455,13 @@ class Label {
23353
23455
  render() {
23354
23456
  const position = this.position;
23355
23457
  const mode = getIonMode$1(this);
23356
- return (hAsync(Host, { key: '5415f57fc93a0b2b82b6d327a8e635876ca5cbf5', class: createColorClasses$1(this.color, {
23458
+ return (hAsync(Host, { key: '461604c1887f322dc13d7df3d5cdbb7ee1361117', class: createColorClasses$1(this.color, {
23357
23459
  [mode]: true,
23358
23460
  'in-item-color': hostContext('ion-item.ion-color', this.el),
23359
23461
  [`label-${position}`]: position !== undefined,
23360
23462
  [`label-no-animate`]: this.noAnimate,
23361
- 'label-rtl': isRTL$1(this.el),
23362
- }) }, hAsync("slot", { key: 'b6b65053228525c94a06c20abb0f03c659cdd7dc' })));
23463
+ 'label-rtl': document.dir === 'rtl',
23464
+ }) }, hAsync("slot", { key: 'a7005d0a217641278aa8e95144e8e4b9ae87a1c5' })));
23363
23465
  }
23364
23466
  get el() { return getElement(this); }
23365
23467
  static get watchers() { return {
@@ -31746,7 +31848,7 @@ const POPOVER_IOS_MIN_EDGE_MARGIN = 25;
31746
31848
  const iosEnterAnimation$1 = (baseEl, opts) => {
31747
31849
  const { event: ev, size, trigger, reference, side, align } = opts;
31748
31850
  const doc = baseEl.ownerDocument;
31749
- const rtl = isRTL$1(baseEl);
31851
+ const isRTL = doc.dir === 'rtl';
31750
31852
  const root = getElementRoot(baseEl);
31751
31853
  const contentEl = root.querySelector('.popover-content');
31752
31854
  const arrowEl = root.querySelector('.popover-arrow');
@@ -31772,10 +31874,10 @@ const iosEnterAnimation$1 = (baseEl, opts) => {
31772
31874
  const defaultPosition = {
31773
31875
  top: bodyHeight / 2 - contentHeight / 2,
31774
31876
  left: bodyWidth / 2 - contentWidth / 2,
31775
- originX: rtl ? 'right' : 'left',
31877
+ originX: isRTL ? 'right' : 'left',
31776
31878
  originY: 'top',
31777
31879
  };
31778
- const results = getPopoverPosition(rtl, contentWidth, contentHeight, arrowWidth, arrowHeight, reference, side, align, defaultPosition, trigger, ev, zoom);
31880
+ const results = getPopoverPosition(isRTL, contentWidth, contentHeight, arrowWidth, arrowHeight, reference, side, align, defaultPosition, trigger, ev, zoom);
31779
31881
  const padding = size === 'cover' ? 0 : POPOVER_IOS_BODY_PADDING;
31780
31882
  const rawSafeArea = getSafeAreaInsets(doc);
31781
31883
  const safeArea = size === 'cover'
@@ -31896,7 +31998,7 @@ const POPOVER_MD_BODY_PADDING = 12;
31896
31998
  const mdEnterAnimation$1 = (baseEl, opts) => {
31897
31999
  const { event: ev, size, trigger, reference, side, align } = opts;
31898
32000
  const doc = baseEl.ownerDocument;
31899
- const rtl = isRTL$1(baseEl);
32001
+ const isRTL = doc.dir === 'rtl';
31900
32002
  const root = getElementRoot(baseEl);
31901
32003
  const contentEl = root.querySelector('.popover-content');
31902
32004
  /**
@@ -31920,10 +32022,10 @@ const mdEnterAnimation$1 = (baseEl, opts) => {
31920
32022
  const defaultPosition = {
31921
32023
  top: bodyHeight / 2 - contentHeight / 2,
31922
32024
  left: bodyWidth / 2 - contentWidth / 2,
31923
- originX: rtl ? 'right' : 'left',
32025
+ originX: isRTL ? 'right' : 'left',
31924
32026
  originY: 'top',
31925
32027
  };
31926
- const results = getPopoverPosition(rtl, contentWidth, contentHeight, 0, 0, reference, side, align, defaultPosition, trigger, ev, zoom);
32028
+ const results = getPopoverPosition(isRTL, contentWidth, contentHeight, 0, 0, reference, side, align, defaultPosition, trigger, ev, zoom);
31927
32029
  const padding = size === 'cover' ? 0 : POPOVER_MD_BODY_PADDING;
31928
32030
  // MD mode now applies safe-area insets (previously passed 0, ignoring all safe areas).
31929
32031
  // This is needed for Android edge-to-edge (API 36+) where system bars overlap content.
@@ -32043,7 +32145,6 @@ class Popover {
32043
32145
  this.lockController = createLockController();
32044
32146
  this.inline = false;
32045
32147
  this.focusDescendantOnPresent = false;
32046
- this.dirSetOnPresent = false;
32047
32148
  this.presented = false;
32048
32149
  /** @internal */
32049
32150
  this.hasController = false;
@@ -32344,15 +32445,6 @@ class Popover {
32344
32445
  }
32345
32446
  const { el } = this;
32346
32447
  const { inline, delegate } = this.getDelegate(true);
32347
- /**
32348
- * When presented, ion-popover is hoisted from its place in the element
32349
- * hierarchy. Copy the current direction onto this element so that child
32350
- * elements can match.
32351
- */
32352
- if (!el.hasAttribute('dir')) {
32353
- el.setAttribute('dir', isRTL$1(el) ? 'rtl' : 'ltr');
32354
- this.dirSetOnPresent = true;
32355
- }
32356
32448
  /**
32357
32449
  * Emit ionMount so JS Frameworks have an opportunity
32358
32450
  * to add the child component to the DOM. The child
@@ -32473,10 +32565,6 @@ class Popover {
32473
32565
  */
32474
32566
  const { delegate } = this.getDelegate();
32475
32567
  await detachComponent(delegate, this.usersElement);
32476
- if (this.dirSetOnPresent) {
32477
- this.el.removeAttribute('dir');
32478
- this.dirSetOnPresent = false;
32479
- }
32480
32568
  }
32481
32569
  unlock();
32482
32570
  return shouldDismiss;
@@ -32504,7 +32592,7 @@ class Popover {
32504
32592
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
32505
32593
  const desktop = isPlatform('desktop');
32506
32594
  const enableArrow = arrow && !parentPopover;
32507
- return (hAsync(Host, { key: '083f06f04d2c2657e510b471fba81cc459e0e878', "aria-modal": "true", "no-router": true, tabindex: "-1", ...htmlAttributes, style: {
32595
+ return (hAsync(Host, { key: 'b5e9c788f58397203976d5f8302dfb89e916efe1', "aria-modal": "true", "no-router": true, tabindex: "-1", ...htmlAttributes, style: {
32508
32596
  zIndex: `${20000 + this.overlayIndex}`,
32509
32597
  }, class: {
32510
32598
  ...getClassMap(this.cssClass),
@@ -32515,7 +32603,7 @@ class Popover {
32515
32603
  [`popover-side-${side}`]: true,
32516
32604
  [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false,
32517
32605
  'popover-nested': !!parentPopover,
32518
- }, onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }, !parentPopover && hAsync("ion-backdrop", { key: 'afd9bfa3edfde061603acfc251eb8ac54c85ec6f', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), hAsync("div", { key: '04314c9b510342f152027a6d62394b74d2888b88', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && hAsync("div", { key: 'e1bc715a4ca37012d109b512e2288c932485bf45', class: "popover-arrow", part: "arrow" }), hAsync("div", { key: '5ab527ca65b483865954005239618de7daf2c621', class: "popover-content", part: "content" }, hAsync("slot", { key: '4d3abb569347f6156d426f98b897e79ffd6b53bc' })))));
32606
+ }, onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }, !parentPopover && hAsync("ion-backdrop", { key: 'f3977833c5b2c0087c286ee54363b478d69eb115', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), hAsync("div", { key: '1059893d6fd2932ca8adcdf8d45a5d66f4794727', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && hAsync("div", { key: '24d7988bdd95882ad77fcaa7112aeda55878bee4', class: "popover-arrow", part: "arrow" }), hAsync("div", { key: '4d6992e0a9d629f11763045f9199f9a77fa521ab', class: "popover-content", part: "content" }, hAsync("slot", { key: 'b29747419620a01a6c34e9e846cd529b0b210145' })))));
32519
32607
  }
32520
32608
  get el() { return getElement(this); }
32521
32609
  static get watchers() { return {
@@ -32621,20 +32709,19 @@ class ProgressBar {
32621
32709
  this.buffer = 1;
32622
32710
  }
32623
32711
  render() {
32624
- const { color, type, reversed, value, buffer, el } = this;
32712
+ const { color, type, reversed, value, buffer } = this;
32625
32713
  const paused = config.getBoolean('_testing');
32626
32714
  const mode = getIonMode$1(this);
32627
32715
  // If the progress is displayed as a solid bar.
32628
32716
  const progressSolid = buffer === 1;
32629
- return (hAsync(Host, { key: '0a5c76361cf8df0c294e0fb2477892e23ecebe38', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
32717
+ return (hAsync(Host, { key: 'd53d39a3e2c0198164a9face62d3775f357b6914', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
32630
32718
  [mode]: true,
32631
32719
  [`progress-bar-${type}`]: true,
32632
32720
  'progress-paused': paused,
32633
- 'progress-bar-reversed': isRTL$1(el) ? !reversed : reversed,
32721
+ 'progress-bar-reversed': document.dir === 'rtl' ? !reversed : reversed,
32634
32722
  'progress-bar-solid': progressSolid,
32635
32723
  }) }, type === 'indeterminate' ? renderIndeterminate() : renderProgress(value, buffer)));
32636
32724
  }
32637
- get el() { return getElement(this); }
32638
32725
  static get style() { return {
32639
32726
  ios: progressBarIosCss(),
32640
32727
  md: progressBarMdCss()
@@ -35749,6 +35836,14 @@ class Route {
35749
35836
  *
35750
35837
  * Accepts paths similar to expressjs so that you can define parameters
35751
35838
  * in the url /foo/:bar where bar would be available in incoming props.
35839
+ *
35840
+ * A url ending in `*`, such as `*` or `/admin/*`, matches any remaining path,
35841
+ * including none, so `/admin/*` also matches `/admin`. It only wins over a
35842
+ * route that matches the whole path when it has more fixed segments, so
35843
+ * `/admin/*` wins over `/:section/:id` but not over `/admin/:id`. It always
35844
+ * wins over a route that matches by ignoring trailing segments, such as
35845
+ * `/admin` for `/admin/users`. The matched path is passed in the `pathMatch`
35846
+ * prop without a leading `/`. A `*` on a route with child routes is ignored.
35752
35847
  */
35753
35848
  this.url = '';
35754
35849
  }
@@ -35837,6 +35932,8 @@ class RouteRedirect {
35837
35932
  const ROUTER_INTENT_NONE = 'root';
35838
35933
  const ROUTER_INTENT_FORWARD = 'forward';
35839
35934
  const ROUTER_INTENT_BACK = 'back';
35935
+ /** Param that holds the path matched by a trailing `*` in an `ion-route` url. */
35936
+ const WILDCARD_PARAM = 'pathMatch';
35840
35937
 
35841
35938
  /** Join the non empty segments with "/". */
35842
35939
  const generatePath = (segments) => {
@@ -35870,12 +35967,13 @@ const writeSegments = (history, root, useHash, segments, direction, state, query
35870
35967
  *
35871
35968
  * Notes:
35872
35969
  * - parameter segments of the form :param are replaced with their value,
35873
- * - null is returned when a value is missing for any parameter segment.
35970
+ * - null is returned when a value is missing for any parameter segment,
35971
+ * - a trailing wildcard is replaced with the path it matched.
35874
35972
  */
35875
35973
  const chainToSegments = (chain) => {
35876
35974
  const segments = [];
35877
35975
  for (const route of chain) {
35878
- for (const segment of route.segments) {
35976
+ for (const segment of withoutWildcard(route.segments)) {
35879
35977
  if (segment[0] === ':') {
35880
35978
  const param = route.params && route.params[segment.slice(1)];
35881
35979
  if (!param) {
@@ -35887,9 +35985,22 @@ const chainToSegments = (chain) => {
35887
35985
  segments.push(segment);
35888
35986
  }
35889
35987
  }
35988
+ segments.push(...wildcardSegments(route));
35890
35989
  }
35891
35990
  return segments;
35892
35991
  };
35992
+ /** Only a `*` in the last segment of a route url is a wildcard. Elsewhere it's matched literally. */
35993
+ const endsWithWildcard = (segments) => {
35994
+ return segments[segments.length - 1] === '*';
35995
+ };
35996
+ /** Returns the path segments matched by the trailing wildcard of the route. */
35997
+ const wildcardSegments = (route) => {
35998
+ const pathMatch = endsWithWildcard(route.segments) ? route.params?.[WILDCARD_PARAM] : undefined;
35999
+ return pathMatch ? pathMatch.split('/').filter((s) => s.length > 0) : [];
36000
+ };
36001
+ const withoutWildcard = (segments) => {
36002
+ return endsWithWildcard(segments) ? segments.slice(0, -1) : segments;
36003
+ };
35893
36004
  /**
35894
36005
  * Removes the prefix segments from the path segments.
35895
36006
  *
@@ -36222,6 +36333,10 @@ const matchesIDs = (ids, chain) => {
36222
36333
  if (routeId.id.toLowerCase() !== routeChain.id) {
36223
36334
  break;
36224
36335
  }
36336
+ // Weight a wildcard route when the outlet reports its `pathMatch`
36337
+ if (routeId.params?.[WILDCARD_PARAM] !== undefined && endsWithWildcard(routeChain.segments)) {
36338
+ score++;
36339
+ }
36225
36340
  if (routeId.params) {
36226
36341
  const routeIdParams = Object.keys(routeId.params);
36227
36342
  // Only compare routes with the chain that have the same number of parameters.
@@ -36277,21 +36392,28 @@ const matchesSegments = (segments, chain) => {
36277
36392
  matchesDefault = true;
36278
36393
  }
36279
36394
  else {
36280
- for (const segment of chainSegments) {
36395
+ const params = {};
36396
+ for (const segment of withoutWildcard(chainSegments)) {
36281
36397
  const data = inputSegments.next();
36282
36398
  // data param
36283
36399
  if (segment[0] === ':') {
36284
36400
  if (data === '') {
36285
36401
  return null;
36286
36402
  }
36287
- allparams = allparams || [];
36288
- const params = allparams[i] || (allparams[i] = {});
36289
36403
  params[segment.slice(1)] = data;
36290
36404
  }
36291
36405
  else if (data !== segment) {
36292
36406
  return null;
36293
36407
  }
36294
36408
  }
36409
+ // A trailing `*` on a parent route has no effect. Its children match the rest of the path.
36410
+ if (i === chain.length - 1 && endsWithWildcard(chainSegments)) {
36411
+ params[WILDCARD_PARAM] = inputSegments.rest().join('/');
36412
+ }
36413
+ if (Object.keys(params).length > 0) {
36414
+ allparams = allparams || [];
36415
+ allparams[i] = params;
36416
+ }
36295
36417
  matchesDefault = false;
36296
36418
  }
36297
36419
  }
@@ -36323,25 +36445,38 @@ const mergeParams = (a, b) => {
36323
36445
  * Returns the best match or null when no match is found.
36324
36446
  * When a chain is returned the parameters are updated from the RouteIDs.
36325
36447
  * That is they contain both the componentProps of the <ion-route> and the parameter segment.
36448
+ *
36449
+ * When a wildcard route ties with other routes, a route without a wildcard that can build a url wins,
36450
+ * then the wildcard route. Otherwise the first route declared wins a tie.
36326
36451
  */
36327
36452
  const findChainForIDs = (ids, chains) => {
36328
- let match = null;
36329
36453
  let maxMatches = 0;
36454
+ let tied = [];
36330
36455
  for (const chain of chains) {
36331
36456
  const score = matchesIDs(ids, chain);
36332
36457
  if (score > maxMatches) {
36333
- match = chain;
36334
36458
  maxMatches = score;
36459
+ tied = [chain];
36460
+ }
36461
+ else if (score > 0 && score === maxMatches) {
36462
+ tied.push(chain);
36335
36463
  }
36336
36464
  }
36337
- if (match) {
36338
- return match.map((route, i) => ({
36339
- id: route.id,
36340
- segments: route.segments,
36341
- params: mergeParams(route.params, ids[i]?.params),
36342
- }));
36465
+ const matches = tied.map((chain) => chain.map((route, i) => ({
36466
+ id: route.id,
36467
+ segments: route.segments,
36468
+ params: mergeParams(route.params, ids[i]?.params),
36469
+ })));
36470
+ if (!matches.some(chainEndsWithWildcard)) {
36471
+ return matches.length > 0 ? matches[0] : null;
36343
36472
  }
36344
- return null;
36473
+ return matches.reduce((best, chain) => (tieRank(chain) > tieRank(best) ? chain : best));
36474
+ };
36475
+ const tieRank = (chain) => {
36476
+ if (chainEndsWithWildcard(chain)) {
36477
+ return 1;
36478
+ }
36479
+ return chainToSegments(chain) !== null ? 2 : 0;
36345
36480
  };
36346
36481
  /**
36347
36482
  * Finds the best match for the segments in the chains.
@@ -36349,10 +36484,17 @@ const findChainForIDs = (ids, chains) => {
36349
36484
  * Returns the best match or null when no match is found.
36350
36485
  * When a chain is returned the parameters are updated from the segments.
36351
36486
  * That is they contain both the componentProps of the <ion-route> and the parameter segments.
36487
+ *
36488
+ * When wildcard routes match, the one with the most fixed segments wins if it has more fixed segments than every
36489
+ * route that matched the whole path. Routes that only matched by ignoring trailing segments don't count.
36352
36490
  */
36353
36491
  const findChainForSegments = (segments, chains) => {
36354
36492
  let match = null;
36355
36493
  let bestScore = 0;
36494
+ let fullMatch = null;
36495
+ let bestFullScore = 0;
36496
+ let maxFullFixed = -1;
36497
+ let wildcard = null;
36356
36498
  for (const chain of chains) {
36357
36499
  const matchedChain = matchesSegments(segments, chain);
36358
36500
  if (matchedChain !== null) {
@@ -36361,9 +36503,51 @@ const findChainForSegments = (segments, chains) => {
36361
36503
  bestScore = score;
36362
36504
  match = matchedChain;
36363
36505
  }
36506
+ if (chainEndsWithWildcard(matchedChain)) {
36507
+ if (wildcard === null || winsWildcard(matchedChain, wildcard)) {
36508
+ wildcard = matchedChain;
36509
+ }
36510
+ }
36511
+ else if (!isPartialMatch(segments, matchedChain)) {
36512
+ if (score > bestFullScore) {
36513
+ bestFullScore = score;
36514
+ fullMatch = matchedChain;
36515
+ }
36516
+ maxFullFixed = Math.max(maxFullFixed, countFixedSegments(matchedChain));
36517
+ }
36364
36518
  }
36365
36519
  }
36366
- return match;
36520
+ // Without a wildcard to match the rest of the path, routes can still ignore trailing segments.
36521
+ if (wildcard === null) {
36522
+ return match;
36523
+ }
36524
+ // Compare fixed segments rather than priority, since nesting under default routes raises the priority
36525
+ return countFixedSegments(wildcard) > maxFullFixed ? wildcard : fullMatch;
36526
+ };
36527
+ /** Returns whether the chain matched the path segments only by ignoring some trailing segments. */
36528
+ const isPartialMatch = (segments, chain) => {
36529
+ const matched = chainToSegments(chain);
36530
+ return matched !== null && matched.length < segments.filter((s) => s !== '').length;
36531
+ };
36532
+ const chainEndsWithWildcard = (chain) => {
36533
+ return endsWithWildcard(chain[chain.length - 1].segments);
36534
+ };
36535
+ /** Returns whether the wildcard chain beats `best` by fixed segments, then by priority. */
36536
+ const winsWildcard = (chain, best) => {
36537
+ const chainFixed = countFixedSegments(chain);
36538
+ const bestFixed = countFixedSegments(best);
36539
+ return chainFixed > bestFixed || (chainFixed === bestFixed && computePriority(chain) > computePriority(best));
36540
+ };
36541
+ const countFixedSegments = (chain) => {
36542
+ let count = 0;
36543
+ for (const route of chain) {
36544
+ for (const segment of withoutWildcard(route.segments)) {
36545
+ if (segment !== '' && segment[0] !== ':') {
36546
+ count++;
36547
+ }
36548
+ }
36549
+ }
36550
+ return count;
36367
36551
  };
36368
36552
  /**
36369
36553
  * Computes the priority of a chain.
@@ -36375,12 +36559,14 @@ const findChainForSegments = (segments, chains) => {
36375
36559
  * - /path/to/page
36376
36560
  *
36377
36561
  * The second one will be given a higher priority because "page" is a fixed segment (vs ":where", a parameter segment).
36562
+ *
36563
+ * A trailing wildcard is not counted.
36378
36564
  */
36379
36565
  const computePriority = (chain) => {
36380
36566
  let score = 1;
36381
36567
  let level = 1;
36382
36568
  for (const route of chain) {
36383
- for (const segment of route.segments) {
36569
+ for (const segment of withoutWildcard(route.segments)) {
36384
36570
  if (segment[0] === ':') {
36385
36571
  score += Math.pow(1, level);
36386
36572
  }
@@ -36402,6 +36588,12 @@ class RouterSegments {
36402
36588
  }
36403
36589
  return '';
36404
36590
  }
36591
+ /** Consumes and returns the remaining non empty segments. */
36592
+ rest() {
36593
+ const rest = this.segments.filter((s) => s !== '');
36594
+ this.segments = [];
36595
+ return rest;
36596
+ }
36405
36597
  }
36406
36598
 
36407
36599
  const readProp = (el, prop) => {
@@ -42816,11 +43008,11 @@ class ToolbarTitle {
42816
43008
  render() {
42817
43009
  const mode = getIonMode$1(this);
42818
43010
  const size = this.getSize();
42819
- return (hAsync(Host, { key: '8d17feb9f9dcb9eb8e3b8ae6e831bdedb890771c', class: createColorClasses$1(this.color, {
43011
+ return (hAsync(Host, { key: 'c5f0b913ff0a22d9bf02da48a313a613c2ac8fe7', class: createColorClasses$1(this.color, {
42820
43012
  [mode]: true,
42821
43013
  [`title-${size}`]: true,
42822
- 'title-rtl': isRTL$1(this.el),
42823
- }) }, hAsync("div", { key: '0346aae3fca1e3ae443b1b511c44ab1f803cb103', class: "toolbar-title" }, hAsync("slot", { key: 'e1945845df471d5eb8c3cdeb568c478abf5ad70e' }))));
43014
+ 'title-rtl': document.dir === 'rtl',
43015
+ }) }, hAsync("div", { key: '5253b9e39fb764bfe1e57370719139f8a83e9904', class: "toolbar-title" }, hAsync("slot", { key: 'e38b1eccb0175c36f8cab211aee7ce4d61fc9035' }))));
42824
43016
  }
42825
43017
  get el() { return getElement(this); }
42826
43018
  static get watchers() { return {
@@ -43308,9 +43500,9 @@ const iosTransitionAnimation = (navEl, opts) => {
43308
43500
  const TRANSFORM = 'transform';
43309
43501
  const CENTER = '0%';
43310
43502
  const OFF_OPACITY = 0.8;
43311
- const rtl = isRTL$1(navEl);
43312
- const OFF_RIGHT = rtl ? '-99.5%' : '99.5%';
43313
- const OFF_LEFT = rtl ? '33%' : '-33%';
43503
+ const isRTL = navEl.ownerDocument.dir === 'rtl';
43504
+ const OFF_RIGHT = isRTL ? '-99.5%' : '99.5%';
43505
+ const OFF_LEFT = isRTL ? '33%' : '-33%';
43314
43506
  const enteringEl = opts.enteringEl;
43315
43507
  const leavingEl = opts.leavingEl;
43316
43508
  const backDirection = opts.direction === 'back';
@@ -43375,7 +43567,7 @@ const iosTransitionAnimation = (navEl, opts) => {
43375
43567
  }
43376
43568
  }
43377
43569
  const enteringContentHasLargeTitle = enteringEl.querySelector('ion-header.header-collapse-condense');
43378
- const { forward, backward } = createLargeTitleTransition(rootAnimation, rtl, backDirection, enteringEl, leavingEl);
43570
+ const { forward, backward } = createLargeTitleTransition(rootAnimation, isRTL, backDirection, enteringEl, leavingEl);
43379
43571
  enteringToolBarEls.forEach((enteringToolBarEl) => {
43380
43572
  const enteringToolBar = createAnimation();
43381
43573
  enteringToolBar.addElement(enteringToolBarEl);
@@ -43439,7 +43631,7 @@ const iosTransitionAnimation = (navEl, opts) => {
43439
43631
  enteringToolBarBg.fromTo(OPACITY, 0.01, 'var(--opacity)');
43440
43632
  }
43441
43633
  else {
43442
- enteringToolBarBg.fromTo('transform', rtl ? 'translateX(-100%)' : 'translateX(100%)', 'translateX(0px)');
43634
+ enteringToolBarBg.fromTo('transform', isRTL ? 'translateX(-100%)' : 'translateX(100%)', 'translateX(0px)');
43443
43635
  }
43444
43636
  // forward direction, entering page has a back button
43445
43637
  if (!forward) {
@@ -43449,7 +43641,7 @@ const iosTransitionAnimation = (navEl, opts) => {
43449
43641
  const enteringBackBtnText = createAnimation();
43450
43642
  enteringBackBtnText
43451
43643
  .addElement(shadow(backButtonEl).querySelector('.button-text')) // REVIEW
43452
- .fromTo(`transform`, rtl ? 'translateX(-100px)' : 'translateX(100px)', 'translateX(0px)');
43644
+ .fromTo(`transform`, isRTL ? 'translateX(-100px)' : 'translateX(100px)', 'translateX(0px)');
43453
43645
  enteringToolBar.addAnimation(enteringBackBtnText);
43454
43646
  }
43455
43647
  }
@@ -43472,7 +43664,7 @@ const iosTransitionAnimation = (navEl, opts) => {
43472
43664
  // leaving content, back direction
43473
43665
  leavingContent
43474
43666
  .beforeClearStyles([OPACITY])
43475
- .fromTo('transform', `translateX(${CENTER})`, rtl ? 'translateX(-100%)' : 'translateX(100%)');
43667
+ .fromTo('transform', `translateX(${CENTER})`, isRTL ? 'translateX(-100%)' : 'translateX(100%)');
43476
43668
  const leavingPage = getIonPageElement(leavingEl);
43477
43669
  rootAnimation.afterAddWrite(() => {
43478
43670
  if (rootAnimation.getDirection() === 'normal') {
@@ -43552,10 +43744,10 @@ const iosTransitionAnimation = (navEl, opts) => {
43552
43744
  if (!inactiveHeader) {
43553
43745
  // leaving toolbar, back direction
43554
43746
  leavingTitle
43555
- .fromTo('transform', `translateX(${CENTER})`, rtl ? 'translateX(-100%)' : 'translateX(100%)')
43747
+ .fromTo('transform', `translateX(${CENTER})`, isRTL ? 'translateX(-100%)' : 'translateX(100%)')
43556
43748
  .fromTo(OPACITY, 0.99, 0);
43557
43749
  }
43558
- leavingToolBarItems.fromTo('transform', `translateX(${CENTER})`, rtl ? 'translateX(-100%)' : 'translateX(100%)');
43750
+ leavingToolBarItems.fromTo('transform', `translateX(${CENTER})`, isRTL ? 'translateX(-100%)' : 'translateX(100%)');
43559
43751
  leavingToolBarBg.beforeClearStyles([OPACITY, 'transform']);
43560
43752
  // leaving toolbar, back direction, and there's no entering toolbar
43561
43753
  // should just slide out, no fading out
@@ -43564,13 +43756,13 @@ const iosTransitionAnimation = (navEl, opts) => {
43564
43756
  leavingToolBarBg.fromTo(OPACITY, 'var(--opacity)', 0);
43565
43757
  }
43566
43758
  else {
43567
- leavingToolBarBg.fromTo('transform', 'translateX(0px)', rtl ? 'translateX(-100%)' : 'translateX(100%)');
43759
+ leavingToolBarBg.fromTo('transform', 'translateX(0px)', isRTL ? 'translateX(-100%)' : 'translateX(100%)');
43568
43760
  }
43569
43761
  if (backButtonEl && !backward) {
43570
43762
  const leavingBackBtnText = createAnimation();
43571
43763
  leavingBackBtnText
43572
43764
  .addElement(shadow(backButtonEl).querySelector('.button-text')) // REVIEW
43573
- .fromTo('transform', `translateX(${CENTER})`, `translateX(${(rtl ? -124 : 124) + 'px'})`);
43765
+ .fromTo('transform', `translateX(${CENTER})`, `translateX(${(isRTL ? -124 : 124) + 'px'})`);
43574
43766
  leavingToolBar.addAnimation(leavingBackBtnText);
43575
43767
  }
43576
43768
  }