@fremtind/jokul 4.1.0 → 4.1.2

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 (53) hide show
  1. package/build/build-stats.html +1 -1
  2. package/build/cjs/core/tokens/build-tailwind-4.cjs +1 -1
  3. package/build/cjs/core/tokens/build-tailwind-4.cjs.map +1 -1
  4. package/build/cjs/core/tokens.cjs +1 -1
  5. package/build/cjs/core/tokens.cjs.map +1 -1
  6. package/build/cjs/core/tokens.d.cts +15 -0
  7. package/build/cjs/tailwind/tailwindPreset.cjs +1 -1
  8. package/build/cjs/tailwind/tailwindPreset.cjs.map +1 -1
  9. package/build/es/core/tokens/build-tailwind-4.js +1 -1
  10. package/build/es/core/tokens/build-tailwind-4.js.map +1 -1
  11. package/build/es/core/tokens.d.ts +15 -0
  12. package/build/es/core/tokens.js +1 -1
  13. package/build/es/core/tokens.js.map +1 -1
  14. package/build/es/tailwind/tailwindPreset.js +1 -1
  15. package/build/es/tailwind/tailwindPreset.js.map +1 -1
  16. package/package.json +2 -1
  17. package/src/tailwind/v4/jokul-tailwind.css +266 -0
  18. package/styles/components/combobox/combobox.css +1 -1
  19. package/styles/components/combobox/combobox.min.css +1 -1
  20. package/styles/components/countdown/countdown.css +2 -2
  21. package/styles/components/countdown/countdown.min.css +1 -1
  22. package/styles/components/feedback/feedback.css +2 -2
  23. package/styles/components/feedback/feedback.min.css +1 -1
  24. package/styles/components/file-input/file-input.css +9 -9
  25. package/styles/components/file-input/file-input.min.css +1 -1
  26. package/styles/components/input-group/input-group.css +2 -2
  27. package/styles/components/input-group/input-group.min.css +1 -1
  28. package/styles/components/loader/loader.css +6 -6
  29. package/styles/components/loader/loader.min.css +1 -1
  30. package/styles/components/loader/skeleton-loader.css +3 -3
  31. package/styles/components/loader/skeleton-loader.min.css +1 -1
  32. package/styles/components/message/message.css +2 -2
  33. package/styles/components/message/message.min.css +1 -1
  34. package/styles/components/progress-bar/progress-bar.css +1 -1
  35. package/styles/components/progress-bar/progress-bar.min.css +1 -1
  36. package/styles/components/segmented-control/segmented-control.css +2 -2
  37. package/styles/components/segmented-control/segmented-control.min.css +1 -1
  38. package/styles/components/system-message/system-message.css +2 -2
  39. package/styles/components/system-message/system-message.min.css +1 -1
  40. package/styles/components/text-area/text-area.css +1 -1
  41. package/styles/components/text-area/text-area.min.css +1 -1
  42. package/styles/components/text-input/text-input.css +1 -1
  43. package/styles/components/text-input/text-input.min.css +1 -1
  44. package/styles/components/toast/toast.css +4 -4
  45. package/styles/components/toast/toast.min.css +1 -1
  46. package/styles/core/core.css +15 -6
  47. package/styles/core/core.min.css +1 -1
  48. package/styles/core/jkl/legacy/_tokens.scss +30 -6
  49. package/styles/core/theme/_legacy-tokens.scss +15 -6
  50. package/styles/shared/input/shared-input-styles.scss +1 -1
  51. package/styles/styles.css +272 -27
  52. package/styles/styles.min.css +1 -1
  53. package/styles/styles.scss +2 -0
@@ -3,6 +3,15 @@
3
3
  * Do not edit directly, this file was auto-generated.
4
4
  */
5
5
 
6
+ $border-width-1: 0.0625rem !default;
7
+ $border-width-2: 0.125rem !default;
8
+ $border-width-3: 0.1875rem !default;
9
+ $border-radius-none: 0 !default;
10
+ $border-radius-xs: 0.25rem !default;
11
+ $border-radius-s: 0.5rem !default;
12
+ $border-radius-m: 0.75rem !default;
13
+ $border-radius-l: 1rem !default;
14
+ $border-radius-full: 9999px !default;
6
15
  $breakpoint-small: 0 !default;
7
16
  $breakpoint-medium: 680px !default;
8
17
  $breakpoint-large: 1200px !default;
