@ionic/core 8.7.16-dev.11766771281.16c74618 → 8.7.16-dev.11767018329.15d3ae73

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 (937) hide show
  1. package/components/action-sheet.js +11 -15
  2. package/components/alert.js +11 -14
  3. package/components/animation.js +1 -1
  4. package/components/backdrop.js +6 -9
  5. package/components/button.js +10 -41
  6. package/components/buttons.js +8 -11
  7. package/components/capacitor.js +1 -1
  8. package/components/checkbox.js +12 -31
  9. package/components/content.js +12 -14
  10. package/components/data.js +5 -5
  11. package/components/focus-visible.js +1 -23
  12. package/components/framework-delegate.js +1 -3
  13. package/components/hardware-back-button.js +115 -0
  14. package/components/header.js +22 -34
  15. package/components/helpers.js +3 -42
  16. package/components/index5.js +8 -8
  17. package/components/index6.js +1 -1
  18. package/components/index7.js +150 -111
  19. package/components/index8.js +111 -150
  20. package/components/index9.js +7 -0
  21. package/components/input-shims.js +2 -2
  22. package/components/input.utils.js +1 -1
  23. package/components/ion-accordion-group.js +5 -23
  24. package/components/ion-accordion.js +21 -32
  25. package/components/ion-app.js +77 -12
  26. package/components/ion-avatar.js +5 -58
  27. package/components/ion-back-button.js +19 -27
  28. package/components/ion-badge.js +9 -73
  29. package/components/ion-breadcrumb.js +10 -43
  30. package/components/ion-breadcrumbs.js +5 -8
  31. package/components/ion-card-content.js +7 -10
  32. package/components/ion-card-header.js +6 -9
  33. package/components/ion-card-subtitle.js +5 -8
  34. package/components/ion-card-title.js +5 -8
  35. package/components/ion-card.js +9 -21
  36. package/components/ion-chip.js +8 -53
  37. package/components/ion-col.js +50 -51
  38. package/components/ion-datetime-button.js +5 -8
  39. package/components/ion-datetime.js +21 -98
  40. package/components/ion-fab-button.js +15 -31
  41. package/components/ion-fab-list.js +5 -5
  42. package/components/ion-fab.js +6 -6
  43. package/components/ion-footer.js +13 -18
  44. package/components/ion-grid.js +5 -5
  45. package/components/ion-img.js +2 -5
  46. package/components/ion-infinite-scroll-content.js +8 -11
  47. package/components/ion-infinite-scroll.js +6 -78
  48. package/components/ion-input-otp.js +6 -9
  49. package/components/ion-input-password-toggle.js +13 -51
  50. package/components/ion-input.js +28 -120
  51. package/components/ion-item-divider.js +5 -8
  52. package/components/ion-item-group.js +5 -8
  53. package/components/ion-item-option.js +9 -36
  54. package/components/ion-item-options.js +7 -10
  55. package/components/ion-item-sliding.js +5 -5
  56. package/components/ion-loading.js +9 -12
  57. package/components/ion-menu-button.js +10 -26
  58. package/components/ion-menu-toggle.js +5 -5
  59. package/components/ion-menu.js +8 -10
  60. package/components/ion-nav-link.js +1 -1
  61. package/components/ion-nav.js +5 -7
  62. package/components/ion-note.js +5 -8
  63. package/components/ion-picker-legacy.js +7 -7
  64. package/components/ion-progress-bar.js +7 -25
  65. package/components/ion-range.js +9 -12
  66. package/components/ion-refresher-content.js +8 -23
  67. package/components/ion-refresher.js +7 -10
  68. package/components/ion-reorder-group.js +5 -5
  69. package/components/ion-reorder.js +5 -30
  70. package/components/ion-router-link.js +6 -6
  71. package/components/ion-router-outlet.js +4 -4
  72. package/components/ion-row.js +3 -6
  73. package/components/ion-searchbar.js +23 -137
  74. package/components/ion-segment-button.js +7 -10
  75. package/components/ion-segment-content.js +1 -1
  76. package/components/ion-segment-view.js +2 -5
  77. package/components/ion-segment.js +7 -10
  78. package/components/ion-select-option.js +2 -5
  79. package/components/ion-select.js +33 -117
  80. package/components/ion-skeleton-text.js +5 -5
  81. package/components/ion-split-pane.js +8 -11
  82. package/components/ion-tab-bar.js +9 -39
  83. package/components/ion-tab-button.js +8 -35
  84. package/components/ion-tab.js +2 -2
  85. package/components/ion-tabs.js +2 -2
  86. package/components/ion-text.js +5 -5
  87. package/components/ion-textarea.js +11 -52
  88. package/components/ion-thumbnail.js +2 -5
  89. package/components/ion-toast.js +12 -37
  90. package/components/ion-toggle.js +17 -74
  91. package/components/ionic-global.js +15 -364
  92. package/components/ios.transition.js +0 -1
  93. package/components/item.js +15 -47
  94. package/components/keyboard-controller.js +2 -4
  95. package/components/label.js +5 -8
  96. package/components/list-header.js +7 -10
  97. package/components/list.js +6 -27
  98. package/components/modal.js +149 -51
  99. package/components/notch-controller.js +1 -1
  100. package/components/overlays.js +4 -3
  101. package/components/picker-column-option.js +5 -8
  102. package/components/picker-column.js +8 -7
  103. package/components/picker-column2.js +4 -4
  104. package/components/picker.js +4 -7
  105. package/components/popover.js +9 -12
  106. package/components/radio-group.js +7 -15
  107. package/components/radio.js +8 -11
  108. package/components/ripple-effect.js +7 -15
  109. package/components/select-modal.js +5 -12
  110. package/components/select-popover.js +2 -8
  111. package/components/spinner.js +8 -31
  112. package/components/status-tap.js +1 -1
  113. package/components/title.js +7 -10
  114. package/components/toolbar.js +9 -153
  115. package/css/core.css +1 -1
  116. package/css/core.css.map +1 -1
  117. package/css/display.css +1 -1
  118. package/css/display.css.map +1 -1
  119. package/css/flex-utils.css +1 -1
  120. package/css/flex-utils.css.map +1 -1
  121. package/css/float-elements.css.map +1 -1
  122. package/css/global.bundle.css.map +1 -1
  123. package/css/ionic-swiper.css +1 -1
  124. package/css/ionic-swiper.css.map +1 -1
  125. package/css/ionic.bundle.css +1 -1
  126. package/css/ionic.bundle.css.map +1 -1
  127. package/css/normalize.css.map +1 -1
  128. package/css/padding.css.map +1 -1
  129. package/css/palettes/dark.always.css.map +1 -1
  130. package/css/palettes/dark.class.css.map +1 -1
  131. package/css/palettes/dark.system.css.map +1 -1
  132. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  133. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  134. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  135. package/css/palettes/high-contrast.always.css.map +1 -1
  136. package/css/palettes/high-contrast.class.css.map +1 -1
  137. package/css/palettes/high-contrast.system.css.map +1 -1
  138. package/css/structure.css.map +1 -1
  139. package/css/text-alignment.css.map +1 -1
  140. package/css/text-transformation.css.map +1 -1
  141. package/css/typography.css.map +1 -1
  142. package/css/utils.bundle.css +1 -1
  143. package/css/utils.bundle.css.map +1 -1
  144. package/dist/cjs/{animation-CD5nuON9.js → animation-Bt3H9L1C.js} +2 -2
  145. package/dist/cjs/{app-globals-CoW5jvJu.js → app-globals-Ciccnk9_.js} +1 -1
  146. package/dist/cjs/{button-active-Dxyabn6T.js → button-active-CMc8cD90.js} +1 -1
  147. package/dist/cjs/{capacitor-C8raJ_tU.js → capacitor-DmA66EwP.js} +3 -3
  148. package/dist/cjs/{data-MoL8Ckx5.js → data-JwZKaIQB.js} +5 -5
  149. package/dist/{esm/focus-visible-vXpMhGrs.js → cjs/focus-visible-CCvKiLh3.js} +3 -23
  150. package/dist/cjs/{framework-delegate-Bwdk9vFS.js → framework-delegate-DMJRBuDi.js} +2 -4
  151. package/dist/cjs/{haptic-BU6_qLwg.js → haptic-ClPPQ_PS.js} +1 -1
  152. package/dist/cjs/hardware-back-button-VCK4V3mG.js +121 -0
  153. package/dist/cjs/{helpers-DnouLczu.js → helpers-DrTqNghc.js} +2 -41
  154. package/dist/cjs/{index-JtyffOXl.js → index-094mMFB-.js} +3 -3
  155. package/dist/cjs/{index-CADY2xEW.js → index-C534ULug.js} +7 -8
  156. package/dist/cjs/{index-DUoP_H1L.js → index-CO6eryBo.js} +1 -1
  157. package/dist/cjs/index-DkNv4J_i.js +10 -0
  158. package/dist/cjs/{index-C4_FN9N0.js → index-DrMUZJj6.js} +15 -15
  159. package/dist/cjs/index.cjs.js +11 -10
  160. package/dist/cjs/{input-shims-C-YCyXjg.js → input-shims-CW0KUFTQ.js} +16 -17
  161. package/dist/cjs/{input.utils-C3-BwdV0.js → input.utils-B_QROI2g.js} +5 -5
  162. package/dist/cjs/ion-accordion_2.cjs.entry.js +26 -55
  163. package/dist/cjs/ion-action-sheet.cjs.entry.js +20 -23
  164. package/dist/cjs/ion-alert.cjs.entry.js +20 -22
  165. package/dist/cjs/ion-app_8.cjs.entry.js +150 -249
  166. package/dist/cjs/ion-avatar_3.cjs.entry.js +11 -123
  167. package/dist/cjs/ion-back-button.cjs.entry.js +19 -28
  168. package/dist/cjs/ion-backdrop.cjs.entry.js +6 -9
  169. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +15 -51
  170. package/dist/cjs/ion-button_2.cjs.entry.js +11 -43
  171. package/dist/cjs/ion-card_5.cjs.entry.js +29 -53
  172. package/dist/cjs/ion-checkbox.cjs.entry.js +13 -31
  173. package/dist/cjs/ion-chip.cjs.entry.js +7 -48
  174. package/dist/cjs/ion-col_3.cjs.entry.js +56 -53
  175. package/dist/cjs/ion-datetime-button.cjs.entry.js +7 -11
  176. package/dist/cjs/ion-datetime_3.cjs.entry.js +38 -113
  177. package/dist/cjs/ion-fab_3.cjs.entry.js +25 -41
  178. package/dist/cjs/ion-img.cjs.entry.js +3 -7
  179. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +14 -89
  180. package/dist/cjs/ion-input-otp.cjs.entry.js +7 -11
  181. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +12 -50
  182. package/dist/cjs/ion-input.cjs.entry.js +30 -120
  183. package/dist/cjs/ion-item-option_3.cjs.entry.js +19 -48
  184. package/dist/cjs/ion-item_8.cjs.entry.js +46 -113
  185. package/dist/cjs/ion-loading.cjs.entry.js +15 -17
  186. package/dist/cjs/ion-menu_3.cjs.entry.js +26 -44
  187. package/dist/cjs/ion-modal.cjs.entry.js +198 -99
  188. package/dist/cjs/ion-nav_2.cjs.entry.js +10 -13
  189. package/dist/cjs/ion-picker-column-option.cjs.entry.js +6 -10
  190. package/dist/cjs/ion-picker-column.cjs.entry.js +12 -12
  191. package/dist/cjs/ion-picker.cjs.entry.js +5 -9
  192. package/dist/cjs/ion-popover.cjs.entry.js +16 -18
  193. package/dist/cjs/ion-progress-bar.cjs.entry.js +7 -25
  194. package/dist/cjs/ion-radio_2.cjs.entry.js +14 -24
  195. package/dist/cjs/ion-range.cjs.entry.js +10 -14
  196. package/dist/cjs/ion-refresher_2.cjs.entry.js +18 -36
  197. package/dist/cjs/ion-reorder_2.cjs.entry.js +12 -36
  198. package/dist/cjs/ion-ripple-effect.cjs.entry.js +6 -14
  199. package/dist/cjs/ion-route_4.cjs.entry.js +7 -8
  200. package/dist/cjs/ion-searchbar.cjs.entry.js +21 -134
  201. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  202. package/dist/cjs/ion-segment-view.cjs.entry.js +2 -5
  203. package/dist/cjs/ion-segment_2.cjs.entry.js +14 -21
  204. package/dist/cjs/ion-select-modal.cjs.entry.js +9 -15
  205. package/dist/cjs/ion-select_3.cjs.entry.js +38 -129
  206. package/dist/cjs/ion-spinner.cjs.entry.js +6 -28
  207. package/dist/cjs/ion-split-pane.cjs.entry.js +8 -11
  208. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +21 -75
  209. package/dist/cjs/ion-tab_2.cjs.entry.js +6 -7
  210. package/dist/cjs/ion-text.cjs.entry.js +5 -5
  211. package/dist/cjs/ion-textarea.cjs.entry.js +15 -55
  212. package/dist/cjs/ion-toast.cjs.entry.js +43 -66
  213. package/dist/cjs/ion-toggle.cjs.entry.js +21 -78
  214. package/dist/cjs/ionic-global-HMVqOFGO.js +151 -0
  215. package/dist/cjs/ionic.cjs.js +3 -3
  216. package/dist/cjs/{ios.transition-Dt4GT8w5.js → ios.transition-BOt_uW73.js} +4 -6
  217. package/dist/cjs/{keyboard-BlrG3xPK.js → keyboard-UuAS4D_9.js} +1 -1
  218. package/dist/cjs/{keyboard-controller-O8n0dTQz.js → keyboard-controller-GXBiBRKS.js} +9 -11
  219. package/dist/cjs/{keyboard-B8HJHbg3.js → keyboard-hHzlEQpk.js} +3 -4
  220. package/dist/cjs/loader.cjs.js +3 -3
  221. package/dist/cjs/{md.transition-BolcQzNP.js → md.transition-Dt968VXB.js} +4 -5
  222. package/dist/cjs/{notch-controller-BE80VRju.js → notch-controller-Bzqhjm4f.js} +4 -4
  223. package/dist/cjs/{overlays-CRSQCKrz.js → overlays-B2b-TTbl.js} +9 -8
  224. package/dist/cjs/{status-tap-e-hyosXV.js → status-tap-g0sWWkXk.js} +2 -3
  225. package/dist/cjs/{swipe-back-CR060nOX.js → swipe-back-BIayeNOD.js} +1 -2
  226. package/dist/collection/collection-manifest.json +0 -1
  227. package/dist/collection/components/accordion/accordion.ios.css +58 -73
  228. package/dist/collection/components/accordion/accordion.js +26 -36
  229. package/dist/collection/components/accordion/accordion.md.css +59 -67
  230. package/dist/collection/components/accordion-group/accordion-group.ios.css +4 -16
  231. package/dist/collection/components/accordion-group/accordion-group.js +8 -44
  232. package/dist/collection/components/accordion-group/accordion-group.md.css +4 -22
  233. package/dist/collection/components/action-sheet/action-sheet.ios.css +6 -18
  234. package/dist/collection/components/action-sheet/action-sheet.js +13 -17
  235. package/dist/collection/components/action-sheet/action-sheet.md.css +5 -17
  236. package/dist/collection/components/alert/alert.ios.css +1 -19
  237. package/dist/collection/components/alert/alert.js +13 -16
  238. package/dist/collection/components/alert/alert.md.css +1 -19
  239. package/dist/collection/components/app/app.js +78 -15
  240. package/dist/collection/components/avatar/avatar.ios.css +33 -7
  241. package/dist/collection/components/avatar/avatar.js +4 -120
  242. package/dist/collection/components/avatar/avatar.md.css +0 -51
  243. package/dist/collection/components/back-button/back-button.ios.css +48 -60
  244. package/dist/collection/components/back-button/back-button.js +19 -27
  245. package/dist/collection/components/back-button/back-button.md.css +48 -60
  246. package/dist/collection/components/backdrop/backdrop.ios.css +19 -56
  247. package/dist/collection/components/backdrop/backdrop.js +6 -12
  248. package/dist/collection/components/backdrop/backdrop.md.css +19 -56
  249. package/dist/collection/components/badge/badge.ios.css +12 -139
  250. package/dist/collection/components/badge/badge.js +9 -145
  251. package/dist/collection/components/badge/badge.md.css +12 -123
  252. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +8 -20
  253. package/dist/collection/components/breadcrumb/breadcrumb.js +11 -43
  254. package/dist/collection/components/breadcrumb/breadcrumb.md.css +8 -20
  255. package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +0 -6
  256. package/dist/collection/components/breadcrumbs/breadcrumbs.js +9 -11
  257. package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +0 -6
  258. package/dist/collection/components/button/button.ios.css +46 -135
  259. package/dist/collection/components/button/button.js +17 -48
  260. package/dist/collection/components/button/button.md.css +50 -126
  261. package/dist/collection/components/buttons/buttons.ios.css +7 -59
  262. package/dist/collection/components/buttons/buttons.js +9 -15
  263. package/dist/collection/components/buttons/buttons.md.css +3 -55
  264. package/dist/collection/components/card/card.ios.css +14 -65
  265. package/dist/collection/components/card/card.js +10 -41
  266. package/dist/collection/components/card/card.md.css +14 -65
  267. package/dist/collection/components/card-content/card-content.ios.css +1 -16
  268. package/dist/collection/components/card-content/card-content.js +8 -11
  269. package/dist/collection/components/card-content/card-content.md.css +1 -16
  270. package/dist/collection/components/card-header/card-header.ios.css +15 -27
  271. package/dist/collection/components/card-header/card-header.js +10 -13
  272. package/dist/collection/components/card-header/card-header.md.css +15 -27
  273. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +0 -12
  274. package/dist/collection/components/card-subtitle/card-subtitle.js +8 -11
  275. package/dist/collection/components/card-subtitle/card-subtitle.md.css +0 -12
  276. package/dist/collection/components/card-title/card-title.ios.css +0 -73
  277. package/dist/collection/components/card-title/card-title.js +8 -11
  278. package/dist/collection/components/card-title/card-title.md.css +0 -73
  279. package/dist/collection/components/checkbox/checkbox.ios.css +101 -161
  280. package/dist/collection/components/checkbox/checkbox.js +14 -70
  281. package/dist/collection/components/checkbox/checkbox.md.css +102 -162
  282. package/dist/collection/components/chip/chip.ios.css +14 -67
  283. package/dist/collection/components/chip/chip.js +8 -108
  284. package/dist/collection/components/chip/chip.md.css +14 -67
  285. package/dist/collection/components/col/col.css +4 -192
  286. package/dist/collection/components/col/col.js +61 -210
  287. package/dist/collection/components/content/content.css +2 -8
  288. package/dist/collection/components/content/content.js +11 -16
  289. package/dist/collection/components/datetime/datetime.ios.css +96 -258
  290. package/dist/collection/components/datetime/datetime.js +20 -98
  291. package/dist/collection/components/datetime/datetime.md.css +96 -258
  292. package/dist/collection/components/datetime/utils/data.js +5 -5
  293. package/dist/collection/components/datetime-button/datetime-button.ios.css +0 -6
  294. package/dist/collection/components/datetime-button/datetime-button.js +8 -11
  295. package/dist/collection/components/datetime-button/datetime-button.md.css +0 -6
  296. package/dist/collection/components/fab/fab.css +1 -25
  297. package/dist/collection/components/fab/fab.js +5 -9
  298. package/dist/collection/components/fab-button/fab-button.ios.css +6 -18
  299. package/dist/collection/components/fab-button/fab-button.js +21 -36
  300. package/dist/collection/components/fab-button/fab-button.md.css +8 -20
  301. package/dist/collection/components/fab-list/fab-list.css +0 -12
  302. package/dist/collection/components/fab-list/fab-list.js +5 -9
  303. package/dist/collection/components/footer/footer.ios.css +2 -14
  304. package/dist/collection/components/footer/footer.js +16 -21
  305. package/dist/collection/components/footer/footer.md.css +0 -12
  306. package/dist/collection/components/grid/grid.css +0 -12
  307. package/dist/collection/components/grid/grid.js +5 -9
  308. package/dist/collection/components/header/header.ios.css +10 -25
  309. package/dist/collection/components/header/header.js +19 -50
  310. package/dist/collection/components/header/header.md.css +8 -23
  311. package/dist/collection/components/header/header.utils.js +5 -5
  312. package/dist/collection/components/img/img.js +2 -8
  313. package/dist/collection/components/infinite-scroll/infinite-scroll.js +5 -100
  314. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +0 -12
  315. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +10 -16
  316. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +0 -12
  317. package/dist/collection/components/input/input.ios.css +140 -223
  318. package/dist/collection/components/input/input.js +38 -149
  319. package/dist/collection/components/input/input.md.css +212 -193
  320. package/dist/collection/components/input-otp/input-otp.ios.css +60 -102
  321. package/dist/collection/components/input-otp/input-otp.js +5 -7
  322. package/dist/collection/components/input-otp/input-otp.md.css +60 -102
  323. package/dist/collection/components/input-password-toggle/input-password-toggle.js +12 -48
  324. package/dist/collection/components/item/item.ios.css +69 -109
  325. package/dist/collection/components/item/item.js +20 -51
  326. package/dist/collection/components/item/item.md.css +68 -120
  327. package/dist/collection/components/item-divider/item-divider.ios.css +0 -18
  328. package/dist/collection/components/item-divider/item-divider.js +8 -11
  329. package/dist/collection/components/item-divider/item-divider.md.css +0 -18
  330. package/dist/collection/components/item-group/item-group.ios.css +0 -12
  331. package/dist/collection/components/item-group/item-group.js +7 -13
  332. package/dist/collection/components/item-group/item-group.md.css +0 -12
  333. package/dist/collection/components/item-option/item-option.ios.css +29 -136
  334. package/dist/collection/components/item-option/item-option.js +9 -73
  335. package/dist/collection/components/item-option/item-option.md.css +29 -136
  336. package/dist/collection/components/item-options/item-options.ios.css +34 -77
  337. package/dist/collection/components/item-options/item-options.js +7 -13
  338. package/dist/collection/components/item-options/item-options.md.css +34 -77
  339. package/dist/collection/components/item-sliding/item-sliding.css +0 -6
  340. package/dist/collection/components/item-sliding/item-sliding.js +4 -8
  341. package/dist/collection/components/label/label.ios.css +0 -18
  342. package/dist/collection/components/label/label.js +8 -11
  343. package/dist/collection/components/label/label.md.css +0 -18
  344. package/dist/collection/components/list/list.ios.css +14 -54
  345. package/dist/collection/components/list/list.js +9 -48
  346. package/dist/collection/components/list/list.md.css +16 -56
  347. package/dist/collection/components/list-header/list-header.ios.css +38 -82
  348. package/dist/collection/components/list-header/list-header.js +8 -11
  349. package/dist/collection/components/list-header/list-header.md.css +38 -82
  350. package/dist/collection/components/loading/loading.ios.css +1 -13
  351. package/dist/collection/components/loading/loading.js +11 -14
  352. package/dist/collection/components/loading/loading.md.css +1 -13
  353. package/dist/collection/components/menu/menu.ios.css +3 -15
  354. package/dist/collection/components/menu/menu.js +7 -12
  355. package/dist/collection/components/menu/menu.md.css +3 -15
  356. package/dist/collection/components/menu-button/menu-button.ios.css +14 -48
  357. package/dist/collection/components/menu-button/menu-button.js +10 -26
  358. package/dist/collection/components/menu-button/menu-button.md.css +15 -49
  359. package/dist/collection/components/menu-toggle/menu-toggle.js +5 -8
  360. package/dist/collection/components/modal/animations/sheet.js +2 -8
  361. package/dist/collection/components/modal/gestures/sheet.js +8 -10
  362. package/dist/collection/components/modal/gestures/swipe-to-close.js +3 -1
  363. package/dist/collection/components/modal/modal.ios.css +70 -178
  364. package/dist/collection/components/modal/modal.js +135 -50
  365. package/dist/collection/components/modal/modal.md.css +70 -178
  366. package/dist/collection/components/nav/nav.css +1 -7
  367. package/dist/collection/components/nav/nav.js +5 -11
  368. package/dist/collection/components/nav-link/nav-link.js +1 -5
  369. package/dist/collection/components/note/note.ios.css +0 -12
  370. package/dist/collection/components/note/note.js +8 -11
  371. package/dist/collection/components/note/note.md.css +0 -12
  372. package/dist/collection/components/picker/picker.ios.css +3 -15
  373. package/dist/collection/components/picker/picker.js +5 -8
  374. package/dist/collection/components/picker/picker.md.css +3 -15
  375. package/dist/collection/components/picker-column/picker-column.css +2 -9
  376. package/dist/collection/components/picker-column/picker-column.js +7 -8
  377. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +0 -6
  378. package/dist/collection/components/picker-column-option/picker-column-option.js +7 -13
  379. package/dist/collection/components/picker-column-option/picker-column-option.md.css +0 -6
  380. package/dist/collection/components/picker-legacy/picker.ios.css +1 -13
  381. package/dist/collection/components/picker-legacy/picker.js +6 -7
  382. package/dist/collection/components/picker-legacy/picker.md.css +1 -13
  383. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +0 -12
  384. package/dist/collection/components/picker-legacy-column/picker-column.js +4 -4
  385. package/dist/collection/components/picker-legacy-column/picker-column.md.css +0 -12
  386. package/dist/collection/components/popover/popover.ios.css +1 -13
  387. package/dist/collection/components/popover/popover.js +14 -17
  388. package/dist/collection/components/popover/popover.md.css +1 -13
  389. package/dist/collection/components/progress-bar/progress-bar.ios.css +17 -48
  390. package/dist/collection/components/progress-bar/progress-bar.js +7 -43
  391. package/dist/collection/components/progress-bar/progress-bar.md.css +17 -48
  392. package/dist/collection/components/radio/radio.ios.css +91 -134
  393. package/dist/collection/components/radio/radio.js +9 -12
  394. package/dist/collection/components/radio/radio.md.css +91 -134
  395. package/dist/collection/components/radio-group/radio-group.ios.css +23 -43
  396. package/dist/collection/components/radio-group/radio-group.js +6 -21
  397. package/dist/collection/components/radio-group/radio-group.md.css +23 -43
  398. package/dist/collection/components/range/range.ios.css +85 -128
  399. package/dist/collection/components/range/range.js +9 -12
  400. package/dist/collection/components/range/range.md.css +85 -128
  401. package/dist/collection/components/refresher/refresher.ios.css +1 -14
  402. package/dist/collection/components/refresher/refresher.js +8 -11
  403. package/dist/collection/components/refresher/refresher.md.css +2 -15
  404. package/dist/collection/components/refresher-content/refresher-content.js +7 -28
  405. package/dist/collection/components/reorder/reorder.ios.css +0 -6
  406. package/dist/collection/components/reorder/reorder.js +6 -33
  407. package/dist/collection/components/reorder/reorder.md.css +0 -6
  408. package/dist/collection/components/reorder-group/reorder-group.css +0 -6
  409. package/dist/collection/components/reorder-group/reorder-group.js +4 -8
  410. package/dist/collection/components/ripple-effect/{ripple-effect.common.css → ripple-effect.css} +1 -7
  411. package/dist/collection/components/ripple-effect/ripple-effect.js +6 -14
  412. package/dist/collection/components/route/route.js +0 -4
  413. package/dist/collection/components/router/router.js +0 -4
  414. package/dist/collection/components/router-link/router-link.css +2 -8
  415. package/dist/collection/components/router-link/router-link.js +5 -9
  416. package/dist/collection/components/router-outlet/router-outlet.css +1 -7
  417. package/dist/collection/components/router-outlet/router-outlet.js +3 -6
  418. package/dist/collection/components/row/row.css +0 -16
  419. package/dist/collection/components/row/row.js +2 -9
  420. package/dist/collection/components/searchbar/searchbar.ios.css +18 -56
  421. package/dist/collection/components/searchbar/searchbar.js +34 -181
  422. package/dist/collection/components/searchbar/searchbar.md.css +18 -56
  423. package/dist/collection/components/segment/segment.ios.css +2 -45
  424. package/dist/collection/components/segment/segment.js +8 -11
  425. package/dist/collection/components/segment/segment.md.css +2 -45
  426. package/dist/collection/components/segment-button/segment-button.ios.css +105 -146
  427. package/dist/collection/components/segment-button/segment-button.js +8 -11
  428. package/dist/collection/components/segment-button/segment-button.md.css +107 -148
  429. package/dist/collection/components/segment-content/segment-content.js +1 -1
  430. package/dist/collection/components/segment-view/segment-view.ios.css +0 -6
  431. package/dist/collection/components/segment-view/segment-view.js +4 -6
  432. package/dist/collection/components/segment-view/segment-view.md.css +0 -6
  433. package/dist/collection/components/select/select.ios.css +176 -315
  434. package/dist/collection/components/select/select.js +53 -156
  435. package/dist/collection/components/select/select.md.css +178 -331
  436. package/dist/collection/components/select-modal/select-modal.ios.css +0 -18
  437. package/dist/collection/components/select-modal/select-modal.js +4 -11
  438. package/dist/collection/components/select-modal/select-modal.md.css +3 -7
  439. package/dist/collection/components/select-option/select-option.js +2 -9
  440. package/dist/collection/components/select-popover/select-popover.ios.css +0 -18
  441. package/dist/collection/components/select-popover/select-popover.js +4 -12
  442. package/dist/collection/components/select-popover/select-popover.md.css +0 -18
  443. package/dist/collection/components/skeleton-text/skeleton-text.css +0 -6
  444. package/dist/collection/components/skeleton-text/skeleton-text.js +5 -9
  445. package/dist/collection/components/spinner/{spinner.ionic.css → spinner.css} +10 -77
  446. package/dist/collection/components/spinner/spinner.js +6 -47
  447. package/dist/collection/components/split-pane/split-pane.ios.css +2 -20
  448. package/dist/collection/components/split-pane/split-pane.js +8 -14
  449. package/dist/collection/components/split-pane/split-pane.md.css +2 -20
  450. package/dist/collection/components/tab/tab.js +2 -6
  451. package/dist/collection/components/tab-bar/tab-bar.ios.css +43 -71
  452. package/dist/collection/components/tab-bar/tab-bar.js +11 -78
  453. package/dist/collection/components/tab-bar/tab-bar.md.css +43 -71
  454. package/dist/collection/components/tab-button/tab-button.ios.css +95 -171
  455. package/dist/collection/components/tab-button/tab-button.js +9 -54
  456. package/dist/collection/components/tab-button/tab-button.md.css +93 -137
  457. package/dist/collection/components/tabs/tabs.css +1 -7
  458. package/dist/collection/components/tabs/tabs.js +1 -4
  459. package/dist/collection/components/text/text.css +0 -6
  460. package/dist/collection/components/text/text.js +6 -7
  461. package/dist/collection/components/textarea/textarea.ios.css +139 -275
  462. package/dist/collection/components/textarea/textarea.js +16 -76
  463. package/dist/collection/components/textarea/textarea.md.css +140 -288
  464. package/dist/collection/components/thumbnail/thumbnail.css +0 -6
  465. package/dist/collection/components/thumbnail/thumbnail.js +2 -9
  466. package/dist/collection/components/title/title.ios.css +4 -32
  467. package/dist/collection/components/title/title.js +7 -13
  468. package/dist/collection/components/title/title.md.css +4 -32
  469. package/dist/collection/components/toast/animations/utils.js +1 -1
  470. package/dist/collection/components/toast/toast.ios.css +45 -84
  471. package/dist/collection/components/toast/toast.js +12 -75
  472. package/dist/collection/components/toast/toast.md.css +45 -84
  473. package/dist/collection/components/toggle/toggle.ios.css +131 -247
  474. package/dist/collection/components/toggle/toggle.js +18 -73
  475. package/dist/collection/components/toggle/toggle.md.css +131 -244
  476. package/dist/collection/components/toolbar/toolbar.ios.css +47 -90
  477. package/dist/collection/components/toolbar/toolbar.js +13 -157
  478. package/dist/collection/components/toolbar/toolbar.md.css +47 -90
  479. package/dist/collection/global/ionic-global.js +13 -228
  480. package/dist/collection/utils/focus-visible.js +0 -22
  481. package/dist/collection/utils/framework-delegate.js +1 -3
  482. package/dist/collection/utils/hardware-back-button.js +0 -15
  483. package/dist/collection/utils/helpers.js +2 -42
  484. package/dist/collection/utils/keyboard/keyboard-controller.js +1 -3
  485. package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
  486. package/dist/collection/utils/menu-controller/animations/push.js +1 -2
  487. package/dist/collection/utils/menu-controller/animations/reveal.js +1 -2
  488. package/dist/collection/utils/overlays.js +1 -2
  489. package/dist/collection/utils/test/playwright/generator.js +23 -48
  490. package/dist/collection/utils/test/playwright/page/utils/goto.js +5 -14
  491. package/dist/collection/utils/test/playwright/page/utils/set-content.js +3 -26
  492. package/dist/collection/utils/transition/ios.transition.js +0 -1
  493. package/dist/docs.json +374 -8195
  494. package/dist/esm/{animation-BNuoDl-O.js → animation-Dt8bGnA-.js} +1 -1
  495. package/dist/esm/{app-globals-tX0s9Zd7.js → app-globals-BDSf8fOA.js} +1 -1
  496. package/dist/esm/{button-active-BF6GZ_yH.js → button-active-L570Swow.js} +1 -1
  497. package/dist/esm/{capacitor-pzVAlnC0.js → capacitor-CFERIeaU.js} +1 -1
  498. package/dist/esm/{data-DFCY8gnk.js → data-DCORV9FH.js} +5 -5
  499. package/dist/{cjs/focus-visible-BIj-I3-C.js → esm/focus-visible-BmVRXR1y.js} +1 -27
  500. package/dist/esm/{framework-delegate-D2mUP0WI.js → framework-delegate-BYawdMXj.js} +2 -4
  501. package/dist/esm/{haptic-bBvyATla.js → haptic-DzAMWJuk.js} +1 -1
  502. package/dist/esm/hardware-back-button-CPLxO-Ev.js +115 -0
  503. package/dist/esm/{helpers-Bsml3FcE.js → helpers-DEn3pfjm.js} +3 -42
  504. package/dist/esm/{index-BpFi2B8W.js → index-Bs3kT4bc.js} +1 -1
  505. package/dist/esm/{index-BQI9hSZP.js → index-CvDIirVx.js} +10 -10
  506. package/dist/esm/{index-COG0_eom.js → index-DV3sJJW8.js} +1 -1
  507. package/dist/esm/index-ZjP4CjeZ.js +7 -0
  508. package/dist/esm/{index-Bnw-zNoN.js → index-ceb5RaMT.js} +2 -3
  509. package/dist/esm/{index-M3l-IyxQ.js → index-r2D9DEro.js} +3 -3
  510. package/dist/esm/index.js +11 -10
  511. package/dist/esm/{input-shims-ACbgRt10.js → input-shims-DyOpfTg6.js} +5 -6
  512. package/dist/esm/{input.utils-loPnHH5H.js → input.utils-DrvTa8gz.js} +2 -2
  513. package/dist/esm/ion-accordion_2.entry.js +27 -56
  514. package/dist/esm/ion-action-sheet.entry.js +20 -23
  515. package/dist/esm/ion-alert.entry.js +20 -22
  516. package/dist/esm/ion-app_8.entry.js +151 -250
  517. package/dist/esm/ion-avatar_3.entry.js +13 -125
  518. package/dist/esm/ion-back-button.entry.js +20 -29
  519. package/dist/esm/ion-backdrop.entry.js +6 -9
  520. package/dist/esm/ion-breadcrumb_2.entry.js +17 -53
  521. package/dist/esm/ion-button_2.entry.js +11 -43
  522. package/dist/esm/ion-card_5.entry.js +29 -53
  523. package/dist/esm/ion-checkbox.entry.js +13 -31
  524. package/dist/esm/ion-chip.entry.js +8 -49
  525. package/dist/esm/ion-col_3.entry.js +57 -54
  526. package/dist/esm/ion-datetime-button.entry.js +7 -11
  527. package/dist/esm/ion-datetime_3.entry.js +40 -115
  528. package/dist/esm/ion-fab_3.entry.js +27 -43
  529. package/dist/esm/ion-img.entry.js +3 -7
  530. package/dist/esm/ion-infinite-scroll_2.entry.js +14 -89
  531. package/dist/esm/ion-input-otp.entry.js +7 -11
  532. package/dist/esm/ion-input-password-toggle.entry.js +14 -52
  533. package/dist/esm/ion-input.entry.js +32 -122
  534. package/dist/esm/ion-item-option_3.entry.js +19 -48
  535. package/dist/esm/ion-item_8.entry.js +48 -115
  536. package/dist/esm/ion-loading.entry.js +15 -17
  537. package/dist/esm/ion-menu_3.entry.js +27 -45
  538. package/dist/esm/ion-modal.entry.js +158 -59
  539. package/dist/esm/ion-nav_2.entry.js +10 -13
  540. package/dist/esm/ion-picker-column-option.entry.js +6 -10
  541. package/dist/esm/ion-picker-column.entry.js +11 -11
  542. package/dist/esm/ion-picker.entry.js +5 -9
  543. package/dist/esm/ion-popover.entry.js +16 -18
  544. package/dist/esm/ion-progress-bar.entry.js +7 -25
  545. package/dist/esm/ion-radio_2.entry.js +14 -24
  546. package/dist/esm/ion-range.entry.js +10 -14
  547. package/dist/esm/ion-refresher_2.entry.js +19 -37
  548. package/dist/esm/ion-reorder_2.entry.js +14 -38
  549. package/dist/esm/ion-ripple-effect.entry.js +6 -14
  550. package/dist/esm/ion-route_4.entry.js +7 -8
  551. package/dist/esm/ion-searchbar.entry.js +24 -137
  552. package/dist/esm/ion-segment-content.entry.js +1 -1
  553. package/dist/esm/ion-segment-view.entry.js +2 -5
  554. package/dist/esm/ion-segment_2.entry.js +14 -21
  555. package/dist/esm/ion-select-modal.entry.js +10 -16
  556. package/dist/esm/ion-select_3.entry.js +40 -131
  557. package/dist/esm/ion-spinner.entry.js +6 -28
  558. package/dist/esm/ion-split-pane.entry.js +8 -11
  559. package/dist/esm/ion-tab-bar_2.entry.js +21 -75
  560. package/dist/esm/ion-tab_2.entry.js +6 -7
  561. package/dist/esm/ion-text.entry.js +5 -5
  562. package/dist/esm/ion-textarea.entry.js +15 -55
  563. package/dist/esm/ion-toast.entry.js +17 -40
  564. package/dist/esm/ion-toggle.entry.js +22 -79
  565. package/dist/esm/ionic-global-CDrldh-5.js +146 -0
  566. package/dist/esm/ionic.js +3 -3
  567. package/dist/esm/{ios.transition-uJxJFbq8.js → ios.transition-BDzw0_Hm.js} +4 -6
  568. package/dist/esm/{keyboard-CU1vRv-b.js → keyboard-CUw4ekVy.js} +1 -1
  569. package/dist/esm/{keyboard-controller-Dplyc4OV.js → keyboard-controller-BaaVITYt.js} +3 -5
  570. package/dist/esm/{keyboard-B-HHSSYU.js → keyboard-ywgs5efA.js} +3 -4
  571. package/dist/esm/loader.js +3 -3
  572. package/dist/esm/{md.transition-Dp4NTeSh.js → md.transition-BzDYi3qq.js} +4 -5
  573. package/dist/esm/{notch-controller-BvFDmO69.js → notch-controller-BwelN_JM.js} +2 -2
  574. package/dist/esm/{overlays-B037a9Tz.js → overlays-D5YkFThA.js} +6 -5
  575. package/dist/esm/{status-tap-DXVlluKS.js → status-tap-5DQ7Fc4V.js} +2 -3
  576. package/dist/esm/{swipe-back-DNhAt9fY.js → swipe-back-BKw2CAHc.js} +1 -2
  577. package/dist/html.html-data.json +214 -2520
  578. package/dist/ionic/index.esm.js +1 -1
  579. package/dist/ionic/ionic.esm.js +1 -1
  580. package/dist/ionic/p-020af078.entry.js +4 -0
  581. package/dist/ionic/p-02d76786.entry.js +4 -0
  582. package/dist/ionic/p-074839fc.entry.js +4 -0
  583. package/dist/ionic/p-0dfa5a37.entry.js +4 -0
  584. package/dist/ionic/p-11518b31.entry.js +4 -0
  585. package/dist/ionic/p-11aa58d6.entry.js +4 -0
  586. package/dist/ionic/p-1647c46c.entry.js +4 -0
  587. package/dist/ionic/p-2a939845.entry.js +4 -0
  588. package/dist/ionic/p-316c0420.entry.js +4 -0
  589. package/dist/ionic/p-31f7095f.entry.js +4 -0
  590. package/dist/ionic/p-34642fa1.entry.js +4 -0
  591. package/dist/ionic/p-35696017.entry.js +4 -0
  592. package/dist/ionic/p-370e4237.entry.js +4 -0
  593. package/dist/ionic/p-3a6caca9.entry.js +4 -0
  594. package/dist/ionic/p-40c261a3.entry.js +4 -0
  595. package/dist/ionic/p-46d74291.entry.js +4 -0
  596. package/dist/ionic/p-49d06882.entry.js +4 -0
  597. package/dist/ionic/p-4e41ea20.entry.js +4 -0
  598. package/dist/ionic/p-51a60e0f.entry.js +4 -0
  599. package/dist/ionic/p-582824c5.entry.js +4 -0
  600. package/dist/ionic/p-6241ce47.entry.js +4 -0
  601. package/dist/ionic/p-639dd543.entry.js +4 -0
  602. package/dist/ionic/p-6444c606.entry.js +4 -0
  603. package/dist/ionic/p-675b1a31.entry.js +4 -0
  604. package/dist/ionic/p-6d070558.entry.js +4 -0
  605. package/dist/ionic/p-7268efa5.entry.js +4 -0
  606. package/dist/ionic/p-72c38b88.entry.js +4 -0
  607. package/dist/ionic/p-732b2fd6.entry.js +4 -0
  608. package/dist/ionic/p-79bd78f9.entry.js +4 -0
  609. package/dist/ionic/p-7babec72.entry.js +4 -0
  610. package/dist/ionic/p-86f53961.entry.js +4 -0
  611. package/dist/ionic/p-94de5cfa.entry.js +4 -0
  612. package/dist/ionic/p-9575b654.entry.js +4 -0
  613. package/dist/ionic/p-9eeaBrnk.js +4 -0
  614. package/dist/ionic/p-B0q1YL7N.js +4 -0
  615. package/dist/ionic/p-BFvmZNyx.js +4 -0
  616. package/dist/ionic/p-BKc55Xev.js +4 -0
  617. package/dist/ionic/p-BOVrCkpJ.js +4 -0
  618. package/dist/ionic/p-BYEqWnSg.js +4 -0
  619. package/dist/ionic/p-BmVRXR1y.js +4 -0
  620. package/dist/ionic/p-Bmgaetn_.js +4 -0
  621. package/dist/ionic/p-C7hRNDhM.js +4 -0
  622. package/dist/ionic/p-CIGNaXM1.js +4 -0
  623. package/dist/ionic/{p-D-BelbiX.js → p-CJxh_yLS.js} +1 -1
  624. package/dist/ionic/{p-Cq83JWMg.js → p-CKvCXMs9.js} +1 -1
  625. package/dist/ionic/p-CTfR9YZG.js +4 -0
  626. package/dist/ionic/p-CtWGkNnJ.js +4 -0
  627. package/dist/ionic/{p-B3uz75uZ.js → p-CwgG81ZD.js} +1 -1
  628. package/dist/ionic/p-D-eFFUkA.js +4 -0
  629. package/dist/ionic/{p-HpOiAvpC.js → p-D0dMcSkw.js} +1 -1
  630. package/dist/ionic/{p-B-D7Cfki.js → p-D13Eaw-8.js} +1 -1
  631. package/dist/ionic/{p-C8r4dtYR.js → p-DCv9sLH2.js} +1 -1
  632. package/dist/ionic/p-DDb5r57F.js +4 -0
  633. package/dist/ionic/p-DNcfiJwE.js +4 -0
  634. package/dist/ionic/{p-q1ZSn0l7.js → p-DUt5fQmA.js} +1 -1
  635. package/dist/ionic/{p-COG0_eom.js → p-DV3sJJW8.js} +1 -1
  636. package/dist/ionic/p-DZRJwG4S.js +4 -0
  637. package/dist/ionic/{p-CtUK3cKk.js → p-Dc45iWE4.js} +1 -1
  638. package/dist/ionic/p-DdR6rpbR.js +4 -0
  639. package/dist/ionic/p-QHYY4sjU.js +4 -0
  640. package/dist/ionic/p-ZjP4CjeZ.js +4 -0
  641. package/dist/ionic/p-a127bee2.entry.js +4 -0
  642. package/dist/ionic/p-ac4eb91d.entry.js +4 -0
  643. package/dist/ionic/p-b0a7585c.entry.js +4 -0
  644. package/dist/ionic/p-b3d44509.entry.js +4 -0
  645. package/dist/ionic/p-bf396166.entry.js +4 -0
  646. package/dist/ionic/p-c19af093.entry.js +4 -0
  647. package/dist/ionic/p-c19f63d0.entry.js +4 -0
  648. package/dist/ionic/p-cc45bcbc.entry.js +4 -0
  649. package/dist/ionic/p-d0a2a1ab.entry.js +4 -0
  650. package/dist/ionic/p-d126e8d3.entry.js +4 -0
  651. package/dist/ionic/p-d1f54e28.entry.js +4 -0
  652. package/dist/ionic/p-d3014190.entry.js +4 -0
  653. package/dist/ionic/p-da7d04cc.entry.js +4 -0
  654. package/dist/ionic/p-db82892c.entry.js +4 -0
  655. package/dist/ionic/p-dbbe606a.entry.js +4 -0
  656. package/dist/ionic/p-dd1aef77.entry.js +4 -0
  657. package/dist/ionic/p-eb024a5b.entry.js +4 -0
  658. package/dist/ionic/p-f8f22cc0.entry.js +4 -0
  659. package/dist/ionic/p-f9061316.entry.js +4 -0
  660. package/dist/types/components/accordion/accordion.d.ts +3 -5
  661. package/dist/types/components/accordion-group/accordion-group.d.ts +1 -12
  662. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +7 -3
  663. package/dist/types/components/action-sheet/action-sheet.d.ts +2 -3
  664. package/dist/types/components/alert/alert-interface.d.ts +7 -3
  665. package/dist/types/components/alert/alert.d.ts +2 -3
  666. package/dist/types/components/app/app.d.ts +2 -4
  667. package/dist/types/components/avatar/avatar.d.ts +0 -32
  668. package/dist/types/components/back-button/back-button.d.ts +1 -2
  669. package/dist/types/components/backdrop/backdrop.d.ts +0 -4
  670. package/dist/types/components/badge/badge.d.ts +1 -34
  671. package/dist/types/components/breadcrumb/breadcrumb.d.ts +1 -4
  672. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
  673. package/dist/types/components/button/button.d.ts +6 -19
  674. package/dist/types/components/buttons/buttons.d.ts +1 -5
  675. package/dist/types/components/card/card.d.ts +1 -8
  676. package/dist/types/components/card-content/card-content.d.ts +1 -2
  677. package/dist/types/components/card-header/card-header.d.ts +2 -3
  678. package/dist/types/components/card-subtitle/card-subtitle.d.ts +1 -2
  679. package/dist/types/components/card-title/card-title.d.ts +1 -2
  680. package/dist/types/components/checkbox/checkbox.d.ts +4 -14
  681. package/dist/types/components/chip/chip.d.ts +1 -26
  682. package/dist/types/components/col/col.d.ts +5 -52
  683. package/dist/types/components/content/content.d.ts +0 -3
  684. package/dist/types/components/datetime/datetime.d.ts +1 -26
  685. package/dist/types/components/datetime/utils/data.d.ts +5 -5
  686. package/dist/types/components/datetime-button/datetime-button.d.ts +1 -2
  687. package/dist/types/components/fab/fab.d.ts +0 -4
  688. package/dist/types/components/fab-button/fab-button.d.ts +3 -5
  689. package/dist/types/components/fab-list/fab-list.d.ts +0 -4
  690. package/dist/types/components/footer/footer.d.ts +3 -4
  691. package/dist/types/components/grid/grid.d.ts +0 -4
  692. package/dist/types/components/header/header.d.ts +3 -9
  693. package/dist/types/components/header/header.utils.d.ts +3 -3
  694. package/dist/types/components/img/img.d.ts +0 -3
  695. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +0 -21
  696. package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +0 -4
  697. package/dist/types/components/input/input.d.ts +5 -31
  698. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +0 -2
  699. package/dist/types/components/item/item.d.ts +4 -11
  700. package/dist/types/components/item-divider/item-divider.d.ts +1 -2
  701. package/dist/types/components/item-group/item-group.d.ts +0 -4
  702. package/dist/types/components/item-option/item-option.d.ts +1 -18
  703. package/dist/types/components/item-options/item-options.d.ts +0 -4
  704. package/dist/types/components/item-sliding/item-sliding.d.ts +0 -4
  705. package/dist/types/components/label/label.d.ts +1 -2
  706. package/dist/types/components/list/list.d.ts +1 -15
  707. package/dist/types/components/list-header/list-header.d.ts +1 -2
  708. package/dist/types/components/loading/loading-interface.d.ts +7 -2
  709. package/dist/types/components/loading/loading.d.ts +2 -3
  710. package/dist/types/components/menu/menu.d.ts +0 -3
  711. package/dist/types/components/menu-button/menu-button.d.ts +1 -3
  712. package/dist/types/components/menu-toggle/menu-toggle.d.ts +0 -3
  713. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  714. package/dist/types/components/modal/gestures/swipe-to-close.d.ts +1 -1
  715. package/dist/types/components/modal/modal-interface.d.ts +7 -4
  716. package/dist/types/components/modal/modal.d.ts +13 -11
  717. package/dist/types/components/nav/nav-interface.d.ts +1 -9
  718. package/dist/types/components/nav/nav.d.ts +1 -5
  719. package/dist/types/components/nav-link/nav-link.d.ts +0 -4
  720. package/dist/types/components/note/note.d.ts +1 -2
  721. package/dist/types/components/picker/picker.d.ts +1 -2
  722. package/dist/types/components/picker-column/picker-column.d.ts +1 -2
  723. package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -4
  724. package/dist/types/components/picker-legacy/picker.d.ts +1 -2
  725. package/dist/types/components/popover/popover-interface.d.ts +6 -3
  726. package/dist/types/components/popover/popover.d.ts +5 -6
  727. package/dist/types/components/progress-bar/progress-bar.d.ts +1 -10
  728. package/dist/types/components/radio/radio.d.ts +1 -2
  729. package/dist/types/components/radio-group/radio-group.d.ts +0 -8
  730. package/dist/types/components/range/range.d.ts +1 -2
  731. package/dist/types/components/refresher/refresher.d.ts +1 -2
  732. package/dist/types/components/refresher-content/refresher-content.d.ts +0 -4
  733. package/dist/types/components/reorder/reorder.d.ts +0 -9
  734. package/dist/types/components/reorder-group/reorder-group.d.ts +0 -4
  735. package/dist/types/components/ripple-effect/ripple-effect.d.ts +0 -4
  736. package/dist/types/components/route/route.d.ts +0 -4
  737. package/dist/types/components/router/router.d.ts +0 -4
  738. package/dist/types/components/router-link/router-link.d.ts +0 -4
  739. package/dist/types/components/router-outlet/router-outlet.d.ts +1 -4
  740. package/dist/types/components/row/row.d.ts +0 -4
  741. package/dist/types/components/searchbar/searchbar.d.ts +9 -51
  742. package/dist/types/components/segment/segment.d.ts +1 -2
  743. package/dist/types/components/segment-button/segment-button.d.ts +1 -2
  744. package/dist/types/components/select/select.d.ts +13 -41
  745. package/dist/types/components/select-modal/select-modal.d.ts +0 -1
  746. package/dist/types/components/select-option/select-option.d.ts +0 -4
  747. package/dist/types/components/select-popover/select-popover.d.ts +0 -3
  748. package/dist/types/components/skeleton-text/skeleton-text.d.ts +0 -4
  749. package/dist/types/components/spinner/spinner.d.ts +0 -15
  750. package/dist/types/components/split-pane/split-pane.d.ts +0 -4
  751. package/dist/types/components/tab/tab.d.ts +0 -4
  752. package/dist/types/components/tab-bar/tab-bar.d.ts +2 -22
  753. package/dist/types/components/tab-button/tab-button.d.ts +1 -12
  754. package/dist/types/components/tabs/tabs.d.ts +0 -3
  755. package/dist/types/components/text/text.d.ts +1 -2
  756. package/dist/types/components/textarea/textarea.d.ts +4 -17
  757. package/dist/types/components/thumbnail/thumbnail.d.ts +0 -4
  758. package/dist/types/components/title/title.d.ts +0 -4
  759. package/dist/types/components/toast/animations/utils.d.ts +2 -2
  760. package/dist/types/components/toast/toast-interface.d.ts +7 -3
  761. package/dist/types/components/toast/toast.d.ts +2 -19
  762. package/dist/types/components/toggle/toggle.d.ts +1 -15
  763. package/dist/types/components/toolbar/toolbar.d.ts +3 -20
  764. package/dist/types/components.d.ts +196 -1593
  765. package/dist/types/global/ionic-global.d.ts +2 -27
  766. package/dist/types/interface.d.ts +0 -3
  767. package/dist/types/utils/config.d.ts +2 -106
  768. package/dist/types/utils/focus-visible.d.ts +0 -13
  769. package/dist/types/utils/helpers.d.ts +0 -11
  770. package/dist/types/utils/overlays-interface.d.ts +1 -31
  771. package/dist/types/utils/test/playwright/generator.d.ts +2 -31
  772. package/hydrate/index.js +1077 -2880
  773. package/hydrate/index.mjs +1077 -2880
  774. package/package.json +4 -8
  775. package/components/caret-down.js +0 -6
  776. package/components/caret-left.js +0 -6
  777. package/components/caret-right.js +0 -6
  778. package/components/ion-divider.d.ts +0 -11
  779. package/components/ion-divider.js +0 -72
  780. package/components/list2.js +0 -6
  781. package/components/x.js +0 -6
  782. package/css/ionic/bundle.ionic.css +0 -1
  783. package/css/ionic/bundle.ionic.css.map +0 -1
  784. package/css/ionic/core.ionic.css +0 -1
  785. package/css/ionic/core.ionic.css.map +0 -1
  786. package/css/ionic/global.bundle.ionic.css +0 -1
  787. package/css/ionic/global.bundle.ionic.css.map +0 -1
  788. package/css/ionic/ionic-swiper.ionic.css +0 -1
  789. package/css/ionic/ionic-swiper.ionic.css.map +0 -1
  790. package/css/ionic/link.ionic.css +0 -1
  791. package/css/ionic/link.ionic.css.map +0 -1
  792. package/css/ionic/structure.ionic.css +0 -1
  793. package/css/ionic/structure.ionic.css.map +0 -1
  794. package/css/ionic/typography.ionic.css +0 -1
  795. package/css/ionic/typography.ionic.css.map +0 -1
  796. package/css/ionic/utils.bundle.ionic.css +0 -1
  797. package/css/ionic/utils.bundle.ionic.css.map +0 -1
  798. package/dist/cjs/caret-down-vtVgfXIs.js +0 -8
  799. package/dist/cjs/caret-left-CxZXLRv5.js +0 -8
  800. package/dist/cjs/caret-right-CRCgv98E.js +0 -8
  801. package/dist/cjs/ion-divider.cjs.entry.js +0 -51
  802. package/dist/cjs/ionic-global-DpRwOXLK.js +0 -506
  803. package/dist/cjs/list-a-7GSA6K.js +0 -8
  804. package/dist/cjs/x-BTF99yFH.js +0 -8
  805. package/dist/collection/components/accordion/accordion.ionic.css +0 -196
  806. package/dist/collection/components/accordion-group/accordion-group.ionic.css +0 -93
  807. package/dist/collection/components/avatar/avatar.ionic.css +0 -391
  808. package/dist/collection/components/backdrop/backdrop.ionic.css +0 -109
  809. package/dist/collection/components/badge/badge.ionic.css +0 -275
  810. package/dist/collection/components/button/button.ionic.css +0 -636
  811. package/dist/collection/components/buttons/buttons.ionic.css +0 -97
  812. package/dist/collection/components/card/card.ionic.css +0 -144
  813. package/dist/collection/components/card-content/card-content.ionic.css +0 -92
  814. package/dist/collection/components/card-header/card-header.ionic.css +0 -85
  815. package/dist/collection/components/card-subtitle/card-subtitle.ionic.css +0 -144
  816. package/dist/collection/components/checkbox/checkbox.ionic.css +0 -539
  817. package/dist/collection/components/chip/chip.ionic.css +0 -215
  818. package/dist/collection/components/datetime/datetime.ionic.css +0 -711
  819. package/dist/collection/components/divider/divider.ionic.css +0 -148
  820. package/dist/collection/components/divider/divider.ios.css +0 -87
  821. package/dist/collection/components/divider/divider.js +0 -94
  822. package/dist/collection/components/divider/divider.md.css +0 -87
  823. package/dist/collection/components/header/header.ionic.css +0 -97
  824. package/dist/collection/components/input/input.ionic.css +0 -885
  825. package/dist/collection/components/input-otp/input-otp.ionic.css +0 -369
  826. package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +0 -78
  827. package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +0 -61
  828. package/dist/collection/components/item/item.ionic.css +0 -508
  829. package/dist/collection/components/item-option/item-option.ionic.css +0 -278
  830. package/dist/collection/components/item-options/item-options.ionic.css +0 -221
  831. package/dist/collection/components/list/list.ionic.css +0 -212
  832. package/dist/collection/components/list-header/list-header.ionic.css +0 -190
  833. package/dist/collection/components/menu-button/menu-button.ionic.css +0 -236
  834. package/dist/collection/components/modal/modal.ionic.css +0 -247
  835. package/dist/collection/components/progress-bar/progress-bar.ionic.css +0 -287
  836. package/dist/collection/components/radio/radio.ionic.css +0 -422
  837. package/dist/collection/components/radio-group/radio-group.ionic.css +0 -119
  838. package/dist/collection/components/range/range.ionic.css +0 -563
  839. package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +0 -215
  840. package/dist/collection/components/searchbar/searchbar.ionic.css +0 -626
  841. package/dist/collection/components/segment/segment.ionic.css +0 -115
  842. package/dist/collection/components/segment-button/segment-button.ionic.css +0 -351
  843. package/dist/collection/components/select/select.ionic.css +0 -777
  844. package/dist/collection/components/select-modal/select-modal.ionic.css +0 -130
  845. package/dist/collection/components/spinner/spinner.native.css +0 -198
  846. package/dist/collection/components/tab-bar/tab-bar.ionic.css +0 -201
  847. package/dist/collection/components/tab-button/tab-button.ionic.css +0 -337
  848. package/dist/collection/components/textarea/textarea.ionic.css +0 -885
  849. package/dist/collection/components/title/title.ionic.css +0 -127
  850. package/dist/collection/components/toast/toast.ionic.css +0 -394
  851. package/dist/collection/components/toggle/toggle.ionic.css +0 -508
  852. package/dist/collection/components/toolbar/test/image.svg +0 -1
  853. package/dist/collection/components/toolbar/toolbar.ionic.css +0 -241
  854. package/dist/esm/caret-down-D1t981Ih.js +0 -6
  855. package/dist/esm/caret-left-fIOYmaqA.js +0 -6
  856. package/dist/esm/caret-right-BYSs-jZz.js +0 -6
  857. package/dist/esm/ion-divider.entry.js +0 -49
  858. package/dist/esm/ionic-global-2lDD9k7y.js +0 -495
  859. package/dist/esm/list-Dhi5xtNS.js +0 -6
  860. package/dist/esm/x-BDqjX7Z_.js +0 -6
  861. package/dist/ionic/p-01577340.entry.js +0 -4
  862. package/dist/ionic/p-03a794dc.entry.js +0 -4
  863. package/dist/ionic/p-04b1d37a.entry.js +0 -4
  864. package/dist/ionic/p-04e0ff62.entry.js +0 -4
  865. package/dist/ionic/p-0607ce8e.entry.js +0 -4
  866. package/dist/ionic/p-0744265c.entry.js +0 -4
  867. package/dist/ionic/p-0ac7c560.entry.js +0 -4
  868. package/dist/ionic/p-0c41c8a8.entry.js +0 -4
  869. package/dist/ionic/p-0eecce18.entry.js +0 -4
  870. package/dist/ionic/p-0f124806.entry.js +0 -4
  871. package/dist/ionic/p-19b2060d.entry.js +0 -4
  872. package/dist/ionic/p-27dbb44c.entry.js +0 -4
  873. package/dist/ionic/p-28a9d991.entry.js +0 -4
  874. package/dist/ionic/p-2dc676b2.entry.js +0 -4
  875. package/dist/ionic/p-381eb2a4.entry.js +0 -4
  876. package/dist/ionic/p-412d5d9e.entry.js +0 -4
  877. package/dist/ionic/p-42149296.entry.js +0 -4
  878. package/dist/ionic/p-5543b7b8.entry.js +0 -4
  879. package/dist/ionic/p-57a2d30b.entry.js +0 -4
  880. package/dist/ionic/p-59a79bd9.entry.js +0 -4
  881. package/dist/ionic/p-5daa0980.entry.js +0 -4
  882. package/dist/ionic/p-5f9d9c14.entry.js +0 -4
  883. package/dist/ionic/p-60549f06.entry.js +0 -4
  884. package/dist/ionic/p-616dd053.entry.js +0 -4
  885. package/dist/ionic/p-63a2b52a.entry.js +0 -4
  886. package/dist/ionic/p-67a63ae1.entry.js +0 -4
  887. package/dist/ionic/p-68c064ce.entry.js +0 -4
  888. package/dist/ionic/p-6bb99f41.entry.js +0 -4
  889. package/dist/ionic/p-6e3686f8.entry.js +0 -4
  890. package/dist/ionic/p-7fe3ea65.entry.js +0 -4
  891. package/dist/ionic/p-826267d6.entry.js +0 -4
  892. package/dist/ionic/p-8681a2a7.entry.js +0 -4
  893. package/dist/ionic/p-8ee09d4e.entry.js +0 -4
  894. package/dist/ionic/p-8f541b05.entry.js +0 -4
  895. package/dist/ionic/p-995cc9a7.entry.js +0 -4
  896. package/dist/ionic/p-BDqjX7Z_.js +0 -4
  897. package/dist/ionic/p-BYSs-jZz.js +0 -4
  898. package/dist/ionic/p-BiTKUjko.js +0 -4
  899. package/dist/ionic/p-ByhhQryg.js +0 -4
  900. package/dist/ionic/p-CK1xn1Nt.js +0 -4
  901. package/dist/ionic/p-COLHV2ym.js +0 -4
  902. package/dist/ionic/p-C_97se21.js +0 -4
  903. package/dist/ionic/p-CvRDI-Iz.js +0 -4
  904. package/dist/ionic/p-D1t981Ih.js +0 -4
  905. package/dist/ionic/p-DHeUgOSJ.js +0 -4
  906. package/dist/ionic/p-DM-v_NNE.js +0 -4
  907. package/dist/ionic/p-DeEDqH91.js +0 -4
  908. package/dist/ionic/p-Dhi5xtNS.js +0 -4
  909. package/dist/ionic/p-DoGrslUl.js +0 -4
  910. package/dist/ionic/p-Dq8ap6AD.js +0 -4
  911. package/dist/ionic/p-DyaKZbAH.js +0 -4
  912. package/dist/ionic/p-UafGZQ8e.js +0 -4
  913. package/dist/ionic/p-a35678f4.entry.js +0 -4
  914. package/dist/ionic/p-a6a37a34.entry.js +0 -4
  915. package/dist/ionic/p-a89211bd.entry.js +0 -4
  916. package/dist/ionic/p-add1a5d8.entry.js +0 -4
  917. package/dist/ionic/p-af1f624e.entry.js +0 -4
  918. package/dist/ionic/p-b475ec18.entry.js +0 -4
  919. package/dist/ionic/p-bd295ca7.entry.js +0 -4
  920. package/dist/ionic/p-be82dc77.entry.js +0 -4
  921. package/dist/ionic/p-c082f853.entry.js +0 -4
  922. package/dist/ionic/p-cdbfbff6.entry.js +0 -4
  923. package/dist/ionic/p-d3f64c58.entry.js +0 -4
  924. package/dist/ionic/p-d9c9592a.entry.js +0 -4
  925. package/dist/ionic/p-da0a2ca6.entry.js +0 -4
  926. package/dist/ionic/p-dacd8666.entry.js +0 -4
  927. package/dist/ionic/p-e1d84521.entry.js +0 -4
  928. package/dist/ionic/p-ecba552f.entry.js +0 -4
  929. package/dist/ionic/p-ecf8e713.entry.js +0 -4
  930. package/dist/ionic/p-f667945d.entry.js +0 -4
  931. package/dist/ionic/p-fIOYmaqA.js +0 -4
  932. package/dist/ionic/p-nP9c7bo5.js +0 -4
  933. package/dist/ionic/p-of4jy1ch.js +0 -4
  934. package/dist/ionic/p-qZR4N8Lu.js +0 -4
  935. package/dist/ionic/p-vXpMhGrs.js +0 -4
  936. package/dist/types/components/divider/divider.d.ts +0 -20
  937. /package/dist/collection/components/{refresher-content/refresher-content.css → input-password-toggle/input-password-toggle.css} +0 -0
