@ionic/core 9.0.10 → 9.0.11-dev.11793666452.109ac2a5

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 (1103) hide show
  1. package/components/index.js +1 -1
  2. package/components/ion-accordion-group.js +1 -1
  3. package/components/ion-accordion.js +1 -1
  4. package/components/ion-action-sheet.js +1 -1
  5. package/components/ion-alert.js +1 -1
  6. package/components/ion-app.js +1 -1
  7. package/components/ion-avatar.js +1 -1
  8. package/components/ion-back-button.js +1 -1
  9. package/components/ion-backdrop.js +1 -1
  10. package/components/ion-badge.js +1 -1
  11. package/components/ion-breadcrumb.js +1 -1
  12. package/components/ion-breadcrumbs.js +1 -1
  13. package/components/ion-button.js +1 -1
  14. package/components/ion-buttons.js +1 -1
  15. package/components/ion-card-content.js +1 -1
  16. package/components/ion-card-header.js +1 -1
  17. package/components/ion-card-subtitle.js +1 -1
  18. package/components/ion-card-title.js +1 -1
  19. package/components/ion-card.js +1 -1
  20. package/components/ion-checkbox.js +1 -1
  21. package/components/ion-chip.js +1 -1
  22. package/components/ion-col.js +1 -1
  23. package/components/ion-content.js +1 -1
  24. package/components/ion-datetime-button.js +1 -1
  25. package/components/ion-datetime.js +1 -1
  26. package/components/ion-divider.d.ts +11 -0
  27. package/components/ion-divider.js +4 -0
  28. package/components/ion-fab-button.js +1 -1
  29. package/components/ion-fab-list.js +1 -1
  30. package/components/ion-fab.js +1 -1
  31. package/components/ion-footer.js +1 -1
  32. package/components/ion-gallery-item.d.ts +11 -0
  33. package/components/ion-gallery-item.js +4 -0
  34. package/components/ion-gallery.d.ts +11 -0
  35. package/components/ion-gallery.js +4 -0
  36. package/components/ion-grid.js +1 -1
  37. package/components/ion-header.js +1 -1
  38. package/components/ion-icon.js +1 -1
  39. package/components/ion-img.js +1 -1
  40. package/components/ion-infinite-scroll-content.js +1 -1
  41. package/components/ion-infinite-scroll.js +1 -1
  42. package/components/ion-input-otp.js +1 -1
  43. package/components/ion-input-password-toggle.js +1 -1
  44. package/components/ion-input.js +1 -1
  45. package/components/ion-item-divider.js +1 -1
  46. package/components/ion-item-group.js +1 -1
  47. package/components/ion-item-option.js +1 -1
  48. package/components/ion-item-options.js +1 -1
  49. package/components/ion-item-sliding.js +1 -1
  50. package/components/ion-item.js +1 -1
  51. package/components/ion-label.js +1 -1
  52. package/components/ion-list-header.js +1 -1
  53. package/components/ion-list.js +1 -1
  54. package/components/ion-loading.js +1 -1
  55. package/components/ion-menu-button.js +1 -1
  56. package/components/ion-menu-toggle.js +1 -1
  57. package/components/ion-menu.js +1 -1
  58. package/components/ion-modal.js +1 -1
  59. package/components/ion-nav-link.js +1 -1
  60. package/components/ion-nav.js +1 -1
  61. package/components/ion-note.js +1 -1
  62. package/components/ion-picker-column-option.js +1 -1
  63. package/components/ion-picker-column.js +1 -1
  64. package/components/ion-picker.js +1 -1
  65. package/components/ion-popover.js +1 -1
  66. package/components/ion-progress-bar.js +1 -1
  67. package/components/ion-radio-group.js +1 -1
  68. package/components/ion-radio.js +1 -1
  69. package/components/ion-range.js +1 -1
  70. package/components/ion-refresher-content.js +1 -1
  71. package/components/ion-refresher.js +1 -1
  72. package/components/ion-reorder-group.js +1 -1
  73. package/components/ion-reorder.js +1 -1
  74. package/components/ion-ripple-effect.js +1 -1
  75. package/components/ion-route-redirect.js +1 -1
  76. package/components/ion-route.js +1 -1
  77. package/components/ion-router-link.js +1 -1
  78. package/components/ion-router-outlet.js +1 -1
  79. package/components/ion-router.js +1 -1
  80. package/components/ion-row.js +1 -1
  81. package/components/ion-searchbar.js +1 -1
  82. package/components/ion-segment-button.js +1 -1
  83. package/components/ion-segment-content.js +1 -1
  84. package/components/ion-segment-view.js +1 -1
  85. package/components/ion-segment.js +1 -1
  86. package/components/ion-select-modal.js +1 -1
  87. package/components/ion-select-option.js +1 -1
  88. package/components/ion-select-popover.js +1 -1
  89. package/components/ion-select.js +1 -1
  90. package/components/ion-skeleton-text.js +1 -1
  91. package/components/ion-spinner.js +1 -1
  92. package/components/ion-split-pane.js +1 -1
  93. package/components/ion-tab-bar.js +1 -1
  94. package/components/ion-tab-button.js +1 -1
  95. package/components/ion-tab.js +1 -1
  96. package/components/ion-tabs.js +1 -1
  97. package/components/ion-text.js +1 -1
  98. package/components/ion-textarea.js +1 -1
  99. package/components/ion-thumbnail.js +1 -1
  100. package/components/ion-title.js +1 -1
  101. package/components/ion-toast.js +1 -1
  102. package/components/ion-toggle.js +1 -1
  103. package/components/ion-toolbar.js +1 -1
  104. package/components/p-0rXxxCTt.js +4 -0
  105. package/components/p-1HReh-CB.js +4 -0
  106. package/components/p-3Qs1sQxU.js +4 -0
  107. package/components/p-3SVb97od.js +4 -0
  108. package/components/p-7-zF1amS.js +4 -0
  109. package/components/p-AgF3xGwz.js +4 -0
  110. package/{dist/ionic/p-BO10QT9r.js → components/p-B7ExaLVL.js} +1 -1
  111. package/components/{p-ChkSQqfP.js → p-B8TMb1l1.js} +1 -1
  112. package/components/p-BCYVFy50.js +4 -0
  113. package/components/p-BHiggB_l.js +4 -0
  114. package/components/p-BNBa8_Ls.js +4 -0
  115. package/components/p-BNV7BMZo.js +4 -0
  116. package/components/p-BUF_V-Kg.js +4 -0
  117. package/components/p-BYk20Mf5.js +4 -0
  118. package/components/p-B_o50gvn.js +4 -0
  119. package/components/p-BfDzKnZ-.js +4 -0
  120. package/{dist/ionic/p-BWKtcudz.js → components/p-BmfO2-NE.js} +1 -1
  121. package/components/{p-BWbz71uB.js → p-BmnPbSf3.js} +1 -1
  122. package/components/p-ByE0slik.js +4 -0
  123. package/components/p-C0H1LYQ5.js +4 -0
  124. package/components/p-C7BPrXxF.js +4 -0
  125. package/components/p-C93i7QCU.js +4 -0
  126. package/components/p-C9qQ2zBV.js +4 -0
  127. package/components/p-CAekGbOf.js +4 -0
  128. package/components/p-CE7N7-7s.js +4 -0
  129. package/components/p-CL3vSQL7.js +4 -0
  130. package/components/p-CODBQrPj.js +4 -0
  131. package/components/{p-Dbi3KqKm.js → p-CSSj6cqb.js} +1 -1
  132. package/components/{p-ChsJlFCQ.js → p-CXzJ234J.js} +1 -1
  133. package/components/p-CehdCO1m.js +4 -0
  134. package/components/{p-CwEis84J.js → p-CiEBXUnh.js} +1 -1
  135. package/components/p-CvxND1-3.js +4 -0
  136. package/components/p-CyvtM0H1.js +4 -0
  137. package/components/p-CzDkZh7h.js +4 -0
  138. package/components/p-DEh2reav.js +4 -0
  139. package/components/p-DFBWAYvo.js +4 -0
  140. package/components/p-DFjX2uxL.js +4 -0
  141. package/components/p-DLXAGW46.js +4 -0
  142. package/components/p-DQwGbYN_.js +4 -0
  143. package/components/p-DRpeTf7R.js +4 -0
  144. package/components/p-DbKRl9BQ.js +4 -0
  145. package/components/{p-07wRJfkt.js → p-Dce65ayP.js} +1 -1
  146. package/components/p-DdOVnjsY.js +4 -0
  147. package/components/p-DgNvIX46.js +4 -0
  148. package/components/p-DktrWeJE.js +4 -0
  149. package/components/p-DmdTkb5k.js +4 -0
  150. package/components/p-DmhWSY74.js +4 -0
  151. package/components/p-DmyvpOqm.js +4 -0
  152. package/components/p-ET0FZop5.js +4 -0
  153. package/components/p-LoXpKVmq.js +4 -0
  154. package/components/p-NcQUGze-.js +4 -0
  155. package/components/{p-CqvARtmt.js → p-YAWKbhjV.js} +1 -1
  156. package/components/{p-DHo45oj7.js → p-cm7z1a2E.js} +1 -1
  157. package/components/p-fU4OdAZ9.js +4 -0
  158. package/components/{p-CCFj0kgH.js → p-i08Rz__6.js} +1 -1
  159. package/components/p-iNIvlAGo.js +4 -0
  160. package/components/p-mG85e2ek.js +4 -0
  161. package/{dist/ionic/p-CJmyfI8x.js → components/p-o89R3aqe.js} +1 -1
  162. package/components/p-qbig9BW8.js +4 -0
  163. package/css/core.css +1 -1
  164. package/css/core.css.map +1 -1
  165. package/css/display.css +1 -1
  166. package/css/display.css.map +1 -1
  167. package/css/flex-utils.css +1 -1
  168. package/css/flex-utils.css.map +1 -1
  169. package/css/float-elements.css.map +1 -1
  170. package/css/global.bundle.css.map +1 -1
  171. package/css/ionic/bundle.ionic.css +1 -0
  172. package/css/ionic/bundle.ionic.css.map +1 -0
  173. package/css/ionic/core.ionic.css +1 -0
  174. package/css/ionic/core.ionic.css.map +1 -0
  175. package/css/ionic/global.bundle.ionic.css +1 -0
  176. package/css/ionic/global.bundle.ionic.css.map +1 -0
  177. package/css/ionic/ionic-swiper.ionic.css +1 -0
  178. package/css/ionic/ionic-swiper.ionic.css.map +1 -0
  179. package/css/ionic/link.ionic.css +1 -0
  180. package/css/ionic/link.ionic.css.map +1 -0
  181. package/css/ionic/structure.ionic.css +1 -0
  182. package/css/ionic/structure.ionic.css.map +1 -0
  183. package/css/ionic/typography.ionic.css +1 -0
  184. package/css/ionic/typography.ionic.css.map +1 -0
  185. package/css/ionic/utils.bundle.ionic.css +1 -0
  186. package/css/ionic/utils.bundle.ionic.css.map +1 -0
  187. package/css/ionic-swiper.css +1 -1
  188. package/css/ionic-swiper.css.map +1 -1
  189. package/css/ionic.bundle.css +1 -1
  190. package/css/ionic.bundle.css.map +1 -1
  191. package/css/normalize.css.map +1 -1
  192. package/css/padding.css.map +1 -1
  193. package/css/palettes/dark.always.css.map +1 -1
  194. package/css/palettes/dark.class.css.map +1 -1
  195. package/css/palettes/dark.system.css.map +1 -1
  196. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  197. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  198. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  199. package/css/palettes/high-contrast.always.css.map +1 -1
  200. package/css/palettes/high-contrast.class.css.map +1 -1
  201. package/css/palettes/high-contrast.system.css.map +1 -1
  202. package/css/structure.css.map +1 -1
  203. package/css/text-alignment.css.map +1 -1
  204. package/css/text-transformation.css.map +1 -1
  205. package/css/typography.css.map +1 -1
  206. package/css/utils.bundle.css +1 -1
  207. package/css/utils.bundle.css.map +1 -1
  208. package/dist/cjs/{animation-UiXhXV49.js → animation-zKIdNEmG.js} +3 -3
  209. package/dist/cjs/{app-globals-BoFCZq0K.js → app-globals-BDrxn8eR.js} +1 -1
  210. package/dist/cjs/{attribute-controller-0-lwbVEj.js → attribute-controller-D7O2snOZ.js} +3 -2
  211. package/dist/cjs/{button-active-DzN1aPt-.js → button-active-CY7cZvH5.js} +2 -2
  212. package/dist/cjs/{capacitor-BTjfXFlK.js → capacitor-DmA66EwP.js} +3 -3
  213. package/dist/cjs/clear-button-press-controller-C6PTS3jC.js +45 -0
  214. package/dist/cjs/focus-visible-DGPRKkcx.js +151 -0
  215. package/dist/cjs/{format-CVjpvAl1.js → format-C6r4Asi4.js} +1 -1
  216. package/dist/cjs/{framework-delegate-hNMKEiQC.js → framework-delegate-CAdDEnFS.js} +4 -2
  217. package/dist/cjs/{haptic-BD5qPgy8.js → haptic-Ch-X4gRx.js} +1 -1
  218. package/dist/cjs/{helpers-BrETKUUX.js → helpers-DHNLF4fD.js} +88 -10
  219. package/dist/cjs/{index-B4ONUQRp.js → index-B3s1jjBU.js} +1 -1
  220. package/dist/cjs/{index-BTc0Jnhx.js → index-C3pmpKlo.js} +17 -15
  221. package/dist/cjs/{index-bwclzjks.js → index-C6QFfpm5.js} +9 -7
  222. package/dist/cjs/{index-BiQyIvoc.js → index-CB1PuDlX.js} +55 -5
  223. package/dist/cjs/{index-wOmugbdg.js → index-CxDnX7hd.js} +2 -0
  224. package/dist/cjs/{index-DMz2Eyis.js → index-DhGCo_n8.js} +2 -2
  225. package/dist/cjs/index-DkNv4J_i.js +10 -0
  226. package/dist/cjs/{index-DNBYnlrc.js → index-lD5wTj_b.js} +4 -4
  227. package/dist/cjs/index.cjs.js +20 -18
  228. package/dist/cjs/{input-shims-CRmdShL9.js → input-shims-CjkWx7ae.js} +18 -16
  229. package/dist/cjs/{input.utils-Becpo0ax.js → input.utils-CD4DNiim.js} +1 -1
  230. package/dist/cjs/ion-accordion_2.cjs.entry.js +57 -29
  231. package/dist/cjs/ion-action-sheet.cjs.entry.js +42 -37
  232. package/dist/cjs/ion-alert.cjs.entry.js +50 -45
  233. package/dist/cjs/ion-app_8.cjs.entry.js +457 -195
  234. package/dist/cjs/ion-avatar_3.cjs.entry.js +124 -13
  235. package/dist/cjs/ion-back-button.cjs.entry.js +31 -23
  236. package/dist/cjs/ion-backdrop.cjs.entry.js +11 -7
  237. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +42 -18
  238. package/dist/cjs/ion-button_2.cjs.entry.js +61 -23
  239. package/dist/cjs/ion-card_5.cjs.entry.js +57 -34
  240. package/dist/cjs/ion-checkbox.cjs.entry.js +43 -17
  241. package/dist/cjs/ion-chip.cjs.entry.js +51 -9
  242. package/dist/cjs/ion-col_3.cjs.entry.js +56 -63
  243. package/dist/cjs/ion-datetime-button.cjs.entry.js +45 -13
  244. package/dist/cjs/ion-datetime.cjs.entry.js +413 -62
  245. package/dist/cjs/ion-divider.cjs.entry.js +52 -0
  246. package/dist/cjs/ion-fab_3.cjs.entry.js +40 -28
  247. package/dist/cjs/ion-gallery-item.cjs.entry.js +59 -0
  248. package/dist/cjs/ion-gallery.cjs.entry.js +608 -0
  249. package/dist/cjs/ion-img.cjs.entry.js +9 -4
  250. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +91 -16
  251. package/dist/cjs/ion-input-otp.cjs.entry.js +75 -10
  252. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +42 -14
  253. package/dist/cjs/ion-input.cjs.entry.js +147 -38
  254. package/dist/cjs/ion-item-option_3.cjs.entry.js +466 -52
  255. package/dist/cjs/ion-item_8.cjs.entry.js +118 -51
  256. package/dist/cjs/ion-loading.cjs.entry.js +33 -28
  257. package/dist/cjs/ion-menu_3.cjs.entry.js +54 -36
  258. package/dist/cjs/ion-modal.cjs.entry.js +304 -155
  259. package/dist/cjs/ion-nav_2.cjs.entry.js +14 -10
  260. package/dist/cjs/ion-picker-column-option.cjs.entry.js +13 -8
  261. package/dist/cjs/ion-picker-column.cjs.entry.js +17 -15
  262. package/dist/cjs/ion-picker.cjs.entry.js +11 -6
  263. package/dist/cjs/ion-popover.cjs.entry.js +33 -28
  264. package/dist/cjs/ion-progress-bar.cjs.entry.js +28 -9
  265. package/dist/cjs/ion-radio_2.cjs.entry.js +37 -18
  266. package/dist/cjs/ion-range.cjs.entry.js +21 -13
  267. package/dist/cjs/ion-refresher_2.cjs.entry.js +45 -20
  268. package/dist/cjs/ion-reorder_2.cjs.entry.js +31 -13
  269. package/dist/cjs/ion-ripple-effect.cjs.entry.js +16 -7
  270. package/dist/cjs/ion-route_4.cjs.entry.js +12 -10
  271. package/dist/cjs/ion-searchbar.cjs.entry.js +118 -32
  272. package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
  273. package/dist/cjs/ion-segment-view.cjs.entry.js +13 -3
  274. package/dist/cjs/ion-segment_2.cjs.entry.js +24 -16
  275. package/dist/cjs/ion-select-modal.cjs.entry.js +54 -25
  276. package/dist/cjs/ion-select_3.cjs.entry.js +203 -81
  277. package/dist/cjs/ion-spinner.cjs.entry.js +31 -8
  278. package/dist/cjs/ion-split-pane.cjs.entry.js +14 -9
  279. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +150 -27
  280. package/dist/cjs/ion-tab_2.cjs.entry.js +9 -7
  281. package/dist/cjs/ion-text.cjs.entry.js +8 -7
  282. package/dist/cjs/ion-textarea.cjs.entry.js +178 -41
  283. package/dist/cjs/ion-toast.cjs.entry.js +86 -57
  284. package/dist/cjs/ion-toggle.cjs.entry.js +67 -25
  285. package/dist/cjs/ionic-global-CZX42KL4.js +551 -0
  286. package/dist/cjs/ionic.cjs.js +5 -4
  287. package/dist/cjs/{ios.transition-CN092Fh6.js → ios.transition-BjOYqzH0.js} +7 -4
  288. package/dist/cjs/{item-multiple-inputs-C-hz7xrh.js → item-multiple-inputs-D0lzjl68.js} +1 -1
  289. package/dist/cjs/{keyboard-4OBzkjOG.js → keyboard-Cix5TVkD.js} +3 -5
  290. package/dist/cjs/{keyboard-BMpscicm.js → keyboard-cHxZlTyz.js} +1 -1
  291. package/dist/cjs/loader.cjs.js +5 -4
  292. package/dist/cjs/{md.transition-B6961Ny9.js → md.transition-C4i7l6ui.js} +6 -4
  293. package/dist/cjs/{overlay-control-label-D2sdL2O8.js → overlay-control-label-DnRLQR1t.js} +13 -11
  294. package/dist/cjs/{overlays-BbVQG3UT.js → overlays-DziOxcCT.js} +314 -176
  295. package/dist/cjs/scroll-hide-controller-BSVBCkbw.js +345 -0
  296. package/dist/cjs/{select-option-render-CzyhrkOu.js → select-option-render-X_iZ-xeh.js} +2 -2
  297. package/dist/cjs/{slot-mutation-controller-CRa_cKOh.js → slot-mutation-controller-BS-L1szN.js} +100 -13
  298. package/dist/cjs/{status-tap-hRIvObiJ.js → status-tap-D5yiKwdj.js} +5 -3
  299. package/dist/cjs/{swipe-back-C-aigThB.js → swipe-back-xM_5R5s-.js} +4 -2
  300. package/dist/cjs/{theme-Bw0rpaNN.js → theme-Cy4joHPt.js} +25 -1
  301. package/dist/cjs/validity-CoPMWggj.js +51 -0
  302. package/dist/collection/collection-manifest.json +8 -0
  303. package/dist/collection/components/accordion/accordion.ionic.css +199 -0
  304. package/dist/collection/components/accordion/accordion.ios.css +73 -58
  305. package/dist/collection/components/accordion/accordion.js +36 -27
  306. package/dist/collection/components/accordion/accordion.md.css +67 -59
  307. package/dist/collection/components/accordion-group/accordion-group.ionic.css +93 -0
  308. package/dist/collection/components/accordion-group/accordion-group.ios.css +16 -4
  309. package/dist/collection/components/accordion-group/accordion-group.js +44 -8
  310. package/dist/collection/components/accordion-group/accordion-group.md.css +22 -4
  311. package/dist/collection/components/action-sheet/action-sheet.ionic.css +490 -0
  312. package/dist/collection/components/action-sheet/action-sheet.ios.css +184 -54
  313. package/dist/collection/components/action-sheet/action-sheet.js +16 -13
  314. package/dist/collection/components/action-sheet/action-sheet.md.css +179 -55
  315. package/dist/collection/components/alert/alert.ionic.css +779 -0
  316. package/dist/collection/components/alert/alert.ios.css +247 -54
  317. package/dist/collection/components/alert/alert.js +22 -19
  318. package/dist/collection/components/alert/alert.md.css +243 -56
  319. package/dist/collection/components/app/app.js +15 -83
  320. package/dist/collection/components/avatar/avatar.ionic.css +379 -0
  321. package/dist/collection/components/avatar/avatar.ios.css +7 -33
  322. package/dist/collection/components/avatar/avatar.js +120 -4
  323. package/dist/collection/components/avatar/avatar.md.css +51 -0
  324. package/dist/collection/components/back-button/back-button.ios.css +60 -48
  325. package/dist/collection/components/back-button/back-button.js +26 -20
  326. package/dist/collection/components/back-button/back-button.md.css +60 -48
  327. package/dist/collection/components/backdrop/backdrop.ionic.css +109 -0
  328. package/dist/collection/components/backdrop/backdrop.ios.css +56 -19
  329. package/dist/collection/components/backdrop/backdrop.js +12 -6
  330. package/dist/collection/components/backdrop/backdrop.md.css +56 -19
  331. package/dist/collection/components/badge/badge.ionic.css +269 -0
  332. package/dist/collection/components/badge/badge.ios.css +137 -12
  333. package/dist/collection/components/badge/badge.js +143 -9
  334. package/dist/collection/components/badge/badge.md.css +122 -12
  335. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +20 -8
  336. package/dist/collection/components/breadcrumb/breadcrumb.js +31 -11
  337. package/dist/collection/components/breadcrumb/breadcrumb.md.css +20 -8
  338. package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +6 -0
  339. package/dist/collection/components/breadcrumbs/breadcrumbs.js +11 -9
  340. package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +6 -0
  341. package/dist/collection/components/button/button.ionic.css +640 -0
  342. package/dist/collection/components/button/button.ios.css +154 -46
  343. package/dist/collection/components/button/button.js +63 -27
  344. package/dist/collection/components/button/button.md.css +150 -50
  345. package/dist/collection/components/buttons/buttons.ionic.css +97 -0
  346. package/dist/collection/components/buttons/buttons.ios.css +59 -7
  347. package/dist/collection/components/buttons/buttons.js +15 -9
  348. package/dist/collection/components/buttons/buttons.md.css +55 -3
  349. package/dist/collection/components/card/card.ionic.css +144 -0
  350. package/dist/collection/components/card/card.ios.css +65 -14
  351. package/dist/collection/components/card/card.js +41 -10
  352. package/dist/collection/components/card/card.md.css +65 -14
  353. package/dist/collection/components/card-content/card-content.ionic.css +88 -0
  354. package/dist/collection/components/card-content/card-content.ios.css +20 -35
  355. package/dist/collection/components/card-content/card-content.js +12 -10
  356. package/dist/collection/components/card-content/card-content.md.css +20 -35
  357. package/dist/collection/components/card-header/card-header.ionic.css +85 -0
  358. package/dist/collection/components/card-header/card-header.ios.css +27 -15
  359. package/dist/collection/components/card-header/card-header.js +13 -10
  360. package/dist/collection/components/card-header/card-header.md.css +27 -15
  361. package/dist/collection/components/card-subtitle/card-subtitle.ionic.css +143 -0
  362. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +12 -0
  363. package/dist/collection/components/card-subtitle/card-subtitle.js +11 -8
  364. package/dist/collection/components/card-subtitle/card-subtitle.md.css +12 -0
  365. package/dist/collection/components/card-title/card-title.ios.css +73 -0
  366. package/dist/collection/components/card-title/card-title.js +11 -8
  367. package/dist/collection/components/card-title/card-title.md.css +73 -0
  368. package/dist/collection/components/checkbox/checkbox.ionic.css +535 -0
  369. package/dist/collection/components/checkbox/checkbox.ios.css +244 -115
  370. package/dist/collection/components/checkbox/checkbox.js +80 -15
  371. package/dist/collection/components/checkbox/checkbox.md.css +245 -116
  372. package/dist/collection/components/chip/chip.ionic.css +216 -0
  373. package/dist/collection/components/chip/chip.ios.css +67 -14
  374. package/dist/collection/components/chip/chip.js +108 -8
  375. package/dist/collection/components/chip/chip.md.css +67 -14
  376. package/dist/collection/components/col/col.css +192 -4
  377. package/dist/collection/components/col/col.js +210 -67
  378. package/dist/collection/components/content/content.css +47 -2
  379. package/dist/collection/components/content/content.js +16 -11
  380. package/dist/collection/components/datetime/datetime.ionic.css +862 -0
  381. package/dist/collection/components/datetime/datetime.ios.css +430 -116
  382. package/dist/collection/components/datetime/datetime.js +455 -49
  383. package/dist/collection/components/datetime/datetime.md.css +406 -103
  384. package/dist/collection/components/datetime/utils/data.js +5 -5
  385. package/dist/collection/components/datetime/utils/state.js +18 -1
  386. package/dist/collection/components/datetime-button/datetime-button.ios.css +6 -0
  387. package/dist/collection/components/datetime-button/datetime-button.js +43 -12
  388. package/dist/collection/components/datetime-button/datetime-button.md.css +6 -0
  389. package/dist/collection/components/divider/divider.ionic.css +148 -0
  390. package/dist/collection/components/divider/divider.ios.css +87 -0
  391. package/dist/collection/components/divider/divider.js +94 -0
  392. package/dist/collection/components/divider/divider.md.css +87 -0
  393. package/dist/collection/components/fab/fab.css +25 -1
  394. package/dist/collection/components/fab/fab.js +9 -5
  395. package/dist/collection/components/fab-button/fab-button.ios.css +18 -6
  396. package/dist/collection/components/fab-button/fab-button.js +31 -21
  397. package/dist/collection/components/fab-button/fab-button.md.css +20 -8
  398. package/dist/collection/components/fab-list/fab-list.css +12 -0
  399. package/dist/collection/components/fab-list/fab-list.js +9 -5
  400. package/dist/collection/components/footer/footer-interface.js +1 -0
  401. package/dist/collection/components/footer/footer.ios.css +33 -6
  402. package/dist/collection/components/footer/footer.js +117 -25
  403. package/dist/collection/components/footer/footer.md.css +40 -0
  404. package/dist/collection/components/gallery/gallery-constants.js +12 -0
  405. package/dist/collection/components/gallery/gallery-interface.js +1 -0
  406. package/dist/collection/components/gallery/gallery.css +15 -0
  407. package/dist/collection/components/gallery/gallery.js +678 -0
  408. package/dist/collection/components/gallery/test/utils.js +100 -0
  409. package/dist/collection/components/gallery-item/gallery-item.css +49 -0
  410. package/dist/collection/components/gallery-item/gallery-item.js +98 -0
  411. package/dist/collection/components/grid/grid.css +12 -0
  412. package/dist/collection/components/grid/grid.js +9 -5
  413. package/dist/collection/components/header/header-interface.js +1 -0
  414. package/dist/collection/components/header/header.ionic.css +286 -0
  415. package/dist/collection/components/header/header.ios.css +178 -133
  416. package/dist/collection/components/header/header.js +180 -39
  417. package/dist/collection/components/header/header.md.css +199 -9
  418. package/dist/collection/components/header/header.utils.js +5 -13
  419. package/dist/collection/components/img/img.js +7 -2
  420. package/dist/collection/components/infinite-scroll/infinite-scroll.js +99 -5
  421. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +12 -0
  422. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +16 -10
  423. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +12 -0
  424. package/dist/collection/components/input/input.ionic.css +961 -0
  425. package/dist/collection/components/input/input.ios.css +254 -160
  426. package/dist/collection/components/input/input.js +172 -44
  427. package/dist/collection/components/input/input.md.css +224 -232
  428. package/dist/collection/components/input-otp/input-otp.ionic.css +369 -0
  429. package/dist/collection/components/input-otp/input-otp.ios.css +105 -60
  430. package/dist/collection/components/input-otp/input-otp.js +74 -8
  431. package/dist/collection/components/input-otp/input-otp.md.css +105 -60
  432. package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +78 -0
  433. package/dist/collection/components/input-password-toggle/input-password-toggle.js +37 -10
  434. package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +61 -0
  435. package/dist/collection/components/item/item.ionic.css +495 -0
  436. package/dist/collection/components/item/item.ios.css +120 -80
  437. package/dist/collection/components/item/item.js +51 -21
  438. package/dist/collection/components/item/item.md.css +131 -79
  439. package/dist/collection/components/item-divider/item-divider.ios.css +18 -0
  440. package/dist/collection/components/item-divider/item-divider.js +11 -8
  441. package/dist/collection/components/item-divider/item-divider.md.css +18 -0
  442. package/dist/collection/components/item-group/item-group.ios.css +12 -0
  443. package/dist/collection/components/item-group/item-group.js +13 -7
  444. package/dist/collection/components/item-group/item-group.md.css +12 -0
  445. package/dist/collection/components/item-option/item-option.ionic.css +276 -0
  446. package/dist/collection/components/item-option/item-option.ios.css +136 -29
  447. package/dist/collection/components/item-option/item-option.js +73 -9
  448. package/dist/collection/components/item-option/item-option.md.css +136 -29
  449. package/dist/collection/components/item-options/item-options.ionic.css +221 -0
  450. package/dist/collection/components/item-options/item-options.ios.css +77 -34
  451. package/dist/collection/components/item-options/item-options.js +13 -7
  452. package/dist/collection/components/item-options/item-options.md.css +77 -34
  453. package/dist/collection/components/item-sliding/item-sliding.ionic.css +211 -0
  454. package/dist/collection/components/item-sliding/item-sliding.js +419 -35
  455. package/dist/collection/components/item-sliding/{item-sliding.css → item-sliding.native.css} +84 -9
  456. package/dist/collection/components/item-sliding/test/test.utils.js +13 -0
  457. package/dist/collection/components/label/label.ios.css +18 -0
  458. package/dist/collection/components/label/label.js +11 -8
  459. package/dist/collection/components/label/label.md.css +18 -0
  460. package/dist/collection/components/list/list.ionic.css +212 -0
  461. package/dist/collection/components/list/list.ios.css +54 -14
  462. package/dist/collection/components/list/list.js +48 -9
  463. package/dist/collection/components/list/list.md.css +56 -16
  464. package/dist/collection/components/list-header/list-header.ionic.css +189 -0
  465. package/dist/collection/components/list-header/list-header.ios.css +82 -38
  466. package/dist/collection/components/list-header/list-header.js +11 -8
  467. package/dist/collection/components/list-header/list-header.md.css +82 -38
  468. package/dist/collection/components/loading/loading.ios.css +13 -1
  469. package/dist/collection/components/loading/loading.js +15 -12
  470. package/dist/collection/components/loading/loading.md.css +13 -1
  471. package/dist/collection/components/menu/menu.ios.css +15 -3
  472. package/dist/collection/components/menu/menu.js +12 -7
  473. package/dist/collection/components/menu/menu.md.css +15 -3
  474. package/dist/collection/components/menu-button/menu-button.ionic.css +236 -0
  475. package/dist/collection/components/menu-button/menu-button.ios.css +48 -14
  476. package/dist/collection/components/menu-button/menu-button.js +23 -10
  477. package/dist/collection/components/menu-button/menu-button.md.css +49 -15
  478. package/dist/collection/components/menu-toggle/menu-toggle.js +8 -5
  479. package/dist/collection/components/modal/animations/ionic.enter.js +40 -0
  480. package/dist/collection/components/modal/animations/ionic.leave.js +28 -0
  481. package/dist/collection/components/modal/animations/sheet.js +8 -2
  482. package/dist/collection/components/modal/gestures/sheet.js +96 -8
  483. package/dist/collection/components/modal/modal.ionic.css +266 -0
  484. package/dist/collection/components/modal/modal.ios.css +178 -70
  485. package/dist/collection/components/modal/modal.js +52 -13
  486. package/dist/collection/components/modal/modal.md.css +178 -70
  487. package/dist/collection/components/nav/nav.css +7 -1
  488. package/dist/collection/components/nav/nav.js +10 -4
  489. package/dist/collection/components/nav-link/nav-link.js +5 -1
  490. package/dist/collection/components/note/note.ios.css +12 -0
  491. package/dist/collection/components/note/note.js +11 -8
  492. package/dist/collection/components/note/note.md.css +12 -0
  493. package/dist/collection/components/picker/picker.ios.css +15 -3
  494. package/dist/collection/components/picker/picker.js +8 -5
  495. package/dist/collection/components/picker/picker.md.css +15 -3
  496. package/dist/collection/components/picker-column/picker-column.css +9 -2
  497. package/dist/collection/components/picker-column/picker-column.js +8 -7
  498. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +6 -0
  499. package/dist/collection/components/picker-column-option/picker-column-option.js +13 -7
  500. package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -0
  501. package/dist/collection/components/popover/popover.ionic.css +289 -0
  502. package/dist/collection/components/popover/popover.ios.css +13 -1
  503. package/dist/collection/components/popover/popover.js +19 -16
  504. package/dist/collection/components/popover/popover.md.css +13 -1
  505. package/dist/collection/components/progress-bar/progress-bar.ionic.css +287 -0
  506. package/dist/collection/components/progress-bar/progress-bar.ios.css +48 -17
  507. package/dist/collection/components/progress-bar/progress-bar.js +43 -7
  508. package/dist/collection/components/progress-bar/progress-bar.md.css +48 -17
  509. package/dist/collection/components/radio/radio.ionic.css +421 -0
  510. package/dist/collection/components/radio/radio.ios.css +207 -102
  511. package/dist/collection/components/radio/radio.js +14 -9
  512. package/dist/collection/components/radio/radio.md.css +207 -102
  513. package/dist/collection/components/radio-group/radio-group.ionic.css +118 -0
  514. package/dist/collection/components/radio-group/radio-group.ios.css +43 -19
  515. package/dist/collection/components/radio-group/radio-group.js +48 -7
  516. package/dist/collection/components/radio-group/radio-group.md.css +43 -19
  517. package/dist/collection/components/range/range.ionic.css +566 -0
  518. package/dist/collection/components/range/range.ios.css +128 -85
  519. package/dist/collection/components/range/range.js +16 -10
  520. package/dist/collection/components/range/range.md.css +128 -85
  521. package/dist/collection/components/refresher/refresher.ios.css +14 -1
  522. package/dist/collection/components/refresher/refresher.js +11 -8
  523. package/dist/collection/components/refresher/refresher.md.css +15 -2
  524. package/dist/collection/components/refresher-content/refresher-content.js +34 -7
  525. package/dist/collection/components/reorder/reorder.ios.css +6 -0
  526. package/dist/collection/components/reorder/reorder.js +25 -6
  527. package/dist/collection/components/reorder/reorder.md.css +6 -0
  528. package/dist/collection/components/reorder-group/reorder-group.css +6 -0
  529. package/dist/collection/components/reorder-group/reorder-group.js +8 -4
  530. package/dist/collection/components/ripple-effect/{ripple-effect.css → ripple-effect.common.css} +7 -1
  531. package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +215 -0
  532. package/dist/collection/components/ripple-effect/ripple-effect.js +14 -6
  533. package/dist/collection/components/route/route.js +4 -0
  534. package/dist/collection/components/router/router.js +4 -0
  535. package/dist/collection/components/router-link/router-link.css +8 -2
  536. package/dist/collection/components/router-link/router-link.js +9 -5
  537. package/dist/collection/components/router-outlet/router-outlet.css +7 -1
  538. package/dist/collection/components/router-outlet/router-outlet.js +6 -3
  539. package/dist/collection/components/row/row.css +16 -0
  540. package/dist/collection/components/row/row.js +9 -2
  541. package/dist/collection/components/searchbar/searchbar.ionic.css +621 -0
  542. package/dist/collection/components/searchbar/searchbar.ios.css +56 -18
  543. package/dist/collection/components/searchbar/searchbar.js +164 -42
  544. package/dist/collection/components/searchbar/searchbar.md.css +56 -18
  545. package/dist/collection/components/segment/segment.ionic.css +115 -0
  546. package/dist/collection/components/segment/segment.ios.css +45 -2
  547. package/dist/collection/components/segment/segment.js +11 -8
  548. package/dist/collection/components/segment/segment.md.css +45 -2
  549. package/dist/collection/components/segment-button/segment-button.ionic.css +351 -0
  550. package/dist/collection/components/segment-button/segment-button.ios.css +146 -105
  551. package/dist/collection/components/segment-button/segment-button.js +11 -8
  552. package/dist/collection/components/segment-button/segment-button.md.css +148 -107
  553. package/dist/collection/components/segment-content/segment-content.js +1 -1
  554. package/dist/collection/components/segment-view/segment-view.ios.css +6 -0
  555. package/dist/collection/components/segment-view/segment-view.js +13 -4
  556. package/dist/collection/components/segment-view/segment-view.md.css +6 -0
  557. package/dist/collection/components/select/select.ionic.css +976 -0
  558. package/dist/collection/components/select/select.ios.css +304 -148
  559. package/dist/collection/components/select/select.js +232 -82
  560. package/dist/collection/components/select/select.md.css +320 -150
  561. package/dist/collection/components/select-modal/select-modal.ionic.css +254 -0
  562. package/dist/collection/components/select-modal/select-modal.ios.css +293 -45
  563. package/dist/collection/components/select-modal/select-modal.js +63 -15
  564. package/dist/collection/components/select-modal/select-modal.md.css +273 -43
  565. package/dist/collection/components/select-option/select-option.js +8 -4
  566. package/dist/collection/components/select-popover/select-popover.ionic.css +253 -0
  567. package/dist/collection/components/select-popover/select-popover.ios.css +188 -124
  568. package/dist/collection/components/select-popover/select-popover.js +17 -9
  569. package/dist/collection/components/select-popover/select-popover.md.css +228 -47
  570. package/dist/collection/components/skeleton-text/skeleton-text.css +6 -0
  571. package/dist/collection/components/skeleton-text/skeleton-text.js +9 -5
  572. package/dist/collection/components/spinner/{spinner.css → spinner.ionic.css} +78 -10
  573. package/dist/collection/components/spinner/spinner.js +47 -6
  574. package/dist/collection/components/spinner/spinner.native.css +199 -0
  575. package/dist/collection/components/split-pane/split-pane.ios.css +20 -2
  576. package/dist/collection/components/split-pane/split-pane.js +15 -8
  577. package/dist/collection/components/split-pane/split-pane.md.css +20 -2
  578. package/dist/collection/components/tab/tab.js +6 -2
  579. package/dist/collection/components/tab-bar/tab-bar.ionic.css +249 -0
  580. package/dist/collection/components/tab-bar/tab-bar.ios.css +86 -43
  581. package/dist/collection/components/tab-bar/tab-bar.js +178 -15
  582. package/dist/collection/components/tab-bar/tab-bar.md.css +86 -43
  583. package/dist/collection/components/tab-button/tab-button.ionic.css +372 -0
  584. package/dist/collection/components/tab-button/tab-button.ios.css +171 -95
  585. package/dist/collection/components/tab-button/tab-button.js +54 -9
  586. package/dist/collection/components/tab-button/tab-button.md.css +137 -93
  587. package/dist/collection/components/tabs/tabs.css +7 -1
  588. package/dist/collection/components/tabs/tabs.js +4 -1
  589. package/dist/collection/components/text/text.css +6 -0
  590. package/dist/collection/components/text/text.js +7 -6
  591. package/dist/collection/components/textarea/textarea.ionic.css +989 -0
  592. package/dist/collection/components/textarea/textarea.ios.css +322 -174
  593. package/dist/collection/components/textarea/textarea.js +205 -43
  594. package/dist/collection/components/textarea/textarea.md.css +339 -176
  595. package/dist/collection/components/thumbnail/thumbnail.css +6 -0
  596. package/dist/collection/components/thumbnail/thumbnail.js +9 -2
  597. package/dist/collection/components/title/title.ionic.css +125 -0
  598. package/dist/collection/components/title/title.ios.css +32 -4
  599. package/dist/collection/components/title/title.js +13 -7
  600. package/dist/collection/components/title/title.md.css +39 -4
  601. package/dist/collection/components/toast/animations/utils.js +1 -1
  602. package/dist/collection/components/toast/toast.ionic.css +391 -0
  603. package/dist/collection/components/toast/toast.ios.css +84 -45
  604. package/dist/collection/components/toast/toast.js +79 -13
  605. package/dist/collection/components/toast/toast.md.css +84 -45
  606. package/dist/collection/components/toggle/toggle.ionic.css +510 -0
  607. package/dist/collection/components/toggle/toggle.ios.css +247 -127
  608. package/dist/collection/components/toggle/toggle.js +58 -18
  609. package/dist/collection/components/toggle/toggle.md.css +245 -127
  610. package/dist/collection/components/toolbar/test/image.svg +1 -0
  611. package/dist/collection/components/toolbar/toolbar.ionic.css +249 -0
  612. package/dist/collection/components/toolbar/toolbar.ios.css +90 -47
  613. package/dist/collection/components/toolbar/toolbar.js +216 -14
  614. package/dist/collection/components/toolbar/toolbar.md.css +90 -47
  615. package/dist/collection/global/ionic-global.js +239 -13
  616. package/dist/collection/utils/css-value-validation.js +39 -0
  617. package/dist/collection/utils/focus-trap.js +15 -4
  618. package/dist/collection/utils/focus-visible.js +73 -2
  619. package/dist/collection/utils/forms/clear-button-press-controller.js +40 -0
  620. package/dist/collection/utils/forms/click-controller.js +95 -9
  621. package/dist/collection/utils/forms/index.js +1 -0
  622. package/dist/collection/utils/forms/validity.js +31 -0
  623. package/dist/collection/utils/framework-delegate.js +3 -1
  624. package/dist/collection/utils/hardware-back-button.js +15 -0
  625. package/dist/collection/utils/helpers.js +84 -3
  626. package/dist/collection/utils/keyboard/keyboard-controller.js +3 -1
  627. package/dist/collection/utils/media.js +1 -0
  628. package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
  629. package/dist/collection/utils/menu-controller/animations/push.js +2 -1
  630. package/dist/collection/utils/menu-controller/animations/reveal.js +2 -1
  631. package/dist/collection/utils/overlay-control-label.js +13 -11
  632. package/dist/collection/utils/overlays.js +289 -10
  633. package/dist/collection/utils/scroll-hide-controller.js +178 -0
  634. package/dist/collection/utils/test/playwright/drag-element.js +32 -9
  635. package/dist/collection/utils/test/playwright/field-geometry.js +34 -0
  636. package/dist/collection/utils/test/playwright/generator.js +48 -23
  637. package/dist/collection/utils/test/playwright/index.js +1 -0
  638. package/dist/collection/utils/test/playwright/page/utils/goto.js +10 -1
  639. package/dist/collection/utils/test/playwright/page/utils/set-content.js +26 -3
  640. package/dist/collection/utils/theme.js +25 -1
  641. package/dist/collection/utils/transition/ios.transition.js +1 -0
  642. package/dist/docs.json +9039 -293
  643. package/dist/esm/{animation-C_V9lXzL.js → animation-GasMiLY0.js} +2 -2
  644. package/dist/esm/{app-globals-CNfpAPW6.js → app-globals-DbCTe1Vv.js} +1 -1
  645. package/dist/esm/{attribute-controller-ItNOXNp9.js → attribute-controller-CbJaN4Zr.js} +2 -1
  646. package/dist/esm/{button-active-rB-Ct9KZ.js → button-active-DLOYzeXl.js} +2 -2
  647. package/dist/esm/{capacitor-BY7l8HgR.js → capacitor-CFERIeaU.js} +1 -1
  648. package/dist/esm/clear-button-press-controller-6ph4kKYn.js +43 -0
  649. package/dist/esm/focus-visible-BYk20Mf5.js +146 -0
  650. package/dist/esm/{format-Ck1cw5z7.js → format-DUHrIiJq.js} +2 -2
  651. package/dist/esm/{framework-delegate-CW5_kWfc.js → framework-delegate-99Ms_INy.js} +4 -2
  652. package/dist/esm/{haptic-ES_sSPLn.js → haptic-Cq4UAeka.js} +1 -1
  653. package/dist/esm/{helpers-p94IkmEA.js → helpers-B_F2b1gy.js} +86 -8
  654. package/dist/esm/{index-CK8uF0iB.js → index-BRYliuA-.js} +1 -1
  655. package/dist/esm/{index-CBkVO5D0.js → index-BeR_5uou.js} +2 -2
  656. package/dist/esm/{index-BvabGprD.js → index-BkJpfpXI.js} +2 -1
  657. package/dist/esm/{index-DLDbwWW7.js → index-BoEdvSPU.js} +4 -2
  658. package/dist/esm/{index-vgPixHgF.js → index-D5lNz-tr.js} +4 -4
  659. package/dist/esm/{index-txcXIB3P.js → index-D86Q8ZLS.js} +12 -10
  660. package/dist/esm/index-ZjP4CjeZ.js +7 -0
  661. package/dist/esm/{index-BpRUsN_W.js → index-hR6kxzTq.js} +55 -5
  662. package/dist/esm/index.js +14 -12
  663. package/dist/esm/{input-shims-KNXj3DAv.js → input-shims-CJVi9djP.js} +7 -5
  664. package/dist/esm/{input.utils-DZY_K8Po.js → input.utils-gPgFKve4.js} +1 -1
  665. package/dist/esm/ion-accordion_2.entry.js +57 -29
  666. package/dist/esm/ion-action-sheet.entry.js +27 -22
  667. package/dist/esm/ion-alert.entry.js +34 -29
  668. package/dist/esm/ion-app_8.entry.js +455 -193
  669. package/dist/esm/ion-avatar_3.entry.js +124 -13
  670. package/dist/esm/ion-back-button.entry.js +31 -23
  671. package/dist/esm/ion-backdrop.entry.js +11 -7
  672. package/dist/esm/ion-breadcrumb_2.entry.js +42 -18
  673. package/dist/esm/ion-button_2.entry.js +61 -23
  674. package/dist/esm/ion-card_5.entry.js +57 -34
  675. package/dist/esm/ion-checkbox.entry.js +43 -17
  676. package/dist/esm/ion-chip.entry.js +51 -9
  677. package/dist/esm/ion-col_3.entry.js +56 -63
  678. package/dist/esm/ion-datetime-button.entry.js +45 -13
  679. package/dist/esm/ion-datetime.entry.js +412 -61
  680. package/dist/esm/ion-divider.entry.js +50 -0
  681. package/dist/esm/ion-fab_3.entry.js +40 -28
  682. package/dist/esm/ion-gallery-item.entry.js +57 -0
  683. package/dist/esm/ion-gallery.entry.js +606 -0
  684. package/dist/esm/ion-img.entry.js +9 -4
  685. package/dist/esm/ion-infinite-scroll_2.entry.js +91 -16
  686. package/dist/esm/ion-input-otp.entry.js +75 -10
  687. package/dist/esm/ion-input-password-toggle.entry.js +42 -14
  688. package/dist/esm/ion-input.entry.js +147 -38
  689. package/dist/esm/ion-item-option_3.entry.js +466 -52
  690. package/dist/esm/ion-item_8.entry.js +118 -51
  691. package/dist/esm/ion-loading.entry.js +22 -17
  692. package/dist/esm/ion-menu_3.entry.js +45 -27
  693. package/dist/esm/ion-modal.entry.js +237 -88
  694. package/dist/esm/ion-nav_2.entry.js +14 -10
  695. package/dist/esm/ion-picker-column-option.entry.js +13 -8
  696. package/dist/esm/ion-picker-column.entry.js +14 -12
  697. package/dist/esm/ion-picker.entry.js +11 -6
  698. package/dist/esm/ion-popover.entry.js +23 -18
  699. package/dist/esm/ion-progress-bar.entry.js +28 -9
  700. package/dist/esm/ion-radio_2.entry.js +37 -18
  701. package/dist/esm/ion-range.entry.js +21 -13
  702. package/dist/esm/ion-refresher_2.entry.js +45 -20
  703. package/dist/esm/ion-reorder_2.entry.js +31 -13
  704. package/dist/esm/ion-ripple-effect.entry.js +16 -7
  705. package/dist/esm/ion-route_4.entry.js +12 -10
  706. package/dist/esm/ion-searchbar.entry.js +118 -32
  707. package/dist/esm/ion-segment-content.entry.js +2 -2
  708. package/dist/esm/ion-segment-view.entry.js +13 -3
  709. package/dist/esm/ion-segment_2.entry.js +24 -16
  710. package/dist/esm/ion-select-modal.entry.js +53 -24
  711. package/dist/esm/ion-select_3.entry.js +198 -76
  712. package/dist/esm/ion-spinner.entry.js +31 -8
  713. package/dist/esm/ion-split-pane.entry.js +14 -9
  714. package/dist/esm/ion-tab-bar_2.entry.js +149 -26
  715. package/dist/esm/ion-tab_2.entry.js +9 -7
  716. package/dist/esm/ion-text.entry.js +8 -7
  717. package/dist/esm/ion-textarea.entry.js +178 -41
  718. package/dist/esm/ion-toast.entry.js +48 -19
  719. package/dist/esm/ion-toggle.entry.js +67 -25
  720. package/dist/esm/ionic-global-DSbFWXp3.js +540 -0
  721. package/dist/esm/ionic.js +6 -5
  722. package/dist/esm/{ios.transition-CW92wRDL.js → ios.transition-C9thfQYf.js} +7 -4
  723. package/dist/esm/{item-multiple-inputs-Bd2LO7qK.js → item-multiple-inputs-CSJsB7-I.js} +1 -1
  724. package/dist/esm/{keyboard-BumguZrM.js → keyboard-Cj8mLJeq.js} +3 -5
  725. package/dist/esm/{keyboard-CutS8BPd.js → keyboard-DAF8GNJ9.js} +1 -1
  726. package/dist/esm/loader.js +6 -5
  727. package/dist/esm/{md.transition-yhfkYX1P.js → md.transition-BEhPsy_z.js} +6 -4
  728. package/dist/esm/{overlay-control-label-BSQPZ79H.js → overlay-control-label-CODBQrPj.js} +13 -11
  729. package/dist/esm/{overlays-BBgMM61s.js → overlays-C8sf7PId.js} +307 -164
  730. package/dist/esm/scroll-hide-controller-Chts2wJU.js +342 -0
  731. package/dist/esm/{select-option-render-BSDT9oSA.js → select-option-render-D5kt0cO9.js} +2 -2
  732. package/dist/esm/{slot-mutation-controller-uKdPbY9K.js → slot-mutation-controller-DanfZTCH.js} +97 -10
  733. package/dist/esm/{status-tap-BskkGI4e.js → status-tap-B8UQS38n.js} +5 -3
  734. package/dist/esm/{swipe-back-BZdyM2Q-.js → swipe-back-Bgftkxen.js} +4 -2
  735. package/dist/esm/{theme-byZM6qHV.js → theme-BUF_V-Kg.js} +25 -1
  736. package/dist/esm/validity-NcQUGze-.js +48 -0
  737. package/dist/html.html-data.json +2651 -150
  738. package/dist/ionic/index.esm.js +1 -1
  739. package/dist/ionic/ionic.esm.js +1 -1
  740. package/dist/ionic/p-038465e3.entry.js +4 -0
  741. package/dist/ionic/p-0b453760.entry.js +4 -0
  742. package/dist/ionic/p-0bd5a7c9.entry.js +4 -0
  743. package/dist/ionic/p-188a2e35.entry.js +4 -0
  744. package/dist/ionic/p-1b045882.entry.js +4 -0
  745. package/dist/ionic/p-1b769779.entry.js +4 -0
  746. package/dist/ionic/p-1b7efcc2.entry.js +4 -0
  747. package/dist/ionic/p-1d735170.entry.js +4 -0
  748. package/dist/ionic/p-2b1e9500.entry.js +4 -0
  749. package/dist/ionic/p-2gcJ-f11.js +4 -0
  750. package/dist/ionic/p-308f9b89.entry.js +4 -0
  751. package/dist/ionic/p-338cb1e7.entry.js +4 -0
  752. package/dist/ionic/p-3674a7de.entry.js +4 -0
  753. package/dist/ionic/p-3a03d05e.entry.js +4 -0
  754. package/dist/ionic/p-3a54495e.entry.js +4 -0
  755. package/dist/ionic/p-3b47fdc7.entry.js +4 -0
  756. package/dist/ionic/p-3be131ed.entry.js +4 -0
  757. package/dist/ionic/p-3f15086f.entry.js +4 -0
  758. package/dist/ionic/p-4152cb6a.entry.js +4 -0
  759. package/dist/ionic/p-41680415.entry.js +4 -0
  760. package/dist/ionic/p-49edfb46.entry.js +4 -0
  761. package/dist/ionic/p-522663a4.entry.js +4 -0
  762. package/dist/ionic/p-561cfcc1.entry.js +4 -0
  763. package/dist/ionic/p-5a024b02.entry.js +4 -0
  764. package/dist/ionic/p-6dc9331b.entry.js +4 -0
  765. package/dist/ionic/p-7df4dcb4.entry.js +4 -0
  766. package/dist/ionic/p-8183df6b.entry.js +4 -0
  767. package/dist/ionic/p-8231e914.entry.js +4 -0
  768. package/dist/ionic/p-82efbf09.entry.js +4 -0
  769. package/dist/ionic/p-86bf24f4.entry.js +4 -0
  770. package/dist/ionic/p-8b107444.entry.js +4 -0
  771. package/dist/ionic/p-8ecb459a.entry.js +4 -0
  772. package/dist/ionic/p-8ff4bf6c.entry.js +4 -0
  773. package/dist/ionic/p-905c8b38.entry.js +4 -0
  774. package/dist/ionic/p-9613f2c3.entry.js +4 -0
  775. package/dist/ionic/p-973f8069.entry.js +4 -0
  776. package/dist/ionic/p-9b41acf3.entry.js +4 -0
  777. package/dist/ionic/p-9cce1ed5.entry.js +4 -0
  778. package/dist/ionic/p-B36ii-hs.js +4 -0
  779. package/{components/p-LkEGRiq0.js → dist/ionic/p-B7XMQegr.js} +1 -1
  780. package/dist/ionic/p-BKwe4f9b.js +4 -0
  781. package/dist/ionic/{p-5a3UxQAh.js → p-BMPN55of.js} +1 -1
  782. package/{components/p-D5_mEbGJ.js → dist/ionic/p-BPA4-c6T.js} +1 -1
  783. package/dist/ionic/p-BUF_V-Kg.js +4 -0
  784. package/dist/ionic/p-BXRdzJMJ.js +4 -0
  785. package/dist/ionic/p-BYk20Mf5.js +4 -0
  786. package/dist/ionic/p-BfDzKnZ-.js +4 -0
  787. package/dist/ionic/p-BfUzA1cP.js +4 -0
  788. package/dist/ionic/{p-DCmOKz8e.js → p-Bjt84heL.js} +1 -1
  789. package/dist/ionic/p-BkJpfpXI.js +4 -0
  790. package/dist/ionic/p-C3TLUO-J.js +4 -0
  791. package/dist/ionic/p-C4WiowQL.js +4 -0
  792. package/dist/ionic/p-CIGNaXM1.js +4 -0
  793. package/dist/ionic/p-CODBQrPj.js +4 -0
  794. package/dist/ionic/p-CXkgZKSx.js +4 -0
  795. package/{components/p-CdrNHfZl.js → dist/ionic/p-CaOPF8Xt.js} +1 -1
  796. package/dist/ionic/{p-DxftXYZp.js → p-CeHcVwSj.js} +1 -1
  797. package/dist/ionic/p-Co3ilg7B.js +4 -0
  798. package/dist/ionic/p-D5t_-oMk.js +4 -0
  799. package/dist/ionic/p-D7LiFzrm.js +4 -0
  800. package/dist/ionic/p-DOdxt_P_.js +4 -0
  801. package/dist/ionic/p-DRbid4Vh.js +4 -0
  802. package/dist/ionic/p-DsBidY1y.js +4 -0
  803. package/dist/ionic/{p-Cf6KtUnA.js → p-DuxayXEj.js} +1 -1
  804. package/dist/ionic/p-DxPRC9Jk.js +4 -0
  805. package/dist/ionic/p-Hb0L-KUN.js +4 -0
  806. package/dist/ionic/p-NcQUGze-.js +4 -0
  807. package/dist/ionic/{p-BBZQUbCq.js → p-T71k3C35.js} +1 -1
  808. package/dist/ionic/p-WdouEyt8.js +4 -0
  809. package/dist/ionic/p-ZjP4CjeZ.js +4 -0
  810. package/dist/ionic/p-a4299509.entry.js +4 -0
  811. package/dist/ionic/p-a52cba2f.entry.js +4 -0
  812. package/dist/ionic/p-b1cd18f0.entry.js +4 -0
  813. package/dist/ionic/p-b30b468d.entry.js +4 -0
  814. package/dist/ionic/p-b4de840a.entry.js +4 -0
  815. package/dist/ionic/p-b6e633f5.entry.js +4 -0
  816. package/dist/ionic/p-bf40b9eb.entry.js +4 -0
  817. package/dist/ionic/p-c1fc48c7.entry.js +4 -0
  818. package/dist/ionic/p-ce8bea16.entry.js +4 -0
  819. package/dist/ionic/p-ceca04fb.entry.js +4 -0
  820. package/dist/ionic/p-d7da66b1.entry.js +4 -0
  821. package/dist/ionic/p-de0de6a6.entry.js +4 -0
  822. package/dist/ionic/p-e715a580.entry.js +4 -0
  823. package/dist/ionic/p-f02c29cd.entry.js +4 -0
  824. package/dist/ionic/p-f10a94a8.entry.js +4 -0
  825. package/dist/ionic/p-f3057b31.entry.js +4 -0
  826. package/dist/ionic/p-fa74dd94.entry.js +4 -0
  827. package/dist/ionic/p-fd00e28d.entry.js +4 -0
  828. package/dist/ionic/p-hR6kxzTq.js +6 -0
  829. package/dist/ionic/p-pVSZ4TVa.js +4 -0
  830. package/dist/ionic/{p-DfvWlTdB.js → p-rwBGNQHN.js} +1 -1
  831. package/dist/types/components/accordion/accordion.d.ts +12 -3
  832. package/dist/types/components/accordion-group/accordion-group.d.ts +12 -1
  833. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +3 -7
  834. package/dist/types/components/action-sheet/action-sheet.d.ts +3 -2
  835. package/dist/types/components/alert/alert-interface.d.ts +3 -7
  836. package/dist/types/components/alert/alert.d.ts +3 -2
  837. package/dist/types/components/app/app.d.ts +4 -5
  838. package/dist/types/components/avatar/avatar.d.ts +32 -0
  839. package/dist/types/components/back-button/back-button.d.ts +10 -3
  840. package/dist/types/components/backdrop/backdrop.d.ts +4 -0
  841. package/dist/types/components/badge/badge.d.ts +34 -1
  842. package/dist/types/components/breadcrumb/breadcrumb.d.ts +14 -1
  843. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
  844. package/dist/types/components/button/button.d.ts +23 -8
  845. package/dist/types/components/buttons/buttons.d.ts +5 -1
  846. package/dist/types/components/card/card.d.ts +8 -1
  847. package/dist/types/components/card-content/card-content.d.ts +2 -1
  848. package/dist/types/components/card-header/card-header.d.ts +3 -2
  849. package/dist/types/components/card-subtitle/card-subtitle.d.ts +2 -1
  850. package/dist/types/components/card-title/card-title.d.ts +2 -1
  851. package/dist/types/components/checkbox/checkbox.d.ts +26 -5
  852. package/dist/types/components/chip/chip.d.ts +26 -1
  853. package/dist/types/components/col/col.d.ts +52 -6
  854. package/dist/types/components/content/content.d.ts +3 -0
  855. package/dist/types/components/datetime/datetime-interface.d.ts +4 -0
  856. package/dist/types/components/datetime/datetime.d.ts +92 -3
  857. package/dist/types/components/datetime/utils/data.d.ts +5 -5
  858. package/dist/types/components/datetime/utils/state.d.ts +5 -2
  859. package/dist/types/components/datetime-button/datetime-button.d.ts +2 -1
  860. package/dist/types/components/divider/divider.d.ts +20 -0
  861. package/dist/types/components/fab/fab.d.ts +4 -0
  862. package/dist/types/components/fab-button/fab-button.d.ts +11 -3
  863. package/dist/types/components/fab-list/fab-list.d.ts +4 -0
  864. package/dist/types/components/footer/footer-interface.d.ts +1 -0
  865. package/dist/types/components/footer/footer.d.ts +20 -3
  866. package/dist/types/components/gallery/gallery-constants.d.ts +9 -0
  867. package/dist/types/components/gallery/gallery-interface.d.ts +10 -0
  868. package/dist/types/components/gallery/gallery.d.ts +218 -0
  869. package/dist/types/components/gallery/test/utils.d.ts +3 -0
  870. package/dist/types/components/gallery-item/gallery-item.d.ts +33 -0
  871. package/dist/types/components/grid/grid.d.ts +4 -0
  872. package/dist/types/components/header/header-interface.d.ts +1 -0
  873. package/dist/types/components/header/header.d.ts +26 -3
  874. package/dist/types/components/header/header.utils.d.ts +4 -5
  875. package/dist/types/components/img/img.d.ts +2 -0
  876. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +21 -0
  877. package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +4 -0
  878. package/dist/types/components/input/input.d.ts +45 -5
  879. package/dist/types/components/input-otp/input-otp.d.ts +37 -0
  880. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +14 -0
  881. package/dist/types/components/item/item.d.ts +17 -4
  882. package/dist/types/components/item-divider/item-divider.d.ts +2 -1
  883. package/dist/types/components/item-group/item-group.d.ts +4 -0
  884. package/dist/types/components/item-option/item-option.d.ts +18 -1
  885. package/dist/types/components/item-options/item-options.d.ts +4 -0
  886. package/dist/types/components/item-sliding/item-sliding.d.ts +47 -1
  887. package/dist/types/components/item-sliding/test/test.utils.d.ts +13 -0
  888. package/dist/types/components/label/label.d.ts +2 -1
  889. package/dist/types/components/list/list.d.ts +15 -1
  890. package/dist/types/components/list-header/list-header.d.ts +2 -1
  891. package/dist/types/components/loading/loading-interface.d.ts +2 -7
  892. package/dist/types/components/loading/loading.d.ts +3 -2
  893. package/dist/types/components/menu/menu.d.ts +3 -0
  894. package/dist/types/components/menu-button/menu-button.d.ts +8 -1
  895. package/dist/types/components/menu-toggle/menu-toggle.d.ts +3 -0
  896. package/dist/types/components/modal/animations/ionic.enter.d.ts +6 -0
  897. package/dist/types/components/modal/animations/ionic.leave.d.ts +6 -0
  898. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  899. package/dist/types/components/modal/modal-interface.d.ts +4 -7
  900. package/dist/types/components/modal/modal.d.ts +11 -1
  901. package/dist/types/components/nav/nav-interface.d.ts +9 -1
  902. package/dist/types/components/nav/nav.d.ts +5 -1
  903. package/dist/types/components/nav-link/nav-link.d.ts +4 -0
  904. package/dist/types/components/note/note.d.ts +2 -1
  905. package/dist/types/components/picker/picker.d.ts +2 -1
  906. package/dist/types/components/picker-column/picker-column.d.ts +2 -1
  907. package/dist/types/components/picker-column-option/picker-column-option.d.ts +4 -0
  908. package/dist/types/components/popover/popover-interface.d.ts +3 -6
  909. package/dist/types/components/popover/popover.d.ts +6 -5
  910. package/dist/types/components/progress-bar/progress-bar.d.ts +10 -1
  911. package/dist/types/components/radio/radio.d.ts +2 -1
  912. package/dist/types/components/radio-group/radio-group.d.ts +12 -0
  913. package/dist/types/components/range/range.d.ts +2 -1
  914. package/dist/types/components/refresher/refresher.d.ts +2 -1
  915. package/dist/types/components/refresher-content/refresher-content.d.ts +10 -0
  916. package/dist/types/components/reorder/reorder.d.ts +9 -0
  917. package/dist/types/components/reorder-group/reorder-group.d.ts +4 -0
  918. package/dist/types/components/ripple-effect/ripple-effect.d.ts +4 -0
  919. package/dist/types/components/route/route.d.ts +4 -0
  920. package/dist/types/components/router/router.d.ts +4 -0
  921. package/dist/types/components/router-link/router-link.d.ts +4 -0
  922. package/dist/types/components/router-outlet/router-outlet.d.ts +4 -1
  923. package/dist/types/components/row/row.d.ts +4 -0
  924. package/dist/types/components/searchbar/searchbar.d.ts +56 -10
  925. package/dist/types/components/segment/segment.d.ts +2 -1
  926. package/dist/types/components/segment-button/segment-button.d.ts +2 -1
  927. package/dist/types/components/select/select.d.ts +59 -15
  928. package/dist/types/components/select-modal/select-modal.d.ts +13 -0
  929. package/dist/types/components/select-option/select-option.d.ts +7 -4
  930. package/dist/types/components/select-popover/select-popover.d.ts +3 -0
  931. package/dist/types/components/skeleton-text/skeleton-text.d.ts +4 -0
  932. package/dist/types/components/spinner/spinner.d.ts +15 -0
  933. package/dist/types/components/split-pane/split-pane.d.ts +4 -0
  934. package/dist/types/components/tab/tab.d.ts +4 -0
  935. package/dist/types/components/tab-bar/tab-bar-interface.d.ts +1 -0
  936. package/dist/types/components/tab-bar/tab-bar.d.ts +41 -3
  937. package/dist/types/components/tab-button/tab-button.d.ts +12 -1
  938. package/dist/types/components/tabs/tabs.d.ts +3 -0
  939. package/dist/types/components/text/text.d.ts +2 -1
  940. package/dist/types/components/textarea/textarea.d.ts +75 -17
  941. package/dist/types/components/thumbnail/thumbnail.d.ts +4 -0
  942. package/dist/types/components/title/title.d.ts +4 -0
  943. package/dist/types/components/toast/animations/utils.d.ts +2 -2
  944. package/dist/types/components/toast/toast-interface.d.ts +3 -7
  945. package/dist/types/components/toast/toast.d.ts +19 -2
  946. package/dist/types/components/toggle/toggle.d.ts +18 -1
  947. package/dist/types/components/toolbar/toolbar.d.ts +43 -3
  948. package/dist/types/components.d.ts +1870 -209
  949. package/dist/types/global/ionic-global.d.ts +28 -2
  950. package/dist/types/interface.d.ts +3 -0
  951. package/dist/types/utils/config.d.ts +128 -4
  952. package/dist/types/utils/css-value-validation.d.ts +21 -0
  953. package/dist/types/utils/focus-trap.d.ts +1 -1
  954. package/dist/types/utils/focus-visible.d.ts +33 -0
  955. package/dist/types/utils/forms/clear-button-press-controller.d.ts +20 -0
  956. package/dist/types/utils/forms/click-controller.d.ts +16 -5
  957. package/dist/types/utils/forms/index.d.ts +1 -0
  958. package/dist/types/utils/forms/validity.d.ts +7 -0
  959. package/dist/types/utils/helpers.d.ts +29 -0
  960. package/dist/types/utils/overlay-control-label.d.ts +11 -9
  961. package/dist/types/utils/overlays-interface.d.ts +31 -1
  962. package/dist/types/utils/overlays.d.ts +1 -1
  963. package/dist/types/utils/scroll-hide-controller.d.ts +56 -0
  964. package/dist/types/utils/test/playwright/drag-element.d.ts +16 -3
  965. package/dist/types/utils/test/playwright/field-geometry.d.ts +13 -0
  966. package/dist/types/utils/test/playwright/generator.d.ts +31 -2
  967. package/dist/types/utils/test/playwright/index.d.ts +1 -0
  968. package/dist/types/utils/theme.d.ts +9 -0
  969. package/hydrate/index.js +5842 -1281
  970. package/hydrate/index.mjs +5842 -1281
  971. package/package.json +10 -4
  972. package/components/p-3avHDbEF.js +0 -4
  973. package/components/p-7KepMw9O.js +0 -4
  974. package/components/p-7NbIvzb4.js +0 -4
  975. package/components/p-B3dSuofL.js +0 -4
  976. package/components/p-BBsseItU.js +0 -4
  977. package/components/p-BMHdI-wb.js +0 -4
  978. package/components/p-BSQPZ79H.js +0 -4
  979. package/components/p-BT2InaHz.js +0 -4
  980. package/components/p-BZ1k9WL7.js +0 -4
  981. package/components/p-BhamHSw3.js +0 -4
  982. package/components/p-BmVRXR1y.js +0 -4
  983. package/components/p-BrrMFd9K.js +0 -4
  984. package/components/p-C-SO5kIs.js +0 -4
  985. package/components/p-C0TdbIVo.js +0 -4
  986. package/components/p-C6Y0cCH_.js +0 -4
  987. package/components/p-C8BAigo3.js +0 -4
  988. package/components/p-CRb2xRCz.js +0 -4
  989. package/components/p-CUQjkOdi.js +0 -4
  990. package/components/p-CW84OFQa.js +0 -4
  991. package/components/p-CjPRDxby.js +0 -4
  992. package/components/p-CohRJRIu.js +0 -4
  993. package/components/p-Ct2aBEue.js +0 -4
  994. package/components/p-CvyvLbPe.js +0 -4
  995. package/components/p-D8FyR2IB.js +0 -4
  996. package/components/p-DJztqcrH.js +0 -4
  997. package/components/p-DLEJ61lJ.js +0 -4
  998. package/components/p-DRm4t-by.js +0 -4
  999. package/components/p-DTGCMApY.js +0 -4
  1000. package/components/p-D_U0pDe5.js +0 -4
  1001. package/components/p-DaW9OZ6S.js +0 -4
  1002. package/components/p-Dah8BCNg.js +0 -4
  1003. package/components/p-DaojW_d_.js +0 -4
  1004. package/components/p-DnBabjgY.js +0 -4
  1005. package/components/p-Ds5vN3iu.js +0 -4
  1006. package/components/p-DwTzX8Vi.js +0 -4
  1007. package/components/p-Dy7x-KDF.js +0 -4
  1008. package/components/p-HthJZjZ6.js +0 -4
  1009. package/components/p-KbMCbGRA.js +0 -4
  1010. package/components/p-LpMHEu3v.js +0 -4
  1011. package/components/p-PkD1iLNN.js +0 -4
  1012. package/components/p-R4UxBukQ.js +0 -4
  1013. package/components/p-RhI78AKb.js +0 -4
  1014. package/components/p-byZM6qHV.js +0 -4
  1015. package/components/p-hLu-eIbb.js +0 -4
  1016. package/components/p-kKGBuIkf.js +0 -4
  1017. package/components/p-z-EWo6r-.js +0 -4
  1018. package/dist/cjs/focus-visible-CCvKiLh3.js +0 -77
  1019. package/dist/cjs/ionic-global-48ceLiJ6.js +0 -156
  1020. package/dist/cjs/keyboard-controller-DZE97OtR.js +0 -167
  1021. package/dist/cjs/validity-BpS37YFM.js +0 -19
  1022. package/dist/esm/focus-visible-BmVRXR1y.js +0 -75
  1023. package/dist/esm/ionic-global-Cep6oYzK.js +0 -151
  1024. package/dist/esm/keyboard-controller-DqohyEsZ.js +0 -165
  1025. package/dist/esm/validity-DJztqcrH.js +0 -17
  1026. package/dist/ionic/p-00cd107d.entry.js +0 -4
  1027. package/dist/ionic/p-013b9aba.entry.js +0 -4
  1028. package/dist/ionic/p-014c3633.entry.js +0 -4
  1029. package/dist/ionic/p-0562139b.entry.js +0 -4
  1030. package/dist/ionic/p-0a789930.entry.js +0 -4
  1031. package/dist/ionic/p-0f1613f2.entry.js +0 -4
  1032. package/dist/ionic/p-1252621e.entry.js +0 -4
  1033. package/dist/ionic/p-129f7b95.entry.js +0 -4
  1034. package/dist/ionic/p-16de8fd9.entry.js +0 -4
  1035. package/dist/ionic/p-1bb1be7e.entry.js +0 -4
  1036. package/dist/ionic/p-1f342c2d.entry.js +0 -4
  1037. package/dist/ionic/p-1ffa5577.entry.js +0 -4
  1038. package/dist/ionic/p-210f906e.entry.js +0 -4
  1039. package/dist/ionic/p-27960f65.entry.js +0 -4
  1040. package/dist/ionic/p-3c6fc2e8.entry.js +0 -4
  1041. package/dist/ionic/p-436d4ac8.entry.js +0 -4
  1042. package/dist/ionic/p-43729675.entry.js +0 -4
  1043. package/dist/ionic/p-4468e439.entry.js +0 -4
  1044. package/dist/ionic/p-4e4e5919.entry.js +0 -4
  1045. package/dist/ionic/p-51af4728.entry.js +0 -4
  1046. package/dist/ionic/p-59e4b521.entry.js +0 -4
  1047. package/dist/ionic/p-5b47b8d5.entry.js +0 -4
  1048. package/dist/ionic/p-5dcddfd5.entry.js +0 -4
  1049. package/dist/ionic/p-694f3e78.entry.js +0 -4
  1050. package/dist/ionic/p-76c189e7.entry.js +0 -4
  1051. package/dist/ionic/p-77252596.entry.js +0 -4
  1052. package/dist/ionic/p-77540bcb.entry.js +0 -4
  1053. package/dist/ionic/p-77e7b612.entry.js +0 -4
  1054. package/dist/ionic/p-7868eb92.entry.js +0 -4
  1055. package/dist/ionic/p-800ce1e0.entry.js +0 -4
  1056. package/dist/ionic/p-84470714.entry.js +0 -4
  1057. package/dist/ionic/p-87fb6d59.entry.js +0 -4
  1058. package/dist/ionic/p-8B39TMv-.js +0 -4
  1059. package/dist/ionic/p-8af85fa8.entry.js +0 -4
  1060. package/dist/ionic/p-8c85e250.entry.js +0 -4
  1061. package/dist/ionic/p-8dQB1sG_.js +0 -4
  1062. package/dist/ionic/p-9515f840.entry.js +0 -4
  1063. package/dist/ionic/p-96d040b0.entry.js +0 -4
  1064. package/dist/ionic/p-9d7e5a0b.entry.js +0 -4
  1065. package/dist/ionic/p-B0afqOUt.js +0 -4
  1066. package/dist/ionic/p-B2JD8_LP.js +0 -4
  1067. package/dist/ionic/p-B2y1T0dN.js +0 -4
  1068. package/dist/ionic/p-BHBb21Hp.js +0 -4
  1069. package/dist/ionic/p-BSQPZ79H.js +0 -4
  1070. package/dist/ionic/p-BexAj0yw.js +0 -4
  1071. package/dist/ionic/p-BgkRGRO3.js +0 -4
  1072. package/dist/ionic/p-BmVRXR1y.js +0 -4
  1073. package/dist/ionic/p-BpRUsN_W.js +0 -6
  1074. package/dist/ionic/p-BvabGprD.js +0 -4
  1075. package/dist/ionic/p-C4SpVvhx.js +0 -4
  1076. package/dist/ionic/p-CNdt1FPc.js +0 -4
  1077. package/dist/ionic/p-CfccUand.js +0 -4
  1078. package/dist/ionic/p-DArnNWiu.js +0 -4
  1079. package/dist/ionic/p-DBFcFCH5.js +0 -4
  1080. package/dist/ionic/p-DFPZa_No.js +0 -4
  1081. package/dist/ionic/p-DJztqcrH.js +0 -4
  1082. package/dist/ionic/p-DYKDWM2f.js +0 -4
  1083. package/dist/ionic/p-DriE1ZAo.js +0 -4
  1084. package/dist/ionic/p-DzQk7Lu8.js +0 -4
  1085. package/dist/ionic/p-SEecsUh7.js +0 -4
  1086. package/dist/ionic/p-a45caa30.entry.js +0 -4
  1087. package/dist/ionic/p-af15fc5d.entry.js +0 -4
  1088. package/dist/ionic/p-af4b4719.entry.js +0 -4
  1089. package/dist/ionic/p-b0faaae2.entry.js +0 -4
  1090. package/dist/ionic/p-b3aadfe8.entry.js +0 -4
  1091. package/dist/ionic/p-b5bcbbc1.entry.js +0 -4
  1092. package/dist/ionic/p-byZM6qHV.js +0 -4
  1093. package/dist/ionic/p-c293f854.entry.js +0 -4
  1094. package/dist/ionic/p-c56c23b6.entry.js +0 -4
  1095. package/dist/ionic/p-c7ea2647.entry.js +0 -4
  1096. package/dist/ionic/p-c8c77f7b.entry.js +0 -4
  1097. package/dist/ionic/p-cbc73380.entry.js +0 -4
  1098. package/dist/ionic/p-d58e9da3.entry.js +0 -4
  1099. package/dist/ionic/p-e1haAYzm.js +0 -4
  1100. package/dist/ionic/p-ec08a7e6.entry.js +0 -4
  1101. package/dist/ionic/p-f37e6ed2.entry.js +0 -4
  1102. package/dist/ionic/p-f6a1ab48.entry.js +0 -4
  1103. /package/dist/collection/components/{input-password-toggle/input-password-toggle.css → refresher-content/refresher-content.css} +0 -0