@@ -157,22 +166,22 @@ $typography-style-heading-5-base-font-size: var(--jkl-font-size-4) !default;
157
166
  $typography-style-heading-5-base-line-height: var(--jkl-line-height-tight) !default;
158
167
  $typography-style-heading-5-base-font-weight: 700 !default;
159
168
  $typography-style-paragraph-large-small-font-size: var(--jkl-font-size-5) !default;
160
- $typography-style-paragraph-large-small-line-height: var(--jkl-line-height-tight) !default;
169
+ $typography-style-paragraph-large-small-line-height: var(--jkl-line-height-relaxed) !default;
161
170
  $typography-style-paragraph-large-small-font-weight: 400 !default;
162
171
  $typography-style-paragraph-large-base-font-size: var(--jkl-font-size-5) !default;
163
- $typography-style-paragraph-large-base-line-height: var(--jkl-line-height-tight) !default;
172
+ $typography-style-paragraph-large-base-line-height: var(--jkl-line-height-relaxed) !default;
164
173
  $typography-style-paragraph-large-base-font-weight: 400 !default;
165
174
  $typography-style-paragraph-medium-small-font-size: var(--jkl-font-size-3) !default;
166
- $typography-style-paragraph-medium-small-line-height: var(--jkl-line-height-tight) !default;
175
+ $typography-style-paragraph-medium-small-line-height: var(--jkl-line-height-relaxed) !default;
167
176
  $typography-style-paragraph-medium-small-font-weight: 400 !default;
168
177
  $typography-style-paragraph-medium-base-font-size: var(--jkl-font-size-3) !default;
169
- $typography-style-paragraph-medium-base-line-height: var(--jkl-line-height-tight) !default;
178
+ $typography-style-paragraph-medium-base-line-height: var(--jkl-line-height-relaxed) !default;
170
179
  $typography-style-paragraph-medium-base-font-weight: 400 !default;
171
180
  $typography-style-paragraph-small-small-font-size: var(--jkl-font-size-2) !default;
172
- $typography-style-paragraph-small-small-line-height: var(--jkl-line-height-tight) !default;
181
+ $typography-style-paragraph-small-small-line-height: var(--jkl-line-height-relaxed) !default;
173
182
  $typography-style-paragraph-small-small-font-weight: 400 !default;
174
183
  $typography-style-paragraph-small-base-font-size: var(--jkl-font-size-2) !default;
175
- $typography-style-paragraph-small-base-line-height: var(--jkl-line-height-tight) !default;
184
+ $typography-style-paragraph-small-base-line-height: var(--jkl-line-height-relaxed) !default;
176
185
  $typography-style-paragraph-small-base-font-weight: 400 !default;
177
186
  $typography-style-text-large-small-font-size: var(--jkl-font-size-5) !default;
178
187
  $typography-style-text-large-small-line-height: var(--jkl-line-height-tight) !default;
@@ -266,6 +275,21 @@ $typography-small-base-line-height: 1.5rem !default;
266
275
  $typography-small-base-font-weight: 400 !default;
267
276
 