@@ -1,3 +1,36 @@
1
+ /**
2
+ * Convert a font size to a dynamic font size.
3
+ * Fonts that participate in Dynamic Type should use
4
+ * dynamic font sizes.
5
+ * @param size - The initial font size including the unit (i.e. px or pt)
6
+ * @param unit (optional) - The unit to convert to. Use this if you want to
7
+ * convert to a unit other than $baselineUnit.
8
+ */
9
+ /**
10
+ * Convert a font size to a dynamic font size but impose
11
+ * a maximum font size.
12
+ * @param size - The initial font size including the unit (i.e. px or pt)
13
+ * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
14
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
15
+ * convert to a unit other than $baselineUnit.
16
+ */
17
+ /**
18
+ * Convert a font size to a dynamic font size but impose
19
+ * a minimum font size.
20
+ * @param size - The initial font size including the unit (i.e. px or pt)
21
+ * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
22
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
23
+ * convert to a unit other than $baselineUnit.
24
+ */
25
+ /**
26
+ * Convert a font size to a dynamic font size but impose
27
+ * maximum and minimum font sizes.
28
+ * @param size - The initial font size including the unit (i.e. px or pt)
29
+ * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
30
+ * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
31
+ * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
32
+ * convert to a unit other than $baselineUnit.
33
+ */
1
34
  /**
2
35
  * A heuristic that applies CSS to tablet
3
36
  * viewports.
@@ -46,12 +79,15 @@
46
79
  --min-height: auto;
47
80
  --max-height: auto;
48
81
  --overflow: hidden;
82
+ --border-radius: 0;
49
83
  --border-width: 0;
50
84
  --border-style: none;
51
85
  --border-color: transparent;
86
+ --background: var(--ion-background-color, #fff);
52
87
  --box-shadow: none;
53
- right: 0;
88
+ --backdrop-opacity: 0;
54
89
  left: 0;
90
+ right: 0;
55
91
  top: 0;
56
92
  bottom: 0;
57
93
  display: flex;
@@ -59,6 +95,7 @@
59
95
  align-items: center;
60
96
  justify-content: center;
61
97
  outline: none;
98
+ color: var(--ion-text-color, #000);
62
99
  contain: strict;
63
100
  }
64
101
 
@@ -94,177 +131,10 @@ ion-backdrop {
94
131
  background: transparent;
95
132
  }
96
133
 
97
- .modal-handle {
98
- -webkit-margin-start: auto;
99
- margin-inline-start: auto;
100
- -webkit-margin-end: auto;
101
- margin-inline-end: auto;
102
- position: absolute;
103
- /**
104
- * This allows the handle to appear
105
- * on top of user content in WebKit.
106
- */
107
- transform: translateZ(0);
108
- border: 0;
109
- cursor: pointer;
110
- z-index: 11;
111
- }
112
-
113
- .modal-handle::before {
114
- position: absolute;
115
- transform: translate(-50%, -50%);
116
- content: "";
117
- }
118
-
119
- :host(.modal-sheet) .modal-wrapper,
120
- :host(.modal-sheet) .modal-shadow {
121
- position: absolute;
122
- bottom: 0;
123
- }
124
-
125
- :host(.modal-sheet.modal-no-expand-scroll) ion-footer {
126
- position: absolute;
127
- bottom: 0;
128
- width: var(--width);
129
- }
130
-
131
- /**
132
- * Convert a pixels given value into rem
133
- *
134
- * @param pixels - Value in pixels to be converted (i.e. px)
135
- * @param context (optional) - Baseline value
136
- */
137
- /**
138
- * Convert a font size to a dynamic font size.
139
- * Fonts that participate in Dynamic Type should use
140
- * dynamic font sizes.
141
- * @param size - The initial font size including the unit (i.e. px or pt)
142
- * @param unit (optional) - The unit to convert to. Use this if you want to
143
- * convert to a unit other than $baselineUnit.
144
- */
145
- /**
146
- * Convert a font size to a dynamic font size but impose
147
- * a maximum font size.
148
- * @param size - The initial font size including the unit (i.e. px or pt)
149
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
150
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
151
- * convert to a unit other than $baselineUnit.
152
- */
153
- /**
154
- * Convert a font size to a dynamic font size but impose
155
- * a minimum font size.
156
- * @param size - The initial font size including the unit (i.e. px or pt)
157
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
158
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
159
- * convert to a unit other than $baselineUnit.
160
- */
161
- /**
162
- * Convert a font size to a dynamic font size but impose
163
- * maximum and minimum font sizes.
164
- * @param size - The initial font size including the unit (i.e. px or pt)
165
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
166
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
167
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
168
- * convert to a unit other than $baselineUnit.
169
- */
170
- /**
171
- * A heuristic that applies CSS to tablet
172
- * viewports.
173
- *
174
- * Usage:
175
- * @include tablet-viewport() {
176
- * :host {
177
- * background-color: green;
178
- * }
179
- * }
180
- */
181
- /**
182
- * A heuristic that applies CSS to mobile
183
- * viewports (i.e. phones, not tablets).
184
- *
185
- * Usage:
186
- * @include mobile-viewport() {
187
- * :host {
188
- * background-color: blue;
189
- * }
190
- * }
191
- */
192
- /**
193
- * Convert a pixels given value into rem
194
- *
195
- * @param pixels - Value in pixels to be converted (i.e. px)
196
- * @param context (optional) - Baseline value
197
- */
198
- /**
199
- * Convert a font size to a dynamic font size.
200
- * Fonts that participate in Dynamic Type should use
201
- * dynamic font sizes.
202
- * @param size - The initial font size including the unit (i.e. px or pt)
203
- * @param unit (optional) - The unit to convert to. Use this if you want to
204
- * convert to a unit other than $baselineUnit.
205
- */
206
- /**
207
- * Convert a font size to a dynamic font size but impose
208
- * a maximum font size.
209
- * @param size - The initial font size including the unit (i.e. px or pt)
210
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
211
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
212
- * convert to a unit other than $baselineUnit.
213
- */
214
- /**
215
- * Convert a font size to a dynamic font size but impose
216
- * a minimum font size.
217
- * @param size - The initial font size including the unit (i.e. px or pt)
218
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
219
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
220
- * convert to a unit other than $baselineUnit.
221
- */
222
- /**
223
- * Convert a font size to a dynamic font size but impose
224
- * maximum and minimum font sizes.
225
- * @param size - The initial font size including the unit (i.e. px or pt)
226
- * @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
227
- * @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
228
- * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
229
- * convert to a unit other than $baselineUnit.
230
- */
231
- /**
232
- * A heuristic that applies CSS to tablet
233
- * viewports.
234
- *
235
- * Usage:
236
- * @include tablet-viewport() {
237
- * :host {
238
- * background-color: green;
239
- * }
240
- * }
241
- */
242
- /**
243
- * A heuristic that applies CSS to mobile
244
- * viewports (i.e. phones, not tablets).
245
- *
246
- * Usage:
247
- * @include mobile-viewport() {
248
- * :host {
249
- * background-color: blue;
250
- * }
251
- * }
252
- */
253
- :host {
254
- --background: var(--ion-background-color, #fff);
255
- --border-radius: 0;
256
- --backdrop-opacity: 0;
257
- color: var(--ion-text-color, #000);
258
- }
259
-
260
134
  @media only screen and (min-width: 768px) and (min-height: 600px) {
261
135
  :host {
262
136
  --width: 600px;
263
137
  --height: 500px;
264
- --ion-safe-area-top: 0px;
265
- --ion-safe-area-bottom: 0px;
266
- --ion-safe-area-right: 0px;
267
- --ion-safe-area-left: 0px;
268
138
  }
269
139
  }
270
140
  @media only screen and (min-width: 768px) and (min-height: 768px) {
@@ -274,27 +144,43 @@ ion-backdrop {
274
144
  }
275
145
  }
276
146
  .modal-handle {
277
- right: 0px;
278
147
  left: 0px;
148
+ right: 0px;
279
149
  top: 5px;
280
150
  border-radius: 8px;
151
+ -webkit-margin-start: auto;
152
+ margin-inline-start: auto;
153
+ -webkit-margin-end: auto;
154
+ margin-inline-end: auto;
155
+ position: absolute;
281
156
  width: 36px;
282
157
  height: 5px;
158
+ /**
159
+ * This allows the handle to appear
160
+ * on top of user content in WebKit.
161
+ */
162
+ transform: translateZ(0);
163
+ border: 0;
283
164
  background: var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));
165
+ cursor: pointer;
166
+ z-index: 11;
284
167
  }
