@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/search.css ADDED
@@ -0,0 +1,170 @@
1
+ @layer fds.search {
2
+ .fds-search {
3
+ display: inline-grid;
4
+ width: 100%;
5
+ gap: var(--fds-spacing-2);
6
+ }
7
+
8
+ .fds-search--small {
9
+ --f-search-button-clear-size: var(--fds-sizing-5);
10
+ }
11
+
12
+ .fds-search--medium {
13
+ --f-search-button-clear-size: var(--fds-sizing-6);
14
+ }
15
+
16
+ .fds-search--large {
17
+ --f-search-button-clear-size: var(--fds-sizing-8);
18
+ }
19
+
20
+ .fds-search__error:empty {
21
+ display: none;
22
+ }
23
+
24
+ .fds-search__label {
25
+ min-width: min-content;
26
+ display: inline-flex;
27
+ flex-direction: row;
28
+ gap: var(--fds-spacing-1);
29
+ align-items: center;
30
+ }
31
+
32
+ .fds-search__field {
33
+ display: flex;
34
+ width: 100%;
35
+ align-items: stretch;
36
+ border-radius: var(--fds-border_radius-medium);
37
+ position: relative;
38
+ }
39
+
40
+ .fds-search__icon {
41
+ position: absolute;
42
+ height: 100%;
43
+ z-index: 2;
44
+ left: var(--fds-spacing-4);
45
+ transform: scale(1.5);
46
+ pointer-events: none;
47
+ }
48
+
49
+ [type='search']::-webkit-search-decoration,
50
+ [type='search']::-webkit-search-cancel-button {
51
+ appearance: none;
52
+ }
53
+
54
+ .fds-search__input {
55
+ font: inherit;
56
+ font-family: inherit;
57
+ position: relative;
58
+ box-sizing: border-box;
59
+ flex: 0 1 auto;
60
+ height: var(--fds-sizing-10);
61
+ width: 100%;
62
+ appearance: none;
63
+ padding: 0 var(--fds-spacing-3);
64
+ border: solid 1px var(--fds-semantic-border-input-default);
65
+ border-radius: var(--fds-border_radius-medium);
66
+ }
67
+
68
+ .fds-search__input.fds-search__input--with-search-button {
69
+ border-top-right-radius: 0;
70
+ border-bottom-right-radius: 0;
71
+ }
72
+
73
+ .fds-search__input:disabled {
74
+ cursor: not-allowed;
75
+ }
76
+
77
+ .fds-search__input[type='search']:focus-visible {
78
+ z-index: 1;
79
+ }
80
+
81
+ .fds-search--disabled {
82
+ opacity: var(--fds-opacity-disabled);
83
+ }
84
+
85
+ .fds-search__search-button {
86
+ border-left: 0;
87
+ border-top-left-radius: 0;
88
+ border-bottom-left-radius: 0;
89
+ }
90
+
91
+ .fds-search__search-button:focus-visible {
92
+ z-index: 1;
93
+ }
94
+
95
+ .fds-search__clear-button {
96
+ color: var(--fds-semantic-text-neutral-default);
97
+ display: inline-flex;
98
+ align-items: center;
99
+ justify-content: center;
100
+ position: absolute;
101
+ background: none;
102
+ border: none;
103
+ right: 0.6em;
104
+ top: 50%;
105
+ transform: translateY(-50%);
106
+ cursor: pointer;
107
+ height: var(--f-search-button-clear-size);
108
+ width: var(--f-search-button-clear-size);
109
+ border-radius: var(--fds-border_radius-medium);
110
+ font-size: 1.25rem;
111
+ padding: 0;
112
+ z-index: 2;
113
+ }
114
+
115
+ .fds-search--small .fds-search__input {
116
+ --f-search-button-clear-size: var(--fds-sizing-4);
117
+
118
+ height: var(--fds-sizing-10);
119
+ padding: 0 var(--fds-spacing-3);
120
+ padding-right: 2.5em;
121
+ }
122
+
123
+ .fds-search--small .fds-search__icon {
124
+ left: var(--fds-spacing-3);
125
+ }
126
+
127
+ .fds-search--medium .fds-search__input {
128
+ --f-search-button-clear-size: var(--fds-sizing-6);
129
+
130
+ height: var(--fds-sizing-12);
131
+ padding: 0 var(--fds-spacing-4);
132
+ padding-right: 2.2em;
133
+ }
134
+
135
+ .fds-search--medium .fds-search__icon {
136
+ left: var(--fds-spacing-4);
137
+ }
138
+
139
+ .fds-search--large .fds-search__input {
140
+ --f-search-button-clear-size: var(--fds-sizing-12);
141
+
142
+ height: var(--fds-sizing-14);
143
+ padding: 0 var(--fds-spacing-5);
144
+ padding-right: 2em;
145
+ }
146
+
147
+ .fds-search--large .fds-search__icon {
148
+ left: var(--fds-spacing-5);
149
+ }
150
+
151
+ .fds-search__input.fds-search__input--simple {
152
+ padding-left: 2.4em;
153
+ }
154
+
155
+ .fds-search__error-message > .input:not(:focus-visible) {
156
+ border-color: var(--fds-semantic-border-danger-default);
157
+ box-shadow: inset 0 0 0 1px var(--fds-semantic-border-danger-default);
158
+ }
159
+
160
+ @media (hover: hover) and (pointer: fine) {
161
+ .fds-search__input:not(:focus-visible, :disabled, [aria-disabled]):hover {
162
+ border-color: var(--fds-semantic-border-input-hover);
163
+ box-shadow: inset 0 0 0 1px var(--fds-semantic-border-input-hover);
164
+ }
165
+
166
+ .fds-search__clear-button:not(:focus-visible, :disabled, [aria-disabled]):hover {
167
+ background: var(--fds-semantic-surface-action-subtle-hover);
168
+ }
169
+ }
170
+ }
package/skeleton.css ADDED
@@ -0,0 +1,59 @@
1
+ @layer fds.skeleton {
2
+ .fds-skeleton {
3
+ --fds-skeleton-animation-duration: 0.8s;
4
+
5
+ height: 1.3em;
6
+ pointer-events: none;
7
+ user-select: none;
8
+ background-color: var(--fds-semantic-surface-neutral-subtle-hover);
9
+ animation: fds-skeleton-opacity-fade var(--fds-skeleton-animation-duration) linear infinite alternate;
10
+ }
11
+
12
+ .fds-skeleton--circle {
13
+ width: 1.3em;
14
+ border-radius: 50%;
15
+ }
16
+
17
+ .fds-skeleton--rectangle {
18
+ width: 100%;
19
+ border-radius: 0.2em;
20
+ }
21
+
22
+ .fds-skeleton--text {
23
+ width: 100%;
24
+ height: auto;
25
+ transform-origin: 0 55%;
26
+ transform: scale(1, 0.6);
27
+ border-radius: 0.55em;
28
+ }
29
+
30
+ .fds-skeleton--text:empty::before {
31
+ content: '\00a0';
32
+ }
33
+
34
+ .fds-skeleton--has-children {
35
+ width: fit-content;
36
+ height: fit-content;
37
+ color: transparent !important;
38
+ }
39
+
40
+ .fds-skeleton--has-children > * {
41
+ visibility: hidden;
42
+ }
43
+
44
+ @media (prefers-reduced-motion: reduce) {
45
+ .fds-skeleton {
46
+ --fds-skeleton-animation-duration: 1.6s;
47
+ }
48
+ }
49
+
50
+ @keyframes fds-skeleton-opacity-fade {
51
+ 0% {
52
+ opacity: 1;
53
+ }
54
+
55
+ 100% {
56
+ opacity: 0.4;
57
+ }
58
+ }
59
+ }
package/spinner.css ADDED
@@ -0,0 +1,75 @@
1
+ @layer fds.spinner {
2
+ .fds-spinner {
3
+ animation: fds-spinner-rotate-animation linear infinite;
4
+ animation-duration: 2s;
5
+ }
6
+
7
+ .fds-spinner__circle {
8
+ stroke-dasharray: 1px, 200px;
9
+ transform-origin: center;
10
+ animation: fds-spinner-stroke-animation ease-in-out infinite;
11
+ animation-duration: 2s;
12
+ }
13
+
14
+ /* Prefers reduced motion needs longer animation,
15
+ but don't remove it since it is not decorative.
16
+ */
17
+ @media (prefers-reduced-motion: reduce) {
18
+ .fds-spinner {
19
+ animation-duration: 6s;
20
+ }
21
+
22
+ .fds-spinner__circle {
23
+ animation-duration: 6s;
24
+ }
25
+ }
26
+
27
+ .fds-spinner--default .fds-spinner__circle {
28
+ stroke: var(--fds-semantic-border-neutral-default);
29
+ }
30
+
31
+ .fds-spinner--interaction .fds-spinner__circle {
32
+ stroke: var(--fds-semantic-border-action-first-default);
33
+ }
34
+
35
+ .fds-spinner--inverted .fds-spinner__circle {
36
+ stroke: var(--fds-semantic-surface-neutral-default);
37
+ }
38
+
39
+ .fds-spinner__background {
40
+ stroke: var(--fds-semantic-border-neutral-subtle);
41
+ }
42
+
43
+ .fds-spinner__background--inverted {
44
+ stroke: var(--fds-semantic-surface-neutral-dark);
45
+ }
46
+
47
+ @keyframes fds-spinner-rotate-animation {
48
+ 0% {
49
+ transform: rotate(0deg);
50
+ }
51
+
52
+ 100% {
53
+ transform: rotate(360deg);
54
+ }
55
+ }
56
+
57
+ @keyframes fds-spinner-stroke-animation {
58
+ 0% {
59
+ stroke-dasharray: 1px, 200px;
60
+ stroke-dashoffset: 0;
61
+ }
62
+
63
+ 50% {
64
+ stroke-dasharray: 100px, 200px;
65
+ stroke-dashoffset: -15px;
66
+ transform: rotate(0deg);
67
+ }
68
+
69
+ 100% {
70
+ stroke-dasharray: 1px, 200px;
71
+ stroke-dashoffset: -120px;
72
+ transform: rotate(15deg);
73
+ }
74
+ }
75
+ }
package/switch.css ADDED
@@ -0,0 +1,216 @@
1
+ @layer fds.switch {
2
+ .fds-switch {
3
+ --fds-switch--transition: 200ms;
4
+ --fds-switch-height: 1.75rem;
5
+ --fds-switch-focus-border-width: 3px;
6
+
7
+ position: relative;
8
+ }
9
+
10
+ @media (prefers-reduced-motion) {
11
+ .switch {
12
+ --fds-switch--transition: 0;
13
+ }
14
+ }
15
+
16
+ .fds-switch__label {
17
+ min-height: var(--fds-sizing-10);
18
+ min-width: min-content;
19
+ display: grid;
20
+ grid-template-columns: auto 1fr;
21
+ gap: var(--fds-spacing-1);
22
+ align-items: center;
23
+ cursor: pointer;
24
+ }
25
+
26
+ .fds-switch__track {
27
+ position: relative;
28
+ display: inline-block;
29
+ pointer-events: none;
30
+ width: var(--fds-switch-width);
31
+ height: var(--fds-switch-height);
32
+ margin: auto;
33
+ overflow: visible;
34
+ border-radius: var(--fds-border_radius-full);
35
+ background-color: var(--fds-semantic-surface-neutral-dark);
36
+ transition: background-color var(--fds-switch--transition) ease;
37
+ margin-right: var(--fds-spacing-1);
38
+ }
39
+
40
+ .fds-switch__description {
41
+ padding-left: calc(var(--fds-switch-width) + var(--fds-spacing-2));
42
+ margin-top: calc(var(--fds-spacing-2) * -1);
43
+ color: var(--fds-semantic-text-neutral-subtle);
44
+ }
45
+
46
+ .fds-switch__readonly__icon {
47
+ height: 1.2em;
48
+ width: 1.2em;
49
+ }
50
+
51
+ .fds-switch__label--right {
52
+ grid-template-columns: 1fr auto;
53
+ grid-auto-flow: dense;
54
+ }
55
+
56
+ .fds-switch__label--right .fds-switch__track {
57
+ order: 1;
58
+ margin-right: 0;
59
+ }
60
+
61
+ .fds-switch__label--right + .fds-switch__description {
62
+ padding-left: 0;
63
+ }
64
+
65
+ .fds-switch__input {
66
+ position: absolute;
67
+ width: 2.75rem;
68
+ height: 2.75rem;
69
+ z-index: 1;
70
+ opacity: 0;
71
+ cursor: pointer;
72
+ margin: 0;
73
+ }
74
+
75
+ .fds-switch--readonly > .fds-switch__label {
76
+ grid-template-columns: auto min-content 1fr;
77
+ }
78
+
79
+ .fds-switch--readonly > .fds-switch__label:where(.fds-switch__label--right) {
80
+ grid-template-columns: min-content 1fr auto;
81
+ }
82
+
83
+ .fds-switch--readonly > .fds-switch__input,
84
+ .fds-switch--readonly > .fds-switch__label {
85
+ cursor: default;
86
+ }
87
+
88
+ .fds-switch--disabled > .fds-switch__input,
89
+ .fds-switch--disabled > .fds-switch__label,
90
+ .fds-switch--disabled > .fds-switch__track {
91
+ cursor: not-allowed;
92
+ }
93
+
94
+ .fds-switch--disabled > .fds-switch__label,
95
+ .fds-switch--disabled > .fds-switch__track,
96
+ .fds-switch--disabled > .fds-switch__description {
97
+ opacity: var(--fds-opacity-disabled);
98
+ }
99
+
100
+ .fds-switch--readonly > .fds-switch__description {
101
+ margin-left: var(--fds-spacing-1);
102
+ }
103
+
104
+ .fds-switch--small,
105
+ .fds-switch--small .fds-switch__label {
106
+ min-height: var(--fds-sizing-6);
107
+ }
108
+
109
+ .fds-switch--medium,
110
+ .fds-switch--medium .fds-switch__label {
111
+ min-height: var(--fds-sizing-7);
112
+ }
113
+
114
+ .fds-switch--large,
115
+ .fds-switch--large .fds-switch__label {
116
+ min-height: var(--fds-sizing-8);
117
+ }
118
+
119
+ .fds-switch--small {
120
+ --fds-switch-height: var(--fds-sizing-6);
121
+ --fds-switch-width: var(--fds-sizing-11);
122
+ }
123
+
124
+ .fds-switch--small .fds-switch__input {
125
+ left: -0.25rem;
126
+ top: -0.25rem;
127
+ }
128
+
129
+ .fds-switch--medium {
130
+ --fds-switch-height: var(--fds-sizing-7);
131
+ --fds-switch-width: var(--fds-sizing-13);
132
+ }
133
+
134
+ .fds-switch--medium .fds-switch__input {
135
+ left: 0;
136
+ top: 0;
137
+ }
138
+
139
+ .fds-switch--large {
140
+ --fds-switch-height: var(--fds-sizing-8);
141
+ --fds-switch-width: var(--fds-sizing-15);
142
+ }
143
+
144
+ .fds-switch--large .fds-switch__input {
145
+ left: 0;
146
+ top: 0.25rem;
147
+ }
148
+
149
+ .fds-switch__label:has(.fds-switch__track:only-child) {
150
+ grid-template-columns: auto;
151
+ }
152
+
153
+ .fds-switch__label:has(.fds-switch__track:only-child) .fds-switch__track {
154
+ margin-right: 0;
155
+ }
156
+
157
+ .fds-switch__input:focus-visible + .fds-switch__label .fds-switch__track {
158
+ outline: var(--fds-switch-focus-border-width) solid var(--fds-semantic-border-focus-outline);
159
+ box-shadow: inset 0 0 0 var(--fds-switch-focus-border-width) var(--fds-semantic-border-focus-boxshadow);
160
+ }
161
+
162
+ .fds-switch__input:not([readonly]):checked + .fds-switch__label .fds-switch__track {
163
+ background-color: var(--fds-semantic-surface-success-default);
164
+ }
165
+
166
+ .fds-switch__thumb {
167
+ scale: 0.8;
168
+ position: absolute;
169
+ height: var(--fds-switch-height);
170
+ width: var(--fds-switch-height);
171
+ border-radius: var(--fds-border_radius-full);
172
+ background-color: var(--fds-semantic-background-default);
173
+ transition: transform var(--fds-switch--transition) ease;
174
+ }
175
+
176
+ .fds-switch__input:checked + .fds-switch__label .fds-switch__track .fds-switch__thumb {
177
+ transform: translateX(calc((var(--fds-switch-width) - var(--fds-switch-height)) * 1.2));
178
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='-3 -3 17 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M10.1339 2.86612C10.622 3.35427 10.622 4.14573 10.1339 4.63388L5.88388 8.88388C5.39573 9.37204 4.60427 9.37204 4.11612 8.88388L1.86612 6.63388C1.37796 6.14573 1.37796 5.35427 1.86612 4.86612C2.35427 4.37796 3.14573 4.37796 3.63388 4.86612L5 6.23223L8.36612 2.86612C8.85427 2.37796 9.64573 2.37796 10.1339 2.86612Z' fill='%23118849' /%3E%3C/svg%3E");
179
+ }
180
+
181
+ .fds-switch--readonly .fds-switch__input[readonly] + .fds-switch__label .fds-switch__track {
182
+ box-shadow: inset 0 0 0 2px var(--fds-semantic-border-neutral-subtle);
183
+ background-color: var(--fds-semantic-background-subtle);
184
+ }
185
+
186
+ .fds-switch--readonly .fds-switch__input[readonly] + .fds-switch__label .fds-switch__track > .fds-switch__thumb {
187
+ background-color: var(--fds-semantic-border-neutral-default);
188
+ }
189
+
190
+ .fds-switch--readonly .fds-switch__input[readonly]:checked + .fds-switch__label .fds-switch__track .fds-switch__thumb {
191
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='-3 -3 17 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M10.1339 2.86612C10.622 3.35427 10.622 4.14573 10.1339 4.63388L5.88388 8.88388C5.39573 9.37204 4.60427 9.37204 4.11612 8.88388L1.86612 6.63388C1.37796 6.14573 1.37796 5.35427 1.86612 4.86612C2.35427 4.37796 3.14573 4.37796 3.63388 4.86612L5 6.23223L8.36612 2.86612C8.85427 2.37796 9.64573 2.37796 10.1339 2.86612Z' fill='%23f4f5f6' /%3E%3C/svg%3E");
192
+ }
193
+
194
+ @media (hover: hover) and (pointer: fine) {
195
+ .fds-switch__input:not([readonly], :disabled):hover + .fds-switch__label .fds-switch__track > .fds-switch__thumb {
196
+ transform: translateX(calc((var(--fds-switch-width) - var(--fds-switch-height)) * 0.2));
197
+ }
198
+
199
+ .fds-switch__input:not([readonly], :disabled):hover + .fds-switch__label {
200
+ color: var(--fds-semantic-border-input-hover);
201
+ }
202
+
203
+ .fds-switch__input:not(:disabled, [readonly]):checked:hover + .fds-switch__label .fds-switch__track > .fds-switch__thumb {
204
+ transform: translateX(calc((var(--fds-switch-width) - var(--fds-switch-height))));
205
+ background-image: url("data:image/svg+xml,%3Csvg viewBox='-3 -3 17 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M10.1339 2.86612C10.622 3.35427 10.622 4.14573 10.1339 4.63388L5.88388 8.88388C5.39573 9.37204 4.60427 9.37204 4.11612 8.88388L1.86612 6.63388C1.37796 6.14573 1.37796 5.35427 1.86612 4.86612C2.35427 4.37796 3.14573 4.37796 3.63388 4.86612L5 6.23223L8.36612 2.86612C8.85427 2.37796 9.64573 2.37796 10.1339 2.86612Z' fill='%230c6536' /%3E%3C/svg%3E");
206
+ }
207
+
208
+ .fds-switch__input:not(:checked, :disabled, [readonly]):hover + .fds-switch__label .fds-switch__track {
209
+ background-color: var(--fds-semantic-surface-neutral-dark-hover);
210
+ }
211
+
212
+ .fds-switch__input:not(:disabled, [readonly]):checked:hover + .fds-switch__label .fds-switch__track {
213
+ background-color: var(--fds-semantic-surface-success-hover);
214
+ }
215
+ }
216
+ }
package/table.css ADDED
@@ -0,0 +1,136 @@
1
+ @layer fds.table {
2
+ .fds-table {
3
+ position: relative;
4
+ border-collapse: separate;
5
+ border-spacing: 0;
6
+ text-align: left;
7
+
8
+ --table-padding: 0;
9
+ --border-radius: var(--fds-border_radius-medium);
10
+ }
11
+
12
+ .fds-table--sticky-header {
13
+ overflow: auto;
14
+ }
15
+
16
+ .fds-table--border .fds-table__row:last-of-type td {
17
+ border-bottom: 0;
18
+ }
19
+
20
+ .fds-table--small {
21
+ --table-padding: var(--fds-spacing-1) var(--fds-spacing-3);
22
+ }
23
+
24
+ .fds-table--medium {
25
+ --table-padding: var(--fds-spacing-2) var(--fds-spacing-3);
26
+ }
27
+
28
+ .fds-table--large {
29
+ --table-padding: var(--fds-spacing-3) var(--fds-spacing-3);
30
+ }
31
+
32
+ .fds-table__head {
33
+ z-index: 0;
34
+ box-sizing: border-box;
35
+ font: inherit;
36
+ font-family: inherit;
37
+ border-spacing: 0;
38
+ font-weight: 500;
39
+ border-bottom: 2px solid var(--fds-semantic-border-divider-default);
40
+ }
41
+
42
+ .fds-table__header__cell {
43
+ padding: var(--table-padding);
44
+ font: inherit;
45
+ font-family: inherit;
46
+ background-color: var(--fds-semantic-surface-neutral-default);
47
+ border-spacing: 0;
48
+ border-bottom: 2px solid var(--fds-semantic-border-divider-default);
49
+ }
50
+
51
+ .fds-table--sticky-header .fds-table__head .fds-table__header__cell {
52
+ position: sticky;
53
+ top: 0;
54
+ z-index: 1;
55
+ }
56
+
57
+ .fds-table__header__cell--sortable {
58
+ padding: 0;
59
+ }
60
+
61
+ .fds-table__header__cell--sortable button {
62
+ position: relative;
63
+ width: 100%;
64
+ border: none;
65
+ font: inherit;
66
+ font-family: inherit;
67
+ display: flex;
68
+ cursor: pointer;
69
+ gap: var(--fds-spacing-1);
70
+ align-items: center;
71
+ padding: var(--table-padding);
72
+ background-color: transparent;
73
+ z-index: 2;
74
+ }
75
+
76
+ .fds-table__header__cell--sorted button {
77
+ background-color: var(--fds-semantic-surface-neutral-subtle);
78
+ }
79
+
80
+ .fds-table__header__cell--sortable button:focus {
81
+ z-index: 3;
82
+ }
83
+
84
+ .fds-table__header__cell--sortable button svg {
85
+ font-size: 1.2em;
86
+ }
87
+
88
+ .fds-table__cell {
89
+ padding: var(--table-padding);
90
+ border-bottom: 1px solid var(--fds-semantic-border-divider-default);
91
+ background-color: var(--fds-semantic-surface-neutral-default);
92
+ }
93
+
94
+ .fds-table--zebra .fds-table__row {
95
+ border-bottom: 0;
96
+ }
97
+
98
+ .fds-table--zebra tr:nth-child(even):not(:hover) .fds-table__cell {
99
+ background-color: var(--fds-semantic-background-subtle);
100
+ }
101
+
102
+ .fds-table--border {
103
+ border-radius: var(--border-radius);
104
+ border: 1px solid var(--fds-semantic-border-neutral-default);
105
+ }
106
+
107
+ .fds-table--border .fds-table__head .fds-table__header__cell:first-of-type {
108
+ border-top-left-radius: var(--border-radius);
109
+ overflow: hidden;
110
+ }
111
+
112
+ .fds-table--border .fds-table__head .fds-table__header__cell:last-of-type {
113
+ border-top-right-radius: var(--border-radius);
114
+ overflow: hidden;
115
+ }
116
+
117
+ .fds-table--border .fds-table__row:last-of-type .fds-table__cell:first-of-type {
118
+ border-bottom-left-radius: var(--border-radius);
119
+ overflow: hidden;
120
+ }
121
+
122
+ .fds-table--border .fds-table__row:last-of-type .fds-table__cell:last-of-type {
123
+ border-bottom-right-radius: var(--border-radius);
124
+ overflow: hidden;
125
+ }
126
+
127
+ @media (hover: hover) and (pointer: fine) {
128
+ .fds-table__row:hover .fds-table__cell {
129
+ background-color: var(--fds-semantic-surface-neutral-subtle-hover);
130
+ }
131
+
132
+ .fds-table__header__cell--sortable button:hover {
133
+ background-color: var(--fds-semantic-surface-neutral-subtle-hover);
134
+ }
135
+ }
136
+ }