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/grid.css CHANGED
@@ -1,671 +1,1488 @@
1
- .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 {
2
- background: #fff;
3
- width: 100%;
4
- position: relative;
5
- overflow: auto;
6
- border-left: 0 !important;
1
+ @media (prefers-reduced-motion: reduce) {
2
+ .jsl-button {
3
+ transition: none;
4
+ }
7
5
  }
8
6
 
9
- .slick-header.ui-state-default {
10
- overflow: inherit;
7
+ html {
8
+ -webkit-text-size-adjust: 100%;
9
+ -ms-text-size-adjust: 100%;
11
10
  }
12
11
 
13
- .slick-header::-webkit-scrollbar {
14
- display: none;
12
+ hr {
13
+ box-sizing: content-box;
14
+ height: 0;
15
+ overflow: visible;
15
16
  }
16
17
 
17
- .slick-headerrow::-webkit-scrollbar {
18
- display: none;
18
+ pre, code {
19
+ font-family: monospace;
20
+ font-size: 1em;
19
21
  }
20
22
 
21
- .slick-footerrow::-webkit-scrollbar {
22
- display: none;
23
+ a {
24
+ -webkit-text-decoration-skip: objects;
23
25
  }
24
26
 
25
- .slick-header-columns, .slick-headerrow-columns, .slick-footerrow-columns, .slick-group-header-columns {
26
- white-space: nowrap;
27
- cursor: default;
27
+ sub, sup {
28
+ vertical-align: baseline;
29
+ font-size: 75%;
30
+ line-height: 0;
28
31
  position: relative;
29
- overflow: hidden;
30
32
  }
31
33
 
32
- .slick-header-column.ui-state-default, .slick-group-header-column.ui-state-default {
33
- text-overflow: ellipsis;
34
- float: left;
35
- border-top: 1px solid silver;
36
- border-right: 1px solid silver;
37
- height: 20px;
38
- margin: 0;
39
- padding: 4px;
40
- line-height: 20px;
41
- position: relative;
42
- overflow: hidden;
43
- box-sizing: content-box !important;
44
- border-bottom: 0 !important;
45
- border-left: 0 !important;
34
+ sub {
35
+ bottom: -.25em;
46
36
  }
47
37
 
48
- .slick-footerrow-column.ui-state-default {
49
- text-overflow: ellipsis;
50
- float: left;
51
- vertical-align: middle;
52
- border: 0;
53
- border-right: 1px solid silver;
54
- margin: 0;
55
- padding: 4px;
56
- line-height: 20px;
38
+ sup {
39
+ top: -.5em;
57
40
  }
58
41
 
59
- .slick-headerrow-column.ui-state-default, .slick-footerrow-column.ui-state-default {
60
- padding: 4px;
42
+ input, optgroup, select, textarea {
43
+ text-transform: none;
44
+ margin: 0;
45
+ font-size: 100%;
46
+ line-height: 1.15;
61
47
  }
62
48
 
63
- .slick-header-column-sorted {
64
- font-style: italic;
49
+ button, input {
50
+ overflow: visible;
65
51
  }
66
52
 
67
- .slick-sort-indicator {
68
- float: left;
69
- width: 8px;
70
- height: 5px;
71
- margin-top: 6px;
72
- margin-left: 4px;
53
+ button, html [type="button"], [type="reset"], [type="submit"] {
54
+ -webkit-appearance: button;
73
55
  }
74
56
 
75
- .slick-sort-indicator-numbered {
76
- float: left;
77
- color: #6190cd;
78
- width: 8px;
79
- height: 5px;
80
- margin-top: 0;
81
- margin-left: 4px;
82
- font-style: normal;
83
- font-weight: bold;
84
- line-height: 20px;
57
+ button::-moz-focus-inner {
58
+ border-style: none;
59
+ padding: 0;
85
60
  }
86
61
 
87
- .grid-canvas {
88
- outline: 0;
89
- position: relative;
62
+ [type="button"]::-moz-focus-inner {
63
+ border-style: none;
64
+ padding: 0;
90
65
  }
91
66
 
92
- .slick-row.ui-widget-content, .slick-row.ui-state-active {
93
- border: 0;
94
- width: 100%;
95
- position: absolute;
67
+ [type="reset"]::-moz-focus-inner {
68
+ border-style: none;
69
+ padding: 0;
96
70
  }
97
71
 
98
- .slick-cell, .slick-headerrow-column, .slick-footerrow-column {
99
- text-overflow: ellipsis;
100
- vertical-align: middle;
101
- z-index: 1;
102
- white-space: nowrap;
103
- cursor: default;
104
- border: 1px solid #0000;
105
- border-right: 1px dotted silver;
106
- margin: 0;
107
- padding: 1px 2px 2px 1px;
108
- position: absolute;
109
- overflow: hidden;
72
+ [type="submit"]::-moz-focus-inner {
73
+ border-style: none;
74
+ padding: 0;
110
75
  }
111
76
 
112
- .slick-headerrow-column {
113
- border-bottom-color: silver;
77
+ button:-moz-focusring {
78
+ outline: 1px dotted buttontext;
114
79
  }
115
80
 
116
- .slick-footerrow-column {
117
- border-top-color: silver;
81
+ [type="button"]:-moz-focusring {
82
+ outline: 1px dotted buttontext;
118
83
  }
119
84
 
120
- .slick-group-toggle {
121
- display: inline-block;
85
+ [type="reset"]:-moz-focusring {
86
+ outline: 1px dotted buttontext;
122
87
  }
123
88
 
124
- .slick-cell.highlighted {
125
- -o-transition: all .5s;
126
- background: #00f3;
127
- transition: all .5s;
89
+ [type="submit"]:-moz-focusring {
90
+ outline: 1px dotted buttontext;
128
91
  }
129
92
 
130
- .slick-cell.flashing {
131
- border: 1px solid red !important;
93
+ textarea {
94
+ overflow: auto;
132
95
  }
133
96
 
134
- .slick-cell.editable {
135
- z-index: 11;
136
- overflow: visible;
97
+ .right {
98
+ text-align: right;
137
99
  }
138
100
 
139
- .slick-cell:focus {
140
- outline: none;
101
+ .center {
102
+ text-align: center;
141
103
  }
142
104
 
143
- .slick-reorder-proxy {
144
- opacity: .15;
145
- filter: alpha(opacity= 15);
146
- cursor: move;
147
- background: #00f;
148
- display: inline-block;
105
+ div.jsl-fill {
106
+ box-sizing: border-box;
107
+ height: 100%;
108
+ position: relative;
149
109
  }
150
110
 
151
- .slick-reorder-guide {
152
- opacity: .7;
153
- height: 2px;
154
- filter: alpha(opacity= 70);
155
- background: #00f;
156
- display: inline-block;
111
+ .resizable {
112
+ position: relative;
157
113
  }
158
114
 
159
- .slick-selection {
160
- z-index: 10;
161
- border: 2px dashed #000;
115
+ .resizable > .rs-r {
116
+ box-sizing: border-box;
117
+ cursor: w-resize;
118
+ background: #14141433;
119
+ width: .5rem;
162
120
  position: absolute;
121
+ top: 0;
122
+ bottom: 0;
123
+ right: 0;
163
124
  }
164
125
 
165
- .slick-pane {
166
- outline: 0;
167
- width: 100%;
126
+ .resizable > .rs-b {
127
+ box-sizing: border-box;
128
+ cursor: n-resize;
129
+ background: #14141433;
130
+ height: .5rem;
168
131
  position: absolute;
169
- overflow: hidden;
132
+ bottom: 0;
133
+ left: 0;
134
+ right: 0;
170
135
  }
171
136
 
172
- .slick-pane-header {
173
- display: block;
137
+ .resizable > .rs-r.rs-b {
138
+ top: initial;
139
+ left: initial;
140
+ cursor: nw-resize;
141
+ bottom: 0;
142
+ right: 0;
174
143
  }
175
144
 
176
- .slick-header, .slick-headerrow, .slick-top-panel-scroller {
177
- position: relative;
178
- overflow: hidden;
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;
179
151
  }
180
152
 
181
- .slick-top-panel {
182
- width: 10000px;
153
+ .dp-below *, .dp-modal *, .dp-permanent * {
154
+ box-sizing: border-box;
183
155
  }
184
156
 
185
- .slick-viewport {
186
- background: #fff;
187
- outline: 0;
188
- width: 100%;
189
- position: relative;
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;
190
166
  }
191
167
 
192
- .slick-wrap {
193
- white-space: normal;
168
+ .dp-below {
169
+ z-index: 2200;
170
+ width: max-content;
171
+ position: fixed;
194
172
  }
195
173
 
196
- input.editor-text, textarea.editor-text {
197
- resize: none;
174
+ .dp-modal {
175
+ z-index: 2300;
176
+ background: var(--jsl-color-overlay);
177
+ place-items: center;
178
+ padding: .5rem;
179
+ display: grid;
180
+ position: fixed;
181
+ inset: 0;
182
+ }
183
+
184
+ .dp-permanent {
185
+ max-width: 100%;
186
+ display: inline-block;
187
+ }
188
+
189
+ .dp-permanent .dp {
190
+ box-shadow: none;
191
+ max-width: 100%;
192
+ }
193
+
194
+ .dp button {
195
+ appearance: none;
196
+ color: inherit;
197
+ font: inherit;
198
+ cursor: pointer;
199
+ text-align: center;
198
200
  background: none;
199
201
  border: 0;
200
- outline: 0;
201
- width: 100%;
202
- height: 100%;
202
+ border-radius: .4rem;
203
203
  margin: 0;
204
- padding: 0;
204
+ padding: .5rem;
205
+ line-height: 1.4;
205
206
  }
206
207
 
207
- .slick-cell .jsl-container {
208
- position: absolute;
209
- inset: 0;
208
+ .dp button:hover:not(:disabled) {
209
+ background: var(--jsl-color-surface-hover);
210
210
  }
211
211
 
212
- .slick-cell .jsl-container .jsl-selected {
213
- padding: 0;
212
+ .dp button:focus-visible {
213
+ outline: 2px solid var(--jsl-color-focus);
214
+ outline-offset: -2px;
215
+ z-index: 1;
216
+ position: relative;
214
217
  }
215
218
 
216
- .slickgrid {
217
- box-sizing: border-box;
218
- border: 1px solid #b0b0b0;
219
- border-radius: 3px;
219
+ .dp button:disabled {
220
+ color: var(--jsl-color-disabled-text);
221
+ cursor: not-allowed;
222
+ opacity: .4;
220
223
  }
221
224
 
222
- .slick-col-ghost {
223
- box-sizing: content-box;
224
- pointer-events: none;
225
- position: absolute;
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;
226
231
  }
227
232
 
228
- .slick-ghost-content {
229
- background: #c8c8c880;
230
- border: 2px solid #bbb;
231
- position: absolute;
232
- left: 0;
233
- right: 0;
233
+ .dp-cal-header button {
234
+ font-weight: 600;
234
235
  }
235
236
 
236
- .editor-text {
237
- font-size: 100%;
237
+ .dp .dp-prev, .dp .dp-next {
238
+ padding: .35rem;
239
+ font-size: 1.375rem;
240
+ line-height: 1;
238
241
  }
239
242
 
240
- .slick-filtered-header {
241
- color: #3b99ff;
242
- background: #e7e7e7;
243
+ .dp-days {
244
+ grid-template-columns: repeat(7, minmax(0, 1fr));
245
+ gap: .125rem;
246
+ padding: 0 .625rem .625rem;
247
+ display: grid;
243
248
  }
244
249
 
245
- .slick-preheader-panel .slick-column-name {
250
+ .dp-col-header {
251
+ color: var(--jsl-color-text-muted);
246
252
  text-align: center;
247
- float: none;
253
+ padding: .5rem 0;
254
+ font-size: .6875rem;
255
+ font-weight: 500;
248
256
  }
249
257
 
250
- .slick-header-column.resizable > .rs-r {
251
- background: none;
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;
252
264
  }
253
265
 
254
- .js-touch .slick-header-column > .slick-header-menubutton {
255
- display: inline-block;
266
+ .dp .dp-edge-day {
267
+ color: var(--jsl-color-text-muted);
256
268
  }
257
269
 
258
- .js-touch .slick-header-column.resizable > .rs-r {
259
- background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAMNSURBVEhLxVY7i1NBGM3NwzyMINiIjSKoC9tIBEG02FgkIeSxpJBlS7sV1s5fIRZqYWFhtYssEggJ5IEaFxERYdXWam1EkQVh82Lz8pzJl3jvzb1JjK8DA/lOZuacO/PNN+Po9/tT29LSktuKt2vov4B2xeo/c3M6piASiawHg8G9eDweEmoi2A/936G9wNg1oW2h0YUdKB4IBO45nU5Ht9s9ACLFYnFb/h4DxT0ez2uXy3WIca/XczQajZuVSuW+6mABWwPRaPSa3+9/DHFNKEe73a7XarWj1Wq1I5QByWQyBwMpCRVoAubL4K9ns9nPQo9guQVW4pwIK7BuJ05AZK3T6exIqMDVAx8Fn89kMieEHmHMQCwWuwrxTbM4l7JcLj8SyhL8QrfbncRKbXGMHuBDMLFtNmHYAor7fL4KxF1CKWDCcj6fj0k4EyR/7uo/hICJXZi5PNyO0Qowgbxeb8ksjgEfuH8SzgwmXrPZXMFKGJIM4qeQE+/T6fRJxmoFwuHwcRybjxA6onoJzG7ngeQTt9TwYcin3Xq9fkZLJBLnEL+C02MQG/wLaJr2HYMWf0d8CJyON5jrooQK/HC0r1oqlarh3B4W/p/D+T/Fiaml+G9jZIB7guwctT8NzNnTz48E5/Het80BZOnbQqFgSJx5wMIDsWdI8AWhFCiOsn6WK7AIR3sD+icwIIQjlJFwLoh43iyOE9eFgWWU9S/OXC73CdwFmPg2+HsAnluc3yc8x0L9MiBymx8ioQLFW61WpFQqPWescoAmsA3nWXgYDwETGi8lllWhZgbfAphzVUIFVkVUx9WhOGG4C2TJXsL1aaEUMJCJs4lKeWuWwmRzm1J8BRfallAKY+8B3b6NvYDA74BPTjKBCy2OC61gEudtegP3wwOhRhirA5ycIrwBOVAPmgL/UEJLYJU2LMT5KhoTJywLEU3w+uVAvQn8ZvbekdASWKVlbNeBhNy68qQnmaWBITiQJiBK4Y4+e+3ANyP6XkLbR3s69SqXW2li4xN71mf2sKG/z4o3tr7jB/mDdb4DhXtsAAAAAElFTkSuQmCC") 100% / .5em .3em no-repeat;
260
- width: 1.2rem;
270
+ .dp .dp-current:not(.dp-selected) {
271
+ background: var(--jsl-color-surface-selected);
261
272
  }
262
273
 
263
- .js-touch .slick-header-menubutton.resize-offset {
264
- width: 1.2rem;
265
- right: 1.2rem;
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;
266
278
  }
267
279
 
268
- .slick-header-columns {
269
- border-bottom: 2px solid silver;
280
+ .dp-day-today:after {
281
+ content: "";
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);
270
289
  }
271
290
 
272
- .slick-header-column {
273
- text-align: center;
274
- border-right: 1px solid silver;
275
- font-weight: bold;
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;
276
297
  }
277
298
 
278
- .slick-header-column:hover, .slick-header-column-active {
279
- color: #fff;
280
- background: #3b99ff;
299
+ .dp-cal-footer button {
300
+ font-size: .75rem;
301
+ font-weight: 500;
281
302
  }
282
303
 
283
- .slick-header-column > .slick-header-menubutton:hover {
284
- background-color: #0000004d;
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;
285
311
  }
286
312
 
287
- .slick-headerrow {
288
- background: #fafafa;
313
+ .dp-months button {
314
+ padding: .875rem .25rem;
315
+ font-size: .75rem;
289
316
  }
290
317
 
291
- .slick-headerrow-column {
292
- background: #fafafa;
293
- border-bottom: 0;
294
- height: 100%;
318
+ .dp-years {
319
+ gap: .25rem;
320
+ height: 19rem;
321
+ padding: .75rem;
322
+ display: grid;
323
+ overflow-y: auto;
295
324
  }
296
325
 
297
- .slick-row {
298
- background: #fff;
299
- border: 0;
300
- line-height: 26px;
301
- position: absolute;
326
+ .dp-years button {
327
+ width: 100%;
328
+ padding: .625rem;
329
+ display: block;
302
330
  }
303
331
 
304
- .slick-row.selected {
305
- z-index: 10;
306
- background: #dfe8f6;
332
+ @media (forced-colors: active) {
333
+ .dp .dp-selected {
334
+ outline: 2px solid highlight;
335
+ }
307
336
  }
308
337
 
309
- .slick-cell {
310
- padding-left: 4px;
311
- padding-right: 4px;
338
+ .jsl-button {
339
+ --jsl-button-height: 2rem;
340
+ --jsl-button-padding: .875rem;
341
+ box-sizing: border-box;
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;
360
+ text-decoration: none;
361
+ transition: background-color .12s, border-color .12s, box-shadow .12s;
362
+ display: inline-flex;
363
+ position: relative;
312
364
  }
313
365
 
314
- .slick-group {
315
- border-bottom: 2px solid silver;
366
+ .jsl-button:where(:hover) {
367
+ background: var(--jsl-button-primary-hover, var(--jsl-color-accent-hover));
316
368
  }
317
369
 
318
- .slick-group .slick-cell {
319
- background: #d4e4ec;
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;
320
373
  }
321
374
 
322
- .slick-group-toggle {
323
- vertical-align: middle;
324
- width: 20px;
325
- height: 20px;
326
- margin-right: 5px;
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));
327
379
  }
328
380
 
329
- .slick-group-toggle.expanded {
330
- 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;
381
+ .jsl-button.jsl-button-ghost {
382
+ color: var(--jsl-button-text, var(--jsl-color-text));
383
+ background: none;
331
384
  }
332
385
 
333
- .slick-group-toggle.collapsed {
334
- 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;
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));
335
389
  }
336
390
 
337
- .slick-group-totals {
338
- color: gray;
339
- background: #fff;
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;
340
396
  }
341
397
 
342
- .slick-group-select-checkbox {
343
- width: 13px;
344
- height: 13px;
345
- margin: 3px 10px 0 0;
346
- display: inline-block;
398
+ .jsl-button:focus-visible {
399
+ outline: 2px solid var(--jsl-button-focus, var(--jsl-color-focus));
400
+ outline-offset: 3px;
347
401
  }
348
402
 
349
- .slick-cell.selected {
350
- background-color: #cde6f7;
403
+ .jsl-button.jsl-button-small {
404
+ --jsl-button-height: 1.75rem;
405
+ --jsl-button-padding: .625rem;
406
+ gap: .375rem;
407
+ font-size: .8125rem;
351
408
  }
352
409
 
353
- .slick-cell.active {
354
- border-style: solid;
355
- border-color: #017dbe;
410
+ .jsl-button.jsl-button-large {
411
+ --jsl-button-height: 2.5rem;
412
+ --jsl-button-padding: 1rem;
413
+ font-size: .9375rem;
356
414
  }
357
415
 
358
- .slick-sortable-placeholder {
359
- background: silver !important;
416
+ .jsl-button.jsl-button-icon-only {
417
+ width: var(--jsl-button-height);
418
+ flex-shrink: 0;
419
+ padding: 0;
360
420
  }
361
421
 
362
- .slick-row.odd {
363
- background: #ededed;
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;
364
431
  }
365
432
 
366
- .slick-row.ui-state-active {
367
- background: #f5f7d7;
433
+ .jsl-button-icon > img, .jsl-button-icon > svg {
434
+ object-fit: contain;
435
+ width: 100%;
436
+ height: 100%;
437
+ display: block;
368
438
  }
369
439
 
370
- .slick-row.loading {
371
- opacity: .5;
372
- filter: alpha(opacity= 50);
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;
448
+ position: absolute;
449
+ overflow: hidden;
373
450
  }
374
451
 
375
- .slick-cell.invalid {
376
- border-color: red;
377
- animation-name: slickgrid-invalid-hilite;
378
- animation-duration: .2s;
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;
379
458
  }
380
459
 
381
- @keyframes slickgrid-invalid-hilite {
382
- from {
383
- box-shadow: 0 0 6px red;
384
- }
385
-
386
- to {
387
- box-shadow: none;
460
+ @media (prefers-reduced-motion: reduce) {
461
+ .jsl-button {
462
+ transition: none;
388
463
  }
389
464
  }
390
465
 
391
- .new-row .slick-cell {
392
- background: #3b99ff55;
393
- border-top: 1px solid #aaa;
394
- }
395
-
396
- .resizable {
397
- position: relative;
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;
398
471
  }
399
472
 
400
- .resizable > .rs-r {
473
+ .jsl-dialog {
401
474
  box-sizing: border-box;
402
- cursor: w-resize;
403
- background: #14141433;
404
- width: .5rem;
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;
405
489
  position: absolute;
406
- top: 0;
407
- bottom: 0;
408
- right: 0;
490
+ top: 50%;
491
+ left: 50%;
492
+ transform: translate(-50%, -50%);
409
493
  }
410
494
 
411
- .resizable > .rs-b {
412
- box-sizing: border-box;
413
- cursor: n-resize;
414
- background: #14141433;
415
- height: .5rem;
416
- position: absolute;
417
- bottom: 0;
418
- left: 0;
419
- right: 0;
495
+ .jsl-dialog:focus {
496
+ outline: none;
420
497
  }
421
498
 
422
- .resizable > .rs-r.rs-b {
423
- top: initial;
424
- left: initial;
425
- cursor: nw-resize;
426
- bottom: 0;
427
- right: 0;
499
+ .jsl-dialog.resizable {
500
+ position: absolute;
428
501
  }
429
502
 
430
- .slick-header-menubutton {
431
- cursor: pointer;
432
- background-image: url("data:image/gif;base64,R0lGODlhDgAOAIABADtKYwAAACH5BAEAAAEALAAAAAAOAA4AAAISjI+py+0PHZgUsGobhTn6DxoFADs=");
433
- background-position: 0;
434
- background-repeat: no-repeat;
435
- border-left: thin ridge silver;
436
- width: 14px;
437
- display: none;
438
- position: absolute;
439
- top: 0;
440
- bottom: 0;
441
- right: 0;
503
+ .jsl-dialog:focus-visible {
504
+ outline: 2px solid var(--jsl-color-focus);
505
+ outline-offset: 3px;
442
506
  }
443
507
 
444
- .slick-header-menubutton.resize-offset {
445
- right: .5rem;
508
+ .jsl-dialog > .dlg-header {
509
+ box-sizing: border-box;
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;
527
+ }
528
+
529
+ .jsl-dialog-moveable > .dlg-header {
530
+ cursor: move;
531
+ touch-action: none;
446
532
  }
447
533
 
448
- .slick-header-column:hover > .slick-header-menubutton, .slick-header-column-active .slick-header-menubutton {
449
- display: inline-block;
534
+ .jsl-dialog .dlg-close-btn {
535
+ box-sizing: border-box;
536
+ width: 2rem;
537
+ height: 2rem;
538
+ color: var(--jsl-color-text-secondary);
539
+ font: inherit;
540
+ cursor: pointer;
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;
450
551
  }
451
552
 
452
- .slick-header-menu {
453
- cursor: default;
454
- margin: 0;
455
- padding: 2px;
456
- display: inline-block;
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;
457
559
  position: absolute;
560
+ transform: rotate(45deg);
458
561
  }
459
562
 
460
- .slick-header-menuitem {
461
- cursor: pointer;
462
- margin: 0;
463
- padding: 0;
464
- list-style: none;
563
+ .jsl-dialog .dlg-close-btn:after {
564
+ transform: rotate(-45deg);
465
565
  }
466
566
 
467
- .slick-header-menuicon {
468
- vertical-align: middle;
469
- background-position: center;
470
- background-repeat: no-repeat;
471
- width: 16px;
472
- height: 16px;
473
- margin-right: 4px;
474
- display: inline-block;
567
+ .jsl-dialog .dlg-close-btn:hover {
568
+ background: var(--jsl-color-surface-hover);
569
+ color: var(--jsl-color-text);
475
570
  }
476
571
 
477
- .slick-header-menucontent {
478
- vertical-align: middle;
479
- display: inline-block;
572
+ .jsl-dialog .dlg-close-btn:focus-visible {
573
+ outline: 2px solid var(--jsl-color-focus);
574
+ outline-offset: 2px;
480
575
  }
481
576
 
482
- .slick-header-menuitem-disabled {
483
- color: silver;
577
+ .jsl-dialog > .dlg-body {
578
+ box-sizing: border-box;
579
+ overflow-wrap: anywhere;
580
+ overscroll-behavior: contain;
581
+ flex: auto;
582
+ min-width: 0;
583
+ min-height: 0;
584
+ padding: 1.5rem;
585
+ overflow: auto;
484
586
  }
485
587
 
486
- .slick-header-menuitem.slick-header-menuitem-divider {
487
- cursor: default;
488
- background-color: #cecece;
489
- border: none;
490
- height: 1px;
491
- margin: 8px 2px;
492
- padding: 0;
493
- overflow: hidden;
588
+ .jsl-dialog > .dlg-footer {
589
+ box-sizing: border-box;
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;
494
596
  }
495
597
 
496
- .slick-header-menuitem-divider.slick-header-menuitem:hover {
497
- background-color: #cecece;
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;
498
604
  }
499
605
 
500
- .slick-header-menu {
501
- z-index: 20;
502
- background: #fff;
503
- border: 1px solid #bebebe;
504
- padding: 2px;
505
- box-shadow: 2px 2px 2px silver;
606
+ .jsl-dialog > .dlg-footer > button + button {
607
+ margin-inline-start: .5rem;
506
608
  }
507
609
 
508
- .slick-header-menuitem {
509
- border-radius: 3px;
510
- padding: 2px 4px;
610
+ .jsl-dialog > .dlg-header[hidden], .jsl-dialog > .dlg-footer[hidden] {
611
+ display: none;
511
612
  }
512
613
 
513
- .slick-header-menuitem:hover {
514
- color: #fff;
515
- background: #3b99ff;
614
+ .jsl-dialog .slickgrid {
615
+ border-radius: 0;
516
616
  }
517
617
 
518
- .slick-header-menuitem-disabled {
519
- background: inherit !important;
520
- border-color: #0000 !important;
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;
521
637
  }
522
638
 
523
- .slick-column-name, .slick-sort-indicator {
524
- float: left;
525
- margin-bottom: 100px;
526
- display: inline-block;
527
- }
639
+ @media (width <= 480px) {
640
+ .jsl-dialog {
641
+ max-width: calc(100% - 1.5rem);
642
+ max-height: calc(100% - 1.5rem);
643
+ }
528
644
 
529
- .slick-header-button {
530
- float: right;
531
- vertical-align: top;
532
- cursor: pointer;
533
- background-position: center;
534
- background-repeat: no-repeat;
535
- width: 15px;
536
- height: 15px;
537
- margin: 1px 2rem 100px 1px;
538
- display: inline-block;
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
+ }
539
656
  }
540
657
 
541
- .slick-header-button-hidden {
542
- width: 0;
543
- transition: width .2s;
658
+ .jsl-number {
659
+ text-align: right;
544
660
  }
545
661
 
546
- .slick-header-column:hover > .slick-header-button {
547
- width: 15px;
662
+ .jsl-notification-container {
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;
675
+ position: fixed;
676
+ top: 0;
677
+ right: 0;
678
+ overflow-y: auto;
548
679
  }
549
680
 
550
- .jsl-dialog {
551
- z-index: 2002;
552
- pointer-events: all;
553
- background: #fff;
554
- border: 2px solid #ddd;
555
- border-radius: .8rem;
556
- position: relative;
557
- top: 50%;
558
- left: 50%;
559
- transform: translate(-50%, -50%);
681
+ .jsl-notification-container > div {
682
+ flex-direction: column;
683
+ gap: .75rem;
684
+ display: flex;
560
685
  }
561
686
 
562
- .jsl-dialog .jsl-button {
563
- vertical-align: middle;
564
- cursor: pointer;
687
+ .jsl-notification {
688
+ --jsl-notification-tone: var(--jsl-color-text-secondary);
565
689
  box-sizing: border-box;
566
- letter-spacing: .1rem;
567
- text-align: center;
568
- white-space: nowrap;
569
- border-radius: .3rem;
570
- height: 2rem;
571
- padding: 0 1rem;
572
- line-height: 2rem;
573
- text-decoration: none;
574
- display: inline-block;
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;
575
707
  }
576
708
 
577
- .dlg-close-btn {
578
- color: #555;
579
- box-sizing: border-box;
580
- cursor: pointer;
581
- background: #d8d8d8;
582
- border-top-right-radius: .8rem;
583
- width: 2.5rem;
584
- font-size: 2rem;
585
- font-weight: bold;
586
- line-height: 2.8rem;
587
- position: absolute;
588
- top: 0;
589
- bottom: 0;
590
- right: 0;
709
+ .jsl-notification[hidden] {
710
+ display: none;
591
711
  }
592
712
 
593
- .dlg-close-btn:hover {
594
- color: #fff;
595
- background: #b22121;
713
+ .jsl-notification--info {
714
+ --jsl-notification-tone: var(--jsl-color-info);
596
715
  }
597
716
 
598
- .jsl-dialog-overlay {
599
- z-index: 2001;
600
- background: #000c;
601
- height: 100vh;
602
- position: fixed;
603
- inset: 0;
717
+ .jsl-notification--success {
718
+ --jsl-notification-tone: var(--jsl-color-success);
604
719
  }
605
720
 
606
- .jsl-dialog > .dlg-header {
607
- box-sizing: content-box;
608
- text-align: center;
609
- background: #f8f8f8;
610
- border-bottom: 1px solid #ededed;
611
- border-top-left-radius: .8rem;
612
- border-top-right-radius: .8rem;
613
- height: 2rem;
614
- padding: .6rem;
615
- font-size: 1.5rem;
616
- position: relative;
721
+ .jsl-notification--warning {
722
+ --jsl-notification-tone: var(--jsl-color-warning);
617
723
  }
618
724
 
619
- .jsl-dialog > .dlg-body {
620
- box-sizing: border-box;
621
- margin-bottom: 3rem;
622
- padding: 1rem;
623
- overflow: auto;
725
+ .jsl-notification--error {
726
+ --jsl-notification-tone: var(--jsl-color-danger);
624
727
  }
625
728
 
626
- .jsl-dialog > .dlg-footer {
729
+ .jsl-notification-icon {
627
730
  box-sizing: border-box;
628
- text-align: right;
629
- background: #f8f8f8;
630
- border-top: 1px solid #ededed;
631
- border-bottom-right-radius: .8rem;
632
- border-bottom-left-radius: .8rem;
633
- height: 3rem;
634
- padding: .5rem;
635
- position: absolute;
636
- bottom: 0;
637
- left: 0;
638
- right: 0;
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;
639
742
  }
640
743
 
641
- .jsl-dialog > .dlg-footer button {
642
- margin-left: 1rem;
744
+ .jsl-notification--success .jsl-notification-icon {
745
+ font-size: .75rem;
643
746
  }
644
747
 
645
- .jsl-dialog .slickgrid {
646
- border-radius: 0;
748
+ .jsl-notification-copy {
749
+ overflow-wrap: anywhere;
750
+ min-width: 0;
647
751
  }
648
752
 
649
- .v-r-comp, .v-r-comp .v-r-child > * {
650
- height: 100%;
753
+ .jsl-notification-title {
754
+ color: var(--jsl-color-text);
755
+ margin-bottom: .25rem;
756
+ font-weight: 600;
651
757
  }
652
758
 
653
- .cell-reorder {
654
- cursor: move;
655
- background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAMAAABhq6zVAAADAFBMVEUAAACWlpbY2NgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADmpIfcAAABAHRSTlP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AU/cHJQAAABlJREFUCNdj+I8EGFA5jHAA5DDBAW2VIQEAmyRUB6U7kZIAAAAASUVORK5CYII=");
656
- background-position: center;
657
- background-repeat: no-repeat;
759
+ .jsl-notification-title[hidden] {
760
+ display: none;
658
761
  }
659
762
 
660
- .header-overlay {
661
- background-color: #217346;
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;
769
+ cursor: pointer;
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;
662
779
  }
663
780
 
664
- .cell-overlay, .selection-cell-overlay {
665
- z-index: 20;
666
- background-color: #217346;
667
- display: block;
668
- position: absolute;
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
+ }
828
+ }
829
+
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 {
831
+ background: var(--jsl-color-surface);
832
+ width: 100%;
833
+ position: relative;
834
+ overflow: auto;
835
+ border-left: 0 !important;
836
+ }
837
+
838
+ .slick-header.ui-state-default {
839
+ overflow: inherit;
840
+ }
841
+
842
+ .slick-header::-webkit-scrollbar {
843
+ display: none;
844
+ }
845
+
846
+ .slick-headerrow::-webkit-scrollbar {
847
+ display: none;
848
+ }
849
+
850
+ .slick-footerrow::-webkit-scrollbar {
851
+ display: none;
852
+ }
853
+
854
+ .slick-header-columns, .slick-headerrow-columns, .slick-footerrow-columns, .slick-group-header-columns {
855
+ white-space: nowrap;
856
+ cursor: default;
857
+ position: relative;
858
+ overflow: hidden;
859
+ }
860
+
861
+ .slick-header-column.ui-state-default, .slick-group-header-column.ui-state-default {
862
+ text-overflow: ellipsis;
863
+ border-right: 1px solid var(--jsl-color-border-subtle);
864
+ border-top: 1px solid var(--jsl-color-border-subtle);
865
+ float: left;
866
+ height: 20px;
867
+ margin: 0;
868
+ padding: 4px;
869
+ line-height: 20px;
870
+ position: relative;
871
+ overflow: hidden;
872
+ box-sizing: content-box !important;
873
+ border-bottom: 0 !important;
874
+ border-left: 0 !important;
875
+ }
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
+
882
+ .slick-footerrow-column.ui-state-default {
883
+ text-overflow: ellipsis;
884
+ border-right: 1px solid var(--jsl-color-border-subtle);
885
+ float: left;
886
+ vertical-align: middle;
887
+ border-top: 0;
888
+ border-bottom: 0;
889
+ border-left: 0;
890
+ align-content: center;
891
+ height: auto;
892
+ margin: 0;
893
+ padding: 4px;
894
+ line-height: 20px;
895
+ top: 0;
896
+ bottom: 0;
897
+ }
898
+
899
+ .slick-headerrow-column.ui-state-default, .slick-footerrow-column.ui-state-default {
900
+ padding: 4px;
901
+ }
902
+
903
+ .slick-header-column-sorted {
904
+ font-style: inherit;
905
+ }
906
+
907
+ .slick-sort-indicator {
908
+ float: left;
909
+ width: 8px;
910
+ height: 5px;
911
+ margin-top: 6px;
912
+ margin-left: 4px;
913
+ }
914
+
915
+ .slick-sort-indicator-numbered {
916
+ float: left;
917
+ width: 8px;
918
+ height: 5px;
919
+ color: var(--jsl-color-text-secondary);
920
+ margin-top: 0;
921
+ margin-left: 4px;
922
+ font-style: normal;
923
+ font-weight: bold;
924
+ line-height: 20px;
925
+ }
926
+
927
+ .grid-canvas {
928
+ outline: 0;
929
+ position: relative;
930
+ }
931
+
932
+ .slick-row.ui-widget-content, .slick-row.ui-state-active {
933
+ border: 0;
934
+ width: 100%;
935
+ position: absolute;
936
+ }
937
+
938
+ .slick-cell, .slick-headerrow-column, .slick-footerrow-column {
939
+ border: 1px solid #0000;
940
+ border-right: 1px dotted var(--jsl-color-border-subtle);
941
+ text-overflow: ellipsis;
942
+ vertical-align: middle;
943
+ z-index: 1;
944
+ white-space: nowrap;
945
+ cursor: default;
946
+ margin: 0;
947
+ padding: 1px 2px 1px 1px;
948
+ position: absolute;
949
+ overflow: hidden;
950
+ box-sizing: content-box !important;
951
+ }
952
+
953
+ .slick-headerrow-column {
954
+ border-bottom-color: var(--jsl-color-border-subtle);
955
+ }
956
+
957
+ .slick-footerrow-column {
958
+ border-top-color: var(--jsl-color-border-subtle);
959
+ }
960
+
961
+ .slick-group-toggle {
962
+ display: inline-block;
963
+ }
964
+
965
+ .slick-cell.highlighted {
966
+ background: var(--jsl-color-surface-selected);
967
+ -o-transition: all .5s;
968
+ transition: all .5s;
969
+ }
970
+
971
+ .slick-cell.flashing {
972
+ border: 1px solid var(--jsl-color-danger) !important;
973
+ }
974
+
975
+ .slick-cell.editable {
976
+ z-index: 11;
977
+ overflow: visible;
978
+ }
979
+
980
+ .slick-cell:focus {
981
+ outline: none;
982
+ }
983
+
984
+ .slick-reorder-proxy {
985
+ background: var(--jsl-color-accent);
986
+ opacity: .15;
987
+ filter: alpha(opacity = 15);
988
+ cursor: move;
989
+ display: inline-block;
990
+ }
991
+
992
+ .slick-reorder-guide {
993
+ background: var(--jsl-color-accent);
994
+ opacity: .7;
995
+ height: 2px;
996
+ filter: alpha(opacity = 70);
997
+ display: inline-block;
998
+ }
999
+
1000
+ .slick-selection {
1001
+ z-index: 10;
1002
+ border: 2px dashed var(--jsl-color-focus);
1003
+ position: absolute;
1004
+ }
1005
+
1006
+ .slick-pane {
1007
+ outline: 0;
1008
+ width: 100%;
1009
+ position: absolute;
1010
+ overflow: hidden;
1011
+ }
1012
+
1013
+ .slick-pane-header {
1014
+ display: block;
1015
+ }
1016
+
1017
+ .slick-header, .slick-headerrow, .slick-top-panel-scroller {
1018
+ position: relative;
1019
+ overflow: hidden;
1020
+ }
1021
+
1022
+ .slick-top-panel {
1023
+ width: 10000px;
1024
+ }
1025
+
1026
+ .slick-viewport {
1027
+ background: var(--jsl-color-surface);
1028
+ outline: 0;
1029
+ width: 100%;
1030
+ position: relative;
1031
+ }
1032
+
1033
+ .slick-wrap {
1034
+ white-space: normal;
1035
+ }
1036
+
1037
+ input.editor-text, textarea.editor-text {
1038
+ resize: none;
1039
+ background: none;
1040
+ border: 0;
1041
+ outline: 0;
1042
+ width: 100%;
1043
+ height: 100%;
1044
+ margin: 0;
1045
+ padding: 0;
1046
+ }
1047
+
1048
+ .slick-cell .jsl-container {
1049
+ position: absolute;
1050
+ inset: 0;
1051
+ }
1052
+
1053
+ .slick-cell .jsl-container .jsl-selected {
1054
+ padding: 0;
1055
+ }
1056
+
1057
+ .slickgrid {
1058
+ box-sizing: border-box;
1059
+ border: solid 1px var(--jsl-color-border);
1060
+ border-radius: 3px;
1061
+ }
1062
+
1063
+ .slick-col-ghost {
1064
+ box-sizing: content-box;
1065
+ pointer-events: none;
1066
+ position: absolute;
1067
+ }
1068
+
1069
+ .slick-ghost-content {
1070
+ border: solid 2px var(--jsl-color-border);
1071
+ background: var(--jsl-color-surface-selected);
1072
+ position: absolute;
1073
+ left: 0;
1074
+ right: 0;
1075
+ }
1076
+
1077
+ .editor-text {
1078
+ font-size: 100%;
1079
+ }
1080
+
1081
+ .slick-filtered-header {
1082
+ color: var(--jsl-color-accent);
1083
+ background: var(--jsl-color-surface-selected);
1084
+ }
1085
+
1086
+ .slick-preheader-panel .slick-column-name {
1087
+ text-align: center;
1088
+ float: none;
1089
+ }
1090
+
1091
+ .slick-header-column.resizable > .rs-r {
1092
+ background: none;
1093
+ }
1094
+
1095
+ .js-touch .slick-header-column > .slick-header-menubutton {
1096
+ display: inline-block;
1097
+ }
1098
+
1099
+ .js-touch .slick-header-column.resizable > .rs-r {
1100
+ background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsIAAA7CARUoSoAAAAMNSURBVEhLxVY7i1NBGM3NwzyMINiIjSKoC9tIBEG02FgkIeSxpJBlS7sV1s5fIRZqYWFhtYssEggJ5IEaFxERYdXWam1EkQVh82Lz8pzJl3jvzb1JjK8DA/lOZuacO/PNN+Po9/tT29LSktuKt2vov4B2xeo/c3M6piASiawHg8G9eDweEmoi2A/936G9wNg1oW2h0YUdKB4IBO45nU5Ht9s9ACLFYnFb/h4DxT0ez2uXy3WIca/XczQajZuVSuW+6mABWwPRaPSa3+9/DHFNKEe73a7XarWj1Wq1I5QByWQyBwMpCRVoAubL4K9ns9nPQo9guQVW4pwIK7BuJ05AZK3T6exIqMDVAx8Fn89kMieEHmHMQCwWuwrxTbM4l7JcLj8SyhL8QrfbncRKbXGMHuBDMLFtNmHYAor7fL4KxF1CKWDCcj6fj0k4EyR/7uo/hICJXZi5PNyO0Qowgbxeb8ksjgEfuH8SzgwmXrPZXMFKGJIM4qeQE+/T6fRJxmoFwuHwcRybjxA6onoJzG7ngeQTt9TwYcin3Xq9fkZLJBLnEL+C02MQG/wLaJr2HYMWf0d8CJyON5jrooQK/HC0r1oqlarh3B4W/p/D+T/Fiaml+G9jZIB7guwctT8NzNnTz48E5/Het80BZOnbQqFgSJx5wMIDsWdI8AWhFCiOsn6WK7AIR3sD+icwIIQjlJFwLoh43iyOE9eFgWWU9S/OXC73CdwFmPg2+HsAnluc3yc8x0L9MiBymx8ioQLFW61WpFQqPWescoAmsA3nWXgYDwETGi8lllWhZgbfAphzVUIFVkVUx9WhOGG4C2TJXsL1aaEUMJCJs4lKeWuWwmRzm1J8BRfallAKY+8B3b6NvYDA74BPTjKBCy2OC61gEudtegP3wwOhRhirA5ycIrwBOVAPmgL/UEJLYJU2LMT5KhoTJywLEU3w+uVAvQn8ZvbekdASWKVlbNeBhNy68qQnmaWBITiQJiBK4Y4+e+3ANyP6XkLbR3s69SqXW2li4xN71mf2sKG/z4o3tr7jB/mDdb4DhXtsAAAAAElFTkSuQmCC") 100% / .5em .3em no-repeat;
1101
+ width: 1.2rem;
1102
+ }
1103
+
1104
+ .js-touch .slick-header-menubutton.resize-offset {
1105
+ width: 1.2rem;
1106
+ right: 1.2rem;
1107
+ }
1108
+
1109
+ .slick-header-columns {
1110
+ border-bottom: 2px solid var(--jsl-color-border-subtle);
1111
+ background: var(--jsl-color-surface-subtle);
1112
+ }
1113
+
1114
+ .slick-header-column {
1115
+ border-right: 1px solid var(--jsl-color-border-subtle);
1116
+ text-align: inherit;
1117
+ font-weight: 600;
1118
+ }
1119
+
1120
+ .slick-header-column:hover, .slick-header-column-active {
1121
+ background: var(--jsl-color-surface-hover);
1122
+ color: var(--jsl-color-text);
1123
+ }
1124
+
1125
+ .slick-header-column > .slick-header-menubutton:hover {
1126
+ background-color: var(--jsl-color-surface-selected);
1127
+ }
1128
+
1129
+ .slick-headerrow {
1130
+ background: var(--jsl-color-surface-subtle);
1131
+ }
1132
+
1133
+ .slick-headerrow-column {
1134
+ background: var(--jsl-color-surface-subtle);
1135
+ border-bottom: 0;
1136
+ height: 100%;
1137
+ }
1138
+
1139
+ .slick-row {
1140
+ background: var(--jsl-color-surface);
1141
+ line-height: inherit;
1142
+ border: 0;
1143
+ align-items: center;
1144
+ display: flex;
1145
+ position: absolute;
1146
+ }
1147
+
1148
+ .slick-row.selected {
1149
+ z-index: 10;
1150
+ background: var(--jsl-color-surface-selected);
1151
+ }
1152
+
1153
+ .slick-cell {
1154
+ align-content: center;
1155
+ padding-left: 4px;
1156
+ padding-right: 4px;
1157
+ }
1158
+
1159
+ .slick-group {
1160
+ border-bottom: 2px solid var(--jsl-color-border-subtle);
1161
+ }
1162
+
1163
+ .slick-group .slick-cell {
1164
+ background: var(--jsl-color-surface-selected);
1165
+ align-items: center;
1166
+ display: flex;
1167
+ }
1168
+
1169
+ .slick-group-toggle {
1170
+ vertical-align: middle;
1171
+ flex-shrink: 0;
1172
+ width: 20px;
1173
+ height: 20px;
1174
+ margin-right: 5px;
1175
+ }
1176
+
1177
+ .slick-group-toggle.expanded {
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;
1180
+ }
1181
+
1182
+ .slick-group-toggle.collapsed {
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;
1185
+ }
1186
+
1187
+ .slick-group-totals {
1188
+ color: var(--jsl-color-text-secondary);
1189
+ background: var(--jsl-color-surface);
1190
+ }
1191
+
1192
+ .slick-group-select-checkbox {
1193
+ width: 13px;
1194
+ height: 13px;
1195
+ margin: 3px 10px 0 0;
1196
+ display: inline-block;
1197
+ }
1198
+
1199
+ .slick-cell.selected {
1200
+ background-color: var(--jsl-color-surface-selected);
1201
+ }
1202
+
1203
+ .slick-cell.active {
1204
+ border-color: var(--jsl-color-focus);
1205
+ border-style: solid;
1206
+ }
1207
+
1208
+ .slick-sortable-placeholder {
1209
+ background: var(--jsl-color-surface-selected) !important;
1210
+ }
1211
+
1212
+ .slick-row.odd {
1213
+ background: var(--jsl-color-surface-subtle);
1214
+ }
1215
+
1216
+ .slick-row.ui-state-active {
1217
+ background: var(--jsl-color-surface-selected);
1218
+ }
1219
+
1220
+ .slick-row.loading {
1221
+ opacity: .5;
1222
+ filter: alpha(opacity = 50);
1223
+ }
1224
+
1225
+ .slick-cell.invalid {
1226
+ border-color: var(--jsl-color-danger);
1227
+ animation-name: slickgrid-invalid-hilite;
1228
+ animation-duration: .2s;
1229
+ }
1230
+
1231
+ @keyframes slickgrid-invalid-hilite {
1232
+ from {
1233
+ box-shadow: 0 0 6px var(--jsl-color-danger);
1234
+ }
1235
+
1236
+ to {
1237
+ box-shadow: none;
1238
+ }
1239
+ }
1240
+
1241
+ .new-row .slick-cell {
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;
1344
+ }
1345
+
1346
+ .slick-header-menubutton {
1347
+ cursor: pointer;
1348
+ background-image: url("data:image/gif;base64,R0lGODlhDgAOAIABADtKYwAAACH5BAEAAAEALAAAAAAOAA4AAAISjI+py+0PHZgUsGobhTn6DxoFADs=");
1349
+ background-position: 0;
1350
+ background-repeat: no-repeat;
1351
+ border-left: thin ridge silver;
1352
+ width: 14px;
1353
+ display: none;
1354
+ position: absolute;
1355
+ top: 0;
1356
+ bottom: 0;
1357
+ right: 0;
1358
+ }
1359
+
1360
+ .slick-header-menubutton.resize-offset {
1361
+ right: .5rem;
1362
+ }
1363
+
1364
+ .slick-header-column:hover > .slick-header-menubutton, .slick-header-column-active .slick-header-menubutton {
1365
+ display: inline-block;
1366
+ }
1367
+
1368
+ .slick-header-menu {
1369
+ cursor: default;
1370
+ margin: 0;
1371
+ padding: 2px;
1372
+ display: inline-block;
1373
+ position: absolute;
1374
+ }
1375
+
1376
+ .slick-header-menuitem {
1377
+ cursor: pointer;
1378
+ margin: 0;
1379
+ padding: 0;
1380
+ list-style: none;
1381
+ }
1382
+
1383
+ .slick-header-menuicon {
1384
+ vertical-align: middle;
1385
+ background-position: center;
1386
+ background-repeat: no-repeat;
1387
+ width: 16px;
1388
+ height: 16px;
1389
+ margin-right: 4px;
1390
+ display: inline-block;
1391
+ }
1392
+
1393
+ .slick-header-menucontent {
1394
+ vertical-align: middle;
1395
+ display: inline-block;
1396
+ }
1397
+
1398
+ .slick-header-menuitem-disabled {
1399
+ color: silver;
1400
+ }
1401
+
1402
+ .slick-header-menuitem.slick-header-menuitem-divider {
1403
+ cursor: default;
1404
+ background-color: #cecece;
1405
+ border: none;
1406
+ height: 1px;
1407
+ margin: 8px 2px;
1408
+ padding: 0;
1409
+ overflow: hidden;
1410
+ }
1411
+
1412
+ .slick-header-menuitem-divider.slick-header-menuitem:hover {
1413
+ background-color: #cecece;
1414
+ }
1415
+
1416
+ .slick-header-menu {
1417
+ z-index: 20;
1418
+ background: #fff;
1419
+ border: 1px solid #bebebe;
1420
+ padding: 2px;
1421
+ box-shadow: 2px 2px 2px silver;
1422
+ }
1423
+
1424
+ .slick-header-menuitem {
1425
+ border-radius: 3px;
1426
+ padding: 2px 4px;
1427
+ }
1428
+
1429
+ .slick-header-menuitem:hover {
1430
+ color: #fff;
1431
+ background: #3b99ff;
1432
+ }
1433
+
1434
+ .slick-header-menuitem-disabled {
1435
+ background: inherit !important;
1436
+ border-color: #0000 !important;
1437
+ }
1438
+
1439
+ .slick-column-name, .slick-sort-indicator {
1440
+ float: left;
1441
+ margin-bottom: 100px;
1442
+ display: inline-block;
1443
+ }
1444
+
1445
+ .slick-header-button {
1446
+ float: right;
1447
+ vertical-align: top;
1448
+ cursor: pointer;
1449
+ background-position: center;
1450
+ background-repeat: no-repeat;
1451
+ width: 15px;
1452
+ height: 15px;
1453
+ margin: 1px 2rem 100px 1px;
1454
+ display: inline-block;
1455
+ }
1456
+
1457
+ .slick-header-button-hidden {
1458
+ width: 0;
1459
+ transition: width .2s;
1460
+ }
1461
+
1462
+ .slick-header-column:hover > .slick-header-button {
1463
+ width: 15px;
1464
+ }
1465
+
1466
+ .v-r-comp, .v-r-comp .v-r-child > * {
1467
+ height: 100%;
1468
+ }
1469
+
1470
+ .cell-reorder {
1471
+ cursor: move;
1472
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAMAAABhq6zVAAADAFBMVEUAAACWlpbY2NgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADmpIfcAAABAHRSTlP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AU/cHJQAAABlJREFUCNdj+I8EGFA5jHAA5DDBAW2VIQEAmyRUB6U7kZIAAAAASUVORK5CYII=");
1473
+ background-position: center;
1474
+ background-repeat: no-repeat;
1475
+ }
1476
+
1477
+ .header-overlay {
1478
+ background-color: #217346;
1479
+ }
1480
+
1481
+ .cell-overlay, .selection-cell-overlay {
1482
+ z-index: 20;
1483
+ background-color: #217346;
1484
+ display: block;
1485
+ position: absolute;
669
1486
  }
670
1487
 
671
1488
  .handle-overlay {
@@ -675,13 +1492,1647 @@ input.editor-text, textarea.editor-text {
675
1492
  border: 1px solid #fff;
676
1493
  width: 2px;
677
1494
  height: 2px;
678
- padding: 3px;
1495
+ padding: 3px;
1496
+ position: absolute;
1497
+ }
1498
+
1499
+ .overlay-handle-decorator {
1500
+ z-index: 20;
1501
+ border: 2px solid #217346;
1502
+ }
1503
+
1504
+ .select-comp {
1505
+ box-sizing: border-box;
1506
+ vertical-align: middle;
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;
1515
+ position: relative;
1516
+ }
1517
+
1518
+ .select-comp *, .sel-comp-dd * {
1519
+ box-sizing: border-box;
1520
+ }
1521
+
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;
1540
+ }
1541
+
1542
+ .select-comp:has(.clear-btn:not([hidden])) .sel-expander {
1543
+ padding-right: 3.5rem;
1544
+ }
1545
+
1546
+ .select-comp .sel-expander:hover:not(:disabled) {
1547
+ border-color: var(--jsl-color-text-muted);
1548
+ }
1549
+
1550
+ .select-comp.expanded .sel-expander {
1551
+ border-color: var(--jsl-color-accent);
1552
+ }
1553
+
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;
1557
+ }
1558
+
1559
+ .select-comp .sel-result {
1560
+ text-overflow: ellipsis;
1561
+ white-space: nowrap;
1562
+ flex: 1;
1563
+ min-width: 0;
1564
+ overflow: hidden;
1565
+ }
1566
+
1567
+ .select-comp .sel-placeholder {
1568
+ color: var(--jsl-color-text-muted);
1569
+ }
1570
+
1571
+ .select-comp .sel-result > .sel-dd-item {
1572
+ text-overflow: ellipsis;
1573
+ display: block;
1574
+ overflow: hidden;
1575
+ }
1576
+
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);
1585
+ }
1586
+
1587
+ .select-comp.expanded .sel-chevron {
1588
+ transform: rotate(225deg) translate(-2px, -1px);
1589
+ }
1590
+
1591
+ .select-comp:has(.clear-btn:not([hidden])) .sel-chevron {
1592
+ position: absolute;
1593
+ right: .875rem;
1594
+ }
1595
+
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
+ }
1616
+
1617
+ .select-comp .clear-btn:hover:not(:disabled) {
1618
+ background: var(--jsl-color-surface-hover);
1619
+ color: var(--jsl-color-text);
1620
+ }
1621
+
1622
+ .select-comp .clear-btn[hidden] {
1623
+ display: none;
1624
+ }
1625
+
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;
1630
+ }
1631
+
1632
+ .select-comp:is(.disabled, :has( > .sel-expander:disabled)) .clear-btn {
1633
+ color: var(--jsl-color-disabled-text);
1634
+ cursor: not-allowed;
1635
+ }
1636
+
1637
+ .select-comp:is(.disabled, :has( > .sel-expander:disabled)) .sel-result, .select-comp:is(.disabled, :has( > .sel-expander:disabled)) .sel-chevron {
1638
+ opacity: .65;
1639
+ }
1640
+
1641
+ .select-comp.multiple .sel-result:not(.sel-placeholder) {
1642
+ white-space: normal;
1643
+ flex-wrap: wrap;
1644
+ gap: .25rem;
1645
+ display: flex;
1646
+ }
1647
+
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;
1683
+ position: absolute;
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;
1740
+ }
1741
+
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;
1748
+ height: 100%;
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;
1808
+ }
1809
+
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);
1820
+ text-align: center;
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
+ }
1862
+ }
1863
+
1864
+ .autocomplete-suggestions {
1865
+ z-index: 2200;
1866
+ box-sizing: border-box;
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;
1876
+ display: none;
1877
+ position: absolute;
1878
+ overflow-y: auto;
1879
+ box-shadow: 0 12px 32px #0000001f, 0 2px 6px #0000000f;
1880
+ }
1881
+
1882
+ .autocomplete-suggestion {
1883
+ white-space: nowrap;
1884
+ text-overflow: ellipsis;
1885
+ cursor: pointer;
1886
+ border-radius: .375rem;
1887
+ padding: .5rem .625rem;
1888
+ line-height: 1.4;
1889
+ position: relative;
1890
+ overflow: hidden;
1891
+ }
1892
+
1893
+ .autocomplete-suggestion b {
1894
+ color: inherit;
1895
+ font-weight: 600;
1896
+ }
1897
+
1898
+ .autocomplete-suggestion.selected, .autocomplete-suggestion:hover {
1899
+ background: var(--jsl-color-surface-selected);
1900
+ }
1901
+
1902
+ @media (prefers-reduced-motion: reduce) {
1903
+ .jsl-input, .jsl-date-input {
1904
+ transition: none;
1905
+ }
1906
+ }
1907
+
1908
+ .progress-comp {
1909
+ background: var(--jsl-color-border-subtle);
1910
+ border-radius: 999px;
1911
+ height: .5rem;
1912
+ position: relative;
1913
+ overflow: hidden;
1914
+ }
1915
+
1916
+ .progress-comp.has-label {
1917
+ height: 1.25rem;
1918
+ }
1919
+
1920
+ .progress-comp .bar {
1921
+ background: var(--jsl-color-accent);
1922
+ border-radius: inherit;
1923
+ height: 100%;
1924
+ }
1925
+
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;
1934
+ }
1935
+
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;
1951
+ }
1952
+
1953
+ .jsl-input:hover:not(:disabled), .jsl-date-input:hover:not(:disabled) {
1954
+ border-color: var(--jsl-color-text-muted);
1955
+ }
1956
+
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);
1961
+ }
1962
+
1963
+ .jsl-input::placeholder, .jsl-date-input::placeholder {
1964
+ color: var(--jsl-color-text-muted);
1965
+ opacity: 1;
1966
+ }
1967
+
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);
1972
+ }
1973
+
1974
+ .jsl-input[aria-invalid="true"] {
1975
+ border-color: var(--jsl-color-danger);
1976
+ }
1977
+
1978
+ textarea.jsl-input {
1979
+ resize: vertical;
1980
+ height: auto;
1981
+ min-height: 6rem;
1982
+ }
1983
+
1984
+ .jsl-input[type="color"] {
1985
+ cursor: pointer;
1986
+ width: 4rem;
1987
+ padding: .25rem;
1988
+ }
1989
+
1990
+ .jsl-input[type="number"], .jsl-input.jsl-number {
1991
+ font-variant-numeric: tabular-nums;
1992
+ }
1993
+
1994
+ @media (prefers-reduced-motion: reduce) {
1995
+ .jsl-input, .jsl-date-input {
1996
+ transition: none;
1997
+ }
1998
+ }
1999
+
2000
+ .jsl-date-input {
2001
+ font-variant-numeric: tabular-nums;
2002
+ width: 11rem;
2003
+ }
2004
+
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;
2010
+ }
2011
+
2012
+ .jsl-date-input:disabled {
2013
+ opacity: .75;
2014
+ }
2015
+
2016
+ .jsl-date-input[aria-invalid="true"] {
2017
+ border-style: dashed;
2018
+ border-width: 2px;
2019
+ }
2020
+
2021
+ .time-comp {
2022
+ text-align: center;
2023
+ width: 6rem;
2024
+ }
2025
+
2026
+ .time-comp-seconds {
2027
+ width: 7.5rem;
2028
+ }
2029
+
2030
+ .date-time-comp {
2031
+ flex-wrap: wrap;
2032
+ align-items: center;
2033
+ gap: .5rem;
2034
+ max-width: 100%;
2035
+ display: inline-flex;
2036
+ }
2037
+
2038
+ .date-time-comp .date-comp {
2039
+ flex: 10rem;
2040
+ }
2041
+
2042
+ .date-time-comp .time-comp {
2043
+ flex: 0 0 6rem;
2044
+ }
2045
+
2046
+ .date-time-comp .time-comp-seconds {
2047
+ flex-basis: 7.5rem;
2048
+ }
2049
+
2050
+ .expander-comp {
2051
+ box-sizing: border-box;
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;
2069
+ }
2070
+
2071
+ .expander-comp.toggle-on-header > .header {
2072
+ cursor: pointer;
2073
+ }
2074
+
2075
+ .expander-comp.toggle-on-header:not(.disabled) > .header:hover {
2076
+ background: var(--jsl-color-surface-hover);
2077
+ }
2078
+
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;
2085
+ cursor: pointer;
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;
2095
+ }
2096
+
2097
+ .expander-comp > .header > .toggler:hover:not(:disabled) {
2098
+ background: var(--jsl-color-surface-selected);
2099
+ }
2100
+
2101
+ .expander-comp > .header > .toggler:focus-visible {
2102
+ outline: 2px solid var(--jsl-color-focus);
2103
+ outline-offset: 2px;
2104
+ }
2105
+
2106
+ .expander-comp > .header > .content {
2107
+ overflow-wrap: anywhere;
2108
+ flex: 1;
2109
+ min-width: 0;
2110
+ font-weight: 500;
2111
+ }
2112
+
2113
+ .expander-icon, .expand-collapse-icon {
2114
+ place-items: center;
2115
+ display: inline-grid;
2116
+ }
2117
+
2118
+ .expand-collapse-icon {
2119
+ width: 1rem;
2120
+ height: 1rem;
2121
+ }
2122
+
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);
2130
+ }
2131
+
2132
+ .expand-collapse-icon.is-expanded .expander-chevron {
2133
+ transform: rotate(45deg) translate(-1px, -1px);
2134
+ }
2135
+
2136
+ .expander-comp > .body {
2137
+ border-top: 1px solid var(--jsl-color-border-subtle);
2138
+ overflow-wrap: anywhere;
2139
+ padding: 1rem 1.125rem;
2140
+ }
2141
+
2142
+ .expander-comp > .body[hidden] {
2143
+ display: none;
2144
+ }
2145
+
2146
+ .expander-comp.expanded > .body {
2147
+ animation: .14s ease-out jsl-expander-appear;
2148
+ }
2149
+
2150
+ .expander-comp.disabled > .header {
2151
+ color: var(--jsl-color-disabled-text);
2152
+ cursor: default;
2153
+ background: var(--jsl-color-disabled-surface);
2154
+ }
2155
+
2156
+ .expander-comp > .header > .toggler:disabled {
2157
+ color: var(--jsl-color-disabled-text);
2158
+ cursor: not-allowed;
2159
+ }
2160
+
2161
+ @keyframes jsl-expander-appear {
2162
+ from {
2163
+ opacity: 0;
2164
+ }
2165
+
2166
+ to {
2167
+ opacity: 1;
2168
+ }
2169
+ }
2170
+
2171
+ @media (prefers-reduced-motion: reduce) {
2172
+ .expander-comp.expanded > .body {
2173
+ animation: none;
2174
+ }
2175
+ }
2176
+
2177
+ .jsl-loading {
2178
+ max-width: 100%;
2179
+ color: var(--jsl-color-text-secondary);
2180
+ font: inherit;
2181
+ vertical-align: middle;
2182
+ justify-content: center;
2183
+ align-items: center;
2184
+ gap: .625rem;
2185
+ display: inline-flex;
2186
+ }
2187
+
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;
2195
+ }
2196
+
2197
+ .lds-dual-ring:after {
2198
+ content: "";
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;
2310
+ position: absolute;
2311
+ top: 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);
2387
+ }
2388
+
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 {
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] {
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;
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;
3006
+ }
3007
+
3008
+ .noUi-value-horizontal {
3009
+ transform: translate(-50%, 50%);
3010
+ }
3011
+
3012
+ .noUi-rtl .noUi-value-horizontal {
3013
+ transform: translate(50%, 50%);
3014
+ }
3015
+
3016
+ .noUi-marker-horizontal.noUi-marker {
3017
+ width: 2px;
3018
+ height: 5px;
3019
+ margin-left: -1px;
3020
+ }
3021
+
3022
+ .noUi-marker-horizontal.noUi-marker-sub {
3023
+ height: 10px;
3024
+ }
3025
+
3026
+ .noUi-marker-horizontal.noUi-marker-large {
3027
+ height: 15px;
3028
+ }
3029
+
3030
+ .noUi-pips-vertical {
3031
+ height: 100%;
3032
+ padding: 0 10px;
3033
+ top: 0;
3034
+ left: 100%;
3035
+ }
3036
+
3037
+ .noUi-value-vertical {
3038
+ padding-left: 25px;
3039
+ transform: translate(0, -50%);
3040
+ }
3041
+
3042
+ .noUi-rtl .noUi-value-vertical {
3043
+ transform: translate(0, 50%);
3044
+ }
3045
+
3046
+ .noUi-marker-vertical.noUi-marker {
3047
+ width: 5px;
3048
+ height: 2px;
3049
+ margin-top: -1px;
3050
+ }
3051
+
3052
+ .noUi-marker-vertical.noUi-marker-sub {
3053
+ width: 10px;
3054
+ }
3055
+
3056
+ .noUi-marker-vertical.noUi-marker-large {
3057
+ width: 15px;
3058
+ }
3059
+
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;
679
3069
  position: absolute;
680
3070
  }
681
3071
 
682
- .overlay-handle-decorator {
683
- z-index: 20;
684
- border: 2px solid #217346;
3072
+ .noUi-horizontal .noUi-tooltip {
3073
+ bottom: 120%;
3074
+ left: 50%;
3075
+ transform: translate(-50%);
3076
+ }
3077
+
3078
+ .noUi-vertical .noUi-tooltip {
3079
+ top: 50%;
3080
+ right: 120%;
3081
+ transform: translate(0, -50%);
3082
+ }
3083
+
3084
+ .noUi-horizontal .noUi-origin > .noUi-tooltip {
3085
+ bottom: 10px;
3086
+ left: auto;
3087
+ transform: translate(50%);
3088
+ }
3089
+
3090
+ .noUi-vertical .noUi-origin > .noUi-tooltip {
3091
+ top: auto;
3092
+ right: 28px;
3093
+ transform: translate(0, -18px);
3094
+ }
3095
+
3096
+ .noUi-touch-area {
3097
+ width: auto;
3098
+ height: auto;
3099
+ position: absolute;
3100
+ inset: -6px;
3101
+ }
3102
+
3103
+ .noUi-base:before {
3104
+ content: "";
3105
+ position: absolute;
3106
+ inset: -10px 0;
3107
+ }
3108
+
3109
+ .noUi-vertical .noUi-base:before {
3110
+ inset: 0 -10px;
3111
+ }
3112
+
3113
+ .noUi-handle {
3114
+ cursor: grab;
3115
+ }
3116
+
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);
3129
+ }
3130
+
3131
+ .noUi-tooltip {
3132
+ font: inherit;
3133
+ border-radius: .375rem;
3134
+ padding: 4px 8px;
3135
+ font-size: .75rem;
685
3136
  }
686
3137
 
687
3138
  .slick-cell .jsl-toggle {
@@ -703,4 +3154,512 @@ input.editor-text, textarea.editor-text {
703
3154
  display: inline-block;
704
3155
  position: relative;
705
3156
  }
3157
+
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;
3168
+ }
3169
+
3170
+ .jsl-navigation *, .jsl-navigation :before, .jsl-navigation :after {
3171
+ box-sizing: border-box;
3172
+ }
3173
+
3174
+ .jsl-navigation--fixed, .jsl-navigation--fixed-bottom {
3175
+ z-index: 1010;
3176
+ position: fixed;
3177
+ inset-inline: 0;
3178
+ box-shadow: 0 2px 8px #0000000a;
3179
+ }
3180
+
3181
+ .jsl-navigation--fixed {
3182
+ top: 0;
3183
+ }
3184
+
3185
+ .jsl-navigation--fixed-bottom {
3186
+ bottom: 0;
3187
+ }
3188
+
3189
+ .jsl-navigation [hidden] {
3190
+ display: none !important;
3191
+ }
3192
+
3193
+ .jsl-navigation button, .jsl-navigation a {
3194
+ -webkit-tap-highlight-color: transparent;
3195
+ }
3196
+
3197
+ .jsl-navigation button {
3198
+ font: inherit;
3199
+ }
3200
+
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;
3205
+ }
3206
+
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;
3215
+ }
3216
+
3217
+ .jsl-nav-brand {
3218
+ color: inherit;
3219
+ overflow-wrap: anywhere;
3220
+ align-items: center;
3221
+ gap: .5rem;
3222
+ min-width: 0;
3223
+ font-size: 1rem;
3224
+ font-weight: 650;
3225
+ text-decoration: none;
3226
+ display: flex;
3227
+ }
3228
+
3229
+ .jsl-nav-items, .jsl-nav-submenu {
3230
+ margin: 0;
3231
+ padding: 0;
3232
+ list-style: none;
3233
+ }
3234
+
3235
+ .jsl-nav-items {
3236
+ flex-wrap: wrap;
3237
+ align-items: center;
3238
+ gap: .25rem;
3239
+ min-width: 0;
3240
+ display: flex;
3241
+ }
3242
+
3243
+ .jsl-nav-bar--right > .jsl-nav-items {
3244
+ margin-inline-start: auto;
3245
+ }
3246
+
3247
+ .jsl-nav-item {
3248
+ min-width: 0;
3249
+ position: relative;
3250
+ }
3251
+
3252
+ .jsl-nav-row {
3253
+ border-radius: .375rem;
3254
+ align-items: stretch;
3255
+ display: flex;
3256
+ }
3257
+
3258
+ .jsl-nav-link, .jsl-nav-submenu-toggle, .jsl-nav-toggle {
3259
+ color: var(--jsl-color-text-secondary);
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;
3270
+ text-decoration: none;
3271
+ display: inline-flex;
3272
+ }
3273
+
3274
+ .jsl-nav-link {
3275
+ text-align: start;
3276
+ overflow-wrap: anywhere;
3277
+ flex: 1;
3278
+ justify-content: flex-start;
3279
+ min-width: 0;
3280
+ }
3281
+
3282
+ .jsl-nav-link > img, .jsl-nav-brand img {
3283
+ width: auto;
3284
+ max-height: 1.5rem;
3285
+ }
3286
+
3287
+ .jsl-nav-submenu-toggle {
3288
+ padding-inline: .5rem;
3289
+ }
3290
+
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);
3294
+ }
3295
+
3296
+ .jsl-nav-item.is-active > .jsl-nav-row {
3297
+ background: var(--jsl-color-surface-selected);
3298
+ }
3299
+
3300
+ .jsl-nav-item.is-active > .jsl-nav-row > .jsl-nav-link {
3301
+ color: var(--jsl-color-text);
3302
+ font-weight: 600;
3303
+ }
3304
+
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;
3310
+ }
3311
+
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);
3324
+ }
3325
+
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;
3339
+ overflow: auto;
3340
+ box-shadow: 0 8px 24px #0000001a;
3341
+ }
3342
+
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;
3366
+ }
3367
+
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;
3372
+ display: block;
3373
+ position: relative;
3374
+ }
3375
+
3376
+ .jsl-nav-menu-icon:before, .jsl-nav-menu-icon:after {
3377
+ content: "";
3378
+ position: absolute;
3379
+ top: -.3125rem;
3380
+ left: 0;
3381
+ }
3382
+
3383
+ .jsl-nav-menu-icon:after {
3384
+ top: .3125rem;
3385
+ }
3386
+
3387
+ .is-open > .jsl-nav-toggle .jsl-nav-menu-icon {
3388
+ background: none;
3389
+ }
3390
+
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);
3399
+ }
3400
+
3401
+ @container (width <= 40rem) {
3402
+ .jsl-nav-toggle {
3403
+ display: inline-flex;
3404
+ }
3405
+
3406
+ .jsl-nav-brand {
3407
+ max-width: calc(100% - 4rem);
3408
+ }
3409
+
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;
3418
+ }
3419
+
3420
+ .is-open > .jsl-nav-items {
3421
+ display: block;
3422
+ }
3423
+
3424
+ .jsl-nav-item + .jsl-nav-item {
3425
+ margin-top: .125rem;
3426
+ }
3427
+
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;
3440
+ }
3441
+ }
3442
+
3443
+ @media (width <= 767px) {
3444
+ .jsl-nav-toggle {
3445
+ display: inline-flex;
3446
+ }
3447
+
3448
+ .jsl-nav-brand {
3449
+ max-width: calc(100% - 4rem);
3450
+ }
3451
+
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;
3458
+ display: none;
3459
+ overflow: auto;
3460
+ }
3461
+
3462
+ .is-open > .jsl-nav-items {
3463
+ display: block;
3464
+ }
3465
+
3466
+ .jsl-nav-item + .jsl-nav-item {
3467
+ margin-top: .125rem;
3468
+ }
3469
+
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
+ }
3483
+ }
3484
+
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;
3497
+ }
3498
+
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;
3506
+ }
3507
+
3508
+ .ribbon-menu-comp .ribbon-group:last-child {
3509
+ border-inline-end: 0;
3510
+ padding-inline-end: 0;
3511
+ }
3512
+
3513
+ .ribbon-actions {
3514
+ flex-wrap: wrap;
3515
+ flex: 1;
3516
+ align-items: center;
3517
+ gap: .375rem;
3518
+ display: flex;
3519
+ }
3520
+
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;
3551
+ }
3552
+
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;
3567
+ }
3568
+
3569
+ .jsl-overlay-overlay:has(.overl-body-top) {
3570
+ width: 100%;
3571
+ }
3572
+
3573
+ .jsl-overlay-overlay::backdrop {
3574
+ background: var(--jsl-color-overlay);
3575
+ }
3576
+
3577
+ .jsl-overlay-overlay[hidden] {
3578
+ display: none;
3579
+ }
3580
+
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;
3588
+ }
3589
+
3590
+ .overl-body-left {
3591
+ width: var(--jsl-overlay-size);
3592
+ border-radius: 0 .75rem .75rem 0;
3593
+ max-width: 100vw;
3594
+ height: 100dvh;
3595
+ }
3596
+
3597
+ .overl-body-top {
3598
+ height: var(--jsl-overlay-size);
3599
+ border-radius: 0 0 .75rem .75rem;
3600
+ width: 100vw;
3601
+ max-height: 100dvh;
3602
+ }
3603
+
3604
+ .overl-header {
3605
+ justify-content: flex-end;
3606
+ padding: .75rem .75rem 0;
3607
+ display: flex;
3608
+ }
3609
+
3610
+ .overl-content {
3611
+ padding: 1.25rem;
3612
+ overflow: auto;
3613
+ }
3614
+
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;
3628
+ }
3629
+
3630
+ .overl-close-btn:hover {
3631
+ background: var(--jsl-color-surface-hover);
3632
+ color: var(--jsl-color-text);
3633
+ }
3634
+
3635
+ .overl-close-btn:focus-visible {
3636
+ outline: 2px solid var(--jsl-color-focus);
3637
+ outline-offset: 2px;
3638
+ }
3639
+
3640
+ .overl-body-left.overl-animate {
3641
+ animation: .18s ease-out jsl-panel-left;
3642
+ }
3643
+
3644
+ .overl-body-top.overl-animate {
3645
+ animation: .18s ease-out jsl-panel-top;
3646
+ }
3647
+
3648
+ @keyframes jsl-panel-left {
3649
+ from {
3650
+ transform: translateX(-100%);
3651
+ }
3652
+ }
3653
+
3654
+ @keyframes jsl-panel-top {
3655
+ from {
3656
+ transform: translateY(-100%);
3657
+ }
3658
+ }
3659
+
3660
+ @media (prefers-reduced-motion: reduce) {
3661
+ .overl-animate {
3662
+ animation: none !important;
3663
+ }
3664
+ }
706
3665
  /*# sourceMappingURL=index.css.map */