@iamproperty/components 7.1.0--beta6 → 7.2.0

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 (351) hide show
  1. package/assets/css/components/actionbar.component.css +1 -0
  2. package/assets/css/components/actionbar.component.css.map +1 -0
  3. package/assets/css/components/actionbar.global.css +1 -1
  4. package/assets/css/components/actionbar.global.css.map +1 -1
  5. package/assets/css/components/address-lookup.css +1 -1
  6. package/assets/css/components/address-lookup.css.map +1 -1
  7. package/assets/css/components/barchart.component.css +1 -1
  8. package/assets/css/components/barchart.component.css.map +1 -1
  9. package/assets/css/components/bento-grid.component.css +1 -0
  10. package/assets/css/components/bento-grid.component.css.map +1 -0
  11. package/assets/css/components/card.component.css +1 -1
  12. package/assets/css/components/card.component.css.map +1 -1
  13. package/assets/css/components/carousel.component.css +1 -1
  14. package/assets/css/components/carousel.component.css.map +1 -1
  15. package/assets/css/components/carousel.config.css +1 -1
  16. package/assets/css/components/carousel.config.css.map +1 -1
  17. package/assets/css/components/charts.config.css +1 -1
  18. package/assets/css/components/charts.config.css.map +1 -1
  19. package/assets/css/components/charts.css +1 -1
  20. package/assets/css/components/charts.css.map +1 -1
  21. package/assets/css/components/charts.module.css +1 -1
  22. package/assets/css/components/charts.module.css.map +1 -1
  23. package/assets/css/components/collapsible-side.css +1 -1
  24. package/assets/css/components/collapsible-side.css.map +1 -1
  25. package/assets/css/components/doughnutchart.component.css +1 -0
  26. package/assets/css/components/doughnutchart.component.css.map +1 -0
  27. package/assets/css/components/fileupload.css.map +1 -1
  28. package/assets/css/components/header.css.map +1 -1
  29. package/assets/css/components/inline-edit.preload.css +1 -1
  30. package/assets/css/components/inline-edit.preload.css.map +1 -1
  31. package/assets/css/components/marketing.css.map +1 -1
  32. package/assets/css/components/menu.component.css +1 -0
  33. package/assets/css/components/menu.component.css.map +1 -0
  34. package/assets/css/components/menu.css +1 -0
  35. package/assets/css/components/menu.css.map +1 -0
  36. package/assets/css/components/multi-step.component.css.map +1 -1
  37. package/assets/css/components/multiselect.preload.css +1 -1
  38. package/assets/css/components/multiselect.preload.css.map +1 -1
  39. package/assets/css/components/nav.component.css +1 -0
  40. package/assets/css/components/nav.component.css.map +1 -0
  41. package/assets/css/components/nav.docs.css.map +1 -1
  42. package/assets/css/components/nav.global.css.map +1 -1
  43. package/assets/css/components/nav.old.css +1 -1
  44. package/assets/css/components/nav.old.css.map +1 -1
  45. package/assets/css/components/nav.preload.css +1 -1
  46. package/assets/css/components/nav.preload.css.map +1 -1
  47. package/assets/css/components/notification.css +1 -1
  48. package/assets/css/components/notification.css.map +1 -1
  49. package/assets/css/components/pagination.css +1 -1
  50. package/assets/css/components/pagination.css.map +1 -1
  51. package/assets/css/components/property-searchbar.css.map +1 -1
  52. package/assets/css/components/slider.css +1 -1
  53. package/assets/css/components/slider.css.map +1 -1
  54. package/assets/css/components/snapshot.css.map +1 -1
  55. package/assets/css/components/stepper.css.map +1 -1
  56. package/assets/css/components/{table.css → table.component.css} +1 -1
  57. package/assets/css/components/table.component.css.map +1 -0
  58. package/assets/css/components/table.global.css +1 -1
  59. package/assets/css/components/table.global.css.map +1 -1
  60. package/assets/css/components/tabs.component.css +1 -0
  61. package/assets/css/components/tabs.component.css.map +1 -0
  62. package/assets/css/components/tabs.css +1 -1
  63. package/assets/css/components/tabs.css.map +1 -1
  64. package/assets/css/components/testimonial.css.map +1 -1
  65. package/assets/css/components/timeline.css.map +1 -1
  66. package/assets/css/core.min.css +1 -1
  67. package/assets/css/core.min.css.map +1 -1
  68. package/assets/css/mobile-core.min.css +1 -0
  69. package/assets/css/mobile-core.min.css.map +1 -0
  70. package/assets/css/mobile.min.css +1 -0
  71. package/assets/css/mobile.min.css.map +1 -0
  72. package/assets/css/style.min.css +1 -1
  73. package/assets/css/style.min.css.map +1 -1
  74. package/assets/js/components/_global.js +0 -1
  75. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  76. package/assets/js/components/accordion/accordion.component.min.js.map +1 -1
  77. package/assets/js/components/actionbar/actionbar.component.js +86 -8
  78. package/assets/js/components/actionbar/actionbar.component.min.js +19 -6
  79. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  80. package/assets/js/components/address-lookup/address-lookup.component.js +17 -18
  81. package/assets/js/components/address-lookup/address-lookup.component.min.js +5 -5
  82. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  83. package/assets/js/components/applied-filters/applied-filters.component.js +0 -1
  84. package/assets/js/components/applied-filters/applied-filters.component.min.js +4 -4
  85. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  86. package/assets/js/components/barchart/barchart.component.js +2 -3
  87. package/assets/js/components/barchart/barchart.component.min.js +8 -4
  88. package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
  89. package/assets/js/components/bento-grid/bento-grid.component.js +50 -0
  90. package/assets/js/components/bento-grid/bento-grid.component.min.js +15 -0
  91. package/assets/js/components/bento-grid/bento-grid.component.min.js.map +1 -0
  92. package/assets/js/components/card/card.component.js +10 -13
  93. package/assets/js/components/card/card.component.min.js +7 -7
  94. package/assets/js/components/card/card.component.min.js.map +1 -1
  95. package/assets/js/components/carousel/carousel.component.js +4 -5
  96. package/assets/js/components/carousel/carousel.component.min.js +4 -4
  97. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  98. package/assets/js/components/chart/chart.component.js +1 -5
  99. package/assets/js/components/collapsible-side/collapsible-side.component.js +4 -5
  100. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +4 -4
  101. package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
  102. package/assets/js/components/doughnutchart/doughnutchart.component.js +70 -0
  103. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +25 -0
  104. package/assets/js/components/doughnutchart/doughnutchart.component.min.js.map +1 -0
  105. package/assets/js/components/fileupload/fileupload.component.js +2 -3
  106. package/assets/js/components/fileupload/fileupload.component.min.js +6 -6
  107. package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
  108. package/assets/js/components/filter-card/filter-card.component.js +3 -4
  109. package/assets/js/components/filter-card/filter-card.component.min.js +4 -4
  110. package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
  111. package/assets/js/components/filterlist/filterlist.component.js +0 -1
  112. package/assets/js/components/filterlist/filterlist.component.min.js +3 -3
  113. package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -1
  114. package/assets/js/components/header/header.component.js +0 -1
  115. package/assets/js/components/header/header.component.min.js +1 -1
  116. package/assets/js/components/header/header.component.min.js.map +1 -1
  117. package/assets/js/components/inline-edit/inline-edit.component.js +7 -8
  118. package/assets/js/components/inline-edit/inline-edit.component.min.js +4 -4
  119. package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
  120. package/assets/js/components/marketing/marketing.component.js +0 -1
  121. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  122. package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
  123. package/assets/js/components/menu/menu.component.js +200 -0
  124. package/assets/js/components/menu/menu.component.min.js +77 -0
  125. package/assets/js/components/menu/menu.component.min.js.map +1 -0
  126. package/assets/js/components/multi-step/multi-step.component.js +10 -10
  127. package/assets/js/components/multi-step/multi-step.component.min.js +13 -0
  128. package/assets/js/components/multi-step/multi-step.component.min.js.map +1 -0
  129. package/assets/js/components/multiselect/multiselect.component.js +10 -10
  130. package/assets/js/components/multiselect/multiselect.component.min.js +3 -3
  131. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  132. package/assets/js/components/nav/nav.component.js +7 -7
  133. package/assets/js/components/nav/nav.component.min.js +7 -7
  134. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  135. package/assets/js/components/notification/notification.component.js +3 -3
  136. package/assets/js/components/notification/notification.component.min.js +4 -4
  137. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  138. package/assets/js/components/pagination/pagination.component.js +3 -4
  139. package/assets/js/components/pagination/pagination.component.min.js +4 -4
  140. package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
  141. package/assets/js/components/record-card/record-card.component.js +6 -8
  142. package/assets/js/components/record-card/record-card.component.min.js +4 -4
  143. package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
  144. package/assets/js/components/search/search.component.js +9 -6
  145. package/assets/js/components/search/search.component.min.js +8 -5
  146. package/assets/js/components/search/search.component.min.js.map +1 -1
  147. package/assets/js/components/slider/slider.component.js +8 -8
  148. package/assets/js/components/slider/slider.component.min.js +5 -5
  149. package/assets/js/components/slider/slider.component.min.js.map +1 -1
  150. package/assets/js/components/table/table.component.js +12 -11
  151. package/assets/js/components/table/table.component.min.js +7 -7
  152. package/assets/js/components/table/table.component.min.js.map +1 -1
  153. package/assets/js/components/tabs/tabs.component.js +1 -2
  154. package/assets/js/components/tabs/tabs.component.min.js +4 -4
  155. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  156. package/assets/js/components/video-card/video-card.component.js +4 -3
  157. package/assets/js/components/video-card/video-card.component.min.js +3 -3
  158. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  159. package/assets/js/modules/applied-filters.js +8 -9
  160. package/assets/js/modules/carousel.js +9 -10
  161. package/assets/js/modules/chart.js +5 -3
  162. package/assets/js/modules/chart.module.js +127 -6
  163. package/assets/js/modules/dialogs.js +6 -7
  164. package/assets/js/modules/drawer.js +1 -2
  165. package/assets/js/modules/dynamicEvents.js +7 -8
  166. package/assets/js/modules/fileupload.js +7 -7
  167. package/assets/js/modules/filterlist.js +3 -4
  168. package/assets/js/modules/form.js +12 -13
  169. package/assets/js/modules/helpers.js +3 -5
  170. package/assets/js/modules/inputs.js +6 -9
  171. package/assets/js/modules/nav.js +3 -4
  172. package/assets/js/modules/notification.js +2 -3
  173. package/assets/js/modules/orderablelist.js +0 -1
  174. package/assets/js/modules/table.js +80 -42
  175. package/assets/js/modules/tabs.js +3 -6
  176. package/assets/js/scripts.bundle.js +3 -3
  177. package/assets/js/scripts.bundle.js.map +1 -1
  178. package/assets/js/scripts.bundle.min.js +2 -2
  179. package/assets/js/scripts.bundle.min.js.map +1 -1
  180. package/assets/js/scripts.js +64 -6
  181. package/assets/js/tests/card.spec.js +14 -0
  182. package/assets/js/tests/carousel.spec.js +60 -0
  183. package/assets/js/tests/chart.spec.js +7 -5
  184. package/assets/js/tests/fileupload.spec.js +22 -0
  185. package/assets/js/tests/multistep.spec.js +68 -0
  186. package/assets/sass/_bs_grid.scss +39 -0
  187. package/assets/sass/_components.scss +323 -100
  188. package/assets/sass/_corefiles.scss +46 -39
  189. package/assets/sass/_elements.scss +98 -18
  190. package/assets/sass/_example.scss +61 -0
  191. package/assets/sass/_func.scss +4 -14
  192. package/assets/sass/_functions/{utilities.scss → bs_utilities.scss} +43 -39
  193. package/assets/sass/_functions/functions.scss +66 -52
  194. package/assets/sass/_functions/mixins.scss +82 -137
  195. package/assets/sass/_functions/utility-mixins.scss +1445 -0
  196. package/assets/sass/_functions/variables.scss +90 -1659
  197. package/assets/sass/_functions/variables_old.scss +1701 -0
  198. package/assets/sass/{foundations/grid.scss → _grid.scss} +96 -82
  199. package/assets/sass/_tests/func.spec.scss +1 -37
  200. package/assets/sass/_tests/mixins.spec.scss +1 -77
  201. package/assets/sass/_tests/typography.spec.scss +1 -1
  202. package/assets/sass/_utilities.scss +35 -117
  203. package/assets/sass/_utility-mixins.scss +37 -0
  204. package/assets/sass/components/{actionbar.scss → actionbar.component.scss} +82 -16
  205. package/assets/sass/components/actionbar.global.scss +28 -14
  206. package/assets/sass/components/address-lookup.scss +6 -0
  207. package/assets/sass/components/barchart.component.scss +8 -19
  208. package/assets/sass/components/bento-grid.component.scss +91 -0
  209. package/assets/sass/components/carousel.config.scss +64 -58
  210. package/assets/sass/components/charts.config.scss +73 -67
  211. package/assets/sass/components/charts.module.scss +131 -73
  212. package/assets/sass/components/charts.scss +43 -42
  213. package/assets/sass/components/collapsible-side.scss +29 -27
  214. package/assets/sass/components/doughnutchart.component.scss +205 -0
  215. package/assets/sass/components/fileupload.scss +4 -3
  216. package/assets/sass/components/header.scss +5 -5
  217. package/assets/sass/components/inline-edit.preload.scss +108 -102
  218. package/assets/sass/components/menu.component.scss +101 -0
  219. package/assets/sass/components/menu.scss +21 -0
  220. package/assets/sass/components/multi-step.component.scss +5 -3
  221. package/assets/sass/components/multiselect.preload.scss +36 -30
  222. package/assets/sass/components/{nav.scss → nav.component.scss} +41 -21
  223. package/assets/sass/components/nav.docs.scss +1 -1
  224. package/assets/sass/components/nav.global.scss +13 -11
  225. package/assets/sass/components/nav.old.scss +21 -24
  226. package/assets/sass/components/nav.preload.scss +40 -34
  227. package/assets/sass/components/notification.scss +9 -5
  228. package/assets/sass/components/pagination.scss +6 -0
  229. package/assets/sass/components/property-searchbar.scss +7 -7
  230. package/assets/sass/components/slider.scss +2 -0
  231. package/assets/sass/components/snapshot.scss +2 -2
  232. package/assets/sass/components/stepper.scss +7 -7
  233. package/assets/sass/components/table.global.scss +57 -1
  234. package/assets/sass/components/tabs.component.scss +5 -0
  235. package/assets/sass/components/tabs.scss +9 -6
  236. package/assets/sass/components/testimonial.scss +7 -7
  237. package/assets/sass/components/timeline.scss +1 -1
  238. package/assets/sass/core.scss +13 -2
  239. package/assets/sass/elements/admin-panel.scss +201 -134
  240. package/assets/sass/elements/badge-tag.scss +87 -81
  241. package/assets/sass/elements/brand.scss +67 -61
  242. package/assets/sass/elements/buttons--action.scss +55 -0
  243. package/assets/sass/elements/buttons--compact.scss +135 -0
  244. package/assets/sass/elements/buttons--global.scss +322 -0
  245. package/assets/sass/elements/buttons--secondary.scss +24 -0
  246. package/assets/sass/elements/buttons--tertiary.scss +57 -0
  247. package/assets/sass/elements/buttons.scss +29 -503
  248. package/assets/sass/elements/container.scss +160 -121
  249. package/assets/sass/elements/details.scss +147 -138
  250. package/assets/sass/elements/dialog.scss +36 -30
  251. package/assets/sass/elements/forms.scss +1061 -1047
  252. package/assets/sass/elements/icons.scss +23 -17
  253. package/assets/sass/elements/links.scss +131 -116
  254. package/assets/sass/elements/lists.scss +270 -264
  255. package/assets/sass/elements/media.scss +19 -13
  256. package/assets/sass/elements/modal.scss +336 -330
  257. package/assets/sass/elements/popover.scss +163 -152
  258. package/assets/sass/elements/progress.scss +173 -162
  259. package/assets/sass/elements/table.element.scss +115 -109
  260. package/assets/sass/elements/tooltips.scss +87 -80
  261. package/assets/sass/elements/type.scss +172 -160
  262. package/assets/sass/email.scss +4 -1
  263. package/assets/sass/error.scss +15 -9
  264. package/assets/sass/foundations/reboot.scss +176 -170
  265. package/assets/sass/foundations/root.scss +136 -125
  266. package/assets/sass/helpers/line-clamp.scss +0 -23
  267. package/assets/sass/helpers/max-height.scss +2 -2
  268. package/assets/sass/main.scss +14 -3
  269. package/assets/sass/mobile-core.scss +14 -0
  270. package/assets/sass/mobile.scss +16 -0
  271. package/assets/sass/templates/auth.scss +88 -83
  272. package/assets/sass/templates/form.scss +68 -59
  273. package/assets/ts/components/_global.ts +2 -3
  274. package/assets/ts/components/actionbar/actionbar.component.ts +94 -2
  275. package/assets/ts/components/address-lookup/address-lookup.component.ts +21 -22
  276. package/assets/ts/components/applied-filters/applied-filters.component.ts +1 -2
  277. package/assets/ts/components/barchart/barchart.component.ts +3 -5
  278. package/assets/ts/components/bento-grid/README.md +31 -0
  279. package/assets/ts/components/bento-grid/bento-grid.component.ts +67 -0
  280. package/assets/ts/components/card/card.component.ts +13 -16
  281. package/assets/ts/components/carousel/carousel.component.ts +5 -7
  282. package/assets/ts/components/chart/chart.component.ts +4 -9
  283. package/assets/ts/components/collapsible-side/collapsible-side.component.ts +5 -6
  284. package/assets/ts/components/doughnutchart/doughnutchart.component.ts +85 -0
  285. package/assets/ts/components/fileupload/fileupload.component.ts +5 -6
  286. package/assets/ts/components/filter-card/filter-card.component.ts +4 -5
  287. package/assets/ts/components/filterlist/filterlist.component.ts +1 -2
  288. package/assets/ts/components/header/header.component.ts +1 -3
  289. package/assets/ts/components/inline-edit/inline-edit.component.ts +8 -11
  290. package/assets/ts/components/marketing/marketing.component.ts +1 -3
  291. package/assets/ts/components/menu/menu.component.ts +222 -0
  292. package/assets/ts/components/multi-step/multi-step.component.ts +19 -23
  293. package/assets/ts/components/multiselect/multiselect.component.ts +13 -14
  294. package/assets/ts/components/nav/nav.component.ts +8 -9
  295. package/assets/ts/components/notification/notification.component.ts +3 -3
  296. package/assets/ts/components/pagination/pagination.component.ts +7 -8
  297. package/assets/ts/components/record-card/record-card.component.ts +9 -11
  298. package/assets/ts/components/search/search.component.ts +12 -9
  299. package/assets/ts/components/slider/slider.component.ts +9 -10
  300. package/assets/ts/components/table/table.component.ts +19 -18
  301. package/assets/ts/components/tabs/tabs.component.ts +2 -3
  302. package/assets/ts/components/video-card/video-card.component.ts +13 -12
  303. package/assets/ts/modules/applied-filters.ts +10 -11
  304. package/assets/ts/modules/card.module.ts +1 -1
  305. package/assets/ts/modules/carousel.ts +13 -15
  306. package/assets/ts/modules/chart.module.ts +176 -24
  307. package/assets/ts/modules/chart.ts +26 -24
  308. package/assets/ts/modules/dialogs.ts +10 -13
  309. package/assets/ts/modules/drawer.ts +1 -2
  310. package/assets/ts/modules/dynamicEvents.ts +12 -14
  311. package/assets/ts/modules/fileupload.ts +10 -10
  312. package/assets/ts/modules/filterlist.ts +6 -7
  313. package/assets/ts/modules/form.ts +16 -17
  314. package/assets/ts/modules/helpers.ts +18 -21
  315. package/assets/ts/modules/inputs.ts +15 -18
  316. package/assets/ts/modules/nav.ts +4 -5
  317. package/assets/ts/modules/notification.ts +7 -8
  318. package/assets/ts/modules/orderablelist.ts +3 -4
  319. package/assets/ts/modules/pagination.ts +1 -1
  320. package/assets/ts/modules/table.ts +103 -60
  321. package/assets/ts/modules/tabs.ts +6 -14
  322. package/assets/ts/scripts.ts +70 -6
  323. package/assets/ts/tests/card.spec.ts +19 -0
  324. package/assets/ts/tests/carousel.spec.ts +66 -0
  325. package/assets/ts/tests/chart.spec.ts +9 -6
  326. package/assets/ts/tests/fileupload.spec.ts +30 -0
  327. package/assets/ts/tests/multistep.spec.ts +78 -0
  328. package/dist/components.es.js +1258 -1063
  329. package/dist/components.umd.js +473 -195
  330. package/package.json +44 -49
  331. package/src/components/BentoGrid/BentoGrid.vue +20 -0
  332. package/src/components/DoughnutChart/DoughnutChart.vue +23 -0
  333. package/src/components/FileUpload/FileUpload.vue +4 -1
  334. package/src/components/Menu/Menu.vue +22 -0
  335. package/src/components/Tabs/Tabs.vue +0 -4
  336. package/src/index.js +25 -19
  337. package/assets/css/components/actionbar.css +0 -1
  338. package/assets/css/components/actionbar.css.map +0 -1
  339. package/assets/css/components/nav.css +0 -1
  340. package/assets/css/components/nav.css.map +0 -1
  341. package/assets/css/components/table.css.map +0 -1
  342. package/assets/js/components.bundle.js +0 -5
  343. package/assets/js/components.bundle.js.map +0 -1
  344. package/assets/js/components.js +0 -57
  345. package/assets/js/modules/file-upload.js +0 -32
  346. package/assets/sass/components.reset.scss +0 -8
  347. package/assets/sass/foundations/bs_grid.scss +0 -32
  348. package/assets/ts/components.ts +0 -62
  349. package/assets/ts/modules/file-upload.ts +0 -52
  350. package/dist/style.css +0 -1
  351. /package/assets/sass/components/{table.scss → table.component.scss} +0 -0
