@ionic/core 7.6.7-dev.11707156611.1b43b9ec → 7.6.7-dev.11707162903.1706e75f

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 (354) hide show
  1. package/components/action-sheet.js +2 -2
  2. package/components/alert.js +2 -2
  3. package/components/checkbox.js +2 -2
  4. package/components/ion-breadcrumb.js +2 -2
  5. package/components/ion-card-subtitle.js +2 -2
  6. package/components/ion-card-title.js +1 -1
  7. package/components/ion-card.js +2 -2
  8. package/components/ion-datetime-button.js +2 -2
  9. package/components/ion-datetime.js +2 -2
  10. package/components/ion-fab-list.js +1 -1
  11. package/components/ion-infinite-scroll-content.js +2 -2
  12. package/components/ion-input.js +8 -4
  13. package/components/ion-item-divider.js +2 -2
  14. package/components/ion-item-options.js +2 -2
  15. package/components/ion-loading.js +2 -2
  16. package/components/ion-menu.js +2 -2
  17. package/components/ion-modal.js +2 -2
  18. package/components/ion-picker-legacy.js +2 -2
  19. package/components/ion-range.js +2 -2
  20. package/components/ion-refresher-content.js +1 -1
  21. package/components/ion-refresher.js +2 -2
  22. package/components/ion-searchbar.js +2 -2
  23. package/components/ion-segment-button.js +1 -1
  24. package/components/ion-select.js +2 -2
  25. package/components/ion-split-pane.js +2 -2
  26. package/components/ion-tab-bar.js +2 -2
  27. package/components/ion-tab-button.js +2 -2
  28. package/components/ion-textarea.js +2 -2
  29. package/components/ion-title.js +1 -1
  30. package/components/ion-toast.js +2 -2
  31. package/components/ion-toggle.js +2 -2
  32. package/components/ion-toolbar.js +2 -2
  33. package/components/item.js +2 -2
  34. package/components/label.js +2 -2
  35. package/components/list-header.js +2 -2
  36. package/components/list.js +1 -1
  37. package/components/note.js +2 -2
  38. package/components/picker-column2.js +2 -2
  39. package/components/picker.js +2 -2
  40. package/components/popover.js +1 -1
  41. package/components/radio.js +2 -2
  42. package/css/core.css.map +1 -1
  43. package/css/display.css.map +1 -1
  44. package/css/float-elements.css.map +1 -1
  45. package/css/global.bundle.css.map +1 -1
  46. package/css/ionic-swiper.css.map +1 -1
  47. package/css/ionic.bundle.css.map +1 -1
  48. package/css/padding.css.map +1 -1
  49. package/css/structure.css.map +1 -1
  50. package/css/text-alignment.css.map +1 -1
  51. package/css/text-transformation.css.map +1 -1
  52. package/css/themes/dark.always.css +79 -41
  53. package/css/themes/dark.always.css.map +1 -1
  54. package/css/themes/dark.class.css +79 -41
  55. package/css/themes/dark.class.css.map +1 -1
  56. package/css/themes/dark.system.css +79 -41
  57. package/css/themes/dark.system.css.map +1 -1
  58. package/css/themes/high-contrast-dark.always.css +180 -0
  59. package/css/themes/high-contrast-dark.always.css.map +1 -0
  60. package/css/themes/high-contrast-dark.class.css +180 -0
  61. package/css/themes/high-contrast-dark.class.css.map +1 -0
  62. package/css/themes/high-contrast-dark.css +3 -0
  63. package/css/themes/high-contrast-dark.css.map +1 -0
  64. package/css/themes/high-contrast-dark.system.css +182 -0
  65. package/css/themes/high-contrast-dark.system.css.map +1 -0
  66. package/css/themes/high-contrast.always.css +101 -0
  67. package/css/themes/high-contrast.always.css.map +1 -0
  68. package/css/themes/high-contrast.class.css +101 -0
  69. package/css/themes/high-contrast.class.css.map +1 -0
  70. package/css/themes/high-contrast.css +3 -0
  71. package/css/themes/high-contrast.css.map +1 -0
  72. package/css/themes/high-contrast.system.css +103 -0
  73. package/css/themes/high-contrast.system.css.map +1 -0
  74. package/css/typography.css.map +1 -1
  75. package/css/utils.bundle.css.map +1 -1
  76. package/dist/cjs/ion-action-sheet.cjs.entry.js +2 -2
  77. package/dist/cjs/ion-alert.cjs.entry.js +2 -2
  78. package/dist/cjs/ion-app_8.cjs.entry.js +3 -3
  79. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
  80. package/dist/cjs/ion-card_5.cjs.entry.js +5 -5
  81. package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
  82. package/dist/cjs/ion-datetime-button.cjs.entry.js +2 -2
  83. package/dist/cjs/ion-datetime_3.cjs.entry.js +6 -6
  84. package/dist/cjs/ion-fab_3.cjs.entry.js +1 -1
  85. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
  86. package/dist/cjs/ion-input.cjs.entry.js +6 -4
  87. package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
  88. package/dist/cjs/ion-item_8.cjs.entry.js +11 -11
  89. package/dist/cjs/ion-loading.cjs.entry.js +2 -2
  90. package/dist/cjs/ion-menu_3.cjs.entry.js +2 -2
  91. package/dist/cjs/ion-modal.cjs.entry.js +2 -2
  92. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  93. package/dist/cjs/ion-popover.cjs.entry.js +1 -1
  94. package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
  95. package/dist/cjs/ion-range.cjs.entry.js +2 -2
  96. package/dist/cjs/ion-refresher_2.cjs.entry.js +3 -3
  97. package/dist/cjs/ion-searchbar.cjs.entry.js +2 -2
  98. package/dist/cjs/ion-segment_2.cjs.entry.js +1 -1
  99. package/dist/cjs/ion-select_3.cjs.entry.js +2 -2
  100. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  101. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  102. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  103. package/dist/cjs/ion-toast.cjs.entry.js +2 -2
  104. package/dist/cjs/ion-toggle.cjs.entry.js +2 -2
  105. package/dist/cjs/ionic.cjs.js +1 -1
  106. package/dist/cjs/loader.cjs.js +1 -1
  107. package/dist/collection/components/action-sheet/action-sheet.ios.css +4 -4
  108. package/dist/collection/components/action-sheet/action-sheet.md.css +1 -1
  109. package/dist/collection/components/alert/alert.ios.css +58 -10
  110. package/dist/collection/components/alert/alert.md.css +115 -19
  111. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +9 -9
  112. package/dist/collection/components/breadcrumb/breadcrumb.md.css +9 -9
  113. package/dist/collection/components/card/card.ios.css +1 -1
  114. package/dist/collection/components/card/card.md.css +1 -1
  115. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +1 -1
  116. package/dist/collection/components/card-subtitle/card-subtitle.md.css +1 -1
  117. package/dist/collection/components/card-title/card-title.md.css +1 -1
  118. package/dist/collection/components/checkbox/checkbox.ios.css +21 -3
  119. package/dist/collection/components/checkbox/checkbox.md.css +21 -3
  120. package/dist/collection/components/datetime/datetime.ios.css +32 -10
  121. package/dist/collection/components/datetime/datetime.md.css +33 -11
  122. package/dist/collection/components/datetime-button/datetime-button.css +1 -1
  123. package/dist/collection/components/fab-list/fab-list.css +42 -4
  124. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +3 -3
  125. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +3 -3
  126. package/dist/collection/components/input/input.ios.css +31 -7
  127. package/dist/collection/components/input/input.js +41 -2
  128. package/dist/collection/components/input/input.md.css +86 -19
  129. package/dist/collection/components/item/item.ios.css +2 -2
  130. package/dist/collection/components/item/item.md.css +30 -11
  131. package/dist/collection/components/item-divider/item-divider.ios.css +3 -3
  132. package/dist/collection/components/item-divider/item-divider.md.css +3 -3
  133. package/dist/collection/components/item-options/item-options.ios.css +1 -1
  134. package/dist/collection/components/item-options/item-options.md.css +1 -1
  135. package/dist/collection/components/label/label.ios.css +1 -1
  136. package/dist/collection/components/label/label.md.css +1 -1
  137. package/dist/collection/components/list/list.md.css +26 -2
  138. package/dist/collection/components/list-header/list-header.ios.css +2 -2
  139. package/dist/collection/components/list-header/list-header.md.css +1 -1
  140. package/dist/collection/components/loading/loading.ios.css +2 -2
  141. package/dist/collection/components/loading/loading.md.css +2 -2
  142. package/dist/collection/components/menu/menu.ios.css +50 -8
  143. package/dist/collection/components/menu/menu.md.css +50 -8
  144. package/dist/collection/components/modal/modal.ios.css +1 -1
  145. package/dist/collection/components/modal/modal.md.css +1 -1
  146. package/dist/collection/components/note/note.ios.css +1 -1
  147. package/dist/collection/components/note/note.md.css +1 -1
  148. package/dist/collection/components/picker/picker.ios.css +43 -5
  149. package/dist/collection/components/picker/picker.md.css +42 -4
  150. package/dist/collection/components/picker-legacy/picker.ios.css +74 -7
  151. package/dist/collection/components/picker-legacy/picker.md.css +76 -9
  152. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +26 -2
  153. package/dist/collection/components/picker-legacy-column/picker-column.md.css +26 -2
  154. package/dist/collection/components/popover/popover.ios.css +27 -3
  155. package/dist/collection/components/radio/radio.ios.css +42 -5
  156. package/dist/collection/components/radio/radio.md.css +42 -5
  157. package/dist/collection/components/range/range.ios.css +80 -11
  158. package/dist/collection/components/range/range.md.css +132 -16
  159. package/dist/collection/components/refresher/refresher.ios.css +27 -4
  160. package/dist/collection/components/refresher/refresher.md.css +28 -5
  161. package/dist/collection/components/refresher/test/a11y/refresher.e2e.js +1 -2
  162. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  163. package/dist/collection/components/searchbar/searchbar.ios.css +55 -7
  164. package/dist/collection/components/searchbar/searchbar.md.css +82 -10
  165. package/dist/collection/components/segment-button/segment-button.ios.css +3 -3
  166. package/dist/collection/components/select/select.ios.css +23 -5
  167. package/dist/collection/components/select/select.md.css +79 -18
  168. package/dist/collection/components/split-pane/split-pane.ios.css +1 -1
  169. package/dist/collection/components/split-pane/split-pane.md.css +1 -1
  170. package/dist/collection/components/tab-bar/tab-bar.ios.css +3 -3
  171. package/dist/collection/components/tab-bar/tab-bar.md.css +2 -2
  172. package/dist/collection/components/tab-button/tab-button.ios.css +93 -10
  173. package/dist/collection/components/tab-button/tab-button.md.css +93 -10
  174. package/dist/collection/components/textarea/textarea.ios.css +30 -6
  175. package/dist/collection/components/textarea/textarea.md.css +85 -18
  176. package/dist/collection/components/title/title.ios.css +21 -2
  177. package/dist/collection/components/toast/test/a11y/toast.e2e.js +33 -0
  178. package/dist/collection/components/toast/toast.ios.css +54 -7
  179. package/dist/collection/components/toast/toast.md.css +55 -8
  180. package/dist/collection/components/toggle/toggle.ios.css +21 -3
  181. package/dist/collection/components/toggle/toggle.md.css +21 -3
  182. package/dist/collection/components/toolbar/toolbar.ios.css +2 -2
  183. package/dist/collection/components/toolbar/toolbar.md.css +1 -1
  184. package/dist/collection/themes/test/colors/theme.e2e.js +56 -0
  185. package/dist/docs.json +54 -1
  186. package/dist/esm/ion-action-sheet.entry.js +2 -2
  187. package/dist/esm/ion-alert.entry.js +2 -2
  188. package/dist/esm/ion-app_8.entry.js +3 -3
  189. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  190. package/dist/esm/ion-card_5.entry.js +5 -5
  191. package/dist/esm/ion-checkbox.entry.js +2 -2
  192. package/dist/esm/ion-datetime-button.entry.js +2 -2
  193. package/dist/esm/ion-datetime_3.entry.js +6 -6
  194. package/dist/esm/ion-fab_3.entry.js +1 -1
  195. package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
  196. package/dist/esm/ion-input.entry.js +6 -4
  197. package/dist/esm/ion-item-option_3.entry.js +2 -2
  198. package/dist/esm/ion-item_8.entry.js +11 -11
  199. package/dist/esm/ion-loading.entry.js +2 -2
  200. package/dist/esm/ion-menu_3.entry.js +2 -2
  201. package/dist/esm/ion-modal.entry.js +2 -2
  202. package/dist/esm/ion-picker.entry.js +2 -2
  203. package/dist/esm/ion-popover.entry.js +1 -1
  204. package/dist/esm/ion-radio_2.entry.js +2 -2
  205. package/dist/esm/ion-range.entry.js +2 -2
  206. package/dist/esm/ion-refresher_2.entry.js +3 -3
  207. package/dist/esm/ion-searchbar.entry.js +2 -2
  208. package/dist/esm/ion-segment_2.entry.js +1 -1
  209. package/dist/esm/ion-select_3.entry.js +2 -2
  210. package/dist/esm/ion-split-pane.entry.js +2 -2
  211. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  212. package/dist/esm/ion-textarea.entry.js +2 -2
  213. package/dist/esm/ion-toast.entry.js +2 -2
  214. package/dist/esm/ion-toggle.entry.js +2 -2
  215. package/dist/esm/ionic.js +1 -1
  216. package/dist/esm/loader.js +1 -1
  217. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  218. package/dist/esm-es5/ion-alert.entry.js +1 -1
  219. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  220. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  221. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  222. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  223. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  224. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  225. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  226. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  227. package/dist/esm-es5/ion-input.entry.js +1 -1
  228. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  229. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  230. package/dist/esm-es5/ion-loading.entry.js +1 -1
  231. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  232. package/dist/esm-es5/ion-modal.entry.js +1 -1
  233. package/dist/esm-es5/ion-picker.entry.js +1 -1
  234. package/dist/esm-es5/ion-popover.entry.js +1 -1
  235. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  236. package/dist/esm-es5/ion-range.entry.js +1 -1
  237. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  238. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  239. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  240. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  241. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  242. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  243. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  244. package/dist/esm-es5/ion-toast.entry.js +1 -1
  245. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  246. package/dist/esm-es5/ionic.js +1 -1
  247. package/dist/esm-es5/loader.js +1 -1
  248. package/dist/html.html-data.json +8 -0
  249. package/dist/ionic/ionic.esm.js +1 -1
  250. package/dist/ionic/p-0055506a.entry.js +4 -0
  251. package/dist/ionic/p-07d725a7.entry.js +4 -0
  252. package/dist/ionic/p-0ac49b0c.system.entry.js +4 -0
  253. package/dist/ionic/{p-5a85d71d.entry.js → p-0d850325.entry.js} +1 -1
  254. package/dist/ionic/{p-95d8071f.entry.js → p-0f55b1b0.entry.js} +1 -1
  255. package/dist/ionic/{p-7178018d.entry.js → p-14196559.entry.js} +1 -1
  256. package/dist/ionic/p-14b8100f.system.entry.js +4 -0
  257. package/dist/ionic/p-15878390.system.entry.js +4 -0
  258. package/dist/ionic/{p-f3478ed6.system.entry.js → p-16e781a6.system.entry.js} +1 -1
  259. package/dist/ionic/p-1a5f0313.system.js +1 -1
  260. package/dist/ionic/p-1c445de9.entry.js +4 -0
  261. package/dist/ionic/p-2800e6d5.system.entry.js +4 -0
  262. package/dist/ionic/p-283d8f5e.system.entry.js +4 -0
  263. package/dist/ionic/p-2aa29487.system.entry.js +4 -0
  264. package/dist/ionic/p-305423e0.entry.js +4 -0
  265. package/dist/ionic/p-327211c1.entry.js +4 -0
  266. package/dist/ionic/{p-4b94c354.entry.js → p-32b129a2.entry.js} +1 -1
  267. package/dist/ionic/p-34f05cec.entry.js +4 -0
  268. package/dist/ionic/p-3587df88.system.entry.js +4 -0
  269. package/dist/ionic/{p-ea90bf85.system.entry.js → p-381ca6f8.system.entry.js} +1 -1
  270. package/dist/ionic/{p-029891a2.entry.js → p-3cf67784.entry.js} +1 -1
  271. package/dist/ionic/p-3f3ae637.system.entry.js +4 -0
  272. package/dist/ionic/p-438b6002.system.entry.js +4 -0
  273. package/dist/ionic/p-4eaf5dcd.system.entry.js +4 -0
  274. package/dist/ionic/{p-e0909061.system.entry.js → p-5186ff3f.system.entry.js} +1 -1
  275. package/dist/ionic/{p-dc5a71e3.system.entry.js → p-659086a2.system.entry.js} +1 -1
  276. package/dist/ionic/p-6793b96e.system.entry.js +4 -0
  277. package/dist/ionic/{p-9928b546.entry.js → p-69926b34.entry.js} +1 -1
  278. package/dist/ionic/p-6b0c8263.entry.js +4 -0
  279. package/dist/ionic/p-7e8ef0bb.system.entry.js +4 -0
  280. package/dist/ionic/p-89c5f8ba.system.entry.js +4 -0
  281. package/dist/ionic/p-8a1d33e3.system.entry.js +4 -0
  282. package/dist/ionic/{p-8a66c00e.entry.js → p-8aaade76.entry.js} +1 -1
  283. package/dist/ionic/{p-a11e45fe.system.entry.js → p-97657f32.system.entry.js} +1 -1
  284. package/dist/ionic/p-97e39972.system.entry.js +4 -0
  285. package/dist/ionic/p-9b930e4f.entry.js +4 -0
  286. package/dist/ionic/p-a114831c.entry.js +4 -0
  287. package/dist/ionic/p-ae8747aa.entry.js +4 -0
  288. package/dist/ionic/p-b13f5e6a.entry.js +4 -0
  289. package/dist/ionic/{p-7a1ef06a.system.entry.js → p-b6e4e9ce.system.entry.js} +1 -1
  290. package/dist/ionic/p-b8213f04.entry.js +4 -0
  291. package/dist/ionic/{p-67c1996d.entry.js → p-b8fbc01d.entry.js} +1 -1
  292. package/dist/ionic/{p-85e04029.entry.js → p-c6a6ffe6.entry.js} +1 -1
  293. package/dist/ionic/{p-870453fd.entry.js → p-cd6a60d2.entry.js} +1 -1
  294. package/dist/ionic/p-d0291fe9.entry.js +4 -0
  295. package/dist/ionic/p-d5a21de8.entry.js +4 -0
  296. package/dist/ionic/p-db00f04e.entry.js +4 -0
  297. package/dist/ionic/p-ddf79d90.system.entry.js +4 -0
  298. package/dist/ionic/p-def451e2.system.entry.js +4 -0
  299. package/dist/ionic/p-df5134fa.entry.js +4 -0
  300. package/dist/ionic/p-df7aaa62.entry.js +4 -0
  301. package/dist/ionic/p-dfd21411.system.entry.js +4 -0
  302. package/dist/ionic/p-e9a36c6f.entry.js +4 -0
  303. package/dist/ionic/p-ef6ec008.system.entry.js +4 -0
  304. package/dist/ionic/p-ef9e6f77.system.entry.js +4 -0
  305. package/dist/ionic/{p-7751def0.system.entry.js → p-f003e500.system.entry.js} +1 -1
  306. package/dist/ionic/p-f27b18ba.system.entry.js +4 -0
  307. package/dist/ionic/p-f62122bb.system.entry.js +4 -0
  308. package/dist/ionic/p-fdc3ff96.entry.js +4 -0
  309. package/dist/types/components/input/input.d.ts +6 -0
  310. package/dist/types/components.d.ts +12 -0
  311. package/dist/types/utils/test/playwright/generator.d.ts +3 -1
  312. package/hydrate/index.js +81 -77
  313. package/package.json +1 -1
  314. package/dist/ionic/p-05266a75.entry.js +0 -4
  315. package/dist/ionic/p-055aee88.system.entry.js +0 -4
  316. package/dist/ionic/p-0b27e3f9.entry.js +0 -4
  317. package/dist/ionic/p-127ff448.entry.js +0 -4
  318. package/dist/ionic/p-18858f40.entry.js +0 -4
  319. package/dist/ionic/p-26976bfc.system.entry.js +0 -4
  320. package/dist/ionic/p-2e93a307.system.entry.js +0 -4
  321. package/dist/ionic/p-359da6bc.entry.js +0 -4
  322. package/dist/ionic/p-39af44bb.entry.js +0 -4
  323. package/dist/ionic/p-3bb8dba2.system.entry.js +0 -4
  324. package/dist/ionic/p-4210519e.entry.js +0 -4
  325. package/dist/ionic/p-4565aa49.system.entry.js +0 -4
  326. package/dist/ionic/p-467ec026.entry.js +0 -4
  327. package/dist/ionic/p-4b890ea2.entry.js +0 -4
  328. package/dist/ionic/p-4f18d611.system.entry.js +0 -4
  329. package/dist/ionic/p-567ba50a.system.entry.js +0 -4
  330. package/dist/ionic/p-598bd8e2.entry.js +0 -4
  331. package/dist/ionic/p-673614dd.system.entry.js +0 -4
  332. package/dist/ionic/p-6ba863b1.system.entry.js +0 -4
  333. package/dist/ionic/p-731c9b0c.system.entry.js +0 -4
  334. package/dist/ionic/p-735807f6.system.entry.js +0 -4
  335. package/dist/ionic/p-77166522.system.entry.js +0 -4
  336. package/dist/ionic/p-7a15321a.entry.js +0 -4
  337. package/dist/ionic/p-7a2c6bb5.entry.js +0 -4
  338. package/dist/ionic/p-85897798.entry.js +0 -4
  339. package/dist/ionic/p-85cb3f46.entry.js +0 -4
  340. package/dist/ionic/p-92453558.entry.js +0 -4
  341. package/dist/ionic/p-b0ab5300.entry.js +0 -4
  342. package/dist/ionic/p-b3196337.system.entry.js +0 -4
  343. package/dist/ionic/p-bad61026.system.entry.js +0 -4
  344. package/dist/ionic/p-c9b8f9e5.system.entry.js +0 -4
  345. package/dist/ionic/p-cb304e5f.system.entry.js +0 -4
  346. package/dist/ionic/p-d05259ce.system.entry.js +0 -4
  347. package/dist/ionic/p-d5d46104.system.entry.js +0 -4
  348. package/dist/ionic/p-e1635f65.entry.js +0 -4
  349. package/dist/ionic/p-e219aec9.system.entry.js +0 -4
  350. package/dist/ionic/p-e28a6fd5.entry.js +0 -4
  351. package/dist/ionic/p-ee1214e0.system.entry.js +0 -4
  352. package/dist/ionic/p-f065a07b.entry.js +0 -4
  353. package/dist/ionic/p-f62739dd.system.entry.js +0 -4
  354. package/dist/ionic/p-ffaba024.system.entry.js +0 -4
