jsl-ui 9.29.0 → 10.0.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 (165) hide show
  1. package/docs/AutoSuggestComponent.md +17 -0
  2. package/docs/ButtonComponent.md +22 -0
  3. package/docs/CheckBoxComponent.md +12 -0
  4. package/docs/DateComponent.md +12 -0
  5. package/docs/DateRangeComponent.md +13 -0
  6. package/docs/DateTimeComponent.md +13 -0
  7. package/docs/DialogComponent.md +15 -0
  8. package/docs/ExpanderComponent.md +13 -0
  9. package/docs/FormComponent.md +15 -0
  10. package/docs/FormFieldComponent.md +15 -0
  11. package/docs/GridComponent.md +19 -0
  12. package/docs/InputComponent.md +15 -0
  13. package/docs/IntervalComponent.md +13 -0
  14. package/docs/LoadingComponent.md +12 -0
  15. package/docs/NavigationComponent.md +17 -0
  16. package/docs/Notification.md +14 -0
  17. package/docs/NotificationComponent.md +13 -0
  18. package/docs/NumberComponent.md +12 -0
  19. package/docs/OverlayComponent.md +12 -0
  20. package/docs/ProgressComponent.md +12 -0
  21. package/docs/README.md +24 -0
  22. package/docs/RibbonMenuComponent.md +14 -0
  23. package/docs/SelectComponent.md +15 -0
  24. package/docs/SplitterComponent.md +14 -0
  25. package/docs/StackPanelComponent.md +13 -0
  26. package/docs/TabsComponent.md +16 -0
  27. package/docs/TimeComponent.md +13 -0
  28. package/docs/TreeViewComponent.md +16 -0
  29. package/examples/showcase/checks-and-expanders.ts +163 -0
  30. package/examples/showcase/cultures.ts +39 -0
  31. package/examples/showcase/dates.ts +182 -0
  32. package/examples/showcase/dialogs.ts +184 -0
  33. package/examples/showcase/feedback-and-navigation.ts +174 -0
  34. package/examples/showcase/fields.ts +178 -0
  35. package/examples/showcase/fonts/Jost-Variable.ttf +0 -0
  36. package/examples/showcase/fonts/OFL-Jost.txt +93 -0
  37. package/examples/showcase/grids.ts +216 -0
  38. package/examples/showcase/index.html +60 -0
  39. package/examples/showcase/layout-and-navigation.ts +47 -0
  40. package/examples/showcase/nivona.css +98 -0
  41. package/examples/showcase/package.json +10 -0
  42. package/examples/showcase/selects.ts +158 -0
  43. package/examples/showcase/showcase.css +231 -0
  44. package/examples/showcase/showcase.ts +220 -0
  45. package/examples/showcase/tabs.ts +161 -0
  46. package/examples/showcase/themes.css +83 -0
  47. package/examples/showcase/themes.ts +54 -0
  48. package/lib/components/IntervalComponent.d.ts +5 -0
  49. package/lib/components/IntervalComponent.js +29 -13
  50. package/lib/components/auto-suggest/AutoSuggestComponent.d.ts +11 -9
  51. package/lib/components/auto-suggest/AutoSuggestComponent.js +25 -38
  52. package/lib/components/button/ButtonComponent.d.ts +30 -1
  53. package/lib/components/button/ButtonComponent.js +85 -4
  54. package/lib/components/checkbox/CheckBoxComponent.d.ts +11 -1
  55. package/lib/components/checkbox/CheckBoxComponent.js +66 -56
  56. package/lib/components/checkbox/CheckBoxStyle.scss +72 -85
  57. package/lib/components/date/DateComponent.d.ts +10 -0
  58. package/lib/components/date/DateComponent.js +92 -44
  59. package/lib/components/date-range/DateRangeComponent.d.ts +14 -3
  60. package/lib/components/date-range/DateRangeComponent.js +96 -86
  61. package/lib/components/date-range/DateRangeStyle.scss +35 -11
  62. package/lib/components/date-time/DateTimeComponent.d.ts +8 -0
  63. package/lib/components/date-time/DateTimeComponent.js +64 -23
  64. package/lib/components/date-time/DateTimeStyle.scss +10 -7
  65. package/lib/components/dialog/DialogComponent.d.ts +21 -7
  66. package/lib/components/dialog/DialogComponent.js +179 -122
  67. package/lib/components/expander/ExpanderComponent.d.ts +15 -1
  68. package/lib/components/expander/ExpanderComponent.js +85 -64
  69. package/lib/components/expander/ExpanderStyle.scss +61 -47
  70. package/lib/components/form-field/FormFieldComponent.d.ts +45 -15
  71. package/lib/components/form-field/FormFieldComponent.js +249 -96
  72. package/lib/components/form-field/FormFieldStyle.scss +36 -87
  73. package/lib/components/form-field/create-control.d.ts +7 -0
  74. package/lib/components/form-field/create-control.js +48 -0
  75. package/lib/components/input/InputComponent.d.ts +18 -1
  76. package/lib/components/input/InputComponent.js +68 -93
  77. package/lib/components/loading/LoadingComponent.d.ts +9 -2
  78. package/lib/components/loading/LoadingComponent.js +13 -12
  79. package/lib/components/loading/LoadingStyle.css +19 -29
  80. package/lib/components/navigation/NavigationComponent.d.ts +34 -10
  81. package/lib/components/navigation/NavigationComponent.js +261 -33
  82. package/lib/components/navigation/NavigationStyle.scss +62 -226
  83. package/lib/components/notification/Notification.d.ts +37 -4
  84. package/lib/components/notification/Notification.js +160 -41
  85. package/lib/components/notification/Notification.scss +103 -19
  86. package/lib/components/number/NumberComponent.d.ts +16 -2
  87. package/lib/components/number/NumberComponent.js +54 -53
  88. package/lib/components/overlay/OverlayComponent.d.ts +13 -7
  89. package/lib/components/overlay/OverlayComponent.js +46 -114
  90. package/lib/components/overlay/overlay.css +18 -57
  91. package/lib/components/progress/ProgressComponent.d.ts +1 -0
  92. package/lib/components/progress/ProgressComponent.js +6 -6
  93. package/lib/components/progress/ProgressStyle.scss +5 -15
  94. package/lib/components/ribbon-menu/RibbonMenuComponent.js +2 -2
  95. package/lib/components/ribbon-menu/RibbonMenuStyle.scss +6 -76
  96. package/lib/components/select/SelectComponent.d.ts +33 -3
  97. package/lib/components/select/SelectComponent.js +312 -278
  98. package/lib/components/select/SelectDDAreaComponent.d.ts +13 -7
  99. package/lib/components/select/SelectDDAreaComponent.js +215 -256
  100. package/lib/components/select/SelectStyle.scss +204 -186
  101. package/lib/components/slider/nouislider.css +40 -54
  102. package/lib/components/stack-panel/SplitterComponent.d.ts +19 -3
  103. package/lib/components/stack-panel/SplitterComponent.js +94 -111
  104. package/lib/components/stack-panel/SplitterStyle.scss +9 -45
  105. package/lib/components/stack-panel/StackPanelComponent.js +3 -3
  106. package/lib/components/stack-panel/StackPanelStyle.scss +10 -52
  107. package/lib/components/tabs/TabsComponent.d.ts +17 -1
  108. package/lib/components/tabs/TabsComponent.js +247 -123
  109. package/lib/components/tabs/TabsStyle.scss +138 -75
  110. package/lib/components/time/TimeComponent.d.ts +5 -0
  111. package/lib/components/time/TimeComponent.js +61 -69
  112. package/lib/components/time/TimeComponent.scss +4 -4
  113. package/lib/components/tree-view/TreeViewComponent.d.ts +10 -4
  114. package/lib/components/tree-view/TreeViewComponent.js +65 -32
  115. package/lib/components/tree-view/TreeViewStyle.scss +12 -96
  116. package/lib/core/jq.js +11 -8
  117. package/lib/grid/slick-default-theme.css +133 -31
  118. package/lib/grid/slick.creator.js +23 -5
  119. package/lib/grid/slick.formatters.js +4 -3
  120. package/lib/grid/slick.grid.css +38 -26
  121. package/lib/grid/slick.grid.d.ts +1 -0
  122. package/lib/grid/slick.grid.js +2 -3
  123. package/lib/grid.css +514 -116
  124. package/lib/index.css +2522 -1023
  125. package/lib/index.css.map +1 -1
  126. package/lib/index.d.ts +1 -0
  127. package/lib/index.js +1 -1
  128. package/lib/index.js.map +1 -1
  129. package/lib/interaction/moveable.d.ts +1 -0
  130. package/lib/interaction/moveable.js +8 -0
  131. package/lib/interaction/resizable.d.ts +1 -0
  132. package/lib/interaction/resizable.js +9 -0
  133. package/lib/ui/auto.suggest.css +31 -14
  134. package/lib/ui/auto.suggest.d.ts +1 -0
  135. package/lib/ui/auto.suggest.js +88 -18
  136. package/lib/ui/base.css +2 -48
  137. package/lib/ui/button.css +147 -0
  138. package/lib/ui/date-input.css +11 -0
  139. package/lib/ui/date.picker/css/tiny-date-picker.css +124 -325
  140. package/lib/ui/date.picker/date-picker-options.js +4 -3
  141. package/lib/ui/date.picker/lib/date-manip.js +9 -0
  142. package/lib/ui/date.picker/mode/base-mode.d.ts +2 -1
  143. package/lib/ui/date.picker/mode/base-mode.js +112 -22
  144. package/lib/ui/date.picker/mode/dropdown-mode.d.ts +2 -4
  145. package/lib/ui/date.picker/mode/dropdown-mode.js +29 -42
  146. package/lib/ui/date.picker/mode/index.d.ts +2 -1
  147. package/lib/ui/date.picker/mode/modal-mode.d.ts +2 -1
  148. package/lib/ui/date.picker/mode/modal-mode.js +4 -2
  149. package/lib/ui/date.picker/mode/permanent-mode.d.ts +2 -1
  150. package/lib/ui/date.picker/views/day-picker.js +24 -15
  151. package/lib/ui/date.picker/views/month-picker.js +1 -1
  152. package/lib/ui/date.picker/views/year-picker.js +3 -2
  153. package/lib/ui/date.picker.d.ts +2 -1
  154. package/lib/ui/dialog.css +144 -108
  155. package/lib/ui/dialog.d.ts +19 -1
  156. package/lib/ui/dialog.js +178 -60
  157. package/lib/ui/input.css +35 -0
  158. package/lib/ui/number.input.js +50 -37
  159. package/lib/ui/theme.css +28 -0
  160. package/package.json +13 -8
  161. package/lib/components/drop-down/DropDownComponent.d.ts +0 -27
  162. package/lib/components/drop-down/DropDownComponent.js +0 -60
  163. package/lib/components/expander/OldExpanderStyle.scss +0 -37
  164. package/lib/ui/drop.down.d.ts +0 -52
  165. package/lib/ui/drop.down.js +0 -2112
