@fremtind/jokul 0.69.1 → 0.70.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 (198) hide show
  1. package/build/build-stats.html +1 -1
  2. package/build/cjs/components/expander/types.d.cts +2 -2
  3. package/build/cjs/components/file/File.cjs +2 -0
  4. package/build/cjs/components/file/File.cjs.map +1 -0
  5. package/build/cjs/components/file/File.d.cts +3 -0
  6. package/build/cjs/components/file/index.cjs +2 -0
  7. package/build/cjs/components/file/index.cjs.map +1 -0
  8. package/build/cjs/components/file/index.d.cts +2 -0
  9. package/build/cjs/components/file/stories/File.stories.cjs +2 -0
  10. package/build/cjs/components/file/stories/File.stories.cjs.map +1 -0
  11. package/build/cjs/components/file/stories/File.stories.d.cts +33 -0
  12. package/build/cjs/components/file/types.cjs +2 -0
  13. package/build/cjs/components/file/types.cjs.map +1 -0
  14. package/build/cjs/components/file/types.d.cts +12 -0
  15. package/build/cjs/components/file-input/FileInput.cjs.map +1 -1
  16. package/build/cjs/components/file-input/FileInput.d.cts +1 -24
  17. package/build/cjs/components/file-input/index.cjs +1 -1
  18. package/build/cjs/components/file-input/index.d.cts +2 -3
  19. package/build/cjs/components/file-input/internal/Dropzone.cjs +1 -1
  20. package/build/cjs/components/file-input/internal/Dropzone.cjs.map +1 -1
  21. package/build/cjs/components/file-input/internal/Input.cjs +1 -1
  22. package/build/cjs/components/file-input/internal/Input.cjs.map +1 -1
  23. package/build/cjs/components/file-input/internal/fileInputContext.cjs.map +1 -1
  24. package/build/cjs/components/file-input/internal/fileInputContext.d.cts +3 -3
  25. package/build/cjs/components/file-input/internal/validateFileInputFiles.cjs +2 -0
  26. package/build/cjs/components/file-input/internal/validateFileInputFiles.cjs.map +1 -0
  27. package/build/cjs/components/file-input/internal/validateFileInputFiles.d.cts +2 -0
  28. package/build/cjs/components/file-input/stories/FileInput.stories.cjs +1 -1
  29. package/build/cjs/components/file-input/stories/FileInput.stories.cjs.map +1 -1
  30. package/build/cjs/components/file-input/types.cjs +1 -1
  31. package/build/cjs/components/file-input/types.d.cts +29 -5
  32. package/build/cjs/components/index.cjs +1 -1
  33. package/build/cjs/components/message/types.d.cts +2 -7
  34. package/build/cjs/components/select/Select.cjs.map +1 -1
  35. package/build/cjs/components/toggle-switch/usePillStyles.cjs.map +1 -1
  36. package/build/cjs/components/toggle-switch/usePillStyles.d.cts +1 -1
  37. package/build/cjs/hooks/useAnimatedHeight/types.d.cts +3 -3
  38. package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeightBetween.cjs.map +1 -1
  39. package/build/cjs/hooks/useAnimatedHeight/useAutoAnimateHeight.cjs.map +1 -1
  40. package/build/cjs/hooks/useAnimatedHeight/useAutoAnimateHeight.d.cts +2 -2
  41. package/build/cjs/hooks/useClickOutside/useClickOutside.cjs.map +1 -1
  42. package/build/cjs/hooks/useClickOutside/useClickOutside.d.cts +1 -1
  43. package/build/cjs/hooks/useFocusOutside/useFocusOutside.cjs.map +1 -1
  44. package/build/cjs/hooks/useFocusOutside/useFocusOutside.d.cts +1 -1
  45. package/build/cjs/hooks/useKeyListener/useKeyListener.cjs.map +1 -1
  46. package/build/cjs/hooks/useKeyListener/useKeyListener.d.cts +1 -1
  47. package/build/cjs/hooks/useListNavigation/useListNavigation.cjs.map +1 -1
  48. package/build/cjs/hooks/useListNavigation/useListNavigation.d.cts +1 -1
  49. package/build/cjs/hooks/useMutationObserver/useMutationObserver.cjs.map +1 -1
  50. package/build/cjs/hooks/useMutationObserver/useMutationObserver.d.cts +1 -1
  51. package/build/cjs/hooks/useScrollIntoView/useScrollIntoView.cjs.map +1 -1
  52. package/build/cjs/hooks/useScrollIntoView/useScrollIntoView.d.cts +1 -1
  53. package/build/cjs/index.cjs +1 -1
  54. package/build/es/components/expander/types.d.ts +2 -2
  55. package/build/es/components/file/File.d.ts +3 -0
  56. package/build/es/components/file/File.js +2 -0
  57. package/build/es/components/file/File.js.map +1 -0
  58. package/build/es/components/file/index.d.ts +2 -0
  59. package/build/es/components/file/index.js +2 -0
  60. package/build/es/components/file/index.js.map +1 -0
  61. package/build/es/components/file/stories/File.stories.d.ts +33 -0
  62. package/build/es/components/file/stories/File.stories.js +2 -0
  63. package/build/es/components/file/stories/File.stories.js.map +1 -0
  64. package/build/es/components/file/types.d.ts +12 -0
  65. package/build/es/components/file/types.js +2 -0
  66. package/build/es/components/file/types.js.map +1 -0
  67. package/build/es/components/file-input/FileInput.d.ts +1 -24
  68. package/build/es/components/file-input/FileInput.js.map +1 -1
  69. package/build/es/components/file-input/index.d.ts +2 -3
  70. package/build/es/components/file-input/index.js +1 -1
  71. package/build/es/components/file-input/internal/Dropzone.js +1 -1
  72. package/build/es/components/file-input/internal/Dropzone.js.map +1 -1
  73. package/build/es/components/file-input/internal/Input.js +1 -1
  74. package/build/es/components/file-input/internal/Input.js.map +1 -1
  75. package/build/es/components/file-input/internal/fileInputContext.d.ts +3 -3
  76. package/build/es/components/file-input/internal/fileInputContext.js.map +1 -1
  77. package/build/es/components/file-input/internal/validateFileInputFiles.d.ts +2 -0
  78. package/build/es/components/file-input/internal/{validateFile.js → validateFileInputFiles.js} +2 -2
  79. package/build/es/components/file-input/internal/validateFileInputFiles.js.map +1 -0
  80. package/build/es/components/file-input/stories/FileInput.stories.js +1 -1
  81. package/build/es/components/file-input/stories/FileInput.stories.js.map +1 -1
  82. package/build/es/components/file-input/types.d.ts +29 -5
  83. package/build/es/components/file-input/types.js +1 -1
  84. package/build/es/components/index.js +1 -1
  85. package/build/es/components/message/types.d.ts +2 -7
  86. package/build/es/components/select/Select.js.map +1 -1
  87. package/build/es/components/toggle-switch/usePillStyles.d.ts +1 -1
  88. package/build/es/components/toggle-switch/usePillStyles.js.map +1 -1
  89. package/build/es/hooks/useAnimatedHeight/types.d.ts +3 -3
  90. package/build/es/hooks/useAnimatedHeight/useAnimatedHeightBetween.js.map +1 -1
  91. package/build/es/hooks/useAnimatedHeight/useAutoAnimateHeight.d.ts +2 -2
  92. package/build/es/hooks/useAnimatedHeight/useAutoAnimateHeight.js.map +1 -1
  93. package/build/es/hooks/useClickOutside/useClickOutside.d.ts +1 -1
  94. package/build/es/hooks/useClickOutside/useClickOutside.js.map +1 -1
  95. package/build/es/hooks/useFocusOutside/useFocusOutside.d.ts +1 -1
  96. package/build/es/hooks/useFocusOutside/useFocusOutside.js.map +1 -1
  97. package/build/es/hooks/useKeyListener/useKeyListener.d.ts +1 -1
  98. package/build/es/hooks/useKeyListener/useKeyListener.js.map +1 -1
  99. package/build/es/hooks/useListNavigation/useListNavigation.d.ts +1 -1
  100. package/build/es/hooks/useListNavigation/useListNavigation.js.map +1 -1
  101. package/build/es/hooks/useMutationObserver/useMutationObserver.d.ts +1 -1
  102. package/build/es/hooks/useMutationObserver/useMutationObserver.js.map +1 -1
  103. package/build/es/hooks/useScrollIntoView/useScrollIntoView.d.ts +1 -1
  104. package/build/es/hooks/useScrollIntoView/useScrollIntoView.js.map +1 -1
  105. package/build/es/index.js +1 -1
  106. package/build/jokul.css +1 -1
  107. package/package.json +12 -1
  108. package/styles/components/checkbox/checkbox.css +4 -4
  109. package/styles/components/checkbox/checkbox.min.css +1 -1
  110. package/styles/components/checkbox-panel/checkbox-panel.css +2 -2
  111. package/styles/components/checkbox-panel/checkbox-panel.min.css +1 -1
  112. package/styles/components/countdown/countdown.css +2 -2
  113. package/styles/components/countdown/countdown.min.css +1 -1
  114. package/styles/components/feedback/feedback.css +2 -2
  115. package/styles/components/feedback/feedback.min.css +1 -1
  116. package/styles/components/file/_index.scss +3 -0
  117. package/styles/components/file/file.css +144 -0
  118. package/styles/components/file/file.min.css +1 -0
  119. package/styles/components/file/file.scss +164 -0
  120. package/styles/components/file-input/_index.scss +1 -0
  121. package/styles/components/file-input/file-input.css +511 -129
  122. package/styles/components/file-input/file-input.min.css +1 -1
  123. package/styles/components/file-input/file-input.scss +1 -1
  124. package/styles/components/input-group/input-group.css +2 -2
  125. package/styles/components/input-group/input-group.min.css +1 -1
  126. package/styles/components/loader/loader.css +6 -6
  127. package/styles/components/loader/loader.min.css +1 -1
  128. package/styles/components/loader/skeleton-loader.css +5 -5
  129. package/styles/components/loader/skeleton-loader.min.css +1 -1
  130. package/styles/components/message/message.css +2 -2
  131. package/styles/components/message/message.min.css +1 -1
  132. package/styles/components/progress-bar/progress-bar.css +1 -1
  133. package/styles/components/progress-bar/progress-bar.min.css +1 -1
  134. package/styles/components/radio-button/radio-button.css +2 -2
  135. package/styles/components/radio-button/radio-button.min.css +1 -1
  136. package/styles/components/radio-panel/radio-panel.css +2 -2
  137. package/styles/components/radio-panel/radio-panel.min.css +1 -1
  138. package/styles/components/system-message/system-message.css +2 -2
  139. package/styles/components/system-message/system-message.min.css +1 -1
  140. package/styles/components/toast/toast.css +4 -4
  141. package/styles/components/toast/toast.min.css +1 -1
  142. package/styles/styles.css +36 -36
  143. package/styles/styles.min.css +1 -1
  144. package/build/cjs/components/file-input/File.cjs +0 -2
  145. package/build/cjs/components/file-input/File.cjs.map +0 -1
  146. package/build/cjs/components/file-input/File.d.cts +0 -14
  147. package/build/cjs/components/file-input/internal/Thumbnail.cjs +0 -2
  148. package/build/cjs/components/file-input/internal/Thumbnail.cjs.map +0 -1
  149. package/build/cjs/components/file-input/internal/Thumbnail.d.cts +0 -11
  150. package/build/cjs/components/file-input/internal/validateFile.cjs +0 -2
  151. package/build/cjs/components/file-input/internal/validateFile.cjs.map +0 -1
  152. package/build/cjs/components/file-input/internal/validateFile.d.cts +0 -2
  153. package/build/cjs/components/file-input/stories/File.stories.cjs +0 -2
  154. package/build/cjs/components/file-input/stories/File.stories.cjs.map +0 -1
  155. package/build/cjs/components/file-input/stories/File.stories.d.cts +0 -17
  156. package/build/cjs/components/file-input/stories/FileInput.stories.d.cts +0 -13
  157. package/build/cjs/components/file-input/stories/fileBytes.cjs +0 -2
  158. package/build/cjs/components/file-input/stories/fileBytes.cjs.map +0 -1
  159. package/build/cjs/components/file-input/stories/fileBytes.d.cts +0 -2
  160. package/build/es/components/file-input/File.d.ts +0 -14
  161. package/build/es/components/file-input/File.js +0 -2
  162. package/build/es/components/file-input/File.js.map +0 -1
  163. package/build/es/components/file-input/internal/Thumbnail.d.ts +0 -11
  164. package/build/es/components/file-input/internal/Thumbnail.js +0 -2
  165. package/build/es/components/file-input/internal/Thumbnail.js.map +0 -1
  166. package/build/es/components/file-input/internal/validateFile.d.ts +0 -2
  167. package/build/es/components/file-input/internal/validateFile.js.map +0 -1
  168. package/build/es/components/file-input/stories/File.stories.d.ts +0 -17
  169. package/build/es/components/file-input/stories/File.stories.js +0 -2
  170. package/build/es/components/file-input/stories/File.stories.js.map +0 -1
  171. package/build/es/components/file-input/stories/FileInput.stories.d.ts +0 -13
  172. package/build/es/components/file-input/stories/fileBytes.d.ts +0 -2
  173. package/build/es/components/file-input/stories/fileBytes.js +0 -2
  174. package/build/es/components/file-input/stories/fileBytes.js.map +0 -1
  175. package/build/index-C4ABwKfA.js +0 -20
  176. package/build/index-C4ABwKfA.js.map +0 -1
  177. package/build/index-ZdY5zxEI.cjs +0 -20
  178. package/build/index-ZdY5zxEI.cjs.map +0 -1
  179. package/build/style.css +0 -1
  180. package/styles/components/file-input/_file.scss +0 -176
  181. package/styles/components/file-input/development/public/fonts/_index.scss +0 -1
  182. package/styles/components/file-input/development/public/fonts/webfonts.css +0 -108
  183. package/styles/components/file-input/development/public/fonts/webfonts.min.css +0 -1
  184. package/styles/components/file-input/development/public/fonts/webfonts.scss +0 -137
  185. package/styles/components/menu/development/public/fonts/_index.scss +0 -1
  186. package/styles/components/menu/development/public/fonts/webfonts.css +0 -108
  187. package/styles/components/menu/development/public/fonts/webfonts.min.css +0 -1
  188. package/styles/components/menu/development/public/fonts/webfonts.scss +0 -137
  189. package/styles/vind/_flex.scss +0 -113
  190. package/styles/vind/_font.scss +0 -19
  191. package/styles/vind/_index.scss +0 -1
  192. package/styles/vind/_margin.scss +0 -43
  193. package/styles/vind/_padding.scss +0 -43
  194. package/styles/vind/_space-between.scss +0 -13
  195. package/styles/vind/_typography.scss +0 -47
  196. package/styles/vind/vind.css +0 -1756
  197. package/styles/vind/vind.min.css +0 -1
  198. package/styles/vind/vind.scss +0 -6
