@fremtind/jokul 0.15.0 → 0.16.1

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 (68) hide show
  1. package/build/build-stats.html +1 -1
  2. package/build/cjs/components/datepicker/DatePicker.js +1 -1
  3. package/build/cjs/components/datepicker/DatePicker.js.map +1 -1
  4. package/build/cjs/components/datepicker/internal/Calendar.js +1 -1
  5. package/build/cjs/components/datepicker/internal/Calendar.js.map +1 -1
  6. package/build/cjs/components/popover/Popover.js +1 -1
  7. package/build/cjs/components/popover/Popover.js.map +1 -1
  8. package/build/cjs/components/popover/utils.js.map +1 -1
  9. package/build/cjs/components/text-input/BaseTextInput.js +1 -1
  10. package/build/cjs/components/text-input/BaseTextInput.js.map +1 -1
  11. package/build/cjs/components/toggle-switch/documentation/Example.js +2 -0
  12. package/build/cjs/components/toggle-switch/documentation/Example.js.map +1 -0
  13. package/build/cjs/components/toggle-switch/documentation/main.js +2 -0
  14. package/build/cjs/components/toggle-switch/documentation/main.js.map +1 -0
  15. package/build/cjs/components/toggle-switch/documentation/vite.dev.config.js +2 -0
  16. package/build/cjs/components/toggle-switch/documentation/vite.dev.config.js.map +1 -0
  17. package/build/es/components/datepicker/DatePicker.js +1 -1
  18. package/build/es/components/datepicker/DatePicker.js.map +1 -1
  19. package/build/es/components/datepicker/internal/Calendar.js +1 -1
  20. package/build/es/components/datepicker/internal/Calendar.js.map +1 -1
  21. package/build/es/components/popover/Popover.js +1 -1
  22. package/build/es/components/popover/Popover.js.map +1 -1
  23. package/build/es/components/popover/utils.js.map +1 -1
  24. package/build/es/components/text-input/BaseTextInput.js +1 -1
  25. package/build/es/components/text-input/BaseTextInput.js.map +1 -1
  26. package/build/es/components/toggle-switch/documentation/Example.js +2 -0
  27. package/build/es/components/toggle-switch/documentation/Example.js.map +1 -0
  28. package/build/es/components/toggle-switch/documentation/main.js +2 -0
  29. package/build/es/components/toggle-switch/documentation/main.js.map +1 -0
  30. package/build/es/components/toggle-switch/documentation/vite.dev.config.js +2 -0
  31. package/build/es/components/toggle-switch/documentation/vite.dev.config.js.map +1 -0
  32. package/build/packages/jokul/src/components/datepicker/internal/Calendar.d.ts +0 -1
  33. package/build/packages/jokul/src/components/popover/Popover.d.ts +61 -21
  34. package/build/packages/jokul/src/components/popover/utils.d.ts +1 -1
  35. package/build/packages/jokul/src/components/text-input/BaseTextInput.d.ts +8 -0
  36. package/build/packages/jokul/src/components/toggle-switch/documentation/Example.d.ts +2 -0
  37. package/build/packages/jokul/src/components/toggle-switch/documentation/main.d.ts +1 -0
  38. package/build/packages/jokul/src/components/toggle-switch/documentation/vite.dev.config.d.ts +2 -0
  39. package/build/style.css +1 -1
  40. package/package.json +2 -2
  41. package/src/components/button/styles/button.css +2 -2
  42. package/src/components/button/styles/button.min.css +1 -1
  43. package/src/components/checkbox/styles/checkbox.css +4 -4
  44. package/src/components/checkbox/styles/checkbox.min.css +1 -1
  45. package/src/components/datepicker/styles/_calendar.scss +11 -32
  46. package/src/components/datepicker/styles/datepicker.css +8 -33
  47. package/src/components/datepicker/styles/datepicker.min.css +1 -1
  48. package/src/components/feedback/styles/feedback.css +2 -2
  49. package/src/components/feedback/styles/feedback.min.css +1 -1
  50. package/src/components/input-group/styles/input-group.css +2 -2
  51. package/src/components/input-group/styles/input-group.min.css +1 -1
  52. package/src/components/loader/styles/loader.css +6 -6
  53. package/src/components/loader/styles/loader.min.css +1 -1
  54. package/src/components/loader/styles/skeleton-loader.css +5 -5
  55. package/src/components/loader/styles/skeleton-loader.min.css +1 -1
  56. package/src/components/message/styles/message.css +2 -2
  57. package/src/components/message/styles/message.min.css +1 -1
  58. package/src/components/progress-bar/styles/progress-bar.css +2 -2
  59. package/src/components/progress-bar/styles/progress-bar.min.css +1 -1
  60. package/src/components/radio-button/styles/radio-button.css +2 -2
  61. package/src/components/radio-button/styles/radio-button.min.css +1 -1
  62. package/src/components/system-message/styles/system-message.css +2 -2
  63. package/src/components/system-message/styles/system-message.min.css +1 -1
  64. package/src/components/toast/styles/toast.css +4 -4
  65. package/src/components/toast/styles/toast.min.css +1 -1
  66. package/src/components/toggle-switch/styles/toggle-switch.css +301 -0
  67. package/src/components/toggle-switch/styles/toggle-switch.min.css +1 -0
  68. package/src/components/toggle-switch/styles/toggle-switch.scss +138 -0
@@ -193,14 +193,14 @@
193
193
 
194
194
  .jkl-toast[data-animation=entering],