285
168
  .modal-handle::before {
286
169
  /**
287
- * Adds a 4px tap area to the perimeter
288
- * of the handle.
289
- */
170
+ * Adds a 4px tap area to the perimeter
171
+ * of the handle.
172
+ */
290
173
  -webkit-padding-start: 4px;
291
174
  padding-inline-start: 4px;
292
175
  -webkit-padding-end: 4px;
293
176
  padding-inline-end: 4px;
294
177
  padding-top: 4px;
295
178
  padding-bottom: 4px;
179
+ position: absolute;
296
180
  width: 36px;
297
181
  height: 5px;
182
+ transform: translate(-50%, -50%);
183
+ content: "";
298
184
  }
299
185
 
300
186
  /**
@@ -305,12 +191,18 @@ ion-backdrop {
305
191
  --height: calc(100% - (var(--ion-safe-area-top) + 10px));
306
192
  }
307
193
 
308
- /**
309
- * Convert a pixels given value into rem
310
- *
311
- * @param pixels - Value in pixels to be converted (i.e. px)
312
- * @param context (optional) - Baseline value
313
- */
194
+ :host(.modal-sheet) .modal-wrapper,
195
+ :host(.modal-sheet) .modal-shadow {
196
+ position: absolute;
197
+ bottom: 0;
198
+ }
199
+
200
+ :host(.modal-sheet.modal-no-expand-scroll) ion-footer {
201
+ position: absolute;
202
+ bottom: 0;
203
+ width: var(--width);
204
+ }
205
+
314
206
  /**
315
207
  * Convert a font size to a dynamic font size.
316
208
  * Fonts that participate in Dynamic Type should use
@@ -12,7 +12,7 @@ import { GESTURE, BACKDROP, dismiss, eventMethod, prepareOverlay, present, creat
12
12
  import { getClassMap } from "../../utils/theme";
13
13
  import { deepReady, waitForMount } from "../../utils/transition/index";
14
14
  import { config } from "../../global/config";
15
- import { getIonMode, getIonTheme } from "../../global/ionic-global";
15
+ import { getIonMode } from "../../global/ionic-global";
16
16
  import { KEYBOARD_DID_OPEN } from "../../utils/keyboard/keyboard";
17
17
  import { iosEnterAnimation } from "./animations/ios.enter";
18
18
  import { iosLeaveAnimation } from "./animations/ios.leave";
@@ -24,8 +24,7 @@ import { createSwipeToCloseGesture, SwipeToCloseDefaults } from "./gestures/swip
24
24
  import { setCardStatusBarDark, setCardStatusBarDefault } from "./utils";
25
25
  // TODO(FW-2832): types
26
26
  /**
27
- * @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
28
- * @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
27
+ * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
29
28
  *
30
29
  * @slot - Content is placed inside of the `.modal-content` element.
31
30
  *
@@ -233,7 +232,10 @@ export class Modal {
233
232
  }
234
233
  }
235
234
  onWindowResize() {
236
- // Only handle resize for iOS card modals when no custom animations are provided
235
+ // Update safe-area overrides for all modal types on resize
236
+ console.log('[onWindowResize] calling updateSafeAreaOverrides');
237
+ this.updateSafeAreaOverrides();
238
+ // Only handle view transition for iOS card modals when no custom animations are provided
237
239
  if (getIonMode(this) !== 'ios' || !this.presentingElement || this.enterAnimation || this.leaveAnimation) {
238
240
  return;
239
241
  }
@@ -415,6 +417,8 @@ export class Modal {
415
417
  else if (!this.keepContentsMounted) {
416
418
  await waitForMount();
417
419
  }
420
+ // Predict safe-area needs based on modal configuration to avoid visual snap
421
+ this.setInitialSafeAreaOverrides(presentingElement);
418
422
  writeTask(() => this.el.classList.add('show-modal'));
419
423
  const hasCardModal = presentingElement !== undefined;
420
424
  /**
@@ -432,7 +436,6 @@ export class Modal {
432
436
  currentBreakpoint: this.initialBreakpoint,
433
437
  backdropBreakpoint: this.backdropBreakpoint,
434
438
  expandToScroll: this.expandToScroll,
435
- staticBackdropOpacity: getIonTheme(this) === 'ionic',
436
439
  });
437
440
  /* tslint:disable-next-line */
