@fremtind/jokul 5.0.0-next.8 → 5.0.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 (238) hide show
  1. package/build/build-stats.html +1 -1
  2. package/build/cjs/components/autosuggest/BaseAutosuggest.cjs +1 -1
  3. package/build/cjs/components/autosuggest/BaseAutosuggest.cjs.map +1 -1
  4. package/build/cjs/components/expander/Accordion.cjs +2 -0
  5. package/build/cjs/components/expander/Accordion.cjs.map +1 -0
  6. package/build/cjs/components/expander/Accordion.d.cts +2 -0
  7. package/build/cjs/components/expander/ExpandablePanel.cjs +1 -1
  8. package/build/cjs/components/expander/ExpandablePanel.cjs.map +1 -1
  9. package/build/cjs/components/expander/ExpandablePanelContent.cjs +1 -1
  10. package/build/cjs/components/expander/ExpandablePanelContent.cjs.map +1 -1
  11. package/build/cjs/components/expander/Expander.cjs +1 -1
  12. package/build/cjs/components/expander/Expander.cjs.map +1 -1
  13. package/build/cjs/components/expander/index.d.cts +1 -1
  14. package/build/cjs/components/expander/types.d.cts +5 -2
  15. package/build/cjs/components/icon/Icon.cjs +1 -1
  16. package/build/cjs/components/icon/Icon.cjs.map +1 -1
  17. package/build/cjs/components/icon/Icon.d.cts +2 -2
  18. package/build/cjs/components/icon/icons/GreenCheckIcon.cjs +1 -1
  19. package/build/cjs/components/icon/icons/GreenCheckIcon.cjs.map +1 -1
  20. package/build/cjs/components/icon/icons/GreenCheckIcon.d.cts +2 -3
  21. package/build/cjs/components/icon/icons/RedCrossIcon.cjs +1 -1
  22. package/build/cjs/components/icon/icons/RedCrossIcon.cjs.map +1 -1
  23. package/build/cjs/components/icon/icons/RedCrossIcon.d.cts +2 -3
  24. package/build/cjs/components/link-list/LinkList.cjs +1 -1
  25. package/build/cjs/components/link-list/LinkList.cjs.map +1 -1
  26. package/build/cjs/components/link-list/LinkList.d.cts +1 -1
  27. package/build/cjs/components/link-list/types.d.cts +1 -0
  28. package/build/cjs/components/number-input/NumberInput.cjs +2 -0
  29. package/build/cjs/components/number-input/NumberInput.cjs.map +1 -0
  30. package/build/cjs/components/number-input/NumberInput.d.cts +7 -0
  31. package/build/cjs/components/number-input/index.cjs +2 -0
  32. package/build/cjs/components/number-input/index.cjs.map +1 -0
  33. package/build/cjs/components/number-input/index.d.cts +2 -0
  34. package/build/cjs/components/number-input/types.cjs +2 -0
  35. package/build/cjs/components/number-input/types.cjs.map +1 -0
  36. package/build/cjs/components/number-input/types.d.cts +20 -0
  37. package/build/cjs/components/popover/Popover.cjs +1 -1
  38. package/build/cjs/components/popover/Popover.cjs.map +1 -1
  39. package/build/cjs/components/popover/types.d.cts +8 -1
  40. package/build/cjs/components/select/Select.cjs +1 -1
  41. package/build/cjs/components/select/Select.cjs.map +1 -1
  42. package/build/cjs/components/system-message/types.d.cts +7 -2
  43. package/build/cjs/hooks/useListNavigation/useListNavigation.cjs +1 -1
  44. package/build/cjs/hooks/useListNavigation/useListNavigation.cjs.map +1 -1
  45. package/build/cjs/hooks/useListNavigation/useListNavigation.d.cts +11 -2
  46. package/build/cjs/tokens.cjs +1 -1
  47. package/build/cjs/tokens.cjs.map +1 -1
  48. package/build/cjs/utilities/index.cjs +1 -1
  49. package/build/cjs/utilities/types.cjs +1 -1
  50. package/build/cjs/utilities/types.cjs.map +1 -1
  51. package/build/cjs/utilities/types.d.cts +2 -0
  52. package/build/es/components/autosuggest/BaseAutosuggest.js +1 -1
  53. package/build/es/components/autosuggest/BaseAutosuggest.js.map +1 -1
  54. package/build/es/components/datepicker/DatePicker.js +1 -1
  55. package/build/es/components/datepicker/internal/Calendar.js +1 -1
  56. package/build/es/components/datepicker/internal/useCalendar.js +1 -1
  57. package/build/es/components/datepicker/internal/utils.js +1 -1
  58. package/build/es/components/expander/Accordion.d.ts +2 -0
  59. package/build/es/components/expander/Accordion.js +2 -0
  60. package/build/es/components/expander/Accordion.js.map +1 -0
  61. package/build/es/components/expander/ExpandablePanel.js +1 -1
  62. package/build/es/components/expander/ExpandablePanel.js.map +1 -1
  63. package/build/es/components/expander/ExpandablePanelContent.js +1 -1
  64. package/build/es/components/expander/ExpandablePanelContent.js.map +1 -1
  65. package/build/es/components/expander/Expander.js +1 -1
  66. package/build/es/components/expander/Expander.js.map +1 -1
  67. package/build/es/components/expander/index.d.ts +1 -1
  68. package/build/es/components/expander/types.d.ts +5 -2
  69. package/build/es/components/icon/Icon.d.ts +2 -2
  70. package/build/es/components/icon/Icon.js +1 -1
  71. package/build/es/components/icon/Icon.js.map +1 -1
  72. package/build/es/components/icon/icons/GreenCheckIcon.d.ts +2 -3
  73. package/build/es/components/icon/icons/GreenCheckIcon.js +1 -1
  74. package/build/es/components/icon/icons/GreenCheckIcon.js.map +1 -1
  75. package/build/es/components/icon/icons/RedCrossIcon.d.ts +2 -3
  76. package/build/es/components/icon/icons/RedCrossIcon.js +1 -1
  77. package/build/es/components/icon/icons/RedCrossIcon.js.map +1 -1
  78. package/build/es/components/link-list/LinkList.d.ts +1 -1
  79. package/build/es/components/link-list/LinkList.js +1 -1
  80. package/build/es/components/link-list/LinkList.js.map +1 -1
  81. package/build/es/components/link-list/types.d.ts +1 -0
  82. package/build/es/components/menu/Menu.js +1 -1
  83. package/build/es/components/number-input/NumberInput.d.ts +7 -0
  84. package/build/es/components/number-input/NumberInput.js +2 -0
  85. package/build/es/components/number-input/NumberInput.js.map +1 -0
  86. package/build/es/components/number-input/index.d.ts +2 -0
  87. package/build/es/components/number-input/index.js +2 -0
  88. package/build/es/components/number-input/index.js.map +1 -0
  89. package/build/es/components/number-input/types.d.ts +20 -0
  90. package/build/es/components/number-input/types.js +2 -0
  91. package/build/es/components/number-input/types.js.map +1 -0
  92. package/build/es/components/popover/Popover.js +1 -1
  93. package/build/es/components/popover/Popover.js.map +1 -1
  94. package/build/es/components/popover/types.d.ts +8 -1
  95. package/build/es/components/select/Select.js +1 -1
  96. package/build/es/components/select/Select.js.map +1 -1
  97. package/build/es/components/system-message/types.d.ts +7 -2
  98. package/build/es/components/toast/toastContext.js +1 -1
  99. package/build/es/components/tooltip/Tooltip.js +1 -1
  100. package/build/es/hooks/stories/content.js +1 -1
  101. package/build/es/hooks/useListNavigation/useListNavigation.d.ts +11 -2
  102. package/build/es/hooks/useListNavigation/useListNavigation.js +1 -1
  103. package/build/es/hooks/useListNavigation/useListNavigation.js.map +1 -1
  104. package/build/es/tokens.js +1 -1
  105. package/build/es/tokens.js.map +1 -1
  106. package/build/es/utilities/constants/index.js +1 -1
  107. package/build/es/utilities/constants/unicode.js +1 -1
  108. package/build/es/utilities/formatters/bytes/formatBytes.js +1 -1
  109. package/build/es/utilities/formatters/fodselsnummer/formatFodselsnummer.js +1 -1
  110. package/build/es/utilities/formatters/kontonummer/formatKontonummer.js +1 -1
  111. package/build/es/utilities/formatters/kortnummer/formatKortnummer.js +1 -1
  112. package/build/es/utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.js +1 -1
  113. package/build/es/utilities/formatters/telefonnummer/formatTelefonnummer.js +1 -1
  114. package/build/es/utilities/formatters/valuta/formatValuta.js +1 -1
  115. package/build/es/utilities/index.js +1 -1
  116. package/build/es/utilities/types.d.ts +2 -0
  117. package/build/es/utilities/types.js +1 -1
  118. package/build/es/utilities/types.js.map +1 -1
  119. package/build/{index-CWRMnfcx.js → index-C1iqmqvT.js} +2 -2
  120. package/build/{index-CWRMnfcx.js.map → index-C1iqmqvT.js.map} +1 -1
  121. package/build/{utils-CcE6HjQp.js → utils-CtwpNW4I.js} +2 -2
  122. package/build/{utils-CcE6HjQp.js.map → utils-CtwpNW4I.js.map} +1 -1
  123. package/codemods/CODEMODS.md +133 -0
  124. package/codemods/__tests__/import-paths.test.mjs +568 -94
  125. package/codemods/import-paths.mjs +34 -339
  126. package/codemods/transforms/color-tokens.mjs +102 -0
  127. package/codemods/transforms/expandable-panel.mjs +41 -0
  128. package/codemods/transforms/font-family.mjs +23 -0
  129. package/codemods/transforms/import-specifiers.mjs +226 -0
  130. package/codemods/transforms/warnings.mjs +41 -0
  131. package/codemods/utils.mjs +35 -0
  132. package/package.json +8 -4
  133. package/styles/base.css +180 -805
  134. package/styles/base.min.css +1 -1
  135. package/styles/components/autosuggest/autosuggest.css +4 -3
  136. package/styles/components/autosuggest/autosuggest.min.css +1 -1
  137. package/styles/components/autosuggest/autosuggest.scss +4 -3
  138. package/styles/components/button/button.css +9 -3
  139. package/styles/components/button/button.min.css +1 -1
  140. package/styles/components/button/button.scss +10 -3
  141. package/styles/components/checkbox/checkbox.css +1 -1
  142. package/styles/components/checkbox/checkbox.min.css +1 -1
  143. package/styles/components/checkbox/checkbox.scss +1 -1
  144. package/styles/components/checkbox-panel/checkbox-panel.css +1 -1
  145. package/styles/components/checkbox-panel/checkbox-panel.min.css +1 -1
  146. package/styles/components/combobox/combobox.css +4 -4
  147. package/styles/components/combobox/combobox.min.css +1 -1
  148. package/styles/components/combobox/combobox.scss +4 -4
  149. package/styles/components/countdown/countdown.css +2 -2
  150. package/styles/components/countdown/countdown.min.css +1 -1
  151. package/styles/components/expander/_index.scss +1 -0
  152. package/styles/components/expander/accordion.css +21 -0
  153. package/styles/components/expander/accordion.min.css +1 -0
  154. package/styles/components/expander/accordion.scss +24 -0
  155. package/styles/components/expander/expandable.css +32 -37
  156. package/styles/components/expander/expandable.min.css +1 -1
  157. package/styles/components/expander/expandable.scss +27 -36
  158. package/styles/components/feedback/feedback.css +2 -2
  159. package/styles/components/feedback/feedback.min.css +1 -1
  160. package/styles/components/feedback/feedback.scss +0 -1
  161. package/styles/components/file/file.css +1 -1
  162. package/styles/components/file/file.min.css +1 -1
  163. package/styles/components/file/file.scss +1 -1
  164. package/styles/components/file-input/file-input.css +19 -13
  165. package/styles/components/file-input/file-input.min.css +1 -1
  166. package/styles/components/icon/icon.scss +1 -1
  167. package/styles/components/input-group/input-group.css +2 -2
  168. package/styles/components/input-group/input-group.min.css +1 -1
  169. package/styles/components/link-list/link-list.css +7 -2
  170. package/styles/components/link-list/link-list.min.css +1 -1
  171. package/styles/components/link-list/link-list.scss +10 -3
  172. package/styles/components/list/list.css +33 -21
  173. package/styles/components/list/list.min.css +1 -1
  174. package/styles/components/list/list.scss +24 -24
  175. package/styles/components/loader/loader.css +6 -6
  176. package/styles/components/loader/loader.min.css +1 -1
  177. package/styles/components/loader/skeleton-loader.css +3 -3
  178. package/styles/components/loader/skeleton-loader.min.css +1 -1
  179. package/styles/components/menu/_menu-item.scss +1 -1
  180. package/styles/components/menu/menu.css +1 -1
  181. package/styles/components/menu/menu.min.css +1 -1
  182. package/styles/components/message/message.css +9 -9
  183. package/styles/components/message/message.min.css +1 -1
  184. package/styles/components/message/message.scss +7 -7
  185. package/styles/components/modal/_index.scss +7 -0
  186. package/styles/components/modal/_overlay.scss +4 -0
  187. package/styles/components/modal/modal.css +32 -116
  188. package/styles/components/modal/modal.min.css +1 -1
  189. package/styles/components/modal/modal.scss +96 -6
  190. package/styles/components/number-input/_index.scss +2 -0
  191. package/styles/components/number-input/number-input.css +214 -0
  192. package/styles/components/number-input/number-input.min.css +1 -0
  193. package/styles/components/number-input/number-input.scss +115 -0
  194. package/styles/components/progress-bar/progress-bar.css +1 -1
  195. package/styles/components/progress-bar/progress-bar.min.css +1 -1
  196. package/styles/components/radio-button/radio-button.css +1 -5
  197. package/styles/components/radio-button/radio-button.min.css +1 -1
  198. package/styles/components/radio-button/radio-button.scss +2 -7
  199. package/styles/components/segmented-control/segmented-control.css +3 -7
  200. package/styles/components/segmented-control/segmented-control.min.css +1 -1
  201. package/styles/components/select/select.css +65 -7
  202. package/styles/components/select/select.min.css +1 -1
  203. package/styles/components/select/select.scss +129 -18
  204. package/styles/components/system-message/system-message.css +9 -13
  205. package/styles/components/system-message/system-message.min.css +1 -1
  206. package/styles/components/system-message/system-message.scss +116 -123
  207. package/styles/components/tag/tag.css +4 -4
  208. package/styles/components/tag/tag.min.css +1 -1
  209. package/styles/components/tag/tag.scss +4 -4
  210. package/styles/components/toast/toast.css +4 -4
  211. package/styles/components/toast/toast.min.css +1 -1
  212. package/styles/components/typography/text.scss +2 -2
  213. package/styles/components/typography/title.scss +1 -1
  214. package/styles/components.css +524 -130
  215. package/styles/components.min.css +1 -1
  216. package/styles/components.scss +2 -1
  217. package/styles/jkl/_convert.scss +15 -6
  218. package/styles/jkl/_tokens.scss +4 -4
  219. package/styles/tailwind.css +97 -97
  220. package/styles/theme/_color-scheme.scss +95 -95
  221. package/styles/theme/_dynamic-spacing.scss +21 -15
  222. package/styles/theme/_fonts.scss +3 -12
  223. package/styles/theme/_index.scss +0 -4
  224. package/styles/theme/_size.scss +20 -20
  225. package/styles/theme/_tokens.scss +11 -11
  226. package/styles/core/utility/_paragraphs.scss +0 -39
  227. package/styles/theme/brands/dnb/_color-scheme.scss +0 -121
  228. package/styles/theme/brands/dnb/_fonts.scss +0 -46
  229. package/styles/theme/brands/dnb/_index.scss +0 -2
  230. package/styles/theme/brands/eika/_color-scheme.scss +0 -121
  231. package/styles/theme/brands/eika/_fonts.scss +0 -46
  232. package/styles/theme/brands/eika/_index.scss +0 -2
  233. package/styles/theme/brands/fremtind/_color-scheme.scss +0 -121
  234. package/styles/theme/brands/fremtind/_fonts.scss +0 -30
  235. package/styles/theme/brands/fremtind/_index.scss +0 -2
  236. package/styles/theme/brands/sparebank1/_color-scheme.scss +0 -121
  237. package/styles/theme/brands/sparebank1/_fonts.scss +0 -38
  238. package/styles/theme/brands/sparebank1/_index.scss +0 -2
