@digdir/designsystemet-css 0.6.1-alpha.0 → 0.7.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 (80) hide show
  1. package/LICENSE +1 -1
  2. package/accordion.css +132 -0
  3. package/box.css +73 -0
  4. package/button.css +4 -4
  5. package/card.css +157 -0
  6. package/checkbox.css +175 -0
  7. package/chip.css +173 -0
  8. package/combobox.css +344 -0
  9. package/dist/accordion.css +1 -0
  10. package/dist/alert.css +1 -1
  11. package/dist/box.css +1 -0
  12. package/dist/button.css +1 -1
  13. package/dist/card.css +1 -0
  14. package/dist/checkbox.css +1 -0
  15. package/dist/chip.css +1 -0
  16. package/dist/combobox.css +1 -0
  17. package/dist/divider.css +1 -0
  18. package/dist/dropdownmenu.css +1 -0
  19. package/dist/error-message.css +1 -0
  20. package/dist/error-summary.css +1 -0
  21. package/dist/fieldset.css +1 -0
  22. package/dist/heading.css +1 -0
  23. package/dist/helptext.css +1 -0
  24. package/dist/index.css +1 -1
  25. package/dist/ingress.css +1 -1
  26. package/dist/label.css +1 -0
  27. package/dist/link.css +1 -0
  28. package/dist/list.css +1 -0
  29. package/dist/modal.css +1 -0
  30. package/dist/native-select.css +1 -0
  31. package/dist/pagination.css +1 -0
  32. package/dist/paragraph.css +1 -0
  33. package/dist/popover.css +1 -0
  34. package/dist/radio.css +1 -0
  35. package/dist/react-css-modules.css +1 -1
  36. package/dist/search.css +1 -0
  37. package/dist/skeleton.css +1 -0
  38. package/dist/skiplink.css +1 -1
  39. package/dist/spinner.css +1 -0
  40. package/dist/switch.css +1 -0
  41. package/dist/table.css +1 -0
  42. package/dist/tabs.css +1 -0
  43. package/dist/tag.css +1 -0
  44. package/dist/textarea.css +1 -0
  45. package/dist/textfield.css +1 -0
  46. package/dist/togglegroup.css +1 -0
  47. package/dist/tooltip.css +1 -0
  48. package/dist/utils.css +1 -1
  49. package/divider.css +18 -0
  50. package/dropdownmenu.css +46 -0
  51. package/error-message.css +43 -0
  52. package/error-summary.css +15 -0
  53. package/fieldset.css +41 -0
  54. package/heading.css +68 -0
  55. package/helptext.css +58 -0
  56. package/index.css +35 -0
  57. package/ingress.css +1 -1
  58. package/label.css +46 -0
  59. package/link.css +36 -0
  60. package/list.css +18 -0
  61. package/modal.css +106 -0
  62. package/native-select.css +92 -0
  63. package/package.json +3 -3
  64. package/pagination.css +69 -0
  65. package/paragraph.css +82 -0
  66. package/popover.css +79 -0
  67. package/radio.css +171 -0
  68. package/react-css-modules.css +1 -2846
  69. package/search.css +170 -0
  70. package/skeleton.css +59 -0
  71. package/spinner.css +75 -0
  72. package/switch.css +216 -0
  73. package/table.css +136 -0
  74. package/tabs.css +103 -0
  75. package/tag.css +72 -0
  76. package/textarea.css +80 -0
  77. package/textfield.css +150 -0
  78. package/togglegroup.css +24 -0
  79. package/tooltip.css +23 -0
  80. package/utils.css +16 -0
package/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2023 Digitaliseringsdirektoratet (Digdir)
1
+ Copyright 2024 Digitaliseringsdirektoratet (Digdir)
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
4
 