package/lib/index.css CHANGED
@@ -1,3 +1,9 @@
1
+ @media (prefers-reduced-motion: reduce) {
2
+ .jsl-button {
3
+ transition: none;
4
+ }
5
+ }
6
+
1
7
  html {
2
8
  -webkit-text-size-adjust: 100%;
3
9
  -ms-text-size-adjust: 100%;
@@ -88,51 +94,6 @@ textarea {
88
94
  overflow: auto;
89
95
  }
90
96
 
91
- .jsl-button {
92
- vertical-align: middle;
93
- color: #fff;
94
- cursor: pointer;
95
- box-sizing: border-box;
96
- letter-spacing: .1rem;
97
- text-align: center;
98
- white-space: nowrap;
99
- background-color: #3b99ff;
100
- border: 1px solid #3b99ff;
101
- border-radius: .3rem;
102
- height: 2rem;
103
- padding: 0 1rem;
104
- line-height: 2rem;
105
- text-decoration: none;
106
- display: inline-block;
107
- }
108
-
109
- .jsl-button.jsl-button-outline {
110
- color: #444;
111
- background: #fff;
112
- }
113
-
114
- .jsl-button:active {
115
- background-color: #3b99ff;
116
- border-color: #000;
117
- }
118
-
119
- .jsl-button:hover {
120
- color: #000;
121
- background-color: #3b9aff80;
122
- border-color: silver;
123
- outline: 0;
124
- }
125
-
126
- .jsl-button:focus {
127
- border-color: gray;
128
- outline: 0;
129
- }
130
-
131
- .jsl-button[disabled] {
132
- cursor: default;
133
- opacity: .5;
134
- }
135
-
136
97
  .right {
137
98
  text-align: right;
138
99
  }
@@ -181,391 +142,699 @@ div.jsl-fill {
181
142
  right: 0;
182
143
  }
183
144
 
145
+ .dp-below, .dp-modal, .dp-permanent {
146
+ box-sizing: border-box;
147
+ color: var(--jsl-color-text);
148
+ font: inherit;
149
+ font-size: .875rem;
150
+ line-height: 1.4;
151
+ }
152
+
153
+ .dp-below *, .dp-modal *, .dp-permanent * {
154
+ box-sizing: border-box;
155
+ }
156
+
157
+ .dp {
158
+ border: 1px solid var(--jsl-color-border);
159
+ background: var(--jsl-color-surface);
160
+ border-radius: .875rem;
161
+ width: 19rem;
162
+ max-width: calc(100vw - 1rem);
163
+ max-height: calc(100dvh - 1rem);
164
+ overflow: auto;
165
+ box-shadow: 0 12px 32px #00000024, 0 2px 6px #0000000f;
166
+ }
167
+
168
+ .dp-below {
169
+ z-index: 2200;
170
+ width: max-content;
171
+ position: fixed;
172
+ }
173
+
184
174
  .dp-modal {
185
- background: #ffffffbf;
175
+ z-index: 2300;
176
+ background: var(--jsl-color-overlay);
177
+ place-items: center;
178
+ padding: .5rem;
179
+ display: grid;
186
180
  position: fixed;
187
181
  inset: 0;
188
182
  }
189
183
 
190
- .dp {
191
- z-index: 2010;
192
- -webkit-tap-highlight-color: transparent;
193
- background: #fff;
194
- border-radius: .5rem;
195
- max-height: 400px;
196
- line-height: 1.4;
197
- position: relative;
198
- overflow: hidden;
199
- box-shadow: 2px 2px 16px #00000040;
184
+ .dp-permanent {
185
+ max-width: 100%;
186
+ display: inline-block;
200
187
  }
201
188
 
202
189
  .dp-permanent .dp {
203
190
  box-shadow: none;
204
- border: 1px solid #eee;
205
- padding-top: 0;
191
+ max-width: 100%;
206
192
  }
207
193
 
208
- .dp-permanent .dp:before {
209
- display: none;
194
+ .dp button {
195
+ appearance: none;
196
+ color: inherit;
197
+ font: inherit;
198
+ cursor: pointer;
199
+ text-align: center;
200
+ background: none;
201
+ border: 0;
202
+ border-radius: .4rem;
203
+ margin: 0;
204
+ padding: .5rem;
205
+ line-height: 1.4;
210
206
  }
211
207
 
212
- .dp-below {
213
- width: 20rem;
214
- max-width: 100vw;
215
- position: absolute;
208
+ .dp button:hover:not(:disabled) {
209
+ background: var(--jsl-color-surface-hover);
216
210
  }
217
211
 
218
- .dp-permanent {
219
- z-index: 2010;
220
- width: 20rem;
221
- max-width: 100vw;
212
+ .dp button:focus-visible {
213
+ outline: 2px solid var(--jsl-color-focus);
214
+ outline-offset: -2px;
215
+ z-index: 1;
222
216
  position: relative;
223
217
  }
224
218
 
225
- .dp-permanent .dp {
226
- z-index: 0;
219
+ .dp button:disabled {
220
+ color: var(--jsl-color-disabled-text);
221
+ cursor: not-allowed;
222
+ opacity: .4;
227
223
  }
228
224
 
229
- .dp-modal .dp {
230
- width: calc(100% - 4em);
231
- max-width: 600px;
232
- animation: .3s forwards slide-up;
233
- position: absolute;
234
- top: 50%;
235
- left: 50%;
236
- transform: translate(-50%, -50%);
225
+ .dp-cal-header {
226
+ grid-template-columns: 2rem 1fr auto 2rem;
227
+ align-items: center;
228
+ gap: .125rem;
229
+ padding: .75rem .625rem .5rem;
230
+ display: grid;
237
231
  }
238
232
 
239
- .dp-months {
240
- padding: 24px;
233
+ .dp-cal-header button {
234
+ font-weight: 600;
241
235
  }
242
236
 
243
- .dp-years {
244
- box-sizing: border-box;
245
- max-height: 400px;
246
- padding: 8px 0;
247
- overflow: auto !important;
237
+ .dp .dp-prev, .dp .dp-next {
238
+ padding: .35rem;
239
+ font-size: 1.375rem;
240
+ line-height: 1;
248
241
  }
249
242
 
250
- .dp-cal-month, .dp-cal-year, .dp-day, .dp-month, .dp-year {
251
- box-sizing: border-box;
252
- text-align: center;
253
- color: #3b404d;
254
- background: none;
255
- border: 0;
256
- border-radius: 2px;
257
- text-decoration: none;
258
- position: relative;
259
- top: .2rem;
243
+ .dp-days {
244
+ grid-template-columns: repeat(7, minmax(0, 1fr));
245
+ gap: .125rem;
246
+ padding: 0 .625rem .625rem;
247
+ display: grid;
260
248
  }
261
249
 
262
- .dp-cal-header {
250
+ .dp-col-header {
251
+ color: var(--jsl-color-text-muted);
263
252
  text-align: center;
264
- background: #f0f0f0;
265
- padding-bottom: .4rem;
266
- position: relative;
253
+ padding: .5rem 0;
254
+ font-size: .6875rem;
255
+ font-weight: 500;
267
256
  }
268
257
 
269
- .dp-next, .dp-prev {
270
- color: #777;
271
- background: none;
272
- border: 0;
273
- border-radius: 2px;
274
- width: 1.8rem;
275
- height: 1.8rem;
276
- position: absolute;
277
- top: .3rem;
278
- overflow: hidden;
258
+ .dp .dp-day {
259
+ font-variant-numeric: tabular-nums;
260
+ min-height: 2.125rem;
261
+ padding: .45rem 0;
262
+ font-size: .8125rem;
263
+ position: relative;
279
264
  }
280
265
 
281
- .dp-next:focus, .dp-prev:focus, .dp-next:hover, .dp-prev:hover {
282
- color: inherit;
283
- outline: none;
266
+ .dp .dp-edge-day {
267
+ color: var(--jsl-color-text-muted);
284
268
  }
285
269
 
286
- .dp-prev {
287
- left: 24px;
270
+ .dp .dp-current:not(.dp-selected) {
271
+ background: var(--jsl-color-surface-selected);
288
272
  }
289
273
 
290
- .dp-next {
291
- right: 24px;
274
+ .dp .dp-selected, .dp .dp-selected:hover:not(:disabled) {
275
+ background: var(--jsl-color-accent);
276
+ color: var(--jsl-color-on-accent);
277
+ font-weight: 600;
292
278
  }
293
279
 
294
- .dp-prev:before, .dp-next:before {
280
+ .dp-day-today:after {
295
281
  content: "";
296
- border: 2px solid;
297
- width: .7rem;
298
- height: .7rem;
299
- margin: .5rem 0 3rem .3rem;
300
- transition: border-color .2s;
301
- display: inline-block;
302
- transform: rotate(-45deg);
282
+ background: currentColor;
283
+ border-radius: 50%;
284
+ width: 3px;
285
+ height: 3px;
286
+ position: absolute;
287
+ bottom: 3px;
288
+ left: calc(50% - 1.5px);
303
289
  }
304
290
 
305
- .dp-prev:before {
306
- border-bottom: 0;
307
- border-right: 0;
291
+ .dp-cal-footer {
292
+ border-top: 1px solid var(--jsl-color-border-subtle);
293
+ grid-template-columns: repeat(3, 1fr);
294
+ gap: .25rem;
295
+ padding: .5rem .625rem;
296
+ display: grid;
308
297
  }
309
298
 
310
- .dp-next:before {
311
- border-top: 0;
312
- border-left: 0;
313
- margin-left: 0;
314
- margin-right: 4px;
299
+ .dp-cal-footer button {
300
+ font-size: .75rem;
301
+ font-weight: 500;
315
302
  }
316
303
 
317
- .dp-cal-month, .dp-cal-year {
318
- outline: none;
319
- padding: .4rem .3rem .3rem;
320
- font-size: 1.1rem;
321
- display: inline-block;
304
+ .dp-months {
305
+ grid-template-columns: repeat(3, 1fr);
306
+ align-content: center;
307
+ gap: .375rem;
308
+ min-height: 15rem;
309
+ padding: .75rem;
310
+ display: grid;
322
311
  }
323
312
 
324
- .dp-cal-footer {
325
- text-align: center;
326
- background: #f5f5f5;
313
+ .dp-months button {
314
+ padding: .875rem .25rem;
315
+ font-size: .75rem;
327
316
  }
328
317
 
329
- .dp-day-today:after {
330
- content: "";
331
- border: 7px solid #227bd7;
332
- border-color: #227bd7 #227bd7 #0000 #0000;
333
- width: 0;
334
- height: 0;
335
- position: absolute;
336
- top: 0;
337
- right: 0;
318
+ .dp-years {
319
+ gap: .25rem;
320
+ height: 19rem;
321
+ padding: .75rem;
322
+ display: grid;
323
+ overflow-y: auto;
324
+ }
325
+
326
+ .dp-years button {
327
+ width: 100%;
328
+ padding: .625rem;
329
+ display: block;
330
+ }
331
+
332
+ @media (forced-colors: active) {
333
+ .dp .dp-selected {
334
+ outline: 2px solid highlight;
335
+ }
338
336
  }
339
337
 
340
- .dp-close, .dp-clear, .dp-today {
338
+ .jsl-button, .jsl-button:any-link {
339
+ --jsl-button-height: 2rem;
340
+ --jsl-button-padding: .875rem;
341
341
  box-sizing: border-box;
342
- width: 33%;
343
- color: inherit;
344
- background: none;
345
- border: 0;
346
- padding: 8px;
342
+ height: var(--jsl-button-height);
343
+ padding: 0 var(--jsl-button-padding);
344
+ vertical-align: middle;
345
+ border-radius: var(--jsl-button-radius, .375rem);
346
+ background: var(--jsl-button-primary, var(--jsl-color-accent));
347
+ color: var(--jsl-button-on-primary, var(--jsl-color-on-accent));
348
+ font: inherit;
349
+ letter-spacing: normal;
350
+ text-align: center;
351
+ text-transform: none;
352
+ white-space: nowrap;
353
+ cursor: pointer;
354
+ border: 1px solid #0000;
355
+ justify-content: center;
356
+ align-items: center;
357
+ gap: .5rem;
358
+ margin: 0;
359
+ font-size: .875rem;
360
+ font-weight: 500;
361
+ line-height: 1.25;
347
362
  text-decoration: none;
348
- display: inline-block;
363
+ transition: background-color .12s, border-color .12s, box-shadow .12s;
364
+ display: inline-flex;
365
+ position: relative;
349
366
  }
350
367
 
351
- .dp-permanent .dp-close, .dp-permanent .dp-clear {
352
- display: none;
368
+ .jsl-button, button.jsl-button[type] {
369
+ appearance: none;
353
370
  }
354
371
 
355
- .dp-close:active, .dp-clear:active, .dp-today:active, .dp-next:active, .dp-prev:active, .dp-cal-month:active, .dp-cal-year:active {
356
- color: #fff;
357
- background: #75bcfc;
372
+ .jsl-button:where(:hover), .jsl-button:any-link:where(:hover) {
373
+ background: var(--jsl-button-primary-hover, var(--jsl-color-accent-hover));
358
374
  }
359
375
 
360
- @media screen and (device-width >= 1200px) {
361
- .dp-close:hover, .dp-close:focus, .dp-clear:hover, .dp-clear:focus, .dp-today:hover, .dp-today:focus, .dp-next:hover, .dp-next:focus, .dp-prev:hover, .dp-prev:focus, .dp-cal-month:focus, .dp-cal-month:hover, .dp-cal-year:hover, .dp-cal-year:focus {
362
- color: #fff;
363
- background: #75bcfc;
364
- }
376
+ .jsl-button:where(:active, .active, [aria-pressed="true"]), .jsl-button:any-link:where(:active, .active, [aria-pressed="true"]) {
377
+ background: var(--jsl-button-primary-active, var(--jsl-color-accent-active));
378
+ box-shadow: inset 0 0 0 1px;
365
379
  }
366
380
 
367
- .dp-col-header, .dp-day {
368
- text-align: center;
369
- width: 14.2857%;
370
- padding: 8px;
371
- display: inline-block;
381
+ .jsl-button.jsl-button-outline {
382
+ border-color: var(--jsl-button-border, var(--jsl-color-border));
383
+ background: var(--jsl-button-surface, var(--jsl-color-surface));
384
+ color: var(--jsl-button-text, var(--jsl-color-text));
372
385
  }
373
386
 
374
- .dp-col-header {
375
- color: #aaa;
376
- text-transform: uppercase;
377
- padding: 8px 0;
378
- font-size: .8rem;
379
- font-weight: 300;
387
+ .jsl-button.jsl-button-ghost {
388
+ color: var(--jsl-button-text, var(--jsl-color-text));
389
+ background: none;
380
390
  }
381
391
 
382
- .dp-month {
383
- width: 33%;
384
- padding: 8px;
385
- display: inline-block;
392
+ .jsl-button.jsl-button-outline:where(:hover), .jsl-button.jsl-button-ghost:where(:hover) {
393
+ background: var(--jsl-button-hover-surface, var(--jsl-color-surface-hover));
394
+ border-color: var(--jsl-button-border, var(--jsl-color-border));
386
395
  }
387
396
 
388
- .dp-year {
389
- width: 100%;
390
- padding: 8px 40px;
391
- display: block;
397
+ .jsl-button.jsl-button-outline:where(:active, .active, [aria-pressed="true"]), .jsl-button.jsl-button-ghost:where(:active, .active, [aria-pressed="true"]) {
398
+ background: var(--jsl-button-selected-surface, var(--jsl-color-surface-selected));
399
+ border-color: var(--jsl-button-primary, var(--jsl-color-accent));
400
+ color: var(--jsl-button-selected-text, var(--jsl-color-text));
401
+ box-shadow: none;
392
402
  }
393
403
 
394
- .dp-edge-day {
395
- color: #aaa;
404
+ .jsl-button:focus-visible {
405
+ outline: 2px solid var(--jsl-button-focus, var(--jsl-color-focus));
406
+ outline-offset: 3px;
396
407
  }
397
408
 
398
- .dp-day:hover, .dp-month:hover, .dp-year:hover, .dp-current:focus, .dp-current, .dp-day:focus, .dp-month:focus, .dp-year:focus {
399
- color: #fff;
400
- background: #75bcfc;
401
- outline: none;
409
+ .jsl-button.jsl-button-small {
410
+ --jsl-button-height: 1.75rem;
411
+ --jsl-button-padding: .625rem;
412
+ gap: .375rem;
413
+ font-size: .8125rem;
402
414
  }
403
415
 
404
- .dp-selected:hover, .dp-selected:focus, .dp-selected {
405
- color: #fff;
406
- background: #3b99fc;
416
+ .jsl-button.jsl-button-large {
417
+ --jsl-button-height: 2.5rem;
418
+ --jsl-button-padding: 1rem;
419
+ font-size: .9375rem;
407
420
  }
408
421
 
409
- .dp-day-disabled {
410
- color: #ddd;
411
- background: none;
422
+ .jsl-button.jsl-button-icon-only {
423
+ width: var(--jsl-button-height);
424
+ flex-shrink: 0;
425
+ padding: 0;
412
426
  }
413
427
 
414
- .dp-day-disabled:focus, .dp-day-disabled:hover {
415
- background: #ddd;
428
+ .jsl-button-icon {
429
+ pointer-events: none;
430
+ flex: none;
431
+ justify-content: center;
432
+ align-items: center;
433
+ width: 1.125em;
434
+ height: 1.125em;
435
+ line-height: 1;
436
+ display: inline-flex;
416
437
  }
417
438
 
418
- .dp-focuser {
419
- z-index: 0;
420
- position: absolute;
421
- top: 50%;
422
- left: 50%;
439
+ .jsl-button-icon > img, .jsl-button-icon > svg {
440
+ object-fit: contain;
441
+ width: 100%;
442
+ height: 100%;
443
+ display: block;
423
444
  }
424
445
 
425
- @media (width <= 480px), (height <= 480px) {
426
- .dp-modal .dp {
427
- width: 100%;
428
- }
446
+ .jsl-button-label-hidden {
447
+ clip-path: inset(50%);
448
+ white-space: nowrap;
449
+ border: 0;
450
+ width: 1px;
451
+ height: 1px;
452
+ margin: -1px;
453
+ padding: 0;
454
+ position: absolute;
455
+ overflow: hidden;
456
+ }
429
457
 
430
- .dp-day-of-week, .dp-day {
431
- padding: .3rem;
432
- }
458
+ .jsl-button:disabled, .jsl-button.disabled, .jsl-button[aria-disabled="true"] {
459
+ background: var(--jsl-button-disabled-surface, var(--jsl-color-disabled-surface));
460
+ border-color: var(--jsl-button-disabled-border, var(--jsl-color-border-subtle));
461
+ color: var(--jsl-button-disabled-text, var(--jsl-color-disabled-text));
462
+ box-shadow: none;
463
+ cursor: not-allowed;
433
464
  }
434
465
 
435
- @keyframes slide-up {
436
- 0% {
437
- transform: translate(-50%, 100%);
466
+ @media (prefers-reduced-motion: reduce) {
467
+ .jsl-button {
468
+ transition: none;
438
469
  }
470
+ }
439
471
 
440
- 100% {
441
- transform: translate(-50%, -50%);
442
- }
472
+ .jsl-dialog-overlay {
473
+ z-index: var(--jsl-dialog-z-index, 2001);
474
+ background: var(--jsl-dialog-backdrop, var(--jsl-color-overlay));
475
+ position: fixed;
476
+ inset: 0;
443
477
  }
444
478
 
445
479
  .jsl-dialog {
446
- z-index: 2002;
447
- pointer-events: all;
448
- background: #fff;
449
- border: 2px solid #ddd;
450
- border-radius: .8rem;
451
- position: relative;
480
+ box-sizing: border-box;
481
+ border: 1px solid var(--jsl-dialog-border, var(--jsl-color-border-subtle));
482
+ border-radius: var(--jsl-dialog-radius, .75rem);
483
+ background: var(--jsl-dialog-surface, var(--jsl-color-surface));
484
+ width: 32rem;
485
+ max-width: calc(100% - 2rem);
486
+ max-height: calc(100% - 2rem);
487
+ color: var(--jsl-color-text);
488
+ box-shadow: var(--jsl-dialog-shadow, var(--jsl-shadow-dialog));
489
+ font: inherit;
490
+ pointer-events: auto;
491
+ isolation: isolate;
492
+ flex-direction: column;
493
+ line-height: 1.5;
494
+ display: flex;
495
+ position: absolute;
452
496
  top: 50%;
453
497
  left: 50%;
454
498
  transform: translate(-50%, -50%);
455
499
  }
456
500
 
457
- .jsl-dialog .jsl-button {
458
- vertical-align: middle;
459
- cursor: pointer;
501
+ .jsl-dialog:focus {
502
+ outline: none;
503
+ }
504
+
505
+ .jsl-dialog.resizable {
506
+ position: absolute;
507
+ }
508
+
509
+ .jsl-dialog:focus-visible {
510
+ outline: 2px solid var(--jsl-color-focus);
511
+ outline-offset: 3px;
512
+ }
513
+
514
+ .jsl-dialog > .dlg-header {
460
515
  box-sizing: border-box;
461
- letter-spacing: .1rem;
462
- text-align: center;
463
- white-space: nowrap;
464
- border-radius: .3rem;
465
- height: 2rem;
466
- padding: 0 1rem;
467
- line-height: 2rem;
468
- text-decoration: none;
469
- display: inline-block;
516
+ border-bottom: 1px solid var(--jsl-color-border-subtle);
517
+ border-radius: var(--jsl-dialog-radius, .75rem) var(--jsl-dialog-radius, .75rem) 0 0;
518
+ flex: none;
519
+ align-items: center;
520
+ gap: 1rem;
521
+ min-width: 0;
522
+ padding: 1.125rem 1.5rem;
523
+ font-size: 1rem;
524
+ font-weight: 600;
525
+ line-height: 1.5;
526
+ display: flex;
527
+ }
528
+
529
+ .jsl-dialog .dlg-title {
530
+ overflow-wrap: anywhere;
531
+ flex: 1;
532
+ min-width: 0;
470
533
  }
471
534
 
472
- .dlg-close-btn {
473
- color: #555;
535
+ .jsl-dialog-moveable > .dlg-header {
536
+ cursor: move;
537
+ touch-action: none;
538
+ }
539
+
540
+ .jsl-dialog .dlg-close-btn {
474
541
  box-sizing: border-box;
542
+ width: 2rem;
543
+ height: 2rem;
544
+ color: var(--jsl-color-text-secondary);
545
+ font: inherit;
475
546
  cursor: pointer;
476
- background: #d8d8d8;
477
- border-top-right-radius: .8rem;
478
- width: 2.5rem;
479
- font-size: 2rem;
480
- font-weight: bold;
481
- line-height: 2.8rem;
547
+ background: none;
548
+ border: 1px solid #0000;
549
+ border-radius: .375rem;
550
+ flex: none;
551
+ justify-content: center;
552
+ align-items: center;
553
+ margin: -.25rem -.5rem -.25rem auto;
554
+ padding: 0;
555
+ display: inline-flex;
556
+ position: relative;
557
+ }
558
+
559
+ .jsl-dialog .dlg-close-btn:before, .jsl-dialog .dlg-close-btn:after {
560
+ content: "";
561
+ background: currentColor;
562
+ border-radius: 1px;
563
+ width: .875rem;
564
+ height: 1.5px;
482
565
  position: absolute;
483
- top: 0;
484
- bottom: 0;
485
- right: 0;
566
+ transform: rotate(45deg);
486
567
  }
487
568
 
488
- .dlg-close-btn:hover {
489
- color: #fff;
490
- background: #b22121;
569
+ .jsl-dialog .dlg-close-btn:after {
570
+ transform: rotate(-45deg);
491
571
  }
492
572
 
493
- .jsl-dialog-overlay {
494
- z-index: 2001;
495
- background: #000c;
496
- height: 100vh;
497
- position: fixed;
498
- inset: 0;
573
+ .jsl-dialog .dlg-close-btn:hover {
574
+ background: var(--jsl-color-surface-hover);
575
+ color: var(--jsl-color-text);
499
576
  }
500
577
 
501
- .jsl-dialog > .dlg-header {
502
- box-sizing: content-box;
503
- text-align: center;
504
- background: #f8f8f8;
505
- border-bottom: 1px solid #ededed;
506
- border-top-left-radius: .8rem;
507
- border-top-right-radius: .8rem;
508
- height: 2rem;
509
- padding: .6rem;
510
- font-size: 1.5rem;
511
- position: relative;
578
+ .jsl-dialog .dlg-close-btn:focus-visible {
579
+ outline: 2px solid var(--jsl-color-focus);
580
+ outline-offset: 2px;
512
581
  }
513
582
 
514
583
  .jsl-dialog > .dlg-body {
515
584
  box-sizing: border-box;
516
- margin-bottom: 3rem;
517
- padding: 1rem;
585
+ overflow-wrap: anywhere;
586
+ overscroll-behavior: contain;
587
+ flex: auto;
588
+ min-width: 0;
589
+ min-height: 0;
590
+ padding: 1.5rem;
518
591
  overflow: auto;
519
592
  }
520
593
 
521
594
  .jsl-dialog > .dlg-footer {
522
595
  box-sizing: border-box;
523
- text-align: right;
524
- background: #f8f8f8;
525
- border-top: 1px solid #ededed;
526
- border-bottom-right-radius: .8rem;
527
- border-bottom-left-radius: .8rem;
528
- height: 3rem;
529
- padding: .5rem;
530
- position: absolute;
531
- bottom: 0;
532
- left: 0;
533
- right: 0;
596
+ border-top: 1px solid var(--jsl-color-border-subtle);
597
+ border-radius: 0 0 var(--jsl-dialog-radius, .75rem) var(--jsl-dialog-radius, .75rem);
598
+ background: var(--jsl-color-surface-subtle);
599
+ text-align: end;
600
+ flex: none;
601
+ padding: 1rem 1.5rem;
534
602
  }
535
603
 
536
- .jsl-dialog > .dlg-footer button {
537
- margin-left: 1rem;
604
+ .jsl-dialog > .dlg-footer > div, .jsl-dialog > .dlg-footer > form {
605
+ flex-wrap: wrap;
606
+ justify-content: flex-end;
607
+ align-items: center;
608
+ gap: .5rem;
609
+ display: flex;
610
+ }
611
+
612
+ .jsl-dialog > .dlg-footer > button + button {
613
+ margin-inline-start: .5rem;
614
+ }
615
+
616
+ .jsl-dialog > .dlg-header[hidden], .jsl-dialog > .dlg-footer[hidden] {
617
+ display: none;
538
618
  }
539
619
 
540
620
  .jsl-dialog .slickgrid {
541
621
  border-radius: 0;
542
622
  }
543
623
 
624
+ .jsl-dialog.resizable > .dlg-res-handle.rs-r.rs-b {
625
+ cursor: nwse-resize;
626
+ touch-action: none;
627
+ background: none;
628
+ width: 1rem;
629
+ height: 1rem;
630
+ bottom: .125rem;
631
+ right: .125rem;
632
+ }
633
+
634
+ .jsl-dialog .dlg-res-handle:after {
635
+ content: "";
636
+ border-right: 1px solid var(--jsl-color-text-muted);
637
+ border-bottom: 1px solid var(--jsl-color-text-muted);
638
+ width: .4rem;
639
+ height: .4rem;
640
+ position: absolute;
641
+ bottom: .2rem;
642
+ right: .2rem;
643
+ }
644
+
645
+ @media (width <= 480px) {
646
+ .jsl-dialog {
647
+ max-width: calc(100% - 1.5rem);
648
+ max-height: calc(100% - 1.5rem);
649
+ }
650
+
651
+ .jsl-dialog > .dlg-header {
652
+ padding: 1rem 1.125rem;
653
+ }
654
+
655
+ .jsl-dialog > .dlg-body {
656
+ padding: 1.125rem;
657
+ }
658
+
659
+ .jsl-dialog > .dlg-footer {
660
+ padding: .875rem 1.125rem;
661
+ }
662
+ }
663
+
544
664
  .jsl-number {
545
665
  text-align: right;
546
666
  }
547
667
 
548
668
  .jsl-notification-container {
549
669
  z-index: 3020;
670
+ box-sizing: border-box;
671
+ width: 25rem;
672
+ max-width: 100vw;
673
+ max-height: 100dvh;
674
+ box-shadow: none;
675
+ pointer-events: none;
676
+ scrollbar-width: thin;
677
+ background: none;
678
+ border: 0;
679
+ border-radius: 1.75rem;
680
+ padding: 1rem;
550
681
  position: fixed;
551
- top: 1px;
552
- right: 1px;
553
- overflow: visible;
682
+ top: 0;
683
+ right: 0;
684
+ overflow-y: auto;
554
685
  }
555
686
 
556
- .jsl-notification-container .jsl-notification {
687
+ .jsl-notification-container > div {
688
+ flex-direction: column;
689
+ gap: .75rem;
690
+ display: flex;
691
+ }
692
+
693
+ .jsl-notification {
694
+ --jsl-notification-tone: var(--jsl-color-text-secondary);
557
695
  box-sizing: border-box;
558
- color: #fff;
696
+ border: 1px solid var(--jsl-color-border);
697
+ background: var(--jsl-color-surface);
698
+ width: 100%;
699
+ color: var(--jsl-color-text);
700
+ font: inherit;
701
+ pointer-events: auto;
702
+ border-radius: .75rem;
703
+ grid-template-columns: 1.25rem minmax(0, 1fr) auto;
704
+ align-items: start;
705
+ gap: .75rem;
706
+ padding: 1rem;
707
+ font-size: .8125rem;
708
+ line-height: 1.5;
709
+ animation: .16s ease-out jsl-notification-appear;
710
+ display: grid;
711
+ position: relative;
712
+ box-shadow: 0 8px 24px #0000001a, 0 1px 4px #0000000a;
713
+ }
714
+
715
+ .jsl-notification[hidden] {
716
+ display: none;
717
+ }
718
+
719
+ .jsl-notification--info {
720
+ --jsl-notification-tone: var(--jsl-color-info);
721
+ }
722
+
723
+ .jsl-notification--success {
724
+ --jsl-notification-tone: var(--jsl-color-success);
725
+ }
726
+
727
+ .jsl-notification--warning {
728
+ --jsl-notification-tone: var(--jsl-color-warning);
729
+ }
730
+
731
+ .jsl-notification--error {
732
+ --jsl-notification-tone: var(--jsl-color-danger);
733
+ }
734
+
735
+ .jsl-notification-icon {
736
+ box-sizing: border-box;
737
+ width: 1.125rem;
738
+ height: 1.125rem;
739
+ color: var(--jsl-notification-tone);
740
+ border: 1.5px solid;
741
+ border-radius: 50%;
742
+ place-items: center;
743
+ margin-top: .125rem;
744
+ font-size: .6875rem;
745
+ font-weight: 700;
746
+ line-height: 1;
747
+ display: grid;
748
+ }
749
+
750
+ .jsl-notification--success .jsl-notification-icon {
751
+ font-size: .75rem;
752
+ }
753
+
754
+ .jsl-notification-copy {
755
+ overflow-wrap: anywhere;
756
+ min-width: 0;
757
+ }
758
+
759
+ .jsl-notification-title {
760
+ color: var(--jsl-color-text);
761
+ margin-bottom: .25rem;
762
+ font-weight: 600;
763
+ }
764
+
765
+ .jsl-notification-title[hidden] {
766
+ display: none;
767
+ }
768
+
769
+ .jsl-notification-close {
770
+ appearance: none;
771
+ width: 1.5rem;
772
+ height: 1.5rem;
773
+ color: var(--jsl-color-text-muted);
774
+ font: inherit;
559
775
  cursor: pointer;
560
- background: #3b99ff;
561
- border-radius: .3rem;
562
- min-width: 12rem;
563
- margin: .2rem;
564
- padding: .5rem;
776
+ background: none;
777
+ border: 0;
778
+ border-radius: .25rem;
779
+ place-items: center;
780
+ margin: -.125rem -.25rem 0 0;
781
+ padding: 0;
782
+ font-size: 1.125rem;
783
+ line-height: 1;
784
+ display: grid;
785
+ }
786
+
787
+ .jsl-notification-close[hidden] {
788
+ display: none;
789
+ }
790
+
791
+ .jsl-notification-progress {
792
+ background: var(--jsl-color-border-subtle);
793
+ pointer-events: none;
794
+ border-radius: 999px;
795
+ height: 3px;
796
+ position: absolute;
797
+ inset: auto 1rem .375rem;
798
+ overflow: hidden;
799
+ }
800
+
801
+ .jsl-notification-progress-fill {
802
+ background: var(--jsl-color-accent);
803
+ transform-origin: 0;
804
+ height: 100%;
805
+ display: block;
806
+ }
807
+
808
+ .jsl-notification-close:hover {
809
+ background: var(--jsl-color-surface-hover);
810
+ color: var(--jsl-color-text);
811
+ }
812
+
813
+ .jsl-notification-close:focus-visible, .jsl-notification:focus-visible {
814
+ outline: 2px solid var(--jsl-color-focus);
815
+ outline-offset: 2px;
816
+ }
817
+
818
+ @keyframes jsl-notification-appear {
819
+ from {
820
+ opacity: 0;
821
+ transform: translateY(-4px);
822
+ }
823
+
824
+ to {
825
+ opacity: 1;
826
+ transform: translateY(0);
827
+ }
828
+ }
829
+
830
+ @media (prefers-reduced-motion: reduce) {
831
+ .jsl-notification {
832
+ animation: none;
833
+ }
565
834
  }
566
835
 
567
836
  .slick-header.ui-state-default, .slick-headerrow.ui-state-default, .slick-footerrow.ui-state-default, .slick-top-panel-scroller.ui-state-default, .slick-group-header.ui-state-default {
568
- background: #fff;
837
+ background: var(--jsl-color-surface);
569
838
  width: 100%;
570
839
  position: relative;
571
840
  overflow: auto;
@@ -597,9 +866,9 @@ div.jsl-fill {
597
866
 
598
867
  .slick-header-column.ui-state-default, .slick-group-header-column.ui-state-default {
599
868
  text-overflow: ellipsis;
869
+ border-right: 1px solid var(--jsl-color-border-subtle);
870
+ border-top: 1px solid var(--jsl-color-border-subtle);
600
871
  float: left;
601
- border-top: 1px solid silver;
602
- border-right: 1px solid silver;
603
872
  height: 20px;
604
873
  margin: 0;
605
874
  padding: 4px;
@@ -611,15 +880,26 @@ div.jsl-fill {
611
880
  border-left: 0 !important;
612
881
  }
613
882
 
883
+ .slick-header-column.ui-state-default {
884
+ height: var(--jsl-grid-header-height, 26px);
885
+ line-height: var(--jsl-grid-header-height, 26px);
886
+ }
887
+
614
888
  .slick-footerrow-column.ui-state-default {
615
889
  text-overflow: ellipsis;
890
+ border-right: 1px solid var(--jsl-color-border-subtle);
616
891
  float: left;
617
892
  vertical-align: middle;
618
- border: 0;
619
- border-right: 1px solid silver;
893
+ border-top: 0;
894
+ border-bottom: 0;
895
+ border-left: 0;
896
+ align-content: center;
897
+ height: auto;
620
898
  margin: 0;
621
899
  padding: 4px;
622
900
  line-height: 20px;
901
+ top: 0;
902
+ bottom: 0;
623
903
  }
624
904
 
625
905
  .slick-headerrow-column.ui-state-default, .slick-footerrow-column.ui-state-default {
@@ -627,7 +907,7 @@ div.jsl-fill {
627
907
  }
628
908
 
629
909
  .slick-header-column-sorted {
630
- font-style: italic;
910
+ font-style: inherit;
631
911
  }
632
912
 
633
913
  .slick-sort-indicator {
@@ -640,9 +920,9 @@ div.jsl-fill {
640
920
 
641
921
  .slick-sort-indicator-numbered {
642
922
  float: left;
643
- color: #6190cd;
644
923
  width: 8px;
645
924
  height: 5px;
925
+ color: var(--jsl-color-text-secondary);
646
926
  margin-top: 0;
647
927
  margin-left: 4px;
648
928
  font-style: normal;
@@ -662,25 +942,26 @@ div.jsl-fill {
662
942
  }
663
943
 
664
944
  .slick-cell, .slick-headerrow-column, .slick-footerrow-column {
945
+ border: 1px solid #0000;
946
+ border-right: 1px dotted var(--jsl-color-border-subtle);
665
947
  text-overflow: ellipsis;
666
948
  vertical-align: middle;
667
949
  z-index: 1;
668
950
  white-space: nowrap;
669
951
  cursor: default;
670
- border: 1px solid #0000;
671
- border-right: 1px dotted silver;
672
952
  margin: 0;
673
- padding: 1px 2px 2px 1px;
953
+ padding: 1px 2px 1px 1px;
674
954
  position: absolute;
675
955
  overflow: hidden;
956
+ box-sizing: content-box !important;
676
957
  }
677
958
 
678
959
  .slick-headerrow-column {
679
- border-bottom-color: silver;
960
+ border-bottom-color: var(--jsl-color-border-subtle);
680
961
  }
681
962
 
682
963
  .slick-footerrow-column {
683
- border-top-color: silver;
964
+ border-top-color: var(--jsl-color-border-subtle);
684
965
  }
685
966
 
686
967
  .slick-group-toggle {
@@ -688,13 +969,13 @@ div.jsl-fill {
688
969
  }
689
970
 
690
971
  .slick-cell.highlighted {
972
+ background: var(--jsl-color-surface-selected);
691
973
  -o-transition: all .5s;
692
- background: #00f3;
693
974
  transition: all .5s;
694
975
  }
695
976
 
696
977
  .slick-cell.flashing {
697
- border: 1px solid red !important;
978
+ border: 1px solid var(--jsl-color-danger) !important;
698
979
  }
699
980
 
700
981
  .slick-cell.editable {
@@ -707,24 +988,24 @@ div.jsl-fill {
707
988
  }
708
989
 
709
990
  .slick-reorder-proxy {
991
+ background: var(--jsl-color-accent);
710
992
  opacity: .15;
711
- filter: alpha(opacity= 15);
993
+ filter: alpha(opacity = 15);
712
994
  cursor: move;
713
- background: #00f;
714
995
  display: inline-block;
715
996
  }
716
997
 
717
998
  .slick-reorder-guide {
999
+ background: var(--jsl-color-accent);
718
1000
  opacity: .7;
719
1001
  height: 2px;
720
- filter: alpha(opacity= 70);
721
- background: #00f;
1002
+ filter: alpha(opacity = 70);
722
1003
  display: inline-block;
723
1004
  }
724
1005
 
725
1006
  .slick-selection {
726
1007
  z-index: 10;
727
- border: 2px dashed #000;
1008
+ border: 2px dashed var(--jsl-color-focus);
728
1009
  position: absolute;
729
1010
  }
730
1011
 
@@ -749,7 +1030,7 @@ div.jsl-fill {
749
1030
  }
750
1031
 
751
1032
  .slick-viewport {
752
- background: #fff;
1033
+ background: var(--jsl-color-surface);
753
1034
  outline: 0;
754
1035
  width: 100%;
755
1036
  position: relative;
@@ -781,7 +1062,7 @@ input.editor-text, textarea.editor-text {
781
1062
 
782
1063
  .slickgrid {
783
1064
  box-sizing: border-box;
784
- border: 1px solid #b0b0b0;
1065
+ border: solid 1px var(--jsl-color-border);
785
1066
  border-radius: 3px;
786
1067
  }
787
1068
 
@@ -792,8 +1073,8 @@ input.editor-text, textarea.editor-text {
792
1073
  }
793
1074
 
794
1075
  .slick-ghost-content {
795
- background: #c8c8c880;
796
- border: 2px solid #bbb;
1076
+ border: solid 2px var(--jsl-color-border);
1077
+ background: var(--jsl-color-surface-selected);
797
1078
  position: absolute;
798
1079
  left: 0;
799
1080
  right: 0;
@@ -804,8 +1085,8 @@ input.editor-text, textarea.editor-text {
804
1085
  }
805
1086
 
806
1087
  .slick-filtered-header {
807
- color: #3b99ff;
808
- background: #e7e7e7;
1088
+ color: var(--jsl-color-accent);
1089
+ background: var(--jsl-color-surface-selected);
809
1090
  }
810
1091
 
811
1092
  .slick-preheader-panel .slick-column-name {
@@ -832,77 +1113,110 @@ input.editor-text, textarea.editor-text {
832
1113
  }
833
1114
 
834
1115
  .slick-header-columns {
835
- border-bottom: 2px solid silver;
1116
+ border-bottom: 2px solid var(--jsl-color-border-subtle);
1117
+ background: var(--jsl-color-surface-subtle);
836
1118
  }
837
1119
 
838
1120
  .slick-header-column {
839
- text-align: center;
840
- border-right: 1px solid silver;
841
- font-weight: bold;
1121
+ border-right: 1px solid var(--jsl-color-border-subtle);
1122
+ text-align: inherit;
1123
+ font-weight: 600;
842
1124
  }
843
1125
 
844
1126
  .slick-header-column:hover, .slick-header-column-active {
845
- color: #fff;
846
- background: #3b99ff;
1127
+ background: var(--jsl-color-surface-hover);
1128
+ color: var(--jsl-color-text);
847
1129
  }
848
1130
 
849
1131
  .slick-header-column > .slick-header-menubutton:hover {
850
- background-color: #0000004d;
1132
+ background-color: var(--jsl-color-surface-selected);
851
1133
  }
852
1134
 
853
1135
  .slick-headerrow {
854
- background: #fafafa;
1136
+ background: var(--jsl-color-surface-subtle);
855
1137
  }
856
1138
 
857
1139
  .slick-headerrow-column {
858
- background: #fafafa;
1140
+ background: var(--jsl-color-surface-subtle);
859
1141
  border-bottom: 0;
860
1142
  height: 100%;
861
1143
  }
862
1144
 
863
1145
  .slick-row {
864
- background: #fff;
1146
+ background: var(--jsl-color-surface);
1147
+ line-height: inherit;
865
1148
  border: 0;
866
- line-height: 26px;
1149
+ align-items: center;
1150
+ display: flex;
867
1151
  position: absolute;
868
1152
  }
869
1153
 
870
1154
  .slick-row.selected {
871
1155
  z-index: 10;
872
- background: #dfe8f6;
1156
+ background: var(--jsl-color-surface-selected);
873
1157
  }
874
1158
 
875
1159
  .slick-cell {
1160
+ align-content: center;
876
1161
  padding-left: 4px;
877
1162
  padding-right: 4px;
878
1163
  }
879
1164
 
1165
+ .slick-cell.editable .select-comp {
1166
+ max-width: none;
1167
+ height: 100%;
1168
+ min-height: 0;
1169
+ display: flex;
1170
+ }
1171
+
1172
+ .slick-cell.editable .select-comp > .sel-expander {
1173
+ border-radius: .25rem;
1174
+ height: 100%;
1175
+ min-height: 0;
1176
+ padding: 0 .5rem;
1177
+ }
1178
+
1179
+ .slick-cell.editable .select-comp.multiple > .sel-expander {
1180
+ padding-top: 0;
1181
+ padding-bottom: 0;
1182
+ }
1183
+
1184
+ .slick-cell.editable .select-comp .sel-chip {
1185
+ padding: .0625rem .375rem;
1186
+ font-size: .6875rem;
1187
+ }
1188
+
880
1189
  .slick-group {
881
- border-bottom: 2px solid silver;
1190
+ border-bottom: 2px solid var(--jsl-color-border-subtle);
882
1191
  }
883
1192
 
884
1193
  .slick-group .slick-cell {
885
- background: #d4e4ec;
1194
+ background: var(--jsl-color-surface-selected);
1195
+ align-items: center;
1196
+ display: flex;
886
1197
  }
887
1198
 
888
1199
  .slick-group-toggle {
889
1200
  vertical-align: middle;
1201
+ flex-shrink: 0;
890
1202
  width: 20px;
891
1203
  height: 20px;
892
1204
  margin-right: 5px;
893
1205
  }
894
1206
 
895
1207
  .slick-group-toggle.expanded {
896
- background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 122.88 119.8'%3E%3Cpath d='M23.59,0h75.7a23.63,23.63,0,0,1,23.59,23.59V96.21A23.64,23.64,0,0,1,99.29,119.8H23.59a23.53,23.53,0,0,1-16.67-6.93l-.38-.42A23.49,23.49,0,0,1,0,96.21V23.59A23.63,23.63,0,0,1,23.59,0Zm59.7,53.51a6.39,6.39,0,1,1,0,12.77H39.59a6.39,6.39,0,1,1,0-12.77Zm16-40.74H23.59A10.86,10.86,0,0,0,12.77,23.59V96.21a10.77,10.77,0,0,0,2.9,7.37l.28.26A10.76,10.76,0,0,0,23.59,107h75.7a10.87,10.87,0,0,0,10.82-10.82V23.59A10.86,10.86,0,0,0,99.29,12.77Z'/%3E%3C/svg%3E") center no-repeat;
1208
+ background-color: currentColor;
1209
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 122.88 119.8'%3E%3Cpath d='M23.59,0h75.7a23.63,23.63,0,0,1,23.59,23.59V96.21A23.64,23.64,0,0,1,99.29,119.8H23.59a23.53,23.53,0,0,1-16.67-6.93l-.38-.42A23.49,23.49,0,0,1,0,96.21V23.59A23.63,23.63,0,0,1,23.59,0Zm59.7,53.51a6.39,6.39,0,1,1,0,12.77H39.59a6.39,6.39,0,1,1,0-12.77Zm16-40.74H23.59A10.86,10.86,0,0,0,12.77,23.59V96.21a10.77,10.77,0,0,0,2.9,7.37l.28.26A10.76,10.76,0,0,0,23.59,107h75.7a10.87,10.87,0,0,0,10.82-10.82V23.59A10.86,10.86,0,0,0,99.29,12.77Z'/%3E%3C/svg%3E") center / contain no-repeat;
897
1210
  }
898
1211
 
899
1212
  .slick-group-toggle.collapsed {
900
- background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' viewBox='0 0 122.88 119.72' style='enable-background:new 0 0 122.88 119.72' xml:space='preserve'%3E%3Cg%3E%3Cpath d='M22.72,0h77.45c6.25,0,11.93,2.56,16.05,6.67c4.11,4.11,6.67,9.79,6.67,16.05v74.29c0,6.25-2.56,11.93-6.67,16.05 l-0.32,0.29c-4.09,3.94-9.64,6.38-15.73,6.38H22.72c-6.25,0-11.93-2.56-16.05-6.67l-0.3-0.32C2.43,108.64,0,103.09,0,97.01V22.71 c0-6.25,2.55-11.93,6.67-16.05C10.78,2.55,16.46,0,22.72,0L22.72,0z M55.47,38.34c0-3.3,2.67-5.97,5.97-5.97 c3.3,0,5.97,2.67,5.97,5.97v15.55h15.55c3.3,0,5.97,2.67,5.97,5.97c0,3.3-2.67,5.97-5.97,5.97H67.41v15.55 c0,3.3-2.67,5.97-5.97,5.97c-3.3,0-5.97-2.67-5.97-5.97V65.83H39.91c-3.3,0-5.97-2.67-5.97-5.97c0-3.3,2.67-5.97,5.97-5.97h15.55 V38.34L55.47,38.34z M100.16,10.24H22.72c-3.43,0-6.54,1.41-8.81,3.67c-2.26,2.26-3.67,5.38-3.67,8.81v74.29 c0,3.33,1.31,6.35,3.43,8.59l0.24,0.22c2.26,2.26,5.38,3.67,8.81,3.67h77.45c3.32,0,6.35-1.31,8.59-3.44l0.21-0.23 c2.26-2.26,3.67-5.38,3.67-8.81V22.71c0-3.42-1.41-6.54-3.67-8.81C106.71,11.65,103.59,10.24,100.16,10.24L100.16,10.24z'/%3E%3C/g%3E%3C/svg%3E") center no-repeat;
1213
+ background-color: currentColor;
1214
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' viewBox='0 0 122.88 119.72' style='enable-background:new 0 0 122.88 119.72' xml:space='preserve'%3E%3Cg%3E%3Cpath d='M22.72,0h77.45c6.25,0,11.93,2.56,16.05,6.67c4.11,4.11,6.67,9.79,6.67,16.05v74.29c0,6.25-2.56,11.93-6.67,16.05 l-0.32,0.29c-4.09,3.94-9.64,6.38-15.73,6.38H22.72c-6.25,0-11.93-2.56-16.05-6.67l-0.3-0.32C2.43,108.64,0,103.09,0,97.01V22.71 c0-6.25,2.55-11.93,6.67-16.05C10.78,2.55,16.46,0,22.72,0L22.72,0z M55.47,38.34c0-3.3,2.67-5.97,5.97-5.97 c3.3,0,5.97,2.67,5.97,5.97v15.55h15.55c3.3,0,5.97,2.67,5.97,5.97c0,3.3-2.67,5.97-5.97,5.97H67.41v15.55 c0,3.3-2.67,5.97-5.97,5.97c-3.3,0-5.97-2.67-5.97-5.97V65.83H39.91c-3.3,0-5.97-2.67-5.97-5.97c0-3.3,2.67-5.97,5.97-5.97h15.55 V38.34L55.47,38.34z M100.16,10.24H22.72c-3.43,0-6.54,1.41-8.81,3.67c-2.26,2.26-3.67,5.38-3.67,8.81v74.29 c0,3.33,1.31,6.35,3.43,8.59l0.24,0.22c2.26,2.26,5.38,3.67,8.81,3.67h77.45c3.32,0,6.35-1.31,8.59-3.44l0.21-0.23 c2.26-2.26,3.67-5.38,3.67-8.81V22.71c0-3.42-1.41-6.54-3.67-8.81C106.71,11.65,103.59,10.24,100.16,10.24L100.16,10.24z'/%3E%3C/g%3E%3C/svg%3E") center / contain no-repeat;
901
1215
  }
902
1216
 
903
1217
  .slick-group-totals {
904
- color: gray;
905
- background: #fff;
1218
+ color: var(--jsl-color-text-secondary);
1219
+ background: var(--jsl-color-surface);
906
1220
  }
907
1221
 
908
1222
  .slick-group-select-checkbox {
@@ -913,40 +1227,40 @@ input.editor-text, textarea.editor-text {
913
1227
  }
914
1228
 
915
1229
  .slick-cell.selected {
916
- background-color: #cde6f7;
1230
+ background-color: var(--jsl-color-surface-selected);
917
1231
  }
918
1232
 
919
1233
  .slick-cell.active {
1234
+ border-color: var(--jsl-color-focus);
920
1235
  border-style: solid;
921
- border-color: #017dbe;
922
1236
  }
923
1237
 
924
1238
  .slick-sortable-placeholder {
925
- background: silver !important;
1239
+ background: var(--jsl-color-surface-selected) !important;
926
1240
  }
927
1241
 
928
1242
  .slick-row.odd {
929
- background: #ededed;
1243
+ background: var(--jsl-color-surface-subtle);
930
1244
  }
931
1245
 
932
1246
  .slick-row.ui-state-active {
933
- background: #f5f7d7;
1247
+ background: var(--jsl-color-surface-selected);
934
1248
  }
935
1249
 
936
1250
  .slick-row.loading {
937
1251
  opacity: .5;
938
- filter: alpha(opacity= 50);
1252
+ filter: alpha(opacity = 50);
939
1253
  }
940
1254
 
941
1255
  .slick-cell.invalid {
942
- border-color: red;
1256
+ border-color: var(--jsl-color-danger);
943
1257
  animation-name: slickgrid-invalid-hilite;
944
1258
  animation-duration: .2s;
945
1259
  }
946
1260
 
947
1261
  @keyframes slickgrid-invalid-hilite {
948
1262
  from {
949
- box-shadow: 0 0 6px red;
1263
+ box-shadow: 0 0 6px var(--jsl-color-danger);
950
1264
  }
951
1265
 
952
1266
  to {
@@ -955,8 +1269,108 @@ input.editor-text, textarea.editor-text {
955
1269
  }
956
1270
 
957
1271
  .new-row .slick-cell {
958
- background: #3b99ff55;
959
- border-top: 1px solid #aaa;
1272
+ border-top: solid 1px var(--jsl-color-border);
1273
+ background: var(--jsl-color-surface-selected);
1274
+ }
1275
+
1276
+ .slickgrid {
1277
+ font: inherit;
1278
+ color: var(--jsl-color-text);
1279
+ background: var(--jsl-color-surface);
1280
+ }
1281
+
1282
+ .slick-row:not(.slick-group):not(.slick-group-totals) > .slick-cell:not(.active):not(.invalid):not(.flashing) {
1283
+ border-right-color: #0000;
1284
+ }
1285
+
1286
+ .slickgrid .right {
1287
+ text-align: right;
1288
+ }
1289
+
1290
+ .slickgrid .center {
1291
+ text-align: center;
1292
+ }
1293
+
1294
+ .slickgrid .tabular-nums {
1295
+ font-variant-numeric: tabular-nums;
1296
+ }
1297
+
1298
+ .slick-header-column .slick-column-name {
1299
+ float: none;
1300
+ text-overflow: ellipsis;
1301
+ vertical-align: top;
1302
+ max-width: 100%;
1303
+ margin-bottom: 0;
1304
+ display: inline-block;
1305
+ overflow: hidden;
1306
+ }
1307
+
1308
+ .slick-header-sortable .slick-column-name {
1309
+ max-width: calc(100% - 1.25rem);
1310
+ }
1311
+
1312
+ .slick-header-column .slick-sort-indicator, .slick-header-column .slick-sort-indicator-numbered {
1313
+ float: none;
1314
+ vertical-align: top;
1315
+ height: var(--jsl-grid-header-height, 26px);
1316
+ line-height: var(--jsl-grid-header-height, 26px);
1317
+ color: var(--jsl-color-accent);
1318
+ margin: 0 0 0 .375rem;
1319
+ display: inline-block;
1320
+ position: relative;
1321
+ }
1322
+
1323
+ .slick-header-column .slick-sort-indicator {
1324
+ width: .65rem;
1325
+ }
1326
+
1327
+ .slick-header-column.right .slick-sort-indicator, .slick-header-column.right .slick-sort-indicator-numbered {
1328
+ float: left;
1329
+ margin-left: 0;
1330
+ margin-right: .375rem;
1331
+ }
1332
+
1333
+ .slick-sort-indicator-asc:before, .slick-sort-indicator-desc:before {
1334
+ content: "";
1335
+ background: currentColor;
1336
+ width: 8px;
1337
+ height: 5px;
1338
+ position: absolute;
1339
+ top: 50%;
1340
+ left: 0;
1341
+ transform: translateY(-50%);
1342
+ }
1343
+
1344
+ .slick-sort-indicator-asc:before {
1345
+ clip-path: polygon(50% 0, 100% 100%, 0 100%);
1346
+ }
1347
+
1348
+ .slick-sort-indicator-desc:before {
1349
+ clip-path: polygon(0 0, 100% 0, 50% 100%);
1350
+ }
1351
+
1352
+ .slick-header-column .slick-sort-indicator-numbered {
1353
+ width: auto;
1354
+ min-width: .65rem;
1355
+ font-size: .8em;
1356
+ }
1357
+
1358
+ .slick-header-column .slick-sort-indicator.slick-sort-indicator-numbered {
1359
+ min-width: 1.5rem;
1360
+ padding-left: .75rem;
1361
+ }
1362
+
1363
+ .slickgrid:has(.slick-header-column.frozen) > .slick-pane-left:after {
1364
+ content: "";
1365
+ background: var(--jsl-color-border);
1366
+ pointer-events: none;
1367
+ z-index: 20;
1368
+ width: 1px;
1369
+ position: absolute;
1370
+ top: 0;
1371
+ bottom: 0;
1372
+ right: 0;
1373
+ box-shadow: -2px 0 4px #00000014;
960
1374
  }
961
1375
 
962
1376
  .slick-header-menubutton {
@@ -1120,673 +1534,1635 @@ input.editor-text, textarea.editor-text {
1120
1534
  .select-comp {
1121
1535
  box-sizing: border-box;
1122
1536
  vertical-align: middle;
1123
- border: 1px solid #bdbdbd;
1124
- border-radius: .2rem;
1125
- min-width: 8rem;
1126
- height: 1.6rem;
1127
- padding-left: .2rem;
1128
- line-height: 1.6rem;
1129
- display: inline-block;
1537
+ width: 14rem;
1538
+ min-width: 0;
1539
+ max-width: 100%;
1540
+ min-height: 2.5rem;
1541
+ color: var(--jsl-color-text);
1542
+ font: inherit;
1543
+ font-size: .875rem;
1544
+ display: inline-flex;
1130
1545
  position: relative;
1131
1546
  }
1132
1547
 
1133
- .select-comp.expanded {
1134
- border-color: #3b99ff;
1548
+ .select-comp *, .sel-comp-dd * {
1549
+ box-sizing: border-box;
1135
1550
  }
1136
1551
 
1137
- .select-comp.disabled {
1138
- color: #999;
1552
+ .select-comp .sel-expander {
1553
+ appearance: none;
1554
+ width: 100%;
1555
+ min-width: 0;
1556
+ min-height: inherit;
1557
+ border: 1px solid var(--jsl-color-border);
1558
+ background: var(--jsl-color-surface);
1559
+ color: inherit;
1560
+ font: inherit;
1561
+ text-align: left;
1562
+ cursor: pointer;
1563
+ border-radius: .5rem;
1564
+ align-items: center;
1565
+ gap: .625rem;
1566
+ padding: .5rem .75rem;
1567
+ line-height: 1.4;
1568
+ transition: border-color .15s;
1569
+ display: flex;
1139
1570
  }
1140
1571
 
1141
- .select-comp .sel-result .clear-btn {
1142
- color: #999;
1143
- cursor: pointer;
1144
- opacity: .3;
1145
- z-index: 10;
1146
- background: none;
1147
- border: none;
1148
- font-family: sans-serif;
1149
- font-size: 1.4rem;
1150
- font-weight: bold;
1151
- line-height: 1.4rem;
1152
- position: absolute;
1153
- top: 0;
1154
- right: 1.2rem;
1572
+ .select-comp:has(.clear-btn:not([hidden])) .sel-expander {
1573
+ padding-right: 3.5rem;
1155
1574
  }
1156
1575
 
1157
- .select-comp .sel-result .clear-btn:not([disabled]):hover {
1158
- color: #d00000;
1576
+ .select-comp .sel-expander:hover:not(:disabled) {
1577
+ border-color: var(--jsl-color-text-muted);
1159
1578
  }
1160
1579
 
1161
- .select-comp .sel-result:hover .clear-btn:not([disabled]) {
1162
- opacity: 1;
1580
+ .select-comp.expanded .sel-expander {
1581
+ border-color: var(--jsl-color-accent);
1163
1582
  }
1164
1583
 
1165
- .select-comp .sel-expander {
1166
- box-sizing: border-box;
1167
- text-align: center;
1168
- opacity: .7;
1169
- cursor: pointer;
1170
- background: #fff;
1171
- border: none;
1172
- border-top-right-radius: .2rem;
1173
- border-bottom-right-radius: .2rem;
1174
- width: 1.5rem;
1175
- font-size: .65em;
1176
- position: absolute;
1177
- top: 0;
1178
- bottom: 0;
1179
- right: 0;
1584
+ .select-comp .sel-expander:focus-visible, .select-comp .clear-btn:focus-visible {
1585
+ outline: 2px solid var(--jsl-color-focus);
1586
+ outline-offset: 2px;
1180
1587
  }
1181
1588
 
1182
- .select-comp .sel-expander:focus {
1183
- color: #fff;
1184
- background: #3b9aff;
1185
- outline: 0;
1589
+ .select-comp .sel-result {
1590
+ text-overflow: ellipsis;
1591
+ white-space: nowrap;
1592
+ flex: 1;
1593
+ min-width: 0;
1594
+ overflow: hidden;
1186
1595
  }
1187
1596
 
1188
- .select-comp .sel-expander:before {
1189
- content: "";
1190
- box-sizing: content-box;
1191
- border-left: 1px solid #bdbdbd;
1192
- width: 0;
1193
- margin: 0;
1194
- padding: 0;
1195
- display: block;
1196
- position: absolute;
1197
- top: 2px;
1198
- bottom: 2px;
1199
- left: 0;
1597
+ .select-comp .sel-placeholder {
1598
+ color: var(--jsl-color-text-muted);
1200
1599
  }
1201
1600
 
1202
- .select-comp .sel-dd-item {
1203
- white-space: nowrap;
1204
- height: 100%;
1205
- margin-right: 2.6rem;
1601
+ .select-comp .sel-result > .sel-dd-item {
1602
+ text-overflow: ellipsis;
1206
1603
  display: block;
1207
1604
  overflow: hidden;
1208
1605
  }
1209
1606
 
1210
- .select-comp:hover .sel-expander {
1211
- opacity: 1;
1212
- background: #dadada;
1607
+ .select-comp .sel-chevron {
1608
+ border: solid var(--jsl-color-text-muted);
1609
+ border-width: 0 1.5px 1.5px 0;
1610
+ flex: 0 0 7px;
1611
+ width: 7px;
1612
+ height: 7px;
1613
+ margin-left: auto;
1614
+ transform: rotate(45deg) translateY(-2px);
1213
1615
  }
1214
1616
 
1215
- .sel-comp-dd {
1216
- box-sizing: border-box;
1217
- z-index: 2010;
1218
- background: #fff;
1219
- position: absolute;
1617
+ .select-comp.expanded .sel-chevron {
1618
+ transform: rotate(225deg) translate(-2px, -1px);
1220
1619
  }
1221
1620
 
1222
- .sel-comp-dd > div {
1223
- box-sizing: border-box;
1224
- white-space: nowrap;
1621
+ .select-comp:has(.clear-btn:not([hidden])) .sel-chevron {
1622
+ position: absolute;
1623
+ right: .875rem;
1624
+ }
1625
+
1626
+ .select-comp .clear-btn {
1627
+ appearance: none;
1628
+ width: 1.5rem;
1629
+ height: 1.5rem;
1630
+ font: inherit;
1631
+ color: var(--jsl-color-text-muted);
1225
1632
  cursor: pointer;
1226
- border: 1px solid #bcbcbc;
1227
- border-radius: 2px;
1633
+ background: none;
1634
+ border: 0;
1635
+ border-radius: .25rem;
1636
+ place-items: center;
1637
+ padding: 0;
1638
+ font-size: 1.125rem;
1639
+ line-height: 1;
1640
+ display: grid;
1228
1641
  position: absolute;
1229
- inset: 0;
1642
+ top: 50%;
1643
+ right: 1.875rem;
1644
+ transform: translateY(-50%);
1645
+ }
1646
+
1647
+ .select-comp .clear-btn:hover:not(:disabled) {
1648
+ background: var(--jsl-color-surface-hover);
1649
+ color: var(--jsl-color-text);
1650
+ }
1651
+
1652
+ .select-comp .clear-btn[hidden] {
1653
+ display: none;
1654
+ }
1655
+
1656
+ .select-comp:is(.disabled, :has( > .sel-expander:disabled)) .sel-expander {
1657
+ background: var(--jsl-color-disabled-surface);
1658
+ color: var(--jsl-color-disabled-text);
1659
+ cursor: not-allowed;
1660
+ }
1661
+
1662
+ .select-comp:is(.disabled, :has( > .sel-expander:disabled)) .clear-btn {
1663
+ color: var(--jsl-color-disabled-text);
1664
+ cursor: not-allowed;
1665
+ }
1666
+
1667
+ .select-comp:is(.disabled, :has( > .sel-expander:disabled)) .sel-result, .select-comp:is(.disabled, :has( > .sel-expander:disabled)) .sel-chevron {
1668
+ opacity: .65;
1669
+ }
1670
+
1671
+ .select-comp.multiple .sel-result:not(.sel-placeholder) {
1672
+ white-space: normal;
1673
+ flex-wrap: wrap;
1674
+ gap: .25rem;
1675
+ display: flex;
1676
+ }
1677
+
1678
+ .select-comp.multiple .sel-expander {
1679
+ padding-top: .375rem;
1680
+ padding-bottom: .375rem;
1681
+ }
1682
+
1683
+ .sel-chip {
1684
+ background: var(--jsl-color-surface-selected);
1685
+ min-width: 0;
1686
+ max-width: 100%;
1687
+ color: var(--jsl-color-text-secondary);
1688
+ text-overflow: ellipsis;
1689
+ white-space: nowrap;
1690
+ border-radius: .25rem;
1691
+ padding: .125rem .4375rem;
1692
+ font-size: .75rem;
1693
+ line-height: 1.5;
1694
+ display: inline-block;
1230
1695
  overflow: hidden;
1231
1696
  }
1232
1697
 
1233
- .sel-comp-dd .sel-search {
1698
+ .sel-chip-count {
1699
+ color: var(--jsl-color-text-muted);
1700
+ background: var(--jsl-color-surface-hover);
1701
+ }
1702
+
1703
+ .sel-comp-dd {
1704
+ z-index: 2200;
1234
1705
  box-sizing: border-box;
1235
- height: 1.8rem;
1236
- padding: .1rem;
1706
+ border: 1px solid var(--jsl-color-border);
1707
+ background: var(--jsl-color-surface);
1708
+ color: var(--jsl-color-text);
1709
+ font: inherit;
1710
+ border-radius: .625rem;
1711
+ padding: 4px;
1712
+ font-size: .875rem;
1713
+ position: absolute;
1237
1714
  overflow: hidden;
1715
+ box-shadow: 0 12px 32px #0000001f, 0 2px 6px #0000000f;
1238
1716
  }
1239
1717
 
1240
- .sel-comp-dd .sel-search > input {
1241
- box-sizing: border-box;
1242
- border: none;
1243
- border-bottom: 2px solid #c8c8c8;
1244
- width: calc(100% - 4px);
1245
- height: 1.6rem;
1246
- margin: 0 2px;
1247
- line-height: 1.6rem;
1718
+ .sel-dd-panel {
1719
+ flex-direction: column;
1720
+ height: 100%;
1721
+ min-height: 0;
1722
+ display: flex;
1248
1723
  }
1249
1724
 
1250
- .sel-comp-dd .sel-search > input:focus {
1251
- outline: none;
1725
+ .sel-search {
1726
+ flex: 0 0 44px;
1727
+ padding: 3px 4px 7px;
1252
1728
  }
1253
1729
 
1254
- .sel-comp-dd .sel-dd-item:not(.sel-dd-group):hover {
1255
- background: #d0d0d0;
1730
+ .sel-search[hidden] {
1731
+ display: none;
1256
1732
  }
1257
1733
 
1258
- .sel-comp-dd .sel-dd-items .focused {
1259
- background: #cce8ff;
1734
+ .sel-search input {
1735
+ appearance: none;
1736
+ border: 1px solid var(--jsl-color-border-subtle);
1737
+ background: var(--jsl-color-surface-subtle);
1738
+ width: 100%;
1739
+ height: 34px;
1740
+ color: var(--jsl-color-text);
1741
+ font: inherit;
1742
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%2371717a' stroke-width='1.5' stroke-linecap='round'%3E%3Ccircle cx='7' cy='7' r='4.5'/%3E%3Cpath d='m10.5 10.5 3 3'/%3E%3C/svg%3E");
1743
+ background-position: .625rem;
1744
+ background-repeat: no-repeat;
1745
+ border-radius: .375rem;
1746
+ padding: .375rem .625rem .375rem 2rem;
1747
+ font-size: .8125rem;
1748
+ line-height: 1.4;
1260
1749
  }
1261
1750
 
1262
- .sel-comp-dd .sel-dd-items .selected {
1263
- background: #3b99ff;
1751
+ .sel-search input::placeholder {
1752
+ color: var(--jsl-color-text-muted);
1264
1753
  }
1265
1754
 
1266
- .sel-comp-dd .sel-dd-items.multiple .sel-dd-item {
1267
- padding-left: 1rem;
1755
+ .sel-search input:focus {
1756
+ border-color: var(--jsl-color-focus);
1757
+ outline: 0;
1268
1758
  }
1269
1759
 
1270
- .sel-comp-dd .sel-dd-items.multiple .sel-dd-item.selected:before {
1271
- content: "✓";
1272
- color: #404040;
1273
- font-weight: bold;
1274
- position: absolute;
1275
- left: 0;
1760
+ .sel-listbox {
1761
+ outline: none;
1762
+ flex: 1;
1763
+ min-height: 0;
1764
+ position: relative;
1765
+ }
1766
+
1767
+ .sel-comp-dd .sel-dd-items {
1768
+ overscroll-behavior: contain;
1769
+ scrollbar-width: thin;
1276
1770
  }
1277
1771
 
1278
1772
  .sel-comp-dd .sel-dd-item {
1773
+ text-overflow: ellipsis;
1774
+ white-space: nowrap;
1775
+ cursor: pointer;
1776
+ border-radius: .375rem;
1777
+ align-items: center;
1279
1778
  height: 100%;
1280
- line-height: 26px;
1779
+ padding: 0 2rem 0 .625rem;
1780
+ font-size: .8125rem;
1781
+ line-height: 1.4;
1782
+ display: flex;
1783
+ position: relative;
1784
+ overflow: hidden;
1785
+ }
1786
+
1787
+ .sel-comp-dd .sel-dd-item:hover:not(.sel-dd-group) {
1788
+ background: var(--jsl-color-surface-hover);
1789
+ }
1790
+
1791
+ .sel-comp-dd .sel-dd-item.selected {
1792
+ background: var(--jsl-color-surface-selected);
1793
+ }
1794
+
1795
+ .sel-comp-dd .sel-dd-item.focused {
1796
+ outline: 1px solid var(--jsl-color-focus);
1797
+ outline-offset: -2px;
1798
+ }
1799
+
1800
+ .sel-comp-dd .sel-dd-item.selected:after {
1801
+ content: "";
1802
+ border: solid var(--jsl-color-text);
1803
+ border-width: 0 1.5px 1.5px 0;
1804
+ width: 5px;
1805
+ height: 9px;
1806
+ position: absolute;
1807
+ right: .875rem;
1808
+ transform: rotate(45deg) translateY(-2px);
1809
+ }
1810
+
1811
+ .sel-comp-dd .multiple .sel-dd-item:not(.sel-dd-group) {
1812
+ padding-left: 2rem;
1813
+ padding-right: .625rem;
1814
+ }
1815
+
1816
+ .sel-comp-dd .multiple .sel-dd-item:not(.sel-dd-group):before {
1817
+ content: "";
1818
+ border: 1px solid var(--jsl-color-border);
1819
+ background: var(--jsl-color-surface);
1820
+ border-radius: .25rem;
1821
+ width: 14px;
1822
+ height: 14px;
1823
+ position: absolute;
1824
+ left: .625rem;
1825
+ }
1826
+
1827
+ .sel-comp-dd .multiple .sel-dd-item.selected:before {
1828
+ border-color: var(--jsl-color-accent);
1829
+ background: var(--jsl-color-accent);
1830
+ }
1831
+
1832
+ .sel-comp-dd .multiple .sel-dd-item.selected:after {
1833
+ border-color: var(--jsl-color-on-accent);
1834
+ width: 4px;
1835
+ height: 7px;
1836
+ left: .875rem;
1837
+ right: auto;
1281
1838
  }
1282
1839
 
1283
1840
  .sel-comp-dd .sel-dd-group {
1841
+ color: var(--jsl-color-text-muted);
1842
+ cursor: default;
1843
+ padding: 0 .625rem;
1844
+ font-size: .6875rem;
1845
+ font-weight: 600;
1846
+ }
1847
+
1848
+ .sel-empty {
1849
+ color: var(--jsl-color-text-muted);
1284
1850
  text-align: center;
1285
- background: #e0e0e0;
1286
- font-weight: bold;
1851
+ padding: 1.25rem .625rem;
1852
+ font-size: .8125rem;
1853
+ }
1854
+
1855
+ .sel-empty[hidden] {
1856
+ display: none;
1857
+ }
1858
+
1859
+ .sel-dd-animate {
1860
+ animation: .12s ease-out jsl-select-appear;
1861
+ }
1862
+
1863
+ @keyframes jsl-select-appear {
1864
+ from {
1865
+ opacity: 0;
1866
+ }
1867
+
1868
+ to {
1869
+ opacity: 1;
1870
+ }
1871
+ }
1872
+
1873
+ @media (prefers-reduced-motion: reduce) {
1874
+ .sel-dd-animate {
1875
+ animation: none;
1876
+ }
1877
+
1878
+ .select-comp .sel-expander {
1879
+ transition: none;
1880
+ }
1881
+ }
1882
+
1883
+ @media (forced-colors: active) {
1884
+ .sel-comp-dd .sel-dd-item.selected {
1885
+ outline-offset: -2px;
1886
+ outline: 2px solid highlight;
1887
+ }
1888
+
1889
+ .sel-chip {
1890
+ border: 1px solid buttontext;
1891
+ }
1287
1892
  }
1288
1893
 
1289
1894
  .autocomplete-suggestions {
1290
- text-align: left;
1291
- cursor: default;
1292
- z-index: 9999;
1895
+ z-index: 2200;
1293
1896
  box-sizing: border-box;
1294
- background: #fff;
1295
- border: 1px solid #ccc;
1296
- border-top: 0;
1297
- max-height: 254px;
1897
+ border: 1px solid var(--jsl-color-border);
1898
+ background: var(--jsl-color-surface);
1899
+ max-height: min(16rem, 100dvh - 1rem);
1900
+ color: var(--jsl-color-text);
1901
+ font: inherit;
1902
+ text-align: left;
1903
+ border-radius: .625rem;
1904
+ padding: 4px;
1905
+ font-size: .8125rem;
1298
1906
  display: none;
1299
1907
  position: absolute;
1300
- overflow: hidden auto;
1301
- box-shadow: -1px 1px 3px #0000001a;
1908
+ overflow-y: auto;
1909
+ box-shadow: 0 12px 32px #0000001f, 0 2px 6px #0000000f;
1302
1910
  }
1303
1911
 
1304
1912
  .autocomplete-suggestion {
1305
1913
  white-space: nowrap;
1306
1914
  text-overflow: ellipsis;
1307
- color: #333;
1308
- padding: 0 .6em;
1309
- font-size: 1.02em;
1310
- line-height: 23px;
1915
+ cursor: pointer;
1916
+ border-radius: .375rem;
1917
+ padding: .5rem .625rem;
1918
+ line-height: 1.4;
1311
1919
  position: relative;
1312
1920
  overflow: hidden;
1313
1921
  }
1314
1922
 
1315
1923
  .autocomplete-suggestion b {
1316
- color: #1f8dd6;
1317
- font-weight: normal;
1924
+ color: inherit;
1925
+ font-weight: 600;
1318
1926
  }
1319
1927
 
1320
- .autocomplete-suggestion.selected {
1321
- background: #f0f0f0;
1928
+ .autocomplete-suggestion.selected, .autocomplete-suggestion:hover {
1929
+ background: var(--jsl-color-surface-selected);
1322
1930
  }
1323
1931
 
1324
- .progress-comp {
1325
- background: #bbb;
1326
- border-radius: 2px;
1327
- height: 1rem;
1328
- position: relative;
1932
+ @media (prefers-reduced-motion: reduce) {
1933
+ .jsl-input, .jsl-date-input {
1934
+ transition: none;
1935
+ }
1329
1936
  }
1330
1937
 
1331
- .progress-comp .bar {
1332
- text-align: center;
1333
- background: #3b99ff;
1334
- border-radius: 2px;
1335
- height: 100%;
1938
+ .progress-comp {
1939
+ background: var(--jsl-color-border-subtle);
1940
+ border-radius: 999px;
1941
+ height: .5rem;
1942
+ position: relative;
1943
+ overflow: hidden;
1336
1944
  }
1337
1945
 
1338
- .time-comp {
1339
- text-align: right;
1340
- width: 4em;
1946
+ .progress-comp.has-label {
1947
+ height: 1.25rem;
1341
1948
  }
1342
1949
 
1343
- .date-time-comp {
1344
- display: inline-block;
1950
+ .progress-comp .bar {
1951
+ background: var(--jsl-color-accent);
1952
+ border-radius: inherit;
1953
+ height: 100%;
1345
1954
  }
1346
1955
 
1347
- .date-time-comp input:first-child {
1348
- width: 6em;
1956
+ .progress-comp .progress-label {
1957
+ color: var(--jsl-color-text);
1958
+ text-shadow: 0 0 3px var(--jsl-color-surface);
1959
+ place-items: center;
1960
+ font: 600 .75rem / 1.25rem sans-serif;
1961
+ display: grid;
1962
+ position: absolute;
1963
+ inset: 0;
1349
1964
  }
1350
1965
 
1351
- .expander-comp {
1352
- box-shadow: 0 1px 2px #0003, 0 1px 2px #0000001a;
1966
+ .jsl-input, .jsl-date-input {
1967
+ box-sizing: border-box;
1968
+ border: 1px solid var(--jsl-color-border);
1969
+ background-color: var(--jsl-color-surface);
1970
+ width: 14rem;
1971
+ min-width: 0;
1972
+ max-width: 100%;
1973
+ height: 2.5rem;
1974
+ color: var(--jsl-color-text);
1975
+ font: inherit;
1976
+ border-radius: .5rem;
1977
+ padding: .5rem .75rem;
1978
+ font-size: .875rem;
1979
+ line-height: 1.4;
1980
+ transition: border-color .15s;
1353
1981
  }
1354
1982
 
1355
- .expander-comp .header {
1356
- color: #fff;
1357
- background: #3b99ff;
1358
- border-radius: .3rem;
1359
- align-content: center;
1360
- align-items: center;
1361
- min-height: 1.5rem;
1362
- line-height: 1.5rem;
1363
- display: flex;
1983
+ .jsl-input:hover:not(:disabled), .jsl-date-input:hover:not(:disabled) {
1984
+ border-color: var(--jsl-color-text-muted);
1364
1985
  }
1365
1986
 
1366
- .expander-comp .header .toggler {
1367
- cursor: pointer;
1368
- background: #3b99ff;
1369
- border-top-left-radius: .3rem;
1370
- border-bottom-left-radius: .3rem;
1371
- display: inline-block;
1987
+ .jsl-input:focus, .jsl-date-input:focus {
1988
+ outline: 2px solid var(--jsl-color-focus);
1989
+ outline-offset: 2px;
1990
+ border-color: var(--jsl-color-accent);
1372
1991
  }
1373
1992
 
1374
- .expander-comp .header .toggler:hover {
1375
- color: #000;
1376
- background: #6bb1fc;
1993
+ .jsl-input::placeholder, .jsl-date-input::placeholder {
1994
+ color: var(--jsl-color-text-muted);
1995
+ opacity: 1;
1377
1996
  }
1378
1997
 
1379
- .expander-comp .header .content {
1380
- cursor: pointer;
1381
- border-top-right-radius: .3rem;
1382
- border-bottom-right-radius: .3rem;
1383
- flex-grow: 1;
1384
- padding-left: .6em;
1385
- display: inline-block;
1998
+ .jsl-input:disabled, .jsl-date-input:disabled {
1999
+ cursor: not-allowed;
2000
+ background-color: var(--jsl-color-disabled-surface);
2001
+ color: var(--jsl-color-disabled-text);
1386
2002
  }
1387
2003
 
1388
- .expander-comp .header:hover {
1389
- color: #000;
1390
- background: #6bb1fc;
2004
+ .jsl-input[aria-invalid="true"] {
2005
+ border-color: var(--jsl-color-danger);
1391
2006
  }
1392
2007
 
1393
- .expander-comp .expand-collapse-icon {
1394
- color: #fff;
1395
- opacity: .8;
1396
- padding: 0 .2rem;
1397
- top: .2rem;
2008
+ textarea.jsl-input {
2009
+ resize: vertical;
2010
+ height: auto;
2011
+ min-height: 6rem;
1398
2012
  }
1399
2013
 
1400
- .lds-dual-ring {
1401
- width: 1em;
1402
- height: 1em;
1403
- display: inline-block;
2014
+ .jsl-input[type="color"] {
2015
+ cursor: pointer;
2016
+ width: 4rem;
2017
+ padding: .25rem;
1404
2018
  }
1405
2019
 
1406
- .lds-dual-ring:after {
1407
- content: " ";
1408
- border: .08em solid #444;
1409
- border-color: #444 #0000;
1410
- border-radius: 50%;
1411
- width: .75em;
1412
- height: .75em;
1413
- margin: .2em;
1414
- animation: 1.2s linear infinite lds-dual-ring;
1415
- display: block;
2020
+ .jsl-input[type="number"], .jsl-input.jsl-number {
2021
+ font-variant-numeric: tabular-nums;
1416
2022
  }
1417
2023
 
1418
- @keyframes lds-dual-ring {
1419
- 0% {
1420
- transform: rotate(0);
2024
+ @media (prefers-reduced-motion: reduce) {
2025
+ .jsl-input, .jsl-date-input {
2026
+ transition: none;
1421
2027
  }
2028
+ }
1422
2029
 
1423
- 100% {
1424
- transform: rotate(360deg);
1425
- }
2030
+ .jsl-date-input {
2031
+ font-variant-numeric: tabular-nums;
2032
+ width: 11rem;
1426
2033
  }
1427
2034
 
1428
- .form-field {
1429
- margin-bottom: 16px;
1430
- display: block;
2035
+ .date-comp {
2036
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='none' stroke='%2371717a' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='4' width='13' height='12' rx='2'/%3E%3Cpath d='M6 2v4M12 2v4M3 8h12'/%3E%3C/svg%3E");
2037
+ background-position: right .7rem center;
2038
+ background-repeat: no-repeat;
2039
+ padding-right: 2.4rem;
1431
2040
  }
1432
2041
 
1433
- .form-field .failed__valid .form-field__input {
1434
- border-color: #c00 !important;
2042
+ .jsl-date-input:disabled {
2043
+ opacity: .75;
1435
2044
  }
1436
2045
 
1437
- .form-field .failed__valid .form-field__label {
1438
- color: #a00 !important;
2046
+ .jsl-date-input[aria-invalid="true"] {
2047
+ border-style: dashed;
2048
+ border-width: 2px;
1439
2049
  }
1440
2050
 
1441
- .form-field--is-active .form-field__control:after {
1442
- border-bottom: 2px solid #3b99ff;
1443
- transform: scaleX(150);
2051
+ .time-comp {
2052
+ text-align: center;
2053
+ width: 6rem;
1444
2054
  }
1445
2055
 
1446
- .form-field--is-active .form-field__label {
1447
- color: #3b99ff;
1448
- font-size: .7em;
1449
- transform: translateY(-14px);
2056
+ .time-comp-seconds {
2057
+ width: 7.5rem;
1450
2058
  }
1451
2059
 
1452
- .form-field--is-filled .form-field__label {
1453
- font-size: .7em;
1454
- transform: translateY(-14px);
2060
+ .date-time-comp {
2061
+ flex-wrap: wrap;
2062
+ align-items: center;
2063
+ gap: .5rem;
2064
+ max-width: 100%;
2065
+ display: inline-flex;
1455
2066
  }
1456
2067
 
1457
- .form-field__label {
1458
- color: #606060;
1459
- width: 100%;
1460
- margin: 0;
1461
- padding: 1rem .5rem 0;
1462
- font-weight: normal;
1463
- transition: all .4s;
1464
- display: block;
1465
- position: absolute;
1466
- top: 0;
1467
- left: 0;
2068
+ .date-time-comp .date-comp {
2069
+ flex: 10rem;
1468
2070
  }
1469
2071
 
1470
- .form-field__control {
1471
- background: #f6f6f6;
1472
- border-radius: .3rem .3rem 0 0;
1473
- width: 100%;
1474
- position: relative;
1475
- overflow: hidden;
2072
+ .date-time-comp .time-comp {
2073
+ flex: 0 0 6rem;
1476
2074
  }
1477
2075
 
1478
- .form-field__control:after {
1479
- content: "";
1480
- border-bottom: 2px solid #3b99ff;
1481
- width: 1%;
1482
- margin: 0 auto;
1483
- transition: all .4s;
1484
- display: block;
1485
- position: absolute;
1486
- bottom: 0;
1487
- left: 0;
1488
- right: 0;
1489
- transform: scaleX(0);
2076
+ .date-time-comp .time-comp-seconds {
2077
+ flex-basis: 7.5rem;
1490
2078
  }
1491
2079
 
1492
- .form-field__input, .form-field__textarea {
2080
+ .expander-comp {
1493
2081
  box-sizing: border-box;
1494
- appearance: none;
1495
- color: #333;
1496
- background: none;
1497
- border: none;
1498
- border-bottom: 1px solid #999;
1499
- outline: 0;
1500
- width: 100%;
1501
- margin-top: 1.3rem;
1502
- padding: 0 .3rem .2rem;
1503
- display: block;
2082
+ border: 1px solid var(--jsl-color-border-subtle);
2083
+ background: var(--jsl-color-surface);
2084
+ max-width: 100%;
2085
+ color: var(--jsl-color-text);
2086
+ font: inherit;
2087
+ border-radius: .625rem;
2088
+ font-size: .875rem;
2089
+ line-height: 1.5;
2090
+ }
2091
+
2092
+ .expander-comp > .header {
2093
+ border-radius: inherit;
2094
+ align-items: center;
2095
+ gap: .5rem;
2096
+ min-height: 3rem;
2097
+ padding: .5rem .875rem .5rem .625rem;
2098
+ display: flex;
1504
2099
  }
1505
2100
 
1506
- .treeview-comp .tv-ul {
1507
- padding-left: 1em;
1508
- list-style: none;
2101
+ .expander-comp.toggle-on-header > .header {
2102
+ cursor: pointer;
1509
2103
  }
1510
2104
 
1511
- .treeview-comp .tv-input, .treeview-comp .tv-input:checked ~ ul {
1512
- display: none;
2105
+ .expander-comp.toggle-on-header:not(.disabled) > .header:hover {
2106
+ background: var(--jsl-color-surface-hover);
1513
2107
  }
1514
2108
 
1515
- .treeview-comp .tv-input ~ label {
2109
+ .expander-comp > .header > .toggler {
2110
+ appearance: none;
2111
+ min-width: 2rem;
2112
+ min-height: 2rem;
2113
+ color: var(--jsl-color-text-secondary);
2114
+ font: inherit;
1516
2115
  cursor: pointer;
1517
- position: relative;
2116
+ background: none;
2117
+ border: 0;
2118
+ border-radius: .375rem;
2119
+ flex: none;
2120
+ place-items: center;
2121
+ margin: 0;
2122
+ padding: .25rem;
2123
+ line-height: 1;
2124
+ display: inline-grid;
1518
2125
  }
1519
2126
 
1520
- .treeview-comp .tv-input ~ label:before {
1521
- content: "";
1522
- border: 4px solid #32323280;
1523
- border-color: #0000 #32323280 #32323280 #0000;
1524
- width: 0;
1525
- height: 0;
1526
- margin-top: .4em;
1527
- margin-left: -1em;
1528
- position: absolute;
2127
+ .expander-comp > .header > .toggler:hover:not(:disabled) {
2128
+ background: var(--jsl-color-surface-selected);
1529
2129
  }
1530
2130
 
1531
- .treeview-comp .tv-input:checked ~ label:before {
1532
- border-width: 5px;
1533
- border-color: #0000 #0000 #0000 #32323280;
1534
- margin-left: -.8em;
2131
+ .expander-comp > .header > .toggler:focus-visible {
2132
+ outline: 2px solid var(--jsl-color-focus);
2133
+ outline-offset: 2px;
1535
2134
  }
1536
2135
 
1537
- .stabcomponent .tab-header-row {
1538
- display: flex;
2136
+ .expander-comp > .header > .content {
2137
+ overflow-wrap: anywhere;
2138
+ flex: 1;
2139
+ min-width: 0;
2140
+ font-weight: 500;
1539
2141
  }
1540
2142
 
1541
- .stabcomponent .tab-header-row .tab-item {
1542
- box-sizing: border-box;
1543
- vertical-align: middle;
1544
- vertical-align: -webkit-baseline-middle;
1545
- vertical-align: -moz-middle-with-baseline;
1546
- cursor: pointer;
1547
- border: 1px solid silver;
1548
- border-bottom-color: #ddd;
1549
- border-radius: 4px 4px 0 0;
1550
- margin-right: .1rem;
1551
- padding: .5rem;
1552
- text-decoration: none;
1553
- display: inline-block;
2143
+ .expander-icon, .expand-collapse-icon {
2144
+ place-items: center;
2145
+ display: inline-grid;
1554
2146
  }
1555
2147
 
1556
- .stabcomponent .tab-header-row .tab-item:hover {
1557
- color: #000;
1558
- background: #c9e2f9;
2148
+ .expand-collapse-icon {
2149
+ width: 1rem;
2150
+ height: 1rem;
1559
2151
  }
1560
2152
 
1561
- .stabcomponent .tab-header-row .tab-item .close-button {
1562
- color: #000;
1563
- cursor: pointer;
1564
- float: right;
1565
- text-align: center;
1566
- background: linear-gradient(#d9d8d6, #d9d8d6);
1567
- border: 1px solid #88898d;
1568
- border-radius: .2rem;
1569
- min-width: 1rem;
1570
- margin-left: .5rem;
1571
- margin-right: -.5rem;
1572
- padding: .3rem;
2153
+ .expander-chevron {
2154
+ border: 1.5px solid;
2155
+ border-width: 0 1.5px 1.5px 0;
2156
+ width: 37.5%;
2157
+ height: 37.5%;
2158
+ display: block;
2159
+ transform: rotate(-45deg);
1573
2160
  }
1574
2161
 
1575
- .stabcomponent .tab-header-row .tab-item .close-button:hover {
1576
- color: #000;
1577
- background: linear-gradient(#ff634b, #ff3313);
1578
- border-color: #000;
2162
+ .expand-collapse-icon.is-expanded .expander-chevron {
2163
+ transform: rotate(45deg) translate(-1px, -1px);
1579
2164
  }
1580
2165
 
1581
- .stabcomponent .tab-header-row .active {
1582
- cursor: default;
1583
- color: #fff;
1584
- background: #3b99ff;
1585
- border: 1px solid #747474;
1586
- border-bottom-color: #0000;
1587
- font-weight: bold;
2166
+ .expander-comp > .body {
2167
+ border-top: 1px solid var(--jsl-color-border-subtle);
2168
+ overflow-wrap: anywhere;
2169
+ padding: 1rem 1.125rem;
1588
2170
  }
1589
2171
 
1590
- .stabcomponent .tab-header-row .disabled {
1591
- cursor: default;
1592
- color: #88898d;
1593
- background: #d9d8d6;
2172
+ .expander-comp > .body[hidden] {
2173
+ display: none;
1594
2174
  }
1595
2175
 
1596
- .stabcomponent .tab-header-row .disabled:hover {
1597
- color: #88898d;
1598
- background: #d9d8d6;
2176
+ .expander-comp.expanded > .body {
2177
+ animation: .14s ease-out jsl-expander-appear;
1599
2178
  }
1600
2179
 
1601
- .stabcomponent .tab-content {
1602
- border: 1px solid silver;
1603
- max-height: calc(100vh - 9.6rem);
1604
- overflow: auto;
2180
+ .expander-comp.disabled > .header {
2181
+ color: var(--jsl-color-disabled-text);
2182
+ cursor: default;
2183
+ background: var(--jsl-color-disabled-surface);
1605
2184
  }
1606
2185
 
1607
- .stabcomponent .tab-hidden {
1608
- display: none;
2186
+ .expander-comp > .header > .toggler:disabled {
2187
+ color: var(--jsl-color-disabled-text);
2188
+ cursor: not-allowed;
1609
2189
  }
1610
2190
 
1611
- @keyframes checkbox-comp-hover-color {
2191
+ @keyframes jsl-expander-appear {
1612
2192
  from {
1613
- border-color: silver;
2193
+ opacity: 0;
1614
2194
  }
1615
2195
 
1616
2196
  to {
1617
- border-color: #3b99ff;
2197
+ opacity: 1;
1618
2198
  }
1619
2199
  }
1620
2200
 
1621
- .checkbox-comp {
1622
- display: none;
1623
- position: absolute;
1624
- }
1625
-
1626
- .checkbox-comp[disabled] {
1627
- cursor: not-allowed;
2201
+ @media (prefers-reduced-motion: reduce) {
2202
+ .expander-comp.expanded > .body {
2203
+ animation: none;
2204
+ }
1628
2205
  }
1629
2206
 
1630
- .checkbox-comp + label {
1631
- cursor: pointer;
2207
+ .jsl-loading {
2208
+ max-width: 100%;
2209
+ color: var(--jsl-color-text-secondary);
2210
+ font: inherit;
1632
2211
  vertical-align: middle;
1633
- padding-left: 1.5em;
1634
- position: relative;
2212
+ justify-content: center;
2213
+ align-items: center;
2214
+ gap: .625rem;
2215
+ display: inline-flex;
1635
2216
  }
1636
2217
 
1637
- .checkbox-comp + label:hover:before {
1638
- animation-name: checkbox-comp-hover-color;
1639
- animation-duration: .4s;
1640
- animation-fill-mode: both;
2218
+ .lds-dual-ring {
2219
+ width: var(--jsl-loading-size, 1em);
2220
+ height: var(--jsl-loading-size, 1em);
2221
+ flex-shrink: 0;
2222
+ max-width: 100%;
2223
+ display: inline-block;
2224
+ position: relative;
1641
2225
  }
1642
2226
 
1643
- .checkbox-comp + label:before {
2227
+ .lds-dual-ring:after {
1644
2228
  content: "";
1645
- border: 1px solid silver;
1646
- width: 1em;
1647
- height: 1em;
1648
- display: inline-block;
2229
+ box-sizing: border-box;
2230
+ border: max(2px, calc(var(--jsl-loading-size, 1em) * .08)) solid var(--jsl-color-border-subtle);
2231
+ border-top-color: var(--jsl-loading-color, var(--jsl-color-accent));
2232
+ border-right-color: var(--jsl-loading-color, var(--jsl-color-accent));
2233
+ border-radius: 50%;
2234
+ animation: .85s linear infinite jsl-loading-spin;
2235
+ position: absolute;
2236
+ inset: 0;
2237
+ }
2238
+
2239
+ .jsl-loading-label {
2240
+ font-size: .8125rem;
2241
+ line-height: 1.5;
2242
+ }
2243
+
2244
+ .jsl-loading-label-hidden {
2245
+ clip-path: inset(50%);
2246
+ white-space: nowrap;
2247
+ border: 0;
2248
+ width: 1px;
2249
+ height: 1px;
2250
+ margin: -1px;
2251
+ padding: 0;
2252
+ position: absolute;
2253
+ overflow: hidden;
2254
+ }
2255
+
2256
+ @keyframes jsl-loading-spin {
2257
+ to {
2258
+ transform: rotate(360deg);
2259
+ }
2260
+ }
2261
+
2262
+ @media (prefers-reduced-motion: reduce) {
2263
+ .lds-dual-ring:after {
2264
+ animation: none;
2265
+ }
2266
+ }
2267
+
2268
+ .form-field {
2269
+ min-width: 0;
2270
+ max-width: 100%;
2271
+ color: var(--jsl-color-text);
2272
+ font: inherit;
2273
+ flex-direction: column;
2274
+ gap: .375rem;
2275
+ margin: 0 0 1rem;
2276
+ font-size: .875rem;
2277
+ display: flex;
2278
+ position: relative;
2279
+ }
2280
+
2281
+ .form-field__label {
2282
+ color: var(--jsl-color-text-secondary);
2283
+ font-size: .75rem;
2284
+ font-weight: 500;
2285
+ line-height: 1.5;
2286
+ display: block;
2287
+ }
2288
+
2289
+ .form-field__required {
2290
+ color: var(--jsl-color-text-muted);
2291
+ }
2292
+
2293
+ .form-field__required[hidden] {
2294
+ display: none;
2295
+ }
2296
+
2297
+ .form-field__control {
2298
+ border: 0;
2299
+ min-width: 0;
2300
+ margin: 0;
2301
+ padding: 0;
2302
+ display: block;
2303
+ }
2304
+
2305
+ .form-field__control > .jsl-input, .form-field__control > .jsl-date-input, .form-field__control > .select-comp, .form-field__control > .date-time-comp {
2306
+ width: 100%;
2307
+ }
2308
+
2309
+ .form-field__description, .form-field__error {
2310
+ color: var(--jsl-color-text-muted);
2311
+ font-size: .75rem;
2312
+ line-height: 1.5;
2313
+ }
2314
+
2315
+ .form-field__error {
2316
+ color: var(--jsl-color-danger);
2317
+ }
2318
+
2319
+ .form-field__description[hidden], .form-field__error[hidden] {
2320
+ display: none;
2321
+ }
2322
+
2323
+ .form-field--invalid > .form-field__label {
2324
+ color: var(--jsl-color-danger);
2325
+ }
2326
+
2327
+ .form-field--invalid > .form-field__control .sel-expander {
2328
+ border-color: var(--jsl-color-danger);
2329
+ }
2330
+
2331
+ .form-field--floating {
2332
+ padding-top: .5rem;
2333
+ }
2334
+
2335
+ .form-field--floating > .form-field__label {
2336
+ z-index: 1;
2337
+ background: var(--jsl-color-surface);
2338
+ max-width: calc(100% - 1.25rem);
2339
+ padding: 0 .25rem;
1649
2340
  position: absolute;
1650
2341
  top: 0;
1651
- left: 0;
2342
+ left: .625rem;
2343
+ }
2344
+
2345
+ .form-field:has(.form-field__control:disabled) > .form-field__label {
2346
+ color: var(--jsl-color-disabled-text);
2347
+ }
2348
+
2349
+ .treeview-comp {
2350
+ color: var(--jsl-color-text);
2351
+ font: inherit;
2352
+ font-size: .875rem;
2353
+ line-height: 1.5;
2354
+ }
2355
+
2356
+ .treeview-comp .tv-ul {
2357
+ margin: 0;
2358
+ padding: 0;
2359
+ list-style: none;
2360
+ }
2361
+
2362
+ .treeview-comp .tv-ul .tv-ul {
2363
+ border-left: 1px solid var(--jsl-color-border-subtle);
2364
+ margin-left: 1rem;
2365
+ padding-left: .5rem;
2366
+ }
2367
+
2368
+ .treeview-comp [hidden] {
2369
+ display: none;
2370
+ }
2371
+
2372
+ .tv-row {
2373
+ cursor: pointer;
2374
+ overflow-wrap: anywhere;
2375
+ border-radius: .375rem;
2376
+ align-items: center;
2377
+ gap: .625rem;
2378
+ padding: .375rem .625rem;
2379
+ display: flex;
2380
+ }
2381
+
2382
+ .tv-row:hover {
2383
+ background: var(--jsl-color-surface-hover);
2384
+ }
2385
+
2386
+ .tv-row.is-selected {
2387
+ background: var(--jsl-color-surface-selected);
2388
+ }
2389
+
2390
+ .tv-row:focus-visible {
2391
+ outline: 2px solid var(--jsl-color-focus);
2392
+ outline-offset: -2px;
2393
+ }
2394
+
2395
+ .tv-chevron {
2396
+ border-right: 1.5px solid var(--jsl-color-text-muted);
2397
+ border-bottom: 1.5px solid var(--jsl-color-text-muted);
2398
+ flex: 0 0 .375rem;
2399
+ width: .375rem;
2400
+ height: .375rem;
2401
+ margin-right: .25rem;
2402
+ transform: rotate(-45deg);
2403
+ }
2404
+
2405
+ .tv-row[aria-expanded="true"] > .tv-chevron {
2406
+ transform: translateY(-.125rem) rotate(45deg);
2407
+ }
2408
+
2409
+ .tv-leaf {
2410
+ border-color: #0000;
2411
+ }
2412
+
2413
+ .stabcomponent {
2414
+ min-width: 0;
2415
+ max-width: 100%;
2416
+ color: var(--jsl-color-text);
1652
2417
  }
1653
2418
 
1654
- .checkbox-comp + label:after {
2419
+ .stabcomponent > .tab-header-row {
2420
+ overscroll-behavior-inline: contain;
2421
+ scrollbar-width: thin;
2422
+ border-bottom: 1px solid var(--jsl-tabs-border, var(--jsl-color-border-subtle));
2423
+ align-items: stretch;
2424
+ gap: .25rem;
2425
+ min-width: 0;
2426
+ display: flex;
2427
+ overflow-x: auto;
2428
+ }
2429
+
2430
+ .stabcomponent > .tab-header-row > .tab-item {
2431
+ color: var(--jsl-tabs-text, var(--jsl-color-text-secondary));
2432
+ background: none;
2433
+ border: 0;
2434
+ border-bottom: 2px solid #0000;
2435
+ border-radius: .375rem .375rem 0 0;
2436
+ flex: none;
2437
+ align-items: center;
2438
+ gap: .125rem;
2439
+ margin: 0;
2440
+ padding: 0;
2441
+ display: flex;
2442
+ position: relative;
2443
+ }
2444
+
2445
+ .stabcomponent > .tab-header-row > .tab-item:hover {
2446
+ background: var(--jsl-tabs-hover-surface, var(--jsl-color-surface-hover));
2447
+ color: var(--jsl-color-text);
2448
+ }
2449
+
2450
+ .stabcomponent > .tab-header-row > .tab-item.active {
2451
+ border-bottom-color: var(--jsl-tabs-accent, var(--jsl-color-accent));
2452
+ color: var(--jsl-tabs-active-text, var(--jsl-color-text));
2453
+ }
2454
+
2455
+ .stabcomponent > .tab-header-row > .tab-item.disabled {
2456
+ color: var(--jsl-color-disabled-text);
2457
+ cursor: not-allowed;
2458
+ background: none;
2459
+ border-bottom-color: #0000;
2460
+ }
2461
+
2462
+ .stabcomponent .tab-trigger {
2463
+ box-sizing: border-box;
2464
+ min-width: 0;
2465
+ min-height: 2.5rem;
2466
+ color: inherit;
2467
+ font: inherit;
2468
+ text-align: start;
2469
+ cursor: pointer;
2470
+ background: none;
2471
+ border: 0;
2472
+ border-radius: .375rem;
2473
+ justify-content: center;
2474
+ align-items: center;
2475
+ gap: .5rem;
2476
+ margin: 0;
2477
+ padding: .625rem .875rem;
2478
+ font-size: .875rem;
2479
+ font-weight: 500;
2480
+ line-height: 1.5;
2481
+ text-decoration: none;
2482
+ display: inline-flex;
2483
+ }
2484
+
2485
+ .stabcomponent .tab-trigger:disabled {
2486
+ cursor: not-allowed;
2487
+ }
2488
+
2489
+ .stabcomponent .tab-trigger:focus-visible, .stabcomponent > .tab-header-row > .tab-item > .close-button:focus-visible, .stabcomponent > .tab-header-row:focus-visible {
2490
+ outline: 2px solid var(--jsl-color-focus);
2491
+ outline-offset: -3px;
2492
+ }
2493
+
2494
+ .stabcomponent .tab-label {
2495
+ white-space: nowrap;
2496
+ align-items: center;
2497
+ gap: .5rem;
2498
+ display: inline-flex;
2499
+ }
2500
+
2501
+ .stabcomponent > .tab-header-row > .tab-item > .close-button {
2502
+ box-sizing: border-box;
2503
+ width: 1.5rem;
2504
+ height: 1.5rem;
2505
+ color: var(--jsl-color-text-muted);
2506
+ cursor: pointer;
2507
+ background: none;
2508
+ border: 0;
2509
+ border-radius: .25rem;
2510
+ flex: none;
2511
+ justify-content: center;
2512
+ align-items: center;
2513
+ margin: 0 .5rem 0 -.375rem;
2514
+ padding: 0;
2515
+ display: inline-flex;
2516
+ position: relative;
2517
+ }
2518
+
2519
+ .stabcomponent > .tab-header-row > .tab-item > .close-button:before, .stabcomponent > .tab-header-row > .tab-item > .close-button:after {
1655
2520
  content: "";
2521
+ background: currentColor;
2522
+ border-radius: 1px;
2523
+ width: .625rem;
2524
+ height: 1.5px;
2525
+ position: absolute;
2526
+ transform: rotate(45deg);
2527
+ }
2528
+
2529
+ .stabcomponent > .tab-header-row > .tab-item > .close-button:after {
2530
+ transform: rotate(-45deg);
2531
+ }
2532
+
2533
+ .stabcomponent > .tab-header-row > .tab-item > .close-button:hover {
2534
+ background: var(--jsl-color-surface-selected);
2535
+ color: var(--jsl-color-text);
2536
+ }
2537
+
2538
+ .stabcomponent > .tab-header-row > .tab-item > .close-button:disabled {
2539
+ color: var(--jsl-color-disabled-text);
2540
+ cursor: not-allowed;
2541
+ background: none;
2542
+ }
2543
+
2544
+ .stabcomponent > .tab-panels {
2545
+ background: var(--jsl-tabs-surface, var(--jsl-color-surface));
2546
+ min-width: 0;
2547
+ }
2548
+
2549
+ .stabcomponent > .tab-panels > .tab-content {
2550
+ box-sizing: border-box;
2551
+ overflow-wrap: anywhere;
2552
+ overscroll-behavior: contain;
2553
+ min-width: 0;
2554
+ padding: 1rem;
2555
+ line-height: 1.6;
2556
+ overflow: auto;
2557
+ }
2558
+
2559
+ .stabcomponent > .tab-panels > .tab-content:focus-visible {
2560
+ outline: 2px solid var(--jsl-color-focus);
2561
+ outline-offset: -2px;
2562
+ }
2563
+
2564
+ .stabcomponent > .tab-panels > .tab-content.tab-hidden, .stabcomponent > .tab-panels > .tab-content[hidden] {
1656
2565
  display: none;
2566
+ }
2567
+
2568
+ .jsl-checkbox {
2569
+ max-width: 100%;
2570
+ color: var(--jsl-color-text);
2571
+ font: inherit;
2572
+ vertical-align: middle;
2573
+ align-items: flex-start;
2574
+ gap: .625rem;
2575
+ font-size: .875rem;
2576
+ line-height: 1.5;
2577
+ display: inline-flex;
2578
+ }
2579
+
2580
+ .checkbox-comp {
2581
+ appearance: none;
2582
+ box-sizing: border-box;
2583
+ border: 1px solid var(--jsl-color-border);
2584
+ background: var(--jsl-color-surface);
2585
+ width: 1.125rem;
2586
+ height: 1.125rem;
2587
+ color: var(--jsl-color-on-accent);
2588
+ font: inherit;
2589
+ cursor: pointer;
2590
+ border-radius: .25rem;
2591
+ flex: 0 0 1.125rem;
2592
+ place-content: center;
2593
+ margin: calc(.75em - .5625rem) 0 0;
2594
+ transition: background-color .12s, border-color .12s;
2595
+ display: inline-grid;
2596
+ position: relative;
2597
+ }
2598
+
2599
+ .checkbox-comp:after {
2600
+ content: "";
2601
+ opacity: 0;
2602
+ border: 1.5px solid;
2603
+ border-width: 0 1.5px 1.5px 0;
2604
+ width: 4px;
2605
+ height: 8px;
2606
+ margin-top: -2px;
2607
+ transform: rotate(45deg);
2608
+ }
2609
+
2610
+ .checkbox-comp:checked, .checkbox-comp:indeterminate {
2611
+ border-color: var(--jsl-color-accent);
2612
+ background: var(--jsl-color-accent);
2613
+ }
2614
+
2615
+ .checkbox-comp:checked:after, .checkbox-comp:indeterminate:after {
2616
+ opacity: 1;
2617
+ }
2618
+
2619
+ .checkbox-comp:indeterminate:after {
2620
+ border-width: 0 0 2px;
2621
+ width: 8px;
2622
+ height: 0;
2623
+ margin-top: 0;
2624
+ transform: none;
2625
+ }
2626
+
2627
+ .checkbox-comp:focus-visible {
2628
+ outline: 2px solid var(--jsl-color-focus);
2629
+ outline-offset: 3px;
2630
+ }
2631
+
2632
+ .jsl-checkbox:has(.checkbox-comp:not(:disabled)):hover .checkbox-comp {
2633
+ border-color: var(--jsl-color-text-muted);
2634
+ }
2635
+
2636
+ .jsl-checkbox:has(.checkbox-comp:checked:not(:disabled)):hover .checkbox-comp, .jsl-checkbox:has(.checkbox-comp:indeterminate:not(:disabled)):hover .checkbox-comp {
2637
+ border-color: var(--jsl-color-accent-hover);
2638
+ background: var(--jsl-color-accent-hover);
2639
+ }
2640
+
2641
+ .checkbox-copy {
2642
+ min-width: 0;
2643
+ }
2644
+
2645
+ .checkbox-label {
2646
+ cursor: pointer;
2647
+ overflow-wrap: anywhere;
2648
+ display: block;
2649
+ }
2650
+
2651
+ .checkbox-description {
2652
+ color: var(--jsl-color-text-muted);
2653
+ margin-top: .1875rem;
2654
+ font-size: .75rem;
2655
+ line-height: 1.5;
2656
+ display: block;
2657
+ }
2658
+
2659
+ .checkbox-description[hidden] {
2660
+ display: none;
2661
+ }
2662
+
2663
+ .checkbox-comp:disabled {
2664
+ background: var(--jsl-color-disabled-surface);
2665
+ border-color: var(--jsl-color-border-subtle);
2666
+ cursor: not-allowed;
2667
+ }
2668
+
2669
+ .checkbox-comp:disabled:checked, .checkbox-comp:disabled:indeterminate {
2670
+ background: var(--jsl-color-disabled-text);
2671
+ border-color: var(--jsl-color-disabled-text);
2672
+ color: var(--jsl-color-disabled-surface);
2673
+ opacity: .65;
2674
+ }
2675
+
2676
+ .jsl-checkbox.disabled .checkbox-label {
2677
+ color: var(--jsl-color-disabled-text);
2678
+ cursor: not-allowed;
2679
+ }
2680
+
2681
+ @media (prefers-reduced-motion: reduce) {
2682
+ .checkbox-comp {
2683
+ transition: none;
2684
+ }
2685
+ }
2686
+
2687
+ @media (forced-colors: active) {
2688
+ .checkbox-comp {
2689
+ appearance: auto;
2690
+ }
2691
+
2692
+ .checkbox-comp:after {
2693
+ display: none;
2694
+ }
2695
+ }
2696
+
2697
+ .stackpanel-comp {
2698
+ box-sizing: border-box;
2699
+ min-width: 0;
2700
+ min-height: 0;
2701
+ display: flex;
2702
+ }
2703
+
2704
+ .stackpanel-comp.hstackpanel {
2705
+ flex-direction: row;
2706
+ width: 100%;
2707
+ }
2708
+
2709
+ .stackpanel-comp.vstackpanel {
2710
+ flex-direction: column;
2711
+ }
2712
+
2713
+ .stackpanel-comp.wrap {
2714
+ flex-wrap: wrap;
2715
+ }
2716
+
2717
+ .stackpanel-comp > div:not(.split-comp) {
2718
+ box-sizing: border-box;
2719
+ min-width: 0;
2720
+ min-height: 0;
2721
+ }
2722
+
2723
+ @media (width <= 70em) {
2724
+ .stackpanel-comp.hstackpanel.responsive {
2725
+ flex-direction: column;
2726
+ }
2727
+
2728
+ .stackpanel-comp.hstackpanel.responsive > div:not(.split-comp) {
2729
+ flex: none !important;
2730
+ width: auto !important;
2731
+ }
2732
+
2733
+ .stackpanel-comp.hstackpanel.responsive > .split-comp {
2734
+ display: none;
2735
+ }
2736
+ }
2737
+
2738
+ .stackpanel-comp > .split-comp {
2739
+ background: var(--jsl-color-surface-subtle);
2740
+ touch-action: none;
2741
+ -webkit-user-select: none;
2742
+ user-select: none;
2743
+ outline-offset: -2px;
2744
+ flex: 0 0 12px;
2745
+ align-self: stretch;
2746
+ position: relative;
2747
+ }
2748
+
2749
+ .split-comp:before {
2750
+ content: "";
2751
+ background: var(--jsl-color-border);
2752
+ border-radius: 999px;
2753
+ position: absolute;
2754
+ }
2755
+
2756
+ .hstackpanel > .split-comp {
2757
+ cursor: col-resize;
2758
+ }
2759
+
2760
+ .hstackpanel > .split-comp:before {
2761
+ width: 3px;
2762
+ height: 32px;
2763
+ max-height: 80%;
2764
+ top: 50%;
2765
+ left: 50%;
2766
+ transform: translate(-50%, -50%);
2767
+ }
2768
+
2769
+ .vstackpanel > .split-comp {
2770
+ cursor: row-resize;
2771
+ }
2772
+
2773
+ .vstackpanel > .split-comp:before {
2774
+ width: 32px;
2775
+ max-width: 80%;
2776
+ height: 3px;
2777
+ top: 50%;
2778
+ left: 50%;
2779
+ transform: translate(-50%, -50%);
2780
+ }
2781
+
2782
+ .split-comp:hover:before, .split-comp:focus-visible:before {
2783
+ background: var(--jsl-color-accent);
2784
+ }
2785
+
2786
+ .split-comp:focus-visible {
2787
+ outline: 2px solid var(--jsl-color-focus);
2788
+ }
2789
+
2790
+ .date-range-comp {
2791
+ width: 25rem;
2792
+ max-width: 100%;
2793
+ color: var(--jsl-color-text);
2794
+ display: inline-block;
2795
+ }
2796
+
2797
+ .date-range-fields {
2798
+ grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
2799
+ align-items: end;
2800
+ gap: .625rem;
2801
+ display: grid;
2802
+ }
2803
+
2804
+ .date-range-field {
2805
+ min-width: 0;
2806
+ }
2807
+
2808
+ .date-range-field label {
2809
+ color: var(--jsl-color-text-secondary);
2810
+ font: inherit;
2811
+ margin-bottom: .375rem;
2812
+ font-size: .75rem;
2813
+ font-weight: 500;
2814
+ display: block;
2815
+ }
2816
+
2817
+ .date-range-field input {
2818
+ width: 100%;
2819
+ }
2820
+
2821
+ .date-range-separator {
2822
+ color: var(--jsl-color-text-muted);
2823
+ line-height: 2.5rem;
2824
+ }
2825
+
2826
+ .date-range-track {
2827
+ padding: 1.5rem .625rem .875rem;
2828
+ }
2829
+
2830
+ .date-range-limits {
2831
+ color: var(--jsl-color-text-muted);
2832
+ font-variant-numeric: tabular-nums;
2833
+ justify-content: space-between;
2834
+ gap: .5rem;
2835
+ font-size: .6875rem;
2836
+ display: flex;
2837
+ }
2838
+
2839
+ @media (width <= 380px) {
2840
+ .date-range-fields {
2841
+ gap: .375rem;
2842
+ }
2843
+
2844
+ .date-range-field input {
2845
+ background-position: right .3rem center;
2846
+ background-size: 15px;
2847
+ padding-left: .5rem;
2848
+ padding-right: 1.75rem;
2849
+ font-size: .75rem;
2850
+ }
2851
+ }
2852
+
2853
+ .noUi-target, .noUi-target * {
2854
+ -webkit-touch-callout: none;
2855
+ -webkit-tap-highlight-color: #0000;
2856
+ -webkit-user-select: none;
2857
+ user-select: none;
2858
+ -ms-touch-action: none;
2859
+ touch-action: none;
2860
+ box-sizing: border-box;
2861
+ }
2862
+
2863
+ .noUi-target {
2864
+ position: relative;
2865
+ }
2866
+
2867
+ .noUi-base, .noUi-connects {
2868
+ z-index: 1;
2869
+ width: 100%;
2870
+ height: 100%;
2871
+ position: relative;
2872
+ }
2873
+
2874
+ .noUi-connects {
2875
+ z-index: 0;
2876
+ overflow: hidden;
2877
+ }
2878
+
2879
+ .noUi-connect, .noUi-origin {
2880
+ will-change: transform;
2881
+ z-index: 1;
2882
+ transform-origin: 0 0;
2883
+ -webkit-transform-style: preserve-3d;
2884
+ transform-style: flat;
1657
2885
  position: absolute;
2886
+ top: 0;
2887
+ right: 0;
2888
+ }
2889
+
2890
+ .noUi-connect {
2891
+ width: 100%;
2892
+ height: 100%;
2893
+ }
2894
+
2895
+ .noUi-origin {
2896
+ width: 10%;
2897
+ height: 10%;
2898
+ }
2899
+
2900
+ .noUi-txt-dir-rtl.noUi-horizontal .noUi-origin {
2901
+ left: 0;
2902
+ right: auto;
2903
+ }
2904
+
2905
+ .noUi-vertical .noUi-origin {
2906
+ width: 0;
2907
+ }
2908
+
2909
+ .noUi-horizontal .noUi-origin {
2910
+ height: 0;
2911
+ }
2912
+
2913
+ .noUi-handle {
2914
+ backface-visibility: hidden;
2915
+ position: absolute;
2916
+ }
2917
+
2918
+ .noUi-touch-area {
2919
+ width: 100%;
2920
+ height: 100%;
2921
+ }
2922
+
2923
+ .noUi-state-tap .noUi-connect, .noUi-state-tap .noUi-origin {
2924
+ transition: transform .3s;
2925
+ }
2926
+
2927
+ .noUi-state-drag * {
2928
+ cursor: inherit !important;
2929
+ }
2930
+
2931
+ .noUi-horizontal {
2932
+ height: 6px;
2933
+ }
2934
+
2935
+ .noUi-horizontal .noUi-handle {
2936
+ width: 18px;
2937
+ height: 18px;
2938
+ top: -6px;
2939
+ right: -9px;
2940
+ }
2941
+
2942
+ .noUi-vertical {
2943
+ width: 6px;
2944
+ }
2945
+
2946
+ .noUi-vertical .noUi-handle {
2947
+ width: 18px;
2948
+ height: 18px;
2949
+ top: -9px;
2950
+ right: -6px;
2951
+ }
2952
+
2953
+ .noUi-txt-dir-rtl.noUi-horizontal .noUi-handle {
2954
+ left: -9px;
2955
+ right: auto;
2956
+ }
2957
+
2958
+ .noUi-target {
2959
+ background: var(--jsl-slider-track, var(--jsl-color-border-subtle));
2960
+ box-shadow: none;
2961
+ border: 0;
2962
+ border-radius: 999px;
2963
+ }
2964
+
2965
+ .noUi-connects {
2966
+ border-radius: 3px;
2967
+ }
2968
+
2969
+ .noUi-connect {
2970
+ background: var(--jsl-slider-connect, var(--jsl-color-accent));
2971
+ }
2972
+
2973
+ .noUi-draggable {
2974
+ cursor: ew-resize;
2975
+ }
2976
+
2977
+ .noUi-vertical .noUi-draggable {
2978
+ cursor: ns-resize;
2979
+ }
2980
+
2981
+ .noUi-handle {
2982
+ border: 2px solid var(--jsl-color-accent);
2983
+ background: var(--jsl-color-surface);
2984
+ cursor: default;
2985
+ border-radius: 50%;
2986
+ box-shadow: 0 1px 4px #00000029;
2987
+ }
2988
+
2989
+ .noUi-active {
2990
+ border-color: var(--jsl-color-accent);
2991
+ }
2992
+
2993
+ [disabled] .noUi-connect {
2994
+ background: var(--jsl-color-disabled-text);
2995
+ }
2996
+
2997
+ [disabled].noUi-target, [disabled].noUi-handle, [disabled] .noUi-handle {
2998
+ cursor: not-allowed;
2999
+ }
3000
+
3001
+ .noUi-pips, .noUi-pips * {
3002
+ box-sizing: border-box;
3003
+ }
3004
+
3005
+ .noUi-pips {
3006
+ color: var(--jsl-color-text-muted);
3007
+ position: absolute;
3008
+ }
3009
+
3010
+ .noUi-value {
3011
+ white-space: nowrap;
3012
+ text-align: center;
3013
+ position: absolute;
3014
+ }
3015
+
3016
+ .noUi-value-sub {
3017
+ color: var(--jsl-color-text-muted);
3018
+ font-size: 10px;
3019
+ }
3020
+
3021
+ .noUi-marker {
3022
+ background: var(--jsl-color-border);
3023
+ position: absolute;
3024
+ }
3025
+
3026
+ .noUi-marker-sub, .noUi-marker-large {
3027
+ background: var(--jsl-color-border);
3028
+ }
3029
+
3030
+ .noUi-pips-horizontal {
3031
+ width: 100%;
3032
+ height: 80px;
3033
+ padding: 10px 0;
3034
+ top: 100%;
3035
+ left: 0;
1658
3036
  }
1659
3037
 
1660
- .checkbox-comp[disabled] + label, .checkbox-comp[disabled] + label:hover, .checkbox-comp[disabled] + label:before, .checkbox-comp[disabled] + label:after {
1661
- cursor: not-allowed;
3038
+ .noUi-value-horizontal {
3039
+ transform: translate(-50%, 50%);
1662
3040
  }
1663
3041
 
1664
- .checkbox-comp[disabled] + label:hover:before {
1665
- border: 1px solid silver;
1666
- animation-name: none;
3042
+ .noUi-rtl .noUi-value-horizontal {
3043
+ transform: translate(50%, 50%);
1667
3044
  }
1668
3045
 
1669
- .checkbox-comp[disabled] + label:before {
1670
- border-color: silver;
3046
+ .noUi-marker-horizontal.noUi-marker {
3047
+ width: 2px;
3048
+ height: 5px;
3049
+ margin-left: -1px;
1671
3050
  }
1672
3051
 
1673
- .checkbox-comp:checked + label:before {
1674
- animation-name: none;
3052
+ .noUi-marker-horizontal.noUi-marker-sub {
3053
+ height: 10px;
1675
3054
  }
1676
3055
 
1677
- .checkbox-comp:checked + label:after {
1678
- display: block;
3056
+ .noUi-marker-horizontal.noUi-marker-large {
3057
+ height: 15px;
1679
3058
  }
1680
3059
 
1681
- .checkbox-comp + label:before {
1682
- border-radius: .2em;
3060
+ .noUi-pips-vertical {
3061
+ height: 100%;
3062
+ padding: 0 10px;
3063
+ top: 0;
3064
+ left: 100%;
1683
3065
  }
1684
3066
 
1685
- .checkbox-comp + label:after {
1686
- box-sizing: border-box;
1687
- border: .15em solid #fff;
1688
- border-top: 0;
1689
- border-left: 0;
1690
- width: .5em;
1691
- height: .7em;
1692
- top: .1em;
1693
- left: .3em;
1694
- transform: rotate(45deg);
3067
+ .noUi-value-vertical {
3068
+ padding-left: 25px;
3069
+ transform: translate(0, -50%);
1695
3070
  }
1696
3071
 
1697
- .checkbox-comp:checked + label:before {
1698
- background: #3b99ff;
1699
- border-color: #3b99ff;
3072
+ .noUi-rtl .noUi-value-vertical {
3073
+ transform: translate(0, 50%);
1700
3074
  }
1701
3075
 
1702
- .checkbox-comp:checked[disabled] + label:before {
1703
- background: #c9e2f9;
1704
- border-color: #c9e2f9;
3076
+ .noUi-marker-vertical.noUi-marker {
3077
+ width: 5px;
3078
+ height: 2px;
3079
+ margin-top: -1px;
1705
3080
  }
1706
3081
 
1707
- .stackpanel-comp.hstackpanel {
1708
- position: relative;
3082
+ .noUi-marker-vertical.noUi-marker-sub {
3083
+ width: 10px;
1709
3084
  }
1710
3085
 
1711
- @media (width <= 70em) {
1712
- .stackpanel-comp.hstackpanel.responsive > div {
1713
- width: auto !important;
1714
- }
3086
+ .noUi-marker-vertical.noUi-marker-large {
3087
+ width: 15px;
1715
3088
  }
1716
3089
 
1717
- .stackpanel-comp.hstackpanel:not(.responsive) {
1718
- width: 100%;
1719
- display: flex;
1720
- position: relative;
3090
+ .noUi-tooltip {
3091
+ border: 1px solid var(--jsl-color-border);
3092
+ background: var(--jsl-color-surface);
3093
+ color: var(--jsl-color-text);
3094
+ text-align: center;
3095
+ white-space: nowrap;
3096
+ border-radius: 3px;
3097
+ padding: 5px;
3098
+ display: block;
3099
+ position: absolute;
1721
3100
  }
1722
3101
 
1723
- @media (width >= 70em) {
1724
- .stackpanel-comp.hstackpanel {
1725
- width: 100%;
1726
- display: flex;
1727
- position: relative;
1728
- }
3102
+ .noUi-horizontal .noUi-tooltip {
3103
+ bottom: 120%;
3104
+ left: 50%;
3105
+ transform: translate(-50%);
1729
3106
  }
1730
3107
 
1731
- .stackpanel-comp.wrap {
1732
- flex-wrap: wrap;
3108
+ .noUi-vertical .noUi-tooltip {
3109
+ top: 50%;
3110
+ right: 120%;
3111
+ transform: translate(0, -50%);
1733
3112
  }
1734
3113
 
1735
- .stackpanel-comp.vstackpanel {
1736
- position: relative;
3114
+ .noUi-horizontal .noUi-origin > .noUi-tooltip {
3115
+ bottom: 10px;
3116
+ left: auto;
3117
+ transform: translate(50%);
1737
3118
  }
1738
3119
 
1739
- .stackpanel-comp.vstackpanel > div {
1740
- flex-direction: column;
1741
- flex: auto;
1742
- height: 100%;
1743
- display: flex;
3120
+ .noUi-vertical .noUi-origin > .noUi-tooltip {
3121
+ top: auto;
3122
+ right: 28px;
3123
+ transform: translate(0, -18px);
1744
3124
  }
1745
3125
 
1746
- .stackpanel-comp.hstackpanel > .split-comp {
1747
- cursor: w-resize;
1748
- background: #d5d5d5;
1749
- position: relative;
1750
- width: 14px !important;
3126
+ .noUi-touch-area {
3127
+ width: auto;
3128
+ height: auto;
3129
+ position: absolute;
3130
+ inset: -6px;
1751
3131
  }
1752
3132
 
1753
- .stackpanel-comp.hstackpanel > .split-comp:before {
3133
+ .noUi-base:before {
1754
3134
  content: "";
1755
- background: #696969;
1756
- border-radius: 3px;
1757
- width: 7px;
1758
- height: 4rem;
1759
3135
  position: absolute;
1760
- top: calc(50% - 2rem);
1761
- left: 3px;
3136
+ inset: -10px 0;
1762
3137
  }
1763
3138
 
1764
- .stackpanel-comp.hstackpanel > .split-comp:hover {
1765
- box-shadow: 0 0 3px 2px #0000004d;
3139
+ .noUi-vertical .noUi-base:before {
3140
+ inset: 0 -10px;
1766
3141
  }
1767
3142
 
1768
- .stackpanel-comp.vstackpanel > .split-comp {
1769
- cursor: n-resize;
1770
- background: #d5d5d5;
1771
- flex-grow: 0;
1772
- flex-basis: 14px;
1773
- position: relative;
1774
- height: 14px !important;
3143
+ .noUi-handle {
3144
+ cursor: grab;
1775
3145
  }
1776
3146
 
1777
- .stackpanel-comp.vstackpanel > .split-comp:before {
1778
- content: "";
1779
- background: #696969;
1780
- border-radius: 3px;
1781
- width: 4rem;
1782
- height: 7px;
1783
- position: absolute;
1784
- top: 3px;
1785
- left: calc(50% - 2rem);
3147
+ .noUi-handle:active {
3148
+ cursor: grabbing;
3149
+ }
3150
+
3151
+ .noUi-handle:focus-visible {
3152
+ outline: 2px solid var(--jsl-color-focus);
3153
+ outline-offset: 3px;
3154
+ }
3155
+
3156
+ [disabled] .noUi-handle, .noUi-handle[disabled] {
3157
+ border-color: var(--jsl-color-disabled-text);
3158
+ background: var(--jsl-color-disabled-surface);
1786
3159
  }
1787
3160
 
1788
- .stackpanel-comp.vstackpanel > .split-comp:hover {
1789
- box-shadow: 0 0 3px 2px #0000004d;
3161
+ .noUi-tooltip {
3162
+ font: inherit;
3163
+ border-radius: .375rem;
3164
+ padding: 4px 8px;
3165
+ font-size: .75rem;
1790
3166
  }
1791
3167
 
1792
3168
  .slick-cell .jsl-toggle {
@@ -1809,388 +3185,511 @@ input.editor-text, textarea.editor-text {
1809
3185
  position: relative;
1810
3186
  }
1811
3187
 
1812
- .nav-comp {
1813
- line-height: 1.9rem;
3188
+ .jsl-navigation {
3189
+ width: 100%;
3190
+ color: var(--jsl-color-text);
3191
+ background: var(--jsl-color-surface);
3192
+ border-block: 1px solid var(--jsl-color-border-subtle);
3193
+ box-sizing: border-box;
3194
+ font: inherit;
3195
+ font-size: .875rem;
3196
+ line-height: 1.4;
3197
+ position: relative;
1814
3198
  }
1815
3199
 
1816
- .nav-comp .dropdown ul {
1817
- border-bottom-right-radius: 6px;
1818
- border-bottom-left-radius: 6px;
3200
+ .jsl-navigation *, .jsl-navigation :before, .jsl-navigation :after {
3201
+ box-sizing: border-box;
1819
3202
  }
1820
3203
 
1821
- .nav-comp .luxbar-default {
3204
+ .jsl-navigation--fixed, .jsl-navigation--fixed-bottom {
1822
3205
  z-index: 1010;
1823
- width: 100%;
1824
- position: relative;
1825
- box-shadow: 0 1px 3px #0000001f, 0 1px 2px #0000003d;
3206
+ position: fixed;
3207
+ inset-inline: 0;
3208
+ box-shadow: 0 2px 8px #0000000a;
1826
3209
  }
1827
3210
 
1828
- .nav-comp .luxbar-static {
1829
- z-index: 1010;
1830
- width: 100%;
1831
- position: absolute;
3211
+ .jsl-navigation--fixed {
1832
3212
  top: 0;
1833
- left: 0;
1834
- box-shadow: 0 1px 3px #0000001f, 0 1px 2px #0000003d;
1835
3213
  }
1836
3214
 
1837
- .nav-comp .luxbar-static .luxbar-checkbox:checked ~ .luxbar-menu {
1838
- position: absolute;
3215
+ .jsl-navigation--fixed-bottom {
3216
+ bottom: 0;
1839
3217
  }
1840
3218
 
1841
- .nav-comp .luxbar-fixed {
1842
- z-index: 1010;
1843
- width: 100%;
1844
- position: fixed;
1845
- top: 0;
1846
- left: 0;
1847
- box-shadow: 0 1px 3px #0000001f, 0 1px 2px #0000003d;
3219
+ .jsl-navigation [hidden] {
3220
+ display: none !important;
1848
3221
  }
1849
3222
 
1850
- .nav-comp .luxbar-fixed-bottom {
1851
- z-index: 1010;
1852
- width: 100%;
1853
- position: fixed;
1854
- bottom: 0;
1855
- left: 0;
1856
- box-shadow: 0 1px 3px #0000001f, 0 1px 2px #0000003d;
3223
+ .jsl-navigation button, .jsl-navigation a {
3224
+ -webkit-tap-highlight-color: transparent;
1857
3225
  }
1858
3226
 
1859
- .nav-comp .luxbar-hamburger span, .nav-comp .luxbar-hamburger span:before, .nav-comp .luxbar-hamburger span:after {
1860
- width: 26px;
1861
- height: 2px;
1862
- transition: all .6s;
1863
- display: block;
3227
+ .jsl-navigation button {
3228
+ font: inherit;
1864
3229
  }
1865
3230
 
1866
- .nav-comp .luxbar-checkbox:checked ~ .luxbar-menu li .luxbar-hamburger span {
1867
- background-color: #0000;
3231
+ .jsl-navigation button:focus-visible, .jsl-navigation a:focus-visible {
3232
+ outline: 2px solid var(--jsl-color-focus);
3233
+ outline-offset: 2px;
3234
+ z-index: 1;
1868
3235
  }
1869
3236
 
1870
- .nav-comp .luxbar-checkbox:checked ~ .luxbar-menu li .luxbar-hamburger span:before, .nav-comp .luxbar-checkbox:checked ~ .luxbar-menu li .luxbar-hamburger span:after {
1871
- margin-top: 0;
3237
+ .jsl-nav-bar {
3238
+ flex-wrap: wrap;
3239
+ align-items: center;
3240
+ gap: .5rem 1.5rem;
3241
+ min-height: 3.5rem;
3242
+ padding: .625rem 1rem;
3243
+ display: flex;
3244
+ container-type: inline-size;
1872
3245
  }
1873
3246
 
1874
- .nav-comp .luxbar-header {
1875
- flex-direction: row;
1876
- justify-content: space-between;
3247
+ .jsl-nav-brand {
3248
+ color: inherit;
3249
+ overflow-wrap: anywhere;
1877
3250
  align-items: center;
1878
- height: 58px;
3251
+ gap: .5rem;
3252
+ min-width: 0;
3253
+ font-size: 1rem;
3254
+ font-weight: 650;
3255
+ text-decoration: none;
1879
3256
  display: flex;
1880
3257
  }
1881
3258
 
1882
- .nav-comp .luxbar-menu-left .luxbar-navigation, .nav-comp .luxbar-menu-left .luxbar-header {
1883
- justify-content: flex-start;
3259
+ .jsl-nav-items, .jsl-nav-submenu {
3260
+ margin: 0;
3261
+ padding: 0;
3262
+ list-style: none;
1884
3263
  }
1885
3264
 
1886
- .nav-comp .luxbar-menu-right .luxbar-hamburger {
1887
- margin-left: auto;
3265
+ .jsl-nav-items {
3266
+ flex-wrap: wrap;
3267
+ align-items: center;
3268
+ gap: .25rem;
3269
+ min-width: 0;
3270
+ display: flex;
1888
3271
  }
1889
3272
 
1890
- .nav-comp .luxbar-brand {
1891
- padding: 18px 24px;
1892
- font-size: 1.6em;
3273
+ .jsl-nav-bar--right > .jsl-nav-items {
3274
+ margin-inline-start: auto;
1893
3275
  }
1894
3276
 
1895
- .nav-comp .luxbar-menu {
1896
- width: 100%;
1897
- min-height: 58px;
1898
- transition: all .6s;
3277
+ .jsl-nav-item {
3278
+ min-width: 0;
3279
+ position: relative;
1899
3280
  }
1900
3281
 
1901
- .nav-comp .luxbar-navigation {
1902
- flex-direction: column;
1903
- margin: 0;
1904
- padding-left: 0;
1905
- list-style: none;
3282
+ .jsl-nav-row {
3283
+ border-radius: .375rem;
3284
+ align-items: stretch;
1906
3285
  display: flex;
1907
3286
  }
1908
3287
 
1909
- .nav-comp .luxbar-menu a, .nav-comp .luxbar-item a {
1910
- color: inherit;
3288
+ .jsl-nav-link, .jsl-nav-submenu-toggle, .jsl-nav-toggle {
3289
+ color: var(--jsl-color-text-secondary);
1911
3290
  cursor: pointer;
3291
+ background: none;
3292
+ border: 0;
3293
+ border-radius: .375rem;
3294
+ justify-content: center;
3295
+ align-items: center;
3296
+ gap: .625rem;
3297
+ min-height: 2.25rem;
3298
+ padding: .5rem .75rem;
3299
+ line-height: 1.4;
1912
3300
  text-decoration: none;
3301
+ display: inline-flex;
1913
3302
  }
1914
3303
 
1915
- .nav-comp .luxbar-item {
1916
- height: 58px;
3304
+ .jsl-nav-link {
3305
+ text-align: start;
3306
+ overflow-wrap: anywhere;
3307
+ flex: 1;
3308
+ justify-content: flex-start;
3309
+ min-width: 0;
1917
3310
  }
1918
3311
 
1919
- .nav-comp .luxbar-item a {
1920
- padding: 18px 24px;
1921
- display: block;
3312
+ .jsl-nav-link > img, .jsl-nav-brand img {
3313
+ width: auto;
3314
+ max-height: 1.5rem;
1922
3315
  }
1923
3316
 
1924
- .nav-comp .luxbar-hamburger {
1925
- cursor: pointer;
1926
- padding: 18px 24px;
1927
- position: absolute;
1928
- right: 0;
3317
+ .jsl-nav-submenu-toggle {
3318
+ padding-inline: .5rem;
1929
3319
  }
1930
3320
 
1931
- .nav-comp .luxbar-hamburger span:before, .nav-comp .luxbar-hamburger span:after {
1932
- content: "";
1933
- position: absolute;
3321
+ .jsl-nav-link:hover, .jsl-nav-submenu-toggle:hover, .jsl-nav-toggle:hover {
3322
+ background: var(--jsl-color-surface-hover);
3323
+ color: var(--jsl-color-text);
1934
3324
  }
1935
3325
 
1936
- .nav-comp .luxbar-hamburger span:before {
1937
- margin-top: -8px;
3326
+ .jsl-nav-item.is-active > .jsl-nav-row {
3327
+ background: var(--jsl-color-surface-selected);
1938
3328
  }
1939
3329
 
1940
- .nav-comp .luxbar-hamburger span:after {
1941
- margin-top: 8px;
3330
+ .jsl-nav-item.is-active > .jsl-nav-row > .jsl-nav-link {
3331
+ color: var(--jsl-color-text);
3332
+ font-weight: 600;
1942
3333
  }
1943
3334
 
1944
- .nav-comp .luxbar-checkbox {
1945
- display: none;
3335
+ .jsl-navigation :disabled, .jsl-navigation [aria-disabled="true"] {
3336
+ color: var(--jsl-color-disabled-text);
3337
+ cursor: default;
3338
+ opacity: .6;
3339
+ background: none;
1946
3340
  }
1947
3341
 
1948
- .nav-comp .luxbar-checkbox:not(:checked) ~ .luxbar-menu {
1949
- height: 58px;
1950
- overflow: hidden;
3342
+ .jsl-nav-chevron {
3343
+ border-bottom: 1.5px solid;
3344
+ border-right: 1.5px solid;
3345
+ flex-shrink: 0;
3346
+ width: .4rem;
3347
+ height: .4rem;
3348
+ margin: .125rem;
3349
+ transform: translateY(-.1rem) rotate(45deg);
3350
+ }
3351
+
3352
+ [aria-expanded="true"] > .jsl-nav-chevron {
3353
+ transform: translateY(.1rem) rotate(225deg);
1951
3354
  }
1952
3355
 
1953
- .nav-comp .luxbar-checkbox:checked ~ .luxbar-menu {
1954
- height: 100vh;
1955
- transition: height .6s;
3356
+ .jsl-nav-submenu {
3357
+ z-index: 1020;
3358
+ background: var(--jsl-color-surface);
3359
+ border: 1px solid var(--jsl-color-border-subtle);
3360
+ top: calc(100% + .375rem);
3361
+ border-radius: .625rem;
3362
+ width: max-content;
3363
+ min-width: 12rem;
3364
+ max-width: min(22rem, 100vw - 2rem);
3365
+ max-height: min(28rem, 65dvh);
3366
+ padding: .375rem;
3367
+ position: absolute;
3368
+ inset-inline-end: 0;
1956
3369
  overflow: auto;
3370
+ box-shadow: 0 8px 24px #0000001a;
1957
3371
  }
1958
3372
 
1959
- .nav-comp .dropdown {
1960
- height: auto;
1961
- min-height: 58px;
1962
- position: relative;
3373
+ .jsl-nav-submenu .jsl-nav-submenu {
3374
+ border: 0;
3375
+ border-inline-start: 1px solid var(--jsl-color-border);
3376
+ width: auto;
3377
+ min-width: 0;
3378
+ max-height: none;
3379
+ box-shadow: none;
3380
+ border-radius: 0;
3381
+ margin: .25rem .5rem .375rem .75rem;
3382
+ padding: 0 0 0 .5rem;
3383
+ position: static;
3384
+ }
3385
+
3386
+ .jsl-navigation--fixed-bottom > .jsl-nav-bar > .jsl-nav-items > li > .jsl-nav-submenu {
3387
+ top: auto;
3388
+ bottom: calc(100% + .375rem);
3389
+ }
3390
+
3391
+ .jsl-nav-toggle {
3392
+ width: 2.25rem;
3393
+ margin-inline-start: auto;
3394
+ padding: .5rem;
3395
+ display: none;
1963
3396
  }
1964
3397
 
1965
- .nav-comp .dropdown:hover > ul {
1966
- min-width: 100%;
3398
+ .jsl-nav-menu-icon, .jsl-nav-menu-icon:before, .jsl-nav-menu-icon:after {
3399
+ background: currentColor;
3400
+ width: 1rem;
3401
+ height: 1.5px;
1967
3402
  display: block;
1968
3403
  position: relative;
1969
3404
  }
1970
3405
 
1971
- .nav-comp .dropdown > a:after {
3406
+ .jsl-nav-menu-icon:before, .jsl-nav-menu-icon:after {
1972
3407
  content: "";
1973
- border: 5px solid #0000;
1974
- border-bottom-width: 0;
1975
3408
  position: absolute;
1976
- top: 25px;
1977
- right: 10px;
3409
+ top: -.3125rem;
3410
+ left: 0;
1978
3411
  }
1979
3412
 
1980
- .nav-comp .dropdown > ul {
1981
- padding: 0;
1982
- list-style: none;
1983
- display: block;
1984
- overflow-x: hidden;
3413
+ .jsl-nav-menu-icon:after {
3414
+ top: .3125rem;
1985
3415
  }
1986
3416
 
1987
- .nav-comp .dropdown > ul .luxbar-item {
1988
- min-width: 100%;
1989
- height: 29px;
1990
- padding: 5px 10px 5px 40px;
3417
+ .is-open > .jsl-nav-toggle .jsl-nav-menu-icon {
3418
+ background: none;
1991
3419
  }
1992
3420
 
1993
- .nav-comp .dropdown > ul .luxbar-item a {
1994
- min-height: 29px;
1995
- padding: 0;
1996
- line-height: 29px;
3421
+ .is-open > .jsl-nav-toggle .jsl-nav-menu-icon:before {
3422
+ top: 0;
3423
+ transform: rotate(45deg);
3424
+ }
3425
+
3426
+ .is-open > .jsl-nav-toggle .jsl-nav-menu-icon:after {
3427
+ top: 0;
3428
+ transform: rotate(-45deg);
1997
3429
  }
1998
3430
 
1999
- @media screen and (width >= 768px) {
2000
- .nav-comp .luxbar-navigation {
2001
- flex-flow: row;
2002
- justify-content: flex-end;
3431
+ @container (width <= 40rem) {
3432
+ .jsl-nav-toggle {
3433
+ display: inline-flex;
2003
3434
  }
2004
3435
 
2005
- .nav-comp .luxbar-hamburger {
2006
- display: none;
3436
+ .jsl-nav-brand {
3437
+ max-width: calc(100% - 4rem);
2007
3438
  }
2008
3439
 
2009
- .nav-comp .luxbar-checkbox:not(:checked) ~ .luxbar-menu {
2010
- overflow: visible;
3440
+ .jsl-nav-items {
3441
+ border-top: 1px solid var(--jsl-color-border-subtle);
3442
+ width: 100%;
3443
+ max-height: 65dvh;
3444
+ margin-inline-start: 0;
3445
+ padding-top: .5rem;
3446
+ display: none;
3447
+ overflow: auto;
2011
3448
  }
2012
3449
 
2013
- .nav-comp .luxbar-checkbox:checked ~ .luxbar-menu {
2014
- height: 58px;
3450
+ .is-open > .jsl-nav-items {
3451
+ display: block;
2015
3452
  }
2016
3453
 
2017
- .nav-comp .luxbar-menu .luxbar-item {
2018
- border-top: 0;
3454
+ .jsl-nav-item + .jsl-nav-item {
3455
+ margin-top: .125rem;
2019
3456
  }
2020
3457
 
2021
- .nav-comp .luxbar-menu-right .luxbar-header {
2022
- margin-right: auto;
3458
+ .jsl-nav-items .jsl-nav-submenu {
3459
+ border: 0;
3460
+ border-inline-start: 1px solid var(--jsl-color-border);
3461
+ width: auto;
3462
+ min-width: 0;
3463
+ max-width: none;
3464
+ max-height: none;
3465
+ box-shadow: none;
3466
+ border-radius: 0;
3467
+ margin: .25rem .5rem .375rem .75rem;
3468
+ padding: 0 0 0 .5rem;
3469
+ position: static;
2023
3470
  }
3471
+ }
2024
3472
 
2025
- .nav-comp .dropdown {
2026
- height: 58px;
3473
+ @media (width <= 767px) {
3474
+ .jsl-nav-toggle {
3475
+ display: inline-flex;
2027
3476
  }
2028
3477
 
2029
- .nav-comp .dropdown:hover > ul {
2030
- padding: 0;
2031
- position: absolute;
2032
- top: 58px;
2033
- left: 0;
3478
+ .jsl-nav-brand {
3479
+ max-width: calc(100% - 4rem);
2034
3480
  }
2035
3481
 
2036
- .nav-comp .dropdown > ul {
3482
+ .jsl-nav-items {
3483
+ border-top: 1px solid var(--jsl-color-border-subtle);
3484
+ width: 100%;
3485
+ max-height: 65dvh;
3486
+ margin-inline-start: 0;
3487
+ padding-top: .5rem;
2037
3488
  display: none;
3489
+ overflow: auto;
2038
3490
  }
2039
3491
 
2040
- .nav-comp .dropdown > ul .luxbar-item {
2041
- padding: 5px 10px;
3492
+ .is-open > .jsl-nav-items {
3493
+ display: block;
2042
3494
  }
2043
3495
 
2044
- .nav-comp .dropdown > ul .luxbar-item a {
2045
- white-space: nowrap;
3496
+ .jsl-nav-item + .jsl-nav-item {
3497
+ margin-top: .125rem;
2046
3498
  }
2047
- }
2048
3499
 
2049
- .nav-comp .luxbar-checkbox:checked + .luxbar-menu .luxbar-hamburger-doublespin span:before {
2050
- transform: rotate(225deg);
2051
- }
2052
-
2053
- .nav-comp .luxbar-checkbox:checked + .luxbar-menu .luxbar-hamburger-doublespin span:after {
2054
- transform: rotate(-225deg);
3500
+ .jsl-nav-items .jsl-nav-submenu {
3501
+ border: 0;
3502
+ border-inline-start: 1px solid var(--jsl-color-border);
3503
+ width: auto;
3504
+ min-width: 0;
3505
+ max-width: none;
3506
+ max-height: none;
3507
+ box-shadow: none;
3508
+ border-radius: 0;
3509
+ margin: .25rem .5rem .375rem .75rem;
3510
+ padding: 0 0 0 .5rem;
3511
+ position: static;
3512
+ }
2055
3513
  }
2056
3514
 
2057
- .nav-comp .luxbar-checkbox:checked + .luxbar-menu .luxbar-hamburger-spin span:before {
2058
- transform: rotate(45deg);
3515
+ .ribbon-menu-comp {
3516
+ background: var(--jsl-color-surface-subtle);
3517
+ color: var(--jsl-color-text);
3518
+ border: 1px solid var(--jsl-color-border-subtle);
3519
+ box-sizing: border-box;
3520
+ border-radius: 0;
3521
+ flex-wrap: wrap;
3522
+ align-items: stretch;
3523
+ gap: .75rem;
3524
+ margin: 0;
3525
+ padding: .75rem;
3526
+ display: flex;
2059
3527
  }
2060
3528
 
2061
- .nav-comp .luxbar-checkbox:checked + .luxbar-menu .luxbar-hamburger-spin span:after {
2062
- transform: rotate(-45deg);
3529
+ .ribbon-menu-comp .ribbon-group {
3530
+ border-inline-end: 1px solid var(--jsl-color-border-subtle);
3531
+ flex-direction: column;
3532
+ gap: .5rem;
3533
+ min-width: 0;
3534
+ padding-inline-end: .75rem;
3535
+ display: flex;
2063
3536
  }
2064
3537
 
2065
- .nav-comp .luxbar-menu-dark, .nav-comp .luxbar-menu-dark .dropdown ul {
2066
- color: #fff;
2067
- background-color: #212121;
3538
+ .ribbon-menu-comp .ribbon-group:last-child {
3539
+ border-inline-end: 0;
3540
+ padding-inline-end: 0;
2068
3541
  }
2069
3542
 
2070
- .nav-comp .luxbar-menu-dark .active, .nav-comp .luxbar-menu-dark .luxbar-item:hover {
2071
- background-color: #424242;
3543
+ .ribbon-actions {
3544
+ flex-wrap: wrap;
3545
+ flex: 1;
3546
+ align-items: center;
3547
+ gap: .375rem;
3548
+ display: flex;
2072
3549
  }
2073
3550
 
2074
- .nav-comp .luxbar-menu-dark .luxbar-hamburger span, .nav-comp .luxbar-menu-dark .luxbar-hamburger span:before, .nav-comp .luxbar-menu-dark .luxbar-hamburger span:after {
2075
- background-color: #fff;
3551
+ .ribbon-menu-comp .ribbon-legend {
3552
+ color: var(--jsl-color-text-muted);
3553
+ text-align: center;
3554
+ font-size: .6875rem;
3555
+ }
3556
+
3557
+ :where(:root) {
3558
+ --jsl-color-canvas: #f7f7f8;
3559
+ --jsl-color-surface: #fff;
3560
+ --jsl-color-surface-subtle: #fafafa;
3561
+ --jsl-color-surface-hover: #f0f0f2;
3562
+ --jsl-color-surface-selected: #e8e8eb;
3563
+ --jsl-color-border: #d4d4d8;
3564
+ --jsl-color-border-subtle: #e4e4e7;
3565
+ --jsl-color-text: #27272a;
3566
+ --jsl-color-text-secondary: #52525b;
3567
+ --jsl-color-text-muted: #71717a;
3568
+ --jsl-color-accent: #3f3f46;
3569
+ --jsl-color-accent-hover: #27272a;
3570
+ --jsl-color-accent-active: #18181b;
3571
+ --jsl-color-on-accent: #fff;
3572
+ --jsl-color-focus: #52525b;
3573
+ --jsl-color-danger: #b42318;
3574
+ --jsl-color-success: #15803d;
3575
+ --jsl-color-warning: #b45309;
3576
+ --jsl-color-info: #2563eb;
3577
+ --jsl-color-disabled-surface: #f4f4f5;
3578
+ --jsl-color-disabled-text: #71717a;
3579
+ --jsl-color-overlay: #18181b73;
3580
+ --jsl-shadow-dialog: 0 24px 64px #0000002e, 0 4px 16px #00000014;
2076
3581
  }
2077
3582
 
2078
- .nav-comp .luxbar-menu-light {
2079
- color: #212121;
2080
- background-color: #e0e0e0;
3583
+ .jsl-overlay-overlay {
3584
+ color: var(--jsl-color-text);
3585
+ width: fit-content;
3586
+ max-width: 100vw;
3587
+ height: fit-content;
3588
+ max-height: 100dvh;
3589
+ font: inherit;
3590
+ background: none;
3591
+ border: 0;
3592
+ margin: 0;
3593
+ padding: 0;
3594
+ position: fixed;
3595
+ inset: 0;
3596
+ overflow: visible;
2081
3597
  }
2082
3598
 
2083
- .nav-comp .luxbar-menu-light .dropdown ul {
2084
- color: #212121;
2085
- background-color: #fff;
2086
- box-shadow: 0 4px 3px #0000005c;
3599
+ .jsl-overlay-overlay:has(.overl-body-top) {
3600
+ width: 100%;
2087
3601
  }
2088
3602
 
2089
- .nav-comp .luxbar-menu-light .dropdown ul li:not(:last-child) {
2090
- border-bottom: 1px solid #e0e0e0;
3603
+ .jsl-overlay-overlay::backdrop {
3604
+ background: var(--jsl-color-overlay);
2091
3605
  }
2092
3606
 
2093
- .nav-comp .luxbar-menu-light .active, .nav-comp .luxbar-menu-light .luxbar-item:hover {
2094
- background-color: #bdbdbd;
3607
+ .jsl-overlay-overlay[hidden] {
3608
+ display: none;
2095
3609
  }
2096
3610
 
2097
- .nav-comp .luxbar-menu-light .luxbar-hamburger span, .nav-comp .luxbar-menu-light .luxbar-hamburger span:before, .nav-comp .luxbar-menu-light .luxbar-hamburger span:after {
2098
- background-color: #212121;
3611
+ .overl-body {
3612
+ box-sizing: border-box;
3613
+ background: var(--jsl-color-surface);
3614
+ box-shadow: var(--jsl-shadow-dialog);
3615
+ flex-direction: column;
3616
+ display: flex;
3617
+ overflow: auto;
2099
3618
  }
2100
3619
 
2101
- .ribbon-menu-comp {
2102
- box-sizing: border-box;
2103
- background: linear-gradient(90deg, #fff 0%, #f6f6f6 20% 80%, #fff 100%);
2104
- border-top: 1px solid #c9c9c9;
2105
- border-bottom: 1px solid #c9c9c9;
2106
- flex-shrink: 0;
2107
- height: 3.9rem;
2108
- padding: .3rem;
2109
- position: relative;
3620
+ .overl-body-left {
3621
+ width: var(--jsl-overlay-size);
3622
+ border-radius: 0 .75rem .75rem 0;
3623
+ max-width: 100vw;
3624
+ height: 100dvh;
2110
3625
  }
2111
3626
 
2112
- .ribbon-menu-comp .ribbon-group {
2113
- box-sizing: border-box;
2114
- vertical-align: middle;
2115
- border-right: 1px solid #c9c9c9;
2116
- height: 100%;
2117
- padding: 0 .6rem;
2118
- display: inline-block;
2119
- position: relative;
3627
+ .overl-body-top {
3628
+ height: var(--jsl-overlay-size);
3629
+ border-radius: 0 0 .75rem .75rem;
3630
+ width: 100vw;
3631
+ max-height: 100dvh;
2120
3632
  }
2121
3633
 
2122
- .ribbon-menu-comp .jsl-button {
2123
- margin: .1rem;
2124
- padding-left: .25rem;
2125
- padding-right: .25rem;
2126
- display: inline-block;
3634
+ .overl-header {
3635
+ justify-content: flex-end;
3636
+ padding: .75rem .75rem 0;
3637
+ display: flex;
2127
3638
  }
2128
3639
 
2129
- .ribbon-menu-comp .ribbon-group > .jsl-button > img {
2130
- height: 1rem;
3640
+ .overl-content {
3641
+ padding: 1.25rem;
3642
+ overflow: auto;
2131
3643
  }
2132
3644
 
2133
- .ribbon-menu-comp .ribbon-legend {
2134
- text-align: center;
2135
- color: #444;
2136
- font-size: .8em;
2137
- position: absolute;
2138
- bottom: 0;
2139
- left: 1px;
2140
- right: 1px;
3645
+ .overl-close-btn {
3646
+ width: 2rem;
3647
+ height: 2rem;
3648
+ color: var(--jsl-color-text-muted);
3649
+ font: inherit;
3650
+ cursor: pointer;
3651
+ background: none;
3652
+ border: 0;
3653
+ border-radius: .375rem;
3654
+ place-items: center;
3655
+ padding: 0;
3656
+ font-size: 1.5rem;
3657
+ display: grid;
2141
3658
  }
2142
3659
 
2143
- .jsl-overlay-overlay {
2144
- z-index: 2001;
2145
- background: #fff9;
2146
- height: 100vh;
2147
- position: fixed;
2148
- inset: 0;
3660
+ .overl-close-btn:hover {
3661
+ background: var(--jsl-color-surface-hover);
3662
+ color: var(--jsl-color-text);
2149
3663
  }
2150
3664
 
2151
- .overl-header {
2152
- position: absolute;
2153
- top: 0;
2154
- right: 0;
3665
+ .overl-close-btn:focus-visible {
3666
+ outline: 2px solid var(--jsl-color-focus);
3667
+ outline-offset: 2px;
2155
3668
  }
2156
3669
 
2157
- .overl-body {
2158
- background: #fff;
2159
- position: absolute;
2160
- overflow: auto;
3670
+ .overl-body-left.overl-animate {
3671
+ animation: .18s ease-out jsl-panel-left;
2161
3672
  }
2162
3673
 
2163
- .overl-body-left {
2164
- min-width: 50%;
2165
- top: 0;
2166
- bottom: 0;
2167
- left: 0;
2168
- box-shadow: 5px 0 6px #2223;
3674
+ .overl-body-top.overl-animate {
3675
+ animation: .18s ease-out jsl-panel-top;
2169
3676
  }
2170
3677
 
2171
- .overl-body-top {
2172
- min-height: 50%;
2173
- top: 0;
2174
- left: 0;
2175
- right: 0;
2176
- box-shadow: 0 5px 4px #2223;
3678
+ @keyframes jsl-panel-left {
3679
+ from {
3680
+ transform: translateX(-100%);
3681
+ }
2177
3682
  }
2178
3683
 
2179
- .overl-close-btn {
2180
- color: #555;
2181
- box-sizing: border-box;
2182
- cursor: pointer;
2183
- border-top-right-radius: .8rem;
2184
- width: 2.2rem;
2185
- font-size: 2rem;
2186
- font-weight: bold;
2187
- line-height: 2.2rem;
2188
- position: absolute;
2189
- top: 0;
2190
- right: 0;
3684
+ @keyframes jsl-panel-top {
3685
+ from {
3686
+ transform: translateY(-100%);
3687
+ }
2191
3688
  }
2192
3689
 
2193
- .overl-close-btn:hover {
2194
- color: #b22121;
3690
+ @media (prefers-reduced-motion: reduce) {
3691
+ .overl-animate {
3692
+ animation: none !important;
3693
+ }
2195
3694
  }
2196
3695
  /*# sourceMappingURL=index.css.map */