@@ -2,7 +2,6 @@
2
2
  * Do not edit directly, this file was auto-generated.
3
3
  */
4
4
  @layer jokul.components {
5
- /* Base layout */
6
5
  .jkl-modal-container,
7
6
  .jkl-modal-overlay {
8
7
  position: fixed;
@@ -11,46 +10,29 @@
11
10
  .jkl-modal-container {
12
11
  z-index: 9000;
13
12
  display: flex;
14
- align-items: center;
15
- justify-content: center;
16
13
  }
17
14
  .jkl-modal-container[aria-hidden=true] {
18
- visibility: hidden;
19
- pointer-events: none;
15
+ display: none;
20
16
  }
21
- }
22
- @layer jokul.components {
23
17
  .jkl-modal-overlay {
24
18
  background-color: rgba(27, 25, 23, 0.8);
25
- opacity: 0;
26
- transition-timing-function: var(--jkl-motion-easing-entrance);
27
- transition-duration: var(--jkl-motion-timing-expressive);
28
- transition-property: opacity;
29
- }
30
- .jkl-modal-container:not([aria-hidden=true]) .jkl-modal-overlay {
31
- opacity: 1;
32
- }
33
- @media (prefers-reduced-motion: reduce) {
34
- .jkl-modal-overlay {
35
- transition-duration: 0ms;
36
- }
37
19
  }
38
- }
39
- @layer jokul.components {
40
20
  .jkl-modal {
41
- --margin: var(--jkl-spacing-m);
42
- container-type: inline-size;
43
- box-sizing: border-box;
44
- margin: var(--margin);
45
- padding: var(--modal-padding, var(--jkl-unit-40));
21
+ --jkl-modal-padding: var(--jkl-unit-50);
22
+ --jkl-modal-min-width: 13.75rem;
23
+ --jkl-modal-max-width: 41.25rem;
24
+ margin: auto;
46
25
  z-index: 9000;
26
+ position: relative;
47
27
  background-color: var(--jkl-color-background-container);
48
28
  border-radius: var(--jkl-border-radius-l);
49
29
  box-shadow: 0 0.25rem 0.75rem rgba(37, 42, 49, 0.03);
50
- width: min(100vw - 2 * var(--margin), var(--modal-width, 60ch));
51
- max-width: none;
30
+ width: 100%;
31
+ min-width: var(--jkl-modal-min-width);
32
+ max-width: var(--jkl-modal-max-width);
52
33
  max-height: 90vh;
53
34
  overflow: auto;
35
+ padding: var(--jkl-modal-padding);
54
36
  display: flex;
55
37
  flex-direction: column;
56
38
  }
@@ -59,100 +41,26 @@
59
41
  border-color: CanvasText;
60
42
  }
61
43
  }