268
277
  $tokens: (
278
+ 'border': (
279
+ 'width': (
280
+ '1': $border-width-1,
281
+ '2': $border-width-2,
282
+ '3': $border-width-3
283
+ ),
284
+ 'radius': (
285
+ 'none': $border-radius-none,
286
+ 'xs': $border-radius-xs,
287
+ 's': $border-radius-s,
288
+ 'm': $border-radius-m,
289
+ 'l': $border-radius-l,
290
+ 'full': $border-radius-full
291
+ )
292
+ ),
269
293
  'breakpoint': (
270
294
  'small': $breakpoint-small,
271
295
  'medium': $breakpoint-medium,
@@ -5,6 +5,15 @@
5
5
 
6
6
  @layer jokul.theme {
7
7
  :root {
8
+ --jkl-border-width-1: 0.0625rem;
9
+ --jkl-border-width-2: 0.125rem;
10
+ --jkl-border-width-3: 0.1875rem;
11
+ --jkl-border-radius-none: 0;
12
+ --jkl-border-radius-xs: 0.25rem;
13
+ --jkl-border-radius-s: 0.5rem;
14
+ --jkl-border-radius-m: 0.75rem;
15
+ --jkl-border-radius-l: 1rem;
16
+ --jkl-border-radius-full: 9999px;
8
17
  --jkl-breakpoint-small: 0;
9
18
  --jkl-breakpoint-medium: 680px;
10
19
  --jkl-breakpoint-large: 1200px;
@@ -159,22 +168,22 @@
159
168
  --jkl-typography-style-heading-5-base-line-height: var(--jkl-line-height-tight);
160
169
  --jkl-typography-style-heading-5-base-font-weight: 700;
161
170
  --jkl-typography-style-paragraph-large-small-font-size: var(--jkl-font-size-5);
162
- --jkl-typography-style-paragraph-large-small-line-height: var(--jkl-line-height-tight);
171
+ --jkl-typography-style-paragraph-large-small-line-height: var(--jkl-line-height-relaxed);
163
172
  --jkl-typography-style-paragraph-large-small-font-weight: 400;
164
173
  --jkl-typography-style-paragraph-large-base-font-size: var(--jkl-font-size-5);
165
- --jkl-typography-style-paragraph-large-base-line-height: var(--jkl-line-height-tight);
174
+ --jkl-typography-style-paragraph-large-base-line-height: var(--jkl-line-height-relaxed);
166
175
  --jkl-typography-style-paragraph-large-base-font-weight: 400;
167
176
  --jkl-typography-style-paragraph-medium-small-font-size: var(--jkl-font-size-3);
168
- --jkl-typography-style-paragraph-medium-small-line-height: var(--jkl-line-height-tight);
177
+ --jkl-typography-style-paragraph-medium-small-line-height: var(--jkl-line-height-relaxed);
169
178
  --jkl-typography-style-paragraph-medium-small-font-weight: 400;
170
179
  --jkl-typography-style-paragraph-medium-base-font-size: var(--jkl-font-size-3);
171
- --jkl-typography-style-paragraph-medium-base-line-height: var(--jkl-line-height-tight);
180
+ --jkl-typography-style-paragraph-medium-base-line-height: var(--jkl-line-height-relaxed);
172
181
  --jkl-typography-style-paragraph-medium-base-font-weight: 400;
173
182
  --jkl-typography-style-paragraph-small-small-font-size: var(--jkl-font-size-2);
174
- --jkl-typography-style-paragraph-small-small-line-height: var(--jkl-line-height-tight);
183
+ --jkl-typography-style-paragraph-small-small-line-height: var(--jkl-line-height-relaxed);
175
184
  --jkl-typography-style-paragraph-small-small-font-weight: 400;
176
185
  --jkl-typography-style-paragraph-small-base-font-size: var(--jkl-font-size-2);
177
- --jkl-typography-style-paragraph-small-base-line-height: var(--jkl-line-height-tight);
186
+ --jkl-typography-style-paragraph-small-base-line-height: var(--jkl-line-height-relaxed);
178
187
  --jkl-typography-style-paragraph-small-base-font-weight: 400;
179
188
  --jkl-typography-style-text-large-small-font-size: var(--jkl-font-size-5);
180
189
  --jkl-typography-style-text-large-small-line-height: var(--jkl-line-height-tight);
@@ -9,7 +9,7 @@
9
9
  --jkl-text-input-action-button-size: var(--jkl-unit-60);
10
10
  --jkl-text-input-action-button-icon-size: var(--jkl-unit-30);
11
11
  --jkl-text-input-action-button-padding: var(--jkl-unit-10) 0;
12
- --jkl-text-input-action-button-focus-position: var(jkl-unit-05);
12
+ --jkl-text-input-action-button-focus-position: var(--jkl-unit-05);
13
13
  --text-color: var(--jkl-color-text-default);
14
14
  --background-color: var(--jkl-color-background-input-base);
15
15
  --border-color: var(--jkl-color-border-input);
package/styles/styles.css CHANGED
@@ -81,7 +81,7 @@
81
81
  --jkl-text-input-action-button-size: var(--jkl-unit-60);
82
82
  --jkl-text-input-action-button-icon-size: var(--jkl-unit-30);
83
83
  --jkl-text-input-action-button-padding: var(--jkl-unit-10) 0;
84
- --jkl-text-input-action-button-focus-position: var(jkl-unit-05);
84
+ --jkl-text-input-action-button-focus-position: var(--jkl-unit-05);
85
85
  --text-color: var(--jkl-color-text-default);
86
86
  --background-color: var(--jkl-color-background-input-base);
87
87
  --border-color: var(--jkl-color-border-input);
@@ -468,7 +468,7 @@
468
468
  --color: var(--jkl-color-text-default);
469
469
  }
470
470
  .jkl-form-support-label--error .jkl-form-support-label__icon, .jkl-form-support-label--warning .jkl-form-support-label__icon, .jkl-form-support-label--success .jkl-form-support-label__icon {
471
- animation: 400ms cubic-bezier(0, 0, 0.3, 1) 250ms jkl-support-icon-entrance-uai7f53 forwards;
471
+ animation: 400ms cubic-bezier(0, 0, 0.3, 1) 250ms jkl-support-icon-entrance-u6ii6b2 forwards;
472
472
  }
473
473
  .jkl-form-support-label--sr-only {
474
474
  border: 0 !important;
@@ -536,7 +536,7 @@
536
536
  .jkl-label:has(+ .jkl-input-group-description) {
537
537
  margin-block-end: var(--jkl-spacing-4);
538
538
  }
539
- @keyframes jkl-support-icon-entrance-uai7f53 {
539
+ @keyframes jkl-support-icon-entrance-u6ii6b2 {
540
540
  0% {
541
541
  margin-right: 0;
542
542
  opacity: 0;
@@ -888,22 +888,22 @@
888
888
  animation: 2500ms linear infinite;
889
889
  }
890
890
  .jkl-loader__dot--left {
891
- animation-name: jkl-loader-left-spin-uai7f5e;
891
+ animation-name: jkl-loader-left-spin-u6ii6bl;
892
892
  margin-right: calc(var(--jkl-loader-spacing) * 0.9);
893
893
  }
894
894
  .jkl-loader__dot--middle {
895
- animation-name: jkl-loader-middle-spin-uai7f5r;
895
+ animation-name: jkl-loader-middle-spin-u6ii6ck;
896
896
  margin-right: var(--jkl-loader-spacing);
897
897
  }
898
898
  .jkl-loader__dot--right {
899
- animation-name: jkl-loader-right-spin-uai7f5y;
899
+ animation-name: jkl-loader-right-spin-u6ii6co;
900
900
  }
901
901
  @media screen and (forced-colors: active) {
902
902
  .jkl-loader__dot {
903
903
  background-color: CanvasText;
904
904
  }
905
905
  }
906
- @keyframes jkl-loader-left-spin-uai7f5e {
906
+ @keyframes jkl-loader-left-spin-u6ii6bl {
907
907
  0% {
908
908
  transform: rotate(0) scale(0);
909
909
  }
@@ -917,7 +917,7 @@
917
917
  transform: rotate(180deg) scale(0);
918
918
  }
919
919
  }
920
- @keyframes jkl-loader-middle-spin-uai7f5r {
920
+ @keyframes jkl-loader-middle-spin-u6ii6ck {
921
921
  0% {
922
922
  transform: rotate(20deg) scale(0);
923
923
  }
@@ -934,7 +934,7 @@
934
934
  transform: rotate(200deg) scale(0);
935
935
  }
936
936
  }
937
- @keyframes jkl-loader-right-spin-uai7f5y {
937
+ @keyframes jkl-loader-right-spin-u6ii6co {
938
938
  0% {
939
939
  transform: rotate(40deg) scale(0);
940
940
  }
@@ -974,7 +974,7 @@
974
974
  @media screen and (forced-colors: active) {
975
975
  .jkl-skeleton-element {
976
976
  border: 1px solid CanvasText;
977
- animation: 2s ease infinite jkl-blink-uai7f60;
977
+ animation: 2s ease infinite jkl-blink-u6ii6db;
978
978
  }
979
979
  }
980
980
  .jkl-skeleton-input {
@@ -1022,10 +1022,10 @@
1022
1022
  }
1023
1023
  @media screen and (forced-colors: active) {
1024
1024
  .jkl-skeleton-table {
1025
- animation: 2s ease-in-out infinite jkl-blink-uai7f60;
1025
+ animation: 2s ease-in-out infinite jkl-blink-u6ii6db;
1026
1026
  }
1027
1027
  }
1028
- @keyframes jkl-blink-uai7f60 {
1028
+ @keyframes jkl-blink-u6ii6db {
1029
1029
  0% {
1030
1030
  opacity: 1;
1031
1031
  }
@@ -1513,7 +1513,7 @@
1513
1513
  --jkl-text-input-action-button-size: var(--jkl-unit-60);
1514
1514
  --jkl-text-input-action-button-icon-size: var(--jkl-unit-30);
1515
1515
  --jkl-text-input-action-button-padding: var(--jkl-unit-10) 0;
1516
- --jkl-text-input-action-button-focus-position: var(jkl-unit-05);
1516
+ --jkl-text-input-action-button-focus-position: var(--jkl-unit-05);
1517
1517
  --text-color: var(--jkl-color-text-default);
1518
1518
  --background-color: var(--jkl-color-background-input-base);
1519
1519
  --border-color: var(--jkl-color-border-input);
@@ -2012,10 +2012,10 @@
2012
2012
  }
2013
2013
  }
2014
2014
  .jkl-countdown__tracker {
2015
- animation: jkl-downcount-uai7f77 var(--duration) linear forwards;
2015
+ animation: jkl-downcount-u6ii6en var(--duration) linear forwards;
2016
2016
  animation-play-state: var(--play-state, running);
2017
2017
  }
2018
- @keyframes jkl-downcount-uai7f77 {
2018
+ @keyframes jkl-downcount-u6ii6en {
2019
2019
  from {
2020
2020
  width: 100%;
2021
2021
  }
@@ -2508,12 +2508,12 @@
2508
2508
  --jkl-icon-size: 1.2em;
2509
2509
  }
2510
2510
  .jkl-feedback__fade-in {
2511
- animation: jkl-show-uai7f7r 0.25s ease-out;
2511
+ animation: jkl-show-u6ii6f7 0.25s ease-out;
2512
2512
  }
2513
2513
  .jkl-feedback__buttons {
2514
2514
  display: flex;
2515
2515
  }
2516
- @keyframes jkl-show-uai7f7r {
2516
+ @keyframes jkl-show-u6ii6f7 {
2517
2517
  from {
2518
2518
  transform: translate3d(0, 0.5rem, 0);
2519
2519
  opacity: 0;
@@ -2730,7 +2730,7 @@
2730
2730
  --background-color: var(--jkl-color-background-alert-success);
2731
2731
  }
2732
2732
  .jkl-message--dismissed {
2733
- animation: jkl-dismiss-uai7f8j 400ms ease-in-out forwards;
2733
+ animation: jkl-dismiss-u6ii6fs 400ms ease-in-out forwards;
2734
2734
  transition: visibility 0ms 400ms;
2735
2735
  visibility: hidden;
2736
2736
  }
@@ -2752,7 +2752,7 @@
2752
2752
  .jkl-form-error-message {
2753
2753
  padding-bottom: calc(var(--jkl-unit-base) * 5);
2754
2754
  }
2755
- @keyframes jkl-dismiss-uai7f8j {
2755
+ @keyframes jkl-dismiss-u6ii6fs {
2756
2756
  from {
2757
2757
  opacity: 1;
2758
2758
  transform: translate3d(0, 0, 0);
@@ -2872,7 +2872,7 @@
2872
2872
  --jkl-text-input-action-button-size: var(--jkl-unit-60);
2873
2873
  --jkl-text-input-action-button-icon-size: var(--jkl-unit-30);
2874
2874
  --jkl-text-input-action-button-padding: var(--jkl-unit-10) 0;
2875
- --jkl-text-input-action-button-focus-position: var(jkl-unit-05);
2875
+ --jkl-text-input-action-button-focus-position: var(--jkl-unit-05);
2876
2876
  --text-color: var(--jkl-color-text-default);
2877
2877
  --background-color: var(--jkl-color-background-input-base);
2878
2878
  --border-color: var(--jkl-color-border-input);
@@ -3136,6 +3136,251 @@
3136
3136
  max-height: 100%;
3137
3137
  }
3138
3138
  }
3139
+ @layer jokul.components {
3140
+ .jkl-file {
3141
+ --jkl-file-padding: var(--jkl-unit-10);
3142
+ --jkl-file-thumbnail-width: var(--jkl-unit-70);
3143
+ --jkl-file-thumbnail-max-height: var(--jkl-unit-90);
3144
+ --jkl-file-thumbnail-aspect-ratio: 1;
3145
+ --jkl-file-gap: var(--jkl-unit-10) var(--jkl-unit-20);
3146
+ --jkl-file-button-width: var(--jkl-unit-50);
3147
+ --text-color: var(--jkl-color-text-default);
3148
+ --border: 1px solid var(--jkl-color-border-separator);
3149
+ --border-radius: 2px;
3150
+ --bg: transparent;
3151
+ --transition-time: 250ms;
3152
+ }
3153
+ .jkl-file__content {
3154
+ transition-timing-function: ease;
3155
+ transition-duration: 100ms;
3156
+ transition-property: background-color, border-color, color;
3157
+ color: var(--jkl-color-text-default);
3158
+ padding: var(--jkl-file-padding);
3159
+ border: var(--border);
3160
+ border-radius: var(--border-radius);
3161
+ background: var(--bg);
3162
+ display: grid;
3163
+ grid-template-columns: var(--jkl-file-thumbnail-width) 1fr var(--jkl-file-button-width);
3164
+ grid-template-areas: "image text button";
3165
+ gap: var(--jkl-file-gap);
3166
+ align-items: center;
3167
+ height: fit-content;
3168
+ }
3169
+ .jkl-file__content__name {
3170
+ font-size: var(--jkl-font-size-2);
3171
+ line-height: var(--jkl-line-height-relaxed);
3172
+ font-weight: 400;
3173
+ --jkl-icon-weight: 300;
3174
+ --jkl-icon-size: 1.2em;
3175
+ grid-area: text;
3176
+ /* stylelint-disable-next-line declaration-property-value-keyword-no-deprecated */
3177
+ word-break: break-word;
3178
+ }
3179
+ .jkl-file__content__name__size {
3180
+ word-break: keep-all;
3181
+ }
3182
+ .jkl-file__content__delete {
3183
+ aspect-ratio: 1;
3184
+ grid-area: button;
3185
+ }
3186
+ .jkl-file__content__thumbnail {
3187
+ width: 100%;
3188
+ aspect-ratio: var(--jkl-file-thumbnail-aspect-ratio);
3189
+ object-fit: cover;
3190
+ max-height: var(--jkl-file-thumbnail-max-height);
3191
+ grid-area: image;
3192
+ position: relative;
3193
+ display: flex;
3194
+ align-items: center;
3195
+ justify-content: center;
3196
+ background: var(--jkl-color-background-container-low);
3197
+ border-radius: 2px;
3198
+ overflow: hidden;
3199
+ container-type: inline-size;
3200
+ anchor-name: --thumb;
3201
+ anchor-scope: all;
3202
+ outline: 1px solid color-mix(in srgb, currentColor 3%, transparent);
3203
+ }
3204
+ .jkl-file__content__thumbnail::before, .jkl-file__content__thumbnail::after {
3205
+ position: absolute;
3206
+ z-index: 1;
3207
+ }
3208
+ .jkl-file__content__thumbnail::after {
3209
+ content: ""/"Laster opp";
3210
+ position-anchor: --thumb;
3211
+ position-area: center;
3212
+ height: 25%;
3213
+ border-radius: 1px;
3214
+ aspect-ratio: 1;
3215
+ scale: 0;
3216
+ background: var(--text-color);
3217
+ animation: spin 5s infinite forwards linear;
3218
+ transition: display var(--transition-time) allow-discrete ease-in, scale var(--transition-time) ease-in;
3219
+ }
3220
+ @starting-style {
3221
+ .jkl-file__content__thumbnail::after {
3222
+ scale: 0;
3223
+ }
3224
+ }
3225
+ .jkl-file__content__thumbnail img {
3226
+ opacity: 1;
3227
+ transition: opacity var(--transition-time) ease-in-out;
3228
+ }
3229
+ .jkl-file__content__thumbnail img[src] {
3230
+ width: 100%;
3231
+ height: 100%;
3232
+ object-fit: cover;
3233
+ }
3234
+ .jkl-file[class*=card] {
3235
+ --jkl-file-thumbnail-width: 100%;
3236
+ --jkl-file-thumbnail-aspect-ratio: 16/9;
3237
+ }
3238
+ .jkl-file[class*=card] .jkl-file__content {
3239
+ grid-template-columns: 1fr var(--jkl-file-button-width);
3240
+ grid-template-rows: var(--jkl-file-thumbnail-max-height) auto;
3241
+ grid-template-areas: "image image" "text button";
3242
+ }
3243
+ .jkl-file:not([data-state*=loading]) .jkl-file__content__thumbnail:not(:has(img[src]))::before {
3244
+ font-size: var(--jkl-font-size-2);
3245
+ line-height: var(--jkl-line-height-relaxed);
3246
+ font-weight: 400;
3247
+ --jkl-icon-weight: 300;
3248
+ --jkl-icon-size: 1.2em;
3249
+ content: attr(data-filetype);
3250
+ }
3251
+ .jkl-file[data-state=loading]:not(:has(.jkl-file__support-label)) .jkl-file__content__thumbnail img {
3252
+ opacity: 0;
3253
+ }
3254
+ .jkl-file[data-state=loading]:not(:has(.jkl-file__support-label)) .jkl-file__content__thumbnail::after {
3255
+ display: block;
3256
+ scale: 1;
3257
+ }
3258
+ .jkl-file[data-state=error] {
3259
+ --bg: var(--jkl-color-functional-error);
3260
+ }
3261
+ .jkl-file[data-state=error],
3262
+ .jkl-file[data-state=error] a,
3263
+ .jkl-file[data-state=error] a:hover,
3264
+ .jkl-file[data-state=error] button,
3265
+ .jkl-file[data-state=error] span {
3266
+ --text-color: var(--jkl-color-text-on-alert);
3267
+ --link-color: var(--text-color);
3268
+ --jkl-color-border-action: currentColor;
3269
+ }
3270
+ @keyframes spin {
3271
+ from {
3272
+ transform: rotate(0turn);
3273
+ }
3274
+ to {
3275
+ transform: rotate(1turn);
3276
+ }
3277
+ }
3278
+ }
3279
+ @layer jokul.components {
3280
+ .jkl-file-input {
3281
+ --jkl-file-input-dropzone-padding: var(--jkl-unit-30);
3282
+ --jkl-file-input-dropzone-gap: var(--jkl-unit-30);
3283
+ --jkl-file-cta-gap: var(--jkl-unit-30);
3284
+ --jkl-file-cta-with-files-gap: var(--jkl-unit-15);
3285
+ --jkl-file-list-gap: var(--jkl-unit-10);
3286
+ }
3287
+ .jkl-file-input__dropzone {
3288
+ --border-color: var(--jkl-color-border-input);
3289
+ --background-color: transparent;
3290
+ border: var(--border-color) 1px dashed;
3291
+ border-radius: 0.25rem;
3292
+ padding: var(--jkl-file-input-dropzone-padding);
3293
+ display: flex;
3294
+ justify-content: center;
3295
+ align-items: center;
3296
+ flex-direction: column;
3297
+ flex-wrap: nowrap;
3298
+ gap: var(--jkl-file-input-dropzone-gap);
3299
+ transition-timing-function: ease;
3300
+ transition-duration: 150ms;
3301
+ transition-property: background-color;
3302
+ background-color: var(--background-color);
3303
+ }
3304
+ .jkl-file-input__dropzone--enter {
3305
+ --border-color: var(--jkl-color-border-input-focus);
3306
+ --background-color: var(--jkl-color-background-container-high);
3307
+ border-style: solid;
3308
+ }
3309
+ .jkl-file-input__dropzone__drag-text {
3310
+ font-size: var(--jkl-font-size-2);
3311
+ line-height: var(--jkl-line-height-relaxed);
3312
+ font-weight: 400;
3313
+ --jkl-icon-weight: 300;
3314
+ --jkl-icon-size: 1.2em;
3315
+ }
3316
+ @media (width >= 0) and (max-width: 679px) {
3317
+ .jkl-file-input__dropzone__drag-text {
3318
+ display: none;
3319
+ }
3320
+ }
3321
+ .jkl-file-input__call-to-action {
3322
+ display: flex;
3323
+ justify-content: center;
3324
+ align-items: center;
3325
+ flex-direction: column;
3326
+ flex-wrap: nowrap;
3327
+ }
3328
+ .jkl-file-input__call-to-action:has(:focus-visible) .jkl-button {
3329
+ transform: scale(1.05);
3330
+ outline: 3px solid var(--jkl-color-border-action);
3331
+ outline-offset: 3px;
3332
+ }
3333
+ .jkl-file-input__call-to-action:has(:focus-visible) .jkl-button:active {
3334
+ transform: scale(1);
3335
+ }
3336
+ .jkl-file-input__dropzone-hint {
3337
+ margin-top: var(--jkl-unit-30);
3338
+ }
3339
+ .jkl-file-input--has-files .jkl-file-input__dropzone-hint {
3340
+ display: none;
3341
+ }
3342
+ .jkl-file-input__max-size-text {
3343
+ font-size: var(--jkl-font-size-2);
3344
+ line-height: var(--jkl-line-height-tight);
3345
+ font-weight: 400;
3346
+ --jkl-icon-weight: 300;
3347
+ color: var(--jkl-color-text-subdued);
3348
+ margin-top: var(--jkl-unit-30);
3349
+ }
3350
+ .jkl-file-input__files {
3351
+ list-style: none;
3352
+ margin: 0;
3353
+ padding: 0;
3354
+ display: flex;
3355
+ flex-direction: column;
3356
+ gap: var(--jkl-file-list-gap);
3357
+ }
3358
+ .jkl-file-input--small .jkl-file-input__dropzone-hint {
3359
+ margin: 0;
3360
+ display: block;
3361
+ }
3362
+ .jkl-file-input--small .jkl-file-input__dropzone {
3363
+ padding: var(--jkl-unit-20);
3364
+ gap: var(--jkl-unit-20);
3365
+ margin-bottom: var(--jkl-unit-20);
3366
+ justify-content: flex-start;
3367
+ flex-direction: row;
3368
+ max-width: fit-content;
3369
+ }
3370
+ .jkl-file-input--small .jkl-file-input__call-to-action {
3371
+ font-size: var(--jkl-font-size-2);
3372
+ line-height: var(--jkl-line-height-tight);
3373
+ font-weight: 400;
3374
+ --jkl-icon-weight: 300;
3375
+ gap: calc(var(--jkl-unit-base) * 1.5);
3376
+ flex-direction: row;
3377
+ justify-content: flex-start;
3378
+ }
3379
+ .jkl-file-input--small .jkl-file-input__max-size-text {
3380
+ margin-top: calc(-1 * var(--jkl-unit-15));
3381
+ margin-bottom: var(--jkl-unit-20);
3382
+ }
3383
+ }
3139
3384
  @layer jokul.components {
3140
3385
  .jkl-link-list {
3141
3386
  --border: 1px solid var(--jkl-color-border-separator);
@@ -3855,7 +4100,7 @@
3855
4100
  transition-timing-function: ease;
3856
4101
  transition-duration: 150ms;
3857
4102
  }
3858
- @keyframes jkl-downcount-uai7f8p {
4103
+ @keyframes jkl-downcount-u6ii6gf {
3859
4104
  from {
3860
4105
  width: 100%;
3861
4106
  }
@@ -4365,7 +4610,7 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-select--beta s
4365
4610
  margin-bottom: 0;
4366
4611
  }
4367
4612
  .jkl-system-message--dismissed {
4368
- animation: jkl-dismiss-uai7fa8 400ms forwards;
4613
+ animation: jkl-dismiss-u6ii6ha 400ms forwards;
4369
4614
  transition: block 400ms 400ms;
4370
4615
  }
4371
4616
  .jkl-system-message--info {
@@ -4395,7 +4640,7 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-select--beta s
4395
4640
  border-width: 4px;
4396
4641
  }
4397
4642
  }
4398
- @keyframes jkl-dismiss-uai7fa8 {
4643
+ @keyframes jkl-dismiss-u6ii6ha {
4399
4644
  from {
4400
4645
  opacity: 1;
4401
4646
  transform: translateY(0);
@@ -5232,12 +5477,12 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-select--beta s
5232
5477
  }
5233
5478
  .jkl-toast[data-animation=entering],
5234
5479
  .jkl-toast[data-animation=queued] {
5235
- animation: jkl-entering-uai7fb2 200ms ease-out forwards;
5480
+ animation: jkl-entering-u6ii6i8 200ms ease-out forwards;
5236
5481
  }
5237
5482
  .jkl-toast[data-animation=exiting] {
5238
- animation: jkl-exiting-uai7fbt 150ms ease-in forwards;
5483
+ animation: jkl-exiting-u6ii6iq 150ms ease-in forwards;
5239
5484
  }
5240
- @keyframes jkl-entering-uai7fb2 {
5485
+ @keyframes jkl-entering-u6ii6i8 {
5241
5486
  from {
5242
5487
  opacity: 0;
5243
5488
  transform: translate3d(0, 50%, 0);
@@ -5247,7 +5492,7 @@ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-select--beta s
5247
5492
  transform: translate3d(0, 0, 0);
5248
5493
  }
5249
5494
  }
5250
- @keyframes jkl-exiting-uai7fbt {
5495
+ @keyframes jkl-exiting-u6ii6iq {
5251
5496
  from {
5252
5497
  opacity: 1;
5253
5498
  transform: translate3d(0, 0, 0);