@dnb/eufemia 10.30.2 → 10.31.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 (294) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/cjs/components/checkbox/CheckIcon.d.ts +1 -1
  3. package/cjs/components/checkbox/CheckIcon.js +4 -9
  4. package/cjs/components/checkbox/CheckIcon.js.map +1 -1
  5. package/cjs/components/checkbox/Checkbox.d.ts +4 -0
  6. package/cjs/components/checkbox/Checkbox.js +9 -3
  7. package/cjs/components/checkbox/Checkbox.js.map +1 -1
  8. package/cjs/components/checkbox/CheckboxDocs.js +10 -5
  9. package/cjs/components/checkbox/CheckboxDocs.js.map +1 -1
  10. package/cjs/components/checkbox/style/dnb-checkbox.css +96 -16
  11. package/cjs/components/checkbox/style/dnb-checkbox.min.css +1 -1
  12. package/cjs/components/checkbox/style/dnb-checkbox.scss +158 -22
  13. package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.css +22 -2
  14. package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.min.css +4 -2
  15. package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.scss +28 -2
  16. package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-ui.css +20 -2
  17. package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-ui.min.css +5 -1
  18. package/cjs/components/checkbox/style/themes/dnb-checkbox-theme-ui.scss +25 -2
  19. package/cjs/components/height-animation/HeightAnimationInstance.js +6 -1
  20. package/cjs/components/height-animation/HeightAnimationInstance.js.map +1 -1
  21. package/cjs/components/modal/Modal.d.ts +2 -0
  22. package/cjs/components/modal/Modal.js +10 -3
  23. package/cjs/components/modal/Modal.js.map +1 -1
  24. package/cjs/extensions/forms/DataContext/Context.d.ts +2 -1
  25. package/cjs/extensions/forms/DataContext/Context.js +0 -1
  26. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  27. package/cjs/extensions/forms/DataContext/Provider/Provider.js +2 -1
  28. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  29. package/cjs/extensions/forms/Field/Boolean/Boolean.d.ts +12 -2
  30. package/cjs/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
  31. package/cjs/extensions/forms/Field/Boolean/BooleanDocs.d.ts +2 -0
  32. package/cjs/extensions/forms/Field/Boolean/BooleanDocs.js +25 -0
  33. package/cjs/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -0
  34. package/cjs/extensions/forms/Field/FieldDocs.js +1 -1
  35. package/cjs/extensions/forms/Field/FieldDocs.js.map +1 -1
  36. package/cjs/extensions/forms/Field/Indeterminate/Indeterminate.d.ts +16 -0
  37. package/cjs/extensions/forms/Field/Indeterminate/Indeterminate.js +53 -0
  38. package/cjs/extensions/forms/Field/Indeterminate/Indeterminate.js.map +1 -0
  39. package/cjs/extensions/forms/Field/Indeterminate/IndeterminateDocs.d.ts +2 -0
  40. package/cjs/extensions/forms/Field/Indeterminate/IndeterminateDocs.js +38 -0
  41. package/cjs/extensions/forms/Field/Indeterminate/IndeterminateDocs.js.map +1 -0
  42. package/cjs/extensions/forms/Field/Indeterminate/index.d.ts +2 -0
  43. package/cjs/extensions/forms/Field/Indeterminate/index.js +27 -0
  44. package/cjs/extensions/forms/Field/Indeterminate/index.js.map +1 -0
  45. package/cjs/extensions/forms/Field/Indeterminate/useDependencePaths.d.ts +6 -0
  46. package/cjs/extensions/forms/Field/Indeterminate/useDependencePaths.js +81 -0
  47. package/cjs/extensions/forms/Field/Indeterminate/useDependencePaths.js.map +1 -0
  48. package/cjs/extensions/forms/Field/Name/NameDocs.js +1 -7
  49. package/cjs/extensions/forms/Field/Name/NameDocs.js.map +1 -1
  50. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  51. package/cjs/extensions/forms/Field/Toggle/Toggle.d.ts +2 -1
  52. package/cjs/extensions/forms/Field/Toggle/Toggle.js +2 -2
  53. package/cjs/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  54. package/cjs/extensions/forms/Field/Toggle/ToggleDocs.d.ts +2 -0
  55. package/cjs/extensions/forms/Field/Toggle/ToggleDocs.js +35 -0
  56. package/cjs/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -0
  57. package/cjs/extensions/forms/Field/index.d.ts +1 -0
  58. package/cjs/extensions/forms/Field/index.js +7 -0
  59. package/cjs/extensions/forms/Field/index.js.map +1 -1
  60. package/cjs/extensions/forms/FieldBlock/FieldBlockDocs.d.ts +1 -0
  61. package/cjs/extensions/forms/FieldBlock/FieldBlockDocs.js +24 -16
  62. package/cjs/extensions/forms/FieldBlock/FieldBlockDocs.js.map +1 -1
  63. package/cjs/extensions/forms/Form/Handler/Handler.js +2 -2
  64. package/cjs/extensions/forms/Form/Handler/Handler.js.map +1 -1
  65. package/cjs/extensions/forms/Form/Handler/HandlerDocs.js +5 -0
  66. package/cjs/extensions/forms/Form/Handler/HandlerDocs.js.map +1 -1
  67. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +6 -2
  68. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  69. package/cjs/extensions/forms/Wizard/Step/Step.d.ts +4 -0
  70. package/cjs/extensions/forms/Wizard/Step/Step.js +7 -2
  71. package/cjs/extensions/forms/Wizard/Step/Step.js.map +1 -1
  72. package/cjs/extensions/forms/Wizard/Step/StepDocs.js +5 -0
  73. package/cjs/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
  74. package/cjs/extensions/forms/hooks/useFieldProps.js +1 -1
  75. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
  76. package/cjs/extensions/forms/types.d.ts +5 -0
  77. package/cjs/extensions/forms/types.js.map +1 -1
  78. package/cjs/shared/Eufemia.d.ts +1 -1
  79. package/cjs/shared/Eufemia.js +2 -2
  80. package/cjs/shared/Eufemia.js.map +1 -1
  81. package/cjs/style/core/scopes.scss +1 -1
  82. package/cjs/style/dnb-ui-basis.css +1 -1
  83. package/cjs/style/dnb-ui-basis.min.css +1 -1
  84. package/cjs/style/dnb-ui-body.css +1 -1
  85. package/cjs/style/dnb-ui-body.min.css +1 -1
  86. package/cjs/style/dnb-ui-components.css +96 -16
  87. package/cjs/style/dnb-ui-components.min.css +1 -1
  88. package/cjs/style/dnb-ui-core.css +1 -1
  89. package/cjs/style/dnb-ui-core.min.css +1 -1
  90. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +116 -18
  91. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +6 -2
  92. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +118 -18
  93. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +5 -3
  94. package/cjs/style/themes/theme-ui/ui-theme-components.css +116 -18
  95. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +6 -2
  96. package/components/checkbox/CheckIcon.d.ts +1 -1
  97. package/components/checkbox/CheckIcon.js +4 -8
  98. package/components/checkbox/CheckIcon.js.map +1 -1
  99. package/components/checkbox/Checkbox.d.ts +4 -0
  100. package/components/checkbox/Checkbox.js +9 -3
  101. package/components/checkbox/Checkbox.js.map +1 -1
  102. package/components/checkbox/CheckboxDocs.js +10 -5
  103. package/components/checkbox/CheckboxDocs.js.map +1 -1
  104. package/components/checkbox/style/dnb-checkbox.css +96 -16
  105. package/components/checkbox/style/dnb-checkbox.min.css +1 -1
  106. package/components/checkbox/style/dnb-checkbox.scss +158 -22
  107. package/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.css +22 -2
  108. package/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.min.css +4 -2
  109. package/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.scss +28 -2
  110. package/components/checkbox/style/themes/dnb-checkbox-theme-ui.css +20 -2
  111. package/components/checkbox/style/themes/dnb-checkbox-theme-ui.min.css +5 -1
  112. package/components/checkbox/style/themes/dnb-checkbox-theme-ui.scss +25 -2
  113. package/components/height-animation/HeightAnimationInstance.js +6 -1
  114. package/components/height-animation/HeightAnimationInstance.js.map +1 -1
  115. package/components/modal/Modal.d.ts +2 -0
  116. package/components/modal/Modal.js +10 -3
  117. package/components/modal/Modal.js.map +1 -1
  118. package/es/components/checkbox/CheckIcon.d.ts +1 -1
  119. package/es/components/checkbox/CheckIcon.js +5 -10
  120. package/es/components/checkbox/CheckIcon.js.map +1 -1
  121. package/es/components/checkbox/Checkbox.d.ts +4 -0
  122. package/es/components/checkbox/Checkbox.js +9 -3
  123. package/es/components/checkbox/Checkbox.js.map +1 -1
  124. package/es/components/checkbox/CheckboxDocs.js +10 -5
  125. package/es/components/checkbox/CheckboxDocs.js.map +1 -1
  126. package/es/components/checkbox/style/dnb-checkbox.css +96 -16
  127. package/es/components/checkbox/style/dnb-checkbox.min.css +1 -1
  128. package/es/components/checkbox/style/dnb-checkbox.scss +158 -22
  129. package/es/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.css +22 -2
  130. package/es/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.min.css +4 -2
  131. package/es/components/checkbox/style/themes/dnb-checkbox-theme-sbanken.scss +28 -2
  132. package/es/components/checkbox/style/themes/dnb-checkbox-theme-ui.css +20 -2
  133. package/es/components/checkbox/style/themes/dnb-checkbox-theme-ui.min.css +5 -1
  134. package/es/components/checkbox/style/themes/dnb-checkbox-theme-ui.scss +25 -2
  135. package/es/components/height-animation/HeightAnimationInstance.js +6 -1
  136. package/es/components/height-animation/HeightAnimationInstance.js.map +1 -1
  137. package/es/components/modal/Modal.d.ts +2 -0
  138. package/es/components/modal/Modal.js +10 -3
  139. package/es/components/modal/Modal.js.map +1 -1
  140. package/es/extensions/forms/DataContext/Context.d.ts +2 -1
  141. package/es/extensions/forms/DataContext/Context.js +0 -1
  142. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  143. package/es/extensions/forms/DataContext/Provider/Provider.js +2 -1
  144. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  145. package/es/extensions/forms/Field/Boolean/Boolean.d.ts +12 -2
  146. package/es/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
  147. package/es/extensions/forms/Field/Boolean/BooleanDocs.d.ts +2 -0
  148. package/es/extensions/forms/Field/Boolean/BooleanDocs.js +18 -0
  149. package/es/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -0
  150. package/es/extensions/forms/Field/FieldDocs.js +2 -2
  151. package/es/extensions/forms/Field/FieldDocs.js.map +1 -1
  152. package/es/extensions/forms/Field/Indeterminate/Indeterminate.d.ts +16 -0
  153. package/es/extensions/forms/Field/Indeterminate/Indeterminate.js +43 -0
  154. package/es/extensions/forms/Field/Indeterminate/Indeterminate.js.map +1 -0
  155. package/es/extensions/forms/Field/Indeterminate/IndeterminateDocs.d.ts +2 -0
  156. package/es/extensions/forms/Field/Indeterminate/IndeterminateDocs.js +29 -0
  157. package/es/extensions/forms/Field/Indeterminate/IndeterminateDocs.js.map +1 -0
  158. package/es/extensions/forms/Field/Indeterminate/index.d.ts +2 -0
  159. package/es/extensions/forms/Field/Indeterminate/index.js +3 -0
  160. package/es/extensions/forms/Field/Indeterminate/index.js.map +1 -0
  161. package/es/extensions/forms/Field/Indeterminate/useDependencePaths.d.ts +6 -0
  162. package/es/extensions/forms/Field/Indeterminate/useDependencePaths.js +74 -0
  163. package/es/extensions/forms/Field/Indeterminate/useDependencePaths.js.map +1 -0
  164. package/es/extensions/forms/Field/Name/NameDocs.js +1 -8
  165. package/es/extensions/forms/Field/Name/NameDocs.js.map +1 -1
  166. package/es/extensions/forms/Field/String/String.js.map +1 -1
  167. package/es/extensions/forms/Field/Toggle/Toggle.d.ts +2 -1
  168. package/es/extensions/forms/Field/Toggle/Toggle.js +2 -2
  169. package/es/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  170. package/es/extensions/forms/Field/Toggle/ToggleDocs.d.ts +2 -0
  171. package/es/extensions/forms/Field/Toggle/ToggleDocs.js +28 -0
  172. package/es/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -0
  173. package/es/extensions/forms/Field/index.d.ts +1 -0
  174. package/es/extensions/forms/Field/index.js +1 -0
  175. package/es/extensions/forms/Field/index.js.map +1 -1
  176. package/es/extensions/forms/FieldBlock/FieldBlockDocs.d.ts +1 -0
  177. package/es/extensions/forms/FieldBlock/FieldBlockDocs.js +20 -15
  178. package/es/extensions/forms/FieldBlock/FieldBlockDocs.js.map +1 -1
  179. package/es/extensions/forms/Form/Handler/Handler.js +2 -2
  180. package/es/extensions/forms/Form/Handler/Handler.js.map +1 -1
  181. package/es/extensions/forms/Form/Handler/HandlerDocs.js +5 -0
  182. package/es/extensions/forms/Form/Handler/HandlerDocs.js.map +1 -1
  183. package/es/extensions/forms/Wizard/Container/WizardContainer.js +6 -2
  184. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  185. package/es/extensions/forms/Wizard/Step/Step.d.ts +4 -0
  186. package/es/extensions/forms/Wizard/Step/Step.js +7 -2
  187. package/es/extensions/forms/Wizard/Step/Step.js.map +1 -1
  188. package/es/extensions/forms/Wizard/Step/StepDocs.js +5 -0
  189. package/es/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
  190. package/es/extensions/forms/hooks/useFieldProps.js +1 -1
  191. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
  192. package/es/extensions/forms/types.d.ts +5 -0
  193. package/es/extensions/forms/types.js.map +1 -1
  194. package/es/shared/Eufemia.d.ts +1 -1
  195. package/es/shared/Eufemia.js +2 -2
  196. package/es/shared/Eufemia.js.map +1 -1
  197. package/es/style/core/scopes.scss +1 -1
  198. package/es/style/dnb-ui-basis.css +1 -1
  199. package/es/style/dnb-ui-basis.min.css +1 -1
  200. package/es/style/dnb-ui-body.css +1 -1
  201. package/es/style/dnb-ui-body.min.css +1 -1
  202. package/es/style/dnb-ui-components.css +96 -16
  203. package/es/style/dnb-ui-components.min.css +1 -1
  204. package/es/style/dnb-ui-core.css +1 -1
  205. package/es/style/dnb-ui-core.min.css +1 -1
  206. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +116 -18
  207. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +6 -2
  208. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +118 -18
  209. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +5 -3
  210. package/es/style/themes/theme-ui/ui-theme-components.css +116 -18
  211. package/es/style/themes/theme-ui/ui-theme-components.min.css +6 -2
  212. package/esm/dnb-ui-basis.min.mjs +1 -1
  213. package/esm/dnb-ui-components.min.mjs +1 -1
  214. package/esm/dnb-ui-elements.min.mjs +1 -1
  215. package/esm/dnb-ui-extensions.min.mjs +3 -3
  216. package/esm/dnb-ui-lib.min.mjs +1 -1
  217. package/extensions/forms/DataContext/Context.d.ts +2 -1
  218. package/extensions/forms/DataContext/Context.js +0 -1
  219. package/extensions/forms/DataContext/Context.js.map +1 -1
  220. package/extensions/forms/DataContext/Provider/Provider.js +2 -1
  221. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  222. package/extensions/forms/Field/Boolean/Boolean.d.ts +12 -2
  223. package/extensions/forms/Field/Boolean/Boolean.js.map +1 -1
  224. package/extensions/forms/Field/Boolean/BooleanDocs.d.ts +2 -0
  225. package/extensions/forms/Field/Boolean/BooleanDocs.js +18 -0
  226. package/extensions/forms/Field/Boolean/BooleanDocs.js.map +1 -0
  227. package/extensions/forms/Field/FieldDocs.js +2 -2
  228. package/extensions/forms/Field/FieldDocs.js.map +1 -1
  229. package/extensions/forms/Field/Indeterminate/Indeterminate.d.ts +16 -0
  230. package/extensions/forms/Field/Indeterminate/Indeterminate.js +43 -0
  231. package/extensions/forms/Field/Indeterminate/Indeterminate.js.map +1 -0
  232. package/extensions/forms/Field/Indeterminate/IndeterminateDocs.d.ts +2 -0
  233. package/extensions/forms/Field/Indeterminate/IndeterminateDocs.js +29 -0
  234. package/extensions/forms/Field/Indeterminate/IndeterminateDocs.js.map +1 -0
  235. package/extensions/forms/Field/Indeterminate/index.d.ts +2 -0
  236. package/extensions/forms/Field/Indeterminate/index.js +3 -0
  237. package/extensions/forms/Field/Indeterminate/index.js.map +1 -0
  238. package/extensions/forms/Field/Indeterminate/useDependencePaths.d.ts +6 -0
  239. package/extensions/forms/Field/Indeterminate/useDependencePaths.js +75 -0
  240. package/extensions/forms/Field/Indeterminate/useDependencePaths.js.map +1 -0
  241. package/extensions/forms/Field/Name/NameDocs.js +1 -8
  242. package/extensions/forms/Field/Name/NameDocs.js.map +1 -1
  243. package/extensions/forms/Field/String/String.js.map +1 -1
  244. package/extensions/forms/Field/Toggle/Toggle.d.ts +2 -1
  245. package/extensions/forms/Field/Toggle/Toggle.js +2 -2
  246. package/extensions/forms/Field/Toggle/Toggle.js.map +1 -1
  247. package/extensions/forms/Field/Toggle/ToggleDocs.d.ts +2 -0
  248. package/extensions/forms/Field/Toggle/ToggleDocs.js +28 -0
  249. package/extensions/forms/Field/Toggle/ToggleDocs.js.map +1 -0
  250. package/extensions/forms/Field/index.d.ts +1 -0
  251. package/extensions/forms/Field/index.js +1 -0
  252. package/extensions/forms/Field/index.js.map +1 -1
  253. package/extensions/forms/FieldBlock/FieldBlockDocs.d.ts +1 -0
  254. package/extensions/forms/FieldBlock/FieldBlockDocs.js +20 -15
  255. package/extensions/forms/FieldBlock/FieldBlockDocs.js.map +1 -1
  256. package/extensions/forms/Form/Handler/Handler.js +2 -2
  257. package/extensions/forms/Form/Handler/Handler.js.map +1 -1
  258. package/extensions/forms/Form/Handler/HandlerDocs.js +5 -0
  259. package/extensions/forms/Form/Handler/HandlerDocs.js.map +1 -1
  260. package/extensions/forms/Wizard/Container/WizardContainer.js +6 -2
  261. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  262. package/extensions/forms/Wizard/Step/Step.d.ts +4 -0
  263. package/extensions/forms/Wizard/Step/Step.js +7 -2
  264. package/extensions/forms/Wizard/Step/Step.js.map +1 -1
  265. package/extensions/forms/Wizard/Step/StepDocs.js +5 -0
  266. package/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
  267. package/extensions/forms/hooks/useFieldProps.js +1 -1
  268. package/extensions/forms/hooks/useFieldProps.js.map +1 -1
  269. package/extensions/forms/types.d.ts +5 -0
  270. package/extensions/forms/types.js.map +1 -1
  271. package/package.json +1 -1
  272. package/shared/Eufemia.d.ts +1 -1
  273. package/shared/Eufemia.js +2 -2
  274. package/shared/Eufemia.js.map +1 -1
  275. package/style/core/scopes.scss +1 -1
  276. package/style/dnb-ui-basis.css +1 -1
  277. package/style/dnb-ui-basis.min.css +1 -1
  278. package/style/dnb-ui-body.css +1 -1
  279. package/style/dnb-ui-body.min.css +1 -1
  280. package/style/dnb-ui-components.css +96 -16
  281. package/style/dnb-ui-components.min.css +1 -1
  282. package/style/dnb-ui-core.css +1 -1
  283. package/style/dnb-ui-core.min.css +1 -1
  284. package/style/themes/theme-eiendom/eiendom-theme-components.css +116 -18
  285. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +6 -2
  286. package/style/themes/theme-sbanken/sbanken-theme-components.css +118 -18
  287. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +5 -3
  288. package/style/themes/theme-ui/ui-theme-components.css +116 -18
  289. package/style/themes/theme-ui/ui-theme-components.min.css +6 -2
  290. package/umd/dnb-ui-basis.min.js +1 -1
  291. package/umd/dnb-ui-components.min.js +1 -1
  292. package/umd/dnb-ui-elements.min.js +1 -1
  293. package/umd/dnb-ui-extensions.min.js +3 -3
  294. package/umd/dnb-ui-lib.min.js +1 -1
