jsl-ui 9.28.7 → 10.0.0

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