@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.js CHANGED
@@ -6002,7 +6002,7 @@ const isRTL$1 = (hostEl) => {
6002
6002
  return false;
6003
6003
  }
6004
6004
  }
6005
- return hostEl.ownerDocument?.dir?.toLowerCase() === 'rtl';
6005
+ return document?.dir?.toLowerCase() === 'rtl';
6006
6006
  };
6007
6007
 
6008
6008
  const transitionEndAsync = (el, expectedDuration = 0) => {
@@ -6304,7 +6304,8 @@ const assert = (actual, reason) => {
6304
6304
  *
6305
6305
  * @param side The current side before being redefined based on the direction.
6306
6306
  * @param hostEl The component's host element. The direction is resolved from
6307
- * it or its nearest ancestor that declares one, falling back to the document.
6307
+ * it or its nearest ancestor that declares one. When omitted, the direction
6308
+ * is resolved from the document.
6308
6309
  */
6309
6310
  const isEndSide = (side, hostEl) => {
6310
6311
  const rtl = isRTL$1(hostEl);
@@ -11284,14 +11285,6 @@ class Alert {
11284
11285
  * the alert dismisses. You will need to do that in your code.
11285
11286
  */
11286
11287
  this.isOpen = false;
11287
- /**
11288
- * Prevent Enter from toggling the checkbox, which only Space should do.
11289
- */
11290
- this.onCheckboxKeydown = (ev) => {
11291
- if (ev.key === 'Enter') {
11292
- ev.preventDefault();
11293
- }
11294
- };
11295
11288
  this.onBackdropTap = () => {
11296
11289
  this.dismiss(undefined, BACKDROP);
11297
11290
  };
@@ -11319,6 +11312,14 @@ class Alert {
11319
11312
  }
11320
11313
  onKeydown(ev) {
11321
11314
  const inputTypes = new Set(this.processedInputs.map((i) => i.type));
11315
+ /**
11316
+ * Based on keyboard navigation requirements, the
11317
+ * checkbox should not respond to the enter keydown event.
11318
+ */
11319
+ if (inputTypes.has('checkbox') && ev.key === 'Enter') {
11320
+ ev.preventDefault();
11321
+ return;
11322
+ }
11322
11323
  /**
11323
11324
  * 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.
11324
11325
  */
@@ -11628,7 +11629,7 @@ class Alert {
11628
11629
  };
11629
11630
  const defaultLabelPlacement = getOverlayLabelPlacement(mode, 'checkbox');
11630
11631
  const defaultJustify = getOverlayLabelJustify(mode, 'checkbox');
11631
- 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: {
11632
+ 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: {
11632
11633
  ...getClassMap(i.cssClass),
11633
11634
  'alert-tappable': true,
11634
11635
  'alert-checkbox': true,
@@ -11778,14 +11779,14 @@ class Alert {
11778
11779
  * If neither are defined, do not set aria-labelledby.
11779
11780
  */
11780
11781
  const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
11781
- return (hAsync(Host, { key: '5d0b4ff618d956178aa5a1cd869f9ed28dc629ee', tabindex: "-1", style: {
11782
+ return (hAsync(Host, { key: '083b5250dc4c76e85240e0225abcb7ca2b66de2f', tabindex: "-1", style: {
11782
11783
  zIndex: `${20000 + overlayIndex}`,
11783
11784
  }, class: {
11784
11785
  ...getClassMap(this.cssClass),
11785
11786
  [mode]: true,
11786
11787
  'overlay-hidden': true,
11787
11788
  'alert-translucent': this.translucent,
11788
- }, 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" })));
11789
+ }, 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" })));
11789
11790
  }
11790
11791
  get el() { return getElement(this); }
11791
11792
  static get watchers() { return {
@@ -13931,28 +13932,27 @@ class Col {
13931
13932
  [modifier]: amount,
13932
13933
  };
13933
13934
  }
13934
- calculateOffset(rtl) {
13935
- return this.calculatePosition('offset', rtl ? 'margin-right' : 'margin-left');
13935
+ calculateOffset(isRTL) {
13936
+ return this.calculatePosition('offset', isRTL ? 'margin-right' : 'margin-left');
13936
13937
  }
13937
- calculatePull(rtl) {
13938
- return this.calculatePosition('pull', rtl ? 'left' : 'right');
13938
+ calculatePull(isRTL) {
13939
+ return this.calculatePosition('pull', isRTL ? 'left' : 'right');
13939
13940
  }
13940
- calculatePush(rtl) {
13941
- return this.calculatePosition('push', rtl ? 'right' : 'left');
13941
+ calculatePush(isRTL) {
13942
+ return this.calculatePosition('push', isRTL ? 'right' : 'left');
13942
13943
  }
13943
13944
  render() {
13944
- const rtl = isRTL$1(this.el);
13945
+ const isRTL = document.dir === 'rtl';
13945
13946
  const mode = getIonMode$1(this);
13946
- return (hAsync(Host, { key: '98f3c88ee5408120539e3daf097982dea1b4842a', class: {
13947
+ return (hAsync(Host, { key: 'e12293a4315cb474bbde73421dd0b4129f1df1cc', class: {
13947
13948
  [mode]: true,
13948
13949
  }, style: {
13949
- ...this.calculateOffset(rtl),
13950
- ...this.calculatePull(rtl),
13951
- ...this.calculatePush(rtl),
13950
+ ...this.calculateOffset(isRTL),
13951
+ ...this.calculatePull(isRTL),
13952
+ ...this.calculatePush(isRTL),
13952
13953
  ...this.calculateSize(),
13953
- } }, hAsync("slot", { key: '14e2f0c30bc3fea9aa9683e3bd4ed5dd4a3be05c' })));
13954
+ } }, hAsync("slot", { key: '869317ea6574111a57a7a9d096c53d264c335d28' })));
13954
13955
  }
13955
- get el() { return getElement(this); }
13956
13956
  static get style() { return colCss(); }
13957
13957
  static get cmpMeta() { return {
13958
13958
  "$flags$": 265,
@@ -17988,12 +17988,13 @@ class Datetime {
17988
17988
  const collapsedIcon = mode === 'ios' ? chevronForward : caretDownSharp;
17989
17989
  const prevMonthDisabled = disabled || isPrevMonthDisabled(this.workingParts, this.minParts, this.maxParts);
17990
17990
  const nextMonthDisabled = disabled || isNextMonthDisabled(this.workingParts, this.maxParts);
17991
- const hostDir = isRTL$1(this.el) ? 'rtl' : 'ltr';
17991
+ // don't use the inheritAttributes util because it removes dir from the host, and we still need that
17992
+ const hostDir = this.el.getAttribute('dir') || undefined;
17992
17993
  return (hAsync("div", { class: "calendar-header", part: "calendar-header" }, hAsync("div", { class: "calendar-action-buttons" }, hAsync("div", { class: "calendar-month-year" }, hAsync("button", { class: {
17993
17994
  'calendar-month-year-toggle': true,
17994
17995
  'ion-activatable': true,
17995
17996
  'ion-focusable': true,
17996
- }, 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) => {
17997
+ }, 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) => {
17997
17998
  return hAsync("div", { class: "day-of-week" }, d);
17998
17999
  }))));
17999
18000
  }
@@ -18310,7 +18311,7 @@ class Datetime {
18310
18311
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
18311
18312
  const hasWheelVariant = hasDatePresentation && preferWheel;
18312
18313
  renderHiddenInput(true, el, name, formatValue(value), disabled);
18313
- return (hAsync(Host, { key: '465c9c22bccabc4a82ea4054c536c6086b85ddf9', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: {
18314
+ return (hAsync(Host, { key: 'e9b99bb5610fc7fe879200a56dcc865c6e2f1404', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: {
18314
18315
  ...createColorClasses$1(color, {
18315
18316
  [mode]: true,
18316
18317
  ['datetime-readonly']: readonly,
@@ -18322,7 +18323,7 @@ class Datetime {
18322
18323
  [`datetime-prefer-wheel`]: hasWheelVariant,
18323
18324
  [`datetime-grid`]: isGridStyle,
18324
18325
  }),
18325
- } }, hAsync("div", { key: '9732b003440a0ca23520bc8a09e73125d88fd565', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
18326
+ } }, hAsync("div", { key: 'a5e61be2989468dc24ec8fb394116d9339b7824c', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
18326
18327
  }
18327
18328
  get el() { return getElement(this); }
18328
18329
  static get watchers() { return {
@@ -21445,9 +21446,9 @@ class Input {
21445
21446
  }
21446
21447
  let inputIds$1 = 0;
21447
21448
 
21448
- 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))))}`;
21449
+ 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))))}`;
21449
21450
 
21450
- 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))}`;
21451
+ 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))}`;
21451
21452
 
21452
21453
  class InputOTP {
21453
21454
  constructor(hostRef) {
@@ -21457,9 +21458,11 @@ class InputOTP {
21457
21458
  this.ionComplete = createEvent(this, "ionComplete", 7);
21458
21459
  this.ionBlur = createEvent(this, "ionBlur", 7);
21459
21460
  this.ionFocus = createEvent(this, "ionFocus", 7);
21460
- this.inheritedAttributes = {};
21461
21461
  this.inputRefs = [];
21462
21462
  this.inputId = `ion-input-otp-${inputIds++}`;
21463
+ this.helperTextId = `${this.inputId}-helper-text`;
21464
+ this.errorTextId = `${this.inputId}-error-text`;
21465
+ this.descriptionId = `${this.inputId}-description`;
21463
21466
  this.parsedSeparators = [];
21464
21467
  /**
21465
21468
  * Tracks whether the user is navigating through input boxes using keyboard navigation
@@ -21475,6 +21478,7 @@ class InputOTP {
21475
21478
  this.inputValues = [];
21476
21479
  this.hasFocus = false;
21477
21480
  this.previousInputValues = [];
21481
+ this.isInvalid = false;
21478
21482
  /**
21479
21483
  * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.
21480
21484
  * Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`.
@@ -21827,6 +21831,9 @@ class InputOTP {
21827
21831
  this.inputRefs[tabbableIndex]?.focus();
21828
21832
  }
21829
21833
  }
21834
+ // The host keeps these (see `HOST_ARIA_ATTRIBUTES`), so re-render when they change
21835
+ onHostAriaChange() {
21836
+ }
21830
21837
  valueChanged() {
21831
21838
  this.initializeValues();
21832
21839
  this.updateTabIndexes();
@@ -21883,13 +21890,29 @@ class InputOTP {
21883
21890
  }
21884
21891
  this.parsedSeparators = separatorValues.filter((pos) => pos <= length);
21885
21892
  }
21893
+ connectedCallback() {
21894
+ const { el } = this;
21895
+ this.isInvalid = checkInvalidState(el);
21896
+ // Resumes watching after a move, since `componentWillLoad` only runs once
21897
+ this.ariaController?.init();
21898
+ }
21899
+ disconnectedCallback() {
21900
+ this.ariaController?.destroy();
21901
+ if (this.validationObserver) {
21902
+ this.validationObserver.disconnect();
21903
+ this.validationObserver = undefined;
21904
+ }
21905
+ }
21886
21906
  componentWillLoad() {
21887
- this.inheritedAttributes = inheritAriaAttributes(this.el);
21907
+ // Only read `role` at load so a later host write isn't copied to the group
21908
+ this.ariaController = createAttributeController(this.el, ariaAttributes.filter((attr) => !HOST_ARIA_ATTRIBUTES.includes(attr)), () => forceUpdate(), ['role']);
21888
21909
  this.processSeparators();
21889
21910
  this.initializeValues();
21890
21911
  }
21891
21912
  componentDidLoad() {
21892
21913
  this.updateTabIndexes();
21914
+ // The description only exists after the first render, so render again to reference it
21915
+ if (this.getDescriptionText()) ;
21893
21916
  }
21894
21917
  componentDidRender() {
21895
21918
  if (this.updateTabIndexesAfterRender) {
@@ -22067,14 +22090,77 @@ class InputOTP {
22067
22090
  const { length } = this;
22068
22091
  return this.parsedSeparators.includes(index + 1) && index < length - 1;
22069
22092
  }
22093
+ /**
22094
+ * Returns `undefined` until the first render creates the description container.
22095
+ */
22096
+ getDescriptionText() {
22097
+ return this.el.querySelector('.input-otp-description')?.textContent?.trim();
22098
+ }
22099
+ getHintTextId() {
22100
+ const { isInvalid, helperText, errorText, helperTextId, errorTextId } = this;
22101
+ if (isInvalid && errorText) {
22102
+ return errorTextId;
22103
+ }
22104
+ if (helperText) {
22105
+ return helperTextId;
22106
+ }
22107
+ return undefined;
22108
+ }
22109
+ renderHintText() {
22110
+ const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
22111
+ return [
22112
+ hAsync("div", { id: helperTextId, class: "helper-text", "aria-live": "polite" }, !isInvalid ? helperText : null),
22113
+ hAsync("div", { id: errorTextId, class: "error-text", role: "alert" }, isInvalid ? errorText : null),
22114
+ ];
22115
+ }
22116
+ renderBottomContent() {
22117
+ const { helperText, errorText } = this;
22118
+ if (!helperText && !errorText) {
22119
+ return;
22120
+ }
22121
+ return hAsync("div", { class: "input-otp-bottom" }, this.renderHintText());
22122
+ }
22123
+ /**
22124
+ * A custom formatter is used as is so translators control the whole name.
22125
+ * With a host `aria-labelledby`, each box also references itself so its
22126
+ * position is still read.
22127
+ */
22128
+ getInputLabelAttributes(index, hostAttributes) {
22129
+ const { inputId, inputLabelFormatter, length } = this;
22130
+ const hostLabel = hostAttributes['aria-label'];
22131
+ const hostLabelledBy = hostAttributes['aria-labelledby'];
22132
+ const position = `${index + 1} of ${length}`;
22133
+ if (inputLabelFormatter !== undefined) {
22134
+ try {
22135
+ return { 'aria-label': inputLabelFormatter(index, length) };
22136
+ }
22137
+ catch (e) {
22138
+ printIonError('[ion-input-otp] - Exception in provided `inputLabelFormatter`:', e);
22139
+ }
22140
+ }
22141
+ if (hostLabelledBy) {
22142
+ return { 'aria-label': position, 'aria-labelledby': `${hostLabelledBy} ${inputId}-${index}` };
22143
+ }
22144
+ return { 'aria-label': hostLabel ? `${hostLabel}, ${position}` : `Input ${position}` };
22145
+ }
22070
22146
  render() {
22071
- const { autocapitalize, color, disabled, el, fill, hasFocus, inheritedAttributes, inputId, inputRefs, inputValues, length, readonly, shape, size, } = this;
22147
+ const { ariaController, autocapitalize, color, descriptionId, disabled, el, fill, hasFocus, inputId, inputRefs, inputValues, isInvalid, length, readonly, shape, size, } = this;
22072
22148
  const mode = getIonMode$1(this);
22073
22149
  const inputmode = this.getInputmode();
22074
22150
  const tabbableIndex = this.getTabbableIndex();
22075
22151
  const pattern = this.getPattern();
22076
- const hasDescription = el.querySelector('.input-otp-description')?.textContent?.trim() !== '';
22077
- return (hAsync(Host, { key: 'def9fbd4fa135e6f435380c6ea86ac1621b4a111', class: createColorClasses$1(color, {
22152
+ const descriptionText = this.getDescriptionText();
22153
+ // Keep the description visible until the first render can check it
22154
+ const hasDescription = descriptionText !== '';
22155
+ /**
22156
+ * Screen readers only announce these from the focused input. The
22157
+ * description stays on the group so it isn't repeated for every input.
22158
+ */
22159
+ const { 'aria-errormessage': ariaErrorMessage, 'aria-required': ariaRequired, ...groupAttributes } = ariaController?.attributes ?? {};
22160
+ const hostDescribedBy = el.getAttribute('aria-describedby');
22161
+ const hostInvalid = el.getAttribute('aria-invalid') ?? undefined;
22162
+ const describedBy = [hostDescribedBy, this.getHintTextId()].filter(Boolean).join(' ');
22163
+ return (hAsync(Host, { key: '5b13c3bed3979e269cf4409895954edb171d68f3', class: createColorClasses$1(color, {
22078
22164
  [mode]: true,
22079
22165
  'has-focus': hasFocus,
22080
22166
  [`input-otp-size-${size}`]: true,
@@ -22082,7 +22168,7 @@ class InputOTP {
22082
22168
  [`input-otp-fill-${fill}`]: true,
22083
22169
  'input-otp-disabled': disabled,
22084
22170
  'input-otp-readonly': readonly,
22085
- }) }, 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) => {
22171
+ }) }, 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) => {
22086
22172
  if (el) {
22087
22173
  inputRefs[index] = el;
22088
22174
  }
@@ -22090,13 +22176,19 @@ class InputOTP {
22090
22176
  // The input was removed, so drop its ref and any after it.
22091
22177
  inputRefs.splice(index);
22092
22178
  }
22093
- }, 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: {
22179
+ }, 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: {
22094
22180
  'input-otp-description': true,
22095
22181
  'input-otp-description-hidden': !hasDescription,
22096
- } }, hAsync("slot", { key: '7deb3373c0d4e5deac22fa51577d271b9bb3a6d2' }))));
22182
+ } }, hAsync("slot", { key: '5d6823f48a9786799c9d485ce0d6b9de2ae7f537' })), this.renderBottomContent()));
22097
22183
  }
22098
22184
  get el() { return getElement(this); }
22099
22185
  static get watchers() { return {
22186
+ "aria-describedby": [{
22187
+ "onHostAriaChange": 0
22188
+ }],
22189
+ "aria-invalid": [{
22190
+ "onHostAriaChange": 0
22191
+ }],
22100
22192
  "value": [{
22101
22193
  "valueChanged": 0
22102
22194
  }],
@@ -22120,7 +22212,10 @@ class InputOTP {
22120
22212
  "autocapitalize": [1],
22121
22213
  "color": [513],
22122
22214
  "disabled": [516],
22215
+ "errorText": [1, "error-text"],
22123
22216
  "fill": [1],
22217
+ "helperText": [1, "helper-text"],
22218
+ "inputLabelFormatter": [16],
22124
22219
  "inputmode": [1],
22125
22220
  "length": [2],
22126
22221
  "pattern": [1],
@@ -22133,6 +22228,7 @@ class InputOTP {
22133
22228
  "inputValues": [32],
22134
22229
  "hasFocus": [32],
22135
22230
  "previousInputValues": [32],
22231
+ "isInvalid": [32],
22136
22232
  "setFocus": [64]
22137
22233
  },
22138
22234
  "$listeners$": undefined,
@@ -22141,6 +22237,12 @@ class InputOTP {
22141
22237
  }; }
22142
22238
  }
22143
22239
  let inputIds = 0;
22240
+ /**
22241
+ * The attribute controller removes these from the host, so an app could never
22242
+ * clear them. They stay on the host instead, which only works for global
22243
+ * attributes since the host has no role.
22244
+ */
22245
+ const HOST_ARIA_ATTRIBUTES = ['aria-describedby', 'aria-invalid'];
22144
22246
 
22145
22247
  const iosInputPasswordToggleCss = () => ``;
22146
22248
 
@@ -22460,7 +22562,7 @@ class Item {
22460
22562
  return controls[0];
22461
22563
  }
22462
22564
  render() {
22463
- const { detail, detailIcon, download, labelColorStyles, lines, disabled, href, rel, target, routerAnimation, routerDirection, multipleInputs, el, } = this;
22565
+ const { detail, detailIcon, download, labelColorStyles, lines, disabled, href, rel, target, routerAnimation, routerDirection, multipleInputs, } = this;
22464
22566
  const inheritedAriaAttributes = this.ariaController?.attributes ?? {};
22465
22567
  const childStyles = {};
22466
22568
  const mode = getIonMode$1(this);
@@ -22537,7 +22639,7 @@ class Item {
22537
22639
  * multi-input item, and in a clickable item, which is a second tab stop.
22538
22640
  */
22539
22641
  const slottedIndicatorNeedsRoom = this.hasSlottedIndicatorControl && (multipleInputs || this.isClickable());
22540
- return (hAsync(Host, { key: 'dedd4fbc4f9e4db557c6f8bd91299778af9aba1c', "aria-disabled": ariaDisabled, class: {
22642
+ return (hAsync(Host, { key: '7fe924642310c19f057ae1bfa29c1acdf5cc7ed6', "aria-disabled": ariaDisabled, class: {
22541
22643
  ...childStyles,
22542
22644
  ...labelColorStyles,
22543
22645
  ...createColorClasses$1(this.color, {
@@ -22552,9 +22654,9 @@ class Item {
22552
22654
  'item-focus-indicator-room': slottedIndicatorNeedsRoom,
22553
22655
  'ion-activatable': canActivate,
22554
22656
  'ion-focusable': this.focusable,
22555
- 'item-rtl': isRTL$1(el),
22657
+ 'item-rtl': document.dir === 'rtl',
22556
22658
  }),
22557
- }, 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' }))));
22659
+ }, 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' }))));
22558
22660
  }
22559
22661
  get el() { return getElement(this); }
22560
22662
  static get watchers() { return {
@@ -22781,8 +22883,8 @@ class ItemOptions {
22781
22883
  }
22782
22884
  render() {
22783
22885
  const mode = getIonMode$1(this);
22784
- const isEnd = isEndSide(this.side, this.el);
22785
- return (hAsync(Host, { key: '47d4bf67ac04745ce2d4990844257320f27908dd', class: {
22886
+ const isEnd = isEndSide(this.side);
22887
+ return (hAsync(Host, { key: '6e60ff004d48bf7701711e518ec0b21264496ae8', class: {
22786
22888
  [mode]: true,
22787
22889
  // Used internally for styling
22788
22890
  [`item-options-${mode}`]: true,
@@ -22976,7 +23078,7 @@ class ItemSliding {
22976
23078
  side = optionsToOpen === this.leftOptions ? 'start' : 'end';
22977
23079
  }
22978
23080
  // In RTL we want to switch the sides
22979
- side = isEndSide(side, this.el) ? 'end' : 'start';
23081
+ side = isEndSide(side) ? 'end' : 'start';
22980
23082
  const isStartOpen = this.openAmount < 0;
22981
23083
  const isEndOpen = this.openAmount > 0;
22982
23084
  /**
@@ -23045,7 +23147,7 @@ class ItemSliding {
23045
23147
  // Reset left and right options in case they were removed
23046
23148
  this.leftOptions = this.rightOptions = undefined;
23047
23149
  for (const option of options) {
23048
- const side = isEndSide(option.side ?? option.getAttribute('side'), option) ? 'end' : 'start';
23150
+ const side = isEndSide(option.side ?? option.getAttribute('side')) ? 'end' : 'start';
23049
23151
  if (side === 'start') {
23050
23152
  this.leftOptions = option;
23051
23153
  sides |= 1 /* ItemSide.Start */;
@@ -23064,7 +23166,7 @@ class ItemSliding {
23064
23166
  * do not open left side so swipe to go
23065
23167
  * back will still work.
23066
23168
  */
23067
- const rtl = isRTL$1(this.el);
23169
+ const rtl = document.dir === 'rtl';
23068
23170
  const atEdge = rtl ? window.innerWidth - gesture.startX < 15 : gesture.startX < 15;
23069
23171
  if (atEdge) {
23070
23172
  return false;
@@ -23243,7 +23345,7 @@ class ItemSliding {
23243
23345
  }
23244
23346
  render() {
23245
23347
  const mode = getIonMode$1(this);
23246
- return (hAsync(Host, { key: '94e1e3ae3505bc821b4c806a1e99a0c707ffec64', class: {
23348
+ return (hAsync(Host, { key: '02174ca963753d3a51a4249068f3d436f8acb03d', class: {
23247
23349
  [mode]: true,
23248
23350
  'item-sliding-active-slide': this.state !== 2 /* SlidingState.Disabled */,
23249
23351
  'item-sliding-active-options-end': (this.state & 8 /* SlidingState.End */) !== 0,
@@ -23355,13 +23457,13 @@ class Label {
23355
23457
  render() {
23356
23458
  const position = this.position;
23357
23459
  const mode = getIonMode$1(this);
23358
- return (hAsync(Host, { key: '5415f57fc93a0b2b82b6d327a8e635876ca5cbf5', class: createColorClasses$1(this.color, {
23460
+ return (hAsync(Host, { key: '461604c1887f322dc13d7df3d5cdbb7ee1361117', class: createColorClasses$1(this.color, {
23359
23461
  [mode]: true,
23360
23462
  'in-item-color': hostContext('ion-item.ion-color', this.el),
23361
23463
  [`label-${position}`]: position !== undefined,
23362
23464
  [`label-no-animate`]: this.noAnimate,
23363
- 'label-rtl': isRTL$1(this.el),
23364
- }) }, hAsync("slot", { key: 'b6b65053228525c94a06c20abb0f03c659cdd7dc' })));
23465
+ 'label-rtl': document.dir === 'rtl',
23466
+ }) }, hAsync("slot", { key: 'a7005d0a217641278aa8e95144e8e4b9ae87a1c5' })));
23365
23467
  }
23366
23468
  get el() { return getElement(this); }
23367
23469
  static get watchers() { return {
@@ -31748,7 +31850,7 @@ const POPOVER_IOS_MIN_EDGE_MARGIN = 25;
31748
31850
  const iosEnterAnimation$1 = (baseEl, opts) => {
31749
31851
  const { event: ev, size, trigger, reference, side, align } = opts;
31750
31852
  const doc = baseEl.ownerDocument;
31751
- const rtl = isRTL$1(baseEl);
31853
+ const isRTL = doc.dir === 'rtl';
31752
31854
  const root = getElementRoot(baseEl);
31753
31855
  const contentEl = root.querySelector('.popover-content');
31754
31856
  const arrowEl = root.querySelector('.popover-arrow');
@@ -31774,10 +31876,10 @@ const iosEnterAnimation$1 = (baseEl, opts) => {
31774
31876
  const defaultPosition = {
31775
31877
  top: bodyHeight / 2 - contentHeight / 2,
31776
31878
  left: bodyWidth / 2 - contentWidth / 2,
31777
- originX: rtl ? 'right' : 'left',
31879
+ originX: isRTL ? 'right' : 'left',
31778
31880
  originY: 'top',
31779
31881
  };
31780
- const results = getPopoverPosition(rtl, contentWidth, contentHeight, arrowWidth, arrowHeight, reference, side, align, defaultPosition, trigger, ev, zoom);
31882
+ const results = getPopoverPosition(isRTL, contentWidth, contentHeight, arrowWidth, arrowHeight, reference, side, align, defaultPosition, trigger, ev, zoom);
31781
31883
  const padding = size === 'cover' ? 0 : POPOVER_IOS_BODY_PADDING;
31782
31884
  const rawSafeArea = getSafeAreaInsets(doc);
31783
31885
  const safeArea = size === 'cover'
@@ -31898,7 +32000,7 @@ const POPOVER_MD_BODY_PADDING = 12;
31898
32000
  const mdEnterAnimation$1 = (baseEl, opts) => {
31899
32001
  const { event: ev, size, trigger, reference, side, align } = opts;
31900
32002
  const doc = baseEl.ownerDocument;
31901
- const rtl = isRTL$1(baseEl);
32003
+ const isRTL = doc.dir === 'rtl';
31902
32004
  const root = getElementRoot(baseEl);
31903
32005
  const contentEl = root.querySelector('.popover-content');
31904
32006
  /**
@@ -31922,10 +32024,10 @@ const mdEnterAnimation$1 = (baseEl, opts) => {
31922
32024
  const defaultPosition = {
31923
32025
  top: bodyHeight / 2 - contentHeight / 2,
31924
32026
  left: bodyWidth / 2 - contentWidth / 2,
31925
- originX: rtl ? 'right' : 'left',
32027
+ originX: isRTL ? 'right' : 'left',
31926
32028
  originY: 'top',
31927
32029
  };
31928
- const results = getPopoverPosition(rtl, contentWidth, contentHeight, 0, 0, reference, side, align, defaultPosition, trigger, ev, zoom);
32030
+ const results = getPopoverPosition(isRTL, contentWidth, contentHeight, 0, 0, reference, side, align, defaultPosition, trigger, ev, zoom);
31929
32031
  const padding = size === 'cover' ? 0 : POPOVER_MD_BODY_PADDING;
31930
32032
  // MD mode now applies safe-area insets (previously passed 0, ignoring all safe areas).
31931
32033
  // This is needed for Android edge-to-edge (API 36+) where system bars overlap content.
@@ -32045,7 +32147,6 @@ class Popover {
32045
32147
  this.lockController = createLockController();
32046
32148
  this.inline = false;
32047
32149
  this.focusDescendantOnPresent = false;
32048
- this.dirSetOnPresent = false;
32049
32150
  this.presented = false;
32050
32151
  /** @internal */
32051
32152
  this.hasController = false;
@@ -32346,15 +32447,6 @@ class Popover {
32346
32447
  }
32347
32448
  const { el } = this;
32348
32449
  const { inline, delegate } = this.getDelegate(true);
32349
- /**
32350
- * When presented, ion-popover is hoisted from its place in the element
32351
- * hierarchy. Copy the current direction onto this element so that child
32352
- * elements can match.
32353
- */
32354
- if (!el.hasAttribute('dir')) {
32355
- el.setAttribute('dir', isRTL$1(el) ? 'rtl' : 'ltr');
32356
- this.dirSetOnPresent = true;
32357
- }
32358
32450
  /**
32359
32451
  * Emit ionMount so JS Frameworks have an opportunity
32360
32452
  * to add the child component to the DOM. The child
@@ -32475,10 +32567,6 @@ class Popover {
32475
32567
  */
32476
32568
  const { delegate } = this.getDelegate();
32477
32569
  await detachComponent(delegate, this.usersElement);
32478
- if (this.dirSetOnPresent) {
32479
- this.el.removeAttribute('dir');
32480
- this.dirSetOnPresent = false;
32481
- }
32482
32570
  }
32483
32571
  unlock();
32484
32572
  return shouldDismiss;
@@ -32506,7 +32594,7 @@ class Popover {
32506
32594
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
32507
32595
  const desktop = isPlatform('desktop');
32508
32596
  const enableArrow = arrow && !parentPopover;
32509
- return (hAsync(Host, { key: '083f06f04d2c2657e510b471fba81cc459e0e878', "aria-modal": "true", "no-router": true, tabindex: "-1", ...htmlAttributes, style: {
32597
+ return (hAsync(Host, { key: 'b5e9c788f58397203976d5f8302dfb89e916efe1', "aria-modal": "true", "no-router": true, tabindex: "-1", ...htmlAttributes, style: {
32510
32598
  zIndex: `${20000 + this.overlayIndex}`,
32511
32599
  }, class: {
32512
32600
  ...getClassMap(this.cssClass),
@@ -32517,7 +32605,7 @@ class Popover {
32517
32605
  [`popover-side-${side}`]: true,
32518
32606
  [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false,
32519
32607
  'popover-nested': !!parentPopover,
32520
- }, 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' })))));
32608
+ }, 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' })))));
32521
32609
  }
32522
32610
  get el() { return getElement(this); }
32523
32611
  static get watchers() { return {
@@ -32623,20 +32711,19 @@ class ProgressBar {
32623
32711
  this.buffer = 1;
32624
32712
  }
32625
32713
  render() {
32626
- const { color, type, reversed, value, buffer, el } = this;
32714
+ const { color, type, reversed, value, buffer } = this;
32627
32715
  const paused = config.getBoolean('_testing');
32628
32716
  const mode = getIonMode$1(this);
32629
32717
  // If the progress is displayed as a solid bar.
32630
32718
  const progressSolid = buffer === 1;
32631
- return (hAsync(Host, { key: '0a5c76361cf8df0c294e0fb2477892e23ecebe38', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
32719
+ return (hAsync(Host, { key: 'd53d39a3e2c0198164a9face62d3775f357b6914', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
32632
32720
  [mode]: true,
32633
32721
  [`progress-bar-${type}`]: true,
32634
32722
  'progress-paused': paused,
32635
- 'progress-bar-reversed': isRTL$1(el) ? !reversed : reversed,
32723
+ 'progress-bar-reversed': document.dir === 'rtl' ? !reversed : reversed,
32636
32724
  'progress-bar-solid': progressSolid,
32637
32725
  }) }, type === 'indeterminate' ? renderIndeterminate() : renderProgress(value, buffer)));
32638
32726
  }
32639
- get el() { return getElement(this); }
32640
32727
  static get style() { return {
32641
32728
  ios: progressBarIosCss(),
32642
32729
  md: progressBarMdCss()
@@ -35751,6 +35838,14 @@ class Route {
35751
35838
  *
35752
35839
  * Accepts paths similar to expressjs so that you can define parameters
35753
35840
  * in the url /foo/:bar where bar would be available in incoming props.
35841
+ *
35842
+ * A url ending in `*`, such as `*` or `/admin/*`, matches any remaining path,
35843
+ * including none, so `/admin/*` also matches `/admin`. It only wins over a
35844
+ * route that matches the whole path when it has more fixed segments, so
35845
+ * `/admin/*` wins over `/:section/:id` but not over `/admin/:id`. It always
35846
+ * wins over a route that matches by ignoring trailing segments, such as
35847
+ * `/admin` for `/admin/users`. The matched path is passed in the `pathMatch`
35848
+ * prop without a leading `/`. A `*` on a route with child routes is ignored.
35754
35849
  */
35755
35850
  this.url = '';
35756
35851
  }
@@ -35839,6 +35934,8 @@ class RouteRedirect {
35839
35934
  const ROUTER_INTENT_NONE = 'root';
35840
35935
  const ROUTER_INTENT_FORWARD = 'forward';
35841
35936
  const ROUTER_INTENT_BACK = 'back';
35937
+ /** Param that holds the path matched by a trailing `*` in an `ion-route` url. */
35938
+ const WILDCARD_PARAM = 'pathMatch';
35842
35939
 
35843
35940
  /** Join the non empty segments with "/". */
35844
35941
  const generatePath = (segments) => {
@@ -35872,12 +35969,13 @@ const writeSegments = (history, root, useHash, segments, direction, state, query
35872
35969
  *
35873
35970
  * Notes:
35874
35971
  * - parameter segments of the form :param are replaced with their value,
35875
- * - null is returned when a value is missing for any parameter segment.
35972
+ * - null is returned when a value is missing for any parameter segment,
35973
+ * - a trailing wildcard is replaced with the path it matched.
35876
35974
  */
35877
35975
  const chainToSegments = (chain) => {
35878
35976
  const segments = [];
35879
35977
  for (const route of chain) {
35880
- for (const segment of route.segments) {
35978
+ for (const segment of withoutWildcard(route.segments)) {
35881
35979
  if (segment[0] === ':') {
35882
35980
  const param = route.params && route.params[segment.slice(1)];
35883
35981
  if (!param) {
@@ -35889,9 +35987,22 @@ const chainToSegments = (chain) => {
35889
35987
  segments.push(segment);
35890
35988
  }
35891
35989
  }
35990
+ segments.push(...wildcardSegments(route));
35892
35991
  }
35893
35992
  return segments;
35894
35993
  };
35994
+ /** Only a `*` in the last segment of a route url is a wildcard. Elsewhere it's matched literally. */
35995
+ const endsWithWildcard = (segments) => {
35996
+ return segments[segments.length - 1] === '*';
35997
+ };
35998
+ /** Returns the path segments matched by the trailing wildcard of the route. */
35999
+ const wildcardSegments = (route) => {
36000
+ const pathMatch = endsWithWildcard(route.segments) ? route.params?.[WILDCARD_PARAM] : undefined;
36001
+ return pathMatch ? pathMatch.split('/').filter((s) => s.length > 0) : [];
36002
+ };
36003
+ const withoutWildcard = (segments) => {
36004
+ return endsWithWildcard(segments) ? segments.slice(0, -1) : segments;
36005
+ };
35895
36006
  /**
35896
36007
  * Removes the prefix segments from the path segments.
35897
36008
  *
@@ -36224,6 +36335,10 @@ const matchesIDs = (ids, chain) => {
36224
36335
  if (routeId.id.toLowerCase() !== routeChain.id) {
36225
36336
  break;
36226
36337
  }
36338
+ // Weight a wildcard route when the outlet reports its `pathMatch`
36339
+ if (routeId.params?.[WILDCARD_PARAM] !== undefined && endsWithWildcard(routeChain.segments)) {
36340
+ score++;
36341
+ }
36227
36342
  if (routeId.params) {
36228
36343
  const routeIdParams = Object.keys(routeId.params);
36229
36344
  // Only compare routes with the chain that have the same number of parameters.
@@ -36279,21 +36394,28 @@ const matchesSegments = (segments, chain) => {
36279
36394
  matchesDefault = true;
36280
36395
  }
36281
36396
  else {
36282
- for (const segment of chainSegments) {
36397
+ const params = {};
36398
+ for (const segment of withoutWildcard(chainSegments)) {
36283
36399
  const data = inputSegments.next();
36284
36400
  // data param
36285
36401
  if (segment[0] === ':') {
36286
36402
  if (data === '') {
36287
36403
  return null;
36288
36404
  }
36289
- allparams = allparams || [];
36290
- const params = allparams[i] || (allparams[i] = {});
36291
36405
  params[segment.slice(1)] = data;
36292
36406
  }
36293
36407
  else if (data !== segment) {
36294
36408
  return null;
36295
36409
  }
36296
36410
  }
36411
+ // A trailing `*` on a parent route has no effect. Its children match the rest of the path.
36412
+ if (i === chain.length - 1 && endsWithWildcard(chainSegments)) {
36413
+ params[WILDCARD_PARAM] = inputSegments.rest().join('/');
36414
+ }
36415
+ if (Object.keys(params).length > 0) {
36416
+ allparams = allparams || [];
36417
+ allparams[i] = params;
36418
+ }
36297
36419
  matchesDefault = false;
36298
36420
  }
36299
36421
  }
@@ -36325,25 +36447,38 @@ const mergeParams = (a, b) => {
36325
36447
  * Returns the best match or null when no match is found.
36326
36448
  * When a chain is returned the parameters are updated from the RouteIDs.
36327
36449
  * That is they contain both the componentProps of the <ion-route> and the parameter segment.
36450
+ *
36451
+ * When a wildcard route ties with other routes, a route without a wildcard that can build a url wins,
36452
+ * then the wildcard route. Otherwise the first route declared wins a tie.
36328
36453
  */
36329
36454
  const findChainForIDs = (ids, chains) => {
36330
- let match = null;
36331
36455
  let maxMatches = 0;
36456
+ let tied = [];
36332
36457
  for (const chain of chains) {
36333
36458
  const score = matchesIDs(ids, chain);
36334
36459
  if (score > maxMatches) {
36335
- match = chain;
36336
36460
  maxMatches = score;
36461
+ tied = [chain];
36462
+ }
36463
+ else if (score > 0 && score === maxMatches) {
36464
+ tied.push(chain);
36337
36465
  }
36338
36466
  }
36339
- if (match) {
36340
- return match.map((route, i) => ({
36341
- id: route.id,
36342
- segments: route.segments,
36343
- params: mergeParams(route.params, ids[i]?.params),
36344
- }));
36467
+ const matches = tied.map((chain) => chain.map((route, i) => ({
36468
+ id: route.id,
36469
+ segments: route.segments,
36470
+ params: mergeParams(route.params, ids[i]?.params),
36471
+ })));
36472
+ if (!matches.some(chainEndsWithWildcard)) {
36473
+ return matches.length > 0 ? matches[0] : null;
36345
36474
  }
36346
- return null;
36475
+ return matches.reduce((best, chain) => (tieRank(chain) > tieRank(best) ? chain : best));
36476
+ };
36477
+ const tieRank = (chain) => {
36478
+ if (chainEndsWithWildcard(chain)) {
36479
+ return 1;
36480
+ }
36481
+ return chainToSegments(chain) !== null ? 2 : 0;
36347
36482
  };
36348
36483
  /**
36349
36484
  * Finds the best match for the segments in the chains.
@@ -36351,10 +36486,17 @@ const findChainForIDs = (ids, chains) => {
36351
36486
  * Returns the best match or null when no match is found.
36352
36487
  * When a chain is returned the parameters are updated from the segments.
36353
36488
  * That is they contain both the componentProps of the <ion-route> and the parameter segments.
36489
+ *
36490
+ * When wildcard routes match, the one with the most fixed segments wins if it has more fixed segments than every
36491
+ * route that matched the whole path. Routes that only matched by ignoring trailing segments don't count.
36354
36492
  */
36355
36493
  const findChainForSegments = (segments, chains) => {
36356
36494
  let match = null;
36357
36495
  let bestScore = 0;
36496
+ let fullMatch = null;
36497
+ let bestFullScore = 0;
36498
+ let maxFullFixed = -1;
36499
+ let wildcard = null;
36358
36500
  for (const chain of chains) {
36359
36501
  const matchedChain = matchesSegments(segments, chain);
36360
36502
  if (matchedChain !== null) {
@@ -36363,9 +36505,51 @@ const findChainForSegments = (segments, chains) => {
36363
36505
  bestScore = score;
36364
36506
  match = matchedChain;
36365
36507
  }
36508
+ if (chainEndsWithWildcard(matchedChain)) {
36509
+ if (wildcard === null || winsWildcard(matchedChain, wildcard)) {
36510
+ wildcard = matchedChain;
36511
+ }
36512
+ }
36513
+ else if (!isPartialMatch(segments, matchedChain)) {
36514
+ if (score > bestFullScore) {
36515
+ bestFullScore = score;
36516
+ fullMatch = matchedChain;
36517
+ }
36518
+ maxFullFixed = Math.max(maxFullFixed, countFixedSegments(matchedChain));
36519
+ }
36366
36520
  }
36367
36521
  }
36368
- return match;
36522
+ // Without a wildcard to match the rest of the path, routes can still ignore trailing segments.
36523
+ if (wildcard === null) {
36524
+ return match;
36525
+ }
36526
+ // Compare fixed segments rather than priority, since nesting under default routes raises the priority
36527
+ return countFixedSegments(wildcard) > maxFullFixed ? wildcard : fullMatch;
36528
+ };
36529
+ /** Returns whether the chain matched the path segments only by ignoring some trailing segments. */
36530
+ const isPartialMatch = (segments, chain) => {
36531
+ const matched = chainToSegments(chain);
36532
+ return matched !== null && matched.length < segments.filter((s) => s !== '').length;
36533
+ };
36534
+ const chainEndsWithWildcard = (chain) => {
36535
+ return endsWithWildcard(chain[chain.length - 1].segments);
36536
+ };
36537
+ /** Returns whether the wildcard chain beats `best` by fixed segments, then by priority. */
36538
+ const winsWildcard = (chain, best) => {
36539
+ const chainFixed = countFixedSegments(chain);
36540
+ const bestFixed = countFixedSegments(best);
36541
+ return chainFixed > bestFixed || (chainFixed === bestFixed && computePriority(chain) > computePriority(best));
36542
+ };
36543
+ const countFixedSegments = (chain) => {
36544
+ let count = 0;
36545
+ for (const route of chain) {
36546
+ for (const segment of withoutWildcard(route.segments)) {
36547
+ if (segment !== '' && segment[0] !== ':') {
36548
+ count++;
36549
+ }
36550
+ }
36551
+ }
36552
+ return count;
36369
36553
  };
36370
36554
  /**
36371
36555
  * Computes the priority of a chain.
@@ -36377,12 +36561,14 @@ const findChainForSegments = (segments, chains) => {
36377
36561
  * - /path/to/page
36378
36562
  *
36379
36563
  * The second one will be given a higher priority because "page" is a fixed segment (vs ":where", a parameter segment).
36564
+ *
36565
+ * A trailing wildcard is not counted.
36380
36566
  */
36381
36567
  const computePriority = (chain) => {
36382
36568
  let score = 1;
36383
36569
  let level = 1;
36384
36570
  for (const route of chain) {
36385
- for (const segment of route.segments) {
36571
+ for (const segment of withoutWildcard(route.segments)) {
36386
36572
  if (segment[0] === ':') {
36387
36573
  score += Math.pow(1, level);
36388
36574
  }
@@ -36404,6 +36590,12 @@ class RouterSegments {
36404
36590
  }
36405
36591
  return '';
36406
36592
  }
36593
+ /** Consumes and returns the remaining non empty segments. */
36594
+ rest() {
36595
+ const rest = this.segments.filter((s) => s !== '');
36596
+ this.segments = [];
36597
+ return rest;
36598
+ }
36407
36599
  }
36408
36600
 
36409
36601
  const readProp = (el, prop) => {
@@ -42818,11 +43010,11 @@ class ToolbarTitle {
42818
43010
  render() {
42819
43011
  const mode = getIonMode$1(this);
42820
43012
  const size = this.getSize();
42821
- return (hAsync(Host, { key: '8d17feb9f9dcb9eb8e3b8ae6e831bdedb890771c', class: createColorClasses$1(this.color, {
43013
+ return (hAsync(Host, { key: 'c5f0b913ff0a22d9bf02da48a313a613c2ac8fe7', class: createColorClasses$1(this.color, {
42822
43014
  [mode]: true,
42823
43015
  [`title-${size}`]: true,
42824
- 'title-rtl': isRTL$1(this.el),
42825
- }) }, hAsync("div", { key: '0346aae3fca1e3ae443b1b511c44ab1f803cb103', class: "toolbar-title" }, hAsync("slot", { key: 'e1945845df471d5eb8c3cdeb568c478abf5ad70e' }))));
43016
+ 'title-rtl': document.dir === 'rtl',
43017
+ }) }, hAsync("div", { key: '5253b9e39fb764bfe1e57370719139f8a83e9904', class: "toolbar-title" }, hAsync("slot", { key: 'e38b1eccb0175c36f8cab211aee7ce4d61fc9035' }))));
42826
43018
  }
42827
43019
  get el() { return getElement(this); }
42828
43020
  static get watchers() { return {
@@ -43310,9 +43502,9 @@ const iosTransitionAnimation = (navEl, opts) => {
43310
43502
  const TRANSFORM = 'transform';
43311
43503
  const CENTER = '0%';
43312
43504
  const OFF_OPACITY = 0.8;
43313
- const rtl = isRTL$1(navEl);
43314
- const OFF_RIGHT = rtl ? '-99.5%' : '99.5%';
43315
- const OFF_LEFT = rtl ? '33%' : '-33%';
43505
+ const isRTL = navEl.ownerDocument.dir === 'rtl';
43506
+ const OFF_RIGHT = isRTL ? '-99.5%' : '99.5%';
43507
+ const OFF_LEFT = isRTL ? '33%' : '-33%';
43316
43508
  const enteringEl = opts.enteringEl;
43317
43509
  const leavingEl = opts.leavingEl;
43318
43510
  const backDirection = opts.direction === 'back';
@@ -43377,7 +43569,7 @@ const iosTransitionAnimation = (navEl, opts) => {
43377
43569
  }
43378
43570
  }
43379
43571
  const enteringContentHasLargeTitle = enteringEl.querySelector('ion-header.header-collapse-condense');
43380
- const { forward, backward } = createLargeTitleTransition(rootAnimation, rtl, backDirection, enteringEl, leavingEl);
43572
+ const { forward, backward } = createLargeTitleTransition(rootAnimation, isRTL, backDirection, enteringEl, leavingEl);
43381
43573
  enteringToolBarEls.forEach((enteringToolBarEl) => {
43382
43574
  const enteringToolBar = createAnimation();
43383
43575
  enteringToolBar.addElement(enteringToolBarEl);
@@ -43441,7 +43633,7 @@ const iosTransitionAnimation = (navEl, opts) => {
43441
43633
  enteringToolBarBg.fromTo(OPACITY, 0.01, 'var(--opacity)');
43442
43634
  }
43443
43635
  else {
43444
- enteringToolBarBg.fromTo('transform', rtl ? 'translateX(-100%)' : 'translateX(100%)', 'translateX(0px)');
43636
+ enteringToolBarBg.fromTo('transform', isRTL ? 'translateX(-100%)' : 'translateX(100%)', 'translateX(0px)');
43445
43637
  }
43446
43638
  // forward direction, entering page has a back button
43447
43639
  if (!forward) {
@@ -43451,7 +43643,7 @@ const iosTransitionAnimation = (navEl, opts) => {
43451
43643
  const enteringBackBtnText = createAnimation();
43452
43644
  enteringBackBtnText
43453
43645
  .addElement(shadow(backButtonEl).querySelector('.button-text')) // REVIEW
43454
- .fromTo(`transform`, rtl ? 'translateX(-100px)' : 'translateX(100px)', 'translateX(0px)');
43646
+ .fromTo(`transform`, isRTL ? 'translateX(-100px)' : 'translateX(100px)', 'translateX(0px)');
43455
43647
  enteringToolBar.addAnimation(enteringBackBtnText);
43456
43648
  }
43457
43649
  }
@@ -43474,7 +43666,7 @@ const iosTransitionAnimation = (navEl, opts) => {
43474
43666
  // leaving content, back direction
43475
43667
  leavingContent
43476
43668
  .beforeClearStyles([OPACITY])
43477
- .fromTo('transform', `translateX(${CENTER})`, rtl ? 'translateX(-100%)' : 'translateX(100%)');
43669
+ .fromTo('transform', `translateX(${CENTER})`, isRTL ? 'translateX(-100%)' : 'translateX(100%)');
43478
43670
  const leavingPage = getIonPageElement(leavingEl);
43479
43671
  rootAnimation.afterAddWrite(() => {
43480
43672
  if (rootAnimation.getDirection() === 'normal') {
@@ -43554,10 +43746,10 @@ const iosTransitionAnimation = (navEl, opts) => {
43554
43746
  if (!inactiveHeader) {
43555
43747
  // leaving toolbar, back direction
43556
43748
  leavingTitle
43557
- .fromTo('transform', `translateX(${CENTER})`, rtl ? 'translateX(-100%)' : 'translateX(100%)')
43749
+ .fromTo('transform', `translateX(${CENTER})`, isRTL ? 'translateX(-100%)' : 'translateX(100%)')
43558
43750
  .fromTo(OPACITY, 0.99, 0);
43559
43751
  }
43560
- leavingToolBarItems.fromTo('transform', `translateX(${CENTER})`, rtl ? 'translateX(-100%)' : 'translateX(100%)');
43752
+ leavingToolBarItems.fromTo('transform', `translateX(${CENTER})`, isRTL ? 'translateX(-100%)' : 'translateX(100%)');
43561
43753
  leavingToolBarBg.beforeClearStyles([OPACITY, 'transform']);
43562
43754
  // leaving toolbar, back direction, and there's no entering toolbar
43563
43755
  // should just slide out, no fading out
@@ -43566,13 +43758,13 @@ const iosTransitionAnimation = (navEl, opts) => {
43566
43758
  leavingToolBarBg.fromTo(OPACITY, 'var(--opacity)', 0);
43567
43759
  }
43568
43760
  else {
43569
- leavingToolBarBg.fromTo('transform', 'translateX(0px)', rtl ? 'translateX(-100%)' : 'translateX(100%)');
43761
+ leavingToolBarBg.fromTo('transform', 'translateX(0px)', isRTL ? 'translateX(-100%)' : 'translateX(100%)');
43570
43762
  }
43571
43763
  if (backButtonEl && !backward) {
43572
43764
  const leavingBackBtnText = createAnimation();
43573
43765
  leavingBackBtnText
43574
43766
  .addElement(shadow(backButtonEl).querySelector('.button-text')) // REVIEW
43575
- .fromTo('transform', `translateX(${CENTER})`, `translateX(${(rtl ? -124 : 124) + 'px'})`);
43767
+ .fromTo('transform', `translateX(${CENTER})`, `translateX(${(isRTL ? -124 : 124) + 'px'})`);
43576
43768
  leavingToolBar.addAnimation(leavingBackBtnText);
43577
43769
  }
43578
43770
  }