@@ -11,11 +11,18 @@
11
11
  }
12
12
 
13
13
  .dnb-checkbox {
14
+ --checkbox-border-radius: 0.25rem;
15
+ --checkbox-gfx-border-radius__indeterminate: 0.125rem;
14
16
  --checkbox-width--large: 2rem;
15
17
  --checkbox-height--large: 2rem;
18
+ --checkbox-gfx-height__indeterminate: 0.625rem;
19
+ --checkbox-gfx-width__indeterminate: 0.625rem;
20
+ --checkbox-gfx-height__indeterminate--large: 0.875rem;
21
+ --checkbox-gfx-width__indeterminate--large: 0.875rem;
16
22
  --checkbox-border-width: 0.125rem;
23
+ --checkbox-border-width--hover: 0.125rem;
17
24
  --checkbox-color-gfx-on: black;
18
- --checkbox-color-gfx-off: black;
25
+ --checkbox-color-gfx-off: white;
19
26
  --checkbox-color-background-on: white;
20
27
  --checkbox-color-background-off: white;
21
28
  --checkbox-color-border-on: black;
@@ -25,6 +32,7 @@
25
32
  --checkbox-color-background-off--disabled: lightgrey;
26
33
  --checkbox-color-border-on--disabled: grey;
27
34
  --checkbox-color-border-off--disabled: grey;
35
+ --checkbox-color-gfx__indeterminate--disabled: grey;
28
36
  --checkbox-color-background--active: lightgrey;
29
37
  --checkbox-color-border--active: transparent;
30
38
  --checkbox-color-gfx--hover: grey;
@@ -38,6 +46,15 @@
38
46
  --checkbox-color-background-on--error: red;
39
47
  --checkbox-color-background--error-contrast: lavenderblush;
40
48
  --checkbox-color-border--error: red;
49
+ --checkbox-color-gfx-indeterminate--error: red;
50
+ --checkbox-color-gfx--error--hover: red;
51
+ --checkbox-color-background--error--hover: lavenderblush;
52
+ --checkbox-color-border--error--hover: red;
53
+ --checkbox-color-background-indeterminate: grey;
54
+ --checkbox-color-gfx-indeterminate: darkgray;
55
+ --checkbox-color-background-indeterminate--active: grey;
56
+ --checkbox-color-border-indeterminate--active: white;
57
+ --checkbox-color-gfx-indeterminate--active: white;
41
58
  --checkbox-bounding--medium: 1.75, 1.75;
42
59
  display: inline-flex;
43
60
  flex-direction: column;
@@ -91,12 +108,12 @@ html[data-whatinput=keyboard] .dnb-checkbox__focus {
91
108
  z-index: 4;
92
109
  width: calc(var(--checkbox-width--medium) - 0.25rem);
93
110
  height: calc(var(--checkbox-height--medium) - 0.25rem);
94
- border-radius: 0.25rem;
111
+ border-radius: var(--checkbox-border-radius);
95
112
  }
96
113
  .dnb-checkbox--large .dnb-checkbox__focus, .dnb-checkbox--large .dnb-checkbox__button {
97
114
  width: var(--checkbox-width--large);
98
115
  height: var(--checkbox-height--large);
99
- border-radius: 0.25rem;
116
+ border-radius: var(--checkbox-border-radius);
100
117
  }
101
118
  .dnb-checkbox__gfx {
102
119
  position: absolute;
@@ -180,7 +197,7 @@ html[data-whatinput=keyboard] .dnb-checkbox__focus {
180
197
  background-color: var(--checkbox-color-background-on);
181
198
  border-color: var(--checkbox-color-border-on);
182
199
  }
183
- .dnb-checkbox__input:not(:checked):not([data-checked=true]) ~ .dnb-checkbox__gfx {
200
+ .dnb-checkbox__input:not([disabled]):not(:checked):not([data-checked=true]) ~ .dnb-checkbox__gfx {
184
201
  opacity: 0;
185
202
  transform: scale(0.8);
186
203
  color: var(--checkbox-color-gfx-off);
@@ -188,6 +205,33 @@ html[data-whatinput=keyboard] .dnb-checkbox__focus {
188
205
  .dnb-checkbox__input:not(:checked):not([data-checked=true]) ~ .dnb-checkbox__button {
189
206
  background-color: var(--checkbox-color-background-off);
190
207
  border-color: var(--checkbox-color-border-off);
208
+ transition: background-color 100ms ease-out;
209
+ }
210
+ .dnb-checkbox__input ~ .dnb-checkbox__indeterminate {
211
+ position: absolute;
212
+ z-index: 5;
213
+ width: var(--checkbox-gfx-width__indeterminate);
214
+ height: var(--checkbox-gfx-height__indeterminate);
215
+ transform: scale(0.85);
216
+ opacity: 0;
217
+ background-color: var(--checkbox-color-gfx-indeterminate);
218
+ border-radius: var(--checkbox-gfx-border-radius__indeterminate);
219
+ transition: opacity 200ms ease-out, transform 200ms ease-out;
220
+ }
221
+ .dnb-checkbox__input:indeterminate ~ .dnb-checkbox__indeterminate {
222
+ transform: scale(1);
223
+ opacity: 1;
224
+ }
225
+ .dnb-checkbox__input:indeterminate:checked ~ .dnb-checkbox__button {
226
+ background-color: transparent;
227
+ border-color: var(--checkbox-color-border-off);
228
+ }
229
+ .dnb-checkbox__input:indeterminate:hover ~ .dnb-checkbox__gfx, .dnb-checkbox__input:indeterminate:checked ~ .dnb-checkbox__gfx, .dnb-checkbox__input:indeterminate:checked:hover ~ .dnb-checkbox__gfx {
230
+ color: transparent;
231
+ }
232
+ .dnb-checkbox--large .dnb-checkbox__input:indeterminate ~ .dnb-checkbox__indeterminate {
233
+ width: var(--checkbox-gfx-width__indeterminate--large);
234
+ height: var(--checkbox-gfx-height__indeterminate--large);
191
235
  }
192
236
  .dnb-checkbox__input[disabled]:checked ~ .dnb-checkbox__button, .dnb-checkbox__input[disabled][data-checked=true] ~ .dnb-checkbox__button {
193
237
  background-color: var(--checkbox-color-background-on--disabled);
@@ -200,6 +244,12 @@ html[data-whatinput=keyboard] .dnb-checkbox__focus {
200
244
  border-color: var(--checkbox-color-border-off--disabled);
201
245
  background-color: var(--checkbox-color-background-off--disabled);
202
246
  }
247
+ .dnb-checkbox__input[disabled]:indeterminate ~ .dnb-checkbox__indeterminate {
248
+ background-color: var(--checkbox-color-gfx__indeterminate--disabled);
249
+ }
250
+ .dnb-checkbox__input[disabled]:indeterminate ~ .dnb-checkbox__gfx {
251
+ color: transparent;
252
+ }
203
253
  .dnb-checkbox__input:not([disabled]):active ~ .dnb-checkbox__button {
204
254
  background-color: var(--checkbox-color-background--active);
205
255
  border-color: var(--checkbox-color-border--active);
@@ -207,44 +257,54 @@ html[data-whatinput=keyboard] .dnb-checkbox__focus {
207
257
  .dnb-checkbox__input:not([disabled]):checked:active ~ .dnb-checkbox__gfx, .dnb-checkbox__input:not([disabled])[data-checked=true]:active ~ .dnb-checkbox__gfx {
208
258
  color: var(--checkbox-color-gfx-on);
209
259
  }
210
- .dnb-checkbox__input:not([disabled]):not(:focus):hover ~ .dnb-checkbox__button {
260
+ .dnb-checkbox__input:not([disabled]):indeterminate:active ~ .dnb-checkbox__button {
261
+ background-color: var(--checkbox-color-background-indeterminate--active);
262
+ border-color: var(--checkbox-color-border-indeterminate--active);
263
+ }
264
+ .dnb-checkbox__input:not([disabled]):indeterminate:active ~ .dnb-checkbox__indeterminate {
265
+ background-color: var(--checkbox-color-gfx-indeterminate--active);
266
+ }
267
+ .dnb-checkbox__input:not([disabled]):not(:active):hover ~ .dnb-checkbox__button {
211
268
  border-color: var(--checkbox-color-border-off--hover);
212
269
  background-color: var(--checkbox-color-background--hover);
213
270
  }
214
- .dnb-checkbox__input:not([disabled]):not(:focus):hover ~ .dnb-checkbox__gfx {
271
+ .dnb-checkbox__input:not([disabled]):hover ~ .dnb-checkbox__gfx {
215
272
  color: var(--checkbox-color-gfx--hover);
216
273
  }
217
- .dnb-checkbox__input:not([disabled]):not(:focus):checked:hover ~ .dnb-checkbox__button, .dnb-checkbox__input:not([disabled]):not(:focus)[data-checked=true]:hover ~ .dnb-checkbox__button {
218
- border-color: var(--checkbox-color-border-on--hover);
274
+ .dnb-checkbox__input:not([disabled]):checked:hover ~ .dnb-checkbox__button, .dnb-checkbox__input:not([disabled])[data-checked=true]:hover ~ .dnb-checkbox__button {
275
+ border: var(--checkbox-border-width--hover) solid var(--checkbox-color-border-on--hover);
219
276
  }
220
- html[data-whatinput=keyboard] .dnb-checkbox__input:not([disabled]):focus ~ .dnb-checkbox__button {
277
+ html[data-whatinput=keyboard] .dnb-checkbox__input:not([disabled]):focus-visible ~ .dnb-checkbox__button {
221
278
  border: none;
222
279
  background-color: var(--checkbox-color-background--focus);
223
280
  }
224
- html[data-whatinput=keyboard] .dnb-checkbox__input:not([disabled]):focus ~ .dnb-checkbox__gfx {
281
+ html[data-whatinput=keyboard] .dnb-checkbox__input:not([disabled]):focus-visible ~ .dnb-checkbox__gfx {
225
282
  color: var(--checkbox-color-gfx--focus);
226
283
  }
227
- .dnb-checkbox__input:not([disabled]):focus ~ .dnb-checkbox__button .dnb-checkbox__focus, .dnb-checkbox__input:not([disabled]):active ~ .dnb-checkbox__button .dnb-checkbox__focus {
284
+ .dnb-checkbox__input:not([disabled]):focus-visible ~ .dnb-checkbox__button .dnb-checkbox__focus, .dnb-checkbox__input:not([disabled]):active ~ .dnb-checkbox__button .dnb-checkbox__focus {
228
285
  display: block;
229
286
  }
287
+ .dnb-checkbox__input:not([disabled]):focus-visible ~ .dnb-checkbox__indeterminate {
288
+ background-color: var(--checkbox-color-gfx--focus);
289
+ }
230
290
  .dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):not(:active) ~ .dnb-checkbox__button {
231
291
  border: none;
232
292
  }
233
293
  .dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):not(:active) ~ .dnb-checkbox__button .dnb-checkbox__focus {
234
294
  display: block;
235
295
  --border-color: var(--checkbox-color-border--error);
236
- --border-width: var(--focus-ring-width);
296
+ --border-width: var(--checkbox-border-width);
237
297
  box-shadow: 0 0 0 var(--border-width) var(--border-color);
238
298
  border-color: transparent;
239
299
  }
240
300
  .dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):hover ~ .dnb-checkbox__button {
241
- background-color: var(--checkbox-color-background--error-contrast);
301
+ background-color: var(--checkbox-color-background--error--hover);
242
302
  }
243
303
  .dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):hover ~ .dnb-checkbox__button[data-checked=true] {
244
- border-color: var(--checkbox-color-border--error);
304
+ border-color: var(--checkbox-color-border--error--hover);
245
305
  }
246
306
  .dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):hover ~ .dnb-checkbox__gfx {
247
- color: var(--checkbox-color-gfx--error-contrast);
307
+ color: var(--checkbox-color-gfx--error--hover);
248
308
  }
249
309
  .dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):not(:active):not(:hover) ~ .dnb-checkbox__gfx {
250
310
  color: var(--checkbox-color-gfx--error);
@@ -253,7 +313,7 @@ html[data-whatinput=keyboard] .dnb-checkbox__status--error .dnb-checkbox__input:
253
313
  border: none;
254
314
  background-color: var(--checkbox-color-background--error-contrast);
255
315
  --border-color: var(--checkbox-color-border--error);
256
- --border-width: calc(var(--focus-ring-width) + 0.0625rem);
316
+ --border-width: calc(var(--checkbox-border-width--hover));
257
317
  box-shadow: 0 0 0 var(--border-width) var(--border-color);
258
318
  border-color: transparent;
259
319
  }
@@ -263,6 +323,23 @@ html[data-whatinput=keyboard] .dnb-checkbox__status--error .dnb-checkbox__input:
263
323
  .dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):not(:active):not(:hover):checked ~ .dnb-checkbox__button, .dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):not(:active):not(:hover)[data-checked=true] ~ .dnb-checkbox__button {
264
324
  background-color: var(--checkbox-color-background-on--error);
265
325
  }
326
+ .dnb-checkbox__status--error .dnb-checkbox__input:indeterminate:not([disabled]):not(:active):not(:hover) ~ .dnb-checkbox__gfx {
327
+ color: var(--checkbox-color-gfx--error-contrast);
328
+ background-color: var(--checkbox-color-gfx--error-contrast);
329
+ border-radius: var(--checkbox-border-radius);
330
+ }
331
+ .dnb-checkbox__status--error .dnb-checkbox__input:indeterminate:not(:active):not(:hover) ~ .dnb-checkbox__indeterminate {
332
+ background-color: var(--checkbox-color-gfx-indeterminate--error);
333
+ }
334
+ .dnb-checkbox__status--error .dnb-checkbox__input:not(:indeterminate) ~ .dnb-checkbox__indeterminate {
335
+ background-color: var(--checkbox-color-gfx-indeterminate--error);
336
+ }
337
+ .dnb-checkbox__status--error .dnb-checkbox__input:indeterminate:hover:not(:active) ~ .dnb-checkbox__indeterminate {
338
+ background-color: var(--checkbox-color-gfx--error--hover);
339
+ }
340
+ .dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):not(:active):hover ~ .dnb-checkbox__gfx {
341
+ color: var(--checkbox-color-gfx--error--hover);
342
+ }
266
343
  .dnb-checkbox.dnb-skeleton .dnb-checkbox__input[disabled] ~ .dnb-checkbox__button {
267
344
  border-color: var(--skeleton-color);
268
345
  }
@@ -271,4 +348,7 @@ html[data-whatinput=keyboard] .dnb-checkbox__status--error .dnb-checkbox__input:
271
348
  }
272
349
  .dnb-checkbox.dnb-skeleton .dnb-checkbox__input[disabled] ~ .dnb-checkbox__gfx {
273
350
  color: var(--skeleton-color);
351
+ }
352
+ .dnb-checkbox.dnb-skeleton .dnb-checkbox__input[disabled] ~ .dnb-checkbox__indeterminate {
353
+ background-color: var(--skeleton-color);
274
354
  }
@@ -1 +1 @@
1
- :root{--checkbox-width--medium:1.5rem;--checkbox-height--medium:1.5rem}.dnb-checkbox{--checkbox-width--large:2rem;--checkbox-height--large:2rem;--checkbox-border-width:0.125rem;--checkbox-color-gfx-on:#000;--checkbox-color-gfx-off:#000;--checkbox-color-background-on:#fff;--checkbox-color-background-off:#fff;--checkbox-color-border-on:#000;--checkbox-color-border-off:#000;--checkbox-color-gfx--disabled:grey;--checkbox-color-background-on--disabled:#d3d3d3;--checkbox-color-background-off--disabled:#d3d3d3;--checkbox-color-border-on--disabled:grey;--checkbox-color-border-off--disabled:grey;--checkbox-color-background--active:#d3d3d3;--checkbox-color-border--active:transparent;--checkbox-color-gfx--hover:grey;--checkbox-color-background--hover:#fff;--checkbox-color-border-on--hover:grey;--checkbox-color-border-off--hover:grey;--checkbox-color-gfx--focus:grey;--checkbox-color-background--focus:#d3d3d3;--checkbox-color-gfx--error:#fff0f5;--checkbox-color-gfx--error-contrast:red;--checkbox-color-background-on--error:red;--checkbox-color-background--error-contrast:#fff0f5;--checkbox-color-border--error:red;--checkbox-bounding--medium:1.75,1.75;font-size:var(--font-size-small);line-height:var(--line-height-basis)}.dnb-checkbox,.dnb-checkbox__inner{display:inline-flex;flex-direction:column}.dnb-checkbox__inner{align-self:center}.dnb-checkbox__shell{align-items:center;display:flex;height:var(--checkbox-height--medium);justify-content:center;position:relative;-webkit-user-select:none;user-select:none;width:var(--checkbox-width--medium)}.dnb-checkbox--large .dnb-checkbox__shell{height:var(--checkbox-height--large);width:var(--checkbox-width--large)}.dnb-checkbox__button{border:var(--checkbox-border-width) solid transparent;display:inline-block}.dnb-checkbox__focus{display:none;outline:none}html[data-whatinput=keyboard] .dnb-checkbox__focus{--border-color:var(--focus-ring-color);--border-width:var(--focus-ring-width);border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-checkbox__button,.dnb-checkbox__focus{border-radius:.25rem;height:calc(var(--checkbox-height--medium) - .25rem);position:relative;width:calc(var(--checkbox-width--medium) - .25rem);z-index:4}.dnb-checkbox--large .dnb-checkbox__button,.dnb-checkbox--large .dnb-checkbox__focus{border-radius:.25rem;height:var(--checkbox-height--large);width:var(--checkbox-width--large)}.dnb-checkbox__gfx{shape-rendering:geometricprecision;height:calc(var(--checkbox-height--medium) - .5rem);left:auto;position:absolute;top:auto;transition:opacity .2s ease-out,transform .2s ease-out;width:calc(var(--checkbox-width--medium) - .5rem);z-index:5}.dnb-checkbox--large{line-height:var(--checkbox-height--large)}.dnb-checkbox--large .dnb-checkbox__gfx{height:calc(var(--checkbox-height--large) - .5rem);width:calc(var(--checkbox-width--large) - .5rem)}.dnb-checkbox__input{border:0;height:var(--checkbox-height--medium);left:auto;margin:0;opacity:0;padding:0;position:absolute;top:auto;transform:scale(var(--checkbox-bounding--medium));width:var(--checkbox-width--medium);z-index:6}.dnb-checkbox--large .dnb-checkbox__input{height:var(--checkbox-height--large);transform:scale(1);width:var(--checkbox-width--large)}.dnb-checkbox__input:not([disabled]){cursor:pointer}.dnb-checkbox .dnb-form-label{margin-bottom:0;margin-left:0;margin-right:0}.dnb-checkbox__order{align-items:baseline;display:inline-flex}.dnb-checkbox__suffix{order:4}.dnb-checkbox--label-position-left .dnb-checkbox__order .dnb-checkbox__inner{order:2}.dnb-checkbox--label-position-left .dnb-checkbox__order .dnb-form-label{order:1;padding-right:.5rem}.dnb-checkbox--label-position-left .dnb-checkbox__order .dnb-form-status{margin-top:.5rem;order:3}.dnb-checkbox--label-position-right .dnb-checkbox__order .dnb-checkbox__inner{order:1}.dnb-checkbox--label-position-right .dnb-checkbox__order .dnb-form-label{order:2;padding-left:.5rem}.dnb-checkbox--label-position-right .dnb-checkbox__order+.dnb-form-status{margin-top:.5rem;order:3;vertical-align:top}.dnb-checkbox__input:checked~.dnb-checkbox__gfx,.dnb-checkbox__input[data-checked=true]~.dnb-checkbox__gfx{color:var(--checkbox-color-gfx-on);opacity:1;transform:scale(1)}.dnb-checkbox__input:checked~.dnb-checkbox__button,.dnb-checkbox__input[data-checked=true]~.dnb-checkbox__button{background-color:var(--checkbox-color-background-on);border-color:var(--checkbox-color-border-on)}.dnb-checkbox__input:not(:checked):not([data-checked=true])~.dnb-checkbox__gfx{color:var(--checkbox-color-gfx-off);opacity:0;transform:scale(.8)}.dnb-checkbox__input:not(:checked):not([data-checked=true])~.dnb-checkbox__button{background-color:var(--checkbox-color-background-off);border-color:var(--checkbox-color-border-off)}.dnb-checkbox__input[disabled]:checked~.dnb-checkbox__button,.dnb-checkbox__input[disabled][data-checked=true]~.dnb-checkbox__button{background-color:var(--checkbox-color-background-on--disabled);border-color:var(--checkbox-color-border-on--disabled)}.dnb-checkbox__input[disabled]:checked~.dnb-checkbox__gfx,.dnb-checkbox__input[disabled][data-checked=true]~.dnb-checkbox__gfx{color:var(--checkbox-color-gfx--disabled)}.dnb-checkbox__input[disabled]:not(:checked):not([data-checked=true])~.dnb-checkbox__button{background-color:var(--checkbox-color-background-off--disabled);border-color:var(--checkbox-color-border-off--disabled)}.dnb-checkbox__input:not([disabled]):active~.dnb-checkbox__button{background-color:var(--checkbox-color-background--active);border-color:var(--checkbox-color-border--active)}.dnb-checkbox__input:not([disabled]):checked:active~.dnb-checkbox__gfx,.dnb-checkbox__input:not([disabled])[data-checked=true]:active~.dnb-checkbox__gfx{color:var(--checkbox-color-gfx-on)}.dnb-checkbox__input:not([disabled]):not(:focus):hover~.dnb-checkbox__button{background-color:var(--checkbox-color-background--hover);border-color:var(--checkbox-color-border-off--hover)}.dnb-checkbox__input:not([disabled]):not(:focus):hover~.dnb-checkbox__gfx{color:var(--checkbox-color-gfx--hover)}.dnb-checkbox__input:not([disabled]):not(:focus):checked:hover~.dnb-checkbox__button,.dnb-checkbox__input:not([disabled]):not(:focus)[data-checked=true]:hover~.dnb-checkbox__button{border-color:var(--checkbox-color-border-on--hover)}html[data-whatinput=keyboard] .dnb-checkbox__input:not([disabled]):focus~.dnb-checkbox__button{background-color:var(--checkbox-color-background--focus);border:none}html[data-whatinput=keyboard] .dnb-checkbox__input:not([disabled]):focus~.dnb-checkbox__gfx{color:var(--checkbox-color-gfx--focus)}.dnb-checkbox__input:not([disabled]):active~.dnb-checkbox__button .dnb-checkbox__focus,.dnb-checkbox__input:not([disabled]):focus~.dnb-checkbox__button .dnb-checkbox__focus{display:block}.dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):not(:active)~.dnb-checkbox__button{border:none}.dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):not(:active)~.dnb-checkbox__button .dnb-checkbox__focus{--border-color:var(--checkbox-color-border--error);--border-width:var(--focus-ring-width);border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color);display:block}.dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):hover~.dnb-checkbox__button{background-color:var(--checkbox-color-background--error-contrast)}.dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):hover~.dnb-checkbox__button[data-checked=true]{border-color:var(--checkbox-color-border--error)}.dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):hover~.dnb-checkbox__gfx{color:var(--checkbox-color-gfx--error-contrast)}.dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):not(:active):not(:hover)~.dnb-checkbox__gfx{color:var(--checkbox-color-gfx--error)}html[data-whatinput=keyboard] .dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):focus:hover~.dnb-checkbox__button,html[data-whatinput=keyboard] .dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):focus~.dnb-checkbox__button{--border-color:var(--checkbox-color-border--error);--border-width:calc(var(--focus-ring-width) + 0.0625rem);background-color:var(--checkbox-color-background--error-contrast);border:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}html[data-whatinput=keyboard] .dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):focus:hover~.dnb-checkbox__gfx{color:var(--checkbox-color-gfx--error-contrast)}.dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):not(:active):not(:hover):checked~.dnb-checkbox__button,.dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):not(:active):not(:hover)[data-checked=true]~.dnb-checkbox__button{background-color:var(--checkbox-color-background-on--error)}.dnb-checkbox.dnb-skeleton .dnb-checkbox__input[disabled]~.dnb-checkbox__button{border-color:var(--skeleton-color)}.dnb-checkbox.dnb-skeleton .dnb-checkbox__input[disabled]~.dnb-checkbox__button:before{border-radius:0}.dnb-checkbox.dnb-skeleton .dnb-checkbox__input[disabled]~.dnb-checkbox__gfx{color:var(--skeleton-color)}
1
+ :root{--checkbox-width--medium:1.5rem;--checkbox-height--medium:1.5rem}.dnb-checkbox{--checkbox-border-radius:0.25rem;--checkbox-gfx-border-radius__indeterminate:0.125rem;--checkbox-width--large:2rem;--checkbox-height--large:2rem;--checkbox-gfx-height__indeterminate:0.625rem;--checkbox-gfx-width__indeterminate:0.625rem;--checkbox-gfx-height__indeterminate--large:0.875rem;--checkbox-gfx-width__indeterminate--large:0.875rem;--checkbox-border-width:0.125rem;--checkbox-border-width--hover:0.125rem;--checkbox-color-gfx-on:#000;--checkbox-color-gfx-off:#fff;--checkbox-color-background-on:#fff;--checkbox-color-background-off:#fff;--checkbox-color-border-on:#000;--checkbox-color-border-off:#000;--checkbox-color-gfx--disabled:grey;--checkbox-color-background-on--disabled:#d3d3d3;--checkbox-color-background-off--disabled:#d3d3d3;--checkbox-color-border-on--disabled:grey;--checkbox-color-border-off--disabled:grey;--checkbox-color-gfx__indeterminate--disabled:grey;--checkbox-color-background--active:#d3d3d3;--checkbox-color-border--active:transparent;--checkbox-color-gfx--hover:grey;--checkbox-color-background--hover:#fff;--checkbox-color-border-on--hover:grey;--checkbox-color-border-off--hover:grey;--checkbox-color-gfx--focus:grey;--checkbox-color-background--focus:#d3d3d3;--checkbox-color-gfx--error:#fff0f5;--checkbox-color-gfx--error-contrast:red;--checkbox-color-background-on--error:red;--checkbox-color-background--error-contrast:#fff0f5;--checkbox-color-border--error:red;--checkbox-color-gfx-indeterminate--error:red;--checkbox-color-gfx--error--hover:red;--checkbox-color-background--error--hover:#fff0f5;--checkbox-color-border--error--hover:red;--checkbox-color-background-indeterminate:grey;--checkbox-color-gfx-indeterminate:#a9a9a9;--checkbox-color-background-indeterminate--active:grey;--checkbox-color-border-indeterminate--active:#fff;--checkbox-color-gfx-indeterminate--active:#fff;--checkbox-bounding--medium:1.75,1.75;font-size:var(--font-size-small);line-height:var(--line-height-basis)}.dnb-checkbox,.dnb-checkbox__inner{display:inline-flex;flex-direction:column}.dnb-checkbox__inner{align-self:center}.dnb-checkbox__shell{align-items:center;display:flex;height:var(--checkbox-height--medium);justify-content:center;position:relative;-webkit-user-select:none;user-select:none;width:var(--checkbox-width--medium)}.dnb-checkbox--large .dnb-checkbox__shell{height:var(--checkbox-height--large);width:var(--checkbox-width--large)}.dnb-checkbox__button{border:var(--checkbox-border-width) solid transparent;display:inline-block}.dnb-checkbox__focus{display:none;outline:none}html[data-whatinput=keyboard] .dnb-checkbox__focus{--border-color:var(--focus-ring-color);--border-width:var(--focus-ring-width);border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}.dnb-checkbox__button,.dnb-checkbox__focus{border-radius:var(--checkbox-border-radius);height:calc(var(--checkbox-height--medium) - .25rem);position:relative;width:calc(var(--checkbox-width--medium) - .25rem);z-index:4}.dnb-checkbox--large .dnb-checkbox__button,.dnb-checkbox--large .dnb-checkbox__focus{border-radius:var(--checkbox-border-radius);height:var(--checkbox-height--large);width:var(--checkbox-width--large)}.dnb-checkbox__gfx{shape-rendering:geometricprecision;height:calc(var(--checkbox-height--medium) - .5rem);left:auto;position:absolute;top:auto;transition:opacity .2s ease-out,transform .2s ease-out;width:calc(var(--checkbox-width--medium) - .5rem);z-index:5}.dnb-checkbox--large{line-height:var(--checkbox-height--large)}.dnb-checkbox--large .dnb-checkbox__gfx{height:calc(var(--checkbox-height--large) - .5rem);width:calc(var(--checkbox-width--large) - .5rem)}.dnb-checkbox__input{border:0;height:var(--checkbox-height--medium);left:auto;margin:0;opacity:0;padding:0;position:absolute;top:auto;transform:scale(var(--checkbox-bounding--medium));width:var(--checkbox-width--medium);z-index:6}.dnb-checkbox--large .dnb-checkbox__input{height:var(--checkbox-height--large);transform:scale(1);width:var(--checkbox-width--large)}.dnb-checkbox__input:not([disabled]){cursor:pointer}.dnb-checkbox .dnb-form-label{margin-bottom:0;margin-left:0;margin-right:0}.dnb-checkbox__order{align-items:baseline;display:inline-flex}.dnb-checkbox__suffix{order:4}.dnb-checkbox--label-position-left .dnb-checkbox__order .dnb-checkbox__inner{order:2}.dnb-checkbox--label-position-left .dnb-checkbox__order .dnb-form-label{order:1;padding-right:.5rem}.dnb-checkbox--label-position-left .dnb-checkbox__order .dnb-form-status{margin-top:.5rem;order:3}.dnb-checkbox--label-position-right .dnb-checkbox__order .dnb-checkbox__inner{order:1}.dnb-checkbox--label-position-right .dnb-checkbox__order .dnb-form-label{order:2;padding-left:.5rem}.dnb-checkbox--label-position-right .dnb-checkbox__order+.dnb-form-status{margin-top:.5rem;order:3;vertical-align:top}.dnb-checkbox__input:checked~.dnb-checkbox__gfx,.dnb-checkbox__input[data-checked=true]~.dnb-checkbox__gfx{color:var(--checkbox-color-gfx-on);opacity:1;transform:scale(1)}.dnb-checkbox__input:checked~.dnb-checkbox__button,.dnb-checkbox__input[data-checked=true]~.dnb-checkbox__button{background-color:var(--checkbox-color-background-on);border-color:var(--checkbox-color-border-on)}.dnb-checkbox__input:not([disabled]):not(:checked):not([data-checked=true])~.dnb-checkbox__gfx{color:var(--checkbox-color-gfx-off);opacity:0;transform:scale(.8)}.dnb-checkbox__input:not(:checked):not([data-checked=true])~.dnb-checkbox__button{background-color:var(--checkbox-color-background-off);border-color:var(--checkbox-color-border-off);transition:background-color .1s ease-out}.dnb-checkbox__input~.dnb-checkbox__indeterminate{background-color:var(--checkbox-color-gfx-indeterminate);border-radius:var(--checkbox-gfx-border-radius__indeterminate);height:var(--checkbox-gfx-height__indeterminate);opacity:0;position:absolute;transform:scale(.85);transition:opacity .2s ease-out,transform .2s ease-out;width:var(--checkbox-gfx-width__indeterminate);z-index:5}.dnb-checkbox__input:indeterminate~.dnb-checkbox__indeterminate{opacity:1;transform:scale(1)}.dnb-checkbox__input:indeterminate:checked~.dnb-checkbox__button{background-color:transparent;border-color:var(--checkbox-color-border-off)}.dnb-checkbox__input:indeterminate:checked:hover~.dnb-checkbox__gfx,.dnb-checkbox__input:indeterminate:checked~.dnb-checkbox__gfx,.dnb-checkbox__input:indeterminate:hover~.dnb-checkbox__gfx{color:transparent}.dnb-checkbox--large .dnb-checkbox__input:indeterminate~.dnb-checkbox__indeterminate{height:var(--checkbox-gfx-height__indeterminate--large);width:var(--checkbox-gfx-width__indeterminate--large)}.dnb-checkbox__input[disabled]:checked~.dnb-checkbox__button,.dnb-checkbox__input[disabled][data-checked=true]~.dnb-checkbox__button{background-color:var(--checkbox-color-background-on--disabled);border-color:var(--checkbox-color-border-on--disabled)}.dnb-checkbox__input[disabled]:checked~.dnb-checkbox__gfx,.dnb-checkbox__input[disabled][data-checked=true]~.dnb-checkbox__gfx{color:var(--checkbox-color-gfx--disabled)}.dnb-checkbox__input[disabled]:not(:checked):not([data-checked=true])~.dnb-checkbox__button{background-color:var(--checkbox-color-background-off--disabled);border-color:var(--checkbox-color-border-off--disabled)}.dnb-checkbox__input[disabled]:indeterminate~.dnb-checkbox__indeterminate{background-color:var(--checkbox-color-gfx__indeterminate--disabled)}.dnb-checkbox__input[disabled]:indeterminate~.dnb-checkbox__gfx{color:transparent}.dnb-checkbox__input:not([disabled]):active~.dnb-checkbox__button{background-color:var(--checkbox-color-background--active);border-color:var(--checkbox-color-border--active)}.dnb-checkbox__input:not([disabled]):checked:active~.dnb-checkbox__gfx,.dnb-checkbox__input:not([disabled])[data-checked=true]:active~.dnb-checkbox__gfx{color:var(--checkbox-color-gfx-on)}.dnb-checkbox__input:not([disabled]):indeterminate:active~.dnb-checkbox__button{background-color:var(--checkbox-color-background-indeterminate--active);border-color:var(--checkbox-color-border-indeterminate--active)}.dnb-checkbox__input:not([disabled]):indeterminate:active~.dnb-checkbox__indeterminate{background-color:var(--checkbox-color-gfx-indeterminate--active)}.dnb-checkbox__input:not([disabled]):not(:active):hover~.dnb-checkbox__button{background-color:var(--checkbox-color-background--hover);border-color:var(--checkbox-color-border-off--hover)}.dnb-checkbox__input:not([disabled]):hover~.dnb-checkbox__gfx{color:var(--checkbox-color-gfx--hover)}.dnb-checkbox__input:not([disabled]):checked:hover~.dnb-checkbox__button,.dnb-checkbox__input:not([disabled])[data-checked=true]:hover~.dnb-checkbox__button{border:var(--checkbox-border-width--hover) solid var(--checkbox-color-border-on--hover)}html[data-whatinput=keyboard] .dnb-checkbox__input:not([disabled]):focus-visible~.dnb-checkbox__button{background-color:var(--checkbox-color-background--focus);border:none}html[data-whatinput=keyboard] .dnb-checkbox__input:not([disabled]):focus-visible~.dnb-checkbox__gfx{color:var(--checkbox-color-gfx--focus)}.dnb-checkbox__input:not([disabled]):active~.dnb-checkbox__button .dnb-checkbox__focus,.dnb-checkbox__input:not([disabled]):focus-visible~.dnb-checkbox__button .dnb-checkbox__focus{display:block}.dnb-checkbox__input:not([disabled]):focus-visible~.dnb-checkbox__indeterminate{background-color:var(--checkbox-color-gfx--focus)}.dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):not(:active)~.dnb-checkbox__button{border:none}.dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):not(:active)~.dnb-checkbox__button .dnb-checkbox__focus{--border-color:var(--checkbox-color-border--error);--border-width:var(--checkbox-border-width);border-color:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color);display:block}.dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):hover~.dnb-checkbox__button{background-color:var(--checkbox-color-background--error--hover)}.dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):hover~.dnb-checkbox__button[data-checked=true]{border-color:var(--checkbox-color-border--error--hover)}.dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):hover~.dnb-checkbox__gfx{color:var(--checkbox-color-gfx--error--hover)}.dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):not(:active):not(:hover)~.dnb-checkbox__gfx{color:var(--checkbox-color-gfx--error)}html[data-whatinput=keyboard] .dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):focus:hover~.dnb-checkbox__button,html[data-whatinput=keyboard] .dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):focus~.dnb-checkbox__button{--border-color:var(--checkbox-color-border--error);--border-width:calc(var(--checkbox-border-width--hover));background-color:var(--checkbox-color-background--error-contrast);border:transparent;box-shadow:0 0 0 var(--border-width) var(--border-color)}html[data-whatinput=keyboard] .dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):focus:hover~.dnb-checkbox__gfx{color:var(--checkbox-color-gfx--error-contrast)}.dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):not(:active):not(:hover):checked~.dnb-checkbox__button,.dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):not(:active):not(:hover)[data-checked=true]~.dnb-checkbox__button{background-color:var(--checkbox-color-background-on--error)}.dnb-checkbox__status--error .dnb-checkbox__input:indeterminate:not([disabled]):not(:active):not(:hover)~.dnb-checkbox__gfx{background-color:var(--checkbox-color-gfx--error-contrast);border-radius:var(--checkbox-border-radius);color:var(--checkbox-color-gfx--error-contrast)}.dnb-checkbox__status--error .dnb-checkbox__input:indeterminate:not(:active):not(:hover)~.dnb-checkbox__indeterminate{background-color:var(--checkbox-color-gfx-indeterminate--error)}.dnb-checkbox__status--error .dnb-checkbox__input:not(:indeterminate)~.dnb-checkbox__indeterminate{background-color:var(--checkbox-color-gfx-indeterminate--error)}.dnb-checkbox__status--error .dnb-checkbox__input:indeterminate:hover:not(:active)~.dnb-checkbox__indeterminate{background-color:var(--checkbox-color-gfx--error--hover)}.dnb-checkbox__status--error .dnb-checkbox__input:not([disabled]):not(:active):hover~.dnb-checkbox__gfx{color:var(--checkbox-color-gfx--error--hover)}.dnb-checkbox.dnb-skeleton .dnb-checkbox__input[disabled]~.dnb-checkbox__button{border-color:var(--skeleton-color)}.dnb-checkbox.dnb-skeleton .dnb-checkbox__input[disabled]~.dnb-checkbox__button:before{border-radius:0}.dnb-checkbox.dnb-skeleton .dnb-checkbox__input[disabled]~.dnb-checkbox__gfx{color:var(--skeleton-color)}.dnb-checkbox.dnb-skeleton .dnb-checkbox__input[disabled]~.dnb-checkbox__indeterminate{background-color:var(--skeleton-color)}
@@ -11,12 +11,19 @@
11
11
  }
12
12
 
13
13
  .dnb-checkbox {
14
+ --checkbox-border-radius: 0.25rem;
15
+ --checkbox-gfx-border-radius__indeterminate: 0.125rem;
14
16
  --checkbox-width--large: 2rem;
15
17
  --checkbox-height--large: 2rem;
18
+ --checkbox-gfx-height__indeterminate: 0.625rem;
19
+ --checkbox-gfx-width__indeterminate: 0.625rem;
20
+ --checkbox-gfx-height__indeterminate--large: 0.875rem;
21
+ --checkbox-gfx-width__indeterminate--large: 0.875rem;
16
22
  --checkbox-border-width: 0.125rem;
23
+ --checkbox-border-width--hover: 0.125rem;
17
24
  // Normal state
18
25
  --checkbox-color-gfx-on: black;
19
- --checkbox-color-gfx-off: black;
26
+ --checkbox-color-gfx-off: white;
20
27
  --checkbox-color-background-on: white;
21
28
  --checkbox-color-background-off: white;
22
29
  --checkbox-color-border-on: black;
@@ -27,6 +34,7 @@
27
34
  --checkbox-color-background-off--disabled: lightgrey;
28
35
  --checkbox-color-border-on--disabled: grey;
29
36
  --checkbox-color-border-off--disabled: grey;
37
+ --checkbox-color-gfx__indeterminate--disabled: grey;
30
38
  // Active state
31
39
  --checkbox-color-background--active: lightgrey;
32
40
  --checkbox-color-border--active: transparent;
@@ -44,6 +52,18 @@
44
52
  --checkbox-color-background-on--error: red;
45
53
  --checkbox-color-background--error-contrast: lavenderblush;
46
54
  --checkbox-color-border--error: red;
55
+ --checkbox-color-gfx-indeterminate--error: red;
56
+ --checkbox-color-gfx--error--hover: red;
57
+ --checkbox-color-background--error--hover: lavenderblush;
58
+ --checkbox-color-border--error--hover: red;
59
+ // Indeterminate state
60
+ --checkbox-color-background-indeterminate: grey;
61
+ --checkbox-color-gfx-indeterminate: darkgray;
62
+ // Indeterminate Active state
63
+ --checkbox-color-background-indeterminate--active: grey;
64
+ --checkbox-color-border-indeterminate--active: white;
65
+ --checkbox-color-gfx-indeterminate--active: white;
66
+
47
67
  // Bounding box
48
68
  --checkbox-bounding--medium: 1.75, 1.75;
49
69
 
@@ -96,13 +116,13 @@
96
116
  width: calc(var(--checkbox-width--medium) - 0.25rem);
97
117
  height: calc(var(--checkbox-height--medium) - 0.25rem);
98
118
 
99
- border-radius: 0.25rem;
119
+ border-radius: var(--checkbox-border-radius);
100
120
 
101
121
  .dnb-checkbox--large & {
102
122
  width: var(--checkbox-width--large);
103
123
  height: var(--checkbox-height--large);
104
124
 
105
- border-radius: 0.25rem;
125
+ border-radius: var(--checkbox-border-radius);
106
126
  }
107
127
  }
108
128
 
@@ -118,7 +138,6 @@
118
138
  width: calc(var(--checkbox-width--medium) - 0.5rem);
119
139
  height: calc(var(--checkbox-height--medium) - 0.5rem);
120
140
 
121
- // fill: currentColor; // old svg fix
122
141
  shape-rendering: geometricprecision;
123
142
  transition:
124
143
  opacity 200ms ease-out,
@@ -130,8 +149,6 @@
130
149
  }
131
150
 
132
151
  &--large &__gfx {
133
- // width: var(--checkbox-width--large); // old svg size
134
- // height: var(--checkbox-height--large); // old svg size
135
152
  width: calc(var(--checkbox-width--large) - 0.5rem);
136
153
  height: calc(var(--checkbox-height--large) - 0.5rem);
137
154
  }
@@ -160,7 +177,8 @@
160
177
  width: var(--checkbox-width--large);
161
178
  height: var(--checkbox-height--large);
162
179
 
163
- transform: scale(1); // reset scale
180
+ // reset scale
181
+ transform: scale(1);
164
182
  }
165
183
 
166
184
  &__input:not([disabled]) {
@@ -234,6 +252,7 @@
234
252
  transform: scale(1);
235
253
  color: var(--checkbox-color-gfx-on);
236
254
  }
255
+
237
256
  &__input:checked ~ &__button,
238
257
  &__input[data-checked='true'] ~ &__button {
239
258
  background-color: var(--checkbox-color-background-on);
@@ -241,15 +260,58 @@
241
260
  }
242
261
 
243
262
  // Off
244
- &__input:not(:checked):not([data-checked='true']) ~ &__gfx {
263
+ &__input:not([disabled]):not(:checked):not([data-checked='true'])
264
+ ~ &__gfx {
245
265
  opacity: 0;
246
266
  transform: scale(0.8);
247
267
  // Needed during transition
248
268
  color: var(--checkbox-color-gfx-off);
249
269
  }
270
+
250
271
  &__input:not(:checked):not([data-checked='true']) ~ &__button {
251
272
  background-color: var(--checkbox-color-background-off);
252
273
  border-color: var(--checkbox-color-border-off);
274
+
275
+ transition: background-color 100ms ease-out;
276
+ }
277
+
278
+ // Show the icon when indeterminate is true
279
+ &__input ~ &__indeterminate {
280
+ position: absolute;
281
+ z-index: 5;
282
+
283
+ width: var(--checkbox-gfx-width__indeterminate);
284
+ height: var(--checkbox-gfx-height__indeterminate);
285
+
286
+ transform: scale(0.85);
287
+ opacity: 0;
288
+
289
+ background-color: var(--checkbox-color-gfx-indeterminate);
290
+ border-radius: var(--checkbox-gfx-border-radius__indeterminate);
291
+
292
+ transition:
293
+ opacity 200ms ease-out,
294
+ transform 200ms ease-out;
295
+ }
296
+
297
+ &__input:indeterminate ~ &__indeterminate {
298
+ transform: scale(1);
299
+ opacity: 1;
300
+ }
301
+
302
+ &__input:indeterminate:checked ~ &__button {
303
+ background-color: transparent;
304
+ border-color: var(--checkbox-color-border-off);
305
+ }
306
+ &__input:indeterminate:hover ~ &__gfx,
307
+ &__input:indeterminate:checked ~ &__gfx,
308
+ &__input:indeterminate:checked:hover ~ &__gfx {
309
+ color: transparent;
310
+ }
311
+
312
+ &--large &__input:indeterminate ~ &__indeterminate {
313
+ width: var(--checkbox-gfx-width__indeterminate--large);
314
+ height: var(--checkbox-gfx-height__indeterminate--large);
253
315
  }
254
316
 
255
317
  /** Disabled state **/
@@ -260,6 +322,7 @@
260
322
  background-color: var(--checkbox-color-background-on--disabled);
261
323
  border-color: var(--checkbox-color-border-on--disabled);
262
324
  }
325
+
263
326
  &__input[disabled]:checked ~ &__gfx,
264
327
  &__input[disabled][data-checked='true'] ~ &__gfx {
265
328
  color: var(--checkbox-color-gfx--disabled);
@@ -271,6 +334,16 @@
271
334
  background-color: var(--checkbox-color-background-off--disabled);
272
335
  }
273
336
 
337
+ // indeterminate
338
+ &__input[disabled]:indeterminate ~ &__indeterminate {
339
+ background-color: var(--checkbox-color-gfx__indeterminate--disabled);
340
+ }
341
+
342
+ &__input[disabled]:indeterminate ~ &__gfx {
343
+ // hide check gfx
344
+ color: transparent;
345
+ }
346
+
274
347
  /** Active state **/
275
348
 
276
349
  // General
@@ -285,49 +358,69 @@
285
358
  color: var(--checkbox-color-gfx-on);
286
359
  }
287
360
 
361
+ // Indeterminate
362
+ &__input:not([disabled]):indeterminate:active ~ &__button {
363
+ background-color: var(
364
+ --checkbox-color-background-indeterminate--active
365
+ );
366
+ border-color: var(--checkbox-color-border-indeterminate--active);
367
+ }
368
+
369
+ &__input:not([disabled]):indeterminate:active ~ &__indeterminate {
370
+ background-color: var(--checkbox-color-gfx-indeterminate--active);
371
+ }
372
+
288
373
  /** Hover state **/
289
374
 
290
375
  // General
291
- &__input:not([disabled]):not(:focus):hover ~ &__button {
376
+ &__input:not([disabled]):not(:active):hover ~ &__button {
292
377
  border-color: var(--checkbox-color-border-off--hover);
293
378
  background-color: var(--checkbox-color-background--hover);
294
379
  }
295
- &__input:not([disabled]):not(:focus):hover ~ &__gfx {
380
+
381
+ &__input:not([disabled]):hover ~ &__gfx {
296
382
  color: var(--checkbox-color-gfx--hover);
297
383
  }
298
384
 
299
385
  // On
300
- &__input:not([disabled]):not(:focus):checked:hover ~ &__button,
301
- &__input:not([disabled]):not(:focus)[data-checked='true']:hover
302
- ~ &__button {
303
- border-color: var(--checkbox-color-border-on--hover);
386
+ &__input:not([disabled]):checked:hover ~ &__button,
387
+ &__input:not([disabled])[data-checked='true']:hover ~ &__button {
388
+ border: var(--checkbox-border-width--hover) solid
389
+ var(--checkbox-color-border-on--hover);
304
390
  }
305
391
 
306
392
  /** Focus state **/
307
393
 
308
394
  // General
309
- &__input:not([disabled]):focus ~ &__button {
395
+ &__input:not([disabled]):focus-visible ~ &__button {
310
396
  html[data-whatinput='keyboard'] & {
311
397
  border: none;
312
398
  background-color: var(--checkbox-color-background--focus);
313
399
  }
314
400
  }
315
- &__input:not([disabled]):focus ~ &__gfx {
401
+
402
+ &__input:not([disabled]):focus-visible ~ &__gfx {
316
403
  html[data-whatinput='keyboard'] & {
317
404
  color: var(--checkbox-color-gfx--focus);
318
405
  }
319
406
  }
320
- &__input:not([disabled]):focus ~ &__button &__focus,
407
+
408
+ &__input:not([disabled]):focus-visible ~ &__button &__focus,
321
409
  &__input:not([disabled]):active ~ &__button &__focus {
322
410
  display: block;
323
411
  }
324
412
 
413
+ &__input:not([disabled]):focus-visible ~ &__indeterminate {
414
+ background-color: var(--checkbox-color-gfx--focus);
415
+ }
416
+
325
417
  /** Error state **/
326
418
 
327
419
  // General
328
420
  &__status--error &__input:not([disabled]):not(:active) ~ &__button {
329
421
  border: none;
330
422
  }
423
+
331
424
  &__status--error
332
425
  &__input:not([disabled]):not(:active)
333
426
  ~ &__button
@@ -335,24 +428,29 @@
335
428
  display: block;
336
429
  @include fakeBorder(
337
430
  var(--checkbox-color-border--error),
338
- var(--focus-ring-width)
431
+ var(--checkbox-border-width)
339
432
  );
340
433
  }
434
+
341
435
  &__status--error &__input:not([disabled]):hover ~ &__button {
342
436
  &[data-checked='true'] {
343
437
  // Needed during transition
344
- border-color: var(--checkbox-color-border--error);
438
+ border-color: var(--checkbox-color-border--error--hover);
345
439
  }
346
- background-color: var(--checkbox-color-background--error-contrast);
440
+
441
+ background-color: var(--checkbox-color-background--error--hover);
347
442
  }
443
+
348
444
  &__status--error &__input:not([disabled]):hover ~ &__gfx {
349
- color: var(--checkbox-color-gfx--error-contrast);
445
+ color: var(--checkbox-color-gfx--error--hover);
350
446
  }
447
+
351
448
  &__status--error
352
449
  &__input:not([disabled]):not(:active):not(:hover)
353
450
  ~ &__gfx {
354
451
  color: var(--checkbox-color-gfx--error);
355
452
  }
453
+
356
454
  &__status--error &__input:not([disabled]):focus ~ &__button,
357
455
  &__status--error &__input:not([disabled]):focus:hover ~ &__button {
358
456
  html[data-whatinput='keyboard'] & {
@@ -360,10 +458,11 @@
360
458
  background-color: var(--checkbox-color-background--error-contrast);
361
459
  @include fakeBorder(
362
460
  var(--checkbox-color-border--error),
363
- calc(var(--focus-ring-width) + 0.0625rem)
461
+ calc(var(--checkbox-border-width--hover))
364
462
  );
365
463
  }
366
464
  }
465
+
367
466
  &__status--error &__input:not([disabled]):focus:hover ~ &__gfx {
368
467
  html[data-whatinput='keyboard'] & {
369
468
  color: var(--checkbox-color-gfx--error-contrast);
@@ -380,14 +479,51 @@
380
479
  background-color: var(--checkbox-color-background-on--error);
381
480
  }
382
481
 
482
+ &__status--error
483
+ &__input:indeterminate:not([disabled]):not(:active):not(:hover)
484
+ ~ &__gfx {
485
+ // used for animation
486
+ color: var(--checkbox-color-gfx--error-contrast);
487
+ background-color: var(--checkbox-color-gfx--error-contrast);
488
+ border-radius: var(--checkbox-border-radius);
489
+ }
490
+
491
+ &__status--error
492
+ &__input:indeterminate:not(:active):not(:hover)
493
+ ~ &__indeterminate {
494
+ background-color: var(--checkbox-color-gfx-indeterminate--error);
495
+ }
496
+
497
+ &__status--error &__input:not(:indeterminate) ~ &__indeterminate {
498
+ // used for animation
499
+ background-color: var(--checkbox-color-gfx-indeterminate--error);
500
+ }
501
+
502
+ &__status--error
503
+ &__input:indeterminate:hover:not(:active)
504
+ ~ &__indeterminate {
505
+ background-color: var(--checkbox-color-gfx--error--hover);
506
+ }
507
+
508
+ &__status--error &__input:not([disabled]):not(:active):hover ~ &__gfx {
509
+ color: var(--checkbox-color-gfx--error--hover);
510
+ }
511
+
383
512
  &.dnb-skeleton &__input[disabled] ~ &__button {
384
513
  &::before {
385
514
  border-radius: 0;
386
515
  }
516
+
387
517
  border-color: var(--skeleton-color);
388
518
  }
519
+
389
520
  &.dnb-skeleton &__input[disabled] ~ &__gfx {
390
521
  color: var(--skeleton-color);
391
522
  }
523
+
524
+ &.dnb-skeleton &__input[disabled] ~ &__indeterminate {
525
+ background-color: var(--skeleton-color);
526
+ }
527
+
392
528
  // stylelint-enable no-descending-specificity
393
529
  }
@@ -3,17 +3,20 @@
3
3
  *
4
4
  */
5
5
  .dnb-checkbox {
6
+ --checkbox-border-width: 0.125rem;
7
+ --checkbox-border-width--hover: 0.125rem;
6
8
  --checkbox-color-gfx-on: var(--sb-color-violet-light);
7
- --checkbox-color-gfx-off: var(--sb-color-violet-light);
9
+ --checkbox-color-gfx-off: var(--sb-color-white);
8
10
  --checkbox-color-background-on: var(--sb-color-white);
9
11
  --checkbox-color-background-off: var(--sb-color-white);
10
12
  --checkbox-color-border-on: var(--sb-color-violet);
11
13
  --checkbox-color-border-off: var(--sb-color-violet);
12
14
  --checkbox-color-gfx--disabled: var(--sb-color-gray-dark);
13
- --checkbox-color-background-on--disabled: var(--sb-color-gray-light);
14
15
  --checkbox-color-background-off--disabled: var(--sb-color-gray-light);
16
+ --checkbox-color-background-on--disabled: var(--sb-color-gray-light);
15
17
  --checkbox-color-border-on--disabled: var(--sb-color-gray-dark);
16
18
  --checkbox-color-border-off--disabled: var(--sb-color-gray-dark);
19
+ --checkbox-color-gfx__indeterminate--disabled: var(--sb-color-gray-dark);
17
20
  --checkbox-color-background--active: var(--sb-color-white);
18
21
  --checkbox-color-border--active: var(--sb-color-gray);
19
22
  --checkbox-color-gfx--hover: var(--sb-color-violet-light);
@@ -29,4 +32,21 @@
29
32
  --sb-color-magenta-light-2
30
33
  );
31
34
  --checkbox-color-border--error: var(--sb-color-magenta);
35
+ --checkbox-color-gfx--error--hover: var(--sb-color-magenta);
36
+ --checkbox-color-background--error--hover: var(
37
+ --sb-color-magenta-light-3
38
+ );
39
+ --checkbox-color-border--error--hover: transparent;
40
+ --checkbox-color-background-indeterminate: var(--sb-color-white);
41
+ --checkbox-color-gfx-indeterminate: var(--sb-color-violet);
42
+ --checkbox-color-background-indeterminate--active: var(--color-white);
43
+ --checkbox-color-border-indeterminate--active: var(--sb-color-gray);
44
+ --checkbox-color-gfx-indeterminate--active: var(--sb-color-violet);
45
+ --checkbox-color-gfx-indeterminate--error: var(--sb-color-magenta);
46
+ --checkbox-gfx-width__indeterminate: 0.875rem;
47
+ --checkbox-gfx-height__indeterminate: 0.125rem;
48
+ --checkbox-gfx-height__indeterminate--large: 0.25rem;
49
+ --checkbox-gfx-width__indeterminate--large: 1.5rem;
50
+ --checkbox-border-radius: 0.125rem;
51
+ --checkbox-gfx-border-radius__indeterminate: 0rem;
32
52
  }