package/accordion.css ADDED
@@ -0,0 +1,132 @@
1
+ @layer fds.accordion {
2
+ .fds-accordion {
3
+ --fds-accordion-border-radius: var(--fds-border_radius-interactive);
4
+ --fds-accordion-border-color: var(--fds-semantic-border-neutral-subtle);
5
+
6
+ border-bottom: 1px solid var(--fds-semantic-border-neutral-subtle);
7
+ box-sizing: border-box;
8
+ }
9
+
10
+ .fds-accordion--border {
11
+ border: 1px solid var(--fds-accordion-border-color);
12
+ border-radius: var(--fds-accordion-border-radius);
13
+ }
14
+
15
+ .fds-accordion__expand-icon {
16
+ border-radius: var(--fds-border_radius-interactive);
17
+ }
18
+
19
+ .fds-accordion__content {
20
+ padding: var(--fds-spacing-5, 1rem);
21
+ overflow: hidden;
22
+ text-overflow: ellipsis;
23
+ }
24
+
25
+ .fds-accordion__header {
26
+ margin: 0;
27
+ }
28
+
29
+ .fds-accordion__button {
30
+ width: 100%;
31
+ display: flex;
32
+ justify-content: flex-start;
33
+ align-items: center;
34
+ gap: var(--fds-spacing-2);
35
+ margin: 0;
36
+ text-align: left;
37
+ cursor: pointer;
38
+ border: none;
39
+ border-top: 1px solid var(--fds-semantic-border-neutral-subtle);
40
+ padding: var(--fds-spacing-4);
41
+ }
42
+
43
+ .fds-accordion--border .fds-accordion__button {
44
+ border-radius: var(--fds-accordion-border-radius);
45
+ }
46
+
47
+
48
+ .fds-accordion__item:focus-within {
49
+ position: relative;
50
+ }
51
+
52
+ .fds-accordion__item:where(.fds-accordion__item--open) .fds-accordion__expand-icon {
53
+ transform: rotateZ(180deg);
54
+ }
55
+
56
+ .fds-accordion--neutral,
57
+ .fds-accordion--neutral .fds-accordion__button {
58
+ background-color: var(--fds-semantic-surface-neutral-default);
59
+ }
60
+
61
+ .fds-accordion--subtle,
62
+ .fds-accordion--subtle .fds-accordion__button {
63
+ background-color: var(--fds-semantic-surface-neutral-subtle);
64
+ }
65
+
66
+ .fds-accordion--first,
67
+ .fds-accordion--first .fds-accordion__button {
68
+ --fds-accordion-border-color: var(--fds-semantic-border-first-default);
69
+
70
+ background: var(--fds-semantic-surface-first-light);
71
+ }
72
+
73
+
74
+ .fds-accordion--second,
75
+ .fds-accordion--second .fds-accordion__button {
76
+ --fds-accordion-border-color: var(--fds-semantic-border-second-default);
77
+
78
+ background: var(--fds-semantic-surface-second-light);
79
+ }
80
+
81
+
82
+ .fds-accordion--third,
83
+ .fds-accordion--third .fds-accordion__button {
84
+ --fds-accordion-border-color: var(--fds-semantic-border-third-default);
85
+
86
+ background: var(--fds-semantic-surface-third-light);
87
+ }
88
+
89
+ .fds-accordion--first .fds-accordion__item:where(.fds-accordion__item--open) .fds-accordion__button,
90
+ .fds-accordion--second .fds-accordion__item:where(.fds-accordion__item--open) .fds-accordion__button,
91
+ .fds-accordion--third .fds-accordion__item:where(.fds-accordion__item--open) .fds-accordion__button {
92
+ background-color: rgba(0 0 0 / 0.03);
93
+ }
94
+
95
+ .fds-accordion--neutral .fds-accordion__item:where(.fds-accordion__item--open) .fds-accordion__button,
96
+ .fds-accordion--subtle .fds-accordion__item:where(.fds-accordion__item--open) .fds-accordion__button {
97
+ background-color: var(--fds-semantic-surface-action-first-no_fill-hover);
98
+ }
99
+
100
+ .fds-accordion--border .fds-accordion__item:first-child .fds-accordion__button {
101
+ border-top: 0;
102
+ }
103
+
104
+ .fds-accordion--first .fds-accordion__item:not(:first-child) .fds-accordion__button,
105
+ .fds-accordion--second .fds-accordion__item:not(:first-child) .fds-accordion__button,
106
+ .fds-accordion--third .fds-accordion__item:not(:first-child) .fds-accordion__button {
107
+ border-top: 1px solid var(--fds-semantic-surface-neutral-default);
108
+ }
109
+
110
+ @media (hover: hover) and (pointer: fine) {
111
+ .fds-accordion__button:hover .fds-accordion__expand-icon {
112
+ background-color: rgba(0 0 0 / 0.1);
113
+ }
114
+
115
+ .fds-accordion--neutral .fds-accordion__button:hover,
116
+ .fds-accordion--subtle .fds-accordion__button:hover {
117
+ background-color: var(--fds-semantic-surface-neutral-subtle-hover);
118
+ }
119
+
120
+ .fds-accordion--first .fds-accordion__button:hover {
121
+ background-color: var(--fds-semantic-surface-first-light-hover);
122
+ }
123
+
124
+ .fds-accordion--second .fds-accordion__button:hover {
125
+ background-color: var(--fds-semantic-surface-second-light-hover);
126
+ }
127
+
128
+ .fds-accordion--third .fds-accordion__button:hover {
129
+ background-color: var(--fds-semantic-surface-third-light-hover);
130
+ }
131
+ }
132
+ }
package/box.css ADDED
@@ -0,0 +1,73 @@
1
+ @layer fds.box {
2
+ .fds-box--xsmall-shadow {
3
+ box-shadow: var(--fds-shadow-xsmall);
4
+ }
5
+
6
+ .fds-box--small-shadow {
7
+ box-shadow: var(--fds-shadow-small);
8
+ }
9
+
10
+ .fds-box--medium-shadow {
11
+ box-shadow: var(--fds-shadow-medium);
12
+ }
13
+
14
+ .fds-box--large-shadow {
15
+ box-shadow: var(--fds-shadow-large);
16
+ }
17
+
18
+ .fds-box--xlarge-shadow {
19
+ box-shadow: var(--fds-shadow-xlarge);
20
+ }
21
+
22
+ .fds-box--default-border-color {
23
+ border: 1px solid var(--fds-semantic-border-neutral-default);
24
+ }
25
+
26
+ .fds-box--subtle-border-color {
27
+ border: 1px solid var(--fds-semantic-border-neutral-subtle);
28
+ }
29
+
30
+ .fds-box--strong-border-color {
31
+ border: 1px solid var(--fds-semantic-border-neutral-strong);
32
+ }
33
+
34
+ .fds-box--small-border-radius {
35
+ border-radius: var(--fds-border_radius-small);
36
+ }
37
+
38
+ .fds-box--medium-border-radius {
39
+ border-radius: var(--fds-border_radius-medium);
40
+ }
41
+
42
+ .fds-box--large-border-radius {
43
+ border-radius: var(--fds-border_radius-large);
44
+ }
45
+
46
+ .fds-box--xlarge-border-radius {
47
+ border-radius: var(--fds-border_radius-xlarge);
48
+ }
49
+
50
+ .fds-box--xxlarge-border-radius {
51
+ border-radius: var(--fds-border_radius-xxlarge);
52
+ }
53
+
54
+ .fds-box--xxxlarge-border-radius {
55
+ border-radius: var(--fds-border_radius-xxxlarge);
56
+ }
57
+
58
+ .fds-box--xxxxlarge-border-radius {
59
+ border-radius: var(--fds-border_radius-xxxxlarge);
60
+ }
61
+
62
+ .fds-box--full-border-radius {
63
+ border-radius: var(--fds-border_radius-full);
64
+ }
65
+
66
+ .fds-box--default-background {
67
+ background-color: var(--fds-semantic-background-default);
68
+ }
69
+
70
+ .fds-box--subtle-background {
71
+ background-color: var(--fds-semantic-background-subtle);
72
+ }
73
+ }
package/button.css CHANGED
@@ -1,6 +1,6 @@
1
1
  @layer fds.btn {
2
2
  .fds-btn {
3
- --fds-btn-padding: 0 var(--fds-spacing-4);
3
+ --fds-btn-padding: var(--fds-spacing-2) var(--fds-spacing-4);
4
4
 
5
5
  display: flex;
6
6
  align-items: center;
@@ -31,7 +31,7 @@
31
31
  }
32
32
 
33
33
  .fds-btn--small {
34
- --fds-btn-padding: 0 var(--fds-spacing-3);
34
+ --fds-btn-padding: var(--fds-spacing-2) var(--fds-spacing-3);
35
35
 
36
36
  gap: var(--fds-sizing-1);
37
37
  font: var(--fds-typography-paragraph-short-small);
@@ -58,7 +58,7 @@
58
58
  }
59
59
 
60
60
  .fds-btn--medium {
61
- --fds-btn-padding: 0 var(--fds-spacing-4);
61
+ --fds-btn-padding: var(--fds-spacing-2) var(--fds-spacing-4);
62
62
 
63
63
  gap: var(--fds-sizing-2);
64
64
  font: var(--fds-typography-paragraph-short-medium);
@@ -67,7 +67,7 @@
67
67
  }
68
68
 
69
69
  .fds-btn--large {
70
- --fds-btn-padding: 0 var(--fds-spacing-5);
70
+ --fds-btn-padding: var(--fds-spacing-3) var(--fds-spacing-5);
71
71
 
72
72
  gap: var(--fds-sizing-2);
73
73
  font: var(--fds-typography-paragraph-short-large);
package/card.css ADDED
@@ -0,0 +1,157 @@
1
+ @layer fds.card {
2
+ .fds-card__media {
3
+ width: auto;
4
+ }
5
+
6
+ .fds-card__media > * {
7
+ display: flex;
8
+ flex-direction: column;
9
+ width: 100%;
10
+ border: 0;
11
+ }
12
+
13
+ .fds-card__footer,
14
+ .fds-card__content {
15
+ display: flex;
16
+ justify-content: flex-start;
17
+ gap: var(--fds-spacing-4);
18
+ flex-wrap: wrap;
19
+ word-wrap: break-word;
20
+ font: var(--fds-typography-paragraph-medium);
21
+ font-family: inherit;
22
+ padding: var(--fds-spacing-2) 0;
23
+ }
24
+
25
+ .fds-card__content {
26
+ flex-direction: column;
27
+ }
28
+
29
+ .fds-card__header {
30
+ display: flex;
31
+ flex-direction: column;
32
+ flex-wrap: wrap;
33
+ word-wrap: break-word;
34
+ font: var(--fds-typography-heading-medium);
35
+ font-family: inherit;
36
+ padding: var(--fds-spacing-2) 0;
37
+ }
38
+
39
+ .fds-card {
40
+ display: flex;
41
+ flex-direction: column;
42
+ width: 100%;
43
+ box-sizing: border-box;
44
+ position: relative;
45
+ overflow: hidden;
46
+ color: var(--fds-semantic-text-neutral-default);
47
+ border-radius: var(--fds-border_radius-medium);
48
+ }
49
+
50
+ .fds-card a,
51
+ .fds-card a:visited {
52
+ color: var(--fds-semantic-text-neutral-default);
53
+ }
54
+
55
+ .fds-card > hr {
56
+ width: 100%;
57
+ margin: var(--fds-spacing-3) 0;
58
+ }
59
+
60
+ .fds-card > *:not(.fds-card__media, hr) {
61
+ padding-left: var(--fds-spacing-6);
62
+ padding-right: var(--fds-spacing-6);
63
+ }
64
+
65
+ .fds-card > *:not(.fds-card__media):first-child {
66
+ padding-top: var(--fds-spacing-6);
67
+ }
68
+
69
+ .fds-card > *:not(.fds-card__media):last-child {
70
+ padding-bottom: var(--fds-spacing-6);
71
+ }
72
+
73
+ .fds-card__media:first-child {
74
+ padding-bottom: var(--fds-spacing-4);
75
+ }
76
+
77
+ .fds-card__media:last-child {
78
+ padding-top: var(--fds-spacing-6);
79
+ }
80
+
81
+ .fds-card--link {
82
+ text-decoration: none;
83
+ }
84
+
85
+ .fds-card--link h1,
86
+ .fds-card--link h2,
87
+ .fds-card--link h3,
88
+ .fds-card--link h4,
89
+ .fds-card--link h5,
90
+ .fds-card--link h6 {
91
+ text-decoration: underline;
92
+ text-decoration-thickness: max(1px, 0.0625rem, 0.1025em);
93
+ text-underline-offset: max(4px, 0.25rem, 0.22em);
94
+ }
95
+
96
+ .fds-card--neutral {
97
+ background-color: var(--fds-semantic-surface-neutral-default);
98
+ border: 1px solid var(--fds-semantic-border-neutral-subtle);
99
+ }
100
+
101
+ .fds-card--subtle {
102
+ background-color: var(--fds-semantic-surface-neutral-subtle);
103
+ border: 1px solid var(--fds-semantic-border-neutral-subtle);
104
+ }
105
+
106
+ .fds-card--neutral.fds-card--link:hover,
107
+ .fds-card--subtle.fds-card--link:hover {
108
+ background-color: var(--fds-semantic-surface-neutral-subtle-hover);
109
+ }
110
+
111
+ /*
112
+ --fds surface-neutral-subtle-active does not exist? Old style
113
+ .fds-card--neutral.fds-card--link:active,
114
+ .fds-card--subtle.fds-card--link:active {
115
+ background-color: var(--fds-semantic-surface-neutral-subtle-active);
116
+ }
117
+ */
118
+
119
+ .fds-card--first {
120
+ background-color: var(--fds-semantic-surface-first-light);
121
+ border: 1px solid var(--fds-semantic-border-neutral-subtle);
122
+ }
123
+
124
+ .fds-card--first.fds-card--link:hover {
125
+ background-color: var(--fds-semantic-surface-first-light-hover);
126
+ }
127
+
128
+ .fds-card--first.fds-card--link:active {
129
+ background-color: var(--fds-semantic-surface-first-light-active);
130
+ }
131
+
132
+ .fds-card--second {
133
+ background-color: var(--fds-semantic-surface-second-light);
134
+ border: 1px solid var(--fds-semantic-border-neutral-subtle);
135
+ }
136
+
137
+ .fds-card--second.fds-card--link:hover {
138
+ background-color: var(--fds-semantic-surface-second-light-hover);
139
+ }
140
+
141
+ .fds-card--second.fds-card--link:active {
142
+ background-color: var(--fds-semantic-surface-second-light-active);
143
+ }
144
+
145
+ .fds-card--third {
146
+ background-color: var(--fds-semantic-surface-third-light);
147
+ border: 1px solid var(--fds-semantic-border-neutral-subtle);
148
+ }
149
+
150
+ .fds-card--third.fds-card--link:hover {
151
+ background-color: var(--fds-semantic-surface-third-light-hover);
152
+ }
153
+
154
+ .fds-card--third.fds-card--link:active {
155
+ background-color: var(--fds-semantic-surface-third-light-active);
156
+ }
157
+ }
package/checkbox.css ADDED
@@ -0,0 +1,175 @@
1
+ @layer fds.checkbox {
2
+ .fds-checkbox {
3
+ --fds-checkbox-size: 1.75rem;
4
+ --fds-checkbox-focus-border-width: 3px;
5
+ --fds-checkbox-background: var(--fds-semantic-background-default);
6
+ --fds-checkbox-border-color: var(--fds-semantic-border-input-default);
7
+ --fds-checkbox-border__hover: 0 0 0 var(--fds-spacing-2) var(--fds-semantic-surface-info-subtle-hover);
8
+
9
+ display: grid;
10
+ }
11
+
12
+ .fds-checkbox:has(.fds-checkbox__label) {
13
+ grid-template-columns: var(--fds-checkbox-size) auto;
14
+ gap: var(--fds-spacing-2);
15
+ }
16
+
17
+ /* Checkbox */
18
+ .fds-checkbox__input {
19
+ position: relative;
20
+ width: var(--fds-checkbox-size);
21
+ height: var(--fds-checkbox-size);
22
+ z-index: 1;
23
+ appearance: none;
24
+ margin: 0;
25
+ align-self: center;
26
+ outline: none;
27
+ cursor: pointer;
28
+ box-shadow: inset 0 0 0 2px var(--fds-checkbox-border-color);
29
+ background: var(--fds-checkbox-background);
30
+ border-radius: var(--fds-border_radius-medium);
31
+ }
32
+
33
+ .fds-checkbox__input::before {
34
+ position: absolute;
35
+ content: '';
36
+ display: block;
37
+ width: 2.75rem;
38
+ height: 2.75rem;
39
+ transform: translate(-50%, -50%);
40
+ top: 50%;
41
+ left: 50%;
42
+ cursor: pointer;
43
+ border-radius: var(--fds-border_radius-medium);
44
+ }
45
+
46
+ .fds-checkbox__label {
47
+ min-height: var(--fds-sizing-10);
48
+ min-width: min-content;
49
+ display: inline-flex;
50
+ flex-direction: row;
51
+ gap: var(--fds-spacing-1);
52
+ align-items: center;
53
+ cursor: pointer;
54
+ }
55
+
56
+ .fds-checkbox__description {
57
+ margin-top: calc(var(--fds-spacing-3) * -1);
58
+ color: var(--fds-semantic-text-neutral-subtle);
59
+ grid-column: 2;
60
+ }
61
+
62
+ .fds-checkbox--disabled > .fds-checkbox__input,
63
+ .fds-checkbox--disabled > .fds-checkbox__label,
64
+ .fds-checkbox--disabled > .fds-checkbox__input::before {
65
+ cursor: not-allowed;
66
+ }
67
+
68
+ .fds-checkbox--disabled > .fds-checkbox__label,
69
+ .fds-checkbox--disabled > .fds-checkbox__input,
70
+ .fds-checkbox--disabled > .fds-checkbox__description {
71
+ opacity: var(--fds-opacity-disabled);
72
+ }
73
+
74
+ .fds-checkbox--readonly > .fds-checkbox__label,
75
+ .fds-checkbox--readonly > .fds-checkbox__input,
76
+ .fds-checkbox--readonly > .fds-checkbox__input::before {
77
+ cursor: default;
78
+ }
79
+
80
+ .fds-checkbox__input:focus-visible {
81
+ outline-offset: 0;
82
+ outline: var(--fds-checkbox-focus-border-width) solid var(--fds-semantic-border-focus-outline);
83
+ box-shadow: inset 0 0 0 var(--fds-checkbox-focus-border-width) var(--fds-semantic-border-focus-boxshadow);
84
+ }
85
+
86
+ .fds-checkbox__input:checked {
87
+ --fds-checkbox-border-color: var(--fds-semantic-border-input-hover);
88
+
89
+ background: var(--fds-checkbox-border-color);
90
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 23 23' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M18.5509 6.32414C18.9414 6.71467 18.9414 7.34783 18.5509 7.73836L10.5821 15.7071C10.1916 16.0976 9.55842 16.0976 9.16789 15.7071L4.94914 11.4884C4.55862 11.0978 4.55862 10.4647 4.94914 10.0741C5.33967 9.68362 5.97283 9.68362 6.36336 10.0741L9.875 13.5858L17.1366 6.32414C17.5272 5.93362 18.1603 5.93362 18.5509 6.32414Z' fill='white'/%3E%3C/svg%3E%0A");
91
+ }
92
+
93
+ .fds-checkbox__input:indeterminate {
94
+ --fds-checkbox-border-color: var(--fds-semantic-border-input-hover);
95
+
96
+ background-color: var(--fds-checkbox-border-color);
97
+ background-repeat: no-repeat;
98
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 23 23' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4.25 11.25C4.25 10.4216 4.92157 9.75 5.75 9.75H16.75C17.5784 9.75 18.25 10.4216 18.25 11.25C18.25 12.0784 17.5784 12.75 16.75 12.75H5.75C4.92157 12.75 4.25 12.0784 4.25 11.25Z' fill='white' /%3E%3C/svg%3E%0A");
99
+ }
100
+
101
+ .fds-checkbox--readonly > .fds-checkbox__input {
102
+ --fds-checkbox-border-color: var(--fds-semantic-border-neutral-subtle);
103
+ --fds-checkbox-background: var(--fds-semantic-surface-neutral-subtle);
104
+ }
105
+
106
+ .fds-checkbox__input:checked:not(:focus-visible) {
107
+ box-shadow: inset 0 0 0 2px var(--fds-checkbox-border-color);
108
+ }
109
+
110
+ .fds-checkbox--readonly > .fds-checkbox__input:checked {
111
+ background: var(--fds-checkbox-background);
112
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 23 23' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M18.5509 6.32414C18.9414 6.71467 18.9414 7.34783 18.5509 7.73836L10.5821 15.7071C10.1916 16.0976 9.55842 16.0976 9.16789 15.7071L4.94914 11.4884C4.55862 11.0978 4.55862 10.4647 4.94914 10.0741C5.33967 9.68362 5.97283 9.68362 6.36336 10.0741L9.875 13.5858L17.1366 6.32414C17.5272 5.93362 18.1603 5.93362 18.5509 6.32414Z' fill='%2368707c'/%3E%3C/svg%3E%0A");
113
+ }
114
+
115
+ .fds-checkbox--readonly > .fds-checkbox__input:indeterminate {
116
+ background: var(--fds-checkbox-background);
117
+ background-repeat: no-repeat;
118
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 23 23' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4.25 11.25C4.25 10.4216 4.92157 9.75 5.75 9.75H16.75C17.5784 9.75 18.25 10.4216 18.25 11.25C18.25 12.0784 17.5784 12.75 16.75 12.75H5.75C4.92157 12.75 4.25 12.0784 4.25 11.25Z' fill='%2368707c' /%3E%3C/svg%3E%0A");
119
+ }
120
+
121
+ .fds-checkbox--error > .fds-checkbox__input:not(:disabled, :focus-visible) {
122
+ --fds-checkbox-border-color: var(--fds-semantic-border-danger-default);
123
+ }
124
+
125
+ /* Only use hover for non-touch devices to prevent sticky-hovering
126
+ "input:not(:read-only)" does not work so using ".container:not(.readonly) >" instead */
127
+ @media (hover: hover) and (pointer: fine) {
128
+ .fds-checkbox:not(.fds-checkbox--readonly, .fds-checkbox--disabled) > .fds-checkbox__label:hover,
129
+ .fds-checkbox:not(.fds-checkbox--readonly, .fds-checkbox--disabled) > .fds-checkbox__input:hover + .fds-checkbox__label {
130
+ color: var(--fds-semantic-text-action-hover);
131
+ }
132
+
133
+ .fds-checkbox:not(.fds-checkbox--readonly, .fds-checkbox--disabled) > .fds-checkbox__input:hover:not(:checked) {
134
+ --fds-checkbox-border-color: var(--fds-semantic-border-input-hover);
135
+
136
+ box-shadow:
137
+ var(--fds-checkbox-border__hover),
138
+ inset 0 0 0 2px var(--fds-checkbox-border-color);
139
+ }
140
+
141
+ .fds-checkbox:not(.fds-checkbox--readonly, .fds-checkbox--disabled) > .fds-checkbox__input:hover:checked {
142
+ --fds-checkbox-border-color: var(--fds-semantic-border-input-hover);
143
+
144
+ box-shadow:
145
+ var(--fds-checkbox-border__hover),
146
+ inset 0 0 0 2px var(--fds-checkbox-border-color);
147
+ }
148
+
149
+ .fds-checkbox:not(.fds-checkbox--readonly, .fds-checkbox--disabled) > .fds-checkbox__input:hover:checked:focus-visible {
150
+ box-shadow:
151
+ var(--fds-checkbox-border__hover),
152
+ inset 0 0 0 var(--fds-checkbox-focus-border-width) var(--fds-semantic-border-focus-boxshadow);
153
+ }
154
+ }
155
+
156
+ /** Sizing */
157
+
158
+ .fds-checkbox--small {
159
+ --fds-checkbox-size: var(--fds-sizing-5);
160
+
161
+ min-height: var(--fds-sizing-10);
162
+ }
163
+
164
+ .fds-checkbox--medium {
165
+ --fds-checkbox-size: var(--fds-sizing-6);
166
+
167
+ min-height: var(--fds-sizing-11);
168
+ }
169
+
170
+ .fds-checkbox--large {
171
+ --fds-checkbox-size: var(--fds-sizing-7);
172
+
173
+ min-height: var(--fds-sizing-12);
174
+ }
175
+ }