@ionic/core 8.7.13-dev.11765925297.1bb45463 → 8.7.13-dev.11766069240.1ab3dde2

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 (953) 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 +4 -57
  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 +19 -112
  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 -349
  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 +20 -48
  99. package/components/notch-controller.js +1 -1
  100. package/components/overlays.js +6 -96
  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/components/validity.js +1 -32
  116. package/css/core.css +1 -1
  117. package/css/core.css.map +1 -1
  118. package/css/display.css +1 -1
  119. package/css/display.css.map +1 -1
  120. package/css/flex-utils.css +1 -1
  121. package/css/flex-utils.css.map +1 -1
  122. package/css/float-elements.css.map +1 -1
  123. package/css/global.bundle.css.map +1 -1
  124. package/css/ionic-swiper.css +1 -1
  125. package/css/ionic-swiper.css.map +1 -1
  126. package/css/ionic.bundle.css +1 -1
  127. package/css/ionic.bundle.css.map +1 -1
  128. package/css/normalize.css.map +1 -1
  129. package/css/padding.css.map +1 -1
  130. package/css/palettes/dark.always.css.map +1 -1
  131. package/css/palettes/dark.class.css.map +1 -1
  132. package/css/palettes/dark.system.css.map +1 -1
  133. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  134. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  135. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  136. package/css/palettes/high-contrast.always.css.map +1 -1
  137. package/css/palettes/high-contrast.class.css.map +1 -1
  138. package/css/palettes/high-contrast.system.css.map +1 -1
  139. package/css/structure.css.map +1 -1
  140. package/css/text-alignment.css.map +1 -1
  141. package/css/text-transformation.css.map +1 -1
  142. package/css/typography.css.map +1 -1
  143. package/css/utils.bundle.css +1 -1
  144. package/css/utils.bundle.css.map +1 -1
  145. package/dist/cjs/{animation-BBT4oe7B.js → animation-Bt3H9L1C.js} +3 -3
  146. package/dist/cjs/{app-globals-DjZzKNoV.js → app-globals-Ciccnk9_.js} +1 -1
  147. package/dist/cjs/{button-active-DQ3Dd_Zw.js → button-active-CMc8cD90.js} +2 -2
  148. package/dist/cjs/{capacitor-G2rS2zAS.js → capacitor-DmA66EwP.js} +3 -3
  149. package/dist/cjs/{config-CPCkFfH2.js → config-C5fsO43a.js} +1 -1
  150. package/dist/cjs/{data-BpYscHnl.js → data-JwZKaIQB.js} +6 -6
  151. package/dist/{esm/focus-visible-vXpMhGrs.js → cjs/focus-visible-CCvKiLh3.js} +3 -23
  152. package/dist/cjs/{framework-delegate-C7fZ8bup.js → framework-delegate-DMJRBuDi.js} +2 -4
  153. package/dist/cjs/{haptic-CYXFB5MG.js → haptic-ClPPQ_PS.js} +1 -1
  154. package/dist/cjs/hardware-back-button-VCK4V3mG.js +121 -0
  155. package/dist/cjs/{helpers-DF1tCuxf.js → helpers-DrTqNghc.js} +4 -57
  156. package/dist/cjs/{index-BIUQBJ4M.js → index-094mMFB-.js} +4 -4
  157. package/dist/cjs/{index-h_4y8nIV.js → index-C534ULug.js} +8 -9
  158. package/dist/cjs/{index-C2sRwpb7.js → index-CO6eryBo.js} +2 -2
  159. package/dist/cjs/{index-DjlJwy91.js → index-D6Wc6v08.js} +4 -41
  160. package/dist/cjs/index-DkNv4J_i.js +10 -0
  161. package/dist/cjs/{index-BsTUIYWV.js → index-DrMUZJj6.js} +15 -15
  162. package/dist/cjs/index.cjs.js +13 -12
  163. package/dist/cjs/{input-shims-co__iqWN.js → input-shims-CW0KUFTQ.js} +17 -18
  164. package/dist/cjs/{input.utils-DyXMjrIY.js → input.utils-B_QROI2g.js} +5 -5
  165. package/dist/cjs/ion-accordion_2.cjs.entry.js +27 -56
  166. package/dist/cjs/ion-action-sheet.cjs.entry.js +21 -24
  167. package/dist/cjs/ion-alert.cjs.entry.js +22 -24
  168. package/dist/cjs/ion-app_8.cjs.entry.js +151 -250
  169. package/dist/cjs/ion-avatar_3.cjs.entry.js +12 -124
  170. package/dist/cjs/ion-back-button.cjs.entry.js +20 -29
  171. package/dist/cjs/ion-backdrop.cjs.entry.js +7 -10
  172. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +16 -52
  173. package/dist/cjs/ion-button_2.cjs.entry.js +12 -44
  174. package/dist/cjs/ion-card_5.cjs.entry.js +30 -54
  175. package/dist/cjs/ion-checkbox.cjs.entry.js +15 -33
  176. package/dist/cjs/ion-chip.cjs.entry.js +8 -49
  177. package/dist/cjs/ion-col_3.cjs.entry.js +57 -54
  178. package/dist/cjs/ion-datetime-button.cjs.entry.js +8 -12
  179. package/dist/cjs/ion-datetime_3.cjs.entry.js +39 -114
  180. package/dist/cjs/ion-fab_3.cjs.entry.js +26 -42
  181. package/dist/cjs/ion-img.cjs.entry.js +4 -8
  182. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +16 -91
  183. package/dist/cjs/ion-input-otp.cjs.entry.js +8 -12
  184. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +13 -51
  185. package/dist/cjs/ion-input.cjs.entry.js +32 -122
  186. package/dist/cjs/ion-item-option_3.cjs.entry.js +20 -49
  187. package/dist/cjs/ion-item_8.cjs.entry.js +47 -114
  188. package/dist/cjs/ion-loading.cjs.entry.js +17 -19
  189. package/dist/cjs/ion-menu_3.cjs.entry.js +27 -45
  190. package/dist/cjs/ion-modal.cjs.entry.js +69 -96
  191. package/dist/cjs/ion-nav_2.cjs.entry.js +11 -14
  192. package/dist/cjs/ion-picker-column-option.cjs.entry.js +7 -11
  193. package/dist/cjs/ion-picker-column.cjs.entry.js +13 -13
  194. package/dist/cjs/ion-picker.cjs.entry.js +6 -10
  195. package/dist/cjs/ion-popover.cjs.entry.js +17 -19
  196. package/dist/cjs/ion-progress-bar.cjs.entry.js +8 -26
  197. package/dist/cjs/ion-radio_2.cjs.entry.js +16 -26
  198. package/dist/cjs/ion-range.cjs.entry.js +11 -15
  199. package/dist/cjs/ion-refresher_2.cjs.entry.js +20 -38
  200. package/dist/cjs/ion-reorder_2.cjs.entry.js +13 -37
  201. package/dist/cjs/ion-ripple-effect.cjs.entry.js +7 -15
  202. package/dist/cjs/ion-route_4.cjs.entry.js +8 -9
  203. package/dist/cjs/ion-searchbar.cjs.entry.js +22 -135
  204. package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
  205. package/dist/cjs/ion-segment-view.cjs.entry.js +3 -6
  206. package/dist/cjs/ion-segment_2.cjs.entry.js +15 -22
  207. package/dist/cjs/ion-select-modal.cjs.entry.js +10 -16
  208. package/dist/cjs/ion-select_3.cjs.entry.js +40 -131
  209. package/dist/cjs/ion-spinner.cjs.entry.js +7 -29
  210. package/dist/cjs/ion-split-pane.cjs.entry.js +9 -12
  211. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +22 -76
  212. package/dist/cjs/ion-tab_2.cjs.entry.js +7 -8
  213. package/dist/cjs/ion-text.cjs.entry.js +6 -6
  214. package/dist/cjs/ion-textarea.cjs.entry.js +22 -117
  215. package/dist/cjs/ion-toast.cjs.entry.js +44 -67
  216. package/dist/cjs/ion-toggle.cjs.entry.js +23 -80
  217. package/dist/cjs/ionic-global-HMVqOFGO.js +151 -0
  218. package/dist/cjs/ionic.cjs.js +4 -4
  219. package/dist/cjs/{ios.transition-cjE5173V.js → ios.transition-BOt_uW73.js} +5 -7
  220. package/dist/cjs/{keyboard-BiIvvomq.js → keyboard-UuAS4D_9.js} +1 -1
  221. package/dist/cjs/{keyboard-controller-5GsVQphE.js → keyboard-controller-GXBiBRKS.js} +9 -11
  222. package/dist/cjs/{keyboard-Dxl3DPOc.js → keyboard-hHzlEQpk.js} +3 -4
  223. package/dist/cjs/loader.cjs.js +4 -4
  224. package/dist/cjs/{md.transition-ChCLDEkm.js → md.transition-Dt968VXB.js} +5 -6
  225. package/dist/cjs/{notch-controller-BGNMnptF.js → notch-controller-Bzqhjm4f.js} +4 -4
  226. package/dist/cjs/{overlays-DPjo0yW3.js → overlays--dagG4QM.js} +12 -102
  227. package/dist/cjs/{status-tap-BLw3gi_z.js → status-tap-g0sWWkXk.js} +3 -4
  228. package/dist/cjs/{swipe-back-BD2lWufH.js → swipe-back-BIayeNOD.js} +2 -3
  229. package/dist/cjs/validity-BpS37YFM.js +19 -0
  230. package/dist/collection/collection-manifest.json +0 -1
  231. package/dist/collection/components/accordion/accordion.ios.css +58 -73
  232. package/dist/collection/components/accordion/accordion.js +26 -36
  233. package/dist/collection/components/accordion/accordion.md.css +59 -67
  234. package/dist/collection/components/accordion-group/accordion-group.ios.css +4 -16
  235. package/dist/collection/components/accordion-group/accordion-group.js +8 -44
  236. package/dist/collection/components/accordion-group/accordion-group.md.css +4 -22
  237. package/dist/collection/components/action-sheet/action-sheet.ios.css +6 -18
  238. package/dist/collection/components/action-sheet/action-sheet.js +13 -17
  239. package/dist/collection/components/action-sheet/action-sheet.md.css +5 -17
  240. package/dist/collection/components/alert/alert.ios.css +1 -19
  241. package/dist/collection/components/alert/alert.js +13 -16
  242. package/dist/collection/components/alert/alert.md.css +1 -19
  243. package/dist/collection/components/app/app.js +78 -15
  244. package/dist/collection/components/avatar/avatar.ios.css +33 -7
  245. package/dist/collection/components/avatar/avatar.js +4 -120
  246. package/dist/collection/components/avatar/avatar.md.css +0 -51
  247. package/dist/collection/components/back-button/back-button.ios.css +48 -60
  248. package/dist/collection/components/back-button/back-button.js +19 -27
  249. package/dist/collection/components/back-button/back-button.md.css +48 -60
  250. package/dist/collection/components/backdrop/backdrop.ios.css +19 -56
  251. package/dist/collection/components/backdrop/backdrop.js +6 -12
  252. package/dist/collection/components/backdrop/backdrop.md.css +19 -56
  253. package/dist/collection/components/badge/badge.ios.css +12 -139
  254. package/dist/collection/components/badge/badge.js +9 -145
  255. package/dist/collection/components/badge/badge.md.css +12 -123
  256. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +8 -20
  257. package/dist/collection/components/breadcrumb/breadcrumb.js +11 -43
  258. package/dist/collection/components/breadcrumb/breadcrumb.md.css +8 -20
  259. package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +0 -6
  260. package/dist/collection/components/breadcrumbs/breadcrumbs.js +9 -11
  261. package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +0 -6
  262. package/dist/collection/components/button/button.ios.css +46 -135
  263. package/dist/collection/components/button/button.js +17 -48
  264. package/dist/collection/components/button/button.md.css +50 -126
  265. package/dist/collection/components/buttons/buttons.ios.css +7 -59
  266. package/dist/collection/components/buttons/buttons.js +9 -15
  267. package/dist/collection/components/buttons/buttons.md.css +3 -55
  268. package/dist/collection/components/card/card.ios.css +14 -65
  269. package/dist/collection/components/card/card.js +10 -41
  270. package/dist/collection/components/card/card.md.css +14 -65
  271. package/dist/collection/components/card-content/card-content.ios.css +1 -16
  272. package/dist/collection/components/card-content/card-content.js +8 -11
  273. package/dist/collection/components/card-content/card-content.md.css +1 -16
  274. package/dist/collection/components/card-header/card-header.ios.css +15 -27
  275. package/dist/collection/components/card-header/card-header.js +10 -13
  276. package/dist/collection/components/card-header/card-header.md.css +15 -27
  277. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +0 -12
  278. package/dist/collection/components/card-subtitle/card-subtitle.js +8 -11
  279. package/dist/collection/components/card-subtitle/card-subtitle.md.css +0 -12
  280. package/dist/collection/components/card-title/card-title.ios.css +0 -73
  281. package/dist/collection/components/card-title/card-title.js +8 -11
  282. package/dist/collection/components/card-title/card-title.md.css +0 -73
  283. package/dist/collection/components/checkbox/checkbox.ios.css +101 -161
  284. package/dist/collection/components/checkbox/checkbox.js +14 -70
  285. package/dist/collection/components/checkbox/checkbox.md.css +102 -162
  286. package/dist/collection/components/chip/chip.ios.css +14 -67
  287. package/dist/collection/components/chip/chip.js +8 -108
  288. package/dist/collection/components/chip/chip.md.css +14 -67
  289. package/dist/collection/components/col/col.css +4 -192
  290. package/dist/collection/components/col/col.js +61 -210
  291. package/dist/collection/components/content/content.css +2 -8
  292. package/dist/collection/components/content/content.js +11 -16
  293. package/dist/collection/components/datetime/datetime.ios.css +96 -258
  294. package/dist/collection/components/datetime/datetime.js +20 -98
  295. package/dist/collection/components/datetime/datetime.md.css +96 -258
  296. package/dist/collection/components/datetime/utils/data.js +5 -5
  297. package/dist/collection/components/datetime-button/datetime-button.ios.css +0 -6
  298. package/dist/collection/components/datetime-button/datetime-button.js +8 -11
  299. package/dist/collection/components/datetime-button/datetime-button.md.css +0 -6
  300. package/dist/collection/components/fab/fab.css +1 -25
  301. package/dist/collection/components/fab/fab.js +5 -9
  302. package/dist/collection/components/fab-button/fab-button.ios.css +6 -18
  303. package/dist/collection/components/fab-button/fab-button.js +21 -36
  304. package/dist/collection/components/fab-button/fab-button.md.css +8 -20
  305. package/dist/collection/components/fab-list/fab-list.css +0 -12
  306. package/dist/collection/components/fab-list/fab-list.js +5 -9
  307. package/dist/collection/components/footer/footer.ios.css +2 -14
  308. package/dist/collection/components/footer/footer.js +16 -21
  309. package/dist/collection/components/footer/footer.md.css +0 -12
  310. package/dist/collection/components/grid/grid.css +0 -12
  311. package/dist/collection/components/grid/grid.js +5 -9
  312. package/dist/collection/components/header/header.ios.css +10 -25
  313. package/dist/collection/components/header/header.js +19 -50
  314. package/dist/collection/components/header/header.md.css +8 -23
  315. package/dist/collection/components/header/header.utils.js +5 -5
  316. package/dist/collection/components/img/img.js +2 -8
  317. package/dist/collection/components/infinite-scroll/infinite-scroll.js +5 -100
  318. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +0 -12
  319. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +10 -16
  320. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +0 -12
  321. package/dist/collection/components/input/input.ios.css +140 -223
  322. package/dist/collection/components/input/input.js +38 -149
  323. package/dist/collection/components/input/input.md.css +212 -193
  324. package/dist/collection/components/input-otp/input-otp.ios.css +60 -102
  325. package/dist/collection/components/input-otp/input-otp.js +5 -7
  326. package/dist/collection/components/input-otp/input-otp.md.css +60 -102
  327. package/dist/collection/components/input-password-toggle/input-password-toggle.js +12 -48
  328. package/dist/collection/components/item/item.ios.css +69 -109
  329. package/dist/collection/components/item/item.js +20 -51
  330. package/dist/collection/components/item/item.md.css +68 -120
  331. package/dist/collection/components/item-divider/item-divider.ios.css +0 -18
  332. package/dist/collection/components/item-divider/item-divider.js +8 -11
  333. package/dist/collection/components/item-divider/item-divider.md.css +0 -18
  334. package/dist/collection/components/item-group/item-group.ios.css +0 -12
  335. package/dist/collection/components/item-group/item-group.js +7 -13
  336. package/dist/collection/components/item-group/item-group.md.css +0 -12
  337. package/dist/collection/components/item-option/item-option.ios.css +29 -136
  338. package/dist/collection/components/item-option/item-option.js +9 -73
  339. package/dist/collection/components/item-option/item-option.md.css +29 -136
  340. package/dist/collection/components/item-options/item-options.ios.css +34 -77
  341. package/dist/collection/components/item-options/item-options.js +7 -13
  342. package/dist/collection/components/item-options/item-options.md.css +34 -77
  343. package/dist/collection/components/item-sliding/item-sliding.css +0 -6
  344. package/dist/collection/components/item-sliding/item-sliding.js +4 -8
  345. package/dist/collection/components/label/label.ios.css +0 -18
  346. package/dist/collection/components/label/label.js +8 -11
  347. package/dist/collection/components/label/label.md.css +0 -18
  348. package/dist/collection/components/list/list.ios.css +14 -54
  349. package/dist/collection/components/list/list.js +9 -48
  350. package/dist/collection/components/list/list.md.css +16 -56
  351. package/dist/collection/components/list-header/list-header.ios.css +38 -82
  352. package/dist/collection/components/list-header/list-header.js +8 -11
  353. package/dist/collection/components/list-header/list-header.md.css +38 -82
  354. package/dist/collection/components/loading/loading.ios.css +1 -13
  355. package/dist/collection/components/loading/loading.js +11 -14
  356. package/dist/collection/components/loading/loading.md.css +1 -13
  357. package/dist/collection/components/menu/menu.ios.css +3 -15
  358. package/dist/collection/components/menu/menu.js +7 -12
  359. package/dist/collection/components/menu/menu.md.css +3 -15
  360. package/dist/collection/components/menu-button/menu-button.ios.css +14 -48
  361. package/dist/collection/components/menu-button/menu-button.js +10 -26
  362. package/dist/collection/components/menu-button/menu-button.md.css +15 -49
  363. package/dist/collection/components/menu-toggle/menu-toggle.js +5 -8
  364. package/dist/collection/components/modal/animations/sheet.js +2 -8
  365. package/dist/collection/components/modal/gestures/sheet.js +6 -10
  366. package/dist/collection/components/modal/modal.ios.css +70 -174
  367. package/dist/collection/components/modal/modal.js +11 -48
  368. package/dist/collection/components/modal/modal.md.css +70 -174
  369. package/dist/collection/components/nav/nav.css +1 -7
  370. package/dist/collection/components/nav/nav.js +5 -11
  371. package/dist/collection/components/nav-link/nav-link.js +1 -5
  372. package/dist/collection/components/note/note.ios.css +0 -12
  373. package/dist/collection/components/note/note.js +8 -11
  374. package/dist/collection/components/note/note.md.css +0 -12
  375. package/dist/collection/components/picker/picker.ios.css +3 -15
  376. package/dist/collection/components/picker/picker.js +5 -8
  377. package/dist/collection/components/picker/picker.md.css +3 -15
  378. package/dist/collection/components/picker-column/picker-column.css +2 -9
  379. package/dist/collection/components/picker-column/picker-column.js +7 -8
  380. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +0 -6
  381. package/dist/collection/components/picker-column-option/picker-column-option.js +7 -13
  382. package/dist/collection/components/picker-column-option/picker-column-option.md.css +0 -6
  383. package/dist/collection/components/picker-legacy/picker.ios.css +1 -13
  384. package/dist/collection/components/picker-legacy/picker.js +6 -7
  385. package/dist/collection/components/picker-legacy/picker.md.css +1 -13
  386. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +0 -12
  387. package/dist/collection/components/picker-legacy-column/picker-column.js +4 -4
  388. package/dist/collection/components/picker-legacy-column/picker-column.md.css +0 -12
  389. package/dist/collection/components/popover/popover.ios.css +1 -13
  390. package/dist/collection/components/popover/popover.js +14 -17
  391. package/dist/collection/components/popover/popover.md.css +1 -13
  392. package/dist/collection/components/progress-bar/progress-bar.ios.css +17 -48
  393. package/dist/collection/components/progress-bar/progress-bar.js +7 -43
  394. package/dist/collection/components/progress-bar/progress-bar.md.css +17 -48
  395. package/dist/collection/components/radio/radio.ios.css +91 -134
  396. package/dist/collection/components/radio/radio.js +9 -12
  397. package/dist/collection/components/radio/radio.md.css +91 -134
  398. package/dist/collection/components/radio-group/radio-group.ios.css +23 -43
  399. package/dist/collection/components/radio-group/radio-group.js +6 -21
  400. package/dist/collection/components/radio-group/radio-group.md.css +23 -43
  401. package/dist/collection/components/range/range.ios.css +85 -128
  402. package/dist/collection/components/range/range.js +9 -12
  403. package/dist/collection/components/range/range.md.css +85 -128
  404. package/dist/collection/components/refresher/refresher.ios.css +1 -14
  405. package/dist/collection/components/refresher/refresher.js +8 -11
  406. package/dist/collection/components/refresher/refresher.md.css +2 -15
  407. package/dist/collection/components/refresher-content/refresher-content.js +7 -28
  408. package/dist/collection/components/reorder/reorder.ios.css +0 -6
  409. package/dist/collection/components/reorder/reorder.js +6 -33
  410. package/dist/collection/components/reorder/reorder.md.css +0 -6
  411. package/dist/collection/components/reorder-group/reorder-group.css +0 -6
  412. package/dist/collection/components/reorder-group/reorder-group.js +4 -8
  413. package/dist/collection/components/ripple-effect/{ripple-effect.common.css → ripple-effect.css} +1 -7
  414. package/dist/collection/components/ripple-effect/ripple-effect.js +6 -14
  415. package/dist/collection/components/route/route.js +0 -4
  416. package/dist/collection/components/router/router.js +0 -4
  417. package/dist/collection/components/router-link/router-link.css +2 -8
  418. package/dist/collection/components/router-link/router-link.js +5 -9
  419. package/dist/collection/components/router-outlet/router-outlet.css +1 -7
  420. package/dist/collection/components/router-outlet/router-outlet.js +3 -6
  421. package/dist/collection/components/row/row.css +0 -16
  422. package/dist/collection/components/row/row.js +2 -9
  423. package/dist/collection/components/searchbar/searchbar.ios.css +18 -56
  424. package/dist/collection/components/searchbar/searchbar.js +34 -181
  425. package/dist/collection/components/searchbar/searchbar.md.css +18 -56
  426. package/dist/collection/components/segment/segment.ios.css +2 -45
  427. package/dist/collection/components/segment/segment.js +8 -11
  428. package/dist/collection/components/segment/segment.md.css +2 -45
  429. package/dist/collection/components/segment-button/segment-button.ios.css +105 -146
  430. package/dist/collection/components/segment-button/segment-button.js +8 -11
  431. package/dist/collection/components/segment-button/segment-button.md.css +107 -148
  432. package/dist/collection/components/segment-content/segment-content.js +1 -1
  433. package/dist/collection/components/segment-view/segment-view.ios.css +0 -6
  434. package/dist/collection/components/segment-view/segment-view.js +4 -6
  435. package/dist/collection/components/segment-view/segment-view.md.css +0 -6
  436. package/dist/collection/components/select/select.ios.css +176 -315
  437. package/dist/collection/components/select/select.js +53 -156
  438. package/dist/collection/components/select/select.md.css +178 -331
  439. package/dist/collection/components/select-modal/select-modal.ios.css +0 -18
  440. package/dist/collection/components/select-modal/select-modal.js +4 -11
  441. package/dist/collection/components/select-modal/select-modal.md.css +3 -7
  442. package/dist/collection/components/select-option/select-option.js +2 -9
  443. package/dist/collection/components/select-popover/select-popover.ios.css +0 -18
  444. package/dist/collection/components/select-popover/select-popover.js +4 -12
  445. package/dist/collection/components/select-popover/select-popover.md.css +0 -18
  446. package/dist/collection/components/skeleton-text/skeleton-text.css +0 -6
  447. package/dist/collection/components/skeleton-text/skeleton-text.js +5 -9
  448. package/dist/collection/components/spinner/{spinner.ionic.css → spinner.css} +10 -77
  449. package/dist/collection/components/spinner/spinner.js +6 -47
  450. package/dist/collection/components/split-pane/split-pane.ios.css +2 -20
  451. package/dist/collection/components/split-pane/split-pane.js +8 -14
  452. package/dist/collection/components/split-pane/split-pane.md.css +2 -20
  453. package/dist/collection/components/tab/tab.js +2 -6
  454. package/dist/collection/components/tab-bar/tab-bar.ios.css +43 -71
  455. package/dist/collection/components/tab-bar/tab-bar.js +11 -78
  456. package/dist/collection/components/tab-bar/tab-bar.md.css +43 -71
  457. package/dist/collection/components/tab-button/tab-button.ios.css +95 -171
  458. package/dist/collection/components/tab-button/tab-button.js +9 -54
  459. package/dist/collection/components/tab-button/tab-button.md.css +93 -137
  460. package/dist/collection/components/tabs/tabs.css +1 -7
  461. package/dist/collection/components/tabs/tabs.js +1 -4
  462. package/dist/collection/components/text/text.css +0 -6
  463. package/dist/collection/components/text/text.js +6 -7
  464. package/dist/collection/components/textarea/textarea.ios.css +142 -283
  465. package/dist/collection/components/textarea/textarea.js +24 -146
  466. package/dist/collection/components/textarea/textarea.md.css +143 -297
  467. package/dist/collection/components/thumbnail/thumbnail.css +0 -6
  468. package/dist/collection/components/thumbnail/thumbnail.js +2 -9
  469. package/dist/collection/components/title/title.ios.css +4 -32
  470. package/dist/collection/components/title/title.js +7 -13
  471. package/dist/collection/components/title/title.md.css +4 -32
  472. package/dist/collection/components/toast/animations/utils.js +1 -1
  473. package/dist/collection/components/toast/toast.ios.css +45 -84
  474. package/dist/collection/components/toast/toast.js +12 -75
  475. package/dist/collection/components/toast/toast.md.css +45 -84
  476. package/dist/collection/components/toggle/toggle.ios.css +131 -247
  477. package/dist/collection/components/toggle/toggle.js +18 -73
  478. package/dist/collection/components/toggle/toggle.md.css +131 -244
  479. package/dist/collection/components/toolbar/toolbar.ios.css +47 -90
  480. package/dist/collection/components/toolbar/toolbar.js +13 -157
  481. package/dist/collection/components/toolbar/toolbar.md.css +47 -90
  482. package/dist/collection/global/ionic-global.js +13 -228
  483. package/dist/collection/utils/focus-trap.js +2 -13
  484. package/dist/collection/utils/focus-visible.js +0 -22
  485. package/dist/collection/utils/forms/validity.js +0 -31
  486. package/dist/collection/utils/framework-delegate.js +1 -3
  487. package/dist/collection/utils/helpers.js +3 -57
  488. package/dist/collection/utils/keyboard/keyboard-controller.js +1 -3
  489. package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
  490. package/dist/collection/utils/menu-controller/animations/push.js +1 -2
  491. package/dist/collection/utils/menu-controller/animations/reveal.js +1 -2
  492. package/dist/collection/utils/overlays.js +1 -82
  493. package/dist/collection/utils/test/playwright/generator.js +23 -48
  494. package/dist/collection/utils/test/playwright/page/utils/goto.js +5 -14
  495. package/dist/collection/utils/test/playwright/page/utils/set-content.js +3 -26
  496. package/dist/collection/utils/transition/ios.transition.js +0 -1
  497. package/dist/docs.json +377 -8263
  498. package/dist/esm/{animation-DR5OwIG7.js → animation-Dt8bGnA-.js} +2 -2
  499. package/dist/esm/{app-globals-tUwaabUU.js → app-globals-BDSf8fOA.js} +1 -1
  500. package/dist/esm/{button-active-CegK1Ga3.js → button-active-L570Swow.js} +2 -2
  501. package/dist/esm/{capacitor-Ap5mZl6I.js → capacitor-CFERIeaU.js} +1 -1
  502. package/dist/esm/{config-DK9FWNvn.js → config-mCdtaoPe.js} +1 -1
  503. package/dist/esm/{data-B5lRlGxI.js → data-DCORV9FH.js} +6 -6
  504. package/dist/{cjs/focus-visible-BIj-I3-C.js → esm/focus-visible-BmVRXR1y.js} +1 -27
  505. package/dist/esm/{framework-delegate-Dx6tn-_w.js → framework-delegate-BYawdMXj.js} +2 -4
  506. package/dist/esm/{haptic-hXtWLcs-.js → haptic-DzAMWJuk.js} +1 -1
  507. package/dist/esm/hardware-back-button-CPLxO-Ev.js +115 -0
  508. package/dist/esm/{helpers-6l6yFg3S.js → helpers-DEn3pfjm.js} +4 -57
  509. package/dist/esm/{index-CXCvNx5X.js → index-Bs3kT4bc.js} +2 -2
  510. package/dist/esm/{index-gD7P82jx.js → index-C8IsBmNU.js} +4 -41
  511. package/dist/esm/{index-CH4BJAR9.js → index-CvDIirVx.js} +11 -11
  512. package/dist/esm/{index-COG0_eom.js → index-DV3sJJW8.js} +1 -1
  513. package/dist/esm/index-ZjP4CjeZ.js +7 -0
  514. package/dist/esm/{index-CAS79tvr.js → index-ceb5RaMT.js} +3 -4
  515. package/dist/esm/{index-BVnPBHWX.js → index-r2D9DEro.js} +4 -4
  516. package/dist/esm/index.js +13 -12
  517. package/dist/esm/{input-shims-DFQmNfaZ.js → input-shims-DyOpfTg6.js} +6 -7
  518. package/dist/esm/{input.utils-85zOntcN.js → input.utils-DrvTa8gz.js} +3 -3
  519. package/dist/esm/ion-accordion_2.entry.js +28 -57
  520. package/dist/esm/ion-action-sheet.entry.js +21 -24
  521. package/dist/esm/ion-alert.entry.js +22 -24
  522. package/dist/esm/ion-app_8.entry.js +151 -250
  523. package/dist/esm/ion-avatar_3.entry.js +13 -125
  524. package/dist/esm/ion-back-button.entry.js +21 -30
  525. package/dist/esm/ion-backdrop.entry.js +7 -10
  526. package/dist/esm/ion-breadcrumb_2.entry.js +17 -53
  527. package/dist/esm/ion-button_2.entry.js +12 -44
  528. package/dist/esm/ion-card_5.entry.js +30 -54
  529. package/dist/esm/ion-checkbox.entry.js +15 -33
  530. package/dist/esm/ion-chip.entry.js +8 -49
  531. package/dist/esm/ion-col_3.entry.js +57 -54
  532. package/dist/esm/ion-datetime-button.entry.js +8 -12
  533. package/dist/esm/ion-datetime_3.entry.js +40 -115
  534. package/dist/esm/ion-fab_3.entry.js +27 -43
  535. package/dist/esm/ion-img.entry.js +4 -8
  536. package/dist/esm/ion-infinite-scroll_2.entry.js +16 -91
  537. package/dist/esm/ion-input-otp.entry.js +8 -12
  538. package/dist/esm/ion-input-password-toggle.entry.js +14 -52
  539. package/dist/esm/ion-input.entry.js +33 -123
  540. package/dist/esm/ion-item-option_3.entry.js +20 -49
  541. package/dist/esm/ion-item_8.entry.js +48 -115
  542. package/dist/esm/ion-loading.entry.js +17 -19
  543. package/dist/esm/ion-menu_3.entry.js +28 -46
  544. package/dist/esm/ion-modal.entry.js +30 -57
  545. package/dist/esm/ion-nav_2.entry.js +11 -14
  546. package/dist/esm/ion-picker-column-option.entry.js +7 -11
  547. package/dist/esm/ion-picker-column.entry.js +12 -12
  548. package/dist/esm/ion-picker.entry.js +6 -10
  549. package/dist/esm/ion-popover.entry.js +17 -19
  550. package/dist/esm/ion-progress-bar.entry.js +8 -26
  551. package/dist/esm/ion-radio_2.entry.js +16 -26
  552. package/dist/esm/ion-range.entry.js +11 -15
  553. package/dist/esm/ion-refresher_2.entry.js +21 -39
  554. package/dist/esm/ion-reorder_2.entry.js +14 -38
  555. package/dist/esm/ion-ripple-effect.entry.js +7 -15
  556. package/dist/esm/ion-route_4.entry.js +8 -9
  557. package/dist/esm/ion-searchbar.entry.js +24 -137
  558. package/dist/esm/ion-segment-content.entry.js +2 -2
  559. package/dist/esm/ion-segment-view.entry.js +3 -6
  560. package/dist/esm/ion-segment_2.entry.js +15 -22
  561. package/dist/esm/ion-select-modal.entry.js +11 -17
  562. package/dist/esm/ion-select_3.entry.js +41 -132
  563. package/dist/esm/ion-spinner.entry.js +7 -29
  564. package/dist/esm/ion-split-pane.entry.js +9 -12
  565. package/dist/esm/ion-tab-bar_2.entry.js +22 -76
  566. package/dist/esm/ion-tab_2.entry.js +7 -8
  567. package/dist/esm/ion-text.entry.js +6 -6
  568. package/dist/esm/ion-textarea.entry.js +22 -117
  569. package/dist/esm/ion-toast.entry.js +19 -42
  570. package/dist/esm/ion-toggle.entry.js +24 -81
  571. package/dist/esm/ionic-global-CDrldh-5.js +146 -0
  572. package/dist/esm/ionic.js +5 -5
  573. package/dist/esm/{ios.transition-mZDQgHke.js → ios.transition-BDzw0_Hm.js} +5 -7
  574. package/dist/esm/{keyboard-NoPSnHZy.js → keyboard-CUw4ekVy.js} +1 -1
  575. package/dist/esm/{keyboard-controller-D5zoL0pZ.js → keyboard-controller-BaaVITYt.js} +3 -5
  576. package/dist/esm/{keyboard-BBx8cd5K.js → keyboard-ywgs5efA.js} +3 -4
  577. package/dist/esm/loader.js +5 -5
  578. package/dist/esm/{md.transition-DOqTLNQU.js → md.transition-BzDYi3qq.js} +5 -6
  579. package/dist/esm/{notch-controller-C7UVCCo4.js → notch-controller-BwelN_JM.js} +2 -2
  580. package/dist/esm/{overlays-DvZf7QU-.js → overlays-DCabi1dI.js} +9 -99
  581. package/dist/esm/{status-tap-BAJGCN-1.js → status-tap-5DQ7Fc4V.js} +3 -4
  582. package/dist/esm/{swipe-back-bZ7qcCmT.js → swipe-back-BKw2CAHc.js} +2 -3
  583. package/dist/esm/validity-DJztqcrH.js +17 -0
  584. package/dist/html.html-data.json +214 -2520
  585. package/dist/ionic/index.esm.js +1 -1
  586. package/dist/ionic/ionic.esm.js +1 -1
  587. package/dist/ionic/p-020af078.entry.js +4 -0
  588. package/dist/ionic/p-074839fc.entry.js +4 -0
  589. package/dist/ionic/p-07753df3.entry.js +4 -0
  590. package/dist/ionic/p-0abeb0fc.entry.js +4 -0
  591. package/dist/ionic/p-0bf76d0f.entry.js +4 -0
  592. package/dist/ionic/p-0dfa5a37.entry.js +4 -0
  593. package/dist/ionic/p-11518b31.entry.js +4 -0
  594. package/dist/ionic/p-1647c46c.entry.js +4 -0
  595. package/dist/ionic/p-2a939845.entry.js +4 -0
  596. package/dist/ionic/p-316c0420.entry.js +4 -0
  597. package/dist/ionic/p-31f7095f.entry.js +4 -0
  598. package/dist/ionic/p-370e4237.entry.js +4 -0
  599. package/dist/ionic/p-3a6caca9.entry.js +4 -0
  600. package/dist/ionic/p-40c261a3.entry.js +4 -0
  601. package/dist/ionic/p-43ed1ef5.entry.js +4 -0
  602. package/dist/ionic/p-46d74291.entry.js +4 -0
  603. package/dist/ionic/p-49d06882.entry.js +4 -0
  604. package/dist/ionic/p-4b658a7c.entry.js +4 -0
  605. package/dist/ionic/p-4e41ea20.entry.js +4 -0
  606. package/dist/ionic/p-51a60e0f.entry.js +4 -0
  607. package/dist/ionic/p-576e0965.entry.js +4 -0
  608. package/dist/ionic/p-582824c5.entry.js +4 -0
  609. package/dist/ionic/p-6241ce47.entry.js +4 -0
  610. package/dist/ionic/p-639dd543.entry.js +4 -0
  611. package/dist/ionic/p-6444c606.entry.js +4 -0
  612. package/dist/ionic/p-675b1a31.entry.js +4 -0
  613. package/dist/ionic/p-6d070558.entry.js +4 -0
  614. package/dist/ionic/p-7268efa5.entry.js +4 -0
  615. package/dist/ionic/p-72c38b88.entry.js +4 -0
  616. package/dist/ionic/p-75ae4733.entry.js +4 -0
  617. package/dist/ionic/p-79bd78f9.entry.js +4 -0
  618. package/dist/ionic/p-86f53961.entry.js +4 -0
  619. package/dist/ionic/p-94de5cfa.entry.js +4 -0
  620. package/dist/ionic/p-9575b654.entry.js +4 -0
  621. package/dist/ionic/p-9eeaBrnk.js +4 -0
  622. package/dist/ionic/p-B0q1YL7N.js +4 -0
  623. package/dist/ionic/p-BFvmZNyx.js +4 -0
  624. package/dist/ionic/p-BKc55Xev.js +4 -0
  625. package/dist/ionic/p-BOVrCkpJ.js +4 -0
  626. package/dist/ionic/{p-BsbREiiN.js → p-BYEqWnSg.js} +1 -1
  627. package/dist/ionic/p-BmVRXR1y.js +4 -0
  628. package/dist/ionic/p-Bmgaetn_.js +4 -0
  629. package/dist/ionic/p-C6F4hat2.js +4 -0
  630. package/dist/ionic/p-C7hRNDhM.js +4 -0
  631. package/dist/ionic/p-C8IsBmNU.js +5 -0
  632. package/dist/ionic/p-CIGNaXM1.js +4 -0
  633. package/dist/ionic/{p-CH8-5k8b.js → p-CJxh_yLS.js} +1 -1
  634. package/dist/ionic/{p-qNBpc0Qq.js → p-CKvCXMs9.js} +1 -1
  635. package/dist/ionic/p-CTfR9YZG.js +4 -0
  636. package/dist/ionic/p-CtWGkNnJ.js +4 -0
  637. package/dist/ionic/{p-CYW7idR0.js → p-CwgG81ZD.js} +1 -1
  638. package/dist/ionic/p-D-eFFUkA.js +4 -0
  639. package/dist/ionic/{p-CDRncjej.js → p-D0dMcSkw.js} +1 -1
  640. package/dist/ionic/{p-DMo2WKG5.js → p-D13Eaw-8.js} +1 -1
  641. package/dist/ionic/p-DCv9sLH2.js +4 -0
  642. package/dist/ionic/p-DDb5r57F.js +4 -0
  643. package/dist/ionic/p-DJztqcrH.js +4 -0
  644. package/dist/ionic/p-DNcfiJwE.js +4 -0
  645. package/dist/ionic/p-DUt5fQmA.js +4 -0
  646. package/dist/ionic/{p-COG0_eom.js → p-DV3sJJW8.js} +1 -1
  647. package/dist/ionic/p-DZRJwG4S.js +4 -0
  648. package/dist/ionic/{p-Cv5jk_TK.js → p-DbQ5QkTP.js} +1 -1
  649. package/dist/ionic/{p-Bmh46Fz0.js → p-Dc45iWE4.js} +1 -1
  650. package/dist/ionic/p-QHYY4sjU.js +4 -0
  651. package/dist/ionic/p-ZjP4CjeZ.js +4 -0
  652. package/dist/ionic/p-a127bee2.entry.js +4 -0
  653. package/dist/ionic/p-a8ed848b.entry.js +4 -0
  654. package/dist/ionic/p-ac4eb91d.entry.js +4 -0
  655. package/dist/ionic/p-b0a7585c.entry.js +4 -0
  656. package/dist/ionic/p-b57c6d3e.entry.js +4 -0
  657. package/dist/ionic/p-c19f63d0.entry.js +4 -0
  658. package/dist/ionic/p-c85a2127.entry.js +4 -0
  659. package/dist/ionic/p-cc45bcbc.entry.js +4 -0
  660. package/dist/ionic/p-cebb0328.entry.js +4 -0
  661. package/dist/ionic/p-d0a2a1ab.entry.js +4 -0
  662. package/dist/ionic/p-d126e8d3.entry.js +4 -0
  663. package/dist/ionic/p-d1f54e28.entry.js +4 -0
  664. package/dist/ionic/p-d3014190.entry.js +4 -0
  665. package/dist/ionic/p-da7d04cc.entry.js +4 -0
  666. package/dist/ionic/p-dbbe606a.entry.js +4 -0
  667. package/dist/ionic/p-ea509e3c.entry.js +4 -0
  668. package/dist/ionic/p-ec654c42.entry.js +4 -0
  669. package/dist/ionic/p-f8f22cc0.entry.js +4 -0
  670. package/dist/types/components/accordion/accordion.d.ts +3 -5
  671. package/dist/types/components/accordion-group/accordion-group.d.ts +1 -12
  672. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +7 -3
  673. package/dist/types/components/action-sheet/action-sheet.d.ts +2 -3
  674. package/dist/types/components/alert/alert-interface.d.ts +7 -3
  675. package/dist/types/components/alert/alert.d.ts +2 -3
  676. package/dist/types/components/app/app.d.ts +2 -4
  677. package/dist/types/components/avatar/avatar.d.ts +0 -32
  678. package/dist/types/components/back-button/back-button.d.ts +1 -2
  679. package/dist/types/components/backdrop/backdrop.d.ts +0 -4
  680. package/dist/types/components/badge/badge.d.ts +1 -34
  681. package/dist/types/components/breadcrumb/breadcrumb.d.ts +1 -4
  682. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
  683. package/dist/types/components/button/button.d.ts +6 -19
  684. package/dist/types/components/buttons/buttons.d.ts +1 -5
  685. package/dist/types/components/card/card.d.ts +1 -8
  686. package/dist/types/components/card-content/card-content.d.ts +1 -2
  687. package/dist/types/components/card-header/card-header.d.ts +2 -3
  688. package/dist/types/components/card-subtitle/card-subtitle.d.ts +1 -2
  689. package/dist/types/components/card-title/card-title.d.ts +1 -2
  690. package/dist/types/components/checkbox/checkbox.d.ts +4 -14
  691. package/dist/types/components/chip/chip.d.ts +1 -26
  692. package/dist/types/components/col/col.d.ts +5 -52
  693. package/dist/types/components/content/content.d.ts +0 -3
  694. package/dist/types/components/datetime/datetime.d.ts +1 -26
  695. package/dist/types/components/datetime/utils/data.d.ts +5 -5
  696. package/dist/types/components/datetime-button/datetime-button.d.ts +1 -2
  697. package/dist/types/components/fab/fab.d.ts +0 -4
  698. package/dist/types/components/fab-button/fab-button.d.ts +3 -5
  699. package/dist/types/components/fab-list/fab-list.d.ts +0 -4
  700. package/dist/types/components/footer/footer.d.ts +3 -4
  701. package/dist/types/components/grid/grid.d.ts +0 -4
  702. package/dist/types/components/header/header.d.ts +3 -9
  703. package/dist/types/components/header/header.utils.d.ts +3 -3
  704. package/dist/types/components/img/img.d.ts +0 -3
  705. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +0 -21
  706. package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +0 -4
  707. package/dist/types/components/input/input.d.ts +5 -31
  708. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +0 -2
  709. package/dist/types/components/item/item.d.ts +4 -11
  710. package/dist/types/components/item-divider/item-divider.d.ts +1 -2
  711. package/dist/types/components/item-group/item-group.d.ts +0 -4
  712. package/dist/types/components/item-option/item-option.d.ts +1 -18
  713. package/dist/types/components/item-options/item-options.d.ts +0 -4
  714. package/dist/types/components/item-sliding/item-sliding.d.ts +0 -4
  715. package/dist/types/components/label/label.d.ts +1 -2
  716. package/dist/types/components/list/list.d.ts +1 -15
  717. package/dist/types/components/list-header/list-header.d.ts +1 -2
  718. package/dist/types/components/loading/loading-interface.d.ts +7 -2
  719. package/dist/types/components/loading/loading.d.ts +2 -3
  720. package/dist/types/components/menu/menu.d.ts +0 -3
  721. package/dist/types/components/menu-button/menu-button.d.ts +1 -3
  722. package/dist/types/components/menu-toggle/menu-toggle.d.ts +0 -3
  723. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  724. package/dist/types/components/modal/modal-interface.d.ts +7 -4
  725. package/dist/types/components/modal/modal.d.ts +1 -11
  726. package/dist/types/components/nav/nav-interface.d.ts +1 -9
  727. package/dist/types/components/nav/nav.d.ts +1 -5
  728. package/dist/types/components/nav-link/nav-link.d.ts +0 -4
  729. package/dist/types/components/note/note.d.ts +1 -2
  730. package/dist/types/components/picker/picker.d.ts +1 -2
  731. package/dist/types/components/picker-column/picker-column.d.ts +1 -2
  732. package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -4
  733. package/dist/types/components/picker-legacy/picker.d.ts +1 -2
  734. package/dist/types/components/popover/popover-interface.d.ts +6 -3
  735. package/dist/types/components/popover/popover.d.ts +5 -6
  736. package/dist/types/components/progress-bar/progress-bar.d.ts +1 -10
  737. package/dist/types/components/radio/radio.d.ts +1 -2
  738. package/dist/types/components/radio-group/radio-group.d.ts +0 -8
  739. package/dist/types/components/range/range.d.ts +1 -2
  740. package/dist/types/components/refresher/refresher.d.ts +1 -2
  741. package/dist/types/components/refresher-content/refresher-content.d.ts +0 -4
  742. package/dist/types/components/reorder/reorder.d.ts +0 -9
  743. package/dist/types/components/reorder-group/reorder-group.d.ts +0 -4
  744. package/dist/types/components/ripple-effect/ripple-effect.d.ts +0 -4
  745. package/dist/types/components/route/route.d.ts +0 -4
  746. package/dist/types/components/router/router.d.ts +0 -4
  747. package/dist/types/components/router-link/router-link.d.ts +0 -4
  748. package/dist/types/components/router-outlet/router-outlet.d.ts +1 -4
  749. package/dist/types/components/row/row.d.ts +0 -4
  750. package/dist/types/components/searchbar/searchbar.d.ts +9 -51
  751. package/dist/types/components/segment/segment.d.ts +1 -2
  752. package/dist/types/components/segment-button/segment-button.d.ts +1 -2
  753. package/dist/types/components/select/select.d.ts +13 -41
  754. package/dist/types/components/select-modal/select-modal.d.ts +0 -1
  755. package/dist/types/components/select-option/select-option.d.ts +0 -4
  756. package/dist/types/components/select-popover/select-popover.d.ts +0 -3
  757. package/dist/types/components/skeleton-text/skeleton-text.d.ts +0 -4
  758. package/dist/types/components/spinner/spinner.d.ts +0 -15
  759. package/dist/types/components/split-pane/split-pane.d.ts +0 -4
  760. package/dist/types/components/tab/tab.d.ts +0 -4
  761. package/dist/types/components/tab-bar/tab-bar.d.ts +2 -22
  762. package/dist/types/components/tab-button/tab-button.d.ts +1 -12
  763. package/dist/types/components/tabs/tabs.d.ts +0 -3
  764. package/dist/types/components/text/text.d.ts +1 -2
  765. package/dist/types/components/textarea/textarea.d.ts +4 -42
  766. package/dist/types/components/thumbnail/thumbnail.d.ts +0 -4
  767. package/dist/types/components/title/title.d.ts +0 -4
  768. package/dist/types/components/toast/animations/utils.d.ts +2 -2
  769. package/dist/types/components/toast/toast-interface.d.ts +7 -3
  770. package/dist/types/components/toast/toast.d.ts +2 -19
  771. package/dist/types/components/toggle/toggle.d.ts +1 -15
  772. package/dist/types/components/toolbar/toolbar.d.ts +3 -20
  773. package/dist/types/components.d.ts +196 -1593
  774. package/dist/types/global/ionic-global.d.ts +2 -27
  775. package/dist/types/interface.d.ts +0 -3
  776. package/dist/types/utils/config.d.ts +2 -106
  777. package/dist/types/utils/focus-trap.d.ts +1 -1
  778. package/dist/types/utils/focus-visible.d.ts +0 -13
  779. package/dist/types/utils/forms/validity.d.ts +0 -7
  780. package/dist/types/utils/helpers.d.ts +0 -11
  781. package/dist/types/utils/overlays-interface.d.ts +1 -31
  782. package/dist/types/utils/test/playwright/generator.d.ts +2 -31
  783. package/hydrate/index.js +964 -3099
  784. package/hydrate/index.mjs +964 -3099
  785. package/package.json +4 -8
  786. package/components/caret-down.js +0 -6
  787. package/components/caret-left.js +0 -6
  788. package/components/caret-right.js +0 -6
  789. package/components/ion-divider.d.ts +0 -11
  790. package/components/ion-divider.js +0 -72
  791. package/components/list2.js +0 -6
  792. package/components/x.js +0 -6
  793. package/css/ionic/bundle.ionic.css +0 -1
  794. package/css/ionic/bundle.ionic.css.map +0 -1
  795. package/css/ionic/core.ionic.css +0 -1
  796. package/css/ionic/core.ionic.css.map +0 -1
  797. package/css/ionic/global.bundle.ionic.css +0 -1
  798. package/css/ionic/global.bundle.ionic.css.map +0 -1
  799. package/css/ionic/ionic-swiper.ionic.css +0 -1
  800. package/css/ionic/ionic-swiper.ionic.css.map +0 -1
  801. package/css/ionic/link.ionic.css +0 -1
  802. package/css/ionic/link.ionic.css.map +0 -1
  803. package/css/ionic/structure.ionic.css +0 -1
  804. package/css/ionic/structure.ionic.css.map +0 -1
  805. package/css/ionic/typography.ionic.css +0 -1
  806. package/css/ionic/typography.ionic.css.map +0 -1
  807. package/css/ionic/utils.bundle.ionic.css +0 -1
  808. package/css/ionic/utils.bundle.ionic.css.map +0 -1
  809. package/dist/cjs/caret-down-vtVgfXIs.js +0 -8
  810. package/dist/cjs/caret-left-CxZXLRv5.js +0 -8
  811. package/dist/cjs/caret-right-CRCgv98E.js +0 -8
  812. package/dist/cjs/ion-divider.cjs.entry.js +0 -51
  813. package/dist/cjs/ionic-global-DlkD8-ZL.js +0 -491
  814. package/dist/cjs/list-a-7GSA6K.js +0 -8
  815. package/dist/cjs/validity-QmuwEptc.js +0 -51
  816. package/dist/cjs/x-BTF99yFH.js +0 -8
  817. package/dist/collection/components/accordion/accordion.ionic.css +0 -196
  818. package/dist/collection/components/accordion-group/accordion-group.ionic.css +0 -93
  819. package/dist/collection/components/avatar/avatar.ionic.css +0 -391
  820. package/dist/collection/components/backdrop/backdrop.ionic.css +0 -109
  821. package/dist/collection/components/badge/badge.ionic.css +0 -275
  822. package/dist/collection/components/button/button.ionic.css +0 -636
  823. package/dist/collection/components/buttons/buttons.ionic.css +0 -97
  824. package/dist/collection/components/card/card.ionic.css +0 -144
  825. package/dist/collection/components/card-content/card-content.ionic.css +0 -92
  826. package/dist/collection/components/card-header/card-header.ionic.css +0 -85
  827. package/dist/collection/components/card-subtitle/card-subtitle.ionic.css +0 -144
  828. package/dist/collection/components/checkbox/checkbox.ionic.css +0 -539
  829. package/dist/collection/components/chip/chip.ionic.css +0 -215
  830. package/dist/collection/components/datetime/datetime.ionic.css +0 -711
  831. package/dist/collection/components/divider/divider.ionic.css +0 -148
  832. package/dist/collection/components/divider/divider.ios.css +0 -87
  833. package/dist/collection/components/divider/divider.js +0 -94
  834. package/dist/collection/components/divider/divider.md.css +0 -87
  835. package/dist/collection/components/header/header.ionic.css +0 -97
  836. package/dist/collection/components/input/input.ionic.css +0 -885
  837. package/dist/collection/components/input-otp/input-otp.ionic.css +0 -369
  838. package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +0 -78
  839. package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +0 -61
  840. package/dist/collection/components/item/item.ionic.css +0 -508
  841. package/dist/collection/components/item-option/item-option.ionic.css +0 -278
  842. package/dist/collection/components/item-options/item-options.ionic.css +0 -221
  843. package/dist/collection/components/list/list.ionic.css +0 -212
  844. package/dist/collection/components/list-header/list-header.ionic.css +0 -190
  845. package/dist/collection/components/menu-button/menu-button.ionic.css +0 -236
  846. package/dist/collection/components/modal/modal.ionic.css +0 -247
  847. package/dist/collection/components/progress-bar/progress-bar.ionic.css +0 -287
  848. package/dist/collection/components/radio/radio.ionic.css +0 -422
  849. package/dist/collection/components/radio-group/radio-group.ionic.css +0 -119
  850. package/dist/collection/components/range/range.ionic.css +0 -563
  851. package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +0 -215
  852. package/dist/collection/components/searchbar/searchbar.ionic.css +0 -626
  853. package/dist/collection/components/segment/segment.ionic.css +0 -115
  854. package/dist/collection/components/segment-button/segment-button.ionic.css +0 -353
  855. package/dist/collection/components/select/select.ionic.css +0 -777
  856. package/dist/collection/components/select-modal/select-modal.ionic.css +0 -130
  857. package/dist/collection/components/spinner/spinner.native.css +0 -198
  858. package/dist/collection/components/tab-bar/tab-bar.ionic.css +0 -201
  859. package/dist/collection/components/tab-button/tab-button.ionic.css +0 -337
  860. package/dist/collection/components/textarea/textarea.ionic.css +0 -890
  861. package/dist/collection/components/title/title.ionic.css +0 -127
  862. package/dist/collection/components/toast/toast.ionic.css +0 -394
  863. package/dist/collection/components/toggle/toggle.ionic.css +0 -508
  864. package/dist/collection/components/toolbar/test/image.svg +0 -1
  865. package/dist/collection/components/toolbar/toolbar.ionic.css +0 -241
  866. package/dist/esm/caret-down-D1t981Ih.js +0 -6
  867. package/dist/esm/caret-left-fIOYmaqA.js +0 -6
  868. package/dist/esm/caret-right-BYSs-jZz.js +0 -6
  869. package/dist/esm/ion-divider.entry.js +0 -49
  870. package/dist/esm/ionic-global-C2dfEr5R.js +0 -480
  871. package/dist/esm/list-Dhi5xtNS.js +0 -6
  872. package/dist/esm/validity-BjW8SOqw.js +0 -48
  873. package/dist/esm/x-BDqjX7Z_.js +0 -6
  874. package/dist/ionic/p-01ebb298.entry.js +0 -4
  875. package/dist/ionic/p-058204d8.entry.js +0 -4
  876. package/dist/ionic/p-074b3070.entry.js +0 -4
  877. package/dist/ionic/p-0ac03d31.entry.js +0 -4
  878. package/dist/ionic/p-1552f206.entry.js +0 -4
  879. package/dist/ionic/p-2eeb3efe.entry.js +0 -4
  880. package/dist/ionic/p-35214276.entry.js +0 -4
  881. package/dist/ionic/p-354515ed.entry.js +0 -4
  882. package/dist/ionic/p-3ec68103.entry.js +0 -4
  883. package/dist/ionic/p-427c1ad4.entry.js +0 -4
  884. package/dist/ionic/p-453a5dda.entry.js +0 -4
  885. package/dist/ionic/p-45551cea.entry.js +0 -4
  886. package/dist/ionic/p-484549da.entry.js +0 -4
  887. package/dist/ionic/p-505435ca.entry.js +0 -4
  888. package/dist/ionic/p-50c72200.entry.js +0 -4
  889. package/dist/ionic/p-5189dd57.entry.js +0 -4
  890. package/dist/ionic/p-52d0d65d.entry.js +0 -4
  891. package/dist/ionic/p-59279168.entry.js +0 -4
  892. package/dist/ionic/p-59482460.entry.js +0 -4
  893. package/dist/ionic/p-5cad7882.entry.js +0 -4
  894. package/dist/ionic/p-5d4f0f1d.entry.js +0 -4
  895. package/dist/ionic/p-5fcd7b49.entry.js +0 -4
  896. package/dist/ionic/p-6760dd1e.entry.js +0 -4
  897. package/dist/ionic/p-69465c18.entry.js +0 -4
  898. package/dist/ionic/p-6c4559a0.entry.js +0 -4
  899. package/dist/ionic/p-76734290.entry.js +0 -4
  900. package/dist/ionic/p-7d15135e.entry.js +0 -4
  901. package/dist/ionic/p-80d247b1.entry.js +0 -4
  902. package/dist/ionic/p-8396abe1.entry.js +0 -4
  903. package/dist/ionic/p-86a947c1.entry.js +0 -4
  904. package/dist/ionic/p-879ce6f2.entry.js +0 -4
  905. package/dist/ionic/p-8e97391b.entry.js +0 -4
  906. package/dist/ionic/p-984df948.entry.js +0 -4
  907. package/dist/ionic/p-9a00aac8.entry.js +0 -4
  908. package/dist/ionic/p-9b5b0e6d.entry.js +0 -4
  909. package/dist/ionic/p-B9cWjC5a.js +0 -4
  910. package/dist/ionic/p-BDhPZwpV.js +0 -4
  911. package/dist/ionic/p-BDqjX7Z_.js +0 -4
  912. package/dist/ionic/p-BI1KkP1o.js +0 -4
  913. package/dist/ionic/p-BYSs-jZz.js +0 -4
  914. package/dist/ionic/p-BYnmISwy.js +0 -4
  915. package/dist/ionic/p-BjW8SOqw.js +0 -4
  916. package/dist/ionic/p-CCy93Kdo.js +0 -4
  917. package/dist/ionic/p-CSbvB5z5.js +0 -4
  918. package/dist/ionic/p-CVI6Uwrk.js +0 -4
  919. package/dist/ionic/p-CZG8whz6.js +0 -4
  920. package/dist/ionic/p-Cq6IwwGB.js +0 -4
  921. package/dist/ionic/p-Ct1oJEVo.js +0 -4
  922. package/dist/ionic/p-CtS5hTli.js +0 -4
  923. package/dist/ionic/p-D1t981Ih.js +0 -4
  924. package/dist/ionic/p-D2EO-8IE.js +0 -4
  925. package/dist/ionic/p-DIzp9O64.js +0 -4
  926. package/dist/ionic/p-DUdm2h77.js +0 -4
  927. package/dist/ionic/p-Dhi5xtNS.js +0 -4
  928. package/dist/ionic/p-DkXYG789.js +0 -4
  929. package/dist/ionic/p-We-0jbXn.js +0 -4
  930. package/dist/ionic/p-a4282459.entry.js +0 -4
  931. package/dist/ionic/p-b9ec8be1.entry.js +0 -4
  932. package/dist/ionic/p-bf2ac6e0.entry.js +0 -4
  933. package/dist/ionic/p-c12298f5.entry.js +0 -4
  934. package/dist/ionic/p-c1562e8b.entry.js +0 -4
  935. package/dist/ionic/p-c7df4ca1.entry.js +0 -4
  936. package/dist/ionic/p-cb1f3e0c.entry.js +0 -4
  937. package/dist/ionic/p-d12a71be.entry.js +0 -4
  938. package/dist/ionic/p-d249f019.entry.js +0 -4
  939. package/dist/ionic/p-de2418c7.entry.js +0 -4
  940. package/dist/ionic/p-df036563.entry.js +0 -4
  941. package/dist/ionic/p-e174f8a8.entry.js +0 -4
  942. package/dist/ionic/p-e67abd5f.entry.js +0 -4
  943. package/dist/ionic/p-e937a89a.entry.js +0 -4
  944. package/dist/ionic/p-f01c1e73.entry.js +0 -4
  945. package/dist/ionic/p-f2ba465e.entry.js +0 -4
  946. package/dist/ionic/p-f5be9d83.entry.js +0 -4
  947. package/dist/ionic/p-fIOYmaqA.js +0 -4
  948. package/dist/ionic/p-fb3b3444.entry.js +0 -4
  949. package/dist/ionic/p-gD7P82jx.js +0 -5
  950. package/dist/ionic/p-hPTD29t1.js +0 -4
  951. package/dist/ionic/p-vXpMhGrs.js +0 -4
  952. package/dist/types/components/divider/divider.d.ts +0 -20
  953. /package/dist/collection/components/{refresher-content/refresher-content.css → input-password-toggle/input-password-toggle.css} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../src/css/structure.scss","../src/themes/mixins.scss"],"names":[],"mappings":"AAOA,EACE,sBAEA,0CACA,wCACA,2BAGF,KACE,WACA,YACA,8BAEA,sBAGF,iBACE,cAGF,aACE,aAGF,KCyFE,kCACA,mCA4NE,YDpTc,ECqTd,aDrTc,ECwUhB,WDxUgB,ECyUhB,cDzUgB,ECoTd,aDnTe,ECoTf,cDpTe,ECuUjB,YDvUiB,ECwUjB,eDxUiB,EAEjB,eAEA,WACA,eACA,YACA,gBAsBA,wBAEA,kCAEA,gBAEA,0BAEA,uBAEA,yBAEA,qBAEA,2BACA,8BAEA","file":"structure.css","sourcesContent":["@import \"../themes/native/native.globals\";\n@import \"../themes/mixins\";\n\n// Structure\n// --------------------------------------------------\n// Adds structural css to the native html elements\n\n* {\n box-sizing: border-box;\n\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n -webkit-tap-highlight-color: transparent;\n -webkit-touch-callout: none;\n}\n\nhtml {\n width: 100%;\n height: 100%;\n -webkit-text-size-adjust: 100%;\n\n text-size-adjust: 100%;\n}\n\nhtml.ion-ce body {\n display: block;\n}\n\nhtml.plt-pwa {\n height: 100vh;\n}\n\nbody {\n @include font-smoothing();\n @include margin(0);\n @include padding(0);\n\n position: fixed;\n\n width: 100%;\n max-width: 100%;\n height: 100%;\n max-height: 100%;\n\n /**\n * Because body has position: fixed,\n * it should be promoted to its own\n * layer.\n *\n * WebKit does not always promote\n * the body to its own layer on page\n * load in Ionic apps. Once scrolling on\n * ion-content starts, WebKit will promote\n * body. Unfortunately, this causes a re-paint\n * which results in scrolling being halted\n * until the next user gesture.\n *\n * This impacts the Custom Elements build.\n * The lazy loaded build causes the browser to\n * re-paint during hydration which causes WebKit\n * to promote body to its own layer.\n * In the CE Build, this hydration does not\n * happen, so the additional re-paint does not occur.\n */\n transform: translateZ(0);\n\n text-rendering: optimizeLegibility;\n\n overflow: hidden;\n\n touch-action: manipulation;\n\n -webkit-user-drag: none;\n\n -ms-content-zooming: none;\n\n word-wrap: break-word;\n\n overscroll-behavior-y: none;\n -webkit-text-size-adjust: none;\n\n text-size-adjust: none;\n}\n","@use \"./functions.string\" as string;\n\n/**\n * A heuristic that applies CSS to tablet\n * viewports.\n *\n * Usage:\n * @include tablet-viewport() {\n * :host {\n * background-color: green;\n * }\n * }\n */\n@mixin tablet-viewport() {\n @media screen and (min-width: 768px) {\n @content;\n }\n}\n\n/**\n * A heuristic that applies CSS to mobile\n * viewports (i.e. phones, not tablets).\n *\n * Usage:\n * @include mobile-viewport() {\n * :host {\n * background-color: blue;\n * }\n * }\n */\n@mixin mobile-viewport() {\n @media screen and (max-width: 767px) {\n @content;\n }\n}\n\n@mixin input-cover() {\n @include position(0, null, null, 0);\n @include margin(0);\n\n position: absolute;\n\n width: 100%;\n height: 100%;\n\n border: 0;\n\n outline: none;\n\n background: transparent;\n\n cursor: pointer;\n\n appearance: none;\n\n &::-moz-focus-inner {\n border: 0;\n }\n}\n\n@mixin visually-hidden() {\n position: absolute;\n\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n\n margin: 0;\n\n padding: 0;\n\n border: 0;\n\n outline: 0;\n\n opacity: 0;\n overflow: hidden;\n clip: rect(0 0 0 0);\n\n -webkit-appearance: none;\n -moz-appearance: none;\n}\n\n@mixin text-inherit() {\n color: inherit;\n\n font-family: inherit;\n font-size: inherit;\n font-style: inherit;\n font-weight: inherit;\n\n letter-spacing: inherit;\n\n text-align: inherit;\n text-decoration: inherit;\n text-indent: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n\n white-space: inherit;\n}\n\n@mixin button-state() {\n @include position(0, 0, 0, 0);\n\n position: absolute;\n\n content: \"\";\n\n opacity: 0;\n}\n\n// Font smoothing\n// --------------------------------------------------\n\n@mixin font-smoothing() {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n}\n\n// Get the key from a map based on the index\n@function index-to-key($map, $index) {\n $keys: map-keys($map);\n\n @return nth($keys, $index);\n}\n\n// Breakpoint Mixins\n// ---------------------------------------------------------------------------------\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$screen-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// ---------------------------------------------------------------------------------\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $screen-breakpoints) {\n $min: map-get($breakpoints, $name);\n\n @return if($name != index-to-key($breakpoints, 1), $min, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $screen-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $screen-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $screen-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Maximum breakpoint width. Null for the smallest (first) breakpoint.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n//\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\t// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\t// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $screen-breakpoints) {\n $max: map-get($breakpoints, $name);\n\n @return if($max and $max > 0, $max - 0.02, null);\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $screen-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Text Direction - ltr / rtl\n//\n// CSS defaults to use the ltr css, and adds [dir=rtl] selectors\n// to override ltr defaults.\n// ----------------------------------------------------------\n\n@mixin multi-dir() {\n @content;\n\n // $root: #{&};\n // @at-root [dir] {\n // #{$root} {\n // @content;\n // }\n // }\n}\n\n@mixin rtl() {\n $root: #{&};\n\n $rootSplit: string.str-split($root, \",\");\n $selectors: #{string.add-root-selector($root, \"[dir=rtl]\")};\n $selectorsSplit: string.str-split($selectors, \",\");\n\n $hostContextSelectors: ();\n $restSelectors: ();\n $dirSelectors: ();\n\n // Selectors must be split into individual selectors in case the browser\n // doesn't support a specific selector.\n // For example, Firefox and Safari doesn't support `:host-context()`.\n // If an invalid selector is used, then the entire group of selectors\n // will be ignored.\n // @link https://www.w3.org/TR/selectors-3/#grouping\n @each $selector in $selectorsSplit {\n // Group the selectors back into a single selector to optimize the output.\n @if str-index($selector, \":host-context\") {\n $hostContextSelectors: append($hostContextSelectors, $selector, comma);\n } @else {\n // Group the selectors back into a single selector to optimize the output.\n $restSelectors: append($restSelectors, $selector, comma);\n }\n }\n\n // Supported by Chrome.\n @if length($hostContextSelectors) > 0 {\n @at-root #{$hostContextSelectors} {\n @content;\n }\n }\n\n // Supported by all browsers.\n @if length($restSelectors) > 0 {\n @at-root #{$restSelectors} {\n @content;\n }\n }\n\n // If browser can support `:dir()`, then add the `:dir()` selectors.\n @supports selector(:dir(rtl)) {\n // Adding :dir() in case the browser doesn't support `:host-context()` and does support `:dir()`.\n // `:host-context()` is added:\n // - through the `add-root-selector()` function.\n // - first so that it takes precedence over `:dir()`.\n // For example,\n // - Firefox doesn't support `:host-context()`, but does support `:dir()`.\n // - Safari doesn't support `:host-context()`, but Safari 16.4+ supports `:dir()`\n // @link https://webkit.org/blog/13966/webkit-features-in-safari-16-4/\n // -- However, there is a Webkit bug on v16 that prevents `:dir()` from working when\n // -- the app direction is changed dynamically. v17+ works fine.\n // -- @link https://bugs.webkit.org/show_bug.cgi?id=257133\n\n // Supported by Firefox.\n @at-root #{string.add-root-selector($root, \":dir(rtl)\", false)} {\n @content;\n }\n }\n}\n\n@mixin ltr() {\n @content;\n}\n\n// SVG Background Image Mixin\n// @param {string} $svg\n// ----------------------------------------------------------\n@mixin svg-background-image($svg, $flip-rtl: false) {\n $url: url-encode($svg);\n $viewBox: string.str-split(string.str-extract($svg, \"viewBox='\", \"'\"), \" \");\n\n @if $flip-rtl != true or $viewBox == null {\n @include multi-dir() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n } @else {\n $transform: \"transform='translate(#{nth($viewBox, 3)}, 0) scale(-1, 1)'\";\n $flipped-url: $svg;\n $flipped-url: string.str-replace($flipped-url, \"<path\", \"<path #{$transform}\");\n $flipped-url: string.str-replace($flipped-url, \"<line\", \"<line #{$transform}\");\n $flipped-url: string.str-replace($flipped-url, \"<polygon\", \"<polygon #{$transform}\");\n $flipped-url: url-encode($flipped-url);\n\n @include ltr() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n\n @include rtl() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$flipped-url}\");\n }\n }\n}\n\n// Add property horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin property-horizontal($prop, $start, $end: $start) {\n @if $start == 0 and $end == 0 {\n #{$prop}-left: $start;\n #{$prop}-right: $end;\n } @else {\n -webkit-#{$prop}-start: $start;\n #{$prop}-inline-start: $start;\n -webkit-#{$prop}-end: $end;\n #{$prop}-inline-end: $end;\n }\n}\n\n// Add property for all directions\n// @param {string} $prop\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// @param {boolean} $content include content or use default\n// ----------------------------------------------------------\n@mixin property($prop, $top, $end: $top, $bottom: $top, $start: $end) {\n @include property-horizontal($prop, $start, $end);\n #{$prop}-top: $top;\n #{$prop}-bottom: $bottom;\n}\n\n// Add padding horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin padding-horizontal($start, $end: $start) {\n @include property-horizontal(padding, $start, $end);\n}\n\n// Add padding for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin padding($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(padding, $top, $end, $bottom, $start);\n}\n\n// Add margin horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin margin-horizontal($start, $end: $start) {\n @include property-horizontal(margin, $start, $end);\n}\n\n// Add margin for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin margin($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(margin, $top, $end, $bottom, $start);\n}\n\n// Add position horizontal\n// @param {string} $start - amount to position start\n// @param {string} $end - amount to left: 0; end\n// ----------------------------------------------------------\n@mixin position-horizontal($start: null, $end: null) {\n @if $start == $end {\n @include multi-dir() {\n right: $end;\n left: $start;\n }\n } @else {\n @at-root {\n & {\n inset-inline-start: $start;\n inset-inline-end: $end;\n }\n }\n }\n}\n\n// Add position for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin position($top: null, $end: null, $bottom: null, $start: null) {\n @include position-horizontal($start, $end);\n top: $top;\n bottom: $bottom;\n}\n\n// Add border for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin border($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(border, $top, $end, $bottom, $start);\n}\n\n// Add border radius for all directions\n// @param {string} $top-start\n// @param {string} $top-end\n// @param {string} $bottom-end\n// @param {string} $bottom-start\n// ----------------------------------------------------------\n@mixin border-radius($top-start, $top-end: $top-start, $bottom-end: $top-start, $bottom-start: $top-end) {\n @if $top-start == $top-end and $top-start == $bottom-end and $top-start == $bottom-start {\n border-radius: $top-start;\n } @else {\n border-start-start-radius: $top-start;\n border-start-end-radius: $top-end;\n border-end-end-radius: $bottom-end;\n border-end-start-radius: $bottom-start;\n }\n}\n\n// Add direction for all directions\n// @param {string} $dir - Direction on LTR\n@mixin direction($dir) {\n $other-dir: null;\n\n @if $dir == ltr {\n $other-dir: rtl;\n } @else {\n $other-dir: ltr;\n }\n\n @include ltr() {\n direction: $dir;\n }\n\n @include rtl() {\n direction: $other-dir;\n }\n}\n\n// Add float for all directions\n// @param {string} $side\n// @param {string} $decorator - !important\n@mixin float($side, $decorator: null) {\n @if $side == start {\n @include ltr() {\n float: left $decorator;\n }\n\n @include rtl() {\n float: right $decorator;\n }\n } @else if $side == end {\n @include ltr() {\n float: right $decorator;\n }\n\n @include rtl() {\n float: left $decorator;\n }\n } @else {\n @include multi-dir() {\n float: $side $decorator;\n }\n }\n}\n\n@mixin background-position($horizontal, $horizontal-amount: null, $vertical: null, $vertical-amount: null) {\n @if $horizontal == start or $horizontal == end {\n $horizontal-ltr: null;\n $horizontal-rtl: null;\n\n @if $horizontal == start {\n $horizontal-ltr: left;\n $horizontal-rtl: right;\n } @else {\n $horizontal-ltr: right;\n $horizontal-rtl: left;\n }\n\n @include ltr() {\n background-position: $horizontal-ltr $horizontal-amount $vertical $vertical-amount;\n }\n\n @include rtl() {\n background-position: $horizontal-rtl $horizontal-amount $vertical $vertical-amount;\n }\n } @else {\n @include multi-dir() {\n background-position: $horizontal $horizontal-amount $vertical $vertical-amount;\n }\n }\n}\n\n@mixin transform-origin($x-axis, $y-axis: null) {\n @if $x-axis == start {\n @include ltr() {\n transform-origin: left $y-axis;\n }\n\n @include rtl() {\n transform-origin: right $y-axis;\n }\n } @else if $x-axis == end {\n @include ltr() {\n transform-origin: right $y-axis;\n }\n\n @include rtl() {\n transform-origin: left $y-axis;\n }\n } @else if $x-axis == left or $x-axis == right {\n @include multi-dir() {\n transform-origin: $x-axis $y-axis;\n }\n } @else {\n @include ltr() {\n transform-origin: $x-axis $y-axis;\n }\n\n @include rtl() {\n transform-origin: calc(100% - #{$x-axis}) $y-axis;\n }\n }\n}\n\n// Add transform for all directions\n// @param {string} $transforms - comma separated list of transforms\n@mixin transform($transforms...) {\n $extra: null;\n\n $x: null;\n $ltr-translate: null;\n $rtl-translate: null;\n\n @each $transform in $transforms {\n @if (str-index($transform, translate3d)) {\n $transform: string.str-replace($transform, \"translate3d(\");\n $transform: string.str-replace($transform, \")\");\n\n $coordinates: string.str-split($transform, \",\");\n\n $x: nth($coordinates, 1);\n $y: nth($coordinates, 2);\n $z: nth($coordinates, 3);\n\n $ltr-translate: translate3d($x, $y, $z);\n $rtl-translate: translate3d(calc(-1 * #{$x}), $y, $z);\n } @else {\n @if $extra == null {\n $extra: $transform;\n } @else {\n $extra: $extra $transform;\n }\n }\n }\n\n @if $x == \"0\" or $x == null {\n @include multi-dir() {\n transform: $ltr-translate $extra;\n }\n } @else {\n @include ltr() {\n transform: $ltr-translate $extra;\n }\n\n @include rtl() {\n transform: $rtl-translate $extra;\n }\n }\n}\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../src/css/structure.scss","../src/themes/ionic.mixins.scss"],"names":[],"mappings":"AAQA,EACE,sBAEA,0CACA,wCACA,2BAGF,KACE,WACA,YACA,8BAEA,sBAGF,iBACE,cAGF,aACE,aAGF,KC8EE,kCACA,mCA0NE,YDvSc,ECwSd,aDxSc,EC4ThB,WD5TgB,EC6ThB,cD7TgB,ECuSd,aDtSe,ECuSf,cDvSe,EC2TjB,YD3TiB,EC4TjB,eD5TiB,EAEjB,eAEA,WACA,eACA,YACA,gBAsBA,wBAEA,kCAEA,gBAEA,0BAEA,uBAEA,yBAEA,qBAEA,2BACA,8BAEA","file":"structure.css","sourcesContent":["@import \"../themes/ionic.globals\";\n@import \"../themes/ionic.mixins\";\n\n\n// Structure\n// --------------------------------------------------\n// Adds structural css to the native html elements\n\n* {\n box-sizing: border-box;\n\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n -webkit-tap-highlight-color: transparent;\n -webkit-touch-callout: none;\n}\n\nhtml {\n width: 100%;\n height: 100%;\n -webkit-text-size-adjust: 100%;\n\n text-size-adjust: 100%;\n}\n\nhtml.ion-ce body {\n display: block;\n}\n\nhtml.plt-pwa {\n height: 100vh;\n}\n\nbody {\n @include font-smoothing();\n @include margin(0);\n @include padding(0);\n\n position: fixed;\n\n width: 100%;\n max-width: 100%;\n height: 100%;\n max-height: 100%;\n\n /**\n * Because body has position: fixed,\n * it should be promoted to its own\n * layer.\n *\n * WebKit does not always promote\n * the body to its own layer on page\n * load in Ionic apps. Once scrolling on\n * ion-content starts, WebKit will promote\n * body. Unfortunately, this causes a re-paint\n * which results in scrolling being halted\n * until the next user gesture.\n *\n * This impacts the Custom Elements build.\n * The lazy loaded build causes the browser to\n * re-paint during hydration which causes WebKit\n * to promote body to its own layer.\n * In the CE Build, this hydration does not\n * happen, so the additional re-paint does not occur.\n */\n transform: translateZ(0);\n\n text-rendering: optimizeLegibility;\n\n overflow: hidden;\n\n touch-action: manipulation;\n\n -webkit-user-drag: none;\n\n -ms-content-zooming: none;\n\n word-wrap: break-word;\n\n overscroll-behavior-y: none;\n -webkit-text-size-adjust: none;\n\n text-size-adjust: none;\n}\n","\n/**\n * A heuristic that applies CSS to tablet\n * viewports.\n *\n * Usage:\n * @include tablet-viewport() {\n * :host {\n * background-color: green;\n * }\n * }\n */\n@mixin tablet-viewport() {\n @media screen and (min-width: 768px) {\n @content;\n }\n}\n\n/**\n * A heuristic that applies CSS to mobile\n * viewports (i.e. phones, not tablets).\n *\n * Usage:\n * @include mobile-viewport() {\n * :host {\n * background-color: blue;\n * }\n * }\n */\n@mixin mobile-viewport() {\n @media screen and (max-width: 767px) {\n @content;\n }\n}\n\n@mixin input-cover() {\n @include position(0, null, null, 0);\n @include margin(0);\n\n position: absolute;\n\n width: 100%;\n height: 100%;\n\n border: 0;\n background: transparent;\n cursor: pointer;\n\n appearance: none;\n outline: none;\n\n &::-moz-focus-inner {\n border: 0;\n }\n}\n\n@mixin visually-hidden() {\n position: absolute;\n\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n\n width: 100%;\n height: 100%;\n\n margin: 0;\n padding: 0;\n\n border: 0;\n outline: 0;\n clip: rect(0 0 0 0);\n\n opacity: 0;\n overflow: hidden;\n\n -webkit-appearance: none;\n -moz-appearance: none;\n}\n\n@mixin text-inherit() {\n font-family: inherit;\n font-size: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-indent: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n}\n\n@mixin button-state() {\n @include position(0, 0, 0, 0);\n\n position: absolute;\n\n content: \"\";\n\n opacity: 0;\n}\n\n// Font smoothing\n// --------------------------------------------------\n\n@mixin font-smoothing() {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n}\n\n// Get the key from a map based on the index\n@function index-to-key($map, $index) {\n $keys: map-keys($map);\n\n @return nth($keys, $index);\n}\n\n\n// Breakpoint Mixins\n// ---------------------------------------------------------------------------------\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$screen-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// ---------------------------------------------------------------------------------\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $screen-breakpoints) {\n $min: map-get($breakpoints, $name);\n\n @return if($name != index-to-key($breakpoints, 1), $min, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $screen-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $screen-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $screen-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Maximum breakpoint width. Null for the smallest (first) breakpoint.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n//\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\t// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\t// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $screen-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $screen-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n\n// Text Direction - ltr / rtl\n//\n// CSS defaults to use the ltr css, and adds [dir=rtl] selectors\n// to override ltr defaults.\n// ----------------------------------------------------------\n\n@mixin multi-dir() {\n @content;\n\n // $root: #{&};\n // @at-root [dir] {\n // #{$root} {\n // @content;\n // }\n // }\n}\n\n@mixin rtl() {\n $root: #{&};\n\n $rootSplit: str-split($root, \",\");\n $selectors: #{add-root-selector($root, \"[dir=rtl]\")};\n $selectorsSplit: str-split($selectors, \",\");\n\n $hostContextSelectors: ();\n $restSelectors: ();\n $dirSelectors: ();\n\n // Selectors must be split into individual selectors in case the browser\n // doesn't support a specific selector.\n // For example, Firefox and Safari doesn't support `:host-context()`.\n // If an invalid selector is used, then the entire group of selectors\n // will be ignored.\n // @link https://www.w3.org/TR/selectors-3/#grouping\n @each $selector in $selectorsSplit {\n // Group the selectors back into a single selector to optimize the output.\n @if str-index($selector, \":host-context\") {\n $hostContextSelectors: append($hostContextSelectors, $selector, comma);\n } @else {\n // Group the selectors back into a single selector to optimize the output.\n $restSelectors: append($restSelectors, $selector, comma);\n }\n }\n\n // Supported by Chrome.\n @if length($hostContextSelectors) > 0 {\n @at-root #{$hostContextSelectors} {\n @content;\n }\n }\n\n // Supported by all browsers.\n @if length($restSelectors) > 0 {\n @at-root #{$restSelectors} {\n @content;\n }\n }\n\n // If browser can support `:dir()`, then add the `:dir()` selectors.\n @supports selector(:dir(rtl)) {\n // Adding :dir() in case the browser doesn't support `:host-context()` and does support `:dir()`.\n // `:host-context()` is added:\n // - through the `add-root-selector()` function.\n // - first so that it takes precedence over `:dir()`.\n // For example,\n // - Firefox doesn't support `:host-context()`, but does support `:dir()`.\n // - Safari doesn't support `:host-context()`, but Safari 16.4+ supports `:dir()`\n // @link https://webkit.org/blog/13966/webkit-features-in-safari-16-4/\n // -- However, there is a Webkit bug on v16 that prevents `:dir()` from working when\n // -- the app direction is changed dynamically. v17+ works fine.\n // -- @link https://bugs.webkit.org/show_bug.cgi?id=257133\n\n // Supported by Firefox.\n @at-root #{add-root-selector($root, \":dir(rtl)\", false)} {\n @content;\n }\n }\n}\n\n@mixin ltr() {\n @content;\n}\n\n\n// SVG Background Image Mixin\n// @param {string} $svg\n// ----------------------------------------------------------\n@mixin svg-background-image($svg, $flip-rtl: false) {\n $url: url-encode($svg);\n $viewBox: str-split(str-extract($svg, \"viewBox='\", \"'\"), \" \");\n\n @if $flip-rtl != true or $viewBox == null {\n @include multi-dir() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n } @else {\n $transform: \"transform='translate(#{nth($viewBox, 3)}, 0) scale(-1, 1)'\";\n $flipped-url: $svg;\n $flipped-url: str-replace($flipped-url, \"<path\", \"<path #{$transform}\");\n $flipped-url: str-replace($flipped-url, \"<line\", \"<line #{$transform}\");\n $flipped-url: str-replace($flipped-url, \"<polygon\", \"<polygon #{$transform}\");\n $flipped-url: url-encode($flipped-url);\n\n @include ltr () {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n @include rtl() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$flipped-url}\");\n }\n }\n}\n\n// Add property horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin property-horizontal($prop, $start, $end: $start) {\n @if $start == 0 and $end == 0 {\n #{$prop}-left: $start;\n #{$prop}-right: $end;\n\n } @else {\n -webkit-#{$prop}-start: $start;\n #{$prop}-inline-start: $start;\n -webkit-#{$prop}-end: $end;\n #{$prop}-inline-end: $end;\n }\n}\n\n// Add property for all directions\n// @param {string} $prop\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// @param {boolean} $content include content or use default\n// ----------------------------------------------------------\n@mixin property($prop, $top, $end: $top, $bottom: $top, $start: $end) {\n @include property-horizontal($prop, $start, $end);\n #{$prop}-top: $top;\n #{$prop}-bottom: $bottom;\n}\n\n// Add padding horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin padding-horizontal($start, $end: $start) {\n @include property-horizontal(padding, $start, $end);\n}\n\n// Add padding for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin padding($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(padding, $top, $end, $bottom, $start);\n}\n\n// Add margin horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin margin-horizontal($start, $end: $start) {\n @include property-horizontal(margin, $start, $end);\n}\n\n// Add margin for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin margin($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(margin, $top, $end, $bottom, $start);\n}\n\n// Add position horizontal\n// @param {string} $start - amount to position start\n// @param {string} $end - amount to left: 0; end\n// ----------------------------------------------------------\n@mixin position-horizontal($start: null, $end: null) {\n @if $start == $end {\n @include multi-dir() {\n left: $start;\n right: $end;\n }\n } @else {\n @at-root {\n & {\n inset-inline-start: $start;\n inset-inline-end: $end;\n }\n }\n }\n}\n\n// Add position for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin position($top: null, $end: null, $bottom: null, $start: null) {\n @include position-horizontal($start, $end);\n top: $top;\n bottom: $bottom;\n}\n\n// Add border for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin border($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(border, $top, $end, $bottom, $start);\n}\n\n// Add border radius for all directions\n// @param {string} $top-start\n// @param {string} $top-end\n// @param {string} $bottom-end\n// @param {string} $bottom-start\n// ----------------------------------------------------------\n@mixin border-radius($top-start, $top-end: $top-start, $bottom-end: $top-start, $bottom-start: $top-end) {\n @if $top-start == $top-end and $top-start == $bottom-end and $top-start == $bottom-start {\n border-radius: $top-start;\n } @else {\n border-start-start-radius: $top-start;\n border-start-end-radius: $top-end;\n border-end-end-radius: $bottom-end;\n border-end-start-radius: $bottom-start;\n }\n}\n\n// Add direction for all directions\n// @param {string} $dir - Direction on LTR\n@mixin direction($dir) {\n $other-dir: null;\n\n @if $dir == ltr {\n $other-dir: rtl;\n } @else {\n $other-dir: ltr;\n }\n\n @include ltr() {\n direction: $dir;\n }\n @include rtl() {\n direction: $other-dir;\n }\n}\n\n// Add float for all directions\n// @param {string} $side\n// @param {string} $decorator - !important\n@mixin float($side, $decorator: null) {\n @if $side == start {\n @include ltr() {\n float: left $decorator;\n }\n @include rtl() {\n float: right $decorator;\n }\n } @else if $side == end {\n @include ltr() {\n float: right $decorator;\n }\n @include rtl() {\n float: left $decorator;\n }\n } @else {\n @include multi-dir() {\n float: $side $decorator;\n }\n }\n}\n\n@mixin background-position($horizontal, $horizontal-amount: null, $vertical: null, $vertical-amount: null) {\n @if $horizontal == start or $horizontal == end {\n $horizontal-ltr: null;\n $horizontal-rtl: null;\n @if $horizontal == start {\n $horizontal-ltr: left;\n $horizontal-rtl: right;\n } @else {\n $horizontal-ltr: right;\n $horizontal-rtl: left;\n }\n\n @include ltr() {\n background-position: $horizontal-ltr $horizontal-amount $vertical $vertical-amount;\n }\n @include rtl() {\n background-position: $horizontal-rtl $horizontal-amount $vertical $vertical-amount;\n }\n } @else {\n @include multi-dir() {\n background-position: $horizontal $horizontal-amount $vertical $vertical-amount;\n }\n }\n}\n\n@mixin transform-origin($x-axis, $y-axis: null) {\n @if $x-axis == start {\n @include ltr() {\n transform-origin: left $y-axis;\n }\n @include rtl() {\n transform-origin: right $y-axis;\n }\n } @else if $x-axis == end {\n @include ltr() {\n transform-origin: right $y-axis;\n }\n @include rtl() {\n transform-origin: left $y-axis;\n }\n } @else if $x-axis == left or $x-axis == right {\n @include multi-dir() {\n transform-origin: $x-axis $y-axis;\n }\n } @else {\n @include ltr() {\n transform-origin: $x-axis $y-axis;\n }\n @include rtl() {\n transform-origin: calc(100% - #{$x-axis}) $y-axis;\n }\n }\n}\n\n// Add transform for all directions\n// @param {string} $transforms - comma separated list of transforms\n@mixin transform($transforms...) {\n $extra: null;\n\n $x: null;\n $ltr-translate: null;\n $rtl-translate: null;\n\n @each $transform in $transforms {\n @if (str-index($transform, translate3d)) {\n $transform: str-replace($transform, 'translate3d(');\n $transform: str-replace($transform, ')');\n\n $coordinates: str-split($transform, ',');\n\n $x: nth($coordinates, 1);\n $y: nth($coordinates, 2);\n $z: nth($coordinates, 3);\n\n $ltr-translate: translate3d($x, $y, $z);\n $rtl-translate: translate3d(calc(-1 * #{$x}), $y, $z);\n } @else {\n @if $extra == null {\n $extra: $transform;\n } @else {\n $extra: $extra $transform;\n }\n }\n }\n\n @if $x == '0' or $x == null {\n @include multi-dir() {\n transform: $ltr-translate $extra;\n }\n } @else {\n @include ltr() {\n transform: $ltr-translate $extra;\n }\n\n @include rtl() {\n transform: $rtl-translate $extra;\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../src/css/text-alignment.scss","../src/themes/mixins.scss"],"names":[],"mappings":"AAaI,iBACE,6BAGF,kBACE,8BAGF,gBACE,4BAGF,cACE,0BAGF,eACE,2BAGF,gBACE,4BAGF,iBACE,8BAGF,eACE,8BCiIF,yBD9JA,oBACE,6BAGF,qBACE,8BAGF,mBACE,4BAGF,iBACE,0BAGF,kBACE,2BAGF,mBACE,4BAGF,oBACE,8BAGF,kBACE,+BCiIF,yBD9JA,oBACE,6BAGF,qBACE,8BAGF,mBACE,4BAGF,iBACE,0BAGF,kBACE,2BAGF,mBACE,4BAGF,oBACE,8BAGF,kBACE,+BCiIF,yBD9JA,oBACE,6BAGF,qBACE,8BAGF,mBACE,4BAGF,iBACE,0BAGF,kBACE,2BAGF,mBACE,4BAGF,oBACE,8BAGF,kBACE,+BCiIF,0BD9JA,oBACE,6BAGF,qBACE,8BAGF,mBACE,4BAGF,iBACE,0BAGF,kBACE,2BAGF,mBACE,4BAGF,oBACE,8BAGF,kBACE","file":"text-alignment.css","sourcesContent":["@import \"../themes/native/native.globals\";\n@import \"../themes/mixins\";\n\n// Text Alignment\n// --------------------------------------------------\n// Creates text alignment attributes based on screen size\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n // Provide `.ion-text-{bp}` classes for aligning the text based\n // on the breakpoint\n .ion-text#{$infix}-center {\n text-align: center !important;\n }\n\n .ion-text#{$infix}-justify {\n text-align: justify !important;\n }\n\n .ion-text#{$infix}-start {\n text-align: start !important;\n }\n\n .ion-text#{$infix}-end {\n text-align: end !important;\n }\n\n .ion-text#{$infix}-left {\n text-align: left !important;\n }\n\n .ion-text#{$infix}-right {\n text-align: right !important;\n }\n\n .ion-text#{$infix}-nowrap {\n white-space: nowrap !important;\n }\n\n .ion-text#{$infix}-wrap {\n white-space: normal !important;\n }\n }\n}\n","@use \"./functions.string\" as string;\n\n/**\n * A heuristic that applies CSS to tablet\n * viewports.\n *\n * Usage:\n * @include tablet-viewport() {\n * :host {\n * background-color: green;\n * }\n * }\n */\n@mixin tablet-viewport() {\n @media screen and (min-width: 768px) {\n @content;\n }\n}\n\n/**\n * A heuristic that applies CSS to mobile\n * viewports (i.e. phones, not tablets).\n *\n * Usage:\n * @include mobile-viewport() {\n * :host {\n * background-color: blue;\n * }\n * }\n */\n@mixin mobile-viewport() {\n @media screen and (max-width: 767px) {\n @content;\n }\n}\n\n@mixin input-cover() {\n @include position(0, null, null, 0);\n @include margin(0);\n\n position: absolute;\n\n width: 100%;\n height: 100%;\n\n border: 0;\n\n outline: none;\n\n background: transparent;\n\n cursor: pointer;\n\n appearance: none;\n\n &::-moz-focus-inner {\n border: 0;\n }\n}\n\n@mixin visually-hidden() {\n position: absolute;\n\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n\n margin: 0;\n\n padding: 0;\n\n border: 0;\n\n outline: 0;\n\n opacity: 0;\n overflow: hidden;\n clip: rect(0 0 0 0);\n\n -webkit-appearance: none;\n -moz-appearance: none;\n}\n\n@mixin text-inherit() {\n color: inherit;\n\n font-family: inherit;\n font-size: inherit;\n font-style: inherit;\n font-weight: inherit;\n\n letter-spacing: inherit;\n\n text-align: inherit;\n text-decoration: inherit;\n text-indent: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n\n white-space: inherit;\n}\n\n@mixin button-state() {\n @include position(0, 0, 0, 0);\n\n position: absolute;\n\n content: \"\";\n\n opacity: 0;\n}\n\n// Font smoothing\n// --------------------------------------------------\n\n@mixin font-smoothing() {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n}\n\n// Get the key from a map based on the index\n@function index-to-key($map, $index) {\n $keys: map-keys($map);\n\n @return nth($keys, $index);\n}\n\n// Breakpoint Mixins\n// ---------------------------------------------------------------------------------\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$screen-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// ---------------------------------------------------------------------------------\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $screen-breakpoints) {\n $min: map-get($breakpoints, $name);\n\n @return if($name != index-to-key($breakpoints, 1), $min, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $screen-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $screen-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $screen-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Maximum breakpoint width. Null for the smallest (first) breakpoint.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n//\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\t// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\t// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $screen-breakpoints) {\n $max: map-get($breakpoints, $name);\n\n @return if($max and $max > 0, $max - 0.02, null);\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $screen-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Text Direction - ltr / rtl\n//\n// CSS defaults to use the ltr css, and adds [dir=rtl] selectors\n// to override ltr defaults.\n// ----------------------------------------------------------\n\n@mixin multi-dir() {\n @content;\n\n // $root: #{&};\n // @at-root [dir] {\n // #{$root} {\n // @content;\n // }\n // }\n}\n\n@mixin rtl() {\n $root: #{&};\n\n $rootSplit: string.str-split($root, \",\");\n $selectors: #{string.add-root-selector($root, \"[dir=rtl]\")};\n $selectorsSplit: string.str-split($selectors, \",\");\n\n $hostContextSelectors: ();\n $restSelectors: ();\n $dirSelectors: ();\n\n // Selectors must be split into individual selectors in case the browser\n // doesn't support a specific selector.\n // For example, Firefox and Safari doesn't support `:host-context()`.\n // If an invalid selector is used, then the entire group of selectors\n // will be ignored.\n // @link https://www.w3.org/TR/selectors-3/#grouping\n @each $selector in $selectorsSplit {\n // Group the selectors back into a single selector to optimize the output.\n @if str-index($selector, \":host-context\") {\n $hostContextSelectors: append($hostContextSelectors, $selector, comma);\n } @else {\n // Group the selectors back into a single selector to optimize the output.\n $restSelectors: append($restSelectors, $selector, comma);\n }\n }\n\n // Supported by Chrome.\n @if length($hostContextSelectors) > 0 {\n @at-root #{$hostContextSelectors} {\n @content;\n }\n }\n\n // Supported by all browsers.\n @if length($restSelectors) > 0 {\n @at-root #{$restSelectors} {\n @content;\n }\n }\n\n // If browser can support `:dir()`, then add the `:dir()` selectors.\n @supports selector(:dir(rtl)) {\n // Adding :dir() in case the browser doesn't support `:host-context()` and does support `:dir()`.\n // `:host-context()` is added:\n // - through the `add-root-selector()` function.\n // - first so that it takes precedence over `:dir()`.\n // For example,\n // - Firefox doesn't support `:host-context()`, but does support `:dir()`.\n // - Safari doesn't support `:host-context()`, but Safari 16.4+ supports `:dir()`\n // @link https://webkit.org/blog/13966/webkit-features-in-safari-16-4/\n // -- However, there is a Webkit bug on v16 that prevents `:dir()` from working when\n // -- the app direction is changed dynamically. v17+ works fine.\n // -- @link https://bugs.webkit.org/show_bug.cgi?id=257133\n\n // Supported by Firefox.\n @at-root #{string.add-root-selector($root, \":dir(rtl)\", false)} {\n @content;\n }\n }\n}\n\n@mixin ltr() {\n @content;\n}\n\n// SVG Background Image Mixin\n// @param {string} $svg\n// ----------------------------------------------------------\n@mixin svg-background-image($svg, $flip-rtl: false) {\n $url: url-encode($svg);\n $viewBox: string.str-split(string.str-extract($svg, \"viewBox='\", \"'\"), \" \");\n\n @if $flip-rtl != true or $viewBox == null {\n @include multi-dir() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n } @else {\n $transform: \"transform='translate(#{nth($viewBox, 3)}, 0) scale(-1, 1)'\";\n $flipped-url: $svg;\n $flipped-url: string.str-replace($flipped-url, \"<path\", \"<path #{$transform}\");\n $flipped-url: string.str-replace($flipped-url, \"<line\", \"<line #{$transform}\");\n $flipped-url: string.str-replace($flipped-url, \"<polygon\", \"<polygon #{$transform}\");\n $flipped-url: url-encode($flipped-url);\n\n @include ltr() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n\n @include rtl() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$flipped-url}\");\n }\n }\n}\n\n// Add property horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin property-horizontal($prop, $start, $end: $start) {\n @if $start == 0 and $end == 0 {\n #{$prop}-left: $start;\n #{$prop}-right: $end;\n } @else {\n -webkit-#{$prop}-start: $start;\n #{$prop}-inline-start: $start;\n -webkit-#{$prop}-end: $end;\n #{$prop}-inline-end: $end;\n }\n}\n\n// Add property for all directions\n// @param {string} $prop\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// @param {boolean} $content include content or use default\n// ----------------------------------------------------------\n@mixin property($prop, $top, $end: $top, $bottom: $top, $start: $end) {\n @include property-horizontal($prop, $start, $end);\n #{$prop}-top: $top;\n #{$prop}-bottom: $bottom;\n}\n\n// Add padding horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin padding-horizontal($start, $end: $start) {\n @include property-horizontal(padding, $start, $end);\n}\n\n// Add padding for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin padding($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(padding, $top, $end, $bottom, $start);\n}\n\n// Add margin horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin margin-horizontal($start, $end: $start) {\n @include property-horizontal(margin, $start, $end);\n}\n\n// Add margin for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin margin($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(margin, $top, $end, $bottom, $start);\n}\n\n// Add position horizontal\n// @param {string} $start - amount to position start\n// @param {string} $end - amount to left: 0; end\n// ----------------------------------------------------------\n@mixin position-horizontal($start: null, $end: null) {\n @if $start == $end {\n @include multi-dir() {\n right: $end;\n left: $start;\n }\n } @else {\n @at-root {\n & {\n inset-inline-start: $start;\n inset-inline-end: $end;\n }\n }\n }\n}\n\n// Add position for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin position($top: null, $end: null, $bottom: null, $start: null) {\n @include position-horizontal($start, $end);\n top: $top;\n bottom: $bottom;\n}\n\n// Add border for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin border($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(border, $top, $end, $bottom, $start);\n}\n\n// Add border radius for all directions\n// @param {string} $top-start\n// @param {string} $top-end\n// @param {string} $bottom-end\n// @param {string} $bottom-start\n// ----------------------------------------------------------\n@mixin border-radius($top-start, $top-end: $top-start, $bottom-end: $top-start, $bottom-start: $top-end) {\n @if $top-start == $top-end and $top-start == $bottom-end and $top-start == $bottom-start {\n border-radius: $top-start;\n } @else {\n border-start-start-radius: $top-start;\n border-start-end-radius: $top-end;\n border-end-end-radius: $bottom-end;\n border-end-start-radius: $bottom-start;\n }\n}\n\n// Add direction for all directions\n// @param {string} $dir - Direction on LTR\n@mixin direction($dir) {\n $other-dir: null;\n\n @if $dir == ltr {\n $other-dir: rtl;\n } @else {\n $other-dir: ltr;\n }\n\n @include ltr() {\n direction: $dir;\n }\n\n @include rtl() {\n direction: $other-dir;\n }\n}\n\n// Add float for all directions\n// @param {string} $side\n// @param {string} $decorator - !important\n@mixin float($side, $decorator: null) {\n @if $side == start {\n @include ltr() {\n float: left $decorator;\n }\n\n @include rtl() {\n float: right $decorator;\n }\n } @else if $side == end {\n @include ltr() {\n float: right $decorator;\n }\n\n @include rtl() {\n float: left $decorator;\n }\n } @else {\n @include multi-dir() {\n float: $side $decorator;\n }\n }\n}\n\n@mixin background-position($horizontal, $horizontal-amount: null, $vertical: null, $vertical-amount: null) {\n @if $horizontal == start or $horizontal == end {\n $horizontal-ltr: null;\n $horizontal-rtl: null;\n\n @if $horizontal == start {\n $horizontal-ltr: left;\n $horizontal-rtl: right;\n } @else {\n $horizontal-ltr: right;\n $horizontal-rtl: left;\n }\n\n @include ltr() {\n background-position: $horizontal-ltr $horizontal-amount $vertical $vertical-amount;\n }\n\n @include rtl() {\n background-position: $horizontal-rtl $horizontal-amount $vertical $vertical-amount;\n }\n } @else {\n @include multi-dir() {\n background-position: $horizontal $horizontal-amount $vertical $vertical-amount;\n }\n }\n}\n\n@mixin transform-origin($x-axis, $y-axis: null) {\n @if $x-axis == start {\n @include ltr() {\n transform-origin: left $y-axis;\n }\n\n @include rtl() {\n transform-origin: right $y-axis;\n }\n } @else if $x-axis == end {\n @include ltr() {\n transform-origin: right $y-axis;\n }\n\n @include rtl() {\n transform-origin: left $y-axis;\n }\n } @else if $x-axis == left or $x-axis == right {\n @include multi-dir() {\n transform-origin: $x-axis $y-axis;\n }\n } @else {\n @include ltr() {\n transform-origin: $x-axis $y-axis;\n }\n\n @include rtl() {\n transform-origin: calc(100% - #{$x-axis}) $y-axis;\n }\n }\n}\n\n// Add transform for all directions\n// @param {string} $transforms - comma separated list of transforms\n@mixin transform($transforms...) {\n $extra: null;\n\n $x: null;\n $ltr-translate: null;\n $rtl-translate: null;\n\n @each $transform in $transforms {\n @if (str-index($transform, translate3d)) {\n $transform: string.str-replace($transform, \"translate3d(\");\n $transform: string.str-replace($transform, \")\");\n\n $coordinates: string.str-split($transform, \",\");\n\n $x: nth($coordinates, 1);\n $y: nth($coordinates, 2);\n $z: nth($coordinates, 3);\n\n $ltr-translate: translate3d($x, $y, $z);\n $rtl-translate: translate3d(calc(-1 * #{$x}), $y, $z);\n } @else {\n @if $extra == null {\n $extra: $transform;\n } @else {\n $extra: $extra $transform;\n }\n }\n }\n\n @if $x == \"0\" or $x == null {\n @include multi-dir() {\n transform: $ltr-translate $extra;\n }\n } @else {\n @include ltr() {\n transform: $ltr-translate $extra;\n }\n\n @include rtl() {\n transform: $rtl-translate $extra;\n }\n }\n}\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../src/css/text-alignment.scss","../src/themes/ionic.mixins.scss"],"names":[],"mappings":"AAaI,iBACE,6BAGF,kBACE,8BAGF,gBACE,4BAGF,cACE,0BAGF,eACE,2BAGF,gBACE,4BAGF,iBACE,8BAGF,eACE,8BCuHF,yBDpJA,oBACE,6BAGF,qBACE,8BAGF,mBACE,4BAGF,iBACE,0BAGF,kBACE,2BAGF,mBACE,4BAGF,oBACE,8BAGF,kBACE,+BCuHF,yBDpJA,oBACE,6BAGF,qBACE,8BAGF,mBACE,4BAGF,iBACE,0BAGF,kBACE,2BAGF,mBACE,4BAGF,oBACE,8BAGF,kBACE,+BCuHF,yBDpJA,oBACE,6BAGF,qBACE,8BAGF,mBACE,4BAGF,iBACE,0BAGF,kBACE,2BAGF,mBACE,4BAGF,oBACE,8BAGF,kBACE,+BCuHF,0BDpJA,oBACE,6BAGF,qBACE,8BAGF,mBACE,4BAGF,iBACE,0BAGF,kBACE,2BAGF,mBACE,4BAGF,oBACE,8BAGF,kBACE","file":"text-alignment.css","sourcesContent":["@import \"../themes/ionic.globals\";\n@import \"../themes/ionic.mixins\";\n\n// Text Alignment\n// --------------------------------------------------\n// Creates text alignment attributes based on screen size\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n // Provide `.ion-text-{bp}` classes for aligning the text based\n // on the breakpoint\n .ion-text#{$infix}-center {\n text-align: center !important;\n }\n\n .ion-text#{$infix}-justify {\n text-align: justify !important;\n }\n\n .ion-text#{$infix}-start {\n text-align: start !important;\n }\n\n .ion-text#{$infix}-end {\n text-align: end !important;\n }\n\n .ion-text#{$infix}-left {\n text-align: left !important;\n }\n\n .ion-text#{$infix}-right {\n text-align: right !important;\n }\n\n .ion-text#{$infix}-nowrap {\n white-space: nowrap !important;\n }\n\n .ion-text#{$infix}-wrap {\n white-space: normal !important;\n }\n }\n}\n","\n/**\n * A heuristic that applies CSS to tablet\n * viewports.\n *\n * Usage:\n * @include tablet-viewport() {\n * :host {\n * background-color: green;\n * }\n * }\n */\n@mixin tablet-viewport() {\n @media screen and (min-width: 768px) {\n @content;\n }\n}\n\n/**\n * A heuristic that applies CSS to mobile\n * viewports (i.e. phones, not tablets).\n *\n * Usage:\n * @include mobile-viewport() {\n * :host {\n * background-color: blue;\n * }\n * }\n */\n@mixin mobile-viewport() {\n @media screen and (max-width: 767px) {\n @content;\n }\n}\n\n@mixin input-cover() {\n @include position(0, null, null, 0);\n @include margin(0);\n\n position: absolute;\n\n width: 100%;\n height: 100%;\n\n border: 0;\n background: transparent;\n cursor: pointer;\n\n appearance: none;\n outline: none;\n\n &::-moz-focus-inner {\n border: 0;\n }\n}\n\n@mixin visually-hidden() {\n position: absolute;\n\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n\n width: 100%;\n height: 100%;\n\n margin: 0;\n padding: 0;\n\n border: 0;\n outline: 0;\n clip: rect(0 0 0 0);\n\n opacity: 0;\n overflow: hidden;\n\n -webkit-appearance: none;\n -moz-appearance: none;\n}\n\n@mixin text-inherit() {\n font-family: inherit;\n font-size: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-indent: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n}\n\n@mixin button-state() {\n @include position(0, 0, 0, 0);\n\n position: absolute;\n\n content: \"\";\n\n opacity: 0;\n}\n\n// Font smoothing\n// --------------------------------------------------\n\n@mixin font-smoothing() {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n}\n\n// Get the key from a map based on the index\n@function index-to-key($map, $index) {\n $keys: map-keys($map);\n\n @return nth($keys, $index);\n}\n\n\n// Breakpoint Mixins\n// ---------------------------------------------------------------------------------\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$screen-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// ---------------------------------------------------------------------------------\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $screen-breakpoints) {\n $min: map-get($breakpoints, $name);\n\n @return if($name != index-to-key($breakpoints, 1), $min, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $screen-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $screen-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $screen-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Maximum breakpoint width. Null for the smallest (first) breakpoint.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n//\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\t// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\t// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $screen-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $screen-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n\n// Text Direction - ltr / rtl\n//\n// CSS defaults to use the ltr css, and adds [dir=rtl] selectors\n// to override ltr defaults.\n// ----------------------------------------------------------\n\n@mixin multi-dir() {\n @content;\n\n // $root: #{&};\n // @at-root [dir] {\n // #{$root} {\n // @content;\n // }\n // }\n}\n\n@mixin rtl() {\n $root: #{&};\n\n $rootSplit: str-split($root, \",\");\n $selectors: #{add-root-selector($root, \"[dir=rtl]\")};\n $selectorsSplit: str-split($selectors, \",\");\n\n $hostContextSelectors: ();\n $restSelectors: ();\n $dirSelectors: ();\n\n // Selectors must be split into individual selectors in case the browser\n // doesn't support a specific selector.\n // For example, Firefox and Safari doesn't support `:host-context()`.\n // If an invalid selector is used, then the entire group of selectors\n // will be ignored.\n // @link https://www.w3.org/TR/selectors-3/#grouping\n @each $selector in $selectorsSplit {\n // Group the selectors back into a single selector to optimize the output.\n @if str-index($selector, \":host-context\") {\n $hostContextSelectors: append($hostContextSelectors, $selector, comma);\n } @else {\n // Group the selectors back into a single selector to optimize the output.\n $restSelectors: append($restSelectors, $selector, comma);\n }\n }\n\n // Supported by Chrome.\n @if length($hostContextSelectors) > 0 {\n @at-root #{$hostContextSelectors} {\n @content;\n }\n }\n\n // Supported by all browsers.\n @if length($restSelectors) > 0 {\n @at-root #{$restSelectors} {\n @content;\n }\n }\n\n // If browser can support `:dir()`, then add the `:dir()` selectors.\n @supports selector(:dir(rtl)) {\n // Adding :dir() in case the browser doesn't support `:host-context()` and does support `:dir()`.\n // `:host-context()` is added:\n // - through the `add-root-selector()` function.\n // - first so that it takes precedence over `:dir()`.\n // For example,\n // - Firefox doesn't support `:host-context()`, but does support `:dir()`.\n // - Safari doesn't support `:host-context()`, but Safari 16.4+ supports `:dir()`\n // @link https://webkit.org/blog/13966/webkit-features-in-safari-16-4/\n // -- However, there is a Webkit bug on v16 that prevents `:dir()` from working when\n // -- the app direction is changed dynamically. v17+ works fine.\n // -- @link https://bugs.webkit.org/show_bug.cgi?id=257133\n\n // Supported by Firefox.\n @at-root #{add-root-selector($root, \":dir(rtl)\", false)} {\n @content;\n }\n }\n}\n\n@mixin ltr() {\n @content;\n}\n\n\n// SVG Background Image Mixin\n// @param {string} $svg\n// ----------------------------------------------------------\n@mixin svg-background-image($svg, $flip-rtl: false) {\n $url: url-encode($svg);\n $viewBox: str-split(str-extract($svg, \"viewBox='\", \"'\"), \" \");\n\n @if $flip-rtl != true or $viewBox == null {\n @include multi-dir() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n } @else {\n $transform: \"transform='translate(#{nth($viewBox, 3)}, 0) scale(-1, 1)'\";\n $flipped-url: $svg;\n $flipped-url: str-replace($flipped-url, \"<path\", \"<path #{$transform}\");\n $flipped-url: str-replace($flipped-url, \"<line\", \"<line #{$transform}\");\n $flipped-url: str-replace($flipped-url, \"<polygon\", \"<polygon #{$transform}\");\n $flipped-url: url-encode($flipped-url);\n\n @include ltr () {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n @include rtl() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$flipped-url}\");\n }\n }\n}\n\n// Add property horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin property-horizontal($prop, $start, $end: $start) {\n @if $start == 0 and $end == 0 {\n #{$prop}-left: $start;\n #{$prop}-right: $end;\n\n } @else {\n -webkit-#{$prop}-start: $start;\n #{$prop}-inline-start: $start;\n -webkit-#{$prop}-end: $end;\n #{$prop}-inline-end: $end;\n }\n}\n\n// Add property for all directions\n// @param {string} $prop\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// @param {boolean} $content include content or use default\n// ----------------------------------------------------------\n@mixin property($prop, $top, $end: $top, $bottom: $top, $start: $end) {\n @include property-horizontal($prop, $start, $end);\n #{$prop}-top: $top;\n #{$prop}-bottom: $bottom;\n}\n\n// Add padding horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin padding-horizontal($start, $end: $start) {\n @include property-horizontal(padding, $start, $end);\n}\n\n// Add padding for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin padding($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(padding, $top, $end, $bottom, $start);\n}\n\n// Add margin horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin margin-horizontal($start, $end: $start) {\n @include property-horizontal(margin, $start, $end);\n}\n\n// Add margin for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin margin($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(margin, $top, $end, $bottom, $start);\n}\n\n// Add position horizontal\n// @param {string} $start - amount to position start\n// @param {string} $end - amount to left: 0; end\n// ----------------------------------------------------------\n@mixin position-horizontal($start: null, $end: null) {\n @if $start == $end {\n @include multi-dir() {\n left: $start;\n right: $end;\n }\n } @else {\n @at-root {\n & {\n inset-inline-start: $start;\n inset-inline-end: $end;\n }\n }\n }\n}\n\n// Add position for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin position($top: null, $end: null, $bottom: null, $start: null) {\n @include position-horizontal($start, $end);\n top: $top;\n bottom: $bottom;\n}\n\n// Add border for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin border($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(border, $top, $end, $bottom, $start);\n}\n\n// Add border radius for all directions\n// @param {string} $top-start\n// @param {string} $top-end\n// @param {string} $bottom-end\n// @param {string} $bottom-start\n// ----------------------------------------------------------\n@mixin border-radius($top-start, $top-end: $top-start, $bottom-end: $top-start, $bottom-start: $top-end) {\n @if $top-start == $top-end and $top-start == $bottom-end and $top-start == $bottom-start {\n border-radius: $top-start;\n } @else {\n border-start-start-radius: $top-start;\n border-start-end-radius: $top-end;\n border-end-end-radius: $bottom-end;\n border-end-start-radius: $bottom-start;\n }\n}\n\n// Add direction for all directions\n// @param {string} $dir - Direction on LTR\n@mixin direction($dir) {\n $other-dir: null;\n\n @if $dir == ltr {\n $other-dir: rtl;\n } @else {\n $other-dir: ltr;\n }\n\n @include ltr() {\n direction: $dir;\n }\n @include rtl() {\n direction: $other-dir;\n }\n}\n\n// Add float for all directions\n// @param {string} $side\n// @param {string} $decorator - !important\n@mixin float($side, $decorator: null) {\n @if $side == start {\n @include ltr() {\n float: left $decorator;\n }\n @include rtl() {\n float: right $decorator;\n }\n } @else if $side == end {\n @include ltr() {\n float: right $decorator;\n }\n @include rtl() {\n float: left $decorator;\n }\n } @else {\n @include multi-dir() {\n float: $side $decorator;\n }\n }\n}\n\n@mixin background-position($horizontal, $horizontal-amount: null, $vertical: null, $vertical-amount: null) {\n @if $horizontal == start or $horizontal == end {\n $horizontal-ltr: null;\n $horizontal-rtl: null;\n @if $horizontal == start {\n $horizontal-ltr: left;\n $horizontal-rtl: right;\n } @else {\n $horizontal-ltr: right;\n $horizontal-rtl: left;\n }\n\n @include ltr() {\n background-position: $horizontal-ltr $horizontal-amount $vertical $vertical-amount;\n }\n @include rtl() {\n background-position: $horizontal-rtl $horizontal-amount $vertical $vertical-amount;\n }\n } @else {\n @include multi-dir() {\n background-position: $horizontal $horizontal-amount $vertical $vertical-amount;\n }\n }\n}\n\n@mixin transform-origin($x-axis, $y-axis: null) {\n @if $x-axis == start {\n @include ltr() {\n transform-origin: left $y-axis;\n }\n @include rtl() {\n transform-origin: right $y-axis;\n }\n } @else if $x-axis == end {\n @include ltr() {\n transform-origin: right $y-axis;\n }\n @include rtl() {\n transform-origin: left $y-axis;\n }\n } @else if $x-axis == left or $x-axis == right {\n @include multi-dir() {\n transform-origin: $x-axis $y-axis;\n }\n } @else {\n @include ltr() {\n transform-origin: $x-axis $y-axis;\n }\n @include rtl() {\n transform-origin: calc(100% - #{$x-axis}) $y-axis;\n }\n }\n}\n\n// Add transform for all directions\n// @param {string} $transforms - comma separated list of transforms\n@mixin transform($transforms...) {\n $extra: null;\n\n $x: null;\n $ltr-translate: null;\n $rtl-translate: null;\n\n @each $transform in $transforms {\n @if (str-index($transform, translate3d)) {\n $transform: str-replace($transform, 'translate3d(');\n $transform: str-replace($transform, ')');\n\n $coordinates: str-split($transform, ',');\n\n $x: nth($coordinates, 1);\n $y: nth($coordinates, 2);\n $z: nth($coordinates, 3);\n\n $ltr-translate: translate3d($x, $y, $z);\n $rtl-translate: translate3d(calc(-1 * #{$x}), $y, $z);\n } @else {\n @if $extra == null {\n $extra: $transform;\n } @else {\n $extra: $extra $transform;\n }\n }\n }\n\n @if $x == '0' or $x == null {\n @include multi-dir() {\n transform: $ltr-translate $extra;\n }\n } @else {\n @include ltr() {\n transform: $ltr-translate $extra;\n }\n\n @include rtl() {\n transform: $rtl-translate $extra;\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../src/css/text-transformation.scss","../src/themes/mixins.scss"],"names":[],"mappings":"AAaI,oBAEE,oCAGF,oBAEE,oCAGF,qBAEE,qCCkJF,yBD9JA,uBAEE,oCAGF,uBAEE,oCAGF,wBAEE,sCCkJF,yBD9JA,uBAEE,oCAGF,uBAEE,oCAGF,wBAEE,sCCkJF,yBD9JA,uBAEE,oCAGF,uBAEE,oCAGF,wBAEE,sCCkJF,0BD9JA,uBAEE,oCAGF,uBAEE,oCAGF,wBAEE","file":"text-transformation.css","sourcesContent":["@import \"../themes/native/native.globals\";\n@import \"../themes/mixins\";\n\n// Text Transformation\n// --------------------------------------------------\n// Creates text transform attributes based on screen size\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n // Provide `.ion-text-{bp}` classes for transforming the text based\n // on the breakpoint\n .ion-text#{$infix}-uppercase {\n /* stylelint-disable-next-line declaration-no-important */\n text-transform: uppercase !important;\n }\n\n .ion-text#{$infix}-lowercase {\n /* stylelint-disable-next-line declaration-no-important */\n text-transform: lowercase !important;\n }\n\n .ion-text#{$infix}-capitalize {\n /* stylelint-disable-next-line declaration-no-important */\n text-transform: capitalize !important;\n }\n }\n}\n","@use \"./functions.string\" as string;\n\n/**\n * A heuristic that applies CSS to tablet\n * viewports.\n *\n * Usage:\n * @include tablet-viewport() {\n * :host {\n * background-color: green;\n * }\n * }\n */\n@mixin tablet-viewport() {\n @media screen and (min-width: 768px) {\n @content;\n }\n}\n\n/**\n * A heuristic that applies CSS to mobile\n * viewports (i.e. phones, not tablets).\n *\n * Usage:\n * @include mobile-viewport() {\n * :host {\n * background-color: blue;\n * }\n * }\n */\n@mixin mobile-viewport() {\n @media screen and (max-width: 767px) {\n @content;\n }\n}\n\n@mixin input-cover() {\n @include position(0, null, null, 0);\n @include margin(0);\n\n position: absolute;\n\n width: 100%;\n height: 100%;\n\n border: 0;\n\n outline: none;\n\n background: transparent;\n\n cursor: pointer;\n\n appearance: none;\n\n &::-moz-focus-inner {\n border: 0;\n }\n}\n\n@mixin visually-hidden() {\n position: absolute;\n\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n\n margin: 0;\n\n padding: 0;\n\n border: 0;\n\n outline: 0;\n\n opacity: 0;\n overflow: hidden;\n clip: rect(0 0 0 0);\n\n -webkit-appearance: none;\n -moz-appearance: none;\n}\n\n@mixin text-inherit() {\n color: inherit;\n\n font-family: inherit;\n font-size: inherit;\n font-style: inherit;\n font-weight: inherit;\n\n letter-spacing: inherit;\n\n text-align: inherit;\n text-decoration: inherit;\n text-indent: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n\n white-space: inherit;\n}\n\n@mixin button-state() {\n @include position(0, 0, 0, 0);\n\n position: absolute;\n\n content: \"\";\n\n opacity: 0;\n}\n\n// Font smoothing\n// --------------------------------------------------\n\n@mixin font-smoothing() {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n}\n\n// Get the key from a map based on the index\n@function index-to-key($map, $index) {\n $keys: map-keys($map);\n\n @return nth($keys, $index);\n}\n\n// Breakpoint Mixins\n// ---------------------------------------------------------------------------------\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$screen-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// ---------------------------------------------------------------------------------\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $screen-breakpoints) {\n $min: map-get($breakpoints, $name);\n\n @return if($name != index-to-key($breakpoints, 1), $min, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $screen-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $screen-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $screen-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Maximum breakpoint width. Null for the smallest (first) breakpoint.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n//\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\t// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\t// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $screen-breakpoints) {\n $max: map-get($breakpoints, $name);\n\n @return if($max and $max > 0, $max - 0.02, null);\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $screen-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Text Direction - ltr / rtl\n//\n// CSS defaults to use the ltr css, and adds [dir=rtl] selectors\n// to override ltr defaults.\n// ----------------------------------------------------------\n\n@mixin multi-dir() {\n @content;\n\n // $root: #{&};\n // @at-root [dir] {\n // #{$root} {\n // @content;\n // }\n // }\n}\n\n@mixin rtl() {\n $root: #{&};\n\n $rootSplit: string.str-split($root, \",\");\n $selectors: #{string.add-root-selector($root, \"[dir=rtl]\")};\n $selectorsSplit: string.str-split($selectors, \",\");\n\n $hostContextSelectors: ();\n $restSelectors: ();\n $dirSelectors: ();\n\n // Selectors must be split into individual selectors in case the browser\n // doesn't support a specific selector.\n // For example, Firefox and Safari doesn't support `:host-context()`.\n // If an invalid selector is used, then the entire group of selectors\n // will be ignored.\n // @link https://www.w3.org/TR/selectors-3/#grouping\n @each $selector in $selectorsSplit {\n // Group the selectors back into a single selector to optimize the output.\n @if str-index($selector, \":host-context\") {\n $hostContextSelectors: append($hostContextSelectors, $selector, comma);\n } @else {\n // Group the selectors back into a single selector to optimize the output.\n $restSelectors: append($restSelectors, $selector, comma);\n }\n }\n\n // Supported by Chrome.\n @if length($hostContextSelectors) > 0 {\n @at-root #{$hostContextSelectors} {\n @content;\n }\n }\n\n // Supported by all browsers.\n @if length($restSelectors) > 0 {\n @at-root #{$restSelectors} {\n @content;\n }\n }\n\n // If browser can support `:dir()`, then add the `:dir()` selectors.\n @supports selector(:dir(rtl)) {\n // Adding :dir() in case the browser doesn't support `:host-context()` and does support `:dir()`.\n // `:host-context()` is added:\n // - through the `add-root-selector()` function.\n // - first so that it takes precedence over `:dir()`.\n // For example,\n // - Firefox doesn't support `:host-context()`, but does support `:dir()`.\n // - Safari doesn't support `:host-context()`, but Safari 16.4+ supports `:dir()`\n // @link https://webkit.org/blog/13966/webkit-features-in-safari-16-4/\n // -- However, there is a Webkit bug on v16 that prevents `:dir()` from working when\n // -- the app direction is changed dynamically. v17+ works fine.\n // -- @link https://bugs.webkit.org/show_bug.cgi?id=257133\n\n // Supported by Firefox.\n @at-root #{string.add-root-selector($root, \":dir(rtl)\", false)} {\n @content;\n }\n }\n}\n\n@mixin ltr() {\n @content;\n}\n\n// SVG Background Image Mixin\n// @param {string} $svg\n// ----------------------------------------------------------\n@mixin svg-background-image($svg, $flip-rtl: false) {\n $url: url-encode($svg);\n $viewBox: string.str-split(string.str-extract($svg, \"viewBox='\", \"'\"), \" \");\n\n @if $flip-rtl != true or $viewBox == null {\n @include multi-dir() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n } @else {\n $transform: \"transform='translate(#{nth($viewBox, 3)}, 0) scale(-1, 1)'\";\n $flipped-url: $svg;\n $flipped-url: string.str-replace($flipped-url, \"<path\", \"<path #{$transform}\");\n $flipped-url: string.str-replace($flipped-url, \"<line\", \"<line #{$transform}\");\n $flipped-url: string.str-replace($flipped-url, \"<polygon\", \"<polygon #{$transform}\");\n $flipped-url: url-encode($flipped-url);\n\n @include ltr() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n\n @include rtl() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$flipped-url}\");\n }\n }\n}\n\n// Add property horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin property-horizontal($prop, $start, $end: $start) {\n @if $start == 0 and $end == 0 {\n #{$prop}-left: $start;\n #{$prop}-right: $end;\n } @else {\n -webkit-#{$prop}-start: $start;\n #{$prop}-inline-start: $start;\n -webkit-#{$prop}-end: $end;\n #{$prop}-inline-end: $end;\n }\n}\n\n// Add property for all directions\n// @param {string} $prop\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// @param {boolean} $content include content or use default\n// ----------------------------------------------------------\n@mixin property($prop, $top, $end: $top, $bottom: $top, $start: $end) {\n @include property-horizontal($prop, $start, $end);\n #{$prop}-top: $top;\n #{$prop}-bottom: $bottom;\n}\n\n// Add padding horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin padding-horizontal($start, $end: $start) {\n @include property-horizontal(padding, $start, $end);\n}\n\n// Add padding for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin padding($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(padding, $top, $end, $bottom, $start);\n}\n\n// Add margin horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin margin-horizontal($start, $end: $start) {\n @include property-horizontal(margin, $start, $end);\n}\n\n// Add margin for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin margin($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(margin, $top, $end, $bottom, $start);\n}\n\n// Add position horizontal\n// @param {string} $start - amount to position start\n// @param {string} $end - amount to left: 0; end\n// ----------------------------------------------------------\n@mixin position-horizontal($start: null, $end: null) {\n @if $start == $end {\n @include multi-dir() {\n right: $end;\n left: $start;\n }\n } @else {\n @at-root {\n & {\n inset-inline-start: $start;\n inset-inline-end: $end;\n }\n }\n }\n}\n\n// Add position for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin position($top: null, $end: null, $bottom: null, $start: null) {\n @include position-horizontal($start, $end);\n top: $top;\n bottom: $bottom;\n}\n\n// Add border for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin border($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(border, $top, $end, $bottom, $start);\n}\n\n// Add border radius for all directions\n// @param {string} $top-start\n// @param {string} $top-end\n// @param {string} $bottom-end\n// @param {string} $bottom-start\n// ----------------------------------------------------------\n@mixin border-radius($top-start, $top-end: $top-start, $bottom-end: $top-start, $bottom-start: $top-end) {\n @if $top-start == $top-end and $top-start == $bottom-end and $top-start == $bottom-start {\n border-radius: $top-start;\n } @else {\n border-start-start-radius: $top-start;\n border-start-end-radius: $top-end;\n border-end-end-radius: $bottom-end;\n border-end-start-radius: $bottom-start;\n }\n}\n\n// Add direction for all directions\n// @param {string} $dir - Direction on LTR\n@mixin direction($dir) {\n $other-dir: null;\n\n @if $dir == ltr {\n $other-dir: rtl;\n } @else {\n $other-dir: ltr;\n }\n\n @include ltr() {\n direction: $dir;\n }\n\n @include rtl() {\n direction: $other-dir;\n }\n}\n\n// Add float for all directions\n// @param {string} $side\n// @param {string} $decorator - !important\n@mixin float($side, $decorator: null) {\n @if $side == start {\n @include ltr() {\n float: left $decorator;\n }\n\n @include rtl() {\n float: right $decorator;\n }\n } @else if $side == end {\n @include ltr() {\n float: right $decorator;\n }\n\n @include rtl() {\n float: left $decorator;\n }\n } @else {\n @include multi-dir() {\n float: $side $decorator;\n }\n }\n}\n\n@mixin background-position($horizontal, $horizontal-amount: null, $vertical: null, $vertical-amount: null) {\n @if $horizontal == start or $horizontal == end {\n $horizontal-ltr: null;\n $horizontal-rtl: null;\n\n @if $horizontal == start {\n $horizontal-ltr: left;\n $horizontal-rtl: right;\n } @else {\n $horizontal-ltr: right;\n $horizontal-rtl: left;\n }\n\n @include ltr() {\n background-position: $horizontal-ltr $horizontal-amount $vertical $vertical-amount;\n }\n\n @include rtl() {\n background-position: $horizontal-rtl $horizontal-amount $vertical $vertical-amount;\n }\n } @else {\n @include multi-dir() {\n background-position: $horizontal $horizontal-amount $vertical $vertical-amount;\n }\n }\n}\n\n@mixin transform-origin($x-axis, $y-axis: null) {\n @if $x-axis == start {\n @include ltr() {\n transform-origin: left $y-axis;\n }\n\n @include rtl() {\n transform-origin: right $y-axis;\n }\n } @else if $x-axis == end {\n @include ltr() {\n transform-origin: right $y-axis;\n }\n\n @include rtl() {\n transform-origin: left $y-axis;\n }\n } @else if $x-axis == left or $x-axis == right {\n @include multi-dir() {\n transform-origin: $x-axis $y-axis;\n }\n } @else {\n @include ltr() {\n transform-origin: $x-axis $y-axis;\n }\n\n @include rtl() {\n transform-origin: calc(100% - #{$x-axis}) $y-axis;\n }\n }\n}\n\n// Add transform for all directions\n// @param {string} $transforms - comma separated list of transforms\n@mixin transform($transforms...) {\n $extra: null;\n\n $x: null;\n $ltr-translate: null;\n $rtl-translate: null;\n\n @each $transform in $transforms {\n @if (str-index($transform, translate3d)) {\n $transform: string.str-replace($transform, \"translate3d(\");\n $transform: string.str-replace($transform, \")\");\n\n $coordinates: string.str-split($transform, \",\");\n\n $x: nth($coordinates, 1);\n $y: nth($coordinates, 2);\n $z: nth($coordinates, 3);\n\n $ltr-translate: translate3d($x, $y, $z);\n $rtl-translate: translate3d(calc(-1 * #{$x}), $y, $z);\n } @else {\n @if $extra == null {\n $extra: $transform;\n } @else {\n $extra: $extra $transform;\n }\n }\n }\n\n @if $x == \"0\" or $x == null {\n @include multi-dir() {\n transform: $ltr-translate $extra;\n }\n } @else {\n @include ltr() {\n transform: $ltr-translate $extra;\n }\n\n @include rtl() {\n transform: $rtl-translate $extra;\n }\n }\n}\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../src/css/text-transformation.scss","../src/themes/ionic.mixins.scss"],"names":[],"mappings":"AAaI,oBAEE,oCAGF,oBAEE,oCAGF,qBAEE,qCCwIF,yBDpJA,uBAEE,oCAGF,uBAEE,oCAGF,wBAEE,sCCwIF,yBDpJA,uBAEE,oCAGF,uBAEE,oCAGF,wBAEE,sCCwIF,yBDpJA,uBAEE,oCAGF,uBAEE,oCAGF,wBAEE,sCCwIF,0BDpJA,uBAEE,oCAGF,uBAEE,oCAGF,wBAEE","file":"text-transformation.css","sourcesContent":["@import \"../themes/ionic.globals\";\n@import \"../themes/ionic.mixins\";\n\n// Text Transformation\n// --------------------------------------------------\n// Creates text transform attributes based on screen size\n\n@each $breakpoint in map-keys($screen-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $screen-breakpoints);\n\n @include media-breakpoint-up($breakpoint, $screen-breakpoints) {\n // Provide `.ion-text-{bp}` classes for transforming the text based\n // on the breakpoint\n .ion-text#{$infix}-uppercase {\n /* stylelint-disable-next-line declaration-no-important */\n text-transform: uppercase !important;\n }\n\n .ion-text#{$infix}-lowercase {\n /* stylelint-disable-next-line declaration-no-important */\n text-transform: lowercase !important;\n }\n\n .ion-text#{$infix}-capitalize {\n /* stylelint-disable-next-line declaration-no-important */\n text-transform: capitalize !important;\n }\n }\n}\n","\n/**\n * A heuristic that applies CSS to tablet\n * viewports.\n *\n * Usage:\n * @include tablet-viewport() {\n * :host {\n * background-color: green;\n * }\n * }\n */\n@mixin tablet-viewport() {\n @media screen and (min-width: 768px) {\n @content;\n }\n}\n\n/**\n * A heuristic that applies CSS to mobile\n * viewports (i.e. phones, not tablets).\n *\n * Usage:\n * @include mobile-viewport() {\n * :host {\n * background-color: blue;\n * }\n * }\n */\n@mixin mobile-viewport() {\n @media screen and (max-width: 767px) {\n @content;\n }\n}\n\n@mixin input-cover() {\n @include position(0, null, null, 0);\n @include margin(0);\n\n position: absolute;\n\n width: 100%;\n height: 100%;\n\n border: 0;\n background: transparent;\n cursor: pointer;\n\n appearance: none;\n outline: none;\n\n &::-moz-focus-inner {\n border: 0;\n }\n}\n\n@mixin visually-hidden() {\n position: absolute;\n\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n\n width: 100%;\n height: 100%;\n\n margin: 0;\n padding: 0;\n\n border: 0;\n outline: 0;\n clip: rect(0 0 0 0);\n\n opacity: 0;\n overflow: hidden;\n\n -webkit-appearance: none;\n -moz-appearance: none;\n}\n\n@mixin text-inherit() {\n font-family: inherit;\n font-size: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-indent: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n}\n\n@mixin button-state() {\n @include position(0, 0, 0, 0);\n\n position: absolute;\n\n content: \"\";\n\n opacity: 0;\n}\n\n// Font smoothing\n// --------------------------------------------------\n\n@mixin font-smoothing() {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n}\n\n// Get the key from a map based on the index\n@function index-to-key($map, $index) {\n $keys: map-keys($map);\n\n @return nth($keys, $index);\n}\n\n\n// Breakpoint Mixins\n// ---------------------------------------------------------------------------------\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$screen-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// ---------------------------------------------------------------------------------\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $screen-breakpoints) {\n $min: map-get($breakpoints, $name);\n\n @return if($name != index-to-key($breakpoints, 1), $min, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $screen-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $screen-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $screen-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Maximum breakpoint width. Null for the smallest (first) breakpoint.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n//\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\t// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\t// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $screen-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $screen-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n\n// Text Direction - ltr / rtl\n//\n// CSS defaults to use the ltr css, and adds [dir=rtl] selectors\n// to override ltr defaults.\n// ----------------------------------------------------------\n\n@mixin multi-dir() {\n @content;\n\n // $root: #{&};\n // @at-root [dir] {\n // #{$root} {\n // @content;\n // }\n // }\n}\n\n@mixin rtl() {\n $root: #{&};\n\n $rootSplit: str-split($root, \",\");\n $selectors: #{add-root-selector($root, \"[dir=rtl]\")};\n $selectorsSplit: str-split($selectors, \",\");\n\n $hostContextSelectors: ();\n $restSelectors: ();\n $dirSelectors: ();\n\n // Selectors must be split into individual selectors in case the browser\n // doesn't support a specific selector.\n // For example, Firefox and Safari doesn't support `:host-context()`.\n // If an invalid selector is used, then the entire group of selectors\n // will be ignored.\n // @link https://www.w3.org/TR/selectors-3/#grouping\n @each $selector in $selectorsSplit {\n // Group the selectors back into a single selector to optimize the output.\n @if str-index($selector, \":host-context\") {\n $hostContextSelectors: append($hostContextSelectors, $selector, comma);\n } @else {\n // Group the selectors back into a single selector to optimize the output.\n $restSelectors: append($restSelectors, $selector, comma);\n }\n }\n\n // Supported by Chrome.\n @if length($hostContextSelectors) > 0 {\n @at-root #{$hostContextSelectors} {\n @content;\n }\n }\n\n // Supported by all browsers.\n @if length($restSelectors) > 0 {\n @at-root #{$restSelectors} {\n @content;\n }\n }\n\n // If browser can support `:dir()`, then add the `:dir()` selectors.\n @supports selector(:dir(rtl)) {\n // Adding :dir() in case the browser doesn't support `:host-context()` and does support `:dir()`.\n // `:host-context()` is added:\n // - through the `add-root-selector()` function.\n // - first so that it takes precedence over `:dir()`.\n // For example,\n // - Firefox doesn't support `:host-context()`, but does support `:dir()`.\n // - Safari doesn't support `:host-context()`, but Safari 16.4+ supports `:dir()`\n // @link https://webkit.org/blog/13966/webkit-features-in-safari-16-4/\n // -- However, there is a Webkit bug on v16 that prevents `:dir()` from working when\n // -- the app direction is changed dynamically. v17+ works fine.\n // -- @link https://bugs.webkit.org/show_bug.cgi?id=257133\n\n // Supported by Firefox.\n @at-root #{add-root-selector($root, \":dir(rtl)\", false)} {\n @content;\n }\n }\n}\n\n@mixin ltr() {\n @content;\n}\n\n\n// SVG Background Image Mixin\n// @param {string} $svg\n// ----------------------------------------------------------\n@mixin svg-background-image($svg, $flip-rtl: false) {\n $url: url-encode($svg);\n $viewBox: str-split(str-extract($svg, \"viewBox='\", \"'\"), \" \");\n\n @if $flip-rtl != true or $viewBox == null {\n @include multi-dir() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n } @else {\n $transform: \"transform='translate(#{nth($viewBox, 3)}, 0) scale(-1, 1)'\";\n $flipped-url: $svg;\n $flipped-url: str-replace($flipped-url, \"<path\", \"<path #{$transform}\");\n $flipped-url: str-replace($flipped-url, \"<line\", \"<line #{$transform}\");\n $flipped-url: str-replace($flipped-url, \"<polygon\", \"<polygon #{$transform}\");\n $flipped-url: url-encode($flipped-url);\n\n @include ltr () {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n @include rtl() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$flipped-url}\");\n }\n }\n}\n\n// Add property horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin property-horizontal($prop, $start, $end: $start) {\n @if $start == 0 and $end == 0 {\n #{$prop}-left: $start;\n #{$prop}-right: $end;\n\n } @else {\n -webkit-#{$prop}-start: $start;\n #{$prop}-inline-start: $start;\n -webkit-#{$prop}-end: $end;\n #{$prop}-inline-end: $end;\n }\n}\n\n// Add property for all directions\n// @param {string} $prop\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// @param {boolean} $content include content or use default\n// ----------------------------------------------------------\n@mixin property($prop, $top, $end: $top, $bottom: $top, $start: $end) {\n @include property-horizontal($prop, $start, $end);\n #{$prop}-top: $top;\n #{$prop}-bottom: $bottom;\n}\n\n// Add padding horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin padding-horizontal($start, $end: $start) {\n @include property-horizontal(padding, $start, $end);\n}\n\n// Add padding for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin padding($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(padding, $top, $end, $bottom, $start);\n}\n\n// Add margin horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin margin-horizontal($start, $end: $start) {\n @include property-horizontal(margin, $start, $end);\n}\n\n// Add margin for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin margin($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(margin, $top, $end, $bottom, $start);\n}\n\n// Add position horizontal\n// @param {string} $start - amount to position start\n// @param {string} $end - amount to left: 0; end\n// ----------------------------------------------------------\n@mixin position-horizontal($start: null, $end: null) {\n @if $start == $end {\n @include multi-dir() {\n left: $start;\n right: $end;\n }\n } @else {\n @at-root {\n & {\n inset-inline-start: $start;\n inset-inline-end: $end;\n }\n }\n }\n}\n\n// Add position for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin position($top: null, $end: null, $bottom: null, $start: null) {\n @include position-horizontal($start, $end);\n top: $top;\n bottom: $bottom;\n}\n\n// Add border for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin border($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(border, $top, $end, $bottom, $start);\n}\n\n// Add border radius for all directions\n// @param {string} $top-start\n// @param {string} $top-end\n// @param {string} $bottom-end\n// @param {string} $bottom-start\n// ----------------------------------------------------------\n@mixin border-radius($top-start, $top-end: $top-start, $bottom-end: $top-start, $bottom-start: $top-end) {\n @if $top-start == $top-end and $top-start == $bottom-end and $top-start == $bottom-start {\n border-radius: $top-start;\n } @else {\n border-start-start-radius: $top-start;\n border-start-end-radius: $top-end;\n border-end-end-radius: $bottom-end;\n border-end-start-radius: $bottom-start;\n }\n}\n\n// Add direction for all directions\n// @param {string} $dir - Direction on LTR\n@mixin direction($dir) {\n $other-dir: null;\n\n @if $dir == ltr {\n $other-dir: rtl;\n } @else {\n $other-dir: ltr;\n }\n\n @include ltr() {\n direction: $dir;\n }\n @include rtl() {\n direction: $other-dir;\n }\n}\n\n// Add float for all directions\n// @param {string} $side\n// @param {string} $decorator - !important\n@mixin float($side, $decorator: null) {\n @if $side == start {\n @include ltr() {\n float: left $decorator;\n }\n @include rtl() {\n float: right $decorator;\n }\n } @else if $side == end {\n @include ltr() {\n float: right $decorator;\n }\n @include rtl() {\n float: left $decorator;\n }\n } @else {\n @include multi-dir() {\n float: $side $decorator;\n }\n }\n}\n\n@mixin background-position($horizontal, $horizontal-amount: null, $vertical: null, $vertical-amount: null) {\n @if $horizontal == start or $horizontal == end {\n $horizontal-ltr: null;\n $horizontal-rtl: null;\n @if $horizontal == start {\n $horizontal-ltr: left;\n $horizontal-rtl: right;\n } @else {\n $horizontal-ltr: right;\n $horizontal-rtl: left;\n }\n\n @include ltr() {\n background-position: $horizontal-ltr $horizontal-amount $vertical $vertical-amount;\n }\n @include rtl() {\n background-position: $horizontal-rtl $horizontal-amount $vertical $vertical-amount;\n }\n } @else {\n @include multi-dir() {\n background-position: $horizontal $horizontal-amount $vertical $vertical-amount;\n }\n }\n}\n\n@mixin transform-origin($x-axis, $y-axis: null) {\n @if $x-axis == start {\n @include ltr() {\n transform-origin: left $y-axis;\n }\n @include rtl() {\n transform-origin: right $y-axis;\n }\n } @else if $x-axis == end {\n @include ltr() {\n transform-origin: right $y-axis;\n }\n @include rtl() {\n transform-origin: left $y-axis;\n }\n } @else if $x-axis == left or $x-axis == right {\n @include multi-dir() {\n transform-origin: $x-axis $y-axis;\n }\n } @else {\n @include ltr() {\n transform-origin: $x-axis $y-axis;\n }\n @include rtl() {\n transform-origin: calc(100% - #{$x-axis}) $y-axis;\n }\n }\n}\n\n// Add transform for all directions\n// @param {string} $transforms - comma separated list of transforms\n@mixin transform($transforms...) {\n $extra: null;\n\n $x: null;\n $ltr-translate: null;\n $rtl-translate: null;\n\n @each $transform in $transforms {\n @if (str-index($transform, translate3d)) {\n $transform: str-replace($transform, 'translate3d(');\n $transform: str-replace($transform, ')');\n\n $coordinates: str-split($transform, ',');\n\n $x: nth($coordinates, 1);\n $y: nth($coordinates, 2);\n $z: nth($coordinates, 3);\n\n $ltr-translate: translate3d($x, $y, $z);\n $rtl-translate: translate3d(calc(-1 * #{$x}), $y, $z);\n } @else {\n @if $extra == null {\n $extra: $transform;\n } @else {\n $extra: $extra $transform;\n }\n }\n }\n\n @if $x == '0' or $x == null {\n @include multi-dir() {\n transform: $ltr-translate $extra;\n }\n } @else {\n @include ltr() {\n transform: $ltr-translate $extra;\n }\n\n @include rtl() {\n transform: $rtl-translate $extra;\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../src/css/typography.scss","../src/themes/mixins.scss"],"names":[],"mappings":"AA8BA,KACE,mCAOF,uCACE,KAIE,2DAIJ,EACE,6BACA,wCAGF,kBCqTE,WD/SgB,KCgThB,cDhT4B,KAE5B,YArDqB,IAuDrB,YApDqB,IAuDvB,GCwSE,WDvSgB,KAEhB,UAvDa,SA0Df,GCkSE,WDjSgB,KAEhB,UA1Da,OA6Df,GACE,UA3Da,SA8Df,GACE,UA5Da,QA+Df,GACE,UA7Da,SAgEf,GACE,UA9Da,KAiEf,MACE,cAGF,QAEE,kBAEA,cAEA,cAEA,wBAGF,IACE,WAGF,IACE","file":"typography.css","sourcesContent":["@import \"../themes/native/native.globals\";\n@import \"../themes/mixins\";\n\n// Typography\n// --------------------------------------------------\n\n/// @prop - Font weight of all headings\n$headings-font-weight: 500;\n\n/// @prop - Line height of all headings\n$headings-line-height: 1.2;\n\n/// @prop - Font size of heading level 1\n$h1-font-size: dynamic-font(26px);\n\n/// @prop - Font size of heading level 2\n$h2-font-size: dynamic-font(24px);\n\n/// @prop - Font size of heading level 3\n$h3-font-size: dynamic-font(22px);\n\n/// @prop - Font size of heading level 4\n$h4-font-size: dynamic-font(20px);\n\n/// @prop - Font size of heading level 5\n$h5-font-size: dynamic-font(18px);\n\n/// @prop - Font size of heading level 6\n$h6-font-size: dynamic-font(16px);\n\nhtml {\n font-family: var(--ion-font-family);\n}\n\n/**\n * Dynamic Type is an iOS-only feature, so\n * this should only be enabled on iOS devices.\n */\n@supports (-webkit-touch-callout: none) {\n html {\n /**\n * Includes fallback if Dynamic Type is not enabled.\n */\n font: var(--ion-dynamic-font, 16px var(--ion-font-family));\n }\n}\n\na {\n background-color: transparent;\n color: ion-color(primary, base);\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n @include margin(16px, null, 10px, null);\n\n font-weight: $headings-font-weight;\n\n line-height: $headings-line-height;\n}\n\nh1 {\n @include margin(20px, null, null, null);\n\n font-size: $h1-font-size;\n}\n\nh2 {\n @include margin(18px, null, null, null);\n\n font-size: $h2-font-size;\n}\n\nh3 {\n font-size: $h3-font-size;\n}\n\nh4 {\n font-size: $h4-font-size;\n}\n\nh5 {\n font-size: $h5-font-size;\n}\n\nh6 {\n font-size: $h6-font-size;\n}\n\nsmall {\n font-size: 75%;\n}\n\nsub,\nsup {\n position: relative;\n\n font-size: 75%;\n\n line-height: 0;\n\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n","@use \"./functions.string\" as string;\n\n/**\n * A heuristic that applies CSS to tablet\n * viewports.\n *\n * Usage:\n * @include tablet-viewport() {\n * :host {\n * background-color: green;\n * }\n * }\n */\n@mixin tablet-viewport() {\n @media screen and (min-width: 768px) {\n @content;\n }\n}\n\n/**\n * A heuristic that applies CSS to mobile\n * viewports (i.e. phones, not tablets).\n *\n * Usage:\n * @include mobile-viewport() {\n * :host {\n * background-color: blue;\n * }\n * }\n */\n@mixin mobile-viewport() {\n @media screen and (max-width: 767px) {\n @content;\n }\n}\n\n@mixin input-cover() {\n @include position(0, null, null, 0);\n @include margin(0);\n\n position: absolute;\n\n width: 100%;\n height: 100%;\n\n border: 0;\n\n outline: none;\n\n background: transparent;\n\n cursor: pointer;\n\n appearance: none;\n\n &::-moz-focus-inner {\n border: 0;\n }\n}\n\n@mixin visually-hidden() {\n position: absolute;\n\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n width: 100%;\n height: 100%;\n\n margin: 0;\n\n padding: 0;\n\n border: 0;\n\n outline: 0;\n\n opacity: 0;\n overflow: hidden;\n clip: rect(0 0 0 0);\n\n -webkit-appearance: none;\n -moz-appearance: none;\n}\n\n@mixin text-inherit() {\n color: inherit;\n\n font-family: inherit;\n font-size: inherit;\n font-style: inherit;\n font-weight: inherit;\n\n letter-spacing: inherit;\n\n text-align: inherit;\n text-decoration: inherit;\n text-indent: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n\n white-space: inherit;\n}\n\n@mixin button-state() {\n @include position(0, 0, 0, 0);\n\n position: absolute;\n\n content: \"\";\n\n opacity: 0;\n}\n\n// Font smoothing\n// --------------------------------------------------\n\n@mixin font-smoothing() {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n}\n\n// Get the key from a map based on the index\n@function index-to-key($map, $index) {\n $keys: map-keys($map);\n\n @return nth($keys, $index);\n}\n\n// Breakpoint Mixins\n// ---------------------------------------------------------------------------------\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$screen-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// ---------------------------------------------------------------------------------\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $screen-breakpoints) {\n $min: map-get($breakpoints, $name);\n\n @return if($name != index-to-key($breakpoints, 1), $min, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $screen-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $screen-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $screen-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Maximum breakpoint width. Null for the smallest (first) breakpoint.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n//\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\t// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\t// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $screen-breakpoints) {\n $max: map-get($breakpoints, $name);\n\n @return if($max and $max > 0, $max - 0.02, null);\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $screen-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Text Direction - ltr / rtl\n//\n// CSS defaults to use the ltr css, and adds [dir=rtl] selectors\n// to override ltr defaults.\n// ----------------------------------------------------------\n\n@mixin multi-dir() {\n @content;\n\n // $root: #{&};\n // @at-root [dir] {\n // #{$root} {\n // @content;\n // }\n // }\n}\n\n@mixin rtl() {\n $root: #{&};\n\n $rootSplit: string.str-split($root, \",\");\n $selectors: #{string.add-root-selector($root, \"[dir=rtl]\")};\n $selectorsSplit: string.str-split($selectors, \",\");\n\n $hostContextSelectors: ();\n $restSelectors: ();\n $dirSelectors: ();\n\n // Selectors must be split into individual selectors in case the browser\n // doesn't support a specific selector.\n // For example, Firefox and Safari doesn't support `:host-context()`.\n // If an invalid selector is used, then the entire group of selectors\n // will be ignored.\n // @link https://www.w3.org/TR/selectors-3/#grouping\n @each $selector in $selectorsSplit {\n // Group the selectors back into a single selector to optimize the output.\n @if str-index($selector, \":host-context\") {\n $hostContextSelectors: append($hostContextSelectors, $selector, comma);\n } @else {\n // Group the selectors back into a single selector to optimize the output.\n $restSelectors: append($restSelectors, $selector, comma);\n }\n }\n\n // Supported by Chrome.\n @if length($hostContextSelectors) > 0 {\n @at-root #{$hostContextSelectors} {\n @content;\n }\n }\n\n // Supported by all browsers.\n @if length($restSelectors) > 0 {\n @at-root #{$restSelectors} {\n @content;\n }\n }\n\n // If browser can support `:dir()`, then add the `:dir()` selectors.\n @supports selector(:dir(rtl)) {\n // Adding :dir() in case the browser doesn't support `:host-context()` and does support `:dir()`.\n // `:host-context()` is added:\n // - through the `add-root-selector()` function.\n // - first so that it takes precedence over `:dir()`.\n // For example,\n // - Firefox doesn't support `:host-context()`, but does support `:dir()`.\n // - Safari doesn't support `:host-context()`, but Safari 16.4+ supports `:dir()`\n // @link https://webkit.org/blog/13966/webkit-features-in-safari-16-4/\n // -- However, there is a Webkit bug on v16 that prevents `:dir()` from working when\n // -- the app direction is changed dynamically. v17+ works fine.\n // -- @link https://bugs.webkit.org/show_bug.cgi?id=257133\n\n // Supported by Firefox.\n @at-root #{string.add-root-selector($root, \":dir(rtl)\", false)} {\n @content;\n }\n }\n}\n\n@mixin ltr() {\n @content;\n}\n\n// SVG Background Image Mixin\n// @param {string} $svg\n// ----------------------------------------------------------\n@mixin svg-background-image($svg, $flip-rtl: false) {\n $url: url-encode($svg);\n $viewBox: string.str-split(string.str-extract($svg, \"viewBox='\", \"'\"), \" \");\n\n @if $flip-rtl != true or $viewBox == null {\n @include multi-dir() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n } @else {\n $transform: \"transform='translate(#{nth($viewBox, 3)}, 0) scale(-1, 1)'\";\n $flipped-url: $svg;\n $flipped-url: string.str-replace($flipped-url, \"<path\", \"<path #{$transform}\");\n $flipped-url: string.str-replace($flipped-url, \"<line\", \"<line #{$transform}\");\n $flipped-url: string.str-replace($flipped-url, \"<polygon\", \"<polygon #{$transform}\");\n $flipped-url: url-encode($flipped-url);\n\n @include ltr() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n\n @include rtl() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$flipped-url}\");\n }\n }\n}\n\n// Add property horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin property-horizontal($prop, $start, $end: $start) {\n @if $start == 0 and $end == 0 {\n #{$prop}-left: $start;\n #{$prop}-right: $end;\n } @else {\n -webkit-#{$prop}-start: $start;\n #{$prop}-inline-start: $start;\n -webkit-#{$prop}-end: $end;\n #{$prop}-inline-end: $end;\n }\n}\n\n// Add property for all directions\n// @param {string} $prop\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// @param {boolean} $content include content or use default\n// ----------------------------------------------------------\n@mixin property($prop, $top, $end: $top, $bottom: $top, $start: $end) {\n @include property-horizontal($prop, $start, $end);\n #{$prop}-top: $top;\n #{$prop}-bottom: $bottom;\n}\n\n// Add padding horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin padding-horizontal($start, $end: $start) {\n @include property-horizontal(padding, $start, $end);\n}\n\n// Add padding for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin padding($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(padding, $top, $end, $bottom, $start);\n}\n\n// Add margin horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin margin-horizontal($start, $end: $start) {\n @include property-horizontal(margin, $start, $end);\n}\n\n// Add margin for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin margin($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(margin, $top, $end, $bottom, $start);\n}\n\n// Add position horizontal\n// @param {string} $start - amount to position start\n// @param {string} $end - amount to left: 0; end\n// ----------------------------------------------------------\n@mixin position-horizontal($start: null, $end: null) {\n @if $start == $end {\n @include multi-dir() {\n right: $end;\n left: $start;\n }\n } @else {\n @at-root {\n & {\n inset-inline-start: $start;\n inset-inline-end: $end;\n }\n }\n }\n}\n\n// Add position for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin position($top: null, $end: null, $bottom: null, $start: null) {\n @include position-horizontal($start, $end);\n top: $top;\n bottom: $bottom;\n}\n\n// Add border for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin border($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(border, $top, $end, $bottom, $start);\n}\n\n// Add border radius for all directions\n// @param {string} $top-start\n// @param {string} $top-end\n// @param {string} $bottom-end\n// @param {string} $bottom-start\n// ----------------------------------------------------------\n@mixin border-radius($top-start, $top-end: $top-start, $bottom-end: $top-start, $bottom-start: $top-end) {\n @if $top-start == $top-end and $top-start == $bottom-end and $top-start == $bottom-start {\n border-radius: $top-start;\n } @else {\n border-start-start-radius: $top-start;\n border-start-end-radius: $top-end;\n border-end-end-radius: $bottom-end;\n border-end-start-radius: $bottom-start;\n }\n}\n\n// Add direction for all directions\n// @param {string} $dir - Direction on LTR\n@mixin direction($dir) {\n $other-dir: null;\n\n @if $dir == ltr {\n $other-dir: rtl;\n } @else {\n $other-dir: ltr;\n }\n\n @include ltr() {\n direction: $dir;\n }\n\n @include rtl() {\n direction: $other-dir;\n }\n}\n\n// Add float for all directions\n// @param {string} $side\n// @param {string} $decorator - !important\n@mixin float($side, $decorator: null) {\n @if $side == start {\n @include ltr() {\n float: left $decorator;\n }\n\n @include rtl() {\n float: right $decorator;\n }\n } @else if $side == end {\n @include ltr() {\n float: right $decorator;\n }\n\n @include rtl() {\n float: left $decorator;\n }\n } @else {\n @include multi-dir() {\n float: $side $decorator;\n }\n }\n}\n\n@mixin background-position($horizontal, $horizontal-amount: null, $vertical: null, $vertical-amount: null) {\n @if $horizontal == start or $horizontal == end {\n $horizontal-ltr: null;\n $horizontal-rtl: null;\n\n @if $horizontal == start {\n $horizontal-ltr: left;\n $horizontal-rtl: right;\n } @else {\n $horizontal-ltr: right;\n $horizontal-rtl: left;\n }\n\n @include ltr() {\n background-position: $horizontal-ltr $horizontal-amount $vertical $vertical-amount;\n }\n\n @include rtl() {\n background-position: $horizontal-rtl $horizontal-amount $vertical $vertical-amount;\n }\n } @else {\n @include multi-dir() {\n background-position: $horizontal $horizontal-amount $vertical $vertical-amount;\n }\n }\n}\n\n@mixin transform-origin($x-axis, $y-axis: null) {\n @if $x-axis == start {\n @include ltr() {\n transform-origin: left $y-axis;\n }\n\n @include rtl() {\n transform-origin: right $y-axis;\n }\n } @else if $x-axis == end {\n @include ltr() {\n transform-origin: right $y-axis;\n }\n\n @include rtl() {\n transform-origin: left $y-axis;\n }\n } @else if $x-axis == left or $x-axis == right {\n @include multi-dir() {\n transform-origin: $x-axis $y-axis;\n }\n } @else {\n @include ltr() {\n transform-origin: $x-axis $y-axis;\n }\n\n @include rtl() {\n transform-origin: calc(100% - #{$x-axis}) $y-axis;\n }\n }\n}\n\n// Add transform for all directions\n// @param {string} $transforms - comma separated list of transforms\n@mixin transform($transforms...) {\n $extra: null;\n\n $x: null;\n $ltr-translate: null;\n $rtl-translate: null;\n\n @each $transform in $transforms {\n @if (str-index($transform, translate3d)) {\n $transform: string.str-replace($transform, \"translate3d(\");\n $transform: string.str-replace($transform, \")\");\n\n $coordinates: string.str-split($transform, \",\");\n\n $x: nth($coordinates, 1);\n $y: nth($coordinates, 2);\n $z: nth($coordinates, 3);\n\n $ltr-translate: translate3d($x, $y, $z);\n $rtl-translate: translate3d(calc(-1 * #{$x}), $y, $z);\n } @else {\n @if $extra == null {\n $extra: $transform;\n } @else {\n $extra: $extra $transform;\n }\n }\n }\n\n @if $x == \"0\" or $x == null {\n @include multi-dir() {\n transform: $ltr-translate $extra;\n }\n } @else {\n @include ltr() {\n transform: $ltr-translate $extra;\n }\n\n @include rtl() {\n transform: $rtl-translate $extra;\n }\n }\n}\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["../src/css/typography.scss","../src/themes/ionic.mixins.scss"],"names":[],"mappings":"AA8BA,KACE,mCAOF,uCACE,KAIE,2DAIJ,EACE,6BACA,wCAGF,kBC0SE,WDpSgB,KCqShB,cDrS4B,KAE5B,YArD6B,IAuD7B,YApD6B,IAuD/B,GC6RE,WD5RgB,KAEhB,UAvD6B,SA0D/B,GCuRE,WDtRgB,KAEhB,UA1D6B,OA6D/B,GACE,UA3D6B,SA8D/B,GACE,UA5D6B,QA+D/B,GACE,UA7D6B,SAgE/B,GACE,UA9D6B,KAiE/B,MACE,cAGF,QAEE,kBAEA,cAEA,cAEA,wBAGF,IACE,WAGF,IACE","file":"typography.css","sourcesContent":["@import \"../themes/ionic.globals\";\n@import \"../themes/ionic.mixins\";\n\n// Typography\n// --------------------------------------------------\n\n/// @prop - Font weight of all headings\n$headings-font-weight: 500;\n\n/// @prop - Line height of all headings\n$headings-line-height: 1.2;\n\n/// @prop - Font size of heading level 1\n$h1-font-size: dynamic-font(26px);\n\n/// @prop - Font size of heading level 2\n$h2-font-size: dynamic-font(24px);\n\n/// @prop - Font size of heading level 3\n$h3-font-size: dynamic-font(22px);\n\n/// @prop - Font size of heading level 4\n$h4-font-size: dynamic-font(20px);\n\n/// @prop - Font size of heading level 5\n$h5-font-size: dynamic-font(18px);\n\n/// @prop - Font size of heading level 6\n$h6-font-size: dynamic-font(16px);\n\nhtml {\n font-family: var(--ion-font-family);\n}\n\n/**\n * Dynamic Type is an iOS-only feature, so\n * this should only be enabled on iOS devices.\n */\n@supports (-webkit-touch-callout: none) {\n html {\n /**\n * Includes fallback if Dynamic Type is not enabled.\n */\n font: var(--ion-dynamic-font, 16px var(--ion-font-family));\n }\n}\n\na {\n background-color: transparent;\n color: ion-color(primary, base);\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n @include margin(16px, null, 10px, null);\n\n font-weight: $headings-font-weight;\n\n line-height: $headings-line-height;\n}\n\nh1 {\n @include margin(20px, null, null, null);\n\n font-size: $h1-font-size;\n}\n\nh2 {\n @include margin(18px, null, null, null);\n\n font-size: $h2-font-size;\n}\n\nh3 {\n font-size: $h3-font-size;\n}\n\nh4 {\n font-size: $h4-font-size;\n}\n\nh5 {\n font-size: $h5-font-size;\n}\n\nh6 {\n font-size: $h6-font-size;\n}\n\nsmall {\n font-size: 75%;\n}\n\nsub,\nsup {\n position: relative;\n\n font-size: 75%;\n\n line-height: 0;\n\n vertical-align: baseline;\n}\n\nsup {\n top: -.5em;\n}\n\nsub {\n bottom: -.25em;\n}\n","\n/**\n * A heuristic that applies CSS to tablet\n * viewports.\n *\n * Usage:\n * @include tablet-viewport() {\n * :host {\n * background-color: green;\n * }\n * }\n */\n@mixin tablet-viewport() {\n @media screen and (min-width: 768px) {\n @content;\n }\n}\n\n/**\n * A heuristic that applies CSS to mobile\n * viewports (i.e. phones, not tablets).\n *\n * Usage:\n * @include mobile-viewport() {\n * :host {\n * background-color: blue;\n * }\n * }\n */\n@mixin mobile-viewport() {\n @media screen and (max-width: 767px) {\n @content;\n }\n}\n\n@mixin input-cover() {\n @include position(0, null, null, 0);\n @include margin(0);\n\n position: absolute;\n\n width: 100%;\n height: 100%;\n\n border: 0;\n background: transparent;\n cursor: pointer;\n\n appearance: none;\n outline: none;\n\n &::-moz-focus-inner {\n border: 0;\n }\n}\n\n@mixin visually-hidden() {\n position: absolute;\n\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n\n width: 100%;\n height: 100%;\n\n margin: 0;\n padding: 0;\n\n border: 0;\n outline: 0;\n clip: rect(0 0 0 0);\n\n opacity: 0;\n overflow: hidden;\n\n -webkit-appearance: none;\n -moz-appearance: none;\n}\n\n@mixin text-inherit() {\n font-family: inherit;\n font-size: inherit;\n font-style: inherit;\n font-weight: inherit;\n letter-spacing: inherit;\n text-decoration: inherit;\n text-indent: inherit;\n text-overflow: inherit;\n text-transform: inherit;\n text-align: inherit;\n white-space: inherit;\n color: inherit;\n}\n\n@mixin button-state() {\n @include position(0, 0, 0, 0);\n\n position: absolute;\n\n content: \"\";\n\n opacity: 0;\n}\n\n// Font smoothing\n// --------------------------------------------------\n\n@mixin font-smoothing() {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n}\n\n// Get the key from a map based on the index\n@function index-to-key($map, $index) {\n $keys: map-keys($map);\n\n @return nth($keys, $index);\n}\n\n\n// Breakpoint Mixins\n// ---------------------------------------------------------------------------------\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$screen-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// ---------------------------------------------------------------------------------\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $screen-breakpoints) {\n $min: map-get($breakpoints, $name);\n\n @return if($name != index-to-key($breakpoints, 1), $min, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $screen-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $screen-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $screen-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Maximum breakpoint width. Null for the smallest (first) breakpoint.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n//\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\t// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\t// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $screen-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $screen-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n\n// Text Direction - ltr / rtl\n//\n// CSS defaults to use the ltr css, and adds [dir=rtl] selectors\n// to override ltr defaults.\n// ----------------------------------------------------------\n\n@mixin multi-dir() {\n @content;\n\n // $root: #{&};\n // @at-root [dir] {\n // #{$root} {\n // @content;\n // }\n // }\n}\n\n@mixin rtl() {\n $root: #{&};\n\n $rootSplit: str-split($root, \",\");\n $selectors: #{add-root-selector($root, \"[dir=rtl]\")};\n $selectorsSplit: str-split($selectors, \",\");\n\n $hostContextSelectors: ();\n $restSelectors: ();\n $dirSelectors: ();\n\n // Selectors must be split into individual selectors in case the browser\n // doesn't support a specific selector.\n // For example, Firefox and Safari doesn't support `:host-context()`.\n // If an invalid selector is used, then the entire group of selectors\n // will be ignored.\n // @link https://www.w3.org/TR/selectors-3/#grouping\n @each $selector in $selectorsSplit {\n // Group the selectors back into a single selector to optimize the output.\n @if str-index($selector, \":host-context\") {\n $hostContextSelectors: append($hostContextSelectors, $selector, comma);\n } @else {\n // Group the selectors back into a single selector to optimize the output.\n $restSelectors: append($restSelectors, $selector, comma);\n }\n }\n\n // Supported by Chrome.\n @if length($hostContextSelectors) > 0 {\n @at-root #{$hostContextSelectors} {\n @content;\n }\n }\n\n // Supported by all browsers.\n @if length($restSelectors) > 0 {\n @at-root #{$restSelectors} {\n @content;\n }\n }\n\n // If browser can support `:dir()`, then add the `:dir()` selectors.\n @supports selector(:dir(rtl)) {\n // Adding :dir() in case the browser doesn't support `:host-context()` and does support `:dir()`.\n // `:host-context()` is added:\n // - through the `add-root-selector()` function.\n // - first so that it takes precedence over `:dir()`.\n // For example,\n // - Firefox doesn't support `:host-context()`, but does support `:dir()`.\n // - Safari doesn't support `:host-context()`, but Safari 16.4+ supports `:dir()`\n // @link https://webkit.org/blog/13966/webkit-features-in-safari-16-4/\n // -- However, there is a Webkit bug on v16 that prevents `:dir()` from working when\n // -- the app direction is changed dynamically. v17+ works fine.\n // -- @link https://bugs.webkit.org/show_bug.cgi?id=257133\n\n // Supported by Firefox.\n @at-root #{add-root-selector($root, \":dir(rtl)\", false)} {\n @content;\n }\n }\n}\n\n@mixin ltr() {\n @content;\n}\n\n\n// SVG Background Image Mixin\n// @param {string} $svg\n// ----------------------------------------------------------\n@mixin svg-background-image($svg, $flip-rtl: false) {\n $url: url-encode($svg);\n $viewBox: str-split(str-extract($svg, \"viewBox='\", \"'\"), \" \");\n\n @if $flip-rtl != true or $viewBox == null {\n @include multi-dir() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n } @else {\n $transform: \"transform='translate(#{nth($viewBox, 3)}, 0) scale(-1, 1)'\";\n $flipped-url: $svg;\n $flipped-url: str-replace($flipped-url, \"<path\", \"<path #{$transform}\");\n $flipped-url: str-replace($flipped-url, \"<line\", \"<line #{$transform}\");\n $flipped-url: str-replace($flipped-url, \"<polygon\", \"<polygon #{$transform}\");\n $flipped-url: url-encode($flipped-url);\n\n @include ltr () {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$url}\");\n }\n @include rtl() {\n background-image: url(\"data:image/svg+xml;charset=utf-8,#{$flipped-url}\");\n }\n }\n}\n\n// Add property horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin property-horizontal($prop, $start, $end: $start) {\n @if $start == 0 and $end == 0 {\n #{$prop}-left: $start;\n #{$prop}-right: $end;\n\n } @else {\n -webkit-#{$prop}-start: $start;\n #{$prop}-inline-start: $start;\n -webkit-#{$prop}-end: $end;\n #{$prop}-inline-end: $end;\n }\n}\n\n// Add property for all directions\n// @param {string} $prop\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// @param {boolean} $content include content or use default\n// ----------------------------------------------------------\n@mixin property($prop, $top, $end: $top, $bottom: $top, $start: $end) {\n @include property-horizontal($prop, $start, $end);\n #{$prop}-top: $top;\n #{$prop}-bottom: $bottom;\n}\n\n// Add padding horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin padding-horizontal($start, $end: $start) {\n @include property-horizontal(padding, $start, $end);\n}\n\n// Add padding for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin padding($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(padding, $top, $end, $bottom, $start);\n}\n\n// Add margin horizontal\n// @param {string} $start\n// @param {string} $end\n// ----------------------------------------------------------\n@mixin margin-horizontal($start, $end: $start) {\n @include property-horizontal(margin, $start, $end);\n}\n\n// Add margin for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin margin($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(margin, $top, $end, $bottom, $start);\n}\n\n// Add position horizontal\n// @param {string} $start - amount to position start\n// @param {string} $end - amount to left: 0; end\n// ----------------------------------------------------------\n@mixin position-horizontal($start: null, $end: null) {\n @if $start == $end {\n @include multi-dir() {\n left: $start;\n right: $end;\n }\n } @else {\n @at-root {\n & {\n inset-inline-start: $start;\n inset-inline-end: $end;\n }\n }\n }\n}\n\n// Add position for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin position($top: null, $end: null, $bottom: null, $start: null) {\n @include position-horizontal($start, $end);\n top: $top;\n bottom: $bottom;\n}\n\n// Add border for all directions\n// @param {string} $top\n// @param {string} $end\n// @param {string} $bottom\n// @param {string} $start\n// ----------------------------------------------------------\n@mixin border($top, $end: $top, $bottom: $top, $start: $end) {\n @include property(border, $top, $end, $bottom, $start);\n}\n\n// Add border radius for all directions\n// @param {string} $top-start\n// @param {string} $top-end\n// @param {string} $bottom-end\n// @param {string} $bottom-start\n// ----------------------------------------------------------\n@mixin border-radius($top-start, $top-end: $top-start, $bottom-end: $top-start, $bottom-start: $top-end) {\n @if $top-start == $top-end and $top-start == $bottom-end and $top-start == $bottom-start {\n border-radius: $top-start;\n } @else {\n border-start-start-radius: $top-start;\n border-start-end-radius: $top-end;\n border-end-end-radius: $bottom-end;\n border-end-start-radius: $bottom-start;\n }\n}\n\n// Add direction for all directions\n// @param {string} $dir - Direction on LTR\n@mixin direction($dir) {\n $other-dir: null;\n\n @if $dir == ltr {\n $other-dir: rtl;\n } @else {\n $other-dir: ltr;\n }\n\n @include ltr() {\n direction: $dir;\n }\n @include rtl() {\n direction: $other-dir;\n }\n}\n\n// Add float for all directions\n// @param {string} $side\n// @param {string} $decorator - !important\n@mixin float($side, $decorator: null) {\n @if $side == start {\n @include ltr() {\n float: left $decorator;\n }\n @include rtl() {\n float: right $decorator;\n }\n } @else if $side == end {\n @include ltr() {\n float: right $decorator;\n }\n @include rtl() {\n float: left $decorator;\n }\n } @else {\n @include multi-dir() {\n float: $side $decorator;\n }\n }\n}\n\n@mixin background-position($horizontal, $horizontal-amount: null, $vertical: null, $vertical-amount: null) {\n @if $horizontal == start or $horizontal == end {\n $horizontal-ltr: null;\n $horizontal-rtl: null;\n @if $horizontal == start {\n $horizontal-ltr: left;\n $horizontal-rtl: right;\n } @else {\n $horizontal-ltr: right;\n $horizontal-rtl: left;\n }\n\n @include ltr() {\n background-position: $horizontal-ltr $horizontal-amount $vertical $vertical-amount;\n }\n @include rtl() {\n background-position: $horizontal-rtl $horizontal-amount $vertical $vertical-amount;\n }\n } @else {\n @include multi-dir() {\n background-position: $horizontal $horizontal-amount $vertical $vertical-amount;\n }\n }\n}\n\n@mixin transform-origin($x-axis, $y-axis: null) {\n @if $x-axis == start {\n @include ltr() {\n transform-origin: left $y-axis;\n }\n @include rtl() {\n transform-origin: right $y-axis;\n }\n } @else if $x-axis == end {\n @include ltr() {\n transform-origin: right $y-axis;\n }\n @include rtl() {\n transform-origin: left $y-axis;\n }\n } @else if $x-axis == left or $x-axis == right {\n @include multi-dir() {\n transform-origin: $x-axis $y-axis;\n }\n } @else {\n @include ltr() {\n transform-origin: $x-axis $y-axis;\n }\n @include rtl() {\n transform-origin: calc(100% - #{$x-axis}) $y-axis;\n }\n }\n}\n\n// Add transform for all directions\n// @param {string} $transforms - comma separated list of transforms\n@mixin transform($transforms...) {\n $extra: null;\n\n $x: null;\n $ltr-translate: null;\n $rtl-translate: null;\n\n @each $transform in $transforms {\n @if (str-index($transform, translate3d)) {\n $transform: str-replace($transform, 'translate3d(');\n $transform: str-replace($transform, ')');\n\n $coordinates: str-split($transform, ',');\n\n $x: nth($coordinates, 1);\n $y: nth($coordinates, 2);\n $z: nth($coordinates, 3);\n\n $ltr-translate: translate3d($x, $y, $z);\n $rtl-translate: translate3d(calc(-1 * #{$x}), $y, $z);\n } @else {\n @if $extra == null {\n $extra: $transform;\n } @else {\n $extra: $extra $transform;\n }\n }\n }\n\n @if $x == '0' or $x == null {\n @include multi-dir() {\n transform: $ltr-translate $extra;\n }\n } @else {\n @include ltr() {\n transform: $ltr-translate $extra;\n }\n\n @include rtl() {\n transform: $rtl-translate $extra;\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- .ion-no-padding{--padding-start: 0;--padding-end: 0;--padding-top: 0;--padding-bottom: 0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.ion-padding{--padding-start: var(--ion-padding, 16px);--padding-end: var(--ion-padding, 16px);--padding-top: var(--ion-padding, 16px);--padding-bottom: var(--ion-padding, 16px);-webkit-padding-start:var(--ion-padding, 16px);padding-inline-start:var(--ion-padding, 16px);-webkit-padding-end:var(--ion-padding, 16px);padding-inline-end:var(--ion-padding, 16px);padding-top:var(--ion-padding, 16px);padding-bottom:var(--ion-padding, 16px)}.ion-padding-top{--padding-top: var(--ion-padding, 16px);padding-top:var(--ion-padding, 16px)}.ion-padding-start{--padding-start: var(--ion-padding, 16px);-webkit-padding-start:var(--ion-padding, 16px);padding-inline-start:var(--ion-padding, 16px)}.ion-padding-end{--padding-end: var(--ion-padding, 16px);-webkit-padding-end:var(--ion-padding, 16px);padding-inline-end:var(--ion-padding, 16px)}.ion-padding-bottom{--padding-bottom: var(--ion-padding, 16px);padding-bottom:var(--ion-padding, 16px)}.ion-padding-vertical{--padding-top: var(--ion-padding, 16px);--padding-bottom: var(--ion-padding, 16px);padding-top:var(--ion-padding, 16px);padding-bottom:var(--ion-padding, 16px)}.ion-padding-horizontal{--padding-start: var(--ion-padding, 16px);--padding-end: var(--ion-padding, 16px);-webkit-padding-start:var(--ion-padding, 16px);padding-inline-start:var(--ion-padding, 16px);-webkit-padding-end:var(--ion-padding, 16px);padding-inline-end:var(--ion-padding, 16px)}.ion-no-margin{--margin-start: 0;--margin-end: 0;--margin-top: 0;--margin-bottom: 0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.ion-margin{--margin-start: var(--ion-margin, 16px);--margin-end: var(--ion-margin, 16px);--margin-top: var(--ion-margin, 16px);--margin-bottom: var(--ion-margin, 16px);-webkit-margin-start:var(--ion-margin, 16px);margin-inline-start:var(--ion-margin, 16px);-webkit-margin-end:var(--ion-margin, 16px);margin-inline-end:var(--ion-margin, 16px);margin-top:var(--ion-margin, 16px);margin-bottom:var(--ion-margin, 16px)}.ion-margin-top{--margin-top: var(--ion-margin, 16px);margin-top:var(--ion-margin, 16px)}.ion-margin-start{--margin-start: var(--ion-margin, 16px);-webkit-margin-start:var(--ion-margin, 16px);margin-inline-start:var(--ion-margin, 16px)}.ion-margin-end{--margin-end: var(--ion-margin, 16px);-webkit-margin-end:var(--ion-margin, 16px);margin-inline-end:var(--ion-margin, 16px)}.ion-margin-bottom{--margin-bottom: var(--ion-margin, 16px);margin-bottom:var(--ion-margin, 16px)}.ion-margin-vertical{--margin-top: var(--ion-margin, 16px);--margin-bottom: var(--ion-margin, 16px);margin-top:var(--ion-margin, 16px);margin-bottom:var(--ion-margin, 16px)}.ion-margin-horizontal{--margin-start: var(--ion-margin, 16px);--margin-end: var(--ion-margin, 16px);-webkit-margin-start:var(--ion-margin, 16px);margin-inline-start:var(--ion-margin, 16px);-webkit-margin-end:var(--ion-margin, 16px);margin-inline-end:var(--ion-margin, 16px)}.ion-float-left{float:left !important}.ion-float-right{float:right !important}.ion-float-start{float:left !important}:host-context([dir=rtl]) .ion-float-start{float:right !important}[dir=rtl] .ion-float-start{float:right !important}@supports selector(:dir(rtl)){.ion-float-start:dir(rtl){float:right !important}}.ion-float-end{float:right !important}:host-context([dir=rtl]) .ion-float-end{float:left !important}[dir=rtl] .ion-float-end{float:left !important}@supports selector(:dir(rtl)){.ion-float-end:dir(rtl){float:left !important}}@media(min-width: 576px){.ion-float-sm-left{float:left !important}.ion-float-sm-right{float:right !important}.ion-float-sm-start{float:left !important}:host-context([dir=rtl]) .ion-float-sm-start{float:right !important}[dir=rtl] .ion-float-sm-start{float:right !important}@supports selector(:dir(rtl)){.ion-float-sm-start:dir(rtl){float:right !important}}.ion-float-sm-end{float:right !important}:host-context([dir=rtl]) .ion-float-sm-end{float:left !important}[dir=rtl] .ion-float-sm-end{float:left !important}@supports selector(:dir(rtl)){.ion-float-sm-end:dir(rtl){float:left !important}}}@media(min-width: 768px){.ion-float-md-left{float:left !important}.ion-float-md-right{float:right !important}.ion-float-md-start{float:left !important}:host-context([dir=rtl]) .ion-float-md-start{float:right !important}[dir=rtl] .ion-float-md-start{float:right !important}@supports selector(:dir(rtl)){.ion-float-md-start:dir(rtl){float:right !important}}.ion-float-md-end{float:right !important}:host-context([dir=rtl]) .ion-float-md-end{float:left !important}[dir=rtl] .ion-float-md-end{float:left !important}@supports selector(:dir(rtl)){.ion-float-md-end:dir(rtl){float:left !important}}}@media(min-width: 992px){.ion-float-lg-left{float:left !important}.ion-float-lg-right{float:right !important}.ion-float-lg-start{float:left !important}:host-context([dir=rtl]) .ion-float-lg-start{float:right !important}[dir=rtl] .ion-float-lg-start{float:right !important}@supports selector(:dir(rtl)){.ion-float-lg-start:dir(rtl){float:right !important}}.ion-float-lg-end{float:right !important}:host-context([dir=rtl]) .ion-float-lg-end{float:left !important}[dir=rtl] .ion-float-lg-end{float:left !important}@supports selector(:dir(rtl)){.ion-float-lg-end:dir(rtl){float:left !important}}}@media(min-width: 1200px){.ion-float-xl-left{float:left !important}.ion-float-xl-right{float:right !important}.ion-float-xl-start{float:left !important}:host-context([dir=rtl]) .ion-float-xl-start{float:right !important}[dir=rtl] .ion-float-xl-start{float:right !important}@supports selector(:dir(rtl)){.ion-float-xl-start:dir(rtl){float:right !important}}.ion-float-xl-end{float:right !important}:host-context([dir=rtl]) .ion-float-xl-end{float:left !important}[dir=rtl] .ion-float-xl-end{float:left !important}@supports selector(:dir(rtl)){.ion-float-xl-end:dir(rtl){float:left !important}}}.ion-text-center{text-align:center !important}.ion-text-justify{text-align:justify !important}.ion-text-start{text-align:start !important}.ion-text-end{text-align:end !important}.ion-text-left{text-align:left !important}.ion-text-right{text-align:right !important}.ion-text-nowrap{white-space:nowrap !important}.ion-text-wrap{white-space:normal !important}@media(min-width: 576px){.ion-text-sm-center{text-align:center !important}.ion-text-sm-justify{text-align:justify !important}.ion-text-sm-start{text-align:start !important}.ion-text-sm-end{text-align:end !important}.ion-text-sm-left{text-align:left !important}.ion-text-sm-right{text-align:right !important}.ion-text-sm-nowrap{white-space:nowrap !important}.ion-text-sm-wrap{white-space:normal !important}}@media(min-width: 768px){.ion-text-md-center{text-align:center !important}.ion-text-md-justify{text-align:justify !important}.ion-text-md-start{text-align:start !important}.ion-text-md-end{text-align:end !important}.ion-text-md-left{text-align:left !important}.ion-text-md-right{text-align:right !important}.ion-text-md-nowrap{white-space:nowrap !important}.ion-text-md-wrap{white-space:normal !important}}@media(min-width: 992px){.ion-text-lg-center{text-align:center !important}.ion-text-lg-justify{text-align:justify !important}.ion-text-lg-start{text-align:start !important}.ion-text-lg-end{text-align:end !important}.ion-text-lg-left{text-align:left !important}.ion-text-lg-right{text-align:right !important}.ion-text-lg-nowrap{white-space:nowrap !important}.ion-text-lg-wrap{white-space:normal !important}}@media(min-width: 1200px){.ion-text-xl-center{text-align:center !important}.ion-text-xl-justify{text-align:justify !important}.ion-text-xl-start{text-align:start !important}.ion-text-xl-end{text-align:end !important}.ion-text-xl-left{text-align:left !important}.ion-text-xl-right{text-align:right !important}.ion-text-xl-nowrap{white-space:nowrap !important}.ion-text-xl-wrap{white-space:normal !important}}.ion-text-uppercase{text-transform:uppercase !important}.ion-text-lowercase{text-transform:lowercase !important}.ion-text-capitalize{text-transform:capitalize !important}@media(min-width: 576px){.ion-text-sm-uppercase{text-transform:uppercase !important}.ion-text-sm-lowercase{text-transform:lowercase !important}.ion-text-sm-capitalize{text-transform:capitalize !important}}@media(min-width: 768px){.ion-text-md-uppercase{text-transform:uppercase !important}.ion-text-md-lowercase{text-transform:lowercase !important}.ion-text-md-capitalize{text-transform:capitalize !important}}@media(min-width: 992px){.ion-text-lg-uppercase{text-transform:uppercase !important}.ion-text-lg-lowercase{text-transform:lowercase !important}.ion-text-lg-capitalize{text-transform:capitalize !important}}@media(min-width: 1200px){.ion-text-xl-uppercase{text-transform:uppercase !important}.ion-text-xl-lowercase{text-transform:lowercase !important}.ion-text-xl-capitalize{text-transform:capitalize !important}}.ion-align-content-start{align-content:flex-start !important}.ion-align-content-end{align-content:flex-end !important}.ion-align-content-center{align-content:center !important}.ion-align-content-between{align-content:space-between !important}.ion-align-content-around{align-content:space-around !important}.ion-align-content-stretch{align-content:stretch !important}@media(min-width: 576px){.ion-align-content-sm-start{align-content:flex-start !important}.ion-align-content-sm-end{align-content:flex-end !important}.ion-align-content-sm-center{align-content:center !important}.ion-align-content-sm-between{align-content:space-between !important}.ion-align-content-sm-around{align-content:space-around !important}.ion-align-content-sm-stretch{align-content:stretch !important}}@media(min-width: 768px){.ion-align-content-md-start{align-content:flex-start !important}.ion-align-content-md-end{align-content:flex-end !important}.ion-align-content-md-center{align-content:center !important}.ion-align-content-md-between{align-content:space-between !important}.ion-align-content-md-around{align-content:space-around !important}.ion-align-content-md-stretch{align-content:stretch !important}}@media(min-width: 992px){.ion-align-content-lg-start{align-content:flex-start !important}.ion-align-content-lg-end{align-content:flex-end !important}.ion-align-content-lg-center{align-content:center !important}.ion-align-content-lg-between{align-content:space-between !important}.ion-align-content-lg-around{align-content:space-around !important}.ion-align-content-lg-stretch{align-content:stretch !important}}@media(min-width: 1200px){.ion-align-content-xl-start{align-content:flex-start !important}.ion-align-content-xl-end{align-content:flex-end !important}.ion-align-content-xl-center{align-content:center !important}.ion-align-content-xl-between{align-content:space-between !important}.ion-align-content-xl-around{align-content:space-around !important}.ion-align-content-xl-stretch{align-content:stretch !important}}.ion-align-items-start{align-items:start !important}.ion-align-items-end{align-items:end !important}.ion-align-items-center{align-items:center !important}.ion-align-items-stretch{align-items:stretch !important}.ion-align-items-baseline{align-items:baseline !important}@media(min-width: 576px){.ion-align-items-sm-start{align-items:start !important}.ion-align-items-sm-end{align-items:end !important}.ion-align-items-sm-center{align-items:center !important}.ion-align-items-sm-stretch{align-items:stretch !important}.ion-align-items-sm-baseline{align-items:baseline !important}}@media(min-width: 768px){.ion-align-items-md-start{align-items:start !important}.ion-align-items-md-end{align-items:end !important}.ion-align-items-md-center{align-items:center !important}.ion-align-items-md-stretch{align-items:stretch !important}.ion-align-items-md-baseline{align-items:baseline !important}}@media(min-width: 992px){.ion-align-items-lg-start{align-items:start !important}.ion-align-items-lg-end{align-items:end !important}.ion-align-items-lg-center{align-items:center !important}.ion-align-items-lg-stretch{align-items:stretch !important}.ion-align-items-lg-baseline{align-items:baseline !important}}@media(min-width: 1200px){.ion-align-items-xl-start{align-items:start !important}.ion-align-items-xl-end{align-items:end !important}.ion-align-items-xl-center{align-items:center !important}.ion-align-items-xl-stretch{align-items:stretch !important}.ion-align-items-xl-baseline{align-items:baseline !important}}.ion-align-self-start{align-self:start !important}.ion-align-self-end{align-self:end !important}.ion-align-self-center{align-self:center !important}.ion-align-self-stretch{align-self:stretch !important}.ion-align-self-baseline{align-self:baseline !important}.ion-align-self-auto{align-self:auto !important}@media(min-width: 576px){.ion-align-self-sm-start{align-self:start !important}.ion-align-self-sm-end{align-self:end !important}.ion-align-self-sm-center{align-self:center !important}.ion-align-self-sm-stretch{align-self:stretch !important}.ion-align-self-sm-baseline{align-self:baseline !important}.ion-align-self-sm-auto{align-self:auto !important}}@media(min-width: 768px){.ion-align-self-md-start{align-self:start !important}.ion-align-self-md-end{align-self:end !important}.ion-align-self-md-center{align-self:center !important}.ion-align-self-md-stretch{align-self:stretch !important}.ion-align-self-md-baseline{align-self:baseline !important}.ion-align-self-md-auto{align-self:auto !important}}@media(min-width: 992px){.ion-align-self-lg-start{align-self:start !important}.ion-align-self-lg-end{align-self:end !important}.ion-align-self-lg-center{align-self:center !important}.ion-align-self-lg-stretch{align-self:stretch !important}.ion-align-self-lg-baseline{align-self:baseline !important}.ion-align-self-lg-auto{align-self:auto !important}}@media(min-width: 1200px){.ion-align-self-xl-start{align-self:start !important}.ion-align-self-xl-end{align-self:end !important}.ion-align-self-xl-center{align-self:center !important}.ion-align-self-xl-stretch{align-self:stretch !important}.ion-align-self-xl-baseline{align-self:baseline !important}.ion-align-self-xl-auto{align-self:auto !important}}.ion-justify-content-start{justify-content:flex-start !important}.ion-justify-content-end{justify-content:flex-end !important}.ion-justify-content-center{justify-content:center !important}.ion-justify-content-between{justify-content:space-between !important}.ion-justify-content-around{justify-content:space-around !important}.ion-justify-content-evenly{justify-content:space-evenly !important}@media(min-width: 576px){.ion-justify-content-sm-start{justify-content:flex-start !important}.ion-justify-content-sm-end{justify-content:flex-end !important}.ion-justify-content-sm-center{justify-content:center !important}.ion-justify-content-sm-between{justify-content:space-between !important}.ion-justify-content-sm-around{justify-content:space-around !important}.ion-justify-content-sm-evenly{justify-content:space-evenly !important}}@media(min-width: 768px){.ion-justify-content-md-start{justify-content:flex-start !important}.ion-justify-content-md-end{justify-content:flex-end !important}.ion-justify-content-md-center{justify-content:center !important}.ion-justify-content-md-between{justify-content:space-between !important}.ion-justify-content-md-around{justify-content:space-around !important}.ion-justify-content-md-evenly{justify-content:space-evenly !important}}@media(min-width: 992px){.ion-justify-content-lg-start{justify-content:flex-start !important}.ion-justify-content-lg-end{justify-content:flex-end !important}.ion-justify-content-lg-center{justify-content:center !important}.ion-justify-content-lg-between{justify-content:space-between !important}.ion-justify-content-lg-around{justify-content:space-around !important}.ion-justify-content-lg-evenly{justify-content:space-evenly !important}}@media(min-width: 1200px){.ion-justify-content-xl-start{justify-content:flex-start !important}.ion-justify-content-xl-end{justify-content:flex-end !important}.ion-justify-content-xl-center{justify-content:center !important}.ion-justify-content-xl-between{justify-content:space-between !important}.ion-justify-content-xl-around{justify-content:space-around !important}.ion-justify-content-xl-evenly{justify-content:space-evenly !important}}.ion-flex-row{flex-direction:row !important}.ion-flex-row-reverse{flex-direction:row-reverse !important}.ion-flex-column{flex-direction:column !important}.ion-flex-column-reverse{flex-direction:column-reverse !important}@media(min-width: 576px){.ion-flex-sm-row{flex-direction:row !important}.ion-flex-sm-row-reverse{flex-direction:row-reverse !important}.ion-flex-sm-column{flex-direction:column !important}.ion-flex-sm-column-reverse{flex-direction:column-reverse !important}}@media(min-width: 768px){.ion-flex-md-row{flex-direction:row !important}.ion-flex-md-row-reverse{flex-direction:row-reverse !important}.ion-flex-md-column{flex-direction:column !important}.ion-flex-md-column-reverse{flex-direction:column-reverse !important}}@media(min-width: 992px){.ion-flex-lg-row{flex-direction:row !important}.ion-flex-lg-row-reverse{flex-direction:row-reverse !important}.ion-flex-lg-column{flex-direction:column !important}.ion-flex-lg-column-reverse{flex-direction:column-reverse !important}}@media(min-width: 1200px){.ion-flex-xl-row{flex-direction:row !important}.ion-flex-xl-row-reverse{flex-direction:row-reverse !important}.ion-flex-xl-column{flex-direction:column !important}.ion-flex-xl-column-reverse{flex-direction:column-reverse !important}}.ion-wrap{flex-wrap:wrap !important}.ion-nowrap{flex-wrap:nowrap !important}.ion-wrap-reverse{flex-wrap:wrap-reverse !important}.ion-flex-wrap{flex-wrap:wrap !important}.ion-flex-nowrap{flex-wrap:nowrap !important}.ion-flex-wrap-reverse{flex-wrap:wrap-reverse !important}@media(min-width: 576px){.ion-flex-sm-wrap{flex-wrap:wrap !important}.ion-flex-sm-nowrap{flex-wrap:nowrap !important}.ion-flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}}@media(min-width: 768px){.ion-flex-md-wrap{flex-wrap:wrap !important}.ion-flex-md-nowrap{flex-wrap:nowrap !important}.ion-flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}}@media(min-width: 992px){.ion-flex-lg-wrap{flex-wrap:wrap !important}.ion-flex-lg-nowrap{flex-wrap:nowrap !important}.ion-flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}}@media(min-width: 1200px){.ion-flex-xl-wrap{flex-wrap:wrap !important}.ion-flex-xl-nowrap{flex-wrap:nowrap !important}.ion-flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}}.ion-flex-1{flex:1 !important}.ion-flex-auto{flex:auto !important}.ion-flex-initial{flex:initial !important}.ion-flex-none{flex:none !important}@media(min-width: 576px){.ion-flex-sm-1{flex:1 !important}.ion-flex-sm-auto{flex:auto !important}.ion-flex-sm-initial{flex:initial !important}.ion-flex-sm-none{flex:none !important}}@media(min-width: 768px){.ion-flex-md-1{flex:1 !important}.ion-flex-md-auto{flex:auto !important}.ion-flex-md-initial{flex:initial !important}.ion-flex-md-none{flex:none !important}}@media(min-width: 992px){.ion-flex-lg-1{flex:1 !important}.ion-flex-lg-auto{flex:auto !important}.ion-flex-lg-initial{flex:initial !important}.ion-flex-lg-none{flex:none !important}}@media(min-width: 1200px){.ion-flex-xl-1{flex:1 !important}.ion-flex-xl-auto{flex:auto !important}.ion-flex-xl-initial{flex:initial !important}.ion-flex-xl-none{flex:none !important}}.ion-flex-grow-0{flex-grow:0 !important}.ion-flex-grow-1{flex-grow:1 !important}.ion-flex-shrink-0{flex-shrink:0 !important}.ion-flex-shrink-1{flex-shrink:1 !important}@media(min-width: 576px){.ion-flex-sm-grow-0{flex-grow:0 !important}.ion-flex-sm-grow-1{flex-grow:1 !important}.ion-flex-sm-shrink-0{flex-shrink:0 !important}.ion-flex-sm-shrink-1{flex-shrink:1 !important}}@media(min-width: 768px){.ion-flex-md-grow-0{flex-grow:0 !important}.ion-flex-md-grow-1{flex-grow:1 !important}.ion-flex-md-shrink-0{flex-shrink:0 !important}.ion-flex-md-shrink-1{flex-shrink:1 !important}}@media(min-width: 992px){.ion-flex-lg-grow-0{flex-grow:0 !important}.ion-flex-lg-grow-1{flex-grow:1 !important}.ion-flex-lg-shrink-0{flex-shrink:0 !important}.ion-flex-lg-shrink-1{flex-shrink:1 !important}}@media(min-width: 1200px){.ion-flex-xl-grow-0{flex-grow:0 !important}.ion-flex-xl-grow-1{flex-grow:1 !important}.ion-flex-xl-shrink-0{flex-shrink:0 !important}.ion-flex-xl-shrink-1{flex-shrink:1 !important}}.ion-order-first{order:-1 !important}.ion-order-0{order:0 !important}.ion-order-1{order:1 !important}.ion-order-2{order:2 !important}.ion-order-3{order:3 !important}.ion-order-4{order:4 !important}.ion-order-5{order:5 !important}.ion-order-6{order:6 !important}.ion-order-7{order:7 !important}.ion-order-8{order:8 !important}.ion-order-9{order:9 !important}.ion-order-10{order:10 !important}.ion-order-11{order:11 !important}.ion-order-12{order:12 !important}.ion-order-last{order:13 !important}@media(min-width: 576px){.ion-order-sm-first{order:-1 !important}.ion-order-sm-0{order:0 !important}.ion-order-sm-1{order:1 !important}.ion-order-sm-2{order:2 !important}.ion-order-sm-3{order:3 !important}.ion-order-sm-4{order:4 !important}.ion-order-sm-5{order:5 !important}.ion-order-sm-6{order:6 !important}.ion-order-sm-7{order:7 !important}.ion-order-sm-8{order:8 !important}.ion-order-sm-9{order:9 !important}.ion-order-sm-10{order:10 !important}.ion-order-sm-11{order:11 !important}.ion-order-sm-12{order:12 !important}.ion-order-sm-last{order:13 !important}}@media(min-width: 768px){.ion-order-md-first{order:-1 !important}.ion-order-md-0{order:0 !important}.ion-order-md-1{order:1 !important}.ion-order-md-2{order:2 !important}.ion-order-md-3{order:3 !important}.ion-order-md-4{order:4 !important}.ion-order-md-5{order:5 !important}.ion-order-md-6{order:6 !important}.ion-order-md-7{order:7 !important}.ion-order-md-8{order:8 !important}.ion-order-md-9{order:9 !important}.ion-order-md-10{order:10 !important}.ion-order-md-11{order:11 !important}.ion-order-md-12{order:12 !important}.ion-order-md-last{order:13 !important}}@media(min-width: 992px){.ion-order-lg-first{order:-1 !important}.ion-order-lg-0{order:0 !important}.ion-order-lg-1{order:1 !important}.ion-order-lg-2{order:2 !important}.ion-order-lg-3{order:3 !important}.ion-order-lg-4{order:4 !important}.ion-order-lg-5{order:5 !important}.ion-order-lg-6{order:6 !important}.ion-order-lg-7{order:7 !important}.ion-order-lg-8{order:8 !important}.ion-order-lg-9{order:9 !important}.ion-order-lg-10{order:10 !important}.ion-order-lg-11{order:11 !important}.ion-order-lg-12{order:12 !important}.ion-order-lg-last{order:13 !important}}@media(min-width: 1200px){.ion-order-xl-first{order:-1 !important}.ion-order-xl-0{order:0 !important}.ion-order-xl-1{order:1 !important}.ion-order-xl-2{order:2 !important}.ion-order-xl-3{order:3 !important}.ion-order-xl-4{order:4 !important}.ion-order-xl-5{order:5 !important}.ion-order-xl-6{order:6 !important}.ion-order-xl-7{order:7 !important}.ion-order-xl-8{order:8 !important}.ion-order-xl-9{order:9 !important}.ion-order-xl-10{order:10 !important}.ion-order-xl-11{order:11 !important}.ion-order-xl-12{order:12 !important}.ion-order-xl-last{order:13 !important}}.ion-flex-direction-column{flex-direction:column !important}.ion-flex-direction-column-reverse{flex-direction:column-reverse !important}.ion-flex-direction-row{flex-direction:row !important}.ion-flex-direction-row-reverse{flex-direction:row-reverse !important}.ion-flex-1{flex:1 !important}.ion-hide{display:none !important}.ion-hide-up{display:none !important}.ion-hide-down{display:none !important}@media(min-width: 576px){.ion-hide-sm-up{display:none !important}}@media(max-width: 575.98px){.ion-hide-sm-down{display:none !important}}@media(min-width: 768px){.ion-hide-md-up{display:none !important}}@media(max-width: 767.98px){.ion-hide-md-down{display:none !important}}@media(min-width: 992px){.ion-hide-lg-up{display:none !important}}@media(max-width: 991.98px){.ion-hide-lg-down{display:none !important}}@media(min-width: 1200px){.ion-hide-xl-up{display:none !important}}@media(max-width: 1199.98px){.ion-hide-xl-down{display:none !important}}.ion-display-none{display:none !important}@media(min-width: 576px){.ion-display-sm-none{display:none !important}}@media(min-width: 768px){.ion-display-md-none{display:none !important}}@media(min-width: 992px){.ion-display-lg-none{display:none !important}}@media(min-width: 1200px){.ion-display-xl-none{display:none !important}}.ion-display-contents{display:contents !important}@media(min-width: 576px){.ion-display-sm-contents{display:contents !important}}@media(min-width: 768px){.ion-display-md-contents{display:contents !important}}@media(min-width: 992px){.ion-display-lg-contents{display:contents !important}}@media(min-width: 1200px){.ion-display-xl-contents{display:contents !important}}.ion-display-inline{display:inline !important}@media(min-width: 576px){.ion-display-sm-inline{display:inline !important}}@media(min-width: 768px){.ion-display-md-inline{display:inline !important}}@media(min-width: 992px){.ion-display-lg-inline{display:inline !important}}@media(min-width: 1200px){.ion-display-xl-inline{display:inline !important}}.ion-display-inline-block{display:inline-block !important}@media(min-width: 576px){.ion-display-sm-inline-block{display:inline-block !important}}@media(min-width: 768px){.ion-display-md-inline-block{display:inline-block !important}}@media(min-width: 992px){.ion-display-lg-inline-block{display:inline-block !important}}@media(min-width: 1200px){.ion-display-xl-inline-block{display:inline-block !important}}.ion-display-block{display:block !important}@media(min-width: 576px){.ion-display-sm-block{display:block !important}}@media(min-width: 768px){.ion-display-md-block{display:block !important}}@media(min-width: 992px){.ion-display-lg-block{display:block !important}}@media(min-width: 1200px){.ion-display-xl-block{display:block !important}}.ion-display-flex{display:flex !important}@media(min-width: 576px){.ion-display-sm-flex{display:flex !important}}@media(min-width: 768px){.ion-display-md-flex{display:flex !important}}@media(min-width: 992px){.ion-display-lg-flex{display:flex !important}}@media(min-width: 1200px){.ion-display-xl-flex{display:flex !important}}.ion-display-inline-flex{display:inline-flex !important}@media(min-width: 576px){.ion-display-sm-inline-flex{display:inline-flex !important}}@media(min-width: 768px){.ion-display-md-inline-flex{display:inline-flex !important}}@media(min-width: 992px){.ion-display-lg-inline-flex{display:inline-flex !important}}@media(min-width: 1200px){.ion-display-xl-inline-flex{display:inline-flex !important}}.ion-display-grid{display:grid !important}@media(min-width: 576px){.ion-display-sm-grid{display:grid !important}}@media(min-width: 768px){.ion-display-md-grid{display:grid !important}}@media(min-width: 992px){.ion-display-lg-grid{display:grid !important}}@media(min-width: 1200px){.ion-display-xl-grid{display:grid !important}}.ion-display-inline-grid{display:inline-grid !important}@media(min-width: 576px){.ion-display-sm-inline-grid{display:inline-grid !important}}@media(min-width: 768px){.ion-display-md-inline-grid{display:inline-grid !important}}@media(min-width: 992px){.ion-display-lg-inline-grid{display:inline-grid !important}}@media(min-width: 1200px){.ion-display-xl-inline-grid{display:inline-grid !important}}.ion-display-table{display:table !important}@media(min-width: 576px){.ion-display-sm-table{display:table !important}}@media(min-width: 768px){.ion-display-md-table{display:table !important}}@media(min-width: 992px){.ion-display-lg-table{display:table !important}}@media(min-width: 1200px){.ion-display-xl-table{display:table !important}}.ion-display-table-cell{display:table-cell !important}@media(min-width: 576px){.ion-display-sm-table-cell{display:table-cell !important}}@media(min-width: 768px){.ion-display-md-table-cell{display:table-cell !important}}@media(min-width: 992px){.ion-display-lg-table-cell{display:table-cell !important}}@media(min-width: 1200px){.ion-display-xl-table-cell{display:table-cell !important}}.ion-display-table-row{display:table-row !important}@media(min-width: 576px){.ion-display-sm-table-row{display:table-row !important}}@media(min-width: 768px){.ion-display-md-table-row{display:table-row !important}}@media(min-width: 992px){.ion-display-lg-table-row{display:table-row !important}}@media(min-width: 1200px){.ion-display-xl-table-row{display:table-row !important}}.ion-full-height{height:100% !important}.ion-full-width{width:100% !important}.ion-position-absolute{position:absolute !important}.ion-position-relative{position:relative !important}/*# sourceMappingURL=utils.bundle.css.map */
1
+ .ion-no-padding{--padding-start: 0;--padding-end: 0;--padding-top: 0;--padding-bottom: 0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.ion-padding{--padding-start: var(--ion-padding, 16px);--padding-end: var(--ion-padding, 16px);--padding-top: var(--ion-padding, 16px);--padding-bottom: var(--ion-padding, 16px);-webkit-padding-start:var(--ion-padding, 16px);padding-inline-start:var(--ion-padding, 16px);-webkit-padding-end:var(--ion-padding, 16px);padding-inline-end:var(--ion-padding, 16px);padding-top:var(--ion-padding, 16px);padding-bottom:var(--ion-padding, 16px)}.ion-padding-top{--padding-top: var(--ion-padding, 16px);padding-top:var(--ion-padding, 16px)}.ion-padding-start{--padding-start: var(--ion-padding, 16px);-webkit-padding-start:var(--ion-padding, 16px);padding-inline-start:var(--ion-padding, 16px)}.ion-padding-end{--padding-end: var(--ion-padding, 16px);-webkit-padding-end:var(--ion-padding, 16px);padding-inline-end:var(--ion-padding, 16px)}.ion-padding-bottom{--padding-bottom: var(--ion-padding, 16px);padding-bottom:var(--ion-padding, 16px)}.ion-padding-vertical{--padding-top: var(--ion-padding, 16px);--padding-bottom: var(--ion-padding, 16px);padding-top:var(--ion-padding, 16px);padding-bottom:var(--ion-padding, 16px)}.ion-padding-horizontal{--padding-start: var(--ion-padding, 16px);--padding-end: var(--ion-padding, 16px);-webkit-padding-start:var(--ion-padding, 16px);padding-inline-start:var(--ion-padding, 16px);-webkit-padding-end:var(--ion-padding, 16px);padding-inline-end:var(--ion-padding, 16px)}.ion-no-margin{--margin-start: 0;--margin-end: 0;--margin-top: 0;--margin-bottom: 0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.ion-margin{--margin-start: var(--ion-margin, 16px);--margin-end: var(--ion-margin, 16px);--margin-top: var(--ion-margin, 16px);--margin-bottom: var(--ion-margin, 16px);-webkit-margin-start:var(--ion-margin, 16px);margin-inline-start:var(--ion-margin, 16px);-webkit-margin-end:var(--ion-margin, 16px);margin-inline-end:var(--ion-margin, 16px);margin-top:var(--ion-margin, 16px);margin-bottom:var(--ion-margin, 16px)}.ion-margin-top{--margin-top: var(--ion-margin, 16px);margin-top:var(--ion-margin, 16px)}.ion-margin-start{--margin-start: var(--ion-margin, 16px);-webkit-margin-start:var(--ion-margin, 16px);margin-inline-start:var(--ion-margin, 16px)}.ion-margin-end{--margin-end: var(--ion-margin, 16px);-webkit-margin-end:var(--ion-margin, 16px);margin-inline-end:var(--ion-margin, 16px)}.ion-margin-bottom{--margin-bottom: var(--ion-margin, 16px);margin-bottom:var(--ion-margin, 16px)}.ion-margin-vertical{--margin-top: var(--ion-margin, 16px);--margin-bottom: var(--ion-margin, 16px);margin-top:var(--ion-margin, 16px);margin-bottom:var(--ion-margin, 16px)}.ion-margin-horizontal{--margin-start: var(--ion-margin, 16px);--margin-end: var(--ion-margin, 16px);-webkit-margin-start:var(--ion-margin, 16px);margin-inline-start:var(--ion-margin, 16px);-webkit-margin-end:var(--ion-margin, 16px);margin-inline-end:var(--ion-margin, 16px)}.ion-float-left{float:left !important}.ion-float-right{float:right !important}.ion-float-start{float:left !important}:host-context([dir=rtl]) .ion-float-start{float:right !important}[dir=rtl] .ion-float-start{float:right !important}@supports selector(:dir(rtl)){.ion-float-start:dir(rtl){float:right !important}}.ion-float-end{float:right !important}:host-context([dir=rtl]) .ion-float-end{float:left !important}[dir=rtl] .ion-float-end{float:left !important}@supports selector(:dir(rtl)){.ion-float-end:dir(rtl){float:left !important}}@media(min-width: 576px){.ion-float-sm-left{float:left !important}.ion-float-sm-right{float:right !important}.ion-float-sm-start{float:left !important}:host-context([dir=rtl]) .ion-float-sm-start{float:right !important}[dir=rtl] .ion-float-sm-start{float:right !important}@supports selector(:dir(rtl)){.ion-float-sm-start:dir(rtl){float:right !important}}.ion-float-sm-end{float:right !important}:host-context([dir=rtl]) .ion-float-sm-end{float:left !important}[dir=rtl] .ion-float-sm-end{float:left !important}@supports selector(:dir(rtl)){.ion-float-sm-end:dir(rtl){float:left !important}}}@media(min-width: 768px){.ion-float-md-left{float:left !important}.ion-float-md-right{float:right !important}.ion-float-md-start{float:left !important}:host-context([dir=rtl]) .ion-float-md-start{float:right !important}[dir=rtl] .ion-float-md-start{float:right !important}@supports selector(:dir(rtl)){.ion-float-md-start:dir(rtl){float:right !important}}.ion-float-md-end{float:right !important}:host-context([dir=rtl]) .ion-float-md-end{float:left !important}[dir=rtl] .ion-float-md-end{float:left !important}@supports selector(:dir(rtl)){.ion-float-md-end:dir(rtl){float:left !important}}}@media(min-width: 992px){.ion-float-lg-left{float:left !important}.ion-float-lg-right{float:right !important}.ion-float-lg-start{float:left !important}:host-context([dir=rtl]) .ion-float-lg-start{float:right !important}[dir=rtl] .ion-float-lg-start{float:right !important}@supports selector(:dir(rtl)){.ion-float-lg-start:dir(rtl){float:right !important}}.ion-float-lg-end{float:right !important}:host-context([dir=rtl]) .ion-float-lg-end{float:left !important}[dir=rtl] .ion-float-lg-end{float:left !important}@supports selector(:dir(rtl)){.ion-float-lg-end:dir(rtl){float:left !important}}}@media(min-width: 1200px){.ion-float-xl-left{float:left !important}.ion-float-xl-right{float:right !important}.ion-float-xl-start{float:left !important}:host-context([dir=rtl]) .ion-float-xl-start{float:right !important}[dir=rtl] .ion-float-xl-start{float:right !important}@supports selector(:dir(rtl)){.ion-float-xl-start:dir(rtl){float:right !important}}.ion-float-xl-end{float:right !important}:host-context([dir=rtl]) .ion-float-xl-end{float:left !important}[dir=rtl] .ion-float-xl-end{float:left !important}@supports selector(:dir(rtl)){.ion-float-xl-end:dir(rtl){float:left !important}}}.ion-text-center{text-align:center !important}.ion-text-justify{text-align:justify !important}.ion-text-start{text-align:start !important}.ion-text-end{text-align:end !important}.ion-text-left{text-align:left !important}.ion-text-right{text-align:right !important}.ion-text-nowrap{white-space:nowrap !important}.ion-text-wrap{white-space:normal !important}@media(min-width: 576px){.ion-text-sm-center{text-align:center !important}.ion-text-sm-justify{text-align:justify !important}.ion-text-sm-start{text-align:start !important}.ion-text-sm-end{text-align:end !important}.ion-text-sm-left{text-align:left !important}.ion-text-sm-right{text-align:right !important}.ion-text-sm-nowrap{white-space:nowrap !important}.ion-text-sm-wrap{white-space:normal !important}}@media(min-width: 768px){.ion-text-md-center{text-align:center !important}.ion-text-md-justify{text-align:justify !important}.ion-text-md-start{text-align:start !important}.ion-text-md-end{text-align:end !important}.ion-text-md-left{text-align:left !important}.ion-text-md-right{text-align:right !important}.ion-text-md-nowrap{white-space:nowrap !important}.ion-text-md-wrap{white-space:normal !important}}@media(min-width: 992px){.ion-text-lg-center{text-align:center !important}.ion-text-lg-justify{text-align:justify !important}.ion-text-lg-start{text-align:start !important}.ion-text-lg-end{text-align:end !important}.ion-text-lg-left{text-align:left !important}.ion-text-lg-right{text-align:right !important}.ion-text-lg-nowrap{white-space:nowrap !important}.ion-text-lg-wrap{white-space:normal !important}}@media(min-width: 1200px){.ion-text-xl-center{text-align:center !important}.ion-text-xl-justify{text-align:justify !important}.ion-text-xl-start{text-align:start !important}.ion-text-xl-end{text-align:end !important}.ion-text-xl-left{text-align:left !important}.ion-text-xl-right{text-align:right !important}.ion-text-xl-nowrap{white-space:nowrap !important}.ion-text-xl-wrap{white-space:normal !important}}.ion-text-uppercase{text-transform:uppercase !important}.ion-text-lowercase{text-transform:lowercase !important}.ion-text-capitalize{text-transform:capitalize !important}@media(min-width: 576px){.ion-text-sm-uppercase{text-transform:uppercase !important}.ion-text-sm-lowercase{text-transform:lowercase !important}.ion-text-sm-capitalize{text-transform:capitalize !important}}@media(min-width: 768px){.ion-text-md-uppercase{text-transform:uppercase !important}.ion-text-md-lowercase{text-transform:lowercase !important}.ion-text-md-capitalize{text-transform:capitalize !important}}@media(min-width: 992px){.ion-text-lg-uppercase{text-transform:uppercase !important}.ion-text-lg-lowercase{text-transform:lowercase !important}.ion-text-lg-capitalize{text-transform:capitalize !important}}@media(min-width: 1200px){.ion-text-xl-uppercase{text-transform:uppercase !important}.ion-text-xl-lowercase{text-transform:lowercase !important}.ion-text-xl-capitalize{text-transform:capitalize !important}}.ion-align-content-start{align-content:flex-start !important}.ion-align-content-end{align-content:flex-end !important}.ion-align-content-center{align-content:center !important}.ion-align-content-between{align-content:space-between !important}.ion-align-content-around{align-content:space-around !important}.ion-align-content-stretch{align-content:stretch !important}@media(min-width: 576px){.ion-align-content-sm-start{align-content:flex-start !important}.ion-align-content-sm-end{align-content:flex-end !important}.ion-align-content-sm-center{align-content:center !important}.ion-align-content-sm-between{align-content:space-between !important}.ion-align-content-sm-around{align-content:space-around !important}.ion-align-content-sm-stretch{align-content:stretch !important}}@media(min-width: 768px){.ion-align-content-md-start{align-content:flex-start !important}.ion-align-content-md-end{align-content:flex-end !important}.ion-align-content-md-center{align-content:center !important}.ion-align-content-md-between{align-content:space-between !important}.ion-align-content-md-around{align-content:space-around !important}.ion-align-content-md-stretch{align-content:stretch !important}}@media(min-width: 992px){.ion-align-content-lg-start{align-content:flex-start !important}.ion-align-content-lg-end{align-content:flex-end !important}.ion-align-content-lg-center{align-content:center !important}.ion-align-content-lg-between{align-content:space-between !important}.ion-align-content-lg-around{align-content:space-around !important}.ion-align-content-lg-stretch{align-content:stretch !important}}@media(min-width: 1200px){.ion-align-content-xl-start{align-content:flex-start !important}.ion-align-content-xl-end{align-content:flex-end !important}.ion-align-content-xl-center{align-content:center !important}.ion-align-content-xl-between{align-content:space-between !important}.ion-align-content-xl-around{align-content:space-around !important}.ion-align-content-xl-stretch{align-content:stretch !important}}.ion-align-items-start{align-items:start !important}.ion-align-items-end{align-items:end !important}.ion-align-items-center{align-items:center !important}.ion-align-items-stretch{align-items:stretch !important}.ion-align-items-baseline{align-items:baseline !important}@media(min-width: 576px){.ion-align-items-sm-start{align-items:start !important}.ion-align-items-sm-end{align-items:end !important}.ion-align-items-sm-center{align-items:center !important}.ion-align-items-sm-stretch{align-items:stretch !important}.ion-align-items-sm-baseline{align-items:baseline !important}}@media(min-width: 768px){.ion-align-items-md-start{align-items:start !important}.ion-align-items-md-end{align-items:end !important}.ion-align-items-md-center{align-items:center !important}.ion-align-items-md-stretch{align-items:stretch !important}.ion-align-items-md-baseline{align-items:baseline !important}}@media(min-width: 992px){.ion-align-items-lg-start{align-items:start !important}.ion-align-items-lg-end{align-items:end !important}.ion-align-items-lg-center{align-items:center !important}.ion-align-items-lg-stretch{align-items:stretch !important}.ion-align-items-lg-baseline{align-items:baseline !important}}@media(min-width: 1200px){.ion-align-items-xl-start{align-items:start !important}.ion-align-items-xl-end{align-items:end !important}.ion-align-items-xl-center{align-items:center !important}.ion-align-items-xl-stretch{align-items:stretch !important}.ion-align-items-xl-baseline{align-items:baseline !important}}.ion-align-self-start{align-self:start !important}.ion-align-self-end{align-self:end !important}.ion-align-self-center{align-self:center !important}.ion-align-self-stretch{align-self:stretch !important}.ion-align-self-baseline{align-self:baseline !important}.ion-align-self-auto{align-self:auto !important}@media(min-width: 576px){.ion-align-self-sm-start{align-self:start !important}.ion-align-self-sm-end{align-self:end !important}.ion-align-self-sm-center{align-self:center !important}.ion-align-self-sm-stretch{align-self:stretch !important}.ion-align-self-sm-baseline{align-self:baseline !important}.ion-align-self-sm-auto{align-self:auto !important}}@media(min-width: 768px){.ion-align-self-md-start{align-self:start !important}.ion-align-self-md-end{align-self:end !important}.ion-align-self-md-center{align-self:center !important}.ion-align-self-md-stretch{align-self:stretch !important}.ion-align-self-md-baseline{align-self:baseline !important}.ion-align-self-md-auto{align-self:auto !important}}@media(min-width: 992px){.ion-align-self-lg-start{align-self:start !important}.ion-align-self-lg-end{align-self:end !important}.ion-align-self-lg-center{align-self:center !important}.ion-align-self-lg-stretch{align-self:stretch !important}.ion-align-self-lg-baseline{align-self:baseline !important}.ion-align-self-lg-auto{align-self:auto !important}}@media(min-width: 1200px){.ion-align-self-xl-start{align-self:start !important}.ion-align-self-xl-end{align-self:end !important}.ion-align-self-xl-center{align-self:center !important}.ion-align-self-xl-stretch{align-self:stretch !important}.ion-align-self-xl-baseline{align-self:baseline !important}.ion-align-self-xl-auto{align-self:auto !important}}.ion-justify-content-start{justify-content:flex-start !important}.ion-justify-content-end{justify-content:flex-end !important}.ion-justify-content-center{justify-content:center !important}.ion-justify-content-between{justify-content:space-between !important}.ion-justify-content-around{justify-content:space-around !important}.ion-justify-content-evenly{justify-content:space-evenly !important}@media(min-width: 576px){.ion-justify-content-sm-start{justify-content:flex-start !important}.ion-justify-content-sm-end{justify-content:flex-end !important}.ion-justify-content-sm-center{justify-content:center !important}.ion-justify-content-sm-between{justify-content:space-between !important}.ion-justify-content-sm-around{justify-content:space-around !important}.ion-justify-content-sm-evenly{justify-content:space-evenly !important}}@media(min-width: 768px){.ion-justify-content-md-start{justify-content:flex-start !important}.ion-justify-content-md-end{justify-content:flex-end !important}.ion-justify-content-md-center{justify-content:center !important}.ion-justify-content-md-between{justify-content:space-between !important}.ion-justify-content-md-around{justify-content:space-around !important}.ion-justify-content-md-evenly{justify-content:space-evenly !important}}@media(min-width: 992px){.ion-justify-content-lg-start{justify-content:flex-start !important}.ion-justify-content-lg-end{justify-content:flex-end !important}.ion-justify-content-lg-center{justify-content:center !important}.ion-justify-content-lg-between{justify-content:space-between !important}.ion-justify-content-lg-around{justify-content:space-around !important}.ion-justify-content-lg-evenly{justify-content:space-evenly !important}}@media(min-width: 1200px){.ion-justify-content-xl-start{justify-content:flex-start !important}.ion-justify-content-xl-end{justify-content:flex-end !important}.ion-justify-content-xl-center{justify-content:center !important}.ion-justify-content-xl-between{justify-content:space-between !important}.ion-justify-content-xl-around{justify-content:space-around !important}.ion-justify-content-xl-evenly{justify-content:space-evenly !important}}.ion-flex-row{flex-direction:row !important}.ion-flex-row-reverse{flex-direction:row-reverse !important}.ion-flex-column{flex-direction:column !important}.ion-flex-column-reverse{flex-direction:column-reverse !important}@media(min-width: 576px){.ion-flex-sm-row{flex-direction:row !important}.ion-flex-sm-row-reverse{flex-direction:row-reverse !important}.ion-flex-sm-column{flex-direction:column !important}.ion-flex-sm-column-reverse{flex-direction:column-reverse !important}}@media(min-width: 768px){.ion-flex-md-row{flex-direction:row !important}.ion-flex-md-row-reverse{flex-direction:row-reverse !important}.ion-flex-md-column{flex-direction:column !important}.ion-flex-md-column-reverse{flex-direction:column-reverse !important}}@media(min-width: 992px){.ion-flex-lg-row{flex-direction:row !important}.ion-flex-lg-row-reverse{flex-direction:row-reverse !important}.ion-flex-lg-column{flex-direction:column !important}.ion-flex-lg-column-reverse{flex-direction:column-reverse !important}}@media(min-width: 1200px){.ion-flex-xl-row{flex-direction:row !important}.ion-flex-xl-row-reverse{flex-direction:row-reverse !important}.ion-flex-xl-column{flex-direction:column !important}.ion-flex-xl-column-reverse{flex-direction:column-reverse !important}}.ion-wrap{flex-wrap:wrap !important}.ion-nowrap{flex-wrap:nowrap !important}.ion-wrap-reverse{flex-wrap:wrap-reverse !important}.ion-flex-wrap{flex-wrap:wrap !important}.ion-flex-nowrap{flex-wrap:nowrap !important}.ion-flex-wrap-reverse{flex-wrap:wrap-reverse !important}@media(min-width: 576px){.ion-flex-sm-wrap{flex-wrap:wrap !important}.ion-flex-sm-nowrap{flex-wrap:nowrap !important}.ion-flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}}@media(min-width: 768px){.ion-flex-md-wrap{flex-wrap:wrap !important}.ion-flex-md-nowrap{flex-wrap:nowrap !important}.ion-flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}}@media(min-width: 992px){.ion-flex-lg-wrap{flex-wrap:wrap !important}.ion-flex-lg-nowrap{flex-wrap:nowrap !important}.ion-flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}}@media(min-width: 1200px){.ion-flex-xl-wrap{flex-wrap:wrap !important}.ion-flex-xl-nowrap{flex-wrap:nowrap !important}.ion-flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}}.ion-flex-1{flex:1 !important}.ion-flex-auto{flex:auto !important}.ion-flex-initial{flex:initial !important}.ion-flex-none{flex:none !important}@media(min-width: 576px){.ion-flex-sm-1{flex:1 !important}.ion-flex-sm-auto{flex:auto !important}.ion-flex-sm-initial{flex:initial !important}.ion-flex-sm-none{flex:none !important}}@media(min-width: 768px){.ion-flex-md-1{flex:1 !important}.ion-flex-md-auto{flex:auto !important}.ion-flex-md-initial{flex:initial !important}.ion-flex-md-none{flex:none !important}}@media(min-width: 992px){.ion-flex-lg-1{flex:1 !important}.ion-flex-lg-auto{flex:auto !important}.ion-flex-lg-initial{flex:initial !important}.ion-flex-lg-none{flex:none !important}}@media(min-width: 1200px){.ion-flex-xl-1{flex:1 !important}.ion-flex-xl-auto{flex:auto !important}.ion-flex-xl-initial{flex:initial !important}.ion-flex-xl-none{flex:none !important}}.ion-flex-grow-0{flex-grow:0 !important}.ion-flex-grow-1{flex-grow:1 !important}.ion-flex-shrink-0{flex-shrink:0 !important}.ion-flex-shrink-1{flex-shrink:1 !important}@media(min-width: 576px){.ion-flex-sm-grow-0{flex-grow:0 !important}.ion-flex-sm-grow-1{flex-grow:1 !important}.ion-flex-sm-shrink-0{flex-shrink:0 !important}.ion-flex-sm-shrink-1{flex-shrink:1 !important}}@media(min-width: 768px){.ion-flex-md-grow-0{flex-grow:0 !important}.ion-flex-md-grow-1{flex-grow:1 !important}.ion-flex-md-shrink-0{flex-shrink:0 !important}.ion-flex-md-shrink-1{flex-shrink:1 !important}}@media(min-width: 992px){.ion-flex-lg-grow-0{flex-grow:0 !important}.ion-flex-lg-grow-1{flex-grow:1 !important}.ion-flex-lg-shrink-0{flex-shrink:0 !important}.ion-flex-lg-shrink-1{flex-shrink:1 !important}}@media(min-width: 1200px){.ion-flex-xl-grow-0{flex-grow:0 !important}.ion-flex-xl-grow-1{flex-grow:1 !important}.ion-flex-xl-shrink-0{flex-shrink:0 !important}.ion-flex-xl-shrink-1{flex-shrink:1 !important}}.ion-order-first{order:-1 !important}.ion-order-0{order:0 !important}.ion-order-1{order:1 !important}.ion-order-2{order:2 !important}.ion-order-3{order:3 !important}.ion-order-4{order:4 !important}.ion-order-5{order:5 !important}.ion-order-6{order:6 !important}.ion-order-7{order:7 !important}.ion-order-8{order:8 !important}.ion-order-9{order:9 !important}.ion-order-10{order:10 !important}.ion-order-11{order:11 !important}.ion-order-12{order:12 !important}.ion-order-last{order:13 !important}@media(min-width: 576px){.ion-order-sm-first{order:-1 !important}.ion-order-sm-0{order:0 !important}.ion-order-sm-1{order:1 !important}.ion-order-sm-2{order:2 !important}.ion-order-sm-3{order:3 !important}.ion-order-sm-4{order:4 !important}.ion-order-sm-5{order:5 !important}.ion-order-sm-6{order:6 !important}.ion-order-sm-7{order:7 !important}.ion-order-sm-8{order:8 !important}.ion-order-sm-9{order:9 !important}.ion-order-sm-10{order:10 !important}.ion-order-sm-11{order:11 !important}.ion-order-sm-12{order:12 !important}.ion-order-sm-last{order:13 !important}}@media(min-width: 768px){.ion-order-md-first{order:-1 !important}.ion-order-md-0{order:0 !important}.ion-order-md-1{order:1 !important}.ion-order-md-2{order:2 !important}.ion-order-md-3{order:3 !important}.ion-order-md-4{order:4 !important}.ion-order-md-5{order:5 !important}.ion-order-md-6{order:6 !important}.ion-order-md-7{order:7 !important}.ion-order-md-8{order:8 !important}.ion-order-md-9{order:9 !important}.ion-order-md-10{order:10 !important}.ion-order-md-11{order:11 !important}.ion-order-md-12{order:12 !important}.ion-order-md-last{order:13 !important}}@media(min-width: 992px){.ion-order-lg-first{order:-1 !important}.ion-order-lg-0{order:0 !important}.ion-order-lg-1{order:1 !important}.ion-order-lg-2{order:2 !important}.ion-order-lg-3{order:3 !important}.ion-order-lg-4{order:4 !important}.ion-order-lg-5{order:5 !important}.ion-order-lg-6{order:6 !important}.ion-order-lg-7{order:7 !important}.ion-order-lg-8{order:8 !important}.ion-order-lg-9{order:9 !important}.ion-order-lg-10{order:10 !important}.ion-order-lg-11{order:11 !important}.ion-order-lg-12{order:12 !important}.ion-order-lg-last{order:13 !important}}@media(min-width: 1200px){.ion-order-xl-first{order:-1 !important}.ion-order-xl-0{order:0 !important}.ion-order-xl-1{order:1 !important}.ion-order-xl-2{order:2 !important}.ion-order-xl-3{order:3 !important}.ion-order-xl-4{order:4 !important}.ion-order-xl-5{order:5 !important}.ion-order-xl-6{order:6 !important}.ion-order-xl-7{order:7 !important}.ion-order-xl-8{order:8 !important}.ion-order-xl-9{order:9 !important}.ion-order-xl-10{order:10 !important}.ion-order-xl-11{order:11 !important}.ion-order-xl-12{order:12 !important}.ion-order-xl-last{order:13 !important}}.ion-hide{display:none !important}.ion-hide-up{display:none !important}.ion-hide-down{display:none !important}@media(min-width: 576px){.ion-hide-sm-up{display:none !important}}@media(max-width: 575.98px){.ion-hide-sm-down{display:none !important}}@media(min-width: 768px){.ion-hide-md-up{display:none !important}}@media(max-width: 767.98px){.ion-hide-md-down{display:none !important}}@media(min-width: 992px){.ion-hide-lg-up{display:none !important}}@media(max-width: 991.98px){.ion-hide-lg-down{display:none !important}}@media(min-width: 1200px){.ion-hide-xl-up{display:none !important}}@media(max-width: 1199.98px){.ion-hide-xl-down{display:none !important}}.ion-display-none{display:none !important}@media(min-width: 576px){.ion-display-sm-none{display:none !important}}@media(min-width: 768px){.ion-display-md-none{display:none !important}}@media(min-width: 992px){.ion-display-lg-none{display:none !important}}@media(min-width: 1200px){.ion-display-xl-none{display:none !important}}.ion-display-inline{display:inline !important}@media(min-width: 576px){.ion-display-sm-inline{display:inline !important}}@media(min-width: 768px){.ion-display-md-inline{display:inline !important}}@media(min-width: 992px){.ion-display-lg-inline{display:inline !important}}@media(min-width: 1200px){.ion-display-xl-inline{display:inline !important}}.ion-display-inline-block{display:inline-block !important}@media(min-width: 576px){.ion-display-sm-inline-block{display:inline-block !important}}@media(min-width: 768px){.ion-display-md-inline-block{display:inline-block !important}}@media(min-width: 992px){.ion-display-lg-inline-block{display:inline-block !important}}@media(min-width: 1200px){.ion-display-xl-inline-block{display:inline-block !important}}.ion-display-block{display:block !important}@media(min-width: 576px){.ion-display-sm-block{display:block !important}}@media(min-width: 768px){.ion-display-md-block{display:block !important}}@media(min-width: 992px){.ion-display-lg-block{display:block !important}}@media(min-width: 1200px){.ion-display-xl-block{display:block !important}}.ion-display-flex{display:flex !important}@media(min-width: 576px){.ion-display-sm-flex{display:flex !important}}@media(min-width: 768px){.ion-display-md-flex{display:flex !important}}@media(min-width: 992px){.ion-display-lg-flex{display:flex !important}}@media(min-width: 1200px){.ion-display-xl-flex{display:flex !important}}.ion-display-inline-flex{display:inline-flex !important}@media(min-width: 576px){.ion-display-sm-inline-flex{display:inline-flex !important}}@media(min-width: 768px){.ion-display-md-inline-flex{display:inline-flex !important}}@media(min-width: 992px){.ion-display-lg-inline-flex{display:inline-flex !important}}@media(min-width: 1200px){.ion-display-xl-inline-flex{display:inline-flex !important}}.ion-display-grid{display:grid !important}@media(min-width: 576px){.ion-display-sm-grid{display:grid !important}}@media(min-width: 768px){.ion-display-md-grid{display:grid !important}}@media(min-width: 992px){.ion-display-lg-grid{display:grid !important}}@media(min-width: 1200px){.ion-display-xl-grid{display:grid !important}}.ion-display-inline-grid{display:inline-grid !important}@media(min-width: 576px){.ion-display-sm-inline-grid{display:inline-grid !important}}@media(min-width: 768px){.ion-display-md-inline-grid{display:inline-grid !important}}@media(min-width: 992px){.ion-display-lg-inline-grid{display:inline-grid !important}}@media(min-width: 1200px){.ion-display-xl-inline-grid{display:inline-grid !important}}.ion-display-table{display:table !important}@media(min-width: 576px){.ion-display-sm-table{display:table !important}}@media(min-width: 768px){.ion-display-md-table{display:table !important}}@media(min-width: 992px){.ion-display-lg-table{display:table !important}}@media(min-width: 1200px){.ion-display-xl-table{display:table !important}}.ion-display-table-cell{display:table-cell !important}@media(min-width: 576px){.ion-display-sm-table-cell{display:table-cell !important}}@media(min-width: 768px){.ion-display-md-table-cell{display:table-cell !important}}@media(min-width: 992px){.ion-display-lg-table-cell{display:table-cell !important}}@media(min-width: 1200px){.ion-display-xl-table-cell{display:table-cell !important}}.ion-display-table-row{display:table-row !important}@media(min-width: 576px){.ion-display-sm-table-row{display:table-row !important}}@media(min-width: 768px){.ion-display-md-table-row{display:table-row !important}}@media(min-width: 992px){.ion-display-lg-table-row{display:table-row !important}}@media(min-width: 1200px){.ion-display-xl-table-row{display:table-row !important}}/*# sourceMappingURL=utils.bundle.css.map */