@@ -1,140 +1,149 @@
1
+ @use 'sass:map';
2
+ @use 'sass:math';
3
+
1
4
  @use '../_func' as *;
2
5
 
3
6
  $icon-error: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d='M256 32a224 224 0 1 1 0 448 224 224 0 1 1 0-448zm0 480A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c-8.8 0-16 7.2-16 16V272c0 8.8 7.2 16 16 16s16-7.2 16-16V144c0-8.8-7.2-16-16-16zm24 224a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z' fill='#dc3545'/></svg>");
4
7
 
5
8
  $icon-tick: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d='M441 103c9.4 9.4 9.4 24.6 0 33.9L177 401c-9.4 9.4-24.6 9.4-33.9 0L7 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l119 119L407 103c9.4-9.4 24.6-9.4 33.9 0z' fill='#0f9d58' /></svg>");
6
9
 
7
- // #region RESETS
10
+ $layers: 'true' !default;
11
+ $mobileOnly: 'false' !default;
12
+ $darkMode: 'true' !default;
13
+ $optionalText: 'true' !default;
8
14
 
9
- label {
10
- display: inline-block; // 1
11
- }
15
+ @include layer('elements', $layers) {
16
+ // #region RESETS
12
17
 
13
- // 1. Remove the margin in Firefox and Safari
18
+ label {
19
+ display: inline-block; // 1
20
+ }
14
21
 
15
- input,
16
- select,
17
- optgroup,
18
- textarea {
19
- margin: 0; // 1
20
- font-family: inherit;
21
- @include font-size(inherit);
22
- line-height: inherit;
23
- }
22
+ // 1. Remove the margin in Firefox and Safari
24
23
 
25
- // Remove the inheritance of text transform in Firefox
26
- select {
27
- text-transform: none;
28
- }
29
- // Set the cursor for non-`<button>` buttons
30
- //
31
- // Details at https://github.com/twbs/bootstrap/pull/30562
24
+ input,
25
+ select,
26
+ optgroup,
27
+ textarea {
28
+ margin: 0; // 1
29
+ font-family: inherit;
30
+ @include font-size(inherit);
31
+ line-height: inherit;
32
+ }
32
33
 
33
- select {
34
- // Remove the inheritance of word-wrap in Safari.
35
- // See https://github.com/twbs/bootstrap/issues/24990
36
- word-wrap: normal;
34
+ // Remove the inheritance of text transform in Firefox
35
+ select {
36
+ text-transform: none;
37
+ }
38
+ // Set the cursor for non-`<button>` buttons
39
+ //
40
+ // Details at https://github.com/twbs/bootstrap/pull/30562
41
+
42
+ select {
43
+ // Remove the inheritance of word-wrap in Safari.
44
+ // See https://github.com/twbs/bootstrap/issues/24990
45
+ word-wrap: normal;
37
46
 
38
- // Undo the opacity change from Chrome
39
- &:disabled {
40
- opacity: 1;
47
+ // Undo the opacity change from Chrome
48
+ &:disabled {
49
+ opacity: 1;
50
+ }
41
51
  }
42
- }
43
52
 
44
- // Remove the dropdown arrow only from text type inputs built with datalists in Chrome.
45
- // See https://stackoverflow.com/a/54997118
53
+ // Remove the dropdown arrow only from text type inputs built with datalists in Chrome.
54
+ // See https://stackoverflow.com/a/54997118
46
55
 
47
- [list]:not([type='date']):not([type='datetime-local']):not([type='month']):not([type='week']):not(
48
- [type='time']
49
- )::-webkit-calendar-picker-indicator {
50
- display: none !important;
51
- }
56
+ [list]:not([type='date']):not([type='datetime-local']):not([type='month']):not([type='week']):not(
57
+ [type='time']
58
+ )::-webkit-calendar-picker-indicator {
59
+ display: none !important;
60
+ }
52
61
 
53
- // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
54
- // controls in Android 4.
55
- // 2. Correct the inability to style clickable types in iOS and Safari.
56
- // 3. Opinionated: add "hand" cursor to non-disabled button elements.
62
+ // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
63
+ // controls in Android 4.
64
+ // 2. Correct the inability to style clickable types in iOS and Safari.
65
+ // 3. Opinionated: add "hand" cursor to non-disabled button elements.
57
66
 
58
- // Remove inner border and padding from Firefox, but don't restore the outline like Normalize.
67
+ // Remove inner border and padding from Firefox, but don't restore the outline like Normalize.
59
68
 
60
- ::-moz-focus-inner {
61
- padding: 0;
62
- border-style: none;
63
- }
69
+ ::-moz-focus-inner {
70
+ padding: 0;
71
+ border-style: none;
72
+ }
64
73
 
65
- // 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.
74
+ // 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.
66
75
 
67
- textarea {
68
- resize: vertical; // 1
69
- }
76
+ textarea {
77
+ resize: vertical; // 1
78
+ }
70
79
 
71
- // 1. Browsers set a default `min-width: min-content;` on fieldsets,
72
- // unlike e.g. `<div>`s, which have `min-width: 0;` by default.
73
- // So we reset that to ensure fieldsets behave more like a standard block element.
74
- // See https://github.com/twbs/bootstrap/issues/12359
75
- // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
76
- // 2. Reset the default outline behavior of fieldsets so they don't affect page layout.
77
-
78
- fieldset {
79
- min-width: 0; // 1
80
- padding: 0; // 2
81
- margin: 0; // 2
82
- border: 0; // 2
83
- }
80
+ // 1. Browsers set a default `min-width: min-content;` on fieldsets,
81
+ // unlike e.g. `<div>`s, which have `min-width: 0;` by default.
82
+ // So we reset that to ensure fieldsets behave more like a standard block element.
83
+ // See https://github.com/twbs/bootstrap/issues/12359
84
+ // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
85
+ // 2. Reset the default outline behavior of fieldsets so they don't affect page layout.
86
+
87
+ fieldset {
88
+ min-width: 0; // 1
89
+ padding: 0; // 2
90
+ margin: 0; // 2
91
+ border: 0; // 2
92
+ }
84
93
 
85
- // 1. By using `float: left`, the legend will behave like a block element.
86
- // This way the border of a fieldset wraps around the legend if present.
87
- // 2. Fix wrapping bug.
88
- // See https://github.com/twbs/bootstrap/issues/29712
94
+ // 1. By using `float: left`, the legend will behave like a block element.
95
+ // This way the border of a fieldset wraps around the legend if present.
96
+ // 2. Fix wrapping bug.
97
+ // See https://github.com/twbs/bootstrap/issues/29712
89
98
 
90
- legend {
91
- float: left; // 1
92
- width: 100%;
93
- padding: 0;
94
- margin-bottom: $legend-margin-bottom;
95
- @include font-size($legend-font-size);
96
- font-weight: $legend-font-weight;
97
- line-height: inherit;
99
+ legend {
100
+ float: left; // 1
101
+ width: 100%;
102
+ padding: 0;
103
+ margin-bottom: $legend-margin-bottom;
104
+ @include font-size($legend-font-size);
105
+ font-weight: $legend-font-weight;
106
+ line-height: inherit;
98
107
 
99
- + * {
100
- clear: left; // 2
108
+ + * {
109
+ clear: left; // 2
110
+ }
101
111
  }
102
- }
103
112
 
104
- // Fix height of inputs with a type of datetime-local, date, month, week, or time
105
- // See https://github.com/twbs/bootstrap/issues/18842
106
-
107
- ::-webkit-datetime-edit-fields-wrapper,
108
- ::-webkit-datetime-edit-text,
109
- ::-webkit-datetime-edit-minute,
110
- ::-webkit-datetime-edit-hour-field,
111
- ::-webkit-datetime-edit-day-field,
112
- ::-webkit-datetime-edit-month-field,
113
- ::-webkit-datetime-edit-year-field {
114
- padding: 0;
115
- }
113
+ // Fix height of inputs with a type of datetime-local, date, month, week, or time
114
+ // See https://github.com/twbs/bootstrap/issues/18842
115
+
116
+ ::-webkit-datetime-edit-fields-wrapper,
117
+ ::-webkit-datetime-edit-text,
118
+ ::-webkit-datetime-edit-minute,
119
+ ::-webkit-datetime-edit-hour-field,
120
+ ::-webkit-datetime-edit-day-field,
121
+ ::-webkit-datetime-edit-month-field,
122
+ ::-webkit-datetime-edit-year-field {
123
+ padding: 0;
124
+ }
116
125
 
117
- ::-webkit-inner-spin-button {
118
- height: auto;
119
- }
126
+ ::-webkit-inner-spin-button {
127
+ height: auto;
128
+ }
120
129
 
121
- // 1. Correct the outline style in Safari.
122
- // 2. This overrides the extra rounded corners on search inputs in iOS so that our
123
- // `.form-control` class can properly style them. Note that this cannot simply
124
- // be added to `.form-control` as it's not specific enough. For details, see
125
- // https://github.com/twbs/bootstrap/issues/11586.
130
+ // 1. Correct the outline style in Safari.
131
+ // 2. This overrides the extra rounded corners on search inputs in iOS so that our
132
+ // `.form-control` class can properly style them. Note that this cannot simply
133
+ // be added to `.form-control` as it's not specific enough. For details, see
134
+ // https://github.com/twbs/bootstrap/issues/11586.
126
135
 
127
- [type='search'] {
128
- outline-offset: -2px; // 1
129
- -webkit-appearance: textfield; // 2
130
- }
136
+ [type='search'] {
137
+ outline-offset: -2px; // 1
138
+ -webkit-appearance: textfield; // 2
139
+ }
131
140
 
132
- // 1. A few input types should stay LTR
133
- // See https://rtlstyling.com/posts/rtl-styling#form-inputs
134
- // 2. RTL only output
135
- // See https://rtlcss.com/learn/usage-guide/control-directives/#raw
141
+ // 1. A few input types should stay LTR
142
+ // See https://rtlstyling.com/posts/rtl-styling#form-inputs
143
+ // 2. RTL only output
144
+ // See https://rtlcss.com/learn/usage-guide/control-directives/#raw
136
145
 
137
- /* rtl:raw:
146
+ /* rtl:raw:
138
147
  [type="tel"],
139
148
  [type="url"],
140
149
  [type="email"],
@@ -143,1158 +152,1163 @@ legend {
143
152
  }
144
153
  */
145
154
 
146
- // Remove the inner padding in Chrome and Safari on macOS.
155
+ // Remove the inner padding in Chrome and Safari on macOS.
147
156
 
148
- ::-webkit-search-decoration {
149
- -webkit-appearance: none;
150
- }
157
+ ::-webkit-search-decoration {
158
+ -webkit-appearance: none;
159
+ }
151
160
 
152
- // Remove padding around color pickers in webkit browsers
161
+ // Remove padding around color pickers in webkit browsers
153
162
 
154
- ::-webkit-color-swatch-wrapper {
155
- padding: 0;
156
- }
163
+ ::-webkit-color-swatch-wrapper {
164
+ padding: 0;
165
+ }
157
166
 
158
- // 1. Inherit font family and line height for file input buttons
159
- // 2. Correct the inability to style clickable types in iOS and Safari.
167
+ // 1. Inherit font family and line height for file input buttons
168
+ // 2. Correct the inability to style clickable types in iOS and Safari.
160
169
 
161
- ::file-selector-button {
162
- font: inherit; // 1
163
- -webkit-appearance: button; // 2
164
- }
170
+ ::file-selector-button {
171
+ font: inherit; // 1
172
+ -webkit-appearance: button; // 2
173
+ }
165
174
 
166
- // Correct element displays
175
+ // Correct element displays
167
176
 
168
- output {
169
- display: inline-block;
170
- }
177
+ output {
178
+ display: inline-block;
179
+ }
171
180
 
172
- // Remove border from iframe
181
+ // Remove border from iframe
173
182
 
174
- iframe {
175
- border: 0;
176
- }
183
+ iframe {
184
+ border: 0;
185
+ }
177
186
 
178
- // Summary
179
- //
180
- // 1. Add the correct display in all browsers
187
+ // Summary
188
+ //
189
+ // 1. Add the correct display in all browsers
181
190
 
182
- summary {
183
- display: list-item; // 1
184
- cursor: pointer;
185
- }
191
+ summary {
192
+ display: list-item; // 1
193
+ cursor: pointer;
194
+ }
186
195
 
187
- // Progress
188
- //
189
- // Add the correct vertical alignment in Chrome, Firefox, and Opera.
196
+ // Progress
197
+ //
198
+ // Add the correct vertical alignment in Chrome, Firefox, and Opera.
190
199
 
191
- progress {
192
- vertical-align: baseline;
193
- }
200
+ progress {
201
+ vertical-align: baseline;
202
+ }
194
203
 
195
- // Hidden attribute
196
- //
197
- // Always hide an element with the `hidden` HTML attribute.
204
+ // Hidden attribute
205
+ //
206
+ // Always hide an element with the `hidden` HTML attribute.
198
207
 
199
- // #endregion
208
+ // #endregion
200
209
 
201
- // #region Form label
202
- :is(label:not(.tag), .label) {
203
- font-size: rem(18);
204
- line-height: rem(21);
205
- margin-bottom: rem(8);
206
- font-weight: normal;
207
- color: var(--colour-heading);
208
- display: block;
209
- }
210
- // #endregion
210
+ // #region Form label
211
+ :is(label:not(.tag), .label) {
212
+ font-size: rem(18);
213
+ line-height: rem(21);
214
+ margin-bottom: rem(8);
215
+ font-weight: normal;
216
+ color: var(--colour-heading);
217
+ display: block;
218
+ }
219
+ // #endregion
220
+
221
+ // #region Optional text
222
+ :is(label:not(.tag), .label) {
223
+ @if $optionalText == 'true' {
224
+ &:has(
225
+ + input:not(:disabled):not([readonly]):not(:required):not([type='radio']):not([type='checkbox']):not(
226
+ [type='file']
227
+ )
228
+ ):after {
229
+ content: ' (Optional)';
230
+ }
231
+ }
211
232
 
212
- // #region Optional text
213
- :is(label:not(.tag), .label) {
214
- @if $optionalText == 'true' {
215
233
  &:has(
216
- + input:not(:disabled):not([readonly]):not(:required):not([type='radio']):not([type='checkbox']):not(
234
+ input:not(:disabled):not([readonly]):not(:required):not([type='radio']):not([type='checkbox']):not(
217
235
  [type='file']
218
236
  )
219
- ):after {
237
+ )
238
+ .optional-text:before {
220
239
  content: ' (Optional)';
221
240
  }
222
241
  }
223
242
 
224
- &:has(
225
- input:not(:disabled):not([readonly]):not(:required):not([type='radio']):not([type='checkbox']):not([type='file'])
226
- )
227
- .optional-text:before {
228
- content: ' (Optional)';
229
- }
230
- }
231
-
232
- // #endregion
233
-
234
- // #region input field
235
- :is(
236
- input:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='range']),
237
- textarea,
238
- output,
239
- select:not(.select--minimal)
240
- ) {
241
- display: block;
242
- width: 100%;
243
- display: block;
244
- width: 100%;
245
- padding: var(--input-padding-block, #{rem(12)}) var(--input-padding-inline, #{rem(16)});
246
- font-size: var(--input-fs, #{rem(16)});
247
- line-height: var(--input-lh, #{rem(20)});
248
- color: var(--colour-body);
249
- background-color: var(--colour-canvas-2);
250
- background-clip: padding-box;
251
- border: 2px solid var(--colour-primary);
252
- appearance: none; // Fix appearance for date inputs in Safari
253
- border-radius: rem(8);
254
- margin-bottom: rem(24);
255
- min-height: calc(
256
- var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + var(--input-lh, #{rem(20)}) + 4px
257
- );
258
- max-height: calc(
259
- var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + var(--input-lh, #{rem(20)}) + 4px
260
- );
261
-
262
- &:is(textarea) {
263
- max-height: 100%;
264
- }
265
-
266
- // Customize the `:focus` state to imitate native WebKit styles.
267
- &:is(:focus, .focus):not(:disabled) {
268
- border-color: var(--colour-info);
269
- outline: 0;
270
- box-shadow: 0 0 0 0.1rem rgba(30, 190, 230, 0.25);
271
- }
272
-
273
- // Add some height to date inputs on iOS
274
- // https://github.com/twbs/bootstrap/issues/23307
275
- // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved
276
- &::-webkit-date-and-time-value {
277
- // Multiply line-height by 1em if it has no unit
278
- height: if(unit($input-line-height) == '', $input-line-height * 1em, $input-line-height);
279
- }
280
-
281
- // Disabled inputs
282
- &:disabled {
283
- background-color: #ccd6d8;
284
- opacity: 0.4;
285
- cursor: not-allowed;
286
- }
287
- }
243
+ // #endregion
288
244
 
289
- :is(input:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='range'])) {
290
- max-width: $input-max-width;
291
- }
245
+ // #region input field
246
+ :is(
247
+ input:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='range']),
248
+ textarea,
249
+ output,
250
+ select:not(.select--minimal)
251
+ ) {
252
+ display: block;
253
+ width: 100%;
254
+ display: block;
255
+ width: 100%;
256
+ padding: var(--input-padding-block, #{rem(12)}) var(--input-padding-inline, #{rem(16)});
257
+ font-size: var(--input-fs, #{rem(16)});
258
+ line-height: var(--input-lh, #{rem(20)});
259
+ color: var(--colour-body);
260
+ background-color: var(--colour-canvas-2);
261
+ background-clip: padding-box;
262
+ border: 2px solid var(--colour-primary);
263
+ appearance: none; // Fix appearance for date inputs in Safari
264
+ border-radius: rem(8);
265
+ margin-bottom: rem(24);
266
+ min-height: calc(
267
+ var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + var(--input-lh, #{rem(20)}) +
268
+ 4px
269
+ );
270
+ max-height: calc(
271
+ var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + var(--input-lh, #{rem(20)}) +
272
+ 4px
273
+ );
292
274
 
293
- textarea {
294
- --textarea-height-scale: 3;
295
- min-height: calc(
296
- var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) +
297
- (var(--input-lh, #{rem(20)}) * var(--textarea-height-scale)) + 4px
298
- ) !important;
299
- }
300
- // #endregion
275
+ &:is(textarea) {
276
+ max-height: 100%;
277
+ }
301
278
 
302
- // #region legend
303
- fieldset {
304
- width: 100%;
305
- }
306
- legend {
307
- font-family: $headings-font-family;
308
- font-style: $headings-font-style;
309
- font-weight: $headings-font-weight;
310
- line-height: $headings-line-height;
311
- color: $headings-color;
312
- margin: 0;
313
- clear: both;
314
- display: block;
315
- float: none;
316
- font-size: rem(map-get($heading-sizes, 'h4_fs'));
317
- line-height: rem(map-get($heading-sizes, 'h4_lh'));
318
- padding-bottom: 0.5rem;
319
- max-width: var(--content-max-width);
320
- min-width: 100%;
321
- }
279
+ // Customize the `:focus` state to imitate native WebKit styles.
280
+ &:is(:focus, .focus):not(:disabled) {
281
+ border-color: var(--colour-info);
282
+ outline: 0;
283
+ box-shadow: 0 0 0 0.1rem rgba(30, 190, 230, 0.25);
284
+ }
322
285
 
323
- // #endregion
286
+ // Add some height to date inputs on iOS
287
+ // https://github.com/twbs/bootstrap/issues/23307
288
+ // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved
289
+ &::-webkit-date-and-time-value {
290
+ // Multiply line-height by 1em if it has no unit
291
+ height: if(math.unit($input-line-height) == '', $input-line-height * 1em, $input-line-height);
292
+ }
324
293
 
325
- // #region wrappers
326
- div:has(> label:first-child):has(> input) {
327
- position: relative;
328
- max-width: $input-max-width;
329
- margin-bottom: rem(24);
294
+ // Disabled inputs
295
+ &:disabled {
296
+ background-color: #ccd6d8;
297
+ opacity: 0.4;
298
+ cursor: not-allowed;
299
+ }
300
+ }
330
301
 
331
- input:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='range']),
332
- output,
333
- .prefix,
334
- .suffix {
335
- margin-bottom: 0 !important;
302
+ :is(input:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='range'])) {
303
+ max-width: $input-max-width;
336
304
  }
337
305
 
338
- display: flex;
339
- flex-wrap: wrap;
340
- align-items: center;
306
+ textarea {
307
+ --textarea-height-scale: 3;
308
+ min-height: calc(
309
+ var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) +
310
+ (var(--input-lh, #{rem(20)}) * var(--textarea-height-scale)) + 4px
311
+ ) !important;
312
+ }
313
+ // #endregion
341
314
 
342
- > *:not(input:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='range'])):not(output):not(
343
- .prefix
344
- ):not(.suffix) {
345
- flex-shrink: 0;
315
+ // #region legend
316
+ fieldset {
346
317
  width: 100%;
347
318
  }
348
-
349
- :is(input:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='range']), textarea, output) {
350
- flex-shrink: 1;
351
- flex-grow: 1;
352
- width: 0;
319
+ legend {
320
+ font-family: $headings-font-family;
321
+ font-style: $headings-font-style;
322
+ font-weight: $headings-font-weight;
323
+ line-height: $headings-line-height;
324
+ color: $headings-color;
325
+ margin: 0;
326
+ clear: both;
327
+ display: block;
328
+ float: none;
329
+ font-size: rem(map.get($heading-sizes, 'h4_fs'));
330
+ line-height: rem(map.get($heading-sizes, 'h4_lh'));
331
+ padding-bottom: 0.5rem;
332
+ max-width: var(--content-max-width);
333
+ min-width: 100%;
353
334
  }
354
335
 
355
- input ~ *:not(output) {
356
- order: 5;
357
- margin-top: rem(8);
358
- }
359
- }
336
+ // #endregion
337
+
338
+ // #region wrappers
339
+ div:has(> label:first-child):has(> input) {
340
+ position: relative;
341
+ max-width: $input-max-width;
342
+ margin-bottom: rem(24);
360
343
 
361
- // #region colors
344
+ input:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='range']),
345
+ output,
346
+ .prefix,
347
+ .suffix {
348
+ margin-bottom: 0 !important;
349
+ }
362
350
 
363
- input[type='color'] {
364
- width: 3rem !important;
365
- flex-shrink: 0 !important;
366
- flex-grow: 0 !important;
367
- border-start-end-radius: 0 !important;
368
- border-end-end-radius: 0 !important;
369
- padding: 0 !important;
370
- overflow: hidden;
371
- cursor: pointer !important;
351
+ display: flex;
352
+ flex-wrap: wrap;
353
+ align-items: center;
354
+
355
+ > *:not(input:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='range'])):not(output):not(
356
+ .prefix
357
+ ):not(.suffix) {
358
+ flex-shrink: 0;
359
+ width: 100%;
360
+ }
372
361
 
373
- &::-moz-color-swatch {
374
- border-radius: 0;
375
- border: none;
376
- }
362
+ :is(input:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='range']), textarea, output) {
363
+ flex-shrink: 1;
364
+ flex-grow: 1;
365
+ width: 0;
366
+ }
377
367
 
378
- &::-webkit-color-swatch {
379
- border-radius: 0;
380
- border: none;
368
+ input ~ *:not(output) {
369
+ order: 5;
370
+ margin-top: rem(8);
371
+ }
381
372
  }
382
- }
383
373
 
384
- label :is(div, span, fieldset):has(input[type='color'] + output) {
385
- display: flex;
386
- }
374
+ // #region colors
387
375
 
388
- input[type='color'] + output {
389
- border-left: none !important;
390
- border-end-start-radius: 0 !important;
391
- border-start-start-radius: 0 !important;
392
- margin: 0 !important;
393
- }
376
+ input[type='color'] {
377
+ width: 3rem !important;
378
+ flex-shrink: 0 !important;
379
+ flex-grow: 0 !important;
380
+ border-start-end-radius: 0 !important;
381
+ border-end-end-radius: 0 !important;
382
+ padding: 0 !important;
383
+ overflow: hidden;
384
+ cursor: pointer !important;
394
385
 
395
- output {
396
- margin-top: 0.5rem !important;
397
- margin-bottom: 0 !important;
398
- }
399
- // #endregion
386
+ &::-moz-color-swatch {
387
+ border-radius: 0;
388
+ border: none;
389
+ }
400
390
 
401
- div:has(> :is(.form-control-sm, .input--sm)) {
402
- --input-fs: #{rem(14)};
403
- --input-lh: #{rem(16)};
404
- --input-padding-block: #{rem(10)};
405
- --input-padding-inline: #{rem(14)};
406
- }
407
- div:has(> :is(.form-control-lg, .input--sm)) {
408
- --input-fs: #{rem(24)};
409
- --input-lh: #{rem(29)};
410
- --input-padding-block: #{rem(20)};
411
- --input-padding-inline: #{rem(22)};
412
- }
391
+ &::-webkit-color-swatch {
392
+ border-radius: 0;
393
+ border: none;
394
+ }
395
+ }
413
396
 
414
- div:has(> label:first-child):has(> input):has(> :is(.form-control-inline, .input--inline)) {
415
- label {
416
- flex-shrink: 0;
417
- white-space: nowrap;
418
- width: fit-content !important;
419
- margin: 0;
420
- margin-inline-end: 1rem;
397
+ label :is(div, span, fieldset):has(input[type='color'] + output) {
398
+ display: flex;
421
399
  }
422
- }
423
- // #endregion
424
400
 
425
- // #region readonly
426
- *:has(> input[readonly]) {
427
- position: relative;
401
+ input[type='color'] + output {
402
+ border-left: none !important;
403
+ border-end-start-radius: 0 !important;
404
+ border-start-start-radius: 0 !important;
405
+ margin: 0 !important;
406
+ }
428
407
 
429
- max-width: $input-max-width;
408
+ output {
409
+ margin-top: 0.5rem !important;
410
+ margin-bottom: 0 !important;
411
+ }
412
+ // #endregion
430
413
 
431
- &:after {
432
- font-family: 'Font Awesome 6 Pro';
433
- font-weight: 300;
434
- content: '\f023';
435
- position: absolute;
436
- font-size: var(--input-lh, #{rem(20)});
437
- height: var(--input-lh, #{rem(20)});
438
- width: var(--input-lh, #{rem(20)});
439
- bottom: calc(var(--input-padding-block, #{rem(12)}) + 2px);
440
- right: calc(var(--input-padding-block, #{rem(16)}) + 2px);
441
- text-align: center;
414
+ div:has(> :is(.form-control-sm, .input--sm)) {
415
+ --input-fs: #{rem(14)};
416
+ --input-lh: #{rem(16)};
417
+ --input-padding-block: #{rem(10)};
418
+ --input-padding-inline: #{rem(14)};
419
+ }
420
+ div:has(> :is(.form-control-lg, .input--sm)) {
421
+ --input-fs: #{rem(24)};
422
+ --input-lh: #{rem(29)};
423
+ --input-padding-block: #{rem(20)};
424
+ --input-padding-inline: #{rem(22)};
442
425
  }
443
- }
444
426
 
445
- // #endregion
427
+ div:has(> label:first-child):has(> input):has(> :is(.form-control-inline, .input--inline)) {
428
+ label {
429
+ flex-shrink: 0;
430
+ white-space: nowrap;
431
+ width: fit-content !important;
432
+ margin: 0;
433
+ margin-inline-end: 1rem;
434
+ }
435
+ }
436
+ // #endregion
446
437
 
447
- // #region prefix
448
- :is(.prefix, .suffix) {
449
- display: none;
450
- pointer-events: none;
451
- }
452
- @supports selector(:has(*)) {
453
- :is(.prefix, .suffix) {
454
- display: inline-block;
455
- width: auto;
456
- padding: var(--input-padding-block, #{rem(12)}) var(--input-padding-block, #{rem(16)});
457
- font-size: var(--input-fs, #{rem(16)});
458
- line-height: var(--input-lh, #{rem(20)});
459
- color: var(--colour-body);
460
- background-color: var(--colour-primary-theme);
461
- border: 2px solid var(--colour-primary);
462
- color: var(--colour-white);
463
- margin-top: 0 !important;
464
- margin-bottom: 1rem;
465
- border-end-start-radius: rem(8);
466
- border-start-start-radius: rem(8);
467
- min-width: calc(#{rem(20 + 12 + 12)} + 4px);
468
- overflow: hidden;
469
- white-space: nowrap;
470
- text-align: center;
471
- text-overflow: ellipsis;
438
+ // #region readonly
439
+ *:has(> input[readonly]) {
472
440
  position: relative;
473
441
 
474
- min-height: calc(
475
- var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + var(--input-lh, #{rem(20)}) +
476
- 4px
477
- );
478
- max-height: calc(
479
- var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + var(--input-lh, #{rem(20)}) +
480
- 4px
481
- );
482
- flex-shrink: 0;
442
+ max-width: $input-max-width;
483
443
 
484
444
  &:after {
445
+ font-family: 'Font Awesome 6 Pro';
446
+ font-weight: 300;
447
+ content: '\f023';
448
+ position: absolute;
449
+ font-size: var(--input-lh, #{rem(20)});
450
+ height: var(--input-lh, #{rem(20)});
451
+ width: var(--input-lh, #{rem(20)});
452
+ bottom: calc(var(--input-padding-block, #{rem(12)}) + 2px);
453
+ right: calc(var(--input-padding-block, #{rem(16)}) + 2px);
454
+ text-align: center;
455
+ }
456
+ }
457
+
458
+ // #endregion
459
+
460
+ // #region prefix
461
+ :is(.prefix, .suffix) {
462
+ display: none;
463
+ pointer-events: none;
464
+ }
465
+ @supports selector(:has(*)) {
466
+ :is(.prefix, .suffix) {
485
467
  display: inline-block;
486
- max-width: rem(20);
468
+ width: auto;
469
+ padding: var(--input-padding-block, #{rem(12)}) var(--input-padding-block, #{rem(16)});
470
+ font-size: var(--input-fs, #{rem(16)});
471
+ line-height: var(--input-lh, #{rem(20)});
472
+ color: var(--colour-body);
473
+ background-color: var(--colour-primary-theme);
474
+ border: 2px solid var(--colour-primary);
475
+ color: var(--colour-white);
476
+ margin-top: 0 !important;
477
+ margin-bottom: 1rem;
478
+ border-end-start-radius: rem(8);
479
+ border-start-start-radius: rem(8);
480
+ min-width: calc(#{rem(20 + 12 + 12)} + 4px);
481
+ overflow: hidden;
482
+ white-space: nowrap;
483
+ text-align: center;
484
+ text-overflow: ellipsis;
485
+ position: relative;
486
+
487
+ min-height: calc(
488
+ var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + var(--input-lh, #{rem(20)}) +
489
+ 4px
490
+ );
491
+ max-height: calc(
492
+ var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + var(--input-lh, #{rem(20)}) +
493
+ 4px
494
+ );
495
+ flex-shrink: 0;
496
+
497
+ &:after {
498
+ display: inline-block;
499
+ max-width: rem(20);
500
+ }
501
+
502
+ &[class*='fa-'] {
503
+ width: calc(#{rem(20 + 12 + 12)} + 4px);
504
+ padding-inline: 0;
505
+ }
506
+
507
+ select {
508
+ position: absolute;
509
+ inset: 0;
510
+ opacity: 0;
511
+ cursor: pointer;
512
+ }
513
+
514
+ span {
515
+ display: none;
516
+ }
517
+
518
+ select:has(option:nth-child(1):checked) ~ span:nth-of-type(1),
519
+ select:has(option:nth-child(2):checked) ~ span:nth-of-type(2),
520
+ select:has(option:nth-child(3):checked) ~ span:nth-of-type(3),
521
+ select:has(option:nth-child(4):checked) ~ span:nth-of-type(4),
522
+ select:has(option:nth-child(5):checked) ~ span:nth-of-type(5),
523
+ select:has(option:nth-child(6):checked) ~ span:nth-of-type(6),
524
+ select:has(option:nth-child(7):checked) ~ span:nth-of-type(7),
525
+ select:has(option:nth-child(8):checked) ~ span:nth-of-type(8),
526
+ select:has(option:nth-child(9):checked) ~ span:nth-of-type(9),
527
+ select:has(option:nth-child(10):checked) ~ span:nth-of-type(10) {
528
+ display: block;
529
+ }
530
+
531
+ select ~ span:after {
532
+ content: ' \f078';
533
+ font-family: 'Font Awesome 6 Pro';
534
+ font-size: 0.8em;
535
+ display: inline-block;
536
+ padding-left: 1em;
537
+ }
538
+
539
+ select:focus-visible ~ span:after {
540
+ content: '\f077';
541
+ }
487
542
  }
488
543
 
489
- &[class*='fa-'] {
490
- width: calc(#{rem(20 + 12 + 12)} + 4px);
491
- padding-inline: 0;
544
+ .prefix {
545
+ border-right: none;
492
546
  }
493
547
 
494
- select {
495
- position: absolute;
496
- inset: 0;
497
- opacity: 0;
498
- cursor: pointer;
548
+ .suffix {
549
+ border-left: none;
550
+ border-end-start-radius: 0;
551
+ border-start-start-radius: 0;
552
+ border-start-end-radius: rem(8) !important;
553
+ border-end-end-radius: rem(8) !important;
554
+ order: 2;
499
555
  }
500
556
 
501
- span {
557
+ .prefix span {
502
558
  display: none;
503
- }
504
559
 
505
- select:has(option:nth-child(1):checked) ~ span:nth-of-type(1),
506
- select:has(option:nth-child(2):checked) ~ span:nth-of-type(2),
507
- select:has(option:nth-child(3):checked) ~ span:nth-of-type(3),
508
- select:has(option:nth-child(4):checked) ~ span:nth-of-type(4),
509
- select:has(option:nth-child(5):checked) ~ span:nth-of-type(5),
510
- select:has(option:nth-child(6):checked) ~ span:nth-of-type(6),
511
- select:has(option:nth-child(7):checked) ~ span:nth-of-type(7),
512
- select:has(option:nth-child(8):checked) ~ span:nth-of-type(8),
513
- select:has(option:nth-child(9):checked) ~ span:nth-of-type(9),
514
- select:has(option:nth-child(10):checked) ~ span:nth-of-type(10) {
515
- display: block;
560
+ small {
561
+ font-size: 0.8em;
562
+ }
516
563
  }
517
564
 
518
- select ~ span:after {
519
- content: ' \f078';
520
- font-family: 'Font Awesome 6 Pro';
521
- font-size: 0.8em;
522
- display: inline-block;
523
- padding-left: 1em;
565
+ .prefix
566
+ ~ :is(input:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='range']), textarea, output) {
567
+ border-end-start-radius: 0 !important;
568
+ border-start-start-radius: 0 !important;
524
569
  }
525
570
 
526
- select:focus-visible ~ span:after {
527
- content: '\f077';
571
+ .suffix
572
+ ~ :is(
573
+ input:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='range']):not([type='date']),
574
+ textarea,
575
+ output
576
+ ),
577
+ :is(
578
+ input:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='range']):not([type='date']),
579
+ textarea,
580
+ output
581
+ ):has(~ .suffix) {
582
+ order: 1;
583
+
584
+ border-start-end-radius: 0 !important;
585
+ border-end-end-radius: 0 !important;
528
586
  }
529
587
  }
530
588
 
531
- .prefix {
532
- border-right: none;
533
- }
589
+ // #endregion
534
590
 
535
- .suffix {
536
- border-left: none;
537
- border-end-start-radius: 0;
538
- border-start-start-radius: 0;
539
- border-start-end-radius: rem(8) !important;
540
- border-end-end-radius: rem(8) !important;
541
- order: 2;
542
- }
591
+ // #region word counter
543
592
 
544
- .prefix span {
545
- display: none;
593
+ :is(input, textarea)[maxlength] + span {
594
+ position: relative;
546
595
 
547
- small {
548
- font-size: 0.8em;
596
+ &:before {
597
+ counter-reset: variable var(--char-count) var(--maxlength);
598
+ counter-reset: variable2 var(--maxlength);
599
+ content: attr(data-count) ' / ' counter(variable2);
600
+ float: right;
601
+
602
+ margin: 0 0 1em 1em;
549
603
  }
550
604
  }
551
605
 
552
- .prefix
553
- ~ :is(input:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='range']), textarea, output) {
554
- border-end-start-radius: 0 !important;
555
- border-start-start-radius: 0 !important;
556
- }
606
+ // #endregion
557
607
 
558
- .suffix
559
- ~ :is(
560
- input:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='range']):not([type='date']),
561
- textarea,
562
- output
563
- ),
564
- :is(
565
- input:not([type='checkbox']):not([type='radio']):not([type='file']):not([type='range']):not([type='date']),
566
- textarea,
567
- output
568
- ):has(~ .suffix) {
569
- order: 1;
608
+ // #region Form validation
570
609
 
571
- border-start-end-radius: 0 !important;
572
- border-end-end-radius: 0 !important;
610
+ .was-validated *:not(button):is(:invalid, .is-invalid, [aria-invalid]):not(.is-valid) + label,
611
+ .was-validated label:has(*:not(button):is(:invalid, .is-invalid, [aria-invalid]):not(.is-valid)) {
612
+ --colour-check-border: var(--colour-danger);
613
+ --colour-check-bg: #fcebec;
614
+ border-color: var(--colour-danger);
573
615
  }
574
- }
575
-
576
- // #endregion
577
-
578
- // #region word counter
579
616
 
580
- :is(input, textarea)[maxlength] + span {
581
- position: relative;
582
-
583
- &:before {
584
- counter-reset: variable var(--char-count) var(--maxlength);
585
- counter-reset: variable2 var(--maxlength);
586
- content: attr(data-count) ' / ' counter(variable2);
587
- float: right;
617
+ .was-validated *:not(button):is(:invalid, .is-invalid, [aria-invalid], :-internal-autofill-selected) {
618
+ border-color: var(--colour-danger) !important;
619
+ }
588
620
 
589
- margin: 0 0 1em 1em;
621
+ .was-validated select:is(:invalid, .is-invalid, [aria-invalid], :-internal-autofill-selected) {
622
+ $form-select-indicator-new: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m2 5 6 6 6-6'/></svg>") !default;
623
+
624
+ background:
625
+ escape-svg($form-select-indicator-new) right var(--input-padding-block, 0.75rem) top
626
+ var(--input-padding-block, 0.75rem) / var(--input-lh, 1.25rem) var(--input-lh, 1.25rem) no-repeat,
627
+ linear-gradient(to left, var(--colour-primary-theme), var(--colour-primary-theme) 100%) right top /
628
+ calc(var(--input-padding-block, 0.75rem) + var(--input-padding-block, 0.75rem) + var(--input-lh, 1.25rem))
629
+ calc(var(--input-padding-block, 0.75rem) + var(--input-padding-block, 0.8rem) + var(--input-lh, 1.25rem))
630
+ no-repeat,
631
+ escape-svg($icon-error) right var(--input-padding-block, 3.5rem) top var(--input-padding-block, 0.75rem) /
632
+ var(--input-lh, 1.25rem) var(--input-lh, 1.25rem) no-repeat;
633
+ padding-right: 6rem !important;
590
634
  }
591
- }
592
635
 
593
- // #endregion
636
+ .was-validated input:is(:invalid, .is-invalid, [aria-invalid], :-internal-autofill-selected) {
637
+ background-image: escape-svg($icon-error);
638
+ background-repeat: no-repeat;
639
+ background-position: right var(--input-padding-inline, #{rem(16)}) center;
640
+ background-size: var(--input-lh, #{rem(20)}) var(--input-lh, #{rem(20)});
641
+ padding-right: calc(
642
+ var(--input-lh, #{rem(20)}) + var(--input-padding-inline, #{rem(16)}) + var(--input-padding-inline, #{rem(16)})
643
+ ) !important;
644
+ }
594
645
 
595
- // #region Form validation
646
+ .was-validated *:not(button):is(:valid, .is-valid):not(.is-invalid) {
647
+ border-color: var(--colour-complete);
648
+ }
596
649
 
597
- .was-validated *:not(button):is(:invalid, .is-invalid, [aria-invalid]):not(.is-valid) + label,
598
- .was-validated label:has(*:not(button):is(:invalid, .is-invalid, [aria-invalid]):not(.is-valid)) {
599
- --colour-check-border: var(--colour-danger);
600
- --colour-check-bg: #fcebec;
601
- border-color: var(--colour-danger);
602
- }
650
+ .was-validated input:is(:valid, .is-valid):not(:is(:invalid, .is-invalid)) {
651
+ background-image: escape-svg($icon-tick);
652
+ background-repeat: no-repeat;
653
+ background-position: right var(--input-padding-inline, #{rem(16)}) center;
654
+ background-size: var(--input-lh, #{rem(20)}) var(--input-lh, #{rem(20)});
655
+ padding-right: calc(
656
+ var(--input-lh, #{rem(20)}) + var(--input-padding-inline, #{rem(16)}) + var(--input-padding-inline, #{rem(16)})
657
+ ) !important;
658
+ }
603
659
 
604
- .was-validated *:not(button):is(:invalid, .is-invalid, [aria-invalid], :-internal-autofill-selected) {
605
- border-color: var(--colour-danger) !important;
606
- }
660
+ .invalid-feedback {
661
+ color: var(--colour-danger);
662
+ margin-top: rem(8);
663
+ background-image: escape-svg($icon-error);
664
+ background-repeat: no-repeat;
665
+ background-position: left top 1px;
666
+ background-size: var(--input-fs, #{rem(16)}) var(--input-fs, #{rem(16)});
667
+ padding-left: calc(var(--input-fs, #{rem(16)}) + #{rem(8)});
668
+ display: none;
669
+ }
607
670
 
608
- .was-validated select:is(:invalid, .is-invalid, [aria-invalid], :-internal-autofill-selected) {
609
- $form-select-indicator-new: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m2 5 6 6 6-6'/></svg>") !default;
610
-
611
- background:
612
- escape-svg($form-select-indicator-new) right var(--input-padding-block, 0.75rem) top
613
- var(--input-padding-block, 0.75rem) / var(--input-lh, 1.25rem) var(--input-lh, 1.25rem) no-repeat,
614
- linear-gradient(to left, var(--colour-primary-theme), var(--colour-primary-theme) 100%) right top /
615
- calc(var(--input-padding-block, 0.75rem) + var(--input-padding-block, 0.75rem) + var(--input-lh, 1.25rem))
616
- calc(var(--input-padding-block, 0.75rem) + var(--input-padding-block, 0.8rem) + var(--input-lh, 1.25rem))
617
- no-repeat,
618
- escape-svg($icon-error) right var(--input-padding-block, 3.5rem) top var(--input-padding-block, 0.75rem) /
619
- var(--input-lh, 1.25rem) var(--input-lh, 1.25rem) no-repeat;
620
- padding-right: 6rem !important;
621
- }
671
+ // Postcode lookup validation
672
+ iam-address-lookup:has([required]) {
673
+ --req-display: none;
674
+ }
622
675
 
623
- .was-validated input:is(:invalid, .is-invalid, [aria-invalid], :-internal-autofill-selected) {
624
- background-image: escape-svg($icon-error);
625
- background-repeat: no-repeat;
626
- background-position: right var(--input-padding-inline, #{rem(16)}) center;
627
- background-size: var(--input-lh, #{rem(20)}) var(--input-lh, #{rem(20)});
628
- padding-right: calc(
629
- var(--input-lh, #{rem(20)}) + var(--input-padding-inline, #{rem(16)}) + var(--input-padding-inline, #{rem(16)})
630
- ) !important;
631
- }
676
+ .was-validated :is(:invalid, .is-invalid) ~ .invalid-feedback {
677
+ display: block;
678
+ }
632
679
 
633
- .was-validated *:not(button):is(:valid, .is-valid):not(.is-invalid) {
634
- border-color: var(--colour-complete);
635
- }
680
+ .was-validated iam-address-lookup:has([required]:invalid) {
681
+ --error-border: var(--colour-danger);
682
+ --error-display: block;
683
+ }
636
684
 
637
- .was-validated input:is(:valid, .is-valid):not(:is(:invalid, .is-invalid)) {
638
- background-image: escape-svg($icon-tick);
639
- background-repeat: no-repeat;
640
- background-position: right var(--input-padding-inline, #{rem(16)}) center;
641
- background-size: var(--input-lh, #{rem(20)}) var(--input-lh, #{rem(20)});
642
- padding-right: calc(
643
- var(--input-lh, #{rem(20)}) + var(--input-padding-inline, #{rem(16)}) + var(--input-padding-inline, #{rem(16)})
644
- ) !important;
645
- }
685
+ // Password checker
686
+ .pwd-checker {
687
+ display: block;
688
+ background-repeat: no-repeat !important;
689
+ background-position: left center;
690
+ background-size: 1em 1em;
691
+ padding-left: 1.5rem !important;
692
+ }
693
+ .pwd-checker.invalid-feedback {
694
+ background-image: escape-svg($icon-error);
695
+ }
646
696
 
647
- .invalid-feedback {
648
- color: var(--colour-danger);
649
- margin-top: rem(8);
650
- background-image: escape-svg($icon-error);
651
- background-repeat: no-repeat;
652
- background-position: left top 1px;
653
- background-size: var(--input-fs, #{rem(16)}) var(--input-fs, #{rem(16)});
654
- padding-left: calc(var(--input-fs, #{rem(16)}) + #{rem(8)});
655
- display: none;
656
- }
697
+ .pwd-checker:not(.invalid-feedback) {
698
+ background-image: escape-svg($icon-tick) !important;
699
+ }
700
+ label:has(.pwd-checker.invalid-feedback):after {
701
+ display: none !important;
702
+ }
703
+ // #endregion
657
704
 
658
- // Postcode lookup validation
659
- iam-address-lookup:has([required]) {
660
- --req-display: none;
661
- }
705
+ // #region radio/checkbox field
706
+ @supports selector(:has(*)) {
707
+ input:is([type='radio'], [type='checkbox']) {
708
+ position: absolute;
709
+ top: 0;
710
+ left: 0;
711
+ opacity: 0;
712
+ height: 0;
713
+ width: 0;
714
+ margin: 0;
715
+ pointer-events: none;
716
+ }
662
717
 
663
- .was-validated :is(:invalid, .is-invalid) ~ .invalid-feedback {
664
- display: block;
665
- }
718
+ :is(div, fieldset, label:not(.tag)):has(> input:is([type='radio'], [type='checkbox'])):not(:has(label input)) {
719
+ position: relative;
720
+ margin-bottom: rem(24);
721
+ }
666
722
 
667
- .was-validated iam-address-lookup:has([required]:invalid) {
668
- --error-border: var(--colour-danger);
669
- --error-display: block;
670
- }
723
+ :is(div, fieldset, label:not(.tag)):has(> input[type='radio']) {
724
+ --border-radius: 50%;
725
+ --outline-width: #{rem(8)};
726
+ }
671
727
 
672
- // Password checker
673
- .pwd-checker {
674
- display: block;
675
- background-repeat: no-repeat !important;
676
- background-position: left center;
677
- background-size: 1em 1em;
678
- padding-left: 1.5rem !important;
679
- }
680
- .pwd-checker.invalid-feedback {
681
- background-image: escape-svg($icon-error);
682
- }
728
+ :is(div, fieldset, label:not(.tag)):has(> input[type='checkbox']) {
729
+ --border-radius: #{rem(4)};
730
+ --outline-width: #{rem(4)};
731
+ }
683
732
 
684
- .pwd-checker:not(.invalid-feedback) {
685
- background-image: escape-svg($icon-tick) !important;
686
- }
687
- label:has(.pwd-checker.invalid-feedback):after {
688
- display: none !important;
689
- }
690
- // #endregion
733
+ input:is([type='radio'], [type='checkbox']) + label:not(:has(> iam-card)),
734
+ label:not(.tag):has(input:is([type='radio'], [type='checkbox'])):not(:has(> iam-card)) {
735
+ --tick-colour: transparent;
736
+
737
+ color: var(--colour-heading);
738
+ position: relative;
739
+ font-size: rem(16);
740
+ line-height: rem(20);
741
+ padding-left: rem(40);
742
+ padding-top: rem(10);
743
+ padding-bottom: rem(10);
744
+ margin-bottom: rem(24);
745
+ margin-right: rem(24);
746
+ cursor: pointer;
691
747
 
692
- // #region radio/checkbox field
693
- @supports selector(:has(*)) {
694
- input:is([type='radio'], [type='checkbox']) {
695
- position: absolute;
696
- top: 0;
697
- left: 0;
698
- opacity: 0;
699
- height: 0;
700
- width: 0;
701
- margin: 0;
702
- pointer-events: none;
703
- }
748
+ &:has(+ span) {
749
+ margin-bottom: 0;
750
+ }
704
751
 
705
- :is(div, fieldset, label:not(.tag)):has(> input:is([type='radio'], [type='checkbox'])):not(:has(label input)) {
706
- position: relative;
707
- margin-bottom: rem(24);
708
- }
752
+ &:has(+ input) {
753
+ margin-bottom: 0;
754
+ }
709
755
 
710
- :is(div, fieldset, label:not(.tag)):has(> input[type='radio']) {
711
- --border-radius: 50%;
712
- --outline-width: #{rem(8)};
713
- }
756
+ &:last-child {
757
+ margin-bottom: 0;
758
+ }
714
759
 
715
- :is(div, fieldset, label:not(.tag)):has(> input[type='checkbox']) {
716
- --border-radius: #{rem(4)};
717
- --outline-width: #{rem(4)};
718
- }
760
+ &:before {
761
+ content: '';
762
+ border: 2px solid var(--colour-check-border, var(--colour-primary));
763
+ background: var(--colour-check-bg, transparent);
764
+ border-radius: var(--border-radius);
765
+ height: rem(24);
766
+ width: rem(24);
767
+ display: inline-block;
768
+ position: absolute;
769
+ top: rem(10 - 2);
770
+ left: var(--outline-width);
771
+ }
719
772
 
720
- input:is([type='radio'], [type='checkbox']) + label:not(:has(> iam-card)),
721
- label:not(.tag):has(input:is([type='radio'], [type='checkbox'])):not(:has(> iam-card)) {
722
- --tick-colour: transparent;
773
+ &.btn:before {
774
+ opacity: 0;
775
+ }
776
+ }
723
777
 
724
- color: var(--colour-heading);
725
- position: relative;
726
- font-size: rem(16);
727
- line-height: rem(20);
728
- padding-left: rem(40);
729
- padding-top: rem(10);
730
- padding-bottom: rem(10);
731
- margin-bottom: rem(24);
732
- margin-right: rem(24);
733
- cursor: pointer;
778
+ input[type='radio'] + label:not(:has(> iam-card)),
779
+ label:not(.tag):has(input[type='radio']):not(:has(> iam-card)) {
780
+ &:after {
781
+ content: '' !important;
782
+ background: var(--colour-info);
783
+ border-radius: var(--border-radius);
784
+ height: rem(14);
785
+ width: rem(14);
786
+ display: none;
787
+ position: absolute;
788
+ top: rem(15 - 2);
789
+ left: calc(#{rem(5)} + var(--outline-width));
790
+ }
734
791
 
735
- &:has(+ span) {
736
- margin-bottom: 0;
792
+ &.radio--tick {
793
+ &:before {
794
+ content: '\f00c';
795
+ position: absolute;
796
+ font-size: 1.5em;
797
+ line-height: 1;
798
+ color: var(--tick-colour);
799
+ font-family: 'Font Awesome 6 Pro';
800
+
801
+ background: none !important;
802
+ border: none !important;
803
+ outline: none !important;
804
+ left: 0.25rem;
805
+ }
806
+ &:after {
807
+ display: none;
808
+ }
809
+ }
737
810
  }
738
811
 
739
- &:has(+ input) {
740
- margin-bottom: 0;
812
+ @media (forced-colors: active) {
813
+ input:is([type='radio'], [type='checkbox']):not(:checked) + label.radio--tick:not(:has(> iam-card)),
814
+ label:has(input:is([type='radio'], [type='checkbox']):not(:checked)).radio--tick:not(:has(> iam-card)) {
815
+ &:before {
816
+ display: none;
817
+ }
818
+ }
741
819
  }
742
820
 
743
- &:last-child {
744
- margin-bottom: 0;
821
+ // multiple radio's together
822
+ :is(div, fieldset):has(> :is(input[type='radio'], input[type='checkbox']):nth-of-type(2)) {
823
+ label:not(.tag):not(:has(> iam-card)) {
824
+ margin-bottom: 0rem;
825
+ }
745
826
  }
746
827
 
747
- &:before {
748
- content: '';
749
- border: 2px solid var(--colour-check-border, var(--colour-primary));
750
- background: var(--colour-check-bg, transparent);
751
- border-radius: var(--border-radius);
752
- height: rem(24);
753
- width: rem(24);
754
- display: inline-block;
755
- position: absolute;
756
- top: rem(10 - 2);
757
- left: var(--outline-width);
758
- }
828
+ input:is([type='radio'], [type='checkbox']):checked + label,
829
+ label:not(.tag):has(input:is([type='radio'], [type='checkbox']):checked) {
830
+ --tick-colour: var(--colour-info);
759
831
 
760
- &.btn:before {
761
- opacity: 0;
762
- }
763
- }
832
+ &:before {
833
+ border-color: var(--colour-info);
834
+ }
764
835
 
765
- input[type='radio'] + label:not(:has(> iam-card)),
766
- label:not(.tag):has(input[type='radio']):not(:has(> iam-card)) {
767
- &:after {
768
- content: '' !important;
769
- background: var(--colour-info);
770
- border-radius: var(--border-radius);
771
- height: rem(14);
772
- width: rem(14);
773
- display: none;
774
- position: absolute;
775
- top: rem(15 - 2);
776
- left: calc(#{rem(5)} + var(--outline-width));
836
+ &:after {
837
+ display: inline-block;
838
+ }
839
+
840
+ iam-card {
841
+ --colour: var(--colour, var(--colour-info));
842
+ }
777
843
  }
778
844
 
779
- &.radio--tick {
845
+ input[type='checkbox']:not([disabled]):checked + label,
846
+ label:not(.tag):has(input[type='checkbox']:not([disabled]):checked) {
780
847
  &:before {
848
+ background: var(--colour-info) !important;
849
+ }
850
+ }
851
+
852
+ input[type='checkbox']:checked + label:not(:has(> iam-card)),
853
+ label:not(.tag):has(input[type='checkbox']:checked) {
854
+ &:after {
781
855
  content: '\f00c';
782
856
  position: absolute;
783
- font-size: 1.5em;
857
+ font-size: 1em;
784
858
  line-height: 1;
785
- color: var(--tick-colour);
859
+ color: var(--colour-primary-theme);
786
860
  font-family: 'Font Awesome 6 Pro';
787
-
861
+ font-weight: bold;
862
+ height: rem(24);
863
+ width: rem(24);
864
+ line-height: rem(26);
788
865
  background: none !important;
789
866
  border: none !important;
790
867
  outline: none !important;
791
- left: 0.25rem;
792
- }
793
- &:after {
794
- display: none;
868
+ top: rem(10 - 2);
869
+ left: var(--outline-width);
870
+ text-align: center;
795
871
  }
796
872
  }
797
- }
798
873
 
799
- @media (forced-colors: active) {
800
- input:is([type='radio'], [type='checkbox']):not(:checked) + label.radio--tick:not(:has(> iam-card)),
801
- label:has(input:is([type='radio'], [type='checkbox']):not(:checked)).radio--tick:not(:has(> iam-card)) {
874
+ input[type='checkbox']:indeterminate + label,
875
+ label:not(.tag):has(input[type='checkbox']:indeterminate) {
802
876
  &:before {
803
- display: none;
877
+ background: var(--colour-info) !important;
878
+ border-color: var(--colour-info) !important;
879
+ }
880
+
881
+ &:after {
882
+ content: '\f068';
883
+ position: absolute;
884
+ font-size: 1em;
885
+ line-height: 1;
886
+ color: var(--colour-primary-theme);
887
+ font-family: 'Font Awesome 6 Pro';
888
+ font-weight: bold;
889
+ height: rem(24);
890
+ width: rem(24);
891
+ line-height: rem(26);
892
+ background: none !important;
893
+ border: none !important;
894
+ outline: none !important;
895
+ top: rem(10 - 2);
896
+ left: var(--outline-width);
897
+ text-align: center;
804
898
  }
805
899
  }
806
- }
807
900
 
808
- // multiple radio's together
809
- :is(div, fieldset):has(> :is(input[type='radio'], input[type='checkbox']):nth-of-type(2)) {
810
- label:not(.tag):not(:has(> iam-card)) {
811
- margin-bottom: 0rem;
901
+ input:is([type='radio'], [type='checkbox']):checked:is(:focus, :hover, .focus) + label,
902
+ label:not(.tag):has(input:is([type='radio'], [type='checkbox']):checked:is(:focus, :hover, .focus)) {
903
+ --tick-colour: var(--colour-info);
812
904
  }
813
- }
814
905
 
815
- input:is([type='radio'], [type='checkbox']):checked + label,
816
- label:not(.tag):has(input:is([type='radio'], [type='checkbox']):checked) {
817
- --tick-colour: var(--colour-info);
906
+ input:is([type='radio'], [type='checkbox']):is(:focus, :hover, .focus) + label,
907
+ input:is([type='radio'], [type='checkbox']) + label.hover,
908
+ label:not(.tag):has(input:is([type='radio'], [type='checkbox']):is(:focus, :hover, .focus)) {
909
+ --tick-colour: var(--colour-muted);
818
910
 
819
- &:before {
820
- border-color: var(--colour-info);
911
+ &:before {
912
+ background: var(--colour-check-bg, var(--colour-light));
913
+ outline: var(--outline-width) solid var(--colour-light);
914
+ }
821
915
  }
916
+ input:is([type='radio'], [type='checkbox']):is(:active, .active) + label,
917
+ input:is([type='radio'], [type='checkbox']) + label.active,
918
+ label:not(.tag):has(input:is([type='radio'], [type='checkbox']):is(:active, .active)) {
919
+ --tick-colour: var(--colour-light);
822
920
 
823
- &:after {
824
- display: inline-block;
921
+ &:before {
922
+ background: var(--colour-check-bg, #e0e0e0);
923
+ outline: var(--outline-width) solid #e0e0e0;
924
+ }
825
925
  }
826
926
 
827
- iam-card {
828
- --colour: var(--colour, var(--colour-info));
829
- }
830
- }
927
+ // Disabled
928
+ input:is([type='radio'], [type='checkbox']):disabled + label,
929
+ label:not(.tag):has(input:is([type='radio'], [type='checkbox']):disabled) {
930
+ opacity: 0.4;
931
+ cursor: not-allowed;
831
932
 
832
- input[type='checkbox']:not([disabled]):checked + label,
833
- label:not(.tag):has(input[type='checkbox']:not([disabled]):checked) {
834
- &:before {
835
- background: var(--colour-info) !important;
836
- }
837
- }
933
+ > iam-card {
934
+ pointer-events: none;
935
+ }
838
936
 
839
- input[type='checkbox']:checked + label:not(:has(> iam-card)),
840
- label:not(.tag):has(input[type='checkbox']:checked) {
841
- &:after {
842
- content: '\f00c';
843
- position: absolute;
844
- font-size: 1em;
845
- line-height: 1;
846
- color: var(--colour-primary-theme);
847
- font-family: 'Font Awesome 6 Pro';
848
- font-weight: bold;
849
- height: rem(24);
850
- width: rem(24);
851
- line-height: rem(26);
852
- background: none !important;
853
- border: none !important;
854
- outline: none !important;
855
- top: rem(10 - 2);
856
- left: var(--outline-width);
857
- text-align: center;
937
+ &:before {
938
+ background-color: none !important;
939
+ outline: none !important;
940
+ border-color: var(--colour-primary) !important;
941
+ }
858
942
  }
859
- }
860
943
 
861
- input[type='checkbox']:indeterminate + label,
862
- label:not(.tag):has(input[type='checkbox']:indeterminate) {
863
- &:before {
864
- background: var(--colour-info) !important;
865
- border-color: var(--colour-info) !important;
944
+ input[type='radio'][disabled]:checked + label,
945
+ label:not(.tag):has(input[type='radio'][disabled]:checked) {
946
+ &:after {
947
+ background-color: var(--colour-primary) !important;
948
+ }
866
949
  }
867
950
 
868
- &:after {
869
- content: '\f068';
870
- position: absolute;
871
- font-size: 1em;
872
- line-height: 1;
873
- color: var(--colour-primary-theme);
874
- font-family: 'Font Awesome 6 Pro';
875
- font-weight: bold;
876
- height: rem(24);
877
- width: rem(24);
878
- line-height: rem(26);
879
- background: none !important;
880
- border: none !important;
881
- outline: none !important;
882
- top: rem(10 - 2);
883
- left: var(--outline-width);
884
- text-align: center;
951
+ input[type='checkbox'][disabled]:checked + label,
952
+ label:not(.tag):has(input[type='checkbox'][disabled]:checked) {
953
+ &:before {
954
+ background: #e0e0e0 !important;
955
+ border-color: #e0e0e0 !important;
956
+ }
885
957
  }
886
958
  }
959
+ // #endregion
887
960
 
888
- input:is([type='radio'], [type='checkbox']):checked:is(:focus, :hover, .focus) + label,
889
- label:not(.tag):has(input:is([type='radio'], [type='checkbox']):checked:is(:focus, :hover, .focus)) {
890
- --tick-colour: var(--colour-info);
961
+ // #region Conditional reveal
962
+ .conditional {
963
+ display: none;
891
964
  }
892
965
 
893
- input:is([type='radio'], [type='checkbox']):is(:focus, :hover, .focus) + label,
894
- input:is([type='radio'], [type='checkbox']) + label.hover,
895
- label:not(.tag):has(input:is([type='radio'], [type='checkbox']):is(:focus, :hover, .focus)) {
896
- --tick-colour: var(--colour-muted);
966
+ input:checked + .conditional,
967
+ input:checked + label + .conditional {
968
+ display: block;
969
+ clear: both;
970
+ }
897
971
 
898
- &:before {
899
- background: var(--colour-check-bg, var(--colour-light));
900
- outline: var(--outline-width) solid var(--colour-light);
901
- }
972
+ input:not([class*='conditional-input-']):nth-of-type(1):checked ~ .conditional-1,
973
+ input:not([class*='conditional-input-']):nth-of-type(2):checked ~ .conditional-2,
974
+ input:not([class*='conditional-input-']):nth-of-type(3):checked ~ .conditional-3,
975
+ input:not([class*='conditional-input-']):nth-of-type(4):checked ~ .conditional-4,
976
+ input:not([class*='conditional-input-']):nth-of-type(5):checked ~ .conditional-5,
977
+ input.conditional-input-1:checked ~ .conditional-1,
978
+ input.conditional-input-2:checked ~ .conditional-2,
979
+ input.conditional-input-3:checked ~ .conditional-3,
980
+ input.conditional-input-4:checked ~ .conditional-4,
981
+ input.conditional-input-5:checked ~ .conditional-5 {
982
+ display: block;
983
+ clear: both;
902
984
  }
903
- input:is([type='radio'], [type='checkbox']):is(:active, .active) + label,
904
- input:is([type='radio'], [type='checkbox']) + label.active,
905
- label:not(.tag):has(input:is([type='radio'], [type='checkbox']):is(:active, .active)) {
906
- --tick-colour: var(--colour-light);
985
+ // #endregion
907
986
 
908
- &:before {
909
- background: var(--colour-check-bg, #e0e0e0);
910
- outline: var(--outline-width) solid #e0e0e0;
911
- }
987
+ // #region Multi-select
988
+ select[multiple] {
989
+ border-radius: 0.35rem;
990
+ }
991
+ select[multiple]::-webkit-scrollbar {
992
+ width: 0.7rem; // manage scrollbar width here
993
+ }
994
+ select[multiple]::-webkit-scrollbar * {
995
+ background-color: transparent; // manage scrollbar background color here
912
996
  }
997
+ select[multiple]::-webkit-scrollbar-thumb {
998
+ background-color: rgba(0, 0, 0, 0.2);
999
+ //background-color:#000000!important; // manage scrollbar thumb background color here
1000
+ border-radius: 0.35rem;
1001
+ }
1002
+ // #endregion
913
1003
 
914
- // Disabled
915
- input:is([type='radio'], [type='checkbox']):disabled + label,
916
- label:not(.tag):has(input:is([type='radio'], [type='checkbox']):disabled) {
917
- opacity: 0.4;
918
- cursor: not-allowed;
1004
+ // #region Select
919
1005
 
920
- > iam-card {
921
- pointer-events: none;
1006
+ select {
1007
+ $form-select-indicator-new: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m2 5 6 6 6-6'/></svg>") !default;
1008
+
1009
+ background:
1010
+ escape-svg($form-select-indicator-new) right var(--input-padding-block, 0.75rem) top
1011
+ var(--input-padding-block, 0.75rem) / var(--input-lh, 1.25rem) var(--input-lh, 1.25rem) no-repeat,
1012
+ linear-gradient(to left, var(--colour-primary-theme), var(--colour-primary-theme) 100%) right top /
1013
+ calc(var(--input-padding-block, 0.75rem) + var(--input-padding-block, 0.75rem) + var(--input-lh, 1.25rem))
1014
+ calc(var(--input-padding-block, 0.75rem) + var(--input-padding-block, 0.8rem) + var(--input-lh, 1.25rem))
1015
+ no-repeat;
1016
+
1017
+ padding-right: calc(
1018
+ var(--input-padding-inline, #{rem(16)}) + var(--input-padding-inline, #{rem(16)}) + var(--input-lh, 1.25rem)
1019
+ ) !important;
1020
+ option {
1021
+ font-size: 1.2em;
922
1022
  }
923
1023
 
924
- &:before {
925
- background-color: none !important;
926
- outline: none !important;
927
- border-color: var(--colour-primary) !important;
1024
+ box-shadow: inset -2px 0px 0px var(--colour-primary-theme);
1025
+
1026
+ max-width: $select-max-width;
1027
+
1028
+ &[multiple],
1029
+ &[size]:not([size='1']) {
1030
+ background: none;
1031
+ max-height: none !important;
928
1032
  }
929
- }
930
1033
 
931
- input[type='radio'][disabled]:checked + label,
932
- label:not(.tag):has(input[type='radio'][disabled]:checked) {
933
- &:after {
934
- background-color: var(--colour-primary) !important;
1034
+ &:disabled {
1035
+ color: $form-select-disabled-color;
1036
+ background-color: $form-select-disabled-bg;
1037
+ border-color: $form-select-disabled-border-color;
935
1038
  }
936
- }
937
1039
 
938
- input[type='checkbox'][disabled]:checked + label,
939
- label:not(.tag):has(input[type='checkbox'][disabled]:checked) {
940
- &:before {
941
- background: #e0e0e0 !important;
942
- border-color: #e0e0e0 !important;
1040
+ // Remove outline from select box in FF
1041
+ &:-moz-focusring {
1042
+ color: transparent;
1043
+ text-shadow: 0 0 0 $form-select-color;
943
1044
  }
944
1045
  }
945
- }
946
- // #endregion
947
1046
 
948
- // #region Conditional reveal
949
- .conditional {
950
- display: none;
951
- }
1047
+ div:has(> select) {
1048
+ margin-bottom: rem(24);
952
1049
 
953
- input:checked + .conditional,
954
- input:checked + label + .conditional {
955
- display: block;
956
- clear: both;
957
- }
1050
+ select {
1051
+ margin-bottom: 0 !important;
1052
+ }
1053
+ }
958
1054
 
959
- input:not([class*='conditional-input-']):nth-of-type(1):checked ~ .conditional-1,
960
- input:not([class*='conditional-input-']):nth-of-type(2):checked ~ .conditional-2,
961
- input:not([class*='conditional-input-']):nth-of-type(3):checked ~ .conditional-3,
962
- input:not([class*='conditional-input-']):nth-of-type(4):checked ~ .conditional-4,
963
- input:not([class*='conditional-input-']):nth-of-type(5):checked ~ .conditional-5,
964
- input.conditional-input-1:checked ~ .conditional-1,
965
- input.conditional-input-2:checked ~ .conditional-2,
966
- input.conditional-input-3:checked ~ .conditional-3,
967
- input.conditional-input-4:checked ~ .conditional-4,
968
- input.conditional-input-5:checked ~ .conditional-5 {
969
- display: block;
970
- clear: both;
971
- }
972
- // #endregion
1055
+ .select--minimal {
1056
+ all: unset;
1057
+ font-size: inherit;
1058
+ line-height: inherit;
1059
+ background: none;
1060
+ border: 2px solid transparent;
1061
+ display: inline-block;
1062
+ padding: 0.4em calc(1em + 0.8ch) 0.4rem var(--select-padding-left, 0.4em) !important;
1063
+ font-weight: normal !important;
1064
+ margin: -0.4em 0 !important;
1065
+ border-radius: 0.25em;
973
1066
 
974
- // #region Multi-select
975
- select[multiple] {
976
- border-radius: 0.35rem;
977
- }
978
- select[multiple]::-webkit-scrollbar {
979
- width: 0.7rem; // manage scrollbar width here
980
- }
981
- select[multiple]::-webkit-scrollbar * {
982
- background-color: transparent; // manage scrollbar background color here
983
- }
984
- select[multiple]::-webkit-scrollbar-thumb {
985
- background-color: rgba(0, 0, 0, 0.2);
986
- //background-color:#000000!important; // manage scrollbar thumb background color here
987
- border-radius: 0.35rem;
988
- }
989
- // #endregion
1067
+ color: var(--colour-body);
990
1068
 
991
- // #region Select
1069
+ height: auto;
1070
+ cursor: pointer;
1071
+ font-family: var(--font-body) !important;
992
1072
 
993
- select {
994
- $form-select-indicator-new: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m2 5 6 6 6-6'/></svg>") !default;
1073
+ option {
1074
+ background-color: var(--colour-canvas);
1075
+ padding-left: 1em;
1076
+ font-size: inherit;
1077
+ line-height: inherit;
1078
+ }
995
1079
 
996
- background:
997
- escape-svg($form-select-indicator-new) right var(--input-padding-block, 0.75rem) top
998
- var(--input-padding-block, 0.75rem) / var(--input-lh, 1.25rem) var(--input-lh, 1.25rem) no-repeat,
999
- linear-gradient(to left, var(--colour-primary-theme), var(--colour-primary-theme) 100%) right top /
1000
- calc(var(--input-padding-block, 0.75rem) + var(--input-padding-block, 0.75rem) + var(--input-lh, 1.25rem))
1001
- calc(var(--input-padding-block, 0.75rem) + var(--input-padding-block, 0.8rem) + var(--input-lh, 1.25rem))
1002
- no-repeat;
1080
+ &:hover {
1081
+ //border: none;
1082
+ background: var(--colour-light);
1083
+ }
1003
1084
 
1004
- padding-right: calc(
1005
- var(--input-padding-inline, #{rem(16)}) + var(--input-padding-inline, #{rem(16)}) + var(--input-lh, 1.25rem)
1006
- ) !important;
1007
- option {
1008
- font-size: 1.2em;
1085
+ &:is(:focus, .focus):not(:disabled) {
1086
+ border-color: var(--colour-info);
1087
+ outline: 0;
1088
+ box-shadow: 0 0 0 0.1rem rgba(30, 190, 230, 0.25);
1089
+ }
1009
1090
  }
1010
1091
 
1011
- box-shadow: inset -2px 0px 0px var(--colour-primary-theme);
1092
+ *:has(> .select--minimal) {
1093
+ position: relative;
1094
+ display: inline-block !important;
1095
+ width: auto !important;
1096
+ font-size: inherit !important;
1097
+ line-height: 1 !important;
1012
1098
 
1013
- max-width: $select-max-width;
1099
+ padding: 0 !important;
1100
+ margin: 0 !important;
1014
1101
 
1015
- &[multiple],
1016
- &[size]:not([size='1']) {
1017
- background: none;
1018
- max-height: none !important;
1019
- }
1102
+ font-family: var(--font-body) !important;
1103
+
1104
+ &:after {
1105
+ font-size: 0.8em;
1106
+ line-height: 1em;
1107
+ content: '\f078';
1108
+ font-family: 'Font Awesome 6 Pro';
1109
+ position: absolute;
1110
+ top: 40%;
1111
+ transform: translate(0, -50%);
1112
+ right: calc(0.8ch);
1113
+ pointer-events: none;
1020
1114
 
1021
- &:disabled {
1022
- color: $form-select-disabled-color;
1023
- background-color: $form-select-disabled-bg;
1024
- border-color: $form-select-disabled-border-color;
1115
+ color: var(--colour-body);
1116
+ }
1025
1117
  }
1118
+ // #endregion
1026
1119
 
1027
- // Remove outline from select box in FF
1028
- &:-moz-focusring {
1029
- color: transparent;
1030
- text-shadow: 0 0 0 $form-select-color;
1120
+ // #region file upload
1121
+ iam-fileupload {
1122
+ input {
1123
+ display: none;
1124
+ }
1031
1125
  }
1032
- }
1126
+ // #endregion
1033
1127
 
1034
- div:has(> select) {
1035
- margin-bottom: rem(24);
1128
+ // #region label with input field in
1129
+ :is(label:not(.tag), .label):has(:is(input, select)) {
1130
+ display: block;
1131
+ margin-bottom: rem(24);
1132
+ max-width: $input-max-width;
1036
1133
 
1037
- select {
1038
- margin-bottom: 0 !important;
1039
- }
1040
- }
1134
+ :is(input:not([type='range']), select, textarea) {
1135
+ margin-top: rem(8);
1136
+ margin-bottom: 0 !important;
1137
+ }
1041
1138
 
1042
- .select--minimal {
1043
- all: unset;
1044
- font-size: inherit;
1045
- line-height: inherit;
1046
- background: none;
1047
- border: 2px solid transparent;
1048
- display: inline-block;
1049
- padding: 0.4em calc(1em + 0.8ch) 0.4rem var(--select-padding-left, 0.4em) !important;
1050
- font-weight: normal !important;
1051
- margin: -0.4em 0 !important;
1052
- border-radius: 0.25em;
1053
-
1054
- color: var(--colour-body);
1055
-
1056
- height: auto;
1057
- cursor: pointer;
1058
- font-family: var(--font-body) !important;
1059
-
1060
- option {
1061
- background-color: var(--colour-canvas);
1062
- padding-left: 1em;
1063
- font-size: inherit;
1064
- line-height: inherit;
1065
- }
1139
+ :is(input, select) ~ span:not(:is(.suffix, .prefix, .invalid-feedback)),
1140
+ span:has(> :is(input, select)) ~ span:not(:is(.suffix, .prefix, .invalid-feedback)) {
1141
+ all: initial;
1142
+ font-family: var(--font-body);
1143
+ color: var(--colour-body);
1144
+ margin-top: rem(8);
1145
+ display: block;
1146
+ line-height: 1.2;
1147
+ }
1148
+ .invalid-feedback {
1149
+ font-size: 1rem;
1150
+ font-weight: normal;
1151
+ line-height: 1.2;
1152
+ }
1066
1153
 
1067
- &:hover {
1068
- //border: none;
1069
- background: var(--colour-light);
1070
- }
1154
+ span:has(:is(input, select)) {
1155
+ display: flex;
1156
+ width: 100%;
1157
+ }
1071
1158
 
1072
- &:is(:focus, .focus):not(:disabled) {
1073
- border-color: var(--colour-info);
1074
- outline: 0;
1075
- box-shadow: 0 0 0 0.1rem rgba(30, 190, 230, 0.25);
1159
+ :is(.suffix, .prefix):not(.mt-0) {
1160
+ margin: rem(8) 0 0 0 !important;
1161
+ }
1076
1162
  }
1077
- }
1078
1163
 
1079
- *:has(> .select--minimal) {
1080
- position: relative;
1081
- display: inline-block !important;
1082
- width: auto !important;
1083
- font-size: inherit !important;
1084
- line-height: 1 !important;
1164
+ .was-validated label:has(:is(input:not([type='radio']):not([type='checkbox']), select)),
1165
+ .was-validated fieldset:has(label input:is([type='radio'], [type='checkbox']):invalid) {
1166
+ margin-bottom: 1.5rem;
1167
+
1168
+ &:has(:is(:invalid, .is-invalid)):after {
1169
+ content: 'This field is required';
1170
+ color: var(--colour-danger);
1171
+ margin-top: rem(8);
1172
+ background-image: escape-svg($icon-error);
1173
+ background-repeat: no-repeat;
1174
+ background-position: left top 1px;
1175
+ background-size: var(--input-fs, #{rem(16)}) var(--input-fs, #{rem(16)});
1176
+ padding-left: calc(var(--input-fs, #{rem(16)}) + #{rem(8)});
1177
+ display: block;
1178
+ width: 100%;
1179
+ font-size: 1rem;
1180
+ line-height: 1.2;
1181
+ }
1085
1182
 
1086
- padding: 0 !important;
1087
- margin: 0 !important;
1183
+ &[data-error]:has(:is(:invalid, .is-invalid)):after {
1184
+ content: attr(data-error) !important;
1185
+ }
1088
1186
 
1089
- font-family: var(--font-body) !important;
1187
+ &.error-nowrap:after {
1188
+ white-space: nowrap;
1189
+ }
1190
+ }
1090
1191
 
1091
- &:after {
1092
- font-size: 0.8em;
1093
- line-height: 1em;
1094
- content: '\f078';
1095
- font-family: 'Font Awesome 6 Pro';
1096
- position: absolute;
1097
- top: 40%;
1098
- transform: translate(0, -50%);
1099
- right: calc(0.8ch);
1100
- pointer-events: none;
1192
+ // #endregion
1101
1193
 
1102
- color: var(--colour-body);
1194
+ // #region input range
1195
+ input[type='range'] {
1196
+ --track-size: #{rem(8)};
1197
+ --track-colour: var(--colour-light);
1198
+ --thumb-colour: var(--colour-info);
1199
+ --thumb-size: #{rem(24)};
1200
+ width: 100%;
1201
+ background: transparent;
1202
+ cursor: pointer;
1203
+ margin-top: rem(32);
1204
+ margin-bottom: rem(32);
1205
+ height: rem(32);
1206
+ border-radius: 50%;
1207
+ accent-color: var(--thumb-colour);
1208
+ -webkit-appearance: none;
1209
+ appearance: none;
1103
1210
  }
1104
- }
1105
- // #endregion
1106
1211
 
1107
- // #region file upload
1108
- iam-fileupload {
1109
- input {
1110
- display: none;
1212
+ *:has(> input[type='range']) {
1213
+ position: relative;
1214
+ padding-bottom: 6rem;
1215
+ max-width: $input-max-width;
1111
1216
  }
1112
- }
1113
- // #endregion
1114
1217
 
1115
- // #region label with input field in
1116
- :is(label:not(.tag), .label):has(:is(input, select)) {
1117
- display: block;
1118
- margin-bottom: rem(24);
1119
- max-width: $input-max-width;
1120
-
1121
- :is(input:not([type='range']), select, textarea) {
1122
- margin-top: rem(8);
1123
- margin-bottom: 0 !important;
1218
+ label input[type='range'] {
1219
+ position: absolute;
1220
+ top: 1.5rem;
1221
+ left: 0;
1124
1222
  }
1125
1223
 
1126
- :is(input, select) ~ span:not(:is(.suffix, .prefix, .invalid-feedback)),
1127
- span:has(> :is(input, select)) ~ span:not(:is(.suffix, .prefix, .invalid-feedback)) {
1128
- all: initial;
1129
- font-family: var(--font-body);
1130
- color: var(--colour-body);
1131
- margin-top: rem(8);
1132
- display: block;
1133
- line-height: 1.2;
1134
- }
1135
- .invalid-feedback {
1136
- font-size: 1rem;
1137
- font-weight: normal;
1138
- line-height: 1.2;
1224
+ // Track Styles
1225
+ input[type='range']::-webkit-slider-runnable-track {
1226
+ background: var(--track-colour);
1227
+ height: var(--track-size);
1228
+ border-radius: 0.5rem;
1139
1229
  }
1140
1230
 
1141
- span:has(:is(input, select)) {
1142
- display: flex;
1143
- width: 100%;
1231
+ input[type='range']::-moz-range-track {
1232
+ background: var(--track-colour);
1233
+ height: var(--track-size);
1234
+ border-radius: 0.5rem;
1144
1235
  }
1145
1236
 
1146
- :is(.suffix, .prefix):not(.mt-0) {
1147
- margin: rem(8) 0 0 0 !important;
1237
+ // Thumb Styles
1238
+ input[type='range']::-webkit-slider-thumb {
1239
+ -webkit-appearance: none; /* Override default look */
1240
+ appearance: none;
1241
+ margin-top: rem(-8); /* Centers thumb on the track */
1242
+ background-color: var(--thumb-colour);
1243
+ height: var(--thumb-size);
1244
+ width: var(--thumb-size);
1245
+ border-radius: 50%;
1246
+ position: relative;
1247
+ z-index: 99;
1248
+ pointer-events: all;
1148
1249
  }
1149
- }
1150
-
1151
- .was-validated label:has(:is(input:not([type='radio']):not([type='checkbox']), select)),
1152
- .was-validated fieldset:has(label input:is([type='radio'], [type='checkbox']):invalid) {
1153
- margin-bottom: 1.5rem;
1154
1250
 
1155
- &:has(:is(:invalid, .is-invalid)):after {
1156
- content: 'This field is required';
1157
- color: var(--colour-danger);
1158
- margin-top: rem(8);
1159
- background-image: escape-svg($icon-error);
1160
- background-repeat: no-repeat;
1161
- background-position: left top 1px;
1162
- background-size: var(--input-fs, #{rem(16)}) var(--input-fs, #{rem(16)});
1163
- padding-left: calc(var(--input-fs, #{rem(16)}) + #{rem(8)});
1164
- display: block;
1165
- width: 100%;
1166
- font-size: 1rem;
1167
- line-height: 1.2;
1251
+ input[type='range']::-moz-range-thumb {
1252
+ border: none; /*Removes extra border that FF applies*/
1253
+ background-color: var(--thumb-colour); /*Removes default border-radius that FF applies*/
1254
+ height: var(--thumb-size);
1255
+ width: var(--thumb-size);
1256
+ border-radius: 50%;
1257
+ position: relative;
1258
+ z-index: 99;
1259
+ pointer-events: all;
1168
1260
  }
1169
1261
 
1170
- &[data-error]:has(:is(:invalid, .is-invalid)):after {
1171
- content: attr(data-error) !important;
1262
+ // Focus Styles
1263
+ input[type='range']:focus {
1264
+ outline: none;
1172
1265
  }
1173
1266
 
1174
- &.error-nowrap:after {
1175
- white-space: nowrap;
1267
+ input[type='range']:hover::-webkit-slider-thumb,
1268
+ input[type='range']:focus::-webkit-slider-thumb {
1269
+ outline: 0.5rem solid rgba(30, 190, 231, 0.2);
1176
1270
  }
1177
- }
1178
-
1179
- // #endregion
1180
-
1181
- // #region input range
1182
- input[type='range'] {
1183
- --track-size: #{rem(8)};
1184
- --track-colour: var(--colour-light);
1185
- --thumb-colour: var(--colour-info);
1186
- --thumb-size: #{rem(24)};
1187
- width: 100%;
1188
- background: transparent;
1189
- cursor: pointer;
1190
- margin-top: rem(32);
1191
- margin-bottom: rem(32);
1192
- height: rem(32);
1193
- border-radius: 50%;
1194
- accent-color: var(--thumb-colour);
1195
- -webkit-appearance: none;
1196
- appearance: none;
1197
- }
1198
-
1199
- *:has(> input[type='range']) {
1200
- position: relative;
1201
- padding-bottom: 6rem;
1202
- max-width: $input-max-width;
1203
- }
1204
1271
 
1205
- label input[type='range'] {
1206
- position: absolute;
1207
- top: 1.5rem;
1208
- left: 0;
1209
- }
1210
-
1211
- // Track Styles
1212
- input[type='range']::-webkit-slider-runnable-track {
1213
- background: var(--track-colour);
1214
- height: var(--track-size);
1215
- border-radius: 0.5rem;
1216
- }
1217
-
1218
- input[type='range']::-moz-range-track {
1219
- background: var(--track-colour);
1220
- height: var(--track-size);
1221
- border-radius: 0.5rem;
1222
- }
1223
-
1224
- // Thumb Styles
1225
- input[type='range']::-webkit-slider-thumb {
1226
- -webkit-appearance: none; /* Override default look */
1227
- appearance: none;
1228
- margin-top: rem(-8); /* Centers thumb on the track */
1229
- background-color: var(--thumb-colour);
1230
- height: var(--thumb-size);
1231
- width: var(--thumb-size);
1232
- border-radius: 50%;
1233
- position: relative;
1234
- z-index: 99;
1235
- pointer-events: all;
1236
- }
1237
-
1238
- input[type='range']::-moz-range-thumb {
1239
- border: none; /*Removes extra border that FF applies*/
1240
- background-color: var(--thumb-colour); /*Removes default border-radius that FF applies*/
1241
- height: var(--thumb-size);
1242
- width: var(--thumb-size);
1243
- border-radius: 50%;
1244
- position: relative;
1245
- z-index: 99;
1246
- pointer-events: all;
1247
- }
1248
-
1249
- // Focus Styles
1250
- input[type='range']:focus {
1251
- outline: none;
1252
- }
1253
-
1254
- input[type='range']:hover::-webkit-slider-thumb,
1255
- input[type='range']:focus::-webkit-slider-thumb {
1256
- outline: 0.5rem solid rgba(30, 190, 231, 0.2);
1257
- }
1258
-
1259
- input[type='range']:active::-webkit-slider-thumb {
1260
- outline: 0.5rem solid rgba(30, 190, 231, 0.4);
1261
- }
1272
+ input[type='range']:active::-webkit-slider-thumb {
1273
+ outline: 0.5rem solid rgba(30, 190, 231, 0.4);
1274
+ }
1262
1275
 
1263
- input[type='range']:hover::-moz-range-thumb,
1264
- input[type='range']:focus::-moz-range-thumb {
1265
- outline: 0.5rem solid rgba(30, 190, 231, 0.2);
1266
- }
1267
- input[type='range']:focus::-moz-range-thumb {
1268
- outline: 0.5rem solid rgba(30, 190, 231, 0.4);
1269
- }
1276
+ input[type='range']:hover::-moz-range-thumb,
1277
+ input[type='range']:focus::-moz-range-thumb {
1278
+ outline: 0.5rem solid rgba(30, 190, 231, 0.2);
1279
+ }
1280
+ input[type='range']:focus::-moz-range-thumb {
1281
+ outline: 0.5rem solid rgba(30, 190, 231, 0.4);
1282
+ }
1270
1283
 
1271
- iam-slider input::-webkit-outer-spin-button,
1272
- iam-slider input::-webkit-inner-spin-button {
1273
- -webkit-appearance: none;
1274
- margin: 0;
1275
- }
1284
+ iam-slider input::-webkit-outer-spin-button,
1285
+ iam-slider input::-webkit-inner-spin-button {
1286
+ -webkit-appearance: none;
1287
+ margin: 0;
1288
+ }
1276
1289
 
1277
- // #endregion
1290
+ // #endregion
1278
1291
 
1279
- // #region Date and time fields
1280
- :is(input[type='date'], input[type='time']) {
1281
- position: relative;
1282
- margin-right: -3rem;
1283
- padding-right: 3rem !important;
1284
- background-position: right 4rem center;
1285
- border-radius: 0.5rem !important;
1286
- }
1287
- :is(input[type='date'], input[type='time'])::-webkit-calendar-picker-indicator {
1288
- background: transparent;
1289
- bottom: 0;
1290
- color: transparent;
1291
- cursor: pointer;
1292
- height: auto;
1293
- left: 8em;
1294
- position: absolute;
1295
- right: 0;
1296
- top: 0;
1297
- width: auto;
1298
- order: 3;
1292
+ // #region Date and time fields
1293
+ :is(input[type='date'], input[type='time']) {
1294
+ position: relative;
1295
+ margin-right: -3rem;
1296
+ padding-right: 3rem !important;
1297
+ background-position: right 4rem center;
1298
+ border-radius: 0.5rem !important;
1299
+ }
1300
+ :is(input[type='date'], input[type='time'])::-webkit-calendar-picker-indicator {
1301
+ background: transparent;
1302
+ bottom: 0;
1303
+ color: transparent;
1304
+ cursor: pointer;
1305
+ height: auto;
1306
+ left: 8em;
1307
+ position: absolute;
1308
+ right: 0;
1309
+ top: 0;
1310
+ width: auto;
1311
+ order: 3;
1312
+ }
1313
+ // #endregion
1299
1314
  }
1300
- // #endregion