@@ -84,7 +84,7 @@
84
84
  --placeholder-color: initial;
85
85
  --placeholder-font-style: initial;
86
86
  --placeholder-font-weight: initial;
87
- --placeholder-opacity: 0.6;
87
+ --placeholder-opacity: var(--ion-placeholder-opacity, 0.6);
88
88
  --padding-top: 0;
89
89
  --padding-end: 0;
90
90
  --padding-bottom: 0;
@@ -275,8 +275,32 @@
275
275
  position: absolute;
276
276
  pointer-events: none;
277
277
  }
278
- .cloned-input {
279
- inset-inline-start: 0;
278
+ @supports (inset-inline-start: 0) {
279
+ .cloned-input {
280
+ inset-inline-start: 0;
281
+ }
282
+ }
283
+ @supports not (inset-inline-start: 0) {
284
+ .cloned-input {
285
+ left: 0;
286
+ }
287
+ :host-context([dir=rtl]) .cloned-input {
288
+ left: unset;
289
+ right: unset;
290
+ right: 0;
291
+ }
292
+ [dir=rtl] .cloned-input {
293
+ left: unset;
294
+ right: unset;
295
+ right: 0;
296
+ }
297
+ @supports selector(:dir(rtl)) {
298
+ .cloned-input:dir(rtl) {
299
+ left: unset;
300
+ right: unset;
301
+ right: 0;
302
+ }
303
+ }
280
304
  }
281
305
 
282
306
  /**
@@ -466,7 +490,7 @@
466
490
 
467
491
  .textarea-bottom .helper-text {
468
492
  display: block;
469
- color: var(--ion-color-step-550, #737373);
493
+ color: var(--ion-color-step-550, var(--ion-text-color-step-450, #737373));
470
494
  }
471
495
 
472
496
  :host(.ion-touched.ion-invalid) .textarea-bottom .error-text {
@@ -485,7 +509,7 @@
485
509
  */
486
510
  -webkit-margin-start: auto;
487
511
  margin-inline-start: auto;
488
- color: var(--ion-color-step-550, #737373);
512
+ color: var(--ion-color-step-550, var(--ion-text-color-step-450, #737373));
489
513
  white-space: nowrap;
490
514
  padding-inline-start: 16px;
491
515
  }
@@ -917,7 +941,7 @@
917
941
  */
918
942
  :host {
919
943
  --border-width: 0.55px;
920
- --border-color: var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, #c8c7cc)));
944
+ --border-color: var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));
921
945
  --padding-top: 10px;
922
946
  --padding-end: 0px;
923
947
  --padding-bottom: 8px;
@@ -84,7 +84,7 @@
84
84
  --placeholder-color: initial;
85
85
  --placeholder-font-style: initial;
86
86
  --placeholder-font-weight: initial;
87
- --placeholder-opacity: 0.6;
87
+ --placeholder-opacity: var(--ion-placeholder-opacity, 0.6);
88
88
  --padding-top: 0;
89
89
  --padding-end: 0;
90
90
  --padding-bottom: 0;
@@ -275,8 +275,32 @@
275
275
  position: absolute;
276
276
  pointer-events: none;
277
277
  }
278
- .cloned-input {
279
- inset-inline-start: 0;
278
+ @supports (inset-inline-start: 0) {
279
+ .cloned-input {
280
+ inset-inline-start: 0;
281
+ }
282
+ }
283
+ @supports not (inset-inline-start: 0) {
284
+ .cloned-input {
285
+ left: 0;
286
+ }
287
+ :host-context([dir=rtl]) .cloned-input {
288
+ left: unset;
289
+ right: unset;
290
+ right: 0;
291
+ }
292
+ [dir=rtl] .cloned-input {
293
+ left: unset;
294
+ right: unset;
295
+ right: 0;
296
+ }
297
+ @supports selector(:dir(rtl)) {
298
+ .cloned-input:dir(rtl) {
299
+ left: unset;
300
+ right: unset;
301
+ right: 0;
302
+ }
303
+ }
280
304
  }
281
305
 
282
306
  /**
@@ -466,7 +490,7 @@
466
490
 
467
491
  .textarea-bottom .helper-text {
468
492
  display: block;
469
- color: var(--ion-color-step-550, #737373);
493
+ color: var(--ion-color-step-550, var(--ion-text-color-step-450, #737373));
470
494
  }
471
495
 
472
496
  :host(.ion-touched.ion-invalid) .textarea-bottom .error-text {
@@ -485,7 +509,7 @@
485
509
  */
486
510
  -webkit-margin-start: auto;
487
511
  margin-inline-start: auto;
488
- color: var(--ion-color-step-550, #737373);
512
+ color: var(--ion-color-step-550, var(--ion-text-color-step-450, #737373));
489
513
  white-space: nowrap;
490
514
  padding-inline-start: 16px;
491
515
  }
@@ -971,8 +995,8 @@
971
995
  * }
972
996
  */
973
997
  :host(.textarea-fill-solid) {
974
- --background: var(--ion-color-step-50, #f2f2f2);
975
- --border-color: var(--ion-color-step-500, gray);
998
+ --background: var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));
999
+ --border-color: var(--ion-color-step-500, var(--ion-background-color-step-500, gray));
976
1000
  --border-radius: 4px;
977
1001
  --padding-start: 16px;
978
1002
  --padding-end: 16px;
@@ -1008,8 +1032,8 @@
1008
1032
  */
1009
1033
  @media (any-hover: hover) {
1010
1034
  :host(.textarea-fill-solid:hover) {
1011
- --background: var(--ion-color-step-100, #e6e6e6);
1012
- --border-color: var(--ion-color-step-750, #404040);
1035
+ --background: var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));
1036
+ --border-color: var(--ion-color-step-750, var(--ion-background-color-step-750, #404040));
1013
1037
  }
1014
1038
  }
1015
1039
  /**
@@ -1017,8 +1041,8 @@
1017
1041
  * much darker on focus.
1018
1042
  */
1019
1043
  :host(.textarea-fill-solid.has-focus) {
1020
- --background: var(--ion-color-step-150, #d9d9d9);
1021
- --border-color: var(--ion-color-step-750, #404040);
1044
+ --background: var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));
1045
+ --border-color: var(--ion-color-step-750, var(--ion-background-color-step-750, #404040));
1022
1046
  }
1023
1047
 
1024
1048
  :host(.textarea-fill-solid) .textarea-wrapper {
@@ -1111,7 +1135,7 @@
1111
1135
  * }
1112
1136
  */
1113
1137
  :host(.textarea-fill-outline) {
1114
- --border-color: var(--ion-color-step-300, #b3b3b3);
1138
+ --border-color: var(--ion-color-step-300, var(--ion-background-color-step-300, #b3b3b3));
1115
1139
  --border-radius: 4px;
1116
1140
  --padding-start: 16px;
1117
1141
  --padding-end: 16px;
@@ -1139,7 +1163,7 @@
1139
1163
  */
1140
1164
  @media (any-hover: hover) {
1141
1165
  :host(.textarea-fill-outline:hover) {
1142
- --border-color: var(--ion-color-step-750, #404040);
1166
+ --border-color: var(--ion-color-step-750, var(--ion-background-color-step-750, #404040));
1143
1167
  }
1144
1168
  }
1145
1169
  /**
@@ -1381,7 +1405,7 @@
1381
1405
 
1382
1406
  :host {
1383
1407
  --border-width: 1px;
1384
- --border-color: var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.13))));
1408
+ --border-color: var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.13)))));
1385
1409
  --padding-top: 18px;
1386
1410
  --padding-end: 0px;
1387
1411
  --padding-bottom: 8px;
@@ -1442,8 +1466,32 @@
1442
1466
  transition: transform 200ms;
1443
1467
  background: var(--highlight-color);
1444
1468
  }
1445
- .textarea-highlight {
1446
- inset-inline-start: 0;
1469
+ @supports (inset-inline-start: 0) {
1470
+ .textarea-highlight {
1471
+ inset-inline-start: 0;
1472
+ }
1473
+ }
1474
+ @supports not (inset-inline-start: 0) {
1475
+ .textarea-highlight {
1476
+ left: 0;
1477
+ }
1478
+ :host-context([dir=rtl]) .textarea-highlight {
1479
+ left: unset;
1480
+ right: unset;
1481
+ right: 0;
1482
+ }
1483
+ [dir=rtl] .textarea-highlight {
1484
+ left: unset;
1485
+ right: unset;
1486
+ right: 0;
1487
+ }
1488
+ @supports selector(:dir(rtl)) {
1489
+ .textarea-highlight:dir(rtl) {
1490
+ left: unset;
1491
+ right: unset;
1492
+ right: 0;
1493
+ }
1494
+ }
1447
1495
  }
1448
1496
 
1449
1497
  :host(.has-focus) .textarea-highlight {
@@ -1458,8 +1506,27 @@
1458
1506
  :host(.in-item) .textarea-highlight {
1459
1507
  bottom: 0;
1460
1508
  }
1461
- :host(.in-item) .textarea-highlight {
1462
- inset-inline-start: 0;
1509
+ @supports (inset-inline-start: 0) {
1510
+ :host(.in-item) .textarea-highlight {
1511
+ inset-inline-start: 0;
1512
+ }
1513
+ }
1514
+ @supports not (inset-inline-start: 0) {
1515
+ :host(.in-item) .textarea-highlight {
1516
+ left: 0;
1517
+ }
1518
+ :host-context([dir=rtl]):host(.in-item) .textarea-highlight, :host-context([dir=rtl]).in-item .textarea-highlight {
1519
+ left: unset;
1520
+ right: unset;
1521
+ right: 0;
1522
+ }
1523
+ @supports selector(:dir(rtl)) {
1524
+ :host(.in-item:dir(rtl)) .textarea-highlight {
1525
+ left: unset;
1526
+ right: unset;
1527
+ right: 0;
1528
+ }
1529
+ }
1463
1530
  }
1464
1531
 
1465
1532
  :host(.textarea-shape-round) {
@@ -100,8 +100,27 @@
100
100
  box-sizing: border-box;
101
101
  pointer-events: none;
102
102
  }
103
- :host {
104
- inset-inline-start: 0;
103
+ @supports (inset-inline-start: 0) {
104
+ :host {
105
+ inset-inline-start: 0;
106
+ }
107
+ }
108
+ @supports not (inset-inline-start: 0) {
109
+ :host {
110
+ left: 0;
111
+ }
112
+ :host-context([dir=rtl]) {
113
+ left: unset;
114
+ right: unset;
115
+ right: 0;
116
+ }
117
+ @supports selector(:dir(rtl)) {
118
+ :host(:dir(rtl)) {
119
+ left: unset;
120
+ right: unset;
121
+ right: 0;
122
+ }
123
+ }
105
124
  }
106
125
 
107
126
  :host(.title-small) {
@@ -175,3 +175,36 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
175
175
  });
176
176
  });
177
177
  });
178
+ /**
179
+ * High contrast mode tests
180
+ */
181
+ configs({ directions: ['ltr'], themes: ['high-contrast-dark', 'high-contrast-light'] }).forEach(({ title, config, screenshot }) => {
182
+ test.describe(title('toast: high contrast: buttons'), () => {
183
+ test.beforeEach(async ({ page }) => {
184
+ await page.setContent(`
185
+ <ion-toast is-open="true" header="Testing" message="Hello world"></ion-toast>
186
+ <script>
187
+ const toast = document.querySelector('ion-toast');
188
+ toast.buttons = [
189
+ { text: 'Cancel', role: 'cancel' },
190
+ { text: 'OK' }
191
+ ];
192
+ </script>
193
+ `, config);
194
+ });
195
+ test('should not have visual regressions', async ({ page }) => {
196
+ const toast = page.locator('ion-toast');
197
+ await expect(toast).toBeVisible();
198
+ const toastWrapper = toast.locator('.toast-wrapper');
199
+ await expect(toastWrapper).toHaveScreenshot(screenshot(`toast-high-contrast-buttons`));
200
+ });
201
+ test('should pass AAA guidelines', async ({ page }) => {
202
+ const ionToastDidPresent = await page.spyOnEvent('ionToastDidPresent');
203
+ await ionToastDidPresent.next();
204
+ const results = await new AxeBuilder({ page })
205
+ .options({ rules: { 'color-contrast-enhanced': { enabled: true } } })
206
+ .analyze();
207
+ expect(results.violations).toEqual([]);
208
+ });
209
+ });
210
+ });
@@ -102,8 +102,27 @@
102
102
  z-index: 1001;
103
103
  pointer-events: none;
104
104
  }
105
- :host {
106
- inset-inline-start: 0;
105
+ @supports (inset-inline-start: 0) {
106
+ :host {
107
+ inset-inline-start: 0;
108
+ }
109
+ }
110
+ @supports not (inset-inline-start: 0) {
111
+ :host {
112
+ left: 0;
113
+ }
114
+ :host-context([dir=rtl]) {
115
+ left: unset;
116
+ right: unset;
117
+ right: 0;
118
+ }
119
+ @supports selector(:dir(rtl)) {
120
+ :host(:dir(rtl)) {
121
+ left: unset;
122
+ right: unset;
123
+ right: 0;
124
+ }
125
+ }
107
126
  }
108
127
 
109
128
  :host(.overlay-hidden) {
@@ -137,9 +156,37 @@
137
156
  background: var(--background);
138
157
  box-shadow: var(--box-shadow);
139
158
  }
140
- .toast-wrapper {
141
- inset-inline-start: var(--start);
142
- inset-inline-end: var(--end);
159
+ @supports (inset-inline-start: 0) {
160
+ .toast-wrapper {
161
+ inset-inline-start: var(--start);
162
+ inset-inline-end: var(--end);
163
+ }
164
+ }
165
+ @supports not (inset-inline-start: 0) {
166
+ .toast-wrapper {
167
+ left: var(--start);
168
+ right: var(--end);
169
+ }
170
+ :host-context([dir=rtl]) .toast-wrapper {
171
+ left: unset;
172
+ right: unset;
173
+ left: var(--end);
174
+ right: var(--start);
175
+ }
176
+ [dir=rtl] .toast-wrapper {
177
+ left: unset;
178
+ right: unset;
179
+ left: var(--end);
180
+ right: var(--start);
181
+ }
182
+ @supports selector(:dir(rtl)) {
183
+ .toast-wrapper:dir(rtl) {
184
+ left: unset;
185
+ right: unset;
186
+ left: var(--end);
187
+ right: var(--start);
188
+ }
189
+ }
143
190
  }
144
191
 
145
192
  .toast-wrapper.toast-top {
@@ -274,10 +321,10 @@
274
321
  * }
275
322
  */
276
323
  :host {
277
- --background: var(--ion-color-step-50, #f2f2f2);
324
+ --background: var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));
278
325
  --border-radius: 14px;
279
326
  --button-color: var(--ion-color-primary, #0054e9);
280
- --color: var(--ion-color-step-850, #262626);
327
+ --color: var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));
281
328
  --max-width: 700px;
282
329
  --max-height: 478px;
283
330
  --start: 10px;
@@ -102,8 +102,27 @@
102
102
  z-index: 1001;
103
103
  pointer-events: none;
104
104
  }
105
- :host {
106
- inset-inline-start: 0;
105
+ @supports (inset-inline-start: 0) {
106
+ :host {
107
+ inset-inline-start: 0;
108
+ }
109
+ }
110
+ @supports not (inset-inline-start: 0) {
111
+ :host {
112
+ left: 0;
113
+ }
114
+ :host-context([dir=rtl]) {
115
+ left: unset;
116
+ right: unset;
117
+ right: 0;
118
+ }
119
+ @supports selector(:dir(rtl)) {
120
+ :host(:dir(rtl)) {
121
+ left: unset;
122
+ right: unset;
123
+ right: 0;
124
+ }
125
+ }
107
126
  }
108
127
 
109
128
  :host(.overlay-hidden) {
@@ -137,9 +156,37 @@
137
156
  background: var(--background);
138
157
  box-shadow: var(--box-shadow);
139
158
  }
140
- .toast-wrapper {
141
- inset-inline-start: var(--start);
142
- inset-inline-end: var(--end);
159
+ @supports (inset-inline-start: 0) {
160
+ .toast-wrapper {
161
+ inset-inline-start: var(--start);
162
+ inset-inline-end: var(--end);
163
+ }
164
+ }
165
+ @supports not (inset-inline-start: 0) {
166
+ .toast-wrapper {
167
+ left: var(--start);
168
+ right: var(--end);
169
+ }
170
+ :host-context([dir=rtl]) .toast-wrapper {
171
+ left: unset;
172
+ right: unset;
173
+ left: var(--end);
174
+ right: var(--start);
175
+ }
176
+ [dir=rtl] .toast-wrapper {
177
+ left: unset;
178
+ right: unset;
179
+ left: var(--end);
180
+ right: var(--start);
181
+ }
182
+ @supports selector(:dir(rtl)) {
183
+ .toast-wrapper:dir(rtl) {
184
+ left: unset;
185
+ right: unset;
186
+ left: var(--end);
187
+ right: var(--start);
188
+ }
189
+ }
143
190
  }
144
191
 
145
192
  .toast-wrapper.toast-top {
@@ -274,11 +321,11 @@
274
321
  * }
275
322
  */
276
323
  :host {
277
- --background: var(--ion-color-step-800, #333333);
324
+ --background: var(--ion-color-step-800, var(--ion-background-color-step-800, #333333));
278
325
  --border-radius: 4px;
279
326
  --box-shadow: 0 3px 5px -1px rgba(0, 0, 0, 0.2), 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12);
280
327
  --button-color: var(--ion-color-primary, #0054e9);
281
- --color: var(--ion-color-step-50, #f2f2f2);
328
+ --color: var(--ion-color-step-50, var(--ion-text-color-step-950, #f2f2f2));
282
329
  --max-width: 700px;
283
330
  --start: 8px;
284
331
  --end: 8px;
@@ -357,7 +404,7 @@
357
404
  }
358
405
 
359
406
  .toast-button-cancel {
360
- color: var(--ion-color-step-100, #e6e6e6);
407
+ color: var(--ion-color-step-100, var(--ion-text-color-step-900, #e6e6e6));
361
408
  }
362
409
 
363
410
  .toast-button-icon-only {
@@ -129,10 +129,28 @@
129
129
  opacity: 0;
130
130
  pointer-events: none;
131
131
  }
132
- :host(.legacy-toggle) label {
133
- inset-inline-start: 0;
132
+ @supports (inset-inline-start: 0) {
133
+ :host(.legacy-toggle) label {
134
+ inset-inline-start: 0;
135
+ }
136
+ }
137
+ @supports not (inset-inline-start: 0) {
138
+ :host(.legacy-toggle) label {
139
+ left: 0;
140
+ }
141
+ :host-context([dir=rtl]):host(.legacy-toggle) label, :host-context([dir=rtl]).legacy-toggle label {
142
+ left: unset;
143
+ right: unset;
144
+ right: 0;
145
+ }
146
+ @supports selector(:dir(rtl)) {
147
+ :host(.legacy-toggle:dir(rtl)) label {
148
+ left: unset;
149
+ right: unset;
150
+ right: 0;
151
+ }
152
+ }
134
153
  }
135
-
136
154
  :host(.legacy-toggle) label::-moz-focus-inner {
137
155
  border: 0;
138
156
  }
@@ -129,10 +129,28 @@
129
129
  opacity: 0;
130
130
  pointer-events: none;
131
131
  }
132
- :host(.legacy-toggle) label {
133
- inset-inline-start: 0;
132
+ @supports (inset-inline-start: 0) {
133
+ :host(.legacy-toggle) label {
134
+ inset-inline-start: 0;
135
+ }
136
+ }
137
+ @supports not (inset-inline-start: 0) {
138
+ :host(.legacy-toggle) label {
139
+ left: 0;
140
+ }
141
+ :host-context([dir=rtl]):host(.legacy-toggle) label, :host-context([dir=rtl]).legacy-toggle label {
142
+ left: unset;
143
+ right: unset;
144
+ right: 0;
145
+ }
146
+ @supports selector(:dir(rtl)) {
147
+ :host(.legacy-toggle:dir(rtl)) label {
148
+ left: unset;
149
+ right: unset;
150
+ right: 0;
151
+ }
152
+ }
134
153
  }
135
-
136
154
  :host(.legacy-toggle) label::-moz-focus-inner {
137
155
  border: 0;
138
156
  }
@@ -198,9 +198,9 @@
198
198
  * }
199
199
  */
200
200
  :host {
201
- --background: var(--ion-toolbar-background, var(--ion-color-step-50, #f7f7f7));
201
+ --background: var(--ion-toolbar-background, var(--ion-color-step-50, var(--ion-background-color-step-50, #f7f7f7)));
202
202
  --color: var(--ion-toolbar-color, var(--ion-text-color, #000));
203
- --border-color: var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, 0.2))));
203
+ --border-color: var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.2)))));
204
204
  --padding-top: 3px;
205
205
  --padding-bottom: 3px;
206
206
  --padding-start: 4px;
@@ -200,7 +200,7 @@
200
200
  :host {
201
201
  --background: var(--ion-toolbar-background, var(--ion-background-color, #fff));
202
202
  --color: var(--ion-toolbar-color, var(--ion-text-color, #424242));
203
- --border-color: var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, #c1c4cd)));
203
+ --border-color: var(--ion-toolbar-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, #c1c4cd))));
204
204
  --padding-top: 0;
205
205
  --padding-bottom: 0;
206
206
  --padding-start: 0;
@@ -4,10 +4,15 @@
4
4
  import AxeBuilder from "@axe-core/playwright";
5
5
  import { expect } from "@playwright/test";
6
6
  import { configs, test } from "../../../utils/test/playwright/index";
7
+ /**
8
+ * Small text is defined as 14pt (~18.5px)
9
+ * when computing color contrast: https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html
10
+ */
7
11
  const styleTestHelpers = `
8
12
  <style>
9
13
  main {
10
14
  background: var(--ion-color-contrast);
15
+ font-size: 14pt;
11
16
  }
12
17
  .ion-background {
13
18
  background: var(--ion-color-base);
@@ -112,3 +117,54 @@ configs({ modes: ['md'], directions: ['ltr'], themes: ['light', 'dark'] }).forEa
112
117
  }
113
118
  });
114
119
  });
120
+ configs({ modes: ['md'], directions: ['ltr'], themes: ['high-contrast-light', 'high-contrast-dark'] }).forEach(({ config, title }) => {
121
+ const colors = ['primary', 'secondary', 'tertiary', 'success', 'warning', 'danger', 'light', 'medium', 'dark'];
122
+ test.describe(title('theme'), () => {
123
+ test.beforeEach(({ skip }) => {
124
+ skip.browser('firefox', 'Color contrast ratio is consistent across browsers');
125
+ skip.browser('webkit', 'Color contrast ratio is consistent across browsers');
126
+ });
127
+ for (const color of colors) {
128
+ test(`color "${color}" should pass AAA guidelines`, async ({ page }) => {
129
+ await page.setContent(`${styleTestHelpers}
130
+ <main class="ion-color-${color}">
131
+ <p class="ion-color">Hello World</p>
132
+ </main>`, config);
133
+ const results = await new AxeBuilder({ page })
134
+ .options({ rules: { 'color-contrast-enhanced': { enabled: true } } })
135
+ .analyze();
136
+ expect(results.violations).toEqual([]);
137
+ });
138
+ test(`contrast color on "${color}" background should pass AAA guidelines`, async ({ page }) => {
139
+ await page.setContent(`${styleTestHelpers}
140
+ <main class="ion-color-${color}">
141
+ <p class="ion-color-contrast ion-background">Hello World</p>
142
+ </main>`, config);
143
+ const results = await new AxeBuilder({ page })
144
+ .options({ rules: { 'color-contrast-enhanced': { enabled: true } } })
145
+ .analyze();
146
+ expect(results.violations).toEqual([]);
147
+ });
148
+ test(`contrast color on "${color}" background shade should pass AAA guidelines`, async ({ page }) => {
149
+ await page.setContent(`${styleTestHelpers}
150
+ <main class="ion-color-${color}">
151
+ <p class="ion-color-contrast ion-background-shade">Hello World</p>
152
+ </main>`, config);
153
+ const results = await new AxeBuilder({ page })
154
+ .options({ rules: { 'color-contrast-enhanced': { enabled: true } } })
155
+ .analyze();
156
+ expect(results.violations).toEqual([]);
157
+ });
158
+ test(`contrast color on "${color}" background tint should pass AAA guidelines`, async ({ page }) => {
159
+ await page.setContent(`${styleTestHelpers}
160
+ <main class="ion-color-${color}">
161
+ <p class="ion-color-contrast ion-background-tint">Hello World</p>
162
+ </main>`, config);
163
+ const results = await new AxeBuilder({ page })
164
+ .options({ rules: { 'color-contrast-enhanced': { enabled: true } } })
165
+ .analyze();
166
+ expect(results.violations).toEqual([]);
167
+ });
168
+ }
169
+ });
170
+ });