@@ -10,7 +10,7 @@ import { isRTL } from "../../utils/rtl/index";
10
10
  import { createColorClasses } from "../../utils/theme";
11
11
  import { caretDownSharp, caretUpSharp, chevronBack, chevronDown, chevronForward } from "ionicons/icons";
12
12
  import { config } from "../../global/config";
13
- import { getIonMode } from "../../global/ionic-global";
13
+ import { getIonMode, getIonTheme } from "../../global/ionic-global";
14
14
  import { isSameDay, warnIfValueOutOfBounds, isBefore, isAfter } from "./utils/comparison";
15
15
  import { generateMonths, getDaysOfMonth, getDaysOfWeek, getToday, getMonthColumnData, getDayColumnData, getYearColumnData, getTimeColumnsData, getCombinedDateColumnData, } from "./utils/data";
16
16
  import { formatValue, getLocalizedDateTime, getLocalizedTime, getMonthAndYear } from "./utils/format";
@@ -20,7 +20,8 @@ import { clampDate, convertToArrayOfNumbers, getPartsFromCalendarDay, parseAmPm,
20
20
  import { getCalendarDayState, getHighlightStyles, isDayDisabled, isMonthDisabled, isNextMonthDisabled, isPrevMonthDisabled, } from "./utils/state";
21
21
  import { checkForPresentationFormatMismatch, warnIfTimeZoneProvided } from "./utils/validate";
22
22
  /**
23
- * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
23
+ * @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
24
+ * @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
24
25
  *
25
26
  * @slot title - The title of the datetime.
26
27
  * @slot buttons - The buttons in the datetime.
@@ -49,6 +50,11 @@ import { checkForPresentationFormatMismatch, warnIfTimeZoneProvided } from "./ut
49
50
  * @part calendar-day today - The calendar day that contains the current day.
50
51
  * @part calendar-day disabled - The calendar day that is disabled.
51
52
  *
53
+ * @part range-start - The calendar day button that is the start of a range selection.
54
+ * @part range-end - The calendar day button that is the end of a range selection.
55
+ * @part range-selection - The calendar day button that is part of a range selection (includes start and end).
56
+ * @part range-track - The track that connects the start and end days of a range selection.
57
+ *
52
58
  * @part datetime-header - The datetime header contains the content for the `title` slot and the selected date.
53
59
  * @part datetime-title - The element that contains the `title` slot content.
54
60
  * @part datetime-selected-date - The element that contains the selected date.
@@ -129,8 +135,22 @@ export class Datetime {
129
135
  /**
130
136
  * If `true`, multiple dates can be selected at once. Only
131
137
  * applies to `presentation="date"` and `preferWheel="false"`.
138
+ *
139
+ * @deprecated Use `selectionMode="multiple"` instead.
132
140
  */
133
141
  this.multiple = false;
142
+ /**
143
+ * The text shown in the datetime header when the start of the range
144
+ * is empty, also used by screen readers to announce the start date.
145
+ * Only applies when `selectionMode="range"`.
146
+ */
147
+ this.startDateLabel = 'Start date';
148
+ /**
149
+ * The text shown in the datetime header when the end of the range
150
+ * is empty, also used by screen readers to announce the end date.
151
+ * Only applies when `selectionMode="range"`.
152
+ */
153
+ this.endDateLabel = 'End date';
134
154
  /**
135
155
  * If `true`, a header will be shown above the calendar
136
156
  * picker. This will include both the slotted title, and
@@ -183,8 +203,8 @@ export class Datetime {
183
203
  */
184
204
  this.preferWheel = false;
185
205
  this.warnIfIncorrectValueUsage = () => {
186
- const { multiple, value } = this;
187
- if (!multiple && Array.isArray(value)) {
206
+ const { value } = this;
207
+ if (!this.isMultipleMode && !this.isRangeMode && Array.isArray(value)) {
188
208
  /**
189
209
  * We do some processing on the `value` array so
190
210
  * that it looks more like an array when logged to
@@ -193,7 +213,13 @@ export class Datetime {
193
213
  * Default toString() behavior: a,b
194
214
  * Custom behavior: ['a', 'b']
195
215
  */
196
- printIonWarning(`[ion-datetime] - An array of values was passed, but multiple is "false". This is incorrect usage and may result in unexpected behaviors. To dismiss this warning, pass a string to the "value" property when multiple="false".
216
+ printIonWarning(`[ion-datetime] - An array of values was passed, but neither selectionMode="multiple" nor selectionMode="range" is set. This is incorrect usage and may result in unexpected behaviors.
217
+
218
+ Value Passed: [${value.map((v) => `'${v}'`).join(', ')}]
219
+ `, this.el);
220
+ }
221
+ if (this.isRangeMode && Array.isArray(value) && value.length > 2) {
222
+ printIonWarning(`[ion-datetime] - More than 2 values were passed with selectionMode="range". Only the first and last values will be used.
197
223
 
198
224
  Value Passed: [${value.map((v) => `'${v}'`).join(', ')}]
199
225
  `, this.el);
@@ -219,6 +245,9 @@ export class Datetime {
219
245
  };
220
246
  this.getActivePart = () => {
221
247
  const { activeParts } = this;
248
+ if (this.isRangeParts(activeParts)) {
249
+ return activeParts.start;
250
+ }
222
251
  return Array.isArray(activeParts) ? activeParts[0] : activeParts;
223
252
  };
224
253
  this.closeParentOverlay = (role) => {
@@ -233,6 +262,33 @@ export class Datetime {
233
262
  ...parts,
234
263
  };
235
264
  };
265
+ /**
266
+ * Checks whether the span from start to end contains any disabled day.
267
+ * Used by range mode to prevent selecting across disabled dates.
268
+ */
269
+ this.rangeContainsDisabledDate = (start, end) => {
270
+ const { minParts, maxParts, parsedDayValues, parsedMonthValues, parsedYearValues, isDateEnabled } = this;
271
+ let cursor = getNextDay(start);
272
+ while (isBefore(cursor, end)) {
273
+ if (isDayDisabled(cursor, minParts, maxParts, parsedDayValues) ||
274
+ (parsedMonthValues !== undefined && !parsedMonthValues.includes(cursor.month)) ||
275
+ (parsedYearValues !== undefined && !parsedYearValues.includes(cursor.year))) {
276
+ return true;
277
+ }
278
+ if (isDateEnabled) {
279
+ try {
280
+ if (!isDateEnabled(convertDataToISO(cursor))) {
281
+ return true;
282
+ }
283
+ }
284
+ catch {
285
+ // Swallow user callback exceptions during validation
286
+ }
287
+ }
288
+ cursor = getNextDay(cursor);
289
+ }
290
+ return false;
291
+ };
236
292
  this.setActiveParts = (parts, removeDate = false) => {
237
293
  /** if the datetime component is in readonly mode,
238
294
  * allow browsing of the calendar without changing
@@ -242,7 +298,7 @@ export class Datetime {
242
298
  return;
243
299
  }
244
300
  this.hasUnconfirmedSelection = true;
245
- const { multiple, minParts, maxParts, activeParts } = this;
301
+ const { minParts, maxParts, activeParts } = this;
246
302
  /**
247
303
  * When setting the active parts, it is possible
248
304
  * to set invalid data. For example,
@@ -255,7 +311,10 @@ export class Datetime {
255
311
  */
256
312
  const validatedParts = validateParts(parts, minParts, maxParts);
257
313
  this.setWorkingParts(validatedParts);
258
- if (multiple) {
314
+ if (this.isRangeMode) {
315
+ this.setActivePartsRange(validatedParts);
316
+ }
317
+ else if (this.isMultipleMode) {
259
318
  const activePartsArray = Array.isArray(activeParts) ? activeParts : [activeParts];
260
319
  if (removeDate) {
261
320
  this.activeParts = activePartsArray.filter((p) => !isSameDay(p, validatedParts));
@@ -275,6 +334,25 @@ export class Datetime {
275
334
  }
276
335
  this.confirm();
277
336
  };
337
+ /**
338
+ * Handles range selection logic when a day is clicked.
339
+ *
340
+ * Creating a new range: first click sets start, second sets end.
341
+ * Modifying an existing range:
342
+ * - Before range → new start
343
+ * - Within range → new end
344
+ * - After range → new end
345
+ * If the resulting span contains a disabled date, start a new range instead.
346
+ */
347
+ this.setActivePartsRange = (parts) => {
348
+ const current = this.rangeParts;
349
+ if (!current || isBefore(parts, current.start) || this.rangeContainsDisabledDate(current.start, parts)) {
350
+ this.activeParts = { start: parts };
351
+ }
352
+ else {
353
+ this.activeParts = { start: current.start, end: parts };
354
+ }
355
+ };
278
356
  this.initializeKeyboardListeners = () => {
279
357
  const calendarBodyRef = this.calendarBodyRef;
280
358
  if (!calendarBodyRef) {
@@ -686,6 +764,57 @@ export class Datetime {
686
764
  if (hasValue) {
687
765
  warnIfValueOutOfBounds(valueToProcess, minParts, maxParts);
688
766
  }
767
+ /**
768
+ * Range mode: convert the value array into DatetimeRangeParts.
769
+ */
770
+ if (this.isRangeMode) {
771
+ /**
772
+ * The calendar navigates to the start of the range, or to the default
773
+ * date when there is nothing selected, so that an empty range mode
774
+ * opens on the same month as the other selection modes.
775
+ */
776
+ let navigateTo;
777
+ if (hasValue && Array.isArray(valueToProcess)) {
778
+ let rangeValues = valueToProcess;
779
+ // If more than 2 entries, use first and last
780
+ if (rangeValues.length > 2) {
781
+ rangeValues = [rangeValues[0], rangeValues[rangeValues.length - 1]];
782
+ }
783
+ let startParts = rangeValues[0];
784
+ let endParts = rangeValues.length > 1 ? rangeValues[1] : undefined;
785
+ // Normalize reversed pairs so earlier date is start
786
+ if (endParts && isAfter(startParts, endParts)) {
787
+ const temp = startParts;
788
+ startParts = endParts;
789
+ endParts = temp;
790
+ }
791
+ this.activeParts = endParts ? { start: startParts, end: endParts } : { start: startParts };
792
+ /**
793
+ * Stay on the end date's month when it is already showing, such as
794
+ * right after the user picks it, instead of jumping back to the start.
795
+ */
796
+ navigateTo =
797
+ endParts && endParts.month === workingParts.month && endParts.year === workingParts.year
798
+ ? endParts
799
+ : startParts;
800
+ }
801
+ else {
802
+ this.activeParts = [];
803
+ navigateTo = Array.isArray(valueToProcess) ? valueToProcess[0] : valueToProcess;
804
+ }
805
+ const targetValue = clampDate(navigateTo, minParts, maxParts);
806
+ const { month, day, year } = targetValue;
807
+ const didChangeMonth = (month !== undefined && month !== workingParts.month) || (year !== undefined && year !== workingParts.year);
808
+ const bodyIsVisible = el.classList.contains('datetime-ready');
809
+ const { isGridStyle, showMonthAndYear } = this;
810
+ if (isGridStyle && didChangeMonth && bodyIsVisible && !showMonthAndYear) {
811
+ this.animateToDate(targetValue);
812
+ }
813
+ else {
814
+ this.setWorkingParts({ month, day, year, hour: 0, minute: 0, ampm: 'am' });
815
+ }
816
+ return;
817
+ }
689
818
  /**
690
819
  * If there are multiple values, clamp to the last one.
691
820
  * This is because the last value is the one that the user
@@ -847,6 +976,27 @@ export class Datetime {
847
976
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
848
977
  return hasDatePresentation && !preferWheel;
849
978
  }
979
+ get isMultipleMode() {
980
+ return this.selectionMode === 'multiple' || (this.selectionMode === undefined && this.multiple);
981
+ }
982
+ get isRangeMode() {
983
+ return this.selectionMode === 'range';
984
+ }
985
+ /**
986
+ * Type guard: returns true if the given activeParts is a DatetimeRangeParts object.
987
+ */
988
+ isRangeParts(parts) {
989
+ return this.isRangeMode && parts !== null && typeof parts === 'object' && !Array.isArray(parts) && 'start' in parts;
990
+ }
991
+ /**
992
+ * Returns the current range parts if in range mode, or undefined otherwise.
993
+ */
994
+ get rangeParts() {
995
+ if (this.isRangeParts(this.activeParts)) {
996
+ return this.activeParts;
997
+ }
998
+ return undefined;
999
+ }
850
1000
  yearValuesChanged() {
851
1001
  this.parsedYearValues = convertToArrayOfNumbers(this.yearValues);
852
1002
  }
@@ -882,6 +1032,19 @@ export class Datetime {
882
1032
  */
883
1033
  async confirm(closeOverlay = false) {
884
1034
  const { isCalendarPicker, activeParts, preferWheel, workingParts } = this;
1035
+ /**
1036
+ * In range mode, only confirm when both start and end are selected.
1037
+ */
1038
+ if (this.isRangeMode) {
1039
+ if (!this.isRangeParts(activeParts) || !activeParts.end) {
1040
+ return;
1041
+ }
1042
+ this.setValue([convertDataToISO(activeParts.start), convertDataToISO(activeParts.end)]);
1043
+ if (closeOverlay) {
1044
+ this.closeParentOverlay(CONFIRM_ROLE);
1045
+ }
1046
+ return;
1047
+ }
885
1048
  /**
886
1049
  * We only update the value if the presentation is not a calendar picker.
887
1050
  */
@@ -917,6 +1080,22 @@ export class Datetime {
917
1080
  * @param startDate A valid [ISO-8601 string](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#date_time_string_format) to reset the datetime state to.
918
1081
  */
919
1082
  async reset(startDate) {
1083
+ if (this.isRangeMode) {
1084
+ /**
1085
+ * In range mode, reset clears the full range. If a startDate
1086
+ * is provided, the calendar navigates to that month without
1087
+ * selecting anything so the user begins a fresh selection.
1088
+ */
1089
+ this.activeParts = [];
1090
+ if (startDate) {
1091
+ const parsed = parseDate(startDate);
1092
+ if (parsed) {
1093
+ const target = Array.isArray(parsed) ? parsed[0] : parsed;
1094
+ this.setWorkingParts(target);
1095
+ }
1096
+ }
1097
+ return;
1098
+ }
920
1099
  this.processValue(startDate);
921
1100
  }
922
1101
  /**
@@ -1152,8 +1331,11 @@ export class Datetime {
1152
1331
  });
1153
1332
  }
1154
1333
  componentWillLoad() {
1155
- const { el, formatOptions, highlightedDates, multiple, presentation, preferWheel } = this;
1156
- if (multiple) {
1334
+ const { el, formatOptions, highlightedDates, multiple, selectionMode, presentation, preferWheel } = this;
1335
+ if (selectionMode === undefined && multiple) {
1336
+ printIonWarning('[ion-datetime] - The "multiple" property is deprecated. Use selectionMode="multiple" instead.', el);
1337
+ }
1338
+ if (this.isMultipleMode) {
1157
1339
  if (presentation !== 'date') {
1158
1340
  printIonWarning('[ion-datetime] - Multiple date selection is only supported for presentation="date".', el);
1159
1341
  }
@@ -1161,6 +1343,17 @@ export class Datetime {
1161
1343
  printIonWarning('[ion-datetime] - Multiple date selection is not supported with preferWheel="true".', el);
1162
1344
  }
1163
1345
  }
1346
+ if (this.isRangeMode) {
1347
+ if (presentation !== 'date') {
1348
+ printIonWarning('[ion-datetime] - Range selection is only supported for presentation="date".', el);
1349
+ }
1350
+ if (preferWheel) {
1351
+ printIonWarning('[ion-datetime] - Range selection is not supported with preferWheel="true".', el);
1352
+ }
1353
+ }
1354
+ if (selectionMode !== undefined && multiple) {
1355
+ printIonWarning('[ion-datetime] - Both "selectionMode" and "multiple" are set. "selectionMode" takes precedence.', el);
1356
+ }
1164
1357
  if (highlightedDates !== undefined) {
1165
1358
  if (presentation !== 'date' && presentation !== 'date-time' && presentation !== 'time-date') {
1166
1359
  printIonWarning('[ion-datetime] - The highlightedDates property is only supported with the date, date-time, and time-date presentations.', el);
@@ -1207,6 +1400,7 @@ export class Datetime {
1207
1400
  * are rendered independently of presentation.
1208
1401
  */
1209
1402
  renderFooter() {
1403
+ const theme = getIonTheme(this);
1210
1404
  const { disabled, readonly, showDefaultButtons, showClearButton } = this;
1211
1405
  /**
1212
1406
  * The cancel, clear, and confirm buttons
@@ -1214,6 +1408,13 @@ export class Datetime {
1214
1408
  * is disabled or readonly.
1215
1409
  */
1216
1410
  const isButtonDisabled = disabled || readonly;
1411
+ /**
1412
+ * In range mode, the confirm button should be disabled until
1413
+ * both a start and end date have been selected.
1414
+ */
1415
+ const isRangeIncomplete = this.isRangeMode && (!this.isRangeParts(this.activeParts) || !this.activeParts.end);
1416
+ const isConfirmDisabled = isButtonDisabled || isRangeIncomplete;
1417
+ const confirmFill = theme === 'ionic' ? 'solid' : undefined;
1217
1418
  const hasSlottedButtons = this.el.querySelector('[slot="buttons"]') !== null;
1218
1419
  if (!hasSlottedButtons && !showDefaultButtons && !showClearButton) {
1219
1420
  return;
@@ -1232,7 +1433,7 @@ export class Datetime {
1232
1433
  return (h("div", { class: "datetime-footer" }, h("div", { class: "datetime-buttons" }, h("div", { class: {
1233
1434
  ['datetime-action-buttons']: true,
1234
1435
  ['has-clear-button']: this.showClearButton,
1235
- } }, h("slot", { name: "buttons" }, h("ion-buttons", null, showDefaultButtons && (h("ion-button", { id: "cancel-button", color: this.color, onClick: () => this.cancel(true), disabled: isButtonDisabled }, this.cancelText)), h("div", { class: "datetime-action-buttons-container" }, showClearButton && (h("ion-button", { id: "clear-button", color: this.color, onClick: () => clearButtonClick(), disabled: isButtonDisabled }, this.clearText)), showDefaultButtons && (h("ion-button", { id: "confirm-button", color: this.color, onClick: () => this.confirm(true), disabled: isButtonDisabled }, this.doneText)))))))));
1436
+ } }, h("slot", { name: "buttons" }, showDefaultButtons && (h("ion-button", { id: "cancel-button", color: this.color, onClick: () => this.cancel(true), disabled: isButtonDisabled }, this.cancelText)), h("div", { class: "datetime-action-buttons-container" }, showClearButton && (h("ion-button", { id: "clear-button", color: this.color, onClick: () => clearButtonClick(), disabled: isButtonDisabled }, this.clearText)), showDefaultButtons && (h("ion-button", { id: "confirm-button", fill: confirmFill, color: this.color, onClick: () => this.confirm(true), disabled: isConfirmDisabled }, this.doneText))))))));
1236
1437
  }
1237
1438
  /**
1238
1439
  * Wheel picker render methods
@@ -1421,8 +1622,8 @@ export class Datetime {
1421
1622
  ...this.workingParts,
1422
1623
  month: ev.detail.value,
1423
1624
  });
1424
- // Month wheel is navigation-only in multi-select mode as a fix for https://github.com/ionic-team/ionic-framework/issues/29673
1425
- if (!this.multiple) {
1625
+ // Month wheel is navigation-only in multi-select and range modes as a fix for https://github.com/ionic-team/ionic-framework/issues/29673
1626
+ if (!this.isMultipleMode && !this.isRangeMode) {
1426
1627
  this.setActiveParts({
1427
1628
  ...activePart,
1428
1629
  month: ev.detail.value,
@@ -1443,8 +1644,8 @@ export class Datetime {
1443
1644
  ...this.workingParts,
1444
1645
  year: ev.detail.value,
1445
1646
  });
1446
- // Year wheel is navigation-only in multi-select mode as a fix for https://github.com/ionic-team/ionic-framework/issues/29673
1447
- if (!this.multiple) {
1647
+ // Year wheel is navigation-only in multi-select and range modes as a fix for https://github.com/ionic-team/ionic-framework/issues/29673
1648
+ if (!this.isMultipleMode && !this.isRangeMode) {
1448
1649
  this.setActiveParts({
1449
1650
  ...activePart,
1450
1651
  year: ev.detail.value,
@@ -1546,10 +1747,8 @@ export class Datetime {
1546
1747
  /**
1547
1748
  * Grid Render Methods
1548
1749
  */
1549
- renderCalendarHeader(mode) {
1550
- const { disabled } = this;
1551
- const expandedIcon = mode === 'ios' ? chevronDown : caretUpSharp;
1552
- const collapsedIcon = mode === 'ios' ? chevronForward : caretDownSharp;
1750
+ renderCalendarHeader(theme) {
1751
+ const { disabled, datetimeNextIcon, datetimePreviousIcon, datetimeCollapsedIcon, datetimeExpandedIcon } = this;
1553
1752
  const prevMonthDisabled = disabled || isPrevMonthDisabled(this.workingParts, this.minParts, this.maxParts);
1554
1753
  const nextMonthDisabled = disabled || isNextMonthDisabled(this.workingParts, this.maxParts);
1555
1754
  const hostDir = isRTL(this.el) ? 'rtl' : 'ltr';
@@ -1557,7 +1756,7 @@ export class Datetime {
1557
1756
  'calendar-month-year-toggle': true,
1558
1757
  'ion-activatable': true,
1559
1758
  'ion-focusable': true,
1560
- }, part: "month-year-button", disabled: disabled, "aria-label": this.showMonthAndYear ? 'Hide year picker' : 'Show year picker', onClick: () => this.toggleMonthAndYearView() }, h("span", { id: "toggle-wrapper" }, getMonthAndYear(this.locale, this.workingParts), h("ion-icon", { dir: hostDir, "aria-hidden": "true", icon: this.showMonthAndYear ? expandedIcon : collapsedIcon, lazy: false, flipRtl: true })), mode === 'md' && h("ion-ripple-effect", null))), h("div", { class: "calendar-next-prev" }, h("ion-buttons", null, h("ion-button", { "aria-label": "Previous month", disabled: prevMonthDisabled, onClick: () => this.prevMonth(), part: "navigation-button previous-button" }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronBack, lazy: false, flipRtl: true })), h("ion-button", { "aria-label": "Next month", disabled: nextMonthDisabled, onClick: () => this.nextMonth(), part: "navigation-button next-button" }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronForward, lazy: false, flipRtl: true }))))), h("div", { class: "calendar-days-of-week", "aria-hidden": "true", part: "calendar-days-of-week" }, getDaysOfWeek(this.locale, mode, this.firstDayOfWeek % 7).map((d) => {
1759
+ }, part: "month-year-button", disabled: disabled, "aria-label": this.showMonthAndYear ? 'Hide year picker' : 'Show year picker', onClick: () => this.toggleMonthAndYearView() }, h("span", { id: "toggle-wrapper" }, getMonthAndYear(this.locale, this.workingParts), theme !== 'ionic' && (h("ion-icon", { dir: hostDir, "aria-hidden": "true", icon: this.showMonthAndYear ? datetimeExpandedIcon : datetimeCollapsedIcon, lazy: false, flipRtl: true }))), theme === 'md' && h("ion-ripple-effect", null))), h("div", { class: "calendar-next-prev" }, h("ion-button", { "aria-label": "Previous month", disabled: prevMonthDisabled, onClick: () => this.prevMonth(), part: "navigation-button previous-button" }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: datetimePreviousIcon, lazy: false, flipRtl: true })), h("ion-button", { "aria-label": "Next month", disabled: nextMonthDisabled, onClick: () => this.nextMonth(), part: "navigation-button next-button" }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: datetimeNextIcon, lazy: false, flipRtl: true })))), h("div", { class: "calendar-days-of-week", "aria-hidden": "true", part: "calendar-days-of-week" }, getDaysOfWeek(this.locale, theme, this.firstDayOfWeek % 7).map((d) => {
1561
1760
  return h("div", { class: "day-of-week" }, d);
1562
1761
  }))));
1563
1762
  }
@@ -1590,7 +1789,7 @@ export class Datetime {
1590
1789
  'calendar-month-disabled': !isWorkingMonth && swipeDisabled,
1591
1790
  } }, h("div", { class: "calendar-month-grid" }, getDaysOfMonth(month, year, this.firstDayOfWeek % 7, this.showAdjacentDays).map((dateObject, index) => {
1592
1791
  const { day, dayOfWeek, isAdjacentDay } = dateObject;
1593
- const { el, highlightedDates, isDateEnabled, multiple, showAdjacentDays } = this;
1792
+ const { el, highlightedDates, isDateEnabled, showAdjacentDays } = this;
1594
1793
  let _month = month;
1595
1794
  let _year = year;
1596
1795
  if (showAdjacentDays && isAdjacentDay && day !== null) {
@@ -1619,7 +1818,7 @@ export class Datetime {
1619
1818
  }
1620
1819
  const referenceParts = { month: _month, day, year: _year, isAdjacentDay };
1621
1820
  const isCalendarPadding = day === null;
1622
- const { isActive, isToday, ariaLabel, ariaSelected, disabled: isDayDisabled, text, } = getCalendarDayState(this.locale, referenceParts, this.activeParts, this.todayParts, this.minParts, this.maxParts, this.parsedDayValues);
1821
+ const { isActive, isToday, ariaLabel, ariaSelected, disabled: isDayDisabled, isRangeStart, isRangeEnd, isInRange, text, } = getCalendarDayState(this.locale, referenceParts, this.isRangeParts(this.activeParts) ? [] : this.activeParts, this.todayParts, this.minParts, this.maxParts, this.parsedDayValues, this.rangeParts);
1623
1822
  const dateIsoString = convertDataToISO(referenceParts);
1624
1823
  let isCalDayDisabled = isCalMonthDisabled || isDayDisabled;
1625
1824
  if (!isCalDayDisabled && isDateEnabled !== undefined) {
@@ -1642,24 +1841,60 @@ export class Datetime {
1642
1841
  */
1643
1842
  const isCalDayConstrained = isCalDayDisabled && isDatetimeDisabled;
1644
1843
  const isButtonDisabled = isCalDayDisabled || isDatetimeDisabled;
1844
+ /**
1845
+ * Determine if this day is part of the range selection.
1846
+ * Range styling takes priority over highlightedDates.
1847
+ */
1848
+ const isPartOfRange = isRangeStart || isRangeEnd || isInRange;
1645
1849
  let dateStyle = undefined;
1646
1850
  /**
1647
- * Custom highlight styles should not override the style for selected dates,
1648
- * nor apply to "filler days" at the start of the grid.
1851
+ * Custom highlight styles should not override the style for selected dates
1852
+ * or range selection, nor apply to "filler days" at the start of the grid.
1649
1853
  */
1650
- if (highlightedDates !== undefined && !isActive && day !== null && !isAdjacentDay) {
1854
+ if (highlightedDates !== undefined && !isActive && !isPartOfRange && day !== null && !isAdjacentDay) {
1651
1855
  dateStyle = getHighlightStyles(highlightedDates, dateIsoString, el);
1652
1856
  }
1653
1857
  let dateParts = undefined;
1654
1858
  // "Filler days" at the beginning of the grid should not get the calendar day
1655
1859
  // CSS parts added to them
1656
1860
  if (!isCalendarPadding && !isAdjacentDay) {
1657
- dateParts = `calendar-day${isActive ? ' active' : ''}${isToday ? ' today' : ''}${isCalDayDisabled ? ' disabled' : ''}`;
1861
+ dateParts = `calendar-day${isActive || isRangeStart || isRangeEnd ? ' active' : ''}${isToday ? ' today' : ''}${isCalDayDisabled ? ' disabled' : ''}${isRangeStart ? ' range-start range-selection' : ''}${isRangeEnd ? ' range-end range-selection' : ''}${isInRange ? ' range-selection' : ''}`;
1658
1862
  }
1659
1863
  else if (isAdjacentDay) {
1660
- dateParts = `calendar-day${isCalDayDisabled ? ' disabled' : ''}`;
1864
+ /**
1865
+ * Adjacent days skip 'active' and 'today' parts but still
1866
+ * include range parts so ::part() styling is consistent
1867
+ * with the visual range track rendering.
1868
+ */
1869
+ dateParts = `calendar-day${isCalDayDisabled ? ' disabled' : ''}${isRangeStart ? ' range-start range-selection' : ''}${isRangeEnd ? ' range-end range-selection' : ''}${isInRange ? ' range-selection' : ''}`;
1661
1870
  }
1662
- return (h("div", { class: "calendar-day-wrapper" }, h("button", {
1871
+ /**
1872
+ * Build the wrapper's shadow part attribute for range track styling.
1873
+ */
1874
+ const hasCompleteRange = this.rangeParts?.end !== undefined;
1875
+ const wrapperParts = isPartOfRange && hasCompleteRange && !isCalendarPadding ? 'range-track' : undefined;
1876
+ /**
1877
+ * Build the aria-label for range mode accessibility.
1878
+ */
1879
+ let rangeAriaLabel = ariaLabel;
1880
+ if (this.isRangeMode && ariaLabel) {
1881
+ if (isRangeStart) {
1882
+ rangeAriaLabel += `, ${this.startDateLabel}`;
1883
+ }
1884
+ if (isRangeEnd) {
1885
+ rangeAriaLabel += `, ${this.endDateLabel}`;
1886
+ }
1887
+ if (isInRange) {
1888
+ rangeAriaLabel += ', in range';
1889
+ }
1890
+ }
1891
+ return (h("div", { class: {
1892
+ 'calendar-day-wrapper': true,
1893
+ // A start without an end is only the circle until the range is complete
1894
+ 'calendar-day-wrapper-range-start': isRangeStart && this.rangeParts?.end !== undefined,
1895
+ 'calendar-day-wrapper-in-range': isInRange,
1896
+ 'calendar-day-wrapper-range-end': isRangeEnd,
1897
+ }, part: wrapperParts }, h("button", {
1663
1898
  // We need to use !important for the inline styles here because
1664
1899
  // otherwise the CSS shadow parts will override these styles.
1665
1900
  // See https://github.com/WICG/webcomponents/issues/847
@@ -1675,28 +1910,40 @@ export class Datetime {
1675
1910
  }, tabindex: "-1", "data-day": day, "data-month": _month, "data-year": _year, "data-index": index, "data-day-of-week": dayOfWeek, disabled: isButtonDisabled, class: {
1676
1911
  'calendar-day-padding': isCalendarPadding,
1677
1912
  'calendar-day': true,
1678
- 'calendar-day-active': isActive,
1913
+ 'calendar-day-active': isActive || isRangeStart || isRangeEnd,
1679
1914
  'calendar-day-constrained': isCalDayConstrained,
1680
1915
  'calendar-day-today': isToday,
1681
1916
  'calendar-day-adjacent-day': isAdjacentDay,
1682
- }, part: dateParts, "aria-hidden": isCalendarPadding ? 'true' : null, "aria-selected": ariaSelected, "aria-label": ariaLabel, onClick: () => {
1917
+ 'calendar-day-range-start': isRangeStart,
1918
+ 'calendar-day-range-end': isRangeEnd,
1919
+ 'calendar-day-in-range': isInRange,
1920
+ }, part: dateParts, "aria-hidden": isCalendarPadding ? 'true' : null, "aria-selected": isActive || isRangeStart || isRangeEnd ? 'true' : ariaSelected, "aria-label": rangeAriaLabel, onClick: () => {
1683
1921
  if (isCalendarPadding) {
1684
1922
  return;
1685
1923
  }
1686
1924
  if (isAdjacentDay) {
1687
1925
  // The user selected a day outside the current month. Ignore this button, as the month will be re-rendered.
1688
1926
  this.el.blur();
1689
- this.activeParts = { ...activePart, ...referenceParts };
1927
+ if (!this.isRangeMode) {
1928
+ this.activeParts = { ...activePart, ...referenceParts };
1929
+ }
1690
1930
  this.animateToDate(referenceParts);
1691
- this.confirm();
1931
+ if (this.isRangeMode) {
1932
+ this.setActiveParts(referenceParts);
1933
+ }
1934
+ else {
1935
+ this.confirm();
1936
+ }
1692
1937
  }
1693
1938
  else {
1694
1939
  this.setWorkingParts({
1695
1940
  ...this.workingParts,
1696
1941
  ...referenceParts,
1697
1942
  });
1698
- // Multiple only needs date info so we can wipe out other fields like time.
1699
- if (multiple) {
1943
+ if (this.isRangeMode) {
1944
+ this.setActiveParts(referenceParts);
1945
+ }
1946
+ else if (this.isMultipleMode) {
1700
1947
  this.setActiveParts(referenceParts, isActive);
1701
1948
  }
1702
1949
  else {
@@ -1715,8 +1962,18 @@ export class Datetime {
1715
1962
  return this.renderMonth(month, year);
1716
1963
  })));
1717
1964
  }
1718
- renderCalendar(mode) {
1719
- return (h("div", { class: "datetime-calendar", key: "datetime-calendar" }, this.renderCalendarHeader(mode), this.renderCalendarBody()));
1965
+ renderCalendar(theme) {
1966
+ return (h("div", { class: "datetime-calendar", key: "datetime-calendar" }, this.renderCalendarHeader(theme), this.renderCalendarBody(), this.isRangeMode && this.rangeParts && !this.rangeParts.end && (h("div", { "aria-live": "polite", role: "status", style: {
1967
+ position: 'absolute',
1968
+ width: '1px',
1969
+ height: '1px',
1970
+ padding: '0',
1971
+ margin: '-1px',
1972
+ overflow: 'hidden',
1973
+ clip: 'rect(0, 0, 0, 0)',
1974
+ whiteSpace: 'nowrap',
1975
+ border: '0',
1976
+ } }, `${this.startDateLabel} selected, select ${this.endDateLabel.toLowerCase()}`))));
1720
1977
  }
1721
1978
  renderTimeLabel() {
1722
1979
  const hasSlottedTimeLabel = this.el.querySelector('[slot="time-label"]') !== null;
@@ -1769,10 +2026,23 @@ export class Datetime {
1769
2026
  ];
1770
2027
  }
1771
2028
  getHeaderSelectedDateText() {
1772
- const { activeParts, formatOptions, multiple, titleSelectedDatesFormatter } = this;
2029
+ const { activeParts, formatOptions, titleSelectedDatesFormatter } = this;
1773
2030
  const isArray = Array.isArray(activeParts);
2031
+ const dateFormatOptions = formatOptions?.date ?? { weekday: 'short', month: 'short', day: 'numeric' };
1774
2032
  let headerText;
1775
- if (multiple && isArray && activeParts.length !== 1) {
2033
+ if (this.isRangeMode) {
2034
+ headerText = this.getRangeHeaderText(formatOptions?.date ?? { month: 'short', day: 'numeric' });
2035
+ if (titleSelectedDatesFormatter !== undefined) {
2036
+ try {
2037
+ const rangeValues = this.getRangeValueArray();
2038
+ headerText = titleSelectedDatesFormatter(rangeValues);
2039
+ }
2040
+ catch (e) {
2041
+ printIonError('[ion-datetime] - Exception in provided `titleSelectedDatesFormatter`:', e);
2042
+ }
2043
+ }
2044
+ }
2045
+ else if (this.isMultipleMode && isArray && activeParts.length !== 1) {
1776
2046
  headerText = `${activeParts.length} days`; // default/fallback for multiple selection
1777
2047
  if (titleSelectedDatesFormatter !== undefined) {
1778
2048
  try {
@@ -1785,10 +2055,37 @@ export class Datetime {
1785
2055
  }
1786
2056
  else {
1787
2057
  // for exactly 1 day selected (multiple set or not), show a formatted version of that
1788
- headerText = getLocalizedDateTime(this.locale, this.getActivePartsWithFallback(), formatOptions?.date ?? { weekday: 'short', month: 'short', day: 'numeric' });
2058
+ headerText = getLocalizedDateTime(this.locale, this.getActivePartsWithFallback(), dateFormatOptions);
1789
2059
  }
1790
2060
  return headerText;
1791
2061
  }
2062
+ /**
2063
+ * Returns the formatted range header text.
2064
+ * Shows "Start date - End date" with placeholders from startDateLabel/endDateLabel.
2065
+ */
2066
+ getRangeHeaderText(dateFormatOptions) {
2067
+ const range = this.rangeParts;
2068
+ if (!range) {
2069
+ return `${this.startDateLabel} - ${this.endDateLabel}`;
2070
+ }
2071
+ const startText = getLocalizedDateTime(this.locale, range.start, dateFormatOptions);
2072
+ const endText = range.end ? getLocalizedDateTime(this.locale, range.end, dateFormatOptions) : this.endDateLabel;
2073
+ return `${startText} - ${endText}`;
2074
+ }
2075
+ /**
2076
+ * Returns the current range value as an ISO string array for
2077
+ * titleSelectedDatesFormatter and ionChange.
2078
+ */
2079
+ getRangeValueArray() {
2080
+ const range = this.rangeParts;
2081
+ if (!range) {
2082
+ return [];
2083
+ }
2084
+ if (!range.end) {
2085
+ return [convertDataToISO(range.start)];
2086
+ }
2087
+ return [convertDataToISO(range.start), convertDataToISO(range.end)];
2088
+ }
1792
2089
  renderHeader(showExpandedHeader = true) {
1793
2090
  const hasSlottedTitle = this.el.querySelector('[slot="title"]') !== null;
1794
2091
  if (!hasSlottedTitle && !this.showDefaultTitle) {
@@ -1823,7 +2120,7 @@ export class Datetime {
1823
2120
  * Render entry point
1824
2121
  * All presentation types are rendered from here.
1825
2122
  */
1826
- renderDatetime(mode) {
2123
+ renderDatetime(theme) {
1827
2124
  const { presentation, preferWheel } = this;
1828
2125
  /**
1829
2126
  * Certain presentation types have separate grid and wheel displays.
@@ -1837,7 +2134,7 @@ export class Datetime {
1837
2134
  case 'date-time':
1838
2135
  return [
1839
2136
  this.renderHeader(),
1840
- this.renderCalendar(mode),
2137
+ this.renderCalendar(theme),
1841
2138
  this.renderCalendarViewMonthYearPicker(),
1842
2139
  this.renderTime(),
1843
2140
  this.renderFooter(),
@@ -1846,7 +2143,7 @@ export class Datetime {
1846
2143
  return [
1847
2144
  this.renderHeader(),
1848
2145
  this.renderTime(),
1849
- this.renderCalendar(mode),
2146
+ this.renderCalendar(theme),
1850
2147
  this.renderCalendarViewMonthYearPicker(),
1851
2148
  this.renderFooter(),
1852
2149
  ];
@@ -1859,24 +2156,62 @@ export class Datetime {
1859
2156
  default:
1860
2157
  return [
1861
2158
  this.renderHeader(),
1862
- this.renderCalendar(mode),
2159
+ this.renderCalendar(theme),
1863
2160
  this.renderCalendarViewMonthYearPicker(),
1864
2161
  this.renderFooter(),
1865
2162
  ];
1866
2163
  }
1867
2164
  }
2165
+ /**
2166
+ * Get the icon to use for the next icon.
2167
+ * Use the icon set in the config.
2168
+ * If no icon is set in the config, use the default icon.
2169
+ */
2170
+ get datetimeNextIcon() {
2171
+ return config.get('datetimeNextIcon', chevronForward);
2172
+ }
2173
+ /**
2174
+ * Get the icon to use for the previous icon.
2175
+ * Use the icon set in the config.
2176
+ * If no icon is set in the config, use the default icon.
2177
+ */
2178
+ get datetimePreviousIcon() {
2179
+ return config.get('datetimePreviousIcon', chevronBack);
2180
+ }
2181
+ /**
2182
+ * Get the icon to use for the show month and year icon.
2183
+ * Use the icon set in the config.
2184
+ * If no icon is set in the config, use the default icon.
2185
+ */
2186
+ get datetimeCollapsedIcon() {
2187
+ // Determine the theme and map to the default icon
2188
+ const theme = getIonTheme(this);
2189
+ const defaultIcon = theme === 'ios' ? chevronForward : caretDownSharp;
2190
+ return config.get('datetimeCollapsedIcon', defaultIcon);
2191
+ }
2192
+ /**
2193
+ * Get the icon to use for the hide month and year icon.
2194
+ * Use the icon set in the config.
2195
+ * If no icon is set in the config, use the default icon.
2196
+ */
2197
+ get datetimeExpandedIcon() {
2198
+ // Determine the theme and map to the default icon
2199
+ const theme = getIonTheme(this);
2200
+ const defaultIcon = theme === 'ios' ? chevronDown : caretUpSharp;
2201
+ return config.get('datetimeExpandedIcon', defaultIcon);
2202
+ }
1868
2203
  render() {
1869
2204
  const { name, value, disabled, el, color, readonly, showMonthAndYear, preferWheel, presentation, size, isGridStyle, } = this;
1870
- const mode = getIonMode(this);
2205
+ const theme = getIonTheme(this);
1871
2206
  const isMonthAndYearPresentation = presentation === 'year' || presentation === 'month' || presentation === 'month-year';
1872
2207
  const shouldShowMonthAndYear = showMonthAndYear || isMonthAndYearPresentation;
1873
2208
  const monthYearPickerOpen = showMonthAndYear && !isMonthAndYearPresentation;
1874
2209
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
1875
2210
  const hasWheelVariant = hasDatePresentation && preferWheel;
1876
2211
  renderHiddenInput(true, el, name, formatValue(value), disabled);
1877
- return (h(Host, { key: '465c9c22bccabc4a82ea4054c536c6086b85ddf9', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: {
2212
+ return (h(Host, { key: 'bbda23db005004f03b23e39d1e8c622e588ba7c2', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: {
1878
2213
  ...createColorClasses(color, {
1879
- [mode]: true,
2214
+ [theme]: true,
1880
2215
  ['datetime-readonly']: readonly,
1881
2216
  ['datetime-disabled']: disabled,
1882
2217
  'show-month-and-year': shouldShowMonthAndYear,
@@ -1885,21 +2220,24 @@ export class Datetime {
1885
2220
  [`datetime-size-${size}`]: true,
1886
2221
  [`datetime-prefer-wheel`]: hasWheelVariant,
1887
2222
  [`datetime-grid`]: isGridStyle,
2223
+ [`datetime-range`]: this.isRangeMode,
1888
2224
  }),
1889
- } }, h("div", { key: '9732b003440a0ca23520bc8a09e73125d88fd565', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
2225
+ } }, h("div", { key: '788e47cd7e8b022a450c7938d713a7d50d43e4f7', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(theme)));
1890
2226
  }
1891
2227
  static get is() { return "ion-datetime"; }
1892
2228
  static get encapsulation() { return "shadow"; }
1893
2229
  static get originalStyleUrls() {
1894
2230
  return {
1895
2231
  "ios": ["datetime.ios.scss"],
1896
- "md": ["datetime.md.scss"]
2232
+ "md": ["datetime.md.scss"],
2233
+ "ionic": ["datetime.ionic.scss"]
1897
2234
  };
1898
2235
  }
1899
2236
  static get styleUrls() {
1900
2237
  return {
1901
2238
  "ios": ["datetime.ios.css"],
1902
- "md": ["datetime.md.css"]
2239
+ "md": ["datetime.md.css"],
2240
+ "ionic": ["datetime.ionic.css"]
1903
2241
  };
1904
2242
  }
1905
2243
  static get properties() {
@@ -2346,7 +2684,10 @@ export class Datetime {
2346
2684
  "required": false,
2347
2685
  "optional": false,
2348
2686
  "docs": {
2349
- "tags": [],
2687
+ "tags": [{
2688
+ "name": "deprecated",
2689
+ "text": "Use `selectionMode=\"multiple\"` instead."
2690
+ }],
2350
2691
  "text": "If `true`, multiple dates can be selected at once. Only\napplies to `presentation=\"date\"` and `preferWheel=\"false\"`."
2351
2692
  },
2352
2693
  "getter": false,
@@ -2355,6 +2696,65 @@ export class Datetime {
2355
2696
  "attribute": "multiple",
2356
2697
  "defaultValue": "false"
2357
2698
  },
2699
+ "selectionMode": {
2700
+ "type": "string",
2701
+ "mutable": false,
2702
+ "complexType": {
2703
+ "original": "'multiple' | 'range'",
2704
+ "resolved": "\"multiple\" | \"range\" | undefined",
2705
+ "references": {}
2706
+ },
2707
+ "required": false,
2708
+ "optional": true,
2709
+ "docs": {
2710
+ "tags": [],
2711
+ "text": "Controls the date selection behavior.\n`'multiple'` enables selecting multiple individual dates.\n`'range'` enables selecting a start and end date range.\nWhen unset, single-date selection is used.\n\nRange selection only works with `presentation=\"date\"` and `preferWheel=\"false\"`."
2712
+ },
2713
+ "getter": false,
2714
+ "setter": false,
2715
+ "reflect": false,
2716
+ "attribute": "selection-mode"
2717
+ },
2718
+ "startDateLabel": {
2719
+ "type": "string",
2720
+ "mutable": false,
2721
+ "complexType": {
2722
+ "original": "string",
2723
+ "resolved": "string",
2724
+ "references": {}
2725
+ },
2726
+ "required": false,
2727
+ "optional": false,
2728
+ "docs": {
2729
+ "tags": [],
2730
+ "text": "The text shown in the datetime header when the start of the range\nis empty, also used by screen readers to announce the start date.\nOnly applies when `selectionMode=\"range\"`."
2731
+ },
2732
+ "getter": false,
2733
+ "setter": false,
2734
+ "reflect": false,
2735
+ "attribute": "start-date-label",
2736
+ "defaultValue": "'Start date'"
2737
+ },
2738
+ "endDateLabel": {
2739
+ "type": "string",
2740
+ "mutable": false,
2741
+ "complexType": {
2742
+ "original": "string",
2743
+ "resolved": "string",
2744
+ "references": {}
2745
+ },
2746
+ "required": false,
2747
+ "optional": false,
2748
+ "docs": {
2749
+ "tags": [],
2750
+ "text": "The text shown in the datetime header when the end of the range\nis empty, also used by screen readers to announce the end date.\nOnly applies when `selectionMode=\"range\"`."
2751
+ },
2752
+ "getter": false,
2753
+ "setter": false,
2754
+ "reflect": false,
2755
+ "attribute": "end-date-label",
2756
+ "defaultValue": "'End date'"
2757
+ },
2358
2758
  "highlightedDates": {
2359
2759
  "type": "unknown",
2360
2760
  "mutable": false,
@@ -2713,6 +3113,12 @@ export class Datetime {
2713
3113
  "Promise": {
2714
3114
  "location": "global",
2715
3115
  "id": "global::Promise"
3116
+ },
3117
+ "DatetimeParts": {
3118
+ "location": "import",
3119
+ "path": "./datetime-interface",
3120
+ "id": "src/components/datetime/datetime-interface.ts::DatetimeParts",
3121
+ "referenceLocation": "DatetimeParts"
2716
3122
  }
2717
3123
  },
2718
3124
  "return": "Promise<void>"