62
- }
63
- @layer jokul.components {
64
- .jkl-modal-container--slide-in {
65
- --jkl-modal-slide-x: 0px;
66
- --jkl-modal-slide-y: 12px;
67
- transition-timing-function: var(--jkl-motion-easing-exit);
68
- transition-duration: var(--jkl-motion-timing-expressive);
69
- transition-property: visibility;
70
- transition-duration: 0ms;
71
- }
72
- .jkl-modal-container--slide-in[aria-hidden=true] {
73
- display: flex;
74
- visibility: hidden;
75
- pointer-events: none;
76
- transition-delay: var(--jkl-motion-timing-expressive);
77
- }
78
- .jkl-modal-container--slide-in:not([aria-hidden=true]) {
79
- visibility: visible;
80
- transition-delay: 0ms;
81
- }
82
- .jkl-modal-container--slide-in .jkl-modal {
83
- transition-timing-function: var(--jkl-motion-easing-entrance);
84
- transition-duration: var(--jkl-motion-timing-expressive);
85
- transition-property: transform, opacity;
86
- transform: translate(var(--jkl-modal-slide-x), var(--jkl-modal-slide-y));
87
- opacity: 0;
88
- will-change: transform, opacity;
89
- }
90
- .jkl-modal-container--slide-in:not([aria-hidden=true]) .jkl-modal {
91
- transform: translate(0, 0);
92
- opacity: 1;
93
- }
94
- @media (prefers-reduced-motion: reduce) {
95
- .jkl-modal-container--slide-in .jkl-modal {
96
- transition-duration: 0ms;
44
+ @media (width >= 0) and (max-width: 679px) {
45
+ .jkl-modal {
46
+ margin: auto var(--jkl-unit-30);
97
47
  }
98
48
  }
99
- }
100
- @layer jokul.components {
101
- /* Placement: bottom */
102
- .jkl-modal-container--placement-bottom {
103
- align-items: flex-end;
104
- }
105
- .jkl-modal-container--placement-bottom.jkl-modal-container--slide-in {
106
- --jkl-modal-slide-x: 0px;
107
- --jkl-modal-slide-y: 24px;
108
- }
109
- .jkl-modal-container--placement-bottom .jkl-modal {
110
- --margin: 0px;
111
- width: min(100vw, var(--modal-width, 100vw));
112
- border-bottom-left-radius: 0;
113
- border-bottom-right-radius: 0;
114
- }
115
- /* Placement: left */
116
- .jkl-modal-container--placement-left {
117
- justify-content: flex-start;
118
- }
119
- .jkl-modal-container--placement-left.jkl-modal-container--slide-in {
120
- --jkl-modal-slide-x: -24px;
121
- --jkl-modal-slide-y: 0px;
122
- }
123
- .jkl-modal-container--placement-left .jkl-modal {
124
- height: 100%;
125
- max-height: 100%;
126
- margin-block: 0;
127
- margin-inline-start: 0;
128
- border-top-left-radius: 0;
129
- border-bottom-left-radius: 0;
130
- }
131
- /* Placement: right */
132
- .jkl-modal-container--placement-right {
133
- justify-content: flex-end;
134
- }
135
- .jkl-modal-container--placement-right.jkl-modal-container--slide-in {
136
- --jkl-modal-slide-x: 24px;
137
- --jkl-modal-slide-y: 0px;
138
- }
139
- .jkl-modal-container--placement-right .jkl-modal {
140
- height: 100%;
141
- max-height: 100%;
142
- margin-block: 0;
143
- margin-inline-end: 0;
144
- border-top-right-radius: 0;
145
- border-bottom-right-radius: 0;
146
- }
147
- }
148
- @layer jokul.components {
149
49
  .jkl-modal-header {
150
50
  --jkl-modal-header-margin: 0 0 var(--jkl-unit-20);
51
+ }
52
+ @media (width >= 0) and (max-width: 679px) {
53
+ .jkl-modal-header {
54
+ --jkl-modal-header-margin: 0 0 var(--jkl-unit-15);
55
+ }
56
+ }
57
+ .jkl-modal-header {
151
58
  display: flex;
152
59
  flex-direction: row;
153
60
  justify-content: space-between;
154
61
  align-items: center;
155
62
  margin: var(--jkl-modal-header-margin);
63
+ gap: var(--jkl-modal-gap);
156
64
  }
157
65
  .jkl-modal-body {
158
66
  font: var(--jkl-text-style-paragraph-medium);
@@ -161,12 +69,20 @@
161
69
  font: var(--jkl-text-style-heading-3);
162
70
  }
163
71
  .jkl-modal-actions {
164
- margin-block-start: var(--jkl-unit-50);
72
+ --jkl-modal-actions-margin: var(--jkl-unit-50) 0 0 0;
73
+ }
74
+ @media (width >= 0) and (max-width: 679px) {
75
+ .jkl-modal-actions {
76
+ --jkl-modal-actions-margin: var(--jkl-unit-40) 0 0 0;
77
+ }
78
+ }
79
+ .jkl-modal-actions {
80
+ margin: var(--jkl-modal-actions-margin);
165
81
  display: flex;
166
82
  flex-direction: column;
167
- gap: var(--jkl-unit-15) var(--jkl-unit-20);
83
+ gap: var(--jkl-unit-20);
168
84
  }
169
- @container (width > 35ch /* ~380px ved vanlig zoom/size */) {
85
+ @media (min-width: 60ch) {
170
86
  .jkl-modal-actions {
171
87
  flex-direction: row-reverse;
172
88
  align-self: flex-end;
@@ -1 +1 @@
1
- @layer jokul.components{.jkl-modal-container,.jkl-modal-overlay{inset:0;position:fixed}.jkl-modal-container{align-items:center;display:flex;justify-content:center;z-index:9000}.jkl-modal-container[aria-hidden=true]{pointer-events:none;visibility:hidden}}@layer jokul.components{.jkl-modal-overlay{background-color:rgba(27,25,23,.8);opacity:0;transition-duration:var(--jkl-motion-timing-expressive);transition-property:opacity;transition-timing-function:var(--jkl-motion-easing-entrance)}.jkl-modal-container:not([aria-hidden=true]) .jkl-modal-overlay{opacity:1}@media (prefers-reduced-motion:reduce){.jkl-modal-overlay{transition-duration:0s}}}@layer jokul.components{.jkl-modal{--margin:var(--jkl-spacing-m);background-color:var(--jkl-color-background-container);border-radius:var(--jkl-border-radius-l);box-shadow:0 .25rem .75rem rgba(37,42,49,.03);box-sizing:border-box;container-type:inline-size;display:flex;flex-direction:column;margin:var(--margin);max-height:90vh;max-width:none;overflow:auto;padding:var(--modal-padding,var(--jkl-unit-40));width:min(100vw - 2 * var(--margin),var(--modal-width,60ch));z-index:9000}@media screen and (forced-colors:active){.jkl-modal{border-color:CanvasText}}}@layer jokul.components{.jkl-modal-container--slide-in{--jkl-modal-slide-x:0px;--jkl-modal-slide-y:12px;transition-duration:var(--jkl-motion-timing-expressive);transition-duration:0s;transition-property:visibility;transition-timing-function:var(--jkl-motion-easing-exit)}.jkl-modal-container--slide-in[aria-hidden=true]{display:flex;pointer-events:none;transition-delay:var(--jkl-motion-timing-expressive);visibility:hidden}.jkl-modal-container--slide-in:not([aria-hidden=true]){transition-delay:0s;visibility:visible}.jkl-modal-container--slide-in .jkl-modal{opacity:0;transform:translate(var(--jkl-modal-slide-x),var(--jkl-modal-slide-y));transition-duration:var(--jkl-motion-timing-expressive);transition-property:transform,opacity;transition-timing-function:var(--jkl-motion-easing-entrance);will-change:transform,opacity}.jkl-modal-container--slide-in:not([aria-hidden=true]) .jkl-modal{opacity:1;transform:translate(0)}@media (prefers-reduced-motion:reduce){.jkl-modal-container--slide-in .jkl-modal{transition-duration:0s}}}@layer jokul.components{.jkl-modal-container--placement-bottom{align-items:flex-end}.jkl-modal-container--placement-bottom.jkl-modal-container--slide-in{--jkl-modal-slide-x:0px;--jkl-modal-slide-y:24px}.jkl-modal-container--placement-bottom .jkl-modal{--margin:0px;border-bottom-left-radius:0;border-bottom-right-radius:0;width:min(100vw,var(--modal-width,100vw))}.jkl-modal-container--placement-left{justify-content:flex-start}.jkl-modal-container--placement-left.jkl-modal-container--slide-in{--jkl-modal-slide-x:-24px;--jkl-modal-slide-y:0px}.jkl-modal-container--placement-left .jkl-modal{height:100%;margin-block:0;max-height:100%;-webkit-margin-start:0;border-bottom-left-radius:0;border-top-left-radius:0;margin-inline-start:0}.jkl-modal-container--placement-right{justify-content:flex-end}.jkl-modal-container--placement-right.jkl-modal-container--slide-in{--jkl-modal-slide-x:24px;--jkl-modal-slide-y:0px}.jkl-modal-container--placement-right .jkl-modal{height:100%;margin-block:0;max-height:100%;-webkit-margin-end:0;border-bottom-right-radius:0;border-top-right-radius:0;margin-inline-end:0}.jkl-modal-header{--jkl-modal-header-margin:0 0 var(--jkl-unit-20);align-items:center;display:flex;flex-direction:row;justify-content:space-between;margin:var(--jkl-modal-header-margin)}.jkl-modal-body{font:var(--jkl-text-style-paragraph-medium)}.jkl-modal-title{font:var(--jkl-text-style-heading-3)}.jkl-modal-actions{-webkit-margin-before:var(--jkl-unit-50);display:flex;flex-direction:column;gap:var(--jkl-unit-15) var(--jkl-unit-20);margin-block-start:var(--jkl-unit-50)}}@layer jokul.components{@container (width > 35ch ){.jkl-modal-actions{align-self:flex-end;flex-direction:row-reverse}}}
1
+ @layer jokul.components{.jkl-modal-container,.jkl-modal-overlay{inset:0;position:fixed}.jkl-modal-container{display:flex;z-index:9000}.jkl-modal-container[aria-hidden=true]{display:none}.jkl-modal-overlay{background-color:rgba(27,25,23,.8)}.jkl-modal{--jkl-modal-padding:var(--jkl-unit-50);--jkl-modal-min-width:13.75rem;--jkl-modal-max-width:41.25rem;background-color:var(--jkl-color-background-container);border-radius:var(--jkl-border-radius-l);box-shadow:0 .25rem .75rem rgba(37,42,49,.03);display:flex;flex-direction:column;margin:auto;max-height:90vh;max-width:var(--jkl-modal-max-width);min-width:var(--jkl-modal-min-width);overflow:auto;padding:var(--jkl-modal-padding);position:relative;width:100%;z-index:9000}@media screen and (forced-colors:active){.jkl-modal{border-color:CanvasText}}@media (width >= 0) and (max-width:679px){.jkl-modal{margin:auto var(--jkl-unit-30)}}.jkl-modal-header{--jkl-modal-header-margin:0 0 var(--jkl-unit-20)}@media (width >= 0) and (max-width:679px){.jkl-modal-header{--jkl-modal-header-margin:0 0 var(--jkl-unit-15)}}.jkl-modal-header{align-items:center;display:flex;flex-direction:row;gap:var(--jkl-modal-gap);justify-content:space-between;margin:var(--jkl-modal-header-margin)}.jkl-modal-body{font:var(--jkl-text-style-paragraph-medium)}.jkl-modal-title{font:var(--jkl-text-style-heading-3)}.jkl-modal-actions{--jkl-modal-actions-margin:var(--jkl-unit-50) 0 0 0}@media (width >= 0) and (max-width:679px){.jkl-modal-actions{--jkl-modal-actions-margin:var(--jkl-unit-40) 0 0 0}}.jkl-modal-actions{display:flex;flex-direction:column;gap:var(--jkl-unit-20);margin:var(--jkl-modal-actions-margin)}@media (min-width:60ch){.jkl-modal-actions{align-self:flex-end;flex-direction:row-reverse}}}
@@ -1,7 +1,97 @@
1
1
  @charset "UTF-8";
2
- @forward "layout";
3
- @forward "overlay";
4
- @forward "modal-base";
5
- @forward "motion";
6
- @forward "placement";
7
- @forward "parts";
2
+ @use "../../jkl";
3
+
4
+ @layer jokul.components {
5
+
6
+ .jkl-modal-container,
7
+ .jkl-modal-overlay {
8
+ position: fixed;
9
+ inset: 0;
10
+ }
11
+
12
+ .jkl-modal-container {
13
+ z-index: jkl.$z-index--modal;
14
+ display: flex;
15
+
16
+ &[aria-hidden="true"] {
17
+ display: none;
18
+ }
19
+ }
20
+
21
+ .jkl-modal-overlay {
22
+ background-color: rgb(27 25 23 / 80%);
23
+ }
24
+
25
+ .jkl-modal {
26
+ --jkl-modal-padding: var(--jkl-unit-50);
27
+ --jkl-modal-min-width: #{jkl.rem(220px)};
28
+ --jkl-modal-max-width: #{jkl.rem(660px)};
29
+
30
+ margin: auto;
31
+ z-index: jkl.$z-index--modal;
32
+ position: relative;
33
+
34
+ background-color: var(--jkl-color-background-container);
35
+ border-radius: var(--jkl-border-radius-l);
36
+ box-shadow: jkl.$shadow-task-card;
37
+
38
+ width: 100%;
39
+ min-width: var(--jkl-modal-min-width);
40
+ max-width: var(--jkl-modal-max-width);
41
+ max-height: 90vh;
42
+ overflow: auto;
43
+
44
+ padding: var(--jkl-modal-padding);
45
+ display: flex;
46
+ flex-direction: column;
47
+
48
+ @include jkl.forced-colors-mode {
49
+ border-color: CanvasText;
50
+ }
51
+
52
+ @include jkl.small-device {
53
+ margin: auto var(--jkl-unit-30);
54
+ }
55
+ }
56
+
57
+ .jkl-modal-header {
58
+ --jkl-modal-header-margin: 0 0 var(--jkl-unit-20);
59
+
60
+ @include jkl.small-device {
61
+ --jkl-modal-header-margin: 0 0 var(--jkl-unit-15);
62
+ }
63
+
64
+ display: flex;
65
+ flex-direction: row;
66
+ justify-content: space-between;
67
+ align-items: center;
68
+ margin: var(--jkl-modal-header-margin);
69
+ gap: var(--jkl-modal-gap);
70
+ }
71
+
72
+ .jkl-modal-body {
73
+ @include jkl.text-style("paragraph-medium");
74
+ }
75
+
76
+ .jkl-modal-title {
77
+ @include jkl.text-style("heading-3");
78
+ }
79
+
80
+ .jkl-modal-actions {
81
+ --jkl-modal-actions-margin: var(--jkl-unit-50) 0 0 0;
82
+
83
+ @include jkl.small-device {
84
+ --jkl-modal-actions-margin: var(--jkl-unit-40) 0 0 0;
85
+ }
86
+
87
+ margin: var(--jkl-modal-actions-margin);
88
+ display: flex;
89
+ flex-direction: column;
90
+ gap: var(--jkl-unit-20);
91
+
92
+ @include jkl.screen-from(60ch) {
93
+ flex-direction: row-reverse;
94
+ align-self: flex-end;
95
+ }
96
+ }
97
+ }
@@ -0,0 +1,2 @@
1
+ @forward "number-input";
2
+ @use "../button" as button;
@@ -0,0 +1,214 @@
1
+ /**
2
+ * Do not edit directly, this file was auto-generated.
3
+ */
4
+ @layer jokul.components {
5
+ .jkl-number-input {
6
+ display: flex;
7
+ flex-direction: column;
8
+ align-items: flex-start;
9
+ }
10
+ .jkl-number-input__wrapper {
11
+ --jkl-text-input-padding: var(--jkl-text-input-vertical-padding) var(--jkl-text-input-horizontal-padding);
12
+ --jkl-text-input-vertical-padding: var(--jkl-unit-15);
13
+ --jkl-text-input-horizontal-padding: var(--jkl-unit-15);
14
+ --jkl-text-input-action-button-size: var(--jkl-unit-60);
15
+ --jkl-text-input-action-button-icon-size: var(--jkl-unit-30);
16
+ --jkl-text-input-action-button-padding: var(--jkl-unit-10) 0;
17
+ --jkl-text-input-action-button-focus-position: var(--jkl-unit-05);
18
+ --text-color: var(--jkl-color-text-default);
19
+ --background-color: transparent;
20
+ --border-color: var(--jkl-color-border-default);
21
+ --placeholder-color: var(--jkl-color-text-subdued);
22
+ border-radius: var(--jkl-border-radius-s);
23
+ box-sizing: border-box;
24
+ max-width: 100%;
25
+ position: relative;
26
+ display: flex;
27
+ align-items: center;
28
+ font: var(--jkl-text-style-text-medium);
29
+ transition-timing-function: var(--jkl-motion-easing-standard);
30
+ transition-duration: var(--jkl-motion-timing-productive);
31
+ transition-property: color, box-shadow, background-color;
32
+ background-color: var(--background-color);
33
+ color: var(--text-color);
34
+ box-shadow: inset 0 0 0 0.0625rem var(--border-color), 0 0 0 0.0625rem transparent;
35
+ }
36
+ .jkl-number-input__wrapper:focus-within, .jkl-number-input__wrapper:has([data-focused=true]) {
37
+ --background-color: var(--jkl-color-background-container);
38
+ }
39
+ .jkl-number-input__wrapper[data-invalid=true]:not(:focus-within):not(:has([data-focused=true])) {
40
+ --background-color: var(--jkl-color-error-background-container);
41
+ --text-color: var(--jkl-color-error-text-default);
42
+ --border-color: var(--jkl-color-error-border-default);
43
+ --placeholder-color: var(--jkl-color-error-text-subdued);
44
+ }
45
+ .jkl-number-input__wrapper:hover, .jkl-number-input__wrapper:focus-within, .jkl-number-input__wrapper:has([data-focused=true]) {
46
+ --border-color: var(--jkl-color-border-strong);
47
+ box-shadow: inset 0 0 0 0.0625rem var(--border-color), 0 0 0 0.0625rem var(--border-color);
48
+ }
49
+ @media screen and (forced-colors: active) {
50
+ .jkl-number-input__wrapper:hover, .jkl-number-input__wrapper:focus-within, .jkl-number-input__wrapper:has([data-focused=true]) {
51
+ border: 0.125rem solid ButtonText;
52
+ }
53
+ }
54
+ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-number-input__wrapper:has(.jkl-text-input__input:focus-visible), html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-number-input__wrapper:has(.jkl-text-area__text-area:focus-visible) {
55
+ outline: 3px solid var(--jkl-color-border-strong);
56
+ outline-offset: 3px;
57
+ }
58
+ .jkl-number-input__wrapper > .jkl-icon-button:focus-visible {
59
+ outline: 3px solid var(--jkl-color-border-strong);
60
+ outline-offset: -8px;
61
+ }
62
+ @media screen and (forced-colors: active) {
63
+ .jkl-number-input__wrapper > .jkl-icon-button:focus-visible {
64
+ --border-color: ButtonText;
65
+ }
66
+ }
67
+ .jkl-number-input__wrapper > .jkl-text-input-action-button {
68
+ flex-shrink: 0;
69
+ display: flex;
70
+ box-sizing: border-box;
71
+ align-items: center;
72
+ justify-content: center;
73
+ padding: var(--jkl-text-input-action-button-padding);
74
+ height: var(--jkl-text-input-action-button-size);
75
+ width: var(--jkl-text-input-action-button-size);
76
+ margin-inline-start: calc(var(--jkl-text-input-horizontal-padding) * -1);
77
+ }
78
+ .jkl-number-input__wrapper > .jkl-text-input-action-button .jkl-icon-button__icon {
79
+ height: var(--jkl-text-input-action-button-icon-size);
80
+ width: var(--jkl-text-input-action-button-icon-size);
81
+ }
82
+ .jkl-number-input__wrapper > .jkl-text-input-action-button:hover {
83
+ color: var(--jkl-color-text-subdued);
84
+ }
85
+ @media screen and (forced-colors: active) {
86
+ .jkl-number-input__wrapper > .jkl-text-input-action-button:hover {
87
+ border: 0.125rem inset ButtonText;
88
+ }
89
+ }
90
+ @media screen and (forced-colors: active) {
91
+ .jkl-number-input__wrapper {
92
+ border: 0.125rem inset ButtonText;
93
+ }
94
+ }
95
+ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-number-input__wrapper:has(.jkl-number-input__input:focus-visible) {
96
+ outline: 3px solid var(--jkl-color-border-strong);
97
+ outline-offset: 3px;
98
+ }
99
+ .jkl-number-input__wrapper:has(.jkl-number-input__input:invalid):not(:focus-within):not(:has([data-focused=true])) {
100
+ --background-color: var(--jkl-color-background-alert-error);
101
+ --text-color: var(--jkl-color-text-on-alert);
102
+ --placeholder-color: color(from currentColor sRGB r g b / 75%);
103
+ }
104
+ .jkl-number-input__wrapper--stepper {
105
+ --jkl-number-input-stepper-min-width: calc(3ch + (var(--jkl-text-input-horizontal-padding) * 2));
106
+ --jkl-number-input-stepper-text-color: var(--text-color);
107
+ display: grid;
108
+ grid-template-columns: max-content minmax(var(--jkl-number-input-stepper-min-width), 1fr) max-content;
109
+ overflow: hidden;
110
+ }
111
+ .jkl-number-input__wrapper--stepper:has(button[data-direction]:focus-visible) {
112
+ overflow: visible;
113
+ }
114
+ .jkl-number-input__input {
115
+ padding: var(--jkl-text-input-padding);
116
+ width: 100%;
117
+ appearance: textfield;
118
+ -moz-appearance: textfield;
119
+ background: none;
120
+ -webkit-appearance: none;
121
+ color: inherit;
122
+ font: var(--jkl-text-style-text-medium);
123
+ }
124
+ .jkl-number-input__input {
125
+ outline: 0;
126
+ border-style: none;
127
+ outline-style: none;
128
+ }
129
+ .jkl-number-input__input:active, .jkl-number-input__input:hover, .jkl-number-input__input:focus {
130
+ outline: 0;
131
+ outline-style: none;
132
+ }
133
+ @media screen and (forced-colors: active) {
134
+ .jkl-number-input__input {
135
+ outline: revert;
136
+ border-style: revert;
137
+ outline-style: revert;
138
+ }
139
+ .jkl-number-input__input:active, .jkl-number-input__input:hover, .jkl-number-input__input:focus {
140
+ outline: revert;
141
+ outline-style: revert;
142
+ }
143
+ }
144
+ .jkl-number-input__input input[type=number]::-webkit-outer-spin-button,
145
+ .jkl-number-input__input input[type=number]::-webkit-inner-spin-button {
146
+ -webkit-appearance: none;
147
+ }
148
+ .jkl-number-input__input input[type=number] {
149
+ -moz-appearance: textfield;
150
+ }
151
+ @media screen and (forced-colors: active) {
152
+ .jkl-number-input__input {
153
+ outline: none;
154
+ border: none;
155
+ }
156
+ .jkl-number-input__input:focus-visible {
157
+ outline: none;
158
+ }
159
+ }
160
+ .jkl-number-input__input::placeholder {
161
+ opacity: 1;
162
+ color: var(--placeholder-color);
163
+ }
164
+ .jkl-number-input__input::-webkit-inner-spin-button, .jkl-number-input__input::-webkit-outer-spin-button {
165
+ -webkit-appearance: none;
166
+ margin: 0;
167
+ }
168
+ .jkl-number-input__input--align-right {
169
+ text-align: right;
170
+ }
171
+ .jkl-number-input__input--stepper {
172
+ box-sizing: border-box;
173
+ min-inline-size: var(--jkl-number-input-stepper-min-width);
174
+ text-align: center;
175
+ }
176
+ .jkl-number-input button[data-direction] {
177
+ --text-color: var(--jkl-number-input-stepper-text-color);
178
+ aspect-ratio: 1;
179
+ padding: 0;
180
+ display: inline-grid;
181
+ place-items: center;
182
+ text-align: center;
183
+ height: 100%;
184
+ }
185
+ .jkl-number-input button[data-direction]::before {
186
+ content: "";
187
+ position: absolute;
188
+ width: 1px;
189
+ inset-block: 20%;
190
+ background-color: var(--jkl-color-border-separator);
191
+ transition-timing-function: var(--jkl-motion-easing-standard);
192
+ transition-duration: var(--jkl-motion-timing-productive);
193
+ transition-property: inset;
194
+ }
195
+ .jkl-number-input button[data-direction]:hover::before, .jkl-number-input button[data-direction]:focus-visible::before {
196
+ inset-block: 0.0625rem;
197
+ }
198
+ .jkl-number-input button[data-direction]:disabled {
199
+ opacity: 0.4;
200
+ cursor: not-allowed;
201
+ }
202
+ .jkl-number-input button[data-direction=decrement]::before {
203
+ inset-inline-end: 0;
204
+ }
205
+ .jkl-number-input button[data-direction=increment]::before {
206
+ inset-inline-start: 0;
207
+ }
208
+ .jkl-number-input button[data-direction].jkl-button {
209
+ border-radius: 0;
210
+ }
211
+ .jkl-number-input button[data-direction].jkl-button .jkl-icon {
212
+ margin-block-start: 0.4ex;
213
+ }
214
+ }
@@ -0,0 +1 @@
1
+ @layer jokul.components{.jkl-number-input{align-items:flex-start;display:flex;flex-direction:column}.jkl-number-input__wrapper{--jkl-text-input-padding:var(--jkl-text-input-vertical-padding) var(--jkl-text-input-horizontal-padding);--jkl-text-input-vertical-padding:var(--jkl-unit-15);--jkl-text-input-horizontal-padding:var(--jkl-unit-15);--jkl-text-input-action-button-size:var(--jkl-unit-60);--jkl-text-input-action-button-icon-size:var(--jkl-unit-30);--jkl-text-input-action-button-padding:var(--jkl-unit-10) 0;--jkl-text-input-action-button-focus-position:var(--jkl-unit-05);--text-color:var(--jkl-color-text-default);--background-color:transparent;--border-color:var(--jkl-color-border-default);--placeholder-color:var(--jkl-color-text-subdued);align-items:center;background-color:var(--background-color);border-radius:var(--jkl-border-radius-s);box-shadow:inset 0 0 0 .0625rem var(--border-color),0 0 0 .0625rem transparent;box-sizing:border-box;color:var(--text-color);display:flex;font:var(--jkl-text-style-text-medium);max-width:100%;position:relative;transition-duration:var(--jkl-motion-timing-productive);transition-property:color,box-shadow,background-color;transition-timing-function:var(--jkl-motion-easing-standard)}.jkl-number-input__wrapper:focus-within,.jkl-number-input__wrapper:has([data-focused=true]){--background-color:var(--jkl-color-background-container)}.jkl-number-input__wrapper[data-invalid=true]:not(:focus-within):not(:has([data-focused=true])){--background-color:var(--jkl-color-error-background-container);--text-color:var(--jkl-color-error-text-default);--border-color:var(--jkl-color-error-border-default);--placeholder-color:var(--jkl-color-error-text-subdued)}.jkl-number-input__wrapper:focus-within,.jkl-number-input__wrapper:has([data-focused=true]),.jkl-number-input__wrapper:hover{--border-color:var(--jkl-color-border-strong);box-shadow:inset 0 0 0 .0625rem var(--border-color),0 0 0 .0625rem var(--border-color)}@media screen and (forced-colors:active){.jkl-number-input__wrapper:focus-within,.jkl-number-input__wrapper:has([data-focused=true]),.jkl-number-input__wrapper:hover{border:.125rem solid ButtonText}}html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-number-input__wrapper:has(.jkl-text-area__text-area:focus-visible),html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-number-input__wrapper:has(.jkl-text-input__input:focus-visible){outline:3px solid var(--jkl-color-border-strong);outline-offset:3px}.jkl-number-input__wrapper>.jkl-icon-button:focus-visible{outline:3px solid var(--jkl-color-border-strong);outline-offset:-8px}@media screen and (forced-colors:active){.jkl-number-input__wrapper>.jkl-icon-button:focus-visible{--border-color:ButtonText}}.jkl-number-input__wrapper>.jkl-text-input-action-button{align-items:center;box-sizing:border-box;display:flex;flex-shrink:0;height:var(--jkl-text-input-action-button-size);justify-content:center;padding:var(--jkl-text-input-action-button-padding);width:var(--jkl-text-input-action-button-size);-webkit-margin-start:calc(var(--jkl-text-input-horizontal-padding)*-1);margin-inline-start:calc(var(--jkl-text-input-horizontal-padding)*-1)}.jkl-number-input__wrapper>.jkl-text-input-action-button .jkl-icon-button__icon{height:var(--jkl-text-input-action-button-icon-size);width:var(--jkl-text-input-action-button-icon-size)}.jkl-number-input__wrapper>.jkl-text-input-action-button:hover{color:var(--jkl-color-text-subdued)}@media screen and (forced-colors:active){.jkl-number-input__wrapper>.jkl-text-input-action-button:hover{border:.125rem inset ButtonText}}@media screen and (forced-colors:active){.jkl-number-input__wrapper{border:.125rem inset ButtonText}}html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-number-input__wrapper:has(.jkl-number-input__input:focus-visible){outline:3px solid var(--jkl-color-border-strong);outline-offset:3px}.jkl-number-input__wrapper:has(.jkl-number-input__input:invalid):not(:focus-within):not(:has([data-focused=true])){--background-color:var(--jkl-color-background-alert-error);--text-color:var(--jkl-color-text-on-alert);--placeholder-color:color(from currentColor sRGB r g b/75%)}.jkl-number-input__wrapper--stepper{--jkl-number-input-stepper-min-width:calc(3ch + var(--jkl-text-input-horizontal-padding)*2);--jkl-number-input-stepper-text-color:var(--text-color);display:grid;grid-template-columns:-webkit-max-content minmax(var(--jkl-number-input-stepper-min-width),1fr) -webkit-max-content;grid-template-columns:max-content minmax(var(--jkl-number-input-stepper-min-width),1fr) max-content;overflow:hidden}.jkl-number-input__wrapper--stepper:has(button[data-direction]:focus-visible){overflow:visible}.jkl-number-input__input{-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield;-webkit-appearance:none;background:none;border-style:none;color:inherit;font:var(--jkl-text-style-text-medium);outline:0;outline-style:none;padding:var(--jkl-text-input-padding);width:100%}.jkl-number-input__input:active,.jkl-number-input__input:focus,.jkl-number-input__input:hover{outline:0;outline-style:none}@media screen and (forced-colors:active){.jkl-number-input__input{border-style:revert;outline:revert;outline-style:revert}.jkl-number-input__input:active,.jkl-number-input__input:focus,.jkl-number-input__input:hover{outline:revert;outline-style:revert}}.jkl-number-input__input input[type=number]::-webkit-inner-spin-button,.jkl-number-input__input input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}.jkl-number-input__input input[type=number]{-moz-appearance:textfield}@media screen and (forced-colors:active){.jkl-number-input__input{border:none;outline:none}.jkl-number-input__input:focus-visible{outline:none}}.jkl-number-input__input::placeholder{color:var(--placeholder-color);opacity:1}.jkl-number-input__input::-webkit-inner-spin-button,.jkl-number-input__input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.jkl-number-input__input--align-right{text-align:right}.jkl-number-input__input--stepper{box-sizing:border-box;min-inline-size:var(--jkl-number-input-stepper-min-width);text-align:center}.jkl-number-input button[data-direction]{--text-color:var(--jkl-number-input-stepper-text-color);aspect-ratio:1;display:inline-grid;height:100%;padding:0;place-items:center;text-align:center}.jkl-number-input button[data-direction]:before{background-color:var(--jkl-color-border-separator);content:"";inset-block:20%;position:absolute;transition-duration:var(--jkl-motion-timing-productive);transition-property:inset;transition-timing-function:var(--jkl-motion-easing-standard);width:1px}.jkl-number-input button[data-direction]:focus-visible:before,.jkl-number-input button[data-direction]:hover:before{inset-block:.0625rem}.jkl-number-input button[data-direction]:disabled{cursor:not-allowed;opacity:.4}.jkl-number-input button[data-direction=decrement]:before{inset-inline-end:0}.jkl-number-input button[data-direction=increment]:before{inset-inline-start:0}.jkl-number-input button[data-direction].jkl-button{border-radius:0}.jkl-number-input button[data-direction].jkl-button .jkl-icon{-webkit-margin-before:.4ex;margin-block-start:.4ex}}
@@ -0,0 +1,115 @@
1
+ @use "../../jkl";
2
+ @use "../../shared/input/shared-input-styles" as shared;
3
+
4
+ @layer jokul.components {
5
+ .jkl-number-input {
6
+ display: flex;
7
+ flex-direction: column;
8
+ align-items: flex-start;
9
+
10
+ &__wrapper {
11
+ @include shared.wrapper-styles;
12
+
13
+ @include jkl.keyboard-navigation {
14
+ &:has(.jkl-number-input__input:focus-visible) {
15
+ @include jkl.focus-outline;
16
+ }
17
+ }
18
+
19
+ &:has(.jkl-number-input__input:invalid):not(:focus-within):not( :has([data-focused="true"])) {
20
+ --background-color: var(--jkl-color-background-alert-error);
21
+ --text-color: var(--jkl-color-text-on-alert);
22
+ --placeholder-color: color(from currentColor sRGB r g b / 75%);
23
+ }
24
+ }
25
+
26
+ &__wrapper--stepper {
27
+ --jkl-number-input-stepper-min-width: calc(3ch + (var(--jkl-text-input-horizontal-padding) * 2));
28
+ --jkl-number-input-stepper-text-color: var(--text-color);
29
+
30
+ display: grid;
31
+ grid-template-columns:
32
+ max-content minmax(var(--jkl-number-input-stepper-min-width), 1fr) max-content;
33
+ overflow: hidden;
34
+
35
+ // Tillat at fokus-ringen på stepper-knappene vises i sin helhet,
36
+ // ellers kuttes den av `overflow: hidden` på wrapperen.
37
+ &:has(button[data-direction]:focus-visible) {
38
+ overflow: visible;
39
+ }
40
+ }
41
+
42
+ &__input {
43
+ padding: var(--jkl-text-input-padding);
44
+ width: 100%;
45
+ appearance: textfield;
46
+ -moz-appearance: textfield;
47
+
48
+ @include shared.input-styles;
49
+
50
+ &::-webkit-inner-spin-button,
51
+ &::-webkit-outer-spin-button {
52
+ -webkit-appearance: none;
53
+ margin: 0;
54
+ }
55
+
56
+ &--align-right {
57
+ text-align: right;
58
+ }
59
+
60
+ &--stepper {
61
+ box-sizing: border-box;
62
+ min-inline-size: var(--jkl-number-input-stepper-min-width);
63
+ text-align: center;
64
+ }
65
+ }
66
+
67
+ button[data-direction] {
68
+ --text-color: var(--jkl-number-input-stepper-text-color);
69
+
70
+ aspect-ratio: 1;
71
+ padding: 0;
72
+ display: inline-grid;
73
+ place-items: center;
74
+ text-align: center;
75
+ height: 100%;
76
+
77
+ &::before {
78
+ content: "";
79
+ position: absolute;
80
+ width: 1px;
81
+ inset-block: 20%;
82
+ background-color: var(--jkl-color-border-separator);
83
+
84
+ @include jkl.motion;
85
+ transition-property: inset;
86
+ }
87
+
88
+ &:hover::before,
89
+ &:focus-visible::before {
90
+ inset-block: jkl.rem(1px);
91
+ }
92
+
93
+ &:disabled {
94
+ opacity: 0.4;
95
+ cursor: not-allowed;
96
+ }
97
+ }
98
+
99
+ button[data-direction="decrement"]::before {
100
+ inset-inline-end: 0;
101
+ }
102
+
103
+ button[data-direction="increment"]::before {
104
+ inset-inline-start: 0;
105
+ }
106
+
107
+ button[data-direction].jkl-button {
108
+ border-radius: 0;
109
+
110
+ .jkl-icon {
111
+ margin-block-start: 0.4ex;
112
+ }
113
+ }
114
+ }
115
+ }
@@ -54,7 +54,7 @@
54
54
  transition-timing-function: var(--jkl-motion-easing-standard);
55
55
  transition-duration: var(--jkl-motion-timing-productive);
56
56
  }
57
- @keyframes jkl-downcount-udwdd74 {
57
+ @keyframes jkl-downcount-u3jy06p {
58
58
  from {
59
59
  width: 100%;
60
60
  }
@@ -1 +1 @@
1
- @layer jokul.components{.jkl-progress-bar{--track-color:var(--jkl-color-border-subdued);--bar-color:var(--jkl-color-border-strong);--bar-height:0.25rem;background-color:var(--track-color);border-radius:6.25rem;height:var(--bar-height);overflow:hidden;width:100%}.jkl-progress-bar__tracker{background-color:var(--bar-color);display:block;height:var(--bar-height)}@media screen and (forced-colors:active){.jkl-progress-bar{background-color:Canvas}.jkl-progress-bar__tracker{background-color:CanvasText}}.jkl-progress-bar{border-style:none;outline:0;outline-style:none}.jkl-progress-bar:active,.jkl-progress-bar:focus,.jkl-progress-bar:hover{outline:0;outline-style:none}@media screen and (forced-colors:active){.jkl-progress-bar{border-style:revert;outline:revert;outline-style:revert}.jkl-progress-bar:active,.jkl-progress-bar:focus,.jkl-progress-bar:hover{outline:revert;outline-style:revert}}.jkl-progress-bar:focus-visible{outline:3px solid var(--jkl-color-border-strong);outline-offset:3px}.jkl-progress-bar__tracker{transition-duration:var(--jkl-motion-timing-productive);transition-property:width;transition-timing-function:var(--jkl-motion-easing-standard)}@keyframes jkl-downcount-udwdd74{0%{width:100%}to{width:0}}}
1
+ @layer jokul.components{.jkl-progress-bar{--track-color:var(--jkl-color-border-subdued);--bar-color:var(--jkl-color-border-strong);--bar-height:0.25rem;background-color:var(--track-color);border-radius:6.25rem;height:var(--bar-height);overflow:hidden;width:100%}.jkl-progress-bar__tracker{background-color:var(--bar-color);display:block;height:var(--bar-height)}@media screen and (forced-colors:active){.jkl-progress-bar{background-color:Canvas}.jkl-progress-bar__tracker{background-color:CanvasText}}.jkl-progress-bar{border-style:none;outline:0;outline-style:none}.jkl-progress-bar:active,.jkl-progress-bar:focus,.jkl-progress-bar:hover{outline:0;outline-style:none}@media screen and (forced-colors:active){.jkl-progress-bar{border-style:revert;outline:revert;outline-style:revert}.jkl-progress-bar:active,.jkl-progress-bar:focus,.jkl-progress-bar:hover{outline:revert;outline-style:revert}}.jkl-progress-bar:focus-visible{outline:3px solid var(--jkl-color-border-strong);outline-offset:3px}.jkl-progress-bar__tracker{transition-duration:var(--jkl-motion-timing-productive);transition-property:width;transition-timing-function:var(--jkl-motion-easing-standard)}@keyframes jkl-downcount-u3jy06p{0%{width:100%}to{width:0}}}