438
441
  if (typeof window !== 'undefined') {
@@ -477,6 +480,9 @@ export class Modal {
477
480
  else if (hasCardModal) {
478
481
  this.initSwipeToClose();
479
482
  }
483
+ // Now that animation is complete, update safe-area based on actual position
484
+ console.log('[present animation complete] calling updateSafeAreaOverrides');
485
+ this.updateSafeAreaOverrides();
480
486
  // Initialize view transition listener for iOS card modals
481
487
  this.initViewTransitionListener();
482
488
  // Initialize parent removal observer
@@ -528,7 +534,7 @@ export class Modal {
528
534
  await this.dismiss(undefined, GESTURE);
529
535
  this.gestureAnimationDismissing = false;
530
536
  });
531
- });
537
+ }, () => this.updateSafeAreaOverrides());
532
538
  this.gesture.enable(true);
533
539
  }
534
540
  initSheetGesture() {
@@ -542,7 +548,6 @@ export class Modal {
542
548
  currentBreakpoint: initialBreakpoint,
543
549
  backdropBreakpoint,
544
550
  expandToScroll: this.expandToScroll,
545
- staticBackdropOpacity: getIonTheme(this) === 'ionic',
546
551
  }));
547
552
  ani.progressStart(true, 1);
548
553
  const { gesture, moveSheetToBreakpoint } = createSheetGesture(this.el, this.backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, ani, this.sortedBreakpoints, this.expandToScroll, () => { var _a; return (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : 0; }, () => this.sheetOnDismiss(), (breakpoint) => {
@@ -550,7 +555,8 @@ export class Modal {
550
555
  this.currentBreakpoint = breakpoint;
551
556
  this.ionBreakpointDidChange.emit({ breakpoint });
552
557
  }
553
- }, getIonTheme(this) === 'ionic');
558
+ this.updateSafeAreaOverrides();
559
+ }, () => this.updateSafeAreaOverrides());
554
560
  this.gesture = gesture;
555
561
  this.moveSheetToBreakpoint = moveSheetToBreakpoint;
556
562
  this.gesture.enable(true);
@@ -628,6 +634,119 @@ export class Modal {
628
634
  // Clear the cached reference
629
635
  this.cachedPageParent = undefined;
630
636
  }
637
+ /**
638
+ * Sets initial safe-area overrides based on modal configuration before
639
+ * the modal becomes visible. This predicts whether the modal will touch
640
+ * screen edges to avoid a visual snap after animation completes.
641
+ */
642
+ setInitialSafeAreaOverrides(presentingElement) {
643
+ const style = this.el.style;
644
+ const isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined;
645
+ const isCardModal = presentingElement !== undefined;
646
+ const isTablet = window.innerWidth >= 768;
647
+ console.log('[setInitialSafeAreaOverrides] called', {
648
+ isSheetModal,
649
+ isCardModal,
650
+ isTablet,
651
+ breakpoints: this.breakpoints,
652
+ initialBreakpoint: this.initialBreakpoint,
653
+ presentingElement: !!presentingElement,
654
+ innerWidth: window.innerWidth,
655
+ });
656
+ // Sheet modals: always touch bottom, top depends on breakpoint
657
+ if (isSheetModal) {
658
+ console.log('[setInitialSafeAreaOverrides] Sheet modal path - setting top/left/right to 0, leaving bottom alone');
659
+ style.setProperty('--ion-safe-area-top', '0px');
660
+ // Don't override bottom - sheet always touches bottom
661
+ style.setProperty('--ion-safe-area-left', '0px');
662
+ style.setProperty('--ion-safe-area-right', '0px');
663
+ return;
664
+ }
665
+ // Card modals are inset from edges (rounded corners), no safe areas needed
666
+ if (isCardModal) {
667
+ console.log('[setInitialSafeAreaOverrides] Card modal path - setting all to 0');
668
+ style.setProperty('--ion-safe-area-top', '0px');
669
+ style.setProperty('--ion-safe-area-bottom', '0px');
670
+ style.setProperty('--ion-safe-area-left', '0px');
671
+ style.setProperty('--ion-safe-area-right', '0px');
672
+ return;
673
+ }
674
+ // Phone modals are fullscreen, need all safe areas
675
+ if (!isTablet) {
676
+ console.log('[setInitialSafeAreaOverrides] Phone modal path - not setting any overrides');
677
+ // Don't set any overrides - inherit from :root
678
+ return;
679
+ }
680
+ // Default tablet modal: centered dialog, no safe areas needed
681
+ // Check for fullscreen override via CSS custom properties
682
+ const computedStyle = getComputedStyle(this.el);
683
+ const width = computedStyle.getPropertyValue('--width').trim();
684
+ const height = computedStyle.getPropertyValue('--height').trim();
685
+ console.log('[setInitialSafeAreaOverrides] Tablet modal path', { width, height });
686
+ if (width === '100%' && height === '100%') {
687
+ console.log('[setInitialSafeAreaOverrides] Fullscreen tablet modal - not setting overrides');
688
+ // Fullscreen modal - need safe areas, don't override
689
+ return;
690
+ }
691
+ // Centered dialog - zero out all safe areas
692
+ console.log('[setInitialSafeAreaOverrides] Centered tablet dialog - setting all to 0');
693
+ style.setProperty('--ion-safe-area-top', '0px');
694
+ style.setProperty('--ion-safe-area-bottom', '0px');
695
+ style.setProperty('--ion-safe-area-left', '0px');
696
+ style.setProperty('--ion-safe-area-right', '0px');
697
+ }
698
+ /**
699
+ * Updates safe-area CSS variable overrides based on whether the modal
700
+ * is touching each edge of the viewport. This is called after animation
701
+ * and during gestures to handle dynamic position changes.
702
+ */
703
+ updateSafeAreaOverrides() {
704
+ const wrapper = this.wrapperEl;
705
+ if (!wrapper) {
706
+ console.log('[updateSafeAreaOverrides] No wrapper element, returning early');
707
+ return;
708
+ }
709
+ const rect = wrapper.getBoundingClientRect();
710
+ const threshold = 2; // Account for subpixel rendering
711
+ const touchingTop = rect.top <= threshold;
712
+ const touchingBottom = rect.bottom >= window.innerHeight - threshold;
713
+ const touchingLeft = rect.left <= threshold;
714
+ const touchingRight = rect.right >= window.innerWidth - threshold;
715
+ console.log('[updateSafeAreaOverrides] called', {
716
+ isSheetModal: this.isSheetModal,
717
+ rect: { top: rect.top, bottom: rect.bottom, left: rect.left, right: rect.right },
718
+ innerHeight: window.innerHeight,
719
+ innerWidth: window.innerWidth,
720
+ threshold,
721
+ touchingTop,
722
+ touchingBottom,
723
+ touchingLeft,
724
+ touchingRight,
725
+ bottomCalc: `${rect.bottom} >= ${window.innerHeight - threshold} = ${touchingBottom}`,
726
+ });
727
+ // Remove override when touching edge (allow inheritance), set to 0 when not touching
728
+ const style = this.el.style;
729
+ const actions = {
730
+ top: touchingTop ? 'removeProperty' : 'setProperty 0px',
731
+ bottom: touchingBottom ? 'removeProperty' : 'setProperty 0px',
732
+ left: touchingLeft ? 'removeProperty' : 'setProperty 0px',
733
+ right: touchingRight ? 'removeProperty' : 'setProperty 0px',
734
+ };
735
+ console.log('[updateSafeAreaOverrides] actions:', actions);
736
+ touchingTop ? style.removeProperty('--ion-safe-area-top') : style.setProperty('--ion-safe-area-top', '0px');
737
+ touchingBottom
738
+ ? style.removeProperty('--ion-safe-area-bottom')
739
+ : style.setProperty('--ion-safe-area-bottom', '0px');
740
+ touchingLeft ? style.removeProperty('--ion-safe-area-left') : style.setProperty('--ion-safe-area-left', '0px');
741
+ touchingRight ? style.removeProperty('--ion-safe-area-right') : style.setProperty('--ion-safe-area-right', '0px');
742
+ // Log the actual style values after setting
743
+ console.log('[updateSafeAreaOverrides] after setting, inline styles:', {
744
+ top: style.getPropertyValue('--ion-safe-area-top'),
745
+ bottom: style.getPropertyValue('--ion-safe-area-bottom'),
746
+ left: style.getPropertyValue('--ion-safe-area-left'),
747
+ right: style.getPropertyValue('--ion-safe-area-right'),
748
+ });
749
+ }
631
750
  sheetOnDismiss() {
632
751
  /**
633
752
  * While the gesture animation is finishing
@@ -792,18 +911,6 @@ export class Modal {
792
911
  await this.setCurrentBreakpoint(nextBreakpoint);
793
912
  return true;
794
913
  }
795
- getShape() {
796
- const theme = getIonTheme(this);
797
- const { shape } = this;
798
- // TODO(ROU-11167): Remove theme check when shapes are defined for all themes.
799
- if (theme !== 'ionic') {
800
- return undefined;
801
- }
802
- if (shape === undefined) {
803
- return 'round';
804
- }
805
- return shape;
806
- }
807
914
  initViewTransitionListener() {
808
915
  // Only enable for iOS card modals when no custom animations are provided
809
916
  if (getIonMode(this) !== 'ios' || !this.presentingElement || this.enterAnimation || this.leaveAnimation) {
@@ -981,40 +1088,37 @@ export class Modal {
981
1088
  render() {
982
1089
  const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap, expandToScroll, } = this;
983
1090
  const showHandle = handle !== false && isSheetModal;
984
- const theme = getIonTheme(this);
985
- const isCardModal = presentingElement !== undefined && theme === 'ios';
1091
+ const mode = getIonMode(this);
1092
+ const isCardModal = presentingElement !== undefined && mode === 'ios';
986
1093
  const isHandleCycle = handleBehavior === 'cycle';
987
- const shape = this.getShape();
988
1094
  const isSheetModalWithHandle = isSheetModal && showHandle;
989
- return (h(Host, Object.assign({ key: '547adca39bb8f0070f2e2c17d39300eab5d66202', "no-router": true,
1095
+ return (h(Host, Object.assign({ key: '8659056ce9de06c66d65946fe4af939e298d133c', "no-router": true,
990
1096
  // Allow the modal to be navigable when the handle is focusable
991
1097
  tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
992
1098
  zIndex: `${20000 + this.overlayIndex}`,
993
- }, class: Object.assign({ [theme]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-${shape}`]: shape !== undefined, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: 'b15340363a5399cdbd015f3ba6a07ca9a057af3a', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), theme === 'ios' && h("div", { key: 'd13cb2c5efe07b13e7f4a0ea358c8003944779a7', class: "modal-shadow" }), h("div", Object.assign({ key: 'd6f252655e0c11b7a76917781ad038d3eca4f1f6',
1099
+ }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: 'e4f287871798d7aa660c8aea3a81deeeb540812d', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: '6f3d8d504e080093ba9e5089e5de76feaa13cf38', class: "modal-shadow" }), h("div", Object.assign({ key: '6ad0b4d97e0c0bad56689e457f08819ad857a0b4',
994
1100
  /*
995
1101
  role and aria-modal must be used on the
996
1102
  same element. They must also be set inside the
997
1103
  shadow DOM otherwise ion-button will not be highlighted
998
1104
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
999
1105
  */
1000
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '8ea59f134f0a949f27c5413a406771a5fe7d1d13', class: "modal-handle",
1106
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: 'e5a9d74a112e315240b307042ad16d8e6ff2c714', class: "modal-handle",
1001
1107
  // Prevents the handle from receiving keyboard focus when it does not cycle
1002
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: 'c609a98d061e83c610c892aca9792e6784dbc02c', onSlotchange: this.onSlotChange }))));
1108
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '66f342587b6eaa5801397d7385ec3dc783bf8f55', onSlotchange: this.onSlotChange }))));
1003
1109
  }