@@ -1,3 +1,4 @@
1
+ @charset "UTF-8";
1
2
  /**
2
3
  * Do not edit directly
3
4
  * Generated on Wed, 18 Dec 2024 12:25:37 GMT
@@ -5,199 +6,580 @@
5
6
  :root,
6
7
  [data-layout-density=comfortable],
7
8
  [data-density=comfortable] {
8
- --jkl-file-padding: calc(var(--jkl-unit-10) * 3);
9
- --jkl-file-thumbnail-size: calc(var(--jkl-unit-10) * 8);
10
- --jkl-file-gap: calc(var(--jkl-unit-10) * 2);
11
- --jkl-file-font-size: 1.25rem;
12
- --jkl-file-line-height: calc(var(--jkl-unit-10) * 4);
9
+ --jkl-file-padding: 0.5rem;
10
+ --jkl-file-thumbnail-width: calc(var(--jkl-unit-10) * 7);
11
+ --jkl-file-thumbnail-max-height: 120px;
12
+ --jkl-file-thumbnail-aspect-ratio: 1;
13
+ --jkl-file-gap: 0.5rem calc(var(--jkl-unit-10) * 2);
14
+ --jkl-file-button-width: calc(var(--jkl-unit-10) * 5);
13
15
  }
14
16
 
15
17
  [data-layout-density=compact],
16
18
  [data-density=compact] {
17
- --jkl-file-padding: 0.75rem;
18
- --jkl-file-thumbnail-size: 2.75rem;
19
- --jkl-file-gap: 0.5rem;
20
- --jkl-file-font-size: calc(var(--jkl-unit-10) * 2);
21
- --jkl-file-line-height: calc(var(--jkl-unit-10) * 3);
19
+ --jkl-file-padding: 0.5rem;
20
+ --jkl-file-thumbnail-width: calc(var(--jkl-unit-10) * 5);
21
+ --jkl-file-thumbnail-max-height: 80px;
22
+ --jkl-file-thumbnail-aspect-ratio: 1;
23
+ --jkl-file-gap: calc(var(--jkl-unit-10) * 0.5) 0.5rem;
24
+ --jkl-file-button-width: calc(var(--jkl-unit-10) * 4);
22
25
  }
23
26
 
24
27
  .jkl-file {
25
28
  --text-color: var(--jkl-color-text-default);
29
+ --border: 1px solid var(--jkl-color-border-separator);
30
+ --border-radius: 2px;
31
+ --bg: transparent;
32
+ }
33
+ .jkl-file__content {
26
34
  transition-timing-function: ease;
27
35
  transition-duration: 100ms;
28
36
  transition-property: background-color, border-color, color;
29
37
  color: var(--jkl-color-text-default);
30
- margin: 0;
31
- min-width: 15rem;
32
- display: flex;
33
- flex-flow: nowrap row;
38
+ padding: var(--jkl-file-padding);
39
+ border: var(--border);
40
+ border-radius: var(--border-radius);
41
+ background: var(--bg);
42
+ display: grid;
43
+ grid-template-columns: var(--jkl-file-thumbnail-width) 1fr var(--jkl-file-button-width);
44
+ grid-template-areas: "image text button";
45
+ gap: var(--jkl-file-gap);
46
+ align-items: center;
47
+ height: fit-content;
48
+ }
49
+ .jkl-file__content__name {
34
50
  font-size: 1rem;
35
51
  line-height: 1.5rem;
36
52
  font-weight: 400;
37
53
  --jkl-icon-weight: 300;
38
54
  --jkl-icon-size: 1.25rem;
39
55
  --jkl-icon-opsz: 20;
56
+ grid-area: text;
57
+ word-break: break-word;
58
+ }
59
+ .jkl-file__content__name__size {
60
+ word-break: keep-all;
61
+ }
62
+ .jkl-file__content__delete {
63
+ aspect-ratio: 1;
64
+ grid-area: button;
65
+ }
66
+ .jkl-file__content__thumbnail {
67
+ width: 100%;
68
+ aspect-ratio: var(--jkl-file-thumbnail-aspect-ratio);
69
+ object-fit: cover;
70
+ max-height: var(--jkl-file-thumbnail-max-height);
71
+ grid-area: image;
72
+ position: relative;
73
+ display: flex;
74
+ align-items: center;
75
+ justify-content: center;
76
+ background: var(--jkl-color-background-container-low);
77
+ border-radius: 2px;
78
+ overflow: hidden;
79
+ container-type: inline-size;
40
80
  }
41
- .jkl-file {
42
- outline: 0;
43
- border-style: none;
44
- outline-style: none;
81
+ .jkl-file__content__thumbnail img {
82
+ z-index: 0;
45
83
  }
46
- .jkl-file:active, .jkl-file:hover, .jkl-file:focus {
47
- outline: 0;
48
- outline-style: none;
84
+ .jkl-file__content__thumbnail img[src] {
85
+ width: 100%;
86
+ height: 100%;
87
+ object-fit: cover;
49
88
  }
50
- @media screen and (forced-colors: active) {
51
- .jkl-file {
52
- outline: revert;
53
- border-style: revert;
54
- outline-style: revert;
89
+ .jkl-file__content__thumbnail::before, .jkl-file__content__thumbnail::after {
90
+ position: absolute;
91
+ z-index: 1;
92
+ }
93
+ .jkl-file[class*=card] {
94
+ --jkl-file-thumbnail-width: 100%;
95
+ --jkl-file-thumbnail-aspect-ratio: 16/9;
96
+ }
97
+ .jkl-file[class*=card] .jkl-file__content {
98
+ grid-template-columns: 1fr var(--jkl-file-button-width);
99
+ grid-template-rows: var(--jkl-file-thumbnail-max-height) auto;
100
+ grid-template-areas: "image image" "text button";
101
+ }
102
+ .jkl-file:not([data-state*=loading]) .jkl-file__content__thumbnail:not(:has(img[src]))::before {
103
+ font-size: 1rem;
104
+ line-height: 1.5rem;
105
+ font-weight: 400;
106
+ --jkl-icon-weight: 300;
107
+ --jkl-icon-size: 1.25rem;
108
+ --jkl-icon-opsz: 20;
109
+ content: attr(data-filetype);
110
+ }
111
+ .jkl-file[data-state=loading]:not(:has(.jkl-file__support-label)) .jkl-file__content__thumbnail img {
112
+ opacity: 0.25;
113
+ }
114
+ .jkl-file[data-state=loading]:not(:has(.jkl-file__support-label)) .jkl-file__content__thumbnail::after {
115
+ --scale: scale(0.3, 0.3);
116
+ --scale-end: scale(0.1, 0.1);
117
+ --rotation: 45deg;
118
+ content: ""/"Laster opp";
119
+ height: 100%;
120
+ min-height: 24px;
121
+ max-height: 2lh;
122
+ aspect-ratio: 1;
123
+ background: var(--text-color);
124
+ transform: var(--scale) rotate(var(--rotation));
125
+ animation: pulse 2500ms linear forwards infinite;
126
+ }
127
+ @keyframes pulse {
128
+ from {
129
+ transform: var(--scale) rotate(var(--rotation));
55
130
  }
56
- .jkl-file:active, .jkl-file:hover, .jkl-file:focus {
57
- outline: revert;
58
- outline-style: revert;
131
+ 50% {
132
+ transform: var(--scale-end) rotate(calc(var(--rotation) + 0.5turn));
133
+ }
134
+ to {
135
+ transform: var(--scale) rotate(calc(var(--rotation) + 1turn));
59
136
  }
60
137
  }
61
- .jkl-file__content {
62
- display: flex;
63
- flex-basis: 100%;
64
- gap: 1em;
65
- background-color: var(--jkl-color-background-container-high);
66
- padding: var(--jkl-file-padding);
67
- border-radius: 0.125rem;
68
- box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.05);
69
- color: var(--text-color);
138
+ .jkl-file[data-state=error] {
139
+ --bg: var(--jkl-color-functional-error);
70
140
  }
71
- .jkl-file__content--error {
72
- background-color: var(--jkl-color-background-alert-error);
141
+ .jkl-file[data-state=error], .jkl-file[data-state=error] a, .jkl-file[data-state=error] a:hover, .jkl-file[data-state=error] button, .jkl-file[data-state=error] span {
142
+ --text-color: var(--jkl-color-text-on-alert);
143
+ --link-color: var(--text-color);
144
+ --jkl-color-border-action: currentColor;
73
145
  }
74
- .jkl-file__content--warning {
75
- background-color: var(--jkl-color-background-alert-warning);
146
+
147
+ .jkl-link {
148
+ --link-color: var(--jkl-color-text-default);
149
+ color: var(--link-color);
150
+ outline: none;
151
+ text-decoration: none;
152
+ transition-timing-function: ease;
153
+ transition-duration: 75ms;
154
+ transition-property: color;
76
155
  }
77
- .jkl-file__content--error, .jkl-file__content--warning {
78
- --text-color: var(--jkl-color-text-on-alert);
156
+ .jkl-link__content {
157
+ text-decoration: underline;
158
+ text-underline-offset: 0.4em;
159
+ text-decoration-thickness: 1px;
79
160
  }
80
- .jkl-file__content--error .jkl-form-support-label, .jkl-file__content--warning .jkl-form-support-label {
81
- --color: var(--jkl-color-text-on-alert);
161
+ .jkl-link__icon {
162
+ margin-inline-start: 0.2em;
163
+ margin-block-start: -0.1em;
164
+ vertical-align: middle;
82
165
  }
83
- .jkl-file__content:not(div) {
84
- cursor: pointer;
85
- text-decoration: none;
86
- color: var(--jkl-color-text-default);
166
+ .jkl-link--external::after, .jkl-link[target=_blank]::after {
167
+ --jkl-icon-fill: 0;
168
+ --jkl-icon-size: 1.25rem;
169
+ --jkl-icon-opsz: 20;
170
+ content: "\e89e";
171
+ margin-block-start: -0.1em;
172
+ padding-inline-start: 0.2em;
173
+ vertical-align: middle;
174
+ font-family: "Fremtind Material Symbols", Arial, Helvetica, sans-serif;
175
+ font-variation-settings: "FILL" var(--jkl-icon-fill, 0), "GRAD" var(--jkl-icon-grade, 0), "opsz" var(--jkl-icon-opsz, 24);
176
+ font-feature-settings: "liga";
177
+ -webkit-font-feature-settings: "liga";
178
+ font-size: var(--jkl-icon-size, 1.5rem);
179
+ font-weight: var(--jkl-icon-weight, 300);
180
+ line-height: 1;
181
+ display: inline-block;
182
+ -webkit-font-smoothing: antialiased;
183
+ transition-timing-function: ease;
184
+ transition-duration: 150ms;
185
+ transition-property: font-variation-settings, transform;
186
+ display: inline;
87
187
  }
88
- .jkl-file__content:not(div):hover ~ .jkl-file__description {
89
- --jkl-icon-weight: 500;
90
- font-weight: 700;
91
- letter-spacing: -0.014em;
188
+ .jkl-link:hover:not(:focus) {
189
+ --link-color: var(--jkl-color-text-subdued);
92
190
  }
93
- .jkl-file__content:not(div):focus-visible {
191
+ .jkl-link:focus-visible {
94
192
  outline: 3px solid var(--jkl-color-border-action);
95
193
  outline-offset: 0;
96
194
  }
97
195
  @media screen and (forced-colors: active) {
98
- .jkl-file__content:not(div) {
196
+ .jkl-link {
99
197
  outline: revert;
100
- border: 0.125rem solid LinkText;
198
+ text-decoration: revert;
101
199
  }
102
200
  }
103
- .jkl-file__delete.jkl-icon-button {
104
- padding: 0 var(--jkl-unit-30);
105
- align-items: stretch;
201
+
202
+ :root,
203
+ [data-layout-density=comfortable],
204
+ [data-density=comfortable] {
205
+ --jkl-button-padding-block: 0.5rem;
206
+ --jkl-button-padding-text: calc(var(--jkl-unit-10) * 3);
207
+ --jkl-button-padding-icon: calc(var(--jkl-unit-10) * 2);
208
+ --jkl-button-padding-icon-button: 0.5rem;
209
+ --jkl-button-teritary-padding-icon: calc(var(--jkl-unit-10) * 0.5);
210
+ --jkl-button-font-size: 1.125rem;
211
+ --jkl-button-line-height: 1.75rem;
212
+ }
213
+ @media (min-width: 680px) {
214
+ :root,
215
+ [data-layout-density=comfortable],
216
+ [data-density=comfortable] {
217
+ --jkl-button-font-size: 1.25rem;
218
+ --jkl-button-line-height: 2rem;
219
+ }
220
+ }
221
+
222
+ [data-layout-density=compact],
223
+ [data-density=compact] {
224
+ --jkl-button-padding-block: calc(var(--jkl-unit-10) * 0.5);
225
+ --jkl-button-padding-text: calc(var(--jkl-unit-10) * 1.5);
226
+ --jkl-button-padding-icon: 0.5rem;
227
+ --jkl-button-padding-icon-button: calc(var(--jkl-unit-10) * 0.5);
228
+ --jkl-button-teritary-padding-icon: calc(var(--jkl-unit-10) * 0.25);
229
+ --jkl-button-padding-ghost-inline: calc(var(--jkl-unit-10) * 0.5);
230
+ --jkl-button-font-size: 1rem;
231
+ --jkl-button-line-height: 1.5rem;
232
+ }
233
+ @media (min-width: 680px) {
234
+ [data-layout-density=compact],
235
+ [data-density=compact] {
236
+ --jkl-button-font-size: 1rem;
237
+ --jkl-button-line-height: 1.5rem;
238
+ --jkl-button-icon-weight: 500;
239
+ }
240
+ }
241
+
242
+ .jkl-button {
243
+ --jkl-icon-weight: var(--jkl-button-icon-weight, initial);
244
+ --text-color: var(--jkl-color-text-default);
245
+ --background-color: transparent;
246
+ --border-radius: 0;
247
+ --border-width: 0.0625rem;
248
+ display: inline-block;
249
+ font-weight: 700;
250
+ font-size: var(--jkl-button-font-size);
251
+ line-height: var(--jkl-button-line-height);
252
+ cursor: pointer;
253
+ user-select: none;
254
+ background: var(--background-color);
255
+ color: var(--text-color);
256
+ border: unset;
257
+ text-decoration: none;
258
+ -webkit-tap-highlight-color: transparent;
259
+ border-radius: var(--border-radius);
260
+ padding-inline: var(--jkl-button-padding-text);
261
+ padding-block: var(--jkl-button-padding-block);
262
+ position: relative;
263
+ overflow: hidden;
264
+ max-width: 100%;
265
+ animation: a 0.3s linear;
266
+ transition-timing-function: ease;
267
+ transition-duration: 150ms;
268
+ transition-property: background-color;
269
+ }
270
+ .jkl-button:has(.jkl-icon:first-child) {
271
+ padding-inline-start: var(--jkl-button-padding-icon);
272
+ }
273
+ .jkl-button:has(.jkl-icon:last-child) {
274
+ padding-inline-end: var(--jkl-button-padding-icon);
275
+ }
276
+ .jkl-button:has(.jkl-icon:first-child):has(.jkl-icon:last-child) {
277
+ padding-inline: var(--jkl-button-padding-icon-button);
278
+ }
279
+ .jkl-button__label {
280
+ transition-timing-function: ease;
281
+ transition-duration: 250ms;
282
+ transition-property: translate;
283
+ width: 100%;
284
+ display: flex;
285
+ flex-direction: row;
286
+ align-items: center;
287
+ gap: calc(var(--jkl-unit-10) * 0.25);
288
+ pointer-events: none;
289
+ }
290
+ .jkl-button__loader {
291
+ transition-timing-function: ease;
292
+ transition-duration: 250ms;
293
+ transition-property: opacity, translate;
294
+ position: absolute;
295
+ top: 50%;
296
+ left: 50%;
297
+ translate: -50% 350%;
298
+ opacity: 0;
299
+ pointer-events: none;
300
+ }
301
+ .jkl-button__text {
302
+ width: 100%;
303
+ max-width: 100%;
304
+ overflow: hidden;
305
+ white-space: nowrap;
306
+ text-overflow: ellipsis;
307
+ }
308
+ .jkl-button[data-loading=true] .jkl-button__label {
309
+ translate: 0 -120%;
310
+ }
311
+ .jkl-button[data-loading=true] .jkl-button__loader {
312
+ translate: -50% -50%;
313
+ opacity: 1;
314
+ }
315
+ .jkl-button:focus-visible {
316
+ outline: 3px solid var(--jkl-color-border-action);
317
+ outline-offset: 3px;
318
+ }
319
+ .jkl-button:hover {
320
+ background-color: color-mix(in srgb, var(--background-color), var(--text-color) 15%);
321
+ }
322
+ .jkl-button--primary, .jkl-button--secondary, .jkl-button--ghost {
323
+ --border-radius: 999px;
324
+ }
325
+ .jkl-button--primary {
326
+ --background-color: var(--jkl-color-background-action);
327
+ --text-color: var(--jkl-color-text-on-action);
328
+ }
329
+ .jkl-button--secondary {
330
+ border: var(--border-width) solid var(--text-color);
331
+ }
332
+ .jkl-button--tertiary {
333
+ border-bottom: var(--border-width) solid var(--text-color);
334
+ padding-inline: var(--jkl-button-teritary-padding-icon);
335
+ }
336
+ .jkl-button--tertiary:has(.jkl-icon:first-child) {
337
+ padding-inline: var(--jkl-button-teritary-padding-icon) calc(var(--jkl-button-teritary-padding-icon) * 2);
338
+ }
339
+ .jkl-button--tertiary:has(.jkl-icon:last-child) {
340
+ padding-inline: calc(var(--jkl-button-teritary-padding-icon) * 2) var(--jkl-button-teritary-padding-icon);
341
+ }
342
+
343
+ .jkl-loader {
344
+ display: flex;
345
+ }
346
+ .jkl-loader--inline {
347
+ display: inline-flex;
348
+ }
349
+ .jkl-loader__dot {
350
+ display: block;
351
+ transform-origin: center;
352
+ background-color: currentColor;
353
+ height: 0.9em;
354
+ width: 0.9em;
355
+ animation: 2500ms linear infinite;
106
356
  }
107
- .jkl-file__delete.jkl-icon-button {
108
- outline: 0;
109
- border-style: none;
110
- outline-style: none;
357
+ .jkl-loader__dot--left {
358
+ animation-name: jkl-loader-left-spin-u6e0zz0;
359
+ margin-right: 1.71em;
111
360
  }
112
- .jkl-file__delete.jkl-icon-button:active, .jkl-file__delete.jkl-icon-button:hover, .jkl-file__delete.jkl-icon-button:focus {
113
- outline: 0;
114
- outline-style: none;
361
+ .jkl-loader__dot--middle {
362
+ animation-name: jkl-loader-middle-spin-u6e0zzm;
363
+ margin-right: 1.9em;
364
+ }
365
+ .jkl-loader__dot--right {
366
+ animation-name: jkl-loader-right-spin-u6e100k;
115
367
  }
116
368
  @media screen and (forced-colors: active) {
117
- .jkl-file__delete.jkl-icon-button {
118
- outline: revert;
119
- border-style: revert;
120
- outline-style: revert;
369
+ .jkl-loader__dot {
370
+ background-color: CanvasText;
121
371
  }
122
- .jkl-file__delete.jkl-icon-button:active, .jkl-file__delete.jkl-icon-button:hover, .jkl-file__delete.jkl-icon-button:focus {
123
- outline: revert;
124
- outline-style: revert;
372
+ }
373
+ .jkl-button .jkl-loader > .jkl-loader__dot, .jkl-loader--medium > .jkl-loader__dot {
374
+ height: 0.35em;
375
+ width: 0.35em;
376
+ }
377
+ .jkl-button .jkl-loader > .jkl-loader__dot--left, .jkl-loader--medium > .jkl-loader__dot--left {
378
+ margin-right: 0.585em;
379
+ }
380
+ .jkl-button .jkl-loader > .jkl-loader__dot--middle, .jkl-loader--medium > .jkl-loader__dot--middle {
381
+ margin-right: 0.65em;
382
+ }
383
+ .jkl-loader--small > .jkl-loader__dot {
384
+ height: 0.25em;
385
+ width: 0.25em;
386
+ }
387
+ .jkl-loader--small > .jkl-loader__dot--left {
388
+ margin-right: 0.27em;
389
+ }
390
+ .jkl-loader--small > .jkl-loader__dot--middle {
391
+ margin-right: 0.3em;
392
+ }
393
+
394
+ @keyframes jkl-loader-left-spin-u6e0zz0 {
395
+ 0% {
396
+ transform: rotate(0) scale(0);
397
+ }
398
+ 30% {
399
+ transform: rotate(90deg) scale(1);
400
+ }
401
+ 70% {
402
+ transform: rotate(180deg) scale(0);
403
+ }
404
+ 100% {
405
+ transform: rotate(180deg) scale(0);
125
406
  }
126
407
  }
127
- .jkl-file__delete.jkl-icon-button:focus-visible {
128
- outline: 3px solid var(--jkl-color-border-action);
129
- outline-offset: 0;
408
+ @keyframes jkl-loader-middle-spin-u6e0zzm {
409
+ 0% {
410
+ transform: rotate(20deg) scale(0);
411
+ }
412
+ 10% {
413
+ transform: rotate(20deg) scale(0);
414
+ }
415
+ 40% {
416
+ transform: rotate(110deg) scale(1.4);
417
+ }
418
+ 85% {
419
+ transform: rotate(200deg) scale(0);
420
+ }
421
+ 100% {
422
+ transform: rotate(200deg) scale(0);
423
+ }
130
424
  }
131
- .jkl-file__delete.jkl-icon-button:hover {
132
- background-color: var(--jkl-color-background-interactive-hover);
425
+ @keyframes jkl-loader-right-spin-u6e100k {
426
+ 0% {
427
+ transform: rotate(40deg) scale(0);
428
+ }
429
+ 20% {
430
+ transform: rotate(40deg) scale(0);
431
+ }
432
+ 50% {
433
+ transform: rotate(130deg) scale(1);
434
+ }
435
+ 100% {
436
+ transform: rotate(220deg) scale(0);
437
+ }
438
+ }
439
+ @media screen and (prefers-color-scheme: light) {
440
+ :root {
441
+ --jkl-skeleton-element-color: #e0dbd4;
442
+ --jkl-skeleton-sweeper-color: #f9f9f9;
443
+ }
444
+ }
445
+ [data-theme=light] {
446
+ --jkl-skeleton-element-color: #e0dbd4;
447
+ --jkl-skeleton-sweeper-color: #f9f9f9;
448
+ }
449
+
450
+ @media screen and (prefers-color-scheme: dark) {
451
+ :root {
452
+ --jkl-skeleton-element-color: #636060;
453
+ --jkl-skeleton-sweeper-color: #1b1917;
454
+ }
455
+ }
456
+ [data-theme=dark] {
457
+ --jkl-skeleton-element-color: #636060;
458
+ --jkl-skeleton-sweeper-color: #1b1917;
133
459
  }
134
- .jkl-file__thumbnail-wrapper {
460
+
461
+ .jkl-skeleton-animation {
462
+ --jkl-skeleton-sweep-duration: 3s;
135
463
  position: relative;
464
+ overflow: hidden;
136
465
  }
137
- .jkl-file__thumbnail-wrapper > :nth-child(2) {
466
+ .jkl-skeleton-animation::after {
467
+ content: " ";
138
468
  position: absolute;
139
- inset: 0;
140
- margin: auto;
141
- width: 80%;
142
- }
143
- .jkl-file__thumbnail {
144
- width: var(--jkl-file-thumbnail-size);
145
- height: var(--jkl-file-thumbnail-size);
146
- flex: 0 0 var(--jkl-file-thumbnail-size);
147
- display: flex;
148
- justify-content: center;
149
- align-items: center;
150
- object-fit: contain;
151
- opacity: 1;
152
- border-radius: 0.25rem;
153
- color: var(--jkl-color-text-subdued);
154
- transition-timing-function: ease;
155
- transition-duration: 150ms;
156
- transition-property: opacity;
469
+ top: 0;
470
+ bottom: 0;
471
+ width: 12.5rem;
472
+ background: linear-gradient(89.17deg, rgba(249, 249, 249, 0) 0.8%, var(--jkl-skeleton-sweeper-color) 50.09%, rgba(249, 249, 249, 0) 96.31%);
473
+ animation: var(--jkl-skeleton-sweep-duration) ease infinite jkl-sweep-u6e1015;
157
474
  }
158
- .jkl-file__thumbnail--selected {
159
- opacity: 0.7;
475
+ @media (width >= 0) and (max-width: 679px) {
476
+ .jkl-skeleton-animation {
477
+ width: 9.375rem;
478
+ }
160
479
  }
161
- .jkl-file__thumbnail--uploading {
162
- opacity: 0.4;
480
+ @media screen and (prefers-reduced-motion: reduce) {
481
+ .jkl-skeleton-animation::after {
482
+ background: none;
483
+ }
163
484
  }
164
- .jkl-file__thumbnail:not(img) {
165
- background: var(--jkl-color-background-container-low);
485
+ @media screen and (forced-colors: active) {
486
+ .jkl-skeleton-animation::after {
487
+ animation: none;
488
+ }
166
489
  }
167
- .jkl-file__file-info {
490
+ .jkl-skeleton-animation--compact::after {
491
+ width: 9.375rem;
492
+ }
493
+
494
+ .jkl-skeleton-element {
495
+ border-radius: 0.125rem;
496
+ background-color: var(--jkl-skeleton-element-color);
497
+ }
498
+ .jkl-skeleton-element--circle {
499
+ border-radius: 50%;
500
+ }
501
+ @media screen and (forced-colors: active) {
502
+ .jkl-skeleton-element {
503
+ border: 1px solid CanvasText;
504
+ animation: 2s ease infinite jkl-blink-u6e1021;
505
+ }
506
+ }
507
+
508
+ .jkl-skeleton-input {
168
509
  display: flex;
169
510
  flex-direction: column;
170
- flex: 1 1 auto;
171
- overflow-wrap: break-word;
172
- gap: var(--jkl-unit-10);
511
+ gap: 0.75rem;
173
512
  }
174
- .jkl-file__title {
175
- font-size: 1rem;
176
- line-height: 1.5rem;
177
- font-weight: 700;
178
- --jkl-icon-weight: 500;
179
- --jkl-icon-size: 1.25rem;
180
- --jkl-icon-opsz: 20;
181
- overflow-wrap: anywhere;
513
+ .jkl-skeleton-input__checkbox {
514
+ display: flex;
515
+ flex-direction: row;
516
+ flex-wrap: nowrap;
517
+ gap: 0.5rem;
182
518
  }
183
- .jkl-file__name, .jkl-file__description {
184
- font-size: var(--jkl-file-font-size);
185
- line-height: var(--jkl-file-line-height);
519
+ @media (width >= 0) and (max-width: 679px) {
520
+ .jkl-skeleton-input {
521
+ gap: 0.5rem;
522
+ }
186
523
  }
187
- .jkl-file__name {
188
- font-weight: 700;
524
+ .jkl-skeleton-input--compact::after {
525
+ gap: 0.5rem;
189
526
  }
190
- .jkl-file__description {
527
+
528
+ .jkl-skeleton-table {
191
529
  display: flex;
192
- flex-wrap: nowrap;
193
- gap: calc(var(--jkl-unit-10) * 1.5);
194
- align-items: center;
195
- justify-content: flex-start;
530
+ flex-direction: column;
196
531
  }
197
- .jkl-file__support-label {
198
- margin: 0;
532
+ .jkl-skeleton-table__header, .jkl-skeleton-table__row {
533
+ display: flex;
534
+ flex-direction: row;
535
+ justify-content: space-between;
536
+ border-bottom: solid 1px var(--jkl-skeleton-element-color);
537
+ }
538
+ .jkl-skeleton-table__header {
539
+ padding: 0.75rem 0.5rem;
540
+ }
541
+ .jkl-skeleton-table__row {
542
+ padding: 1rem 0.5rem;
543
+ }
544
+ @media (width >= 0) and (max-width: 679px) {
545
+ .jkl-skeleton-table__header {
546
+ padding: 0.5rem 0.25rem;
547
+ }
548
+ .jkl-skeleton-table__row {
549
+ padding: 0.75rem 0.25rem;
550
+ }
551
+ }
552
+ .jkl-skeleton-table--compact::after__header {
553
+ padding: 0.5rem 0.25rem;
554
+ }
555
+ .jkl-skeleton-table--compact::after__row {
556
+ padding: 0.75rem 0.25rem;
557
+ }
558
+ @media screen and (forced-colors: active) {
559
+ .jkl-skeleton-table {
560
+ animation: 2s ease-in-out infinite jkl-blink-u6e1021;
561
+ }
199
562
  }
200
563
 
564
+ @keyframes jkl-sweep-u6e1015 {
565
+ 0% {
566
+ transform: translateX(calc(0vw - 200px));
567
+ }
568
+ 80%, 100% {
569
+ transform: translateX(calc(100vw + 400px));
570
+ }
571
+ }
572
+ @keyframes jkl-blink-u6e1021 {
573
+ 0% {
574
+ opacity: 1;
575
+ }
576
+ 40%, 50% {
577
+ opacity: 0.3;
578
+ }
579
+ 70%, 100% {
580
+ opacity: 1;
581
+ }
582
+ }
201
583
  :root,
202
584
  [data-layout-density=comfortable],
203
585
  [data-density=comfortable] {