195
195
  .jkl-toast[data-animation=queued] {
196
- animation: jkl-entering-udhyvs4 200ms ease-out forwards;
196
+ animation: jkl-entering-uh8al8y 200ms ease-out forwards;
197
197
  }
198
198
 
199
199
  .jkl-toast[data-animation=exiting] {
200
- animation: jkl-exiting-udhyvsa 150ms ease-in forwards;
200
+ animation: jkl-exiting-uh8al9b 150ms ease-in forwards;
201
201
  }
202
202
 
203
- @keyframes jkl-entering-udhyvs4 {
203
+ @keyframes jkl-entering-uh8al8y {
204
204
  from {
205
205
  opacity: 0;
206
206
  transform: translate3d(0, 50%, 0);
@@ -210,7 +210,7 @@
210
210
  transform: translate3d(0, 0, 0);
211
211
  }
212
212
  }
213
- @keyframes jkl-exiting-udhyvsa {
213
+ @keyframes jkl-exiting-uh8al9b {
214
214
  from {
215
215
  opacity: 1;
216
216
  transform: translate3d(0, 0, 0);
@@ -1 +1 @@
1
- :root,[data-density=comfortable],[data-layout-density=comfortable]{--jkl-toast-padding:1rem}@media (width >= 0) and (max-width:679px){:root,[data-density=comfortable],[data-layout-density=comfortable]{--jkl-toast-padding:0.75rem}}[data-density=compact],[data-layout-density=compact]{--jkl-toast-padding:0.5rem}.jkl-toast-region{background:#0000;bottom:1.5rem;display:flex;justify-content:center;left:0;pointer-events:none;position:fixed;right:0;width:100%;z-index:10000}.jkl-toast-region__toasts{align-items:center;display:flex;flex-direction:column;gap:1rem;min-width:18rem;pointer-events:auto}.jkl-toast-region--left{justify-content:flex-start;left:1.5rem}.jkl-toast{--background-color:var(--jkl-color-background-container-high);--text-color:var(--jkl-color-text-default);align-items:start;background-color:var(--background-color);border-radius:4px;box-sizing:border-box;color:var(--text-color);display:grid;font-size:1.125rem;font-weight:400;line-height:1.75rem;max-width:min(30rem,85vw);overflow:hidden;padding:var(--jkl-toast-padding);padding-top:0;width:100%;--jkl-icon-weight:300}@media (min-width:680px){.jkl-toast{font-size:1.25rem;font-weight:400;line-height:2rem;--jkl-icon-weight:300}}@media (width >= 0) and (max-width:679px){.jkl-toast{grid-template-areas:"progress progress" "icon dismiss" "content content"}}@media (min-width:680px){.jkl-toast{grid-template-areas:"progress progress progress" "icon content dismiss";grid-template-columns:auto 1fr auto}}.jkl-toast__progress{grid-area:progress;margin-bottom:1rem;margin-inline:calc(var(--jkl-toast-padding)*-1)}.jkl-toast__progress .jkl-countdown{--bar-color:var(--text-color);--track-color:#0000;border-radius:0}.jkl-toast__icon{grid-area:icon;margin-right:1rem;width:1.5rem}@media screen and (forced-colors:active){.jkl-toast__icon,.jkl-toast__icon path,.jkl-toast__icon svg{stroke:CanvasText}}.jkl-toast__content{grid-area:content}.jkl-toast__message{margin-top:-.125rem}.jkl-toast__title{font-size:1.125rem;font-weight:700;line-height:1.5rem;margin:0 0 .25rem;--jkl-icon-weight:500}@media (min-width:680px){.jkl-toast__title{font-size:1.3125rem;font-weight:700;line-height:1.75rem;--jkl-icon-weight:500}}.jkl-toast__title~.jkl-toast__message{margin-top:0}.jkl-toast__dismiss-button{background-color:initial;color:inherit;cursor:pointer;grid-area:dismiss;justify-self:end;margin-left:var(--jkl-toast-gap);padding:0;position:relative}@media screen and (forced-colors:active){.jkl-toast__dismiss-button,.jkl-toast__dismiss-button path,.jkl-toast__dismiss-button svg{stroke:ButtonText}.jkl-toast__dismiss-button{background-color:ButtonFace}}.jkl-toast__dismiss-button:after{--tap-increment:-0.75rem;border-radius:.1875rem;content:"";inset:var(--tap-increment) var(--tap-increment) var(--tap-increment) var(--tap-increment);position:absolute}.jkl-toast--error,.jkl-toast--info,.jkl-toast--success,.jkl-toast--warning{--text-color:var(--jkl-color-text-on-alert)}.jkl-toast--info{--background-color:var(--jkl-color-background-alert-info)}.jkl-toast--warning{--background-color:var(--jkl-color-background-alert-warning)}.jkl-toast--error{--background-color:var(--jkl-color-background-alert-error)}.jkl-toast--success{--background-color:var(--jkl-color-background-alert-success)}@media screen and (forced-colors:active){.jkl-toast{border:2px solid CanvasText}.jkl-toast--info{border-style:dotted}.jkl-toast--warning{border-style:dashed}.jkl-toast--error{border-style:double;border-width:4px}}.jkl-toast[data-animation=entering],.jkl-toast[data-animation=queued]{animation:jkl-entering-udhyvs4 .2s ease-out forwards}.jkl-toast[data-animation=exiting]{animation:jkl-exiting-udhyvsa .15s ease-in forwards}@keyframes jkl-entering-udhyvs4{0%{opacity:0;transform:translate3d(0,50%,0)}to{opacity:1;transform:translateZ(0)}}@keyframes jkl-exiting-udhyvsa{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,50%,0)}}
1
+ :root,[data-density=comfortable],[data-layout-density=comfortable]{--jkl-toast-padding:1rem}@media (width >= 0) and (max-width:679px){:root,[data-density=comfortable],[data-layout-density=comfortable]{--jkl-toast-padding:0.75rem}}[data-density=compact],[data-layout-density=compact]{--jkl-toast-padding:0.5rem}.jkl-toast-region{background:#0000;bottom:1.5rem;display:flex;justify-content:center;left:0;pointer-events:none;position:fixed;right:0;width:100%;z-index:10000}.jkl-toast-region__toasts{align-items:center;display:flex;flex-direction:column;gap:1rem;min-width:18rem;pointer-events:auto}.jkl-toast-region--left{justify-content:flex-start;left:1.5rem}.jkl-toast{--background-color:var(--jkl-color-background-container-high);--text-color:var(--jkl-color-text-default);align-items:start;background-color:var(--background-color);border-radius:4px;box-sizing:border-box;color:var(--text-color);display:grid;font-size:1.125rem;font-weight:400;line-height:1.75rem;max-width:min(30rem,85vw);overflow:hidden;padding:var(--jkl-toast-padding);padding-top:0;width:100%;--jkl-icon-weight:300}@media (min-width:680px){.jkl-toast{font-size:1.25rem;font-weight:400;line-height:2rem;--jkl-icon-weight:300}}@media (width >= 0) and (max-width:679px){.jkl-toast{grid-template-areas:"progress progress" "icon dismiss" "content content"}}@media (min-width:680px){.jkl-toast{grid-template-areas:"progress progress progress" "icon content dismiss";grid-template-columns:auto 1fr auto}}.jkl-toast__progress{grid-area:progress;margin-bottom:1rem;margin-inline:calc(var(--jkl-toast-padding)*-1)}.jkl-toast__progress .jkl-countdown{--bar-color:var(--text-color);--track-color:#0000;border-radius:0}.jkl-toast__icon{grid-area:icon;margin-right:1rem;width:1.5rem}@media screen and (forced-colors:active){.jkl-toast__icon,.jkl-toast__icon path,.jkl-toast__icon svg{stroke:CanvasText}}.jkl-toast__content{grid-area:content}.jkl-toast__message{margin-top:-.125rem}.jkl-toast__title{font-size:1.125rem;font-weight:700;line-height:1.5rem;margin:0 0 .25rem;--jkl-icon-weight:500}@media (min-width:680px){.jkl-toast__title{font-size:1.3125rem;font-weight:700;line-height:1.75rem;--jkl-icon-weight:500}}.jkl-toast__title~.jkl-toast__message{margin-top:0}.jkl-toast__dismiss-button{background-color:initial;color:inherit;cursor:pointer;grid-area:dismiss;justify-self:end;margin-left:var(--jkl-toast-gap);padding:0;position:relative}@media screen and (forced-colors:active){.jkl-toast__dismiss-button,.jkl-toast__dismiss-button path,.jkl-toast__dismiss-button svg{stroke:ButtonText}.jkl-toast__dismiss-button{background-color:ButtonFace}}.jkl-toast__dismiss-button:after{--tap-increment:-0.75rem;border-radius:.1875rem;content:"";inset:var(--tap-increment) var(--tap-increment) var(--tap-increment) var(--tap-increment);position:absolute}.jkl-toast--error,.jkl-toast--info,.jkl-toast--success,.jkl-toast--warning{--text-color:var(--jkl-color-text-on-alert)}.jkl-toast--info{--background-color:var(--jkl-color-background-alert-info)}.jkl-toast--warning{--background-color:var(--jkl-color-background-alert-warning)}.jkl-toast--error{--background-color:var(--jkl-color-background-alert-error)}.jkl-toast--success{--background-color:var(--jkl-color-background-alert-success)}@media screen and (forced-colors:active){.jkl-toast{border:2px solid CanvasText}.jkl-toast--info{border-style:dotted}.jkl-toast--warning{border-style:dashed}.jkl-toast--error{border-style:double;border-width:4px}}.jkl-toast[data-animation=entering],.jkl-toast[data-animation=queued]{animation:jkl-entering-uh8al8y .2s ease-out forwards}.jkl-toast[data-animation=exiting]{animation:jkl-exiting-uh8al9b .15s ease-in forwards}@keyframes jkl-entering-uh8al8y{0%{opacity:0;transform:translate3d(0,50%,0)}to{opacity:1;transform:translateZ(0)}}@keyframes jkl-exiting-uh8al9b{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,50%,0)}}
@@ -0,0 +1,301 @@
1
+ /**
2
+ * Do not edit directly
3
+ * Generated on Mon, 23 Sep 2024 08:51:40 GMT
4
+ */
5
+ @media screen and (prefers-color-scheme: light) {
6
+ :root {
7
+ --jkl-slider-bg: #e0dbd4;
8
+ --jkl-slider-pill: #f9f9f9;
9
+ --jkl-slider-pill-text: #1b1917;
10
+ --jkl-slider-pill-text--active: #000000;
11
+ --jkl-slider-focus-color: #000000;
12
+ --jkl-slider-hover-color: #000000;
13
+ }
14
+ }
15
+ [data-theme=light] {
16
+ --jkl-slider-bg: #e0dbd4;
17
+ --jkl-slider-pill: #f9f9f9;
18
+ --jkl-slider-pill-text: #1b1917;
19
+ --jkl-slider-pill-text--active: #000000;
20
+ --jkl-slider-focus-color: #000000;
21
+ --jkl-slider-hover-color: #000000;
22
+ }
23
+
24
+ @media screen and (prefers-color-scheme: dark) {
25
+ :root {
26
+ --jkl-slider-bg: #444141;
27
+ --jkl-slider-pill: #1b1917;
28
+ --jkl-slider-pill-text: #f9f9f9;
29
+ --jkl-slider-pill-text--active: #ffffff;
30
+ --jkl-slider-focus-color: #c8c5c3;
31
+ --jkl-slider-hover-color: #ffffff;
32
+ }
33
+ }
34
+ [data-theme=dark] {
35
+ --jkl-slider-bg: #444141;
36
+ --jkl-slider-pill: #1b1917;
37
+ --jkl-slider-pill-text: #f9f9f9;
38
+ --jkl-slider-pill-text--active: #ffffff;
39
+ --jkl-slider-focus-color: #c8c5c3;
40
+ --jkl-slider-hover-color: #ffffff;
41
+ }
42
+
43
+ :root,
44
+ [data-layout-density=comfortable],
45
+ [data-density=comfortable] {
46
+ --jkl-slider-font-size: var(--jkl-body-font-size);
47
+ --jkl-slider-line-height: var(--jkl-body-line-height);
48
+ --jkl-slider-font-weight: var(--jkl-body-font-weight);
49
+ --jkl-slider-legend-font-size: var(--jkl-body-font-size);
50
+ --jkl-slider-legend-line-height: var(--jkl-body-line-height);
51
+ --jkl-slider-legend-font-weight: 700;
52
+ }
53
+
54
+ [data-layout-density=compact],
55
+ [data-density=compact] {
56
+ --jkl-slider-font-size: var(--jkl-small-font-size);
57
+ --jkl-slider-line-height: var(--jkl-small-line-height);
58
+ --jkl-slider-font-weight: var(--jkl-small-font-weight);
59
+ --jkl-slider-legend-font-size: var(--jkl-small-font-size);
60
+ --jkl-slider-legend-line-height: var(--jkl-small-line-height);
61
+ --jkl-slider-legend-font-weight: 700;
62
+ }
63
+
64
+ .jkl-toggle-slider {
65
+ font-size: var(--jkl-slider-font-size);
66
+ line-height: var(--jkl-slider-line-height);
67
+ font-weight: var(--jkl-slider-font-weight);
68
+ position: relative;
69
+ overflow: hidden;
70
+ display: flex;
71
+ align-items: flex-start;
72
+ width: 100%;
73
+ flex-direction: column;
74
+ user-select: none;
75
+ }
76
+ html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-toggle-slider:focus-within .jkl-toggle-slider__pill {
77
+ box-shadow: inset 0 0 0 0.125rem var(--jkl-slider-focus-color);
78
+ }
79
+ .jkl-toggle-slider__legend {
80
+ margin-bottom: 0.5rem;
81
+ font-size: var(--jkl-slider-legend-font-size);
82
+ line-height: var(--jkl-slider-legend-line-height);
83
+ font-weight: var(--jkl-slider-legend-font-weight);
84
+ }
85
+ .jkl-toggle-slider__legend--sr-only {
86
+ border: 0 !important;
87
+ clip: rect(1px, 1px, 1px, 1px) !important; /* 1 */
88
+ clip-path: inset(50%) !important; /* 2 */
89
+ height: 1px !important;
90
+ margin: -1px !important;
91
+ overflow: hidden !important;
92
+ padding: 0 !important;
93
+ position: absolute !important;
94
+ width: 1px !important;
95
+ white-space: nowrap !important; /* 3 */
96
+ }
97
+ .jkl-toggle-slider__inputs {
98
+ display: flex;
99
+ position: relative;
100
+ overflow: hidden;
101
+ background-color: var(--jkl-slider-bg);
102
+ border-radius: 6.25rem;
103
+ border: 2px solid var(--jkl-slider-bg);
104
+ }
105
+ .jkl-toggle-slider__input {
106
+ position: absolute;
107
+ opacity: 0;
108
+ }
109
+ .jkl-toggle-slider__label {
110
+ display: flex;
111
+ align-items: center;
112
+ justify-content: center;
113
+ z-index: 1;
114
+ cursor: pointer;
115
+ padding: 0.125rem 1rem;
116
+ color: var(--jkl-slider-pill-text);
117
+ -webkit-tap-highlight-color: transparent;
118
+ /* Prevent really short labels to look like circles */
119
+ min-width: 30px;
120
+ }
121
+ .jkl-toggle-slider__label:hover {
122
+ color: var(--jkl-slider-hover-color);
123
+ }
124
+ .jkl-toggle-slider__label--selected {
125
+ --jkl-icon-weight: 500;
126
+ font-weight: 700;
127
+ letter-spacing: -0.014em;
128
+ color: var(--jkl-slider-pill-text--active);
129
+ }
130
+ .jkl-toggle-slider__pill {
131
+ height: 100%;
132
+ background-color: var(--jkl-slider-pill);
133
+ position: absolute;
134
+ transition-property: width, transform;
135
+ border-radius: 6.25rem;
136
+ transition-timing-function: ease;
137
+ transition-duration: 250ms;
138
+ }
139
+ @media (min-width: 680px) {
140
+ .jkl-toggle-slider {
141
+ flex-direction: row;
142
+ align-items: center;
143
+ }
144
+ .jkl-toggle-slider__legend {
145
+ margin-bottom: 0;
146
+ margin-right: 1.2em;
147
+ }
148
+ }
149
+ @media screen and (forced-colors: active) {
150
+ .jkl-toggle-slider .jkl-toggle-slider__inputs {
151
+ background-color: Canvas;
152
+ }
153
+ .jkl-toggle-slider .jkl-toggle-slider__pill {
154
+ background-color: ButtonFace;
155
+ }
156
+ }
157
+
158
+ :root,
159
+ [data-layout-density=comfortable],
160
+ [data-density=comfortable] {
161
+ --jkl-toggle-font-size: var(--jkl-body-font-size);
162
+ --jkl-toggle-line-height: var(--jkl-body-line-height);
163
+ --jkl-toggle-font-weight: var(--jkl-body-font-weight);
164
+ --jkl-toggle-switch-height: 1.75rem;
165
+ --jkl-toggle-switch-width: 3rem;
166
+ --jkl-toggle-switch-knob-size: 1.25rem;
167
+ --jkl-toggle-switch-indicator-spacing: 0;
168
+ --jkl-toggle-switch-help-label-spacing: var(--jkl-spacing-2);
169
+ }
170
+
171
+ [data-layout-density=compact],
172
+ [data-density=compact] {
173
+ --jkl-toggle-font-size: var(--jkl-small-font-size);
174
+ --jkl-toggle-line-height: var(--jkl-small-line-height);
175
+ --jkl-toggle-font-weight: var(--jkl-small-font-weight);
176
+ --jkl-toggle-switch-height: 1.25rem;
177
+ --jkl-toggle-switch-width: 2.25rem;
178
+ --jkl-toggle-switch-knob-size: 0.75rem;
179
+ --jkl-toggle-switch-indicator-spacing: -0.125rem;
180
+ --jkl-toggle-switch-help-label-spacing: 0;
181
+ }
182
+
183
+ .jkl-toggle-switch {
184
+ --border-width: 0.0625rem;
185
+ --switch-padding: 0.25rem;
186
+ --knob-position: 0;
187
+ --switch-border-color: var(--jkl-color-border-action);
188
+ --indicator-color: var(--jkl-color-background-container-high);
189
+ --knob-border-color: var(--jkl-color-border-action);
190
+ --knob-color: var(--jkl-color-background-container-high);
191
+ --text-color: var(--jkl-color-text-default);
192
+ --icon-color: var(--jkl-color-text-inverted);
193
+ background: transparent;
194
+ color: var(--text-color);
195
+ padding: 0;
196
+ cursor: pointer;
197
+ -webkit-tap-highlight-color: transparent;
198
+ display: flex;
199
+ flex-direction: row-reverse;
200
+ align-items: center;
201
+ gap: var(--jkl-spacing-8);
202
+ touch-action: none;
203
+ font-size: var(--jkl-toggle-font-size);
204
+ line-height: var(--jkl-toggle-line-height);
205
+ font-weight: var(--jkl-toggle-font-weight);
206
+ outline: 0;
207
+ border-style: none;
208
+ outline-style: none;
209
+ }
210
+ .jkl-toggle-switch:active, .jkl-toggle-switch:hover, .jkl-toggle-switch:focus {
211
+ outline: 0;
212
+ outline-style: none;
213
+ }
214
+ @media screen and (forced-colors: active) {
215
+ .jkl-toggle-switch {
216
+ outline: revert;
217
+ border-style: revert;
218
+ outline-style: revert;
219
+ }
220
+ .jkl-toggle-switch:active, .jkl-toggle-switch:hover, .jkl-toggle-switch:focus {
221
+ outline: revert;
222
+ outline-style: revert;
223
+ }
224
+ }
225
+ @media screen and (forced-colors: active) {
226
+ .jkl-toggle-switch {
227
+ border-color: transparent;
228
+ border-style: none;
229
+ }
230
+ }
231
+ .jkl-toggle-switch[aria-pressed=true], [aria-checked=true] > .jkl-toggle-switch {
232
+ --indicator-color: var(--jkl-color-background-container-inverted);
233
+ --knob-color: var(--jkl-color-text-inverted);
234
+ --knob-position: calc(
235
+ var(--jkl-toggle-switch-width) - var(--jkl-toggle-switch-knob-size) - var(--switch-padding) * 2
236
+ );
237
+ }
238
+ .jkl-toggle-switch[disabled] {
239
+ cursor: revert;
240
+ --text-color: var(--jkl-color-text-subdued);
241
+ --switch-border-color: var(--jkl-color-border-subdued);
242
+ --knob-border-color: var(--jkl-color-border-subdued);
243
+ }
244
+ .jkl-toggle-switch[disabled][aria-pressed=true], [aria-checked=true] > .jkl-toggle-switch[disabled] {
245
+ --indicator-color: var(--jkl-color-border-subdued);
246
+ }
247
+
248
+ .jkl-toggle-switch-widget {
249
+ position: relative;
250
+ box-sizing: border-box;
251
+ display: flex;
252
+ flex-direction: row;
253
+ align-items: center;
254
+ height: var(--jkl-toggle-switch-height);
255
+ width: var(--jkl-toggle-switch-width);
256
+ border-radius: 9999px;
257
+ border: var(--border-width) solid var(--switch-border-color);
258
+ overflow: hidden;
259
+ user-select: none;
260
+ padding: var(--switch-padding);
261
+ background-color: var(--indicator-color);
262
+ pointer-events: none;
263
+ }
264
+ @media screen and (forced-colors: active) {
265
+ .jkl-toggle-switch-widget {
266
+ border: 0.0625rem solid ButtonText;
267
+ }
268
+ }
269
+ .jkl-toggle-switch:focus-visible .jkl-toggle-switch-widget {
270
+ outline: 2px solid var(--jkl-color-border-action);
271
+ outline-offset: 2px;
272
+ }
273
+ .jkl-toggle-switch-widget__slider {
274
+ position: relative;
275
+ box-sizing: border-box;
276
+ height: var(--jkl-toggle-switch-knob-size);
277
+ width: var(--jkl-toggle-switch-knob-size);
278
+ color: var(--icon-color);
279
+ transition-timing-function: ease;
280
+ transition-duration: 150ms;
281
+ transition-property: translate;
282
+ translate: var(--knob-position);
283
+ }
284
+ .jkl-toggle-switch-widget__knob {
285
+ position: absolute;
286
+ inset: 0;
287
+ border-radius: 9999px;
288
+ border: var(--border-width) solid var(--knob-border-color);
289
+ background-color: var(--knob-color);
290
+ }
291
+ .jkl-toggle-switch-widget__indicator {
292
+ position: absolute;
293
+ top: 50%;
294
+ right: 100%;
295
+ margin-right: var(--jkl-toggle-switch-indicator-spacing);
296
+ transform: translate(0, -50%);
297
+ }
298
+ .jkl-toggle-switch-widget__indicator > .jkl-icon__icon {
299
+ position: absolute;
300
+ inset: 0;
301
+ }
@@ -0,0 +1 @@
1
+ @media screen and (prefers-color-scheme:light){:root{--jkl-slider-bg:#e0dbd4;--jkl-slider-pill:#f9f9f9;--jkl-slider-pill-text:#1b1917;--jkl-slider-pill-text--active:#000;--jkl-slider-focus-color:#000;--jkl-slider-hover-color:#000}}[data-theme=light]{--jkl-slider-bg:#e0dbd4;--jkl-slider-pill:#f9f9f9;--jkl-slider-pill-text:#1b1917;--jkl-slider-pill-text--active:#000;--jkl-slider-focus-color:#000;--jkl-slider-hover-color:#000}@media screen and (prefers-color-scheme:dark){:root{--jkl-slider-bg:#444141;--jkl-slider-pill:#1b1917;--jkl-slider-pill-text:#f9f9f9;--jkl-slider-pill-text--active:#fff;--jkl-slider-focus-color:#c8c5c3;--jkl-slider-hover-color:#fff}}[data-theme=dark]{--jkl-slider-bg:#444141;--jkl-slider-pill:#1b1917;--jkl-slider-pill-text:#f9f9f9;--jkl-slider-pill-text--active:#fff;--jkl-slider-focus-color:#c8c5c3;--jkl-slider-hover-color:#fff}:root,[data-density=comfortable],[data-layout-density=comfortable]{--jkl-slider-font-size:var(--jkl-body-font-size);--jkl-slider-line-height:var(--jkl-body-line-height);--jkl-slider-font-weight:var(--jkl-body-font-weight);--jkl-slider-legend-font-size:var(--jkl-body-font-size);--jkl-slider-legend-line-height:var(--jkl-body-line-height);--jkl-slider-legend-font-weight:700}[data-density=compact],[data-layout-density=compact]{--jkl-slider-font-size:var(--jkl-small-font-size);--jkl-slider-line-height:var(--jkl-small-line-height);--jkl-slider-font-weight:var(--jkl-small-font-weight);--jkl-slider-legend-font-size:var(--jkl-small-font-size);--jkl-slider-legend-line-height:var(--jkl-small-line-height);--jkl-slider-legend-font-weight:700}.jkl-toggle-slider{align-items:flex-start;display:flex;flex-direction:column;font-size:var(--jkl-slider-font-size);font-weight:var(--jkl-slider-font-weight);line-height:var(--jkl-slider-line-height);overflow:hidden;position:relative;-webkit-user-select:none;user-select:none;width:100%}html:not([data-mousenavigation]):not([data-touchnavigation]) .jkl-toggle-slider:focus-within .jkl-toggle-slider__pill{box-shadow:inset 0 0 0 .125rem var(--jkl-slider-focus-color)}.jkl-toggle-slider__legend{font-size:var(--jkl-slider-legend-font-size);font-weight:var(--jkl-slider-legend-font-weight);line-height:var(--jkl-slider-legend-line-height);margin-bottom:.5rem}.jkl-toggle-slider__legend--sr-only{border:0!important;clip:rect(1px,1px,1px,1px)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.jkl-toggle-slider__inputs{background-color:var(--jkl-slider-bg);border:2px solid var(--jkl-slider-bg);border-radius:6.25rem;display:flex;overflow:hidden;position:relative}.jkl-toggle-slider__input{opacity:0;position:absolute}.jkl-toggle-slider__label{align-items:center;color:var(--jkl-slider-pill-text);cursor:pointer;display:flex;justify-content:center;padding:.125rem 1rem;z-index:1;-webkit-tap-highlight-color:transparent;min-width:30px}.jkl-toggle-slider__label:hover{color:var(--jkl-slider-hover-color)}.jkl-toggle-slider__label--selected{--jkl-icon-weight:500;color:var(--jkl-slider-pill-text--active);font-weight:700;letter-spacing:-.014em}.jkl-toggle-slider__pill{background-color:var(--jkl-slider-pill);border-radius:6.25rem;height:100%;position:absolute;transition-duration:.25s;transition-property:width,transform;transition-timing-function:ease}@media (min-width:680px){.jkl-toggle-slider{align-items:center;flex-direction:row}.jkl-toggle-slider__legend{margin-bottom:0;margin-right:1.2em}}@media screen and (forced-colors:active){.jkl-toggle-slider .jkl-toggle-slider__inputs{background-color:Canvas}.jkl-toggle-slider .jkl-toggle-slider__pill{background-color:ButtonFace}}:root,[data-density=comfortable],[data-layout-density=comfortable]{--jkl-toggle-font-size:var(--jkl-body-font-size);--jkl-toggle-line-height:var(--jkl-body-line-height);--jkl-toggle-font-weight:var(--jkl-body-font-weight);--jkl-toggle-switch-height:1.75rem;--jkl-toggle-switch-width:3rem;--jkl-toggle-switch-knob-size:1.25rem;--jkl-toggle-switch-indicator-spacing:0;--jkl-toggle-switch-help-label-spacing:var(--jkl-spacing-2)}[data-density=compact],[data-layout-density=compact]{--jkl-toggle-font-size:var(--jkl-small-font-size);--jkl-toggle-line-height:var(--jkl-small-line-height);--jkl-toggle-font-weight:var(--jkl-small-font-weight);--jkl-toggle-switch-height:1.25rem;--jkl-toggle-switch-width:2.25rem;--jkl-toggle-switch-knob-size:0.75rem;--jkl-toggle-switch-indicator-spacing:-0.125rem;--jkl-toggle-switch-help-label-spacing:0}.jkl-toggle-switch{--border-width:0.0625rem;--switch-padding:0.25rem;--knob-position:0;--switch-border-color:var(--jkl-color-border-action);--indicator-color:var(--jkl-color-background-container-high);--knob-border-color:var(--jkl-color-border-action);--knob-color:var(--jkl-color-background-container-high);--text-color:var(--jkl-color-text-default);--icon-color:var(--jkl-color-text-inverted);background:#0000;color:var(--text-color);cursor:pointer;padding:0;-webkit-tap-highlight-color:transparent;align-items:center;border-style:none;display:flex;flex-direction:row-reverse;font-size:var(--jkl-toggle-font-size);font-weight:var(--jkl-toggle-font-weight);gap:var(--jkl-spacing-8);line-height:var(--jkl-toggle-line-height);touch-action:none}.jkl-toggle-switch,.jkl-toggle-switch:active,.jkl-toggle-switch:focus,.jkl-toggle-switch:hover{outline:0;outline-style:none}@media screen and (forced-colors:active){.jkl-toggle-switch{border-style:revert}.jkl-toggle-switch,.jkl-toggle-switch:active,.jkl-toggle-switch:focus,.jkl-toggle-switch:hover{outline:revert;outline-style:revert}.jkl-toggle-switch{border-color:#0000;border-style:none}}.jkl-toggle-switch[aria-pressed=true],[aria-checked=true]>.jkl-toggle-switch{--indicator-color:var(--jkl-color-background-container-inverted);--knob-color:var(--jkl-color-text-inverted);--knob-position:calc(var(--jkl-toggle-switch-width) - var(--jkl-toggle-switch-knob-size) - var(--switch-padding)*2)}.jkl-toggle-switch[disabled]{cursor:revert;--text-color:var(--jkl-color-text-subdued);--switch-border-color:var(--jkl-color-border-subdued);--knob-border-color:var(--jkl-color-border-subdued)}.jkl-toggle-switch[disabled][aria-pressed=true],[aria-checked=true]>.jkl-toggle-switch[disabled]{--indicator-color:var(--jkl-color-border-subdued)}.jkl-toggle-switch-widget{align-items:center;background-color:var(--indicator-color);border:var(--border-width) solid var(--switch-border-color);border-radius:9999px;box-sizing:border-box;display:flex;flex-direction:row;height:var(--jkl-toggle-switch-height);overflow:hidden;padding:var(--switch-padding);pointer-events:none;position:relative;-webkit-user-select:none;user-select:none;width:var(--jkl-toggle-switch-width)}@media screen and (forced-colors:active){.jkl-toggle-switch-widget{border:.0625rem solid ButtonText}}.jkl-toggle-switch:focus-visible .jkl-toggle-switch-widget{outline:2px solid var(--jkl-color-border-action);outline-offset:2px}.jkl-toggle-switch-widget__slider{box-sizing:border-box;color:var(--icon-color);height:var(--jkl-toggle-switch-knob-size);position:relative;transition-duration:.15s;transition-property:translate;transition-timing-function:ease;translate:var(--knob-position);width:var(--jkl-toggle-switch-knob-size)}.jkl-toggle-switch-widget__knob{background-color:var(--knob-color);border:var(--border-width) solid var(--knob-border-color);border-radius:9999px;inset:0;position:absolute}.jkl-toggle-switch-widget__indicator{margin-right:var(--jkl-toggle-switch-indicator-spacing);position:absolute;right:100%;top:50%;transform:translateY(-50%)}.jkl-toggle-switch-widget__indicator>.jkl-icon__icon{inset:0;position:absolute}
@@ -0,0 +1,138 @@
1
+ @charset "UTF-8";
2
+ @use "../../../core/jkl";
3
+
4
+ @use "./toggle-slider";
5
+
6
+ @include jkl.comfortable-density-variables {
7
+ @include jkl.declare-font-variables("jkl-toggle", "body");
8
+
9
+ --jkl-toggle-switch-height: #{jkl.rem(28px)};
10
+ --jkl-toggle-switch-width: #{jkl.rem(48px)};
11
+ --jkl-toggle-switch-knob-size: #{jkl.rem(20px)};
12
+ --jkl-toggle-switch-indicator-spacing: 0;
13
+ --jkl-toggle-switch-help-label-spacing: var(--jkl-spacing-2);
14
+ }
15
+
16
+ @include jkl.compact-density-variables {
17
+ @include jkl.declare-font-variables("jkl-toggle", "small");
18
+
19
+ --jkl-toggle-switch-height: #{jkl.rem(20px)};
20
+ --jkl-toggle-switch-width: #{jkl.rem(36px)};
21
+ --jkl-toggle-switch-knob-size: #{jkl.rem(12px)};
22
+ --jkl-toggle-switch-indicator-spacing: #{jkl.rem(-2px)};
23
+ --jkl-toggle-switch-help-label-spacing: 0;
24
+ }
25
+
26
+ .jkl-toggle-switch {
27
+ --border-width: #{jkl.rem(1px)};
28
+ --switch-padding: #{jkl.rem(4px)};
29
+ --knob-position: 0;
30
+ --switch-border-color: var(--jkl-color-border-action);
31
+ --indicator-color: var(--jkl-color-background-container-high);
32
+ --knob-border-color: var(--jkl-color-border-action);
33
+ --knob-color: var(--jkl-color-background-container-high);
34
+ --text-color: var(--jkl-color-text-default);
35
+ --icon-color: var(--jkl-color-text-inverted);
36
+
37
+ background: transparent;
38
+ color: var(--text-color);
39
+ padding: 0;
40
+ cursor: pointer;
41
+ -webkit-tap-highlight-color: transparent;
42
+
43
+ display: flex;
44
+ flex-direction: row-reverse;
45
+ align-items: center;
46
+ gap: var(--jkl-spacing-8);
47
+ touch-action: none; // Forhindrer at siden flytter på seg når man drar i toggle
48
+
49
+ @include jkl.use-font-variables("jkl-toggle");
50
+
51
+ @include jkl.reset-outline;
52
+
53
+ @include jkl.forced-colors-mode {
54
+ border-color: transparent;
55
+ border-style: none;
56
+ }
57
+
58
+ &[aria-pressed="true"],
59
+ [aria-checked="true"] > & {
60
+ --indicator-color: var(--jkl-color-background-container-inverted);
61
+ --knob-color: var(--jkl-color-text-inverted);
62
+ --knob-position: calc(
63
+ var(--jkl-toggle-switch-width) - var(--jkl-toggle-switch-knob-size) - var(--switch-padding) * 2
64
+ );
65
+ }
66
+
67
+ &[disabled] {
68
+ cursor: revert;
69
+
70
+ --text-color: var(--jkl-color-text-subdued);
71
+ --switch-border-color: var(--jkl-color-border-subdued);
72
+ --knob-border-color: var(--jkl-color-border-subdued);
73
+
74
+ &[aria-pressed="true"],
75
+ [aria-checked="true"] > & {
76
+ --indicator-color: var(--jkl-color-border-subdued);
77
+ }
78
+ }
79
+ }
80
+
81
+ .jkl-toggle-switch-widget {
82
+ position: relative;
83
+ box-sizing: border-box;
84
+ display: flex;
85
+ flex-direction: row;
86
+ align-items: center;
87
+ height: var(--jkl-toggle-switch-height);
88
+ width: var(--jkl-toggle-switch-width);
89
+ border-radius: 9999px;
90
+ border: var(--border-width) solid var(--switch-border-color);
91
+ overflow: hidden;
92
+ user-select: none;
93
+ padding: var(--switch-padding);
94
+ background-color: var(--indicator-color);
95
+ pointer-events: none;
96
+
97
+ @include jkl.forced-colors-mode {
98
+ border: jkl.rem(1px) solid ButtonText;
99
+ }
100
+
101
+ .jkl-toggle-switch:focus-visible & {
102
+ @include jkl.focus-outline;
103
+ }
104
+
105
+ &__slider {
106
+ position: relative;
107
+ box-sizing: border-box;
108
+ height: var(--jkl-toggle-switch-knob-size);
109
+ width: var(--jkl-toggle-switch-knob-size);
110
+ color: var(--icon-color);
111
+
112
+ @include jkl.motion;
113
+ transition-property: translate;
114
+ translate: var(--knob-position);
115
+ }
116
+
117
+ &__knob {
118
+ position: absolute;
119
+ inset: 0;
120
+ border-radius: 9999px;
121
+ border: var(--border-width) solid var(--knob-border-color);
122
+ background-color: var(--knob-color);
123
+ }
124
+
125
+ &__indicator {
126
+ position: absolute;
127
+ top: 50%;
128
+ right: 100%;
129
+ margin-right: var(--jkl-toggle-switch-indicator-spacing);
130
+ transform: translate(0, -50%);
131
+
132
+ & > .jkl-icon__icon {
133
+ // Uten dette får ikonet feil alignment. Mulig bug i ikonpakken?
134
+ position: absolute;
135
+ inset: 0;
136
+ }
137
+ }
138
+ }