1004
1110
  static get is() { return "ion-modal"; }
1005
1111
  static get encapsulation() { return "shadow"; }
1006
1112
  static get originalStyleUrls() {
1007
1113
  return {
1008
1114
  "ios": ["modal.ios.scss"],
1009
- "md": ["modal.md.scss"],
1010
- "ionic": ["modal.ionic.scss"]
1115
+ "md": ["modal.md.scss"]
1011
1116
  };
1012
1117
  }
1013
1118
  static get styleUrls() {
1014
1119
  return {
1015
1120
  "ios": ["modal.ios.css"],
1016
- "md": ["modal.md.css"],
1017
- "ionic": ["modal.ionic.css"]
1121
+ "md": ["modal.md.css"]
1018
1122
  };
1019
1123
  }
1020
1124
  static get properties() {
@@ -1555,25 +1659,6 @@ export class Modal {
1555
1659
  "reflect": false,
1556
1660
  "attribute": "can-dismiss",
1557
1661
  "defaultValue": "true"
1558
- },
1559
- "shape": {
1560
- "type": "string",
1561
- "mutable": false,
1562
- "complexType": {
1563
- "original": "'soft' | 'round' | 'rectangular'",
1564
- "resolved": "\"rectangular\" | \"round\" | \"soft\" | undefined",
1565
- "references": {}
1566
- },
1567
- "required": false,
1568
- "optional": true,
1569
- "docs": {
1570
- "tags": [],
1571
- "text": "Set to `\"soft\"` for a modal with slightly rounded corners,\n`\"round\"` for a modal with fully rounded corners, or `\"rectangular\"`\nfor a modal without rounded corners.\n\nDefaults to `\"round\"` for the `ionic` theme, undefined for all other themes."
1572
- },
1573
- "getter": false,
1574
- "setter": false,
1575
- "reflect": false,
1576
- "attribute": "shape"
1577
1662
  }
1578
1663
  };
1579
1664
  }