@sylwellsoftware/fray 0.1.0-alpha.1 → 0.3.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 (75) hide show
  1. package/README.md +324 -21
  2. package/colors/README.md +15 -0
  3. package/colors/gray/colors.css +29 -0
  4. package/colors/green/colors.css +29 -0
  5. package/colors/iceblue/colors.css +29 -0
  6. package/colors/ocean/colors.css +29 -0
  7. package/colors/orange/colors.css +29 -0
  8. package/colors/purple/colors.css +29 -0
  9. package/colors/red/colors.css +29 -0
  10. package/colors/yellow/colors.css +29 -0
  11. package/dist/Components/Placeholder.d.ts +1 -1
  12. package/dist/Components/Placeholder.d.ts.map +1 -1
  13. package/dist/Components/controlUtils.d.ts.map +1 -1
  14. package/dist/Components/data/filterState.d.ts +38 -0
  15. package/dist/Components/data/filterState.d.ts.map +1 -0
  16. package/dist/Components/data/listview/listview.d.ts +16 -5
  17. package/dist/Components/data/listview/listview.d.ts.map +1 -1
  18. package/dist/Components/data/selectionhandler.d.ts +24 -5
  19. package/dist/Components/data/selectionhandler.d.ts.map +1 -1
  20. package/dist/Components/data/table/DataTable.d.ts +36 -30
  21. package/dist/Components/data/table/DataTable.d.ts.map +1 -1
  22. package/dist/Components/data/table/FilterPanel.d.ts +8 -1
  23. package/dist/Components/data/table/FilterPanel.d.ts.map +1 -1
  24. package/dist/Components/data/table/TableHeaderCell.d.ts.map +1 -1
  25. package/dist/Components/data/table/tableDataSource.d.ts +49 -0
  26. package/dist/Components/data/table/tableDataSource.d.ts.map +1 -0
  27. package/dist/Components/data/table/tableQuery.d.ts +6 -2
  28. package/dist/Components/data/table/tableQuery.d.ts.map +1 -1
  29. package/dist/Components/data/treeview/treeModel.d.ts +23 -0
  30. package/dist/Components/data/treeview/treeModel.d.ts.map +1 -0
  31. package/dist/Components/data/treeview/treeview.d.ts +1 -1
  32. package/dist/Components/data/treeview/treeview.d.ts.map +1 -1
  33. package/dist/Components/dialog/dialog.d.ts +1 -1
  34. package/dist/Components/dialog/dialog.d.ts.map +1 -1
  35. package/dist/Components/layout/panel.d.ts.map +1 -1
  36. package/dist/Components/layout/tabpanel/tabline.d.ts.map +1 -1
  37. package/dist/Components/lineinputs/checkbox/Checkbox.d.ts +1 -1
  38. package/dist/Components/lineinputs/checkbox/Checkbox.d.ts.map +1 -1
  39. package/dist/Components/lineinputs/checkbox/QuadCheckbox.d.ts +2 -2
  40. package/dist/Components/lineinputs/checkbox/QuadCheckbox.d.ts.map +1 -1
  41. package/dist/Components/lineinputs/checkbox/TriCheckbox.d.ts +2 -2
  42. package/dist/Components/lineinputs/checkbox/TriCheckbox.d.ts.map +1 -1
  43. package/dist/Components/lineinputs/toggle.d.ts.map +1 -1
  44. package/dist/Components/status/progressBar.d.ts.map +1 -1
  45. package/dist/Components/theme/stylesheetPicker.d.ts +40 -0
  46. package/dist/Components/theme/stylesheetPicker.d.ts.map +1 -0
  47. package/dist/index.d.ts +16 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +2807 -559
  50. package/dist/index.js.map +1 -1
  51. package/dist/{jsx-dev-runtime-CarwHDyL.js → jsx-dev-runtime-DukiDpV9.js} +202 -214
  52. package/dist/jsx-dev-runtime-DukiDpV9.js.map +1 -0
  53. package/dist/jsx-dev-runtime.js +1 -1
  54. package/dist/jsx-runtime.js +1 -1
  55. package/dist/styling/baseStyleDefinitions.d.ts +3 -0
  56. package/dist/styling/baseStyleDefinitions.d.ts.map +1 -1
  57. package/dist/styling/styleRegistry.d.ts.map +1 -1
  58. package/dist/styling/theme.d.ts +27 -0
  59. package/dist/styling/theme.d.ts.map +1 -0
  60. package/dist/util/filterMode.d.ts +6 -4
  61. package/dist/util/filterMode.d.ts.map +1 -1
  62. package/package.json +14 -11
  63. package/styles/structural.css +922 -0
  64. package/themes/README.md +84 -30
  65. package/themes/java/theme.css +140 -0
  66. package/themes/minimal/theme.css +128 -0
  67. package/themes/shiny/theme.css +314 -0
  68. package/EXPERIMENTAL.md +0 -75
  69. package/dist/button-BRDkmR1C.js +0 -203
  70. package/dist/button-BRDkmR1C.js.map +0 -1
  71. package/dist/experimental.d.ts +0 -16
  72. package/dist/experimental.d.ts.map +0 -1
  73. package/dist/experimental.js +0 -1361
  74. package/dist/experimental.js.map +0 -1
  75. package/dist/jsx-dev-runtime-CarwHDyL.js.map +0 -1
@@ -0,0 +1,922 @@
1
+ /* Generated by scripts/build-structural-css.mjs. Do not edit directly. */
2
+
3
+ *, *::before, *::after {
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ @media (prefers-reduced-motion: reduce) {
8
+ *, *::before, *::after {
9
+ scroll-behavior: auto !important;
10
+ animation-duration: 0.01ms !important;
11
+ animation-iteration-count: 1 !important;
12
+ transition-duration: 0.01ms !important;
13
+ }
14
+ }
15
+
16
+ @media (forced-colors: active) {
17
+ :focus-visible {
18
+ outline: 2px solid Highlight !important;
19
+ outline-offset: 2px !important;
20
+ }
21
+ }
22
+
23
+ /* uiline */
24
+ button[data-fray-component="button"],
25
+ th[data-fray-component="table-header-cell"] > [data-part="sort"],
26
+ th[data-fray-component="table-header-cell"] > [data-part="filter-toggle"],
27
+ fray-tab-line > [data-part="tab"],
28
+ fieldset[data-fray-component="toggle"] > [data-part="options"],
29
+ fieldset[data-fray-component="toggle"] [data-part="option"] {
30
+ box-sizing: border-box;
31
+ line-height: var(--fray-line-height, 1.25);
32
+ font-size: var(--fray-font-size, var(--ui-font-size));
33
+ min-height: var(--fray-control-min-height, 2rem);
34
+ color: var(--fray-ui-color, var(--ui-text-color));
35
+ padding: var(--ui-padding-v, 0.25rem) var(--ui-padding-h, 0.5rem);
36
+ border-radius: var(--fray-radius-md, var(--ui-border-radius));
37
+ cursor: pointer;
38
+ user-select: none;
39
+ }
40
+
41
+ /* button */
42
+ button[data-fray-component="button"],
43
+ th[data-fray-component="table-header-cell"] > [data-part="sort"],
44
+ th[data-fray-component="table-header-cell"] > [data-part="filter-toggle"],
45
+ fray-tab-line > [data-part="tab"],
46
+ fieldset[data-fray-component="toggle"] [data-part="option"] {
47
+ box-sizing: border-box;
48
+ background: var(--fray-button-background, var(--button-background));
49
+ border: var(--fray-button-border, var(--button-border));
50
+ box-shadow: var(--fray-button-shadow, var(--button-shadow));
51
+ color: var(--fray-button-color, var(--button-color));
52
+ cursor: default;
53
+ user-select: none;
54
+ }
55
+
56
+ /* button:hover */
57
+ button[data-fray-component="button"]:hover,
58
+ th[data-fray-component="table-header-cell"] > [data-part="sort"]:hover,
59
+ th[data-fray-component="table-header-cell"] > [data-part="filter-toggle"]:hover,
60
+ fray-tab-line > [data-part="tab"]:hover,
61
+ fieldset[data-fray-component="toggle"] [data-part="option"]:hover {
62
+ background: var(--fray-button-background-hover, var(--button-background-hover));
63
+ box-shadow: var(--fray-button-shadow, var(--button-shadow));
64
+ }
65
+
66
+ /* button:focus-visible */
67
+ button[data-fray-component="button"]:focus-visible,
68
+ th[data-fray-component="table-header-cell"] > [data-part="sort"]:focus-visible,
69
+ th[data-fray-component="table-header-cell"] > [data-part="filter-toggle"]:focus-visible,
70
+ fray-tab-line > [data-part="tab"]:focus-visible,
71
+ fieldset[data-fray-component="toggle"] [data-part="option"]:focus-visible {
72
+ outline: 2px solid transparent;
73
+ outline-offset: 1px;
74
+ border: 1px solid var(--fray-color-focus, var(--ui-accent-color));
75
+ box-shadow: var(--fray-focus-ring, 0 0 0 2px var(--ui-accent-color-highlight));
76
+ }
77
+
78
+ /* button:disabled */
79
+ button[data-fray-component="button"]:disabled,
80
+ th[data-fray-component="table-header-cell"] > [data-part="sort"]:disabled,
81
+ th[data-fray-component="table-header-cell"] > [data-part="filter-toggle"]:disabled,
82
+ fray-tab-line > [data-part="tab"]:disabled,
83
+ fieldset[data-fray-component="toggle"] [data-part="option"]:disabled {
84
+ background: var(--fray-button-background-disabled, var(--button-background-disabled));
85
+ border: var(--button-border-disabled, var(--fray-button-border));
86
+ color: var(--fray-input-color-disabled, var(--ui-input-text-color-disabled));
87
+ cursor: not-allowed;
88
+ pointer-events: none;
89
+ }
90
+
91
+ /* inputline */
92
+ fray-checkbox,
93
+ fray-checkbox > [data-part="control"],
94
+ fray-color-picker,
95
+ fray-color-picker > select,
96
+ fray-dropdown,
97
+ fray-dropdown > select,
98
+ fray-list-view > [data-part="list"] > [data-part="row"],
99
+ fray-quad-checkbox,
100
+ fray-quad-checkbox > [data-part="control"],
101
+ fray-textbox,
102
+ fray-textbox > input,
103
+ fray-theme-picker,
104
+ fray-theme-picker > select,
105
+ fray-tri-checkbox,
106
+ fray-tri-checkbox > [data-part="control"] {
107
+ display: flex;
108
+ flex-flow: row nowrap;
109
+ position: relative;
110
+ line-height: var(--fray-line-height, 1.25);
111
+ font-size: var(--fray-font-size, var(--ui-font-size));
112
+ min-height: var(--fray-control-min-height, 2rem);
113
+ color: var(--fray-ui-color, var(--ui-text-color));
114
+ border-radius: var(--fray-radius-md, var(--ui-border-radius));
115
+ box-sizing: border-box;
116
+ }
117
+
118
+ /* input */
119
+ fray-checkbox > [data-part="control"],
120
+ fray-color-picker > select,
121
+ fray-dropdown > select,
122
+ fray-quad-checkbox > [data-part="control"],
123
+ fray-textbox > input,
124
+ fray-theme-picker > select,
125
+ fray-tri-checkbox > [data-part="control"] {
126
+ background: var(--fray-input-background, var(--ui-input-bg));
127
+ color: var(--fray-input-color, var(--fray-ui-color, var(--ui-text-color)));
128
+ padding: var(--ui-padding-v, 0.25rem) var(--ui-padding-h, 0.5rem);
129
+ pointer-events: all;
130
+ border: var(--fray-input-border, var(--ui-input-border));
131
+ width: var(--input-width, 15rem);
132
+ box-shadow: var(--fray-input-shadow, var(--input-shadow, none));
133
+ box-sizing: border-box;
134
+ white-space: nowrap;
135
+ }
136
+
137
+ /* input:focus-visible */
138
+ fray-checkbox > [data-part="control"]:focus-visible,
139
+ fray-color-picker > select:focus-visible,
140
+ fray-dropdown > select:focus-visible,
141
+ fray-quad-checkbox > [data-part="control"]:focus-visible,
142
+ fray-textbox > input:focus-visible,
143
+ fray-theme-picker > select:focus-visible,
144
+ fray-tri-checkbox > [data-part="control"]:focus-visible {
145
+ outline: 2px solid transparent;
146
+ outline-offset: 1px;
147
+ border-color: var(--fray-color-focus, var(--ui-accent-color));
148
+ box-shadow: var(--fray-focus-ring, 0 0 0 2px var(--ui-accent-color-highlight));
149
+ }
150
+
151
+ /* input:disabled */
152
+ fray-checkbox > [data-part="control"]:disabled,
153
+ fray-color-picker > select:disabled,
154
+ fray-dropdown > select:disabled,
155
+ fray-quad-checkbox > [data-part="control"]:disabled,
156
+ fray-textbox > input:disabled,
157
+ fray-theme-picker > select:disabled,
158
+ fray-tri-checkbox > [data-part="control"]:disabled {
159
+ background: var(--fray-input-background-disabled, var(--ui-input-bg-disabled));
160
+ border-color: var(--fray-color-border, var(--ui-input-border-disabled));
161
+ color: var(--fray-input-color-disabled, var(--ui-input-text-color-disabled));
162
+ cursor: not-allowed;
163
+ }
164
+
165
+ /* disabled */
166
+ fray-checkbox[data-disabled],
167
+ fray-color-picker[data-disabled],
168
+ fray-dropdown[data-disabled],
169
+ fray-quad-checkbox[data-disabled],
170
+ fray-textbox[data-disabled],
171
+ fray-theme-picker[data-disabled],
172
+ fray-tri-checkbox[data-disabled] {
173
+ border-color: var(--fray-color-border, var(--ui-input-border-disabled));
174
+ color: var(--fray-input-color-disabled, var(--ui-input-text-color-disabled));
175
+ }
176
+
177
+ /* labeledinput */
178
+ fray-color-picker,
179
+ fray-dropdown,
180
+ fray-textbox,
181
+ fray-theme-picker {
182
+ display: flex;
183
+ flex-flow: row nowrap;
184
+ align-items: center;
185
+ gap: .5em;
186
+ }
187
+
188
+ /* label */
189
+ fray-color-picker > label,
190
+ fray-dropdown > label,
191
+ fray-textbox > label,
192
+ fray-theme-picker > label {
193
+ color: var(--fray-ui-color, var(--ui-text-color));
194
+ font-size: var(--fray-font-size, var(--ui-font-size));
195
+ }
196
+
197
+ /* after */
198
+ fray-placeholder::after {
199
+ content: "";
200
+ display: block;
201
+ position: absolute;
202
+ top: 0;
203
+ left: 0;
204
+ width: 100%;
205
+ height: 100%;
206
+ pointer-events: none;
207
+ }
208
+
209
+ /* working */
210
+ fray-placeholder::after {
211
+ display: inline;
212
+ position: absolute;
213
+ z-index: 1;
214
+ margin: auto;
215
+ animation: fray-placeholder-progress 0.8s linear infinite;
216
+ background-repeat: repeat;
217
+ background-size: 2rem 2rem;
218
+ background-image: var(--fray-working-background-image);
219
+ border: 0 solid transparent;
220
+ border-radius: inherit;
221
+ box-sizing: border-box;
222
+ }
223
+
224
+ /* noselect */
225
+ th[data-fray-component="table-header-cell"] {
226
+ user-select: var(--noselect-user-select);
227
+ cursor: var(--noselect-cursor);
228
+ }
229
+
230
+ /* error */
231
+ fray-dropdown[data-error],
232
+ fray-textbox[data-error] {
233
+ color: var(--fray-color-error, var(--error-color));
234
+ }
235
+
236
+ /* inputlike */
237
+ fray-list-view {
238
+ background: var(--fray-input-background, var(--ui-input-bg));
239
+ color: var(--fray-input-color, var(--fray-ui-color, var(--ui-text-color)));
240
+ padding: var(--ui-padding-v, 0.25rem) var(--ui-padding-h, 0.5rem);
241
+ pointer-events: all;
242
+ border: var(--fray-input-border, var(--ui-input-border));
243
+ box-shadow: var(--fray-input-shadow, var(--input-shadow, none));
244
+ box-sizing: border-box;
245
+ white-space: nowrap;
246
+ border-radius: var(--fray-radius-md, var(--ui-border-radius));
247
+ }
248
+
249
+ /* panel */
250
+ fray-panel,
251
+ aside[data-fray-component="sidebar"] {
252
+ background: var(--fray-panel-background, var(--panel-bg));
253
+ border: var(--fray-panel-border, var(--panel-border));
254
+ border-radius: var(--fray-panel-radius, var(--panel-radius));
255
+ box-shadow: var(--fray-panel-shadow, var(--panel-shadow));
256
+ color: var(--fray-panel-color, var(--panel-color));
257
+ }
258
+
259
+ /* sectionheader */
260
+ fray-panel > [data-part="header"],
261
+ aside[data-fray-component="sidebar"] > [data-part="header"] {
262
+ box-shadow: var(--fray-section-header-shadow, var(--fray-header-shadow, var(--sectionheader-shadow)));
263
+ background: var(--fray-section-header-background, var(--fray-header-background, var(--sectionheader-bg)));
264
+ color: var(--fray-section-header-color, var(--fray-header-color, var(--sectionheader-color)));
265
+ border: var(--fray-section-header-border, var(--fray-header-border, 0 solid transparent));
266
+ }
267
+
268
+ /* toolbar */
269
+ fray-toolbar {
270
+ background: var(--fray-toolbar-background, var(--toolbar-bg));
271
+ border: var(--fray-toolbar-border, var(--toolbar-border));
272
+ border-radius: var(--toolbar-radius, var(--fray-radius-md));
273
+ box-shadow: var(--fray-toolbar-shadow, var(--toolbar-shadow));
274
+ color: var(--fray-toolbar-color, var(--toolbar-color));
275
+ }
276
+
277
+ button[data-fray-component="button"] {
278
+ font-family: inherit;
279
+ }
280
+
281
+ fray-checkbox > [data-part="control"] {
282
+ display: inline-flex;
283
+ align-items: center;
284
+ gap: 0.35em;
285
+ width: auto;
286
+ font-family: inherit;
287
+ }
288
+
289
+ fray-checkbox [data-part="symbol"] {
290
+ display: inline-grid;
291
+ width: 1em;
292
+ height: 1em;
293
+ line-height: 1;
294
+ place-items: center;
295
+ color: var(--fray-checkbox-symbol-color, currentColor);
296
+ background: var(--fray-checkbox-box-background, transparent);
297
+ border: var(--fray-checkbox-box-border, var(--cbx-o-border));
298
+ border-radius: var(--cbx-border-radius, var(--fray-radius-sm));
299
+ }
300
+
301
+ fray-checkbox [data-part="control"][aria-checked="true"] [data-part="symbol"] {
302
+ background: var(
303
+ --fray-checkbox-box-background-checked,
304
+ var(--fray-selection-background)
305
+ );
306
+ }
307
+
308
+ fray-color-picker {
309
+ position: relative;
310
+ }
311
+
312
+ fray-color-picker > select {
313
+ min-width: 8rem;
314
+ }
315
+
316
+ fray-data-table {
317
+ overflow: auto;
318
+ color: var(--ui-text-color);
319
+ }
320
+
321
+ fray-data-table > table {
322
+ width: 100%;
323
+ border-collapse: collapse;
324
+ }
325
+
326
+ fray-data-table thead:has([data-fray-component="filter-panel"]) {
327
+ position: relative;
328
+ z-index: 1100;
329
+ }
330
+
331
+ fray-data-table th,
332
+ fray-data-table td {
333
+ padding: var(--ui-padding-v) var(--ui-padding-h);
334
+ text-align: start;
335
+ }
336
+
337
+ fray-data-table tbody tr[data-fray-selectable-row] {
338
+ cursor: default;
339
+ user-select: none;
340
+ }
341
+
342
+ fray-data-table tbody tr:nth-child(odd) {
343
+ background: var(--fray-table-row-background, transparent);
344
+ }
345
+
346
+ fray-data-table tbody tr:nth-child(even) {
347
+ background: var(--fray-table-row-alt-background, transparent);
348
+ }
349
+
350
+ fray-data-table tbody tr[data-fray-selectable-row]:hover {
351
+ background: var(--fray-row-hover-background, var(--button-background-hover));
352
+ }
353
+
354
+ fray-data-table tbody tr[data-fray-selectable-row]:focus-visible {
355
+ outline: 2px solid var(--fray-color-focus, var(--ui-accent-color));
356
+ outline-offset: -2px;
357
+ }
358
+
359
+ fray-data-table tbody tr[data-fray-selectable-row][aria-selected="true"] {
360
+ color: var(--fray-selection-color, var(--toggle-selected-text));
361
+ background: var(--fray-selection-background, var(--toggle-selected-bg));
362
+ }
363
+
364
+ fray-data-table > [data-part="error"] {
365
+ color: var(--error-color);
366
+ }
367
+
368
+ fray-placeholder {
369
+ display: block;
370
+ min-width: 3rem;
371
+ height: 1em;
372
+ overflow: hidden;
373
+ background: currentColor;
374
+ border-radius: var(--ui-border-radius);
375
+ opacity: 0.18;
376
+ position: relative;
377
+ }
378
+
379
+ @keyframes fray-placeholder-progress {
380
+ from { background-position: 0 0; }
381
+ to { background-position: 2rem 0; }
382
+ }
383
+
384
+ th[data-fray-component="table-header-cell"] {
385
+ position: relative;
386
+ text-align: start;
387
+ color: var(
388
+ --fray-table-header-color,
389
+ var(--fray-section-header-color, var(--fray-header-color))
390
+ );
391
+ background: var(
392
+ --fray-table-header-background,
393
+ var(--fray-section-header-background, var(--fray-header-background))
394
+ );
395
+ border-block-end: var(--fray-section-header-border, var(--fray-header-border));
396
+ box-shadow: var(--fray-section-header-shadow, var(--fray-header-shadow));
397
+ }
398
+
399
+ th[data-fray-component="table-header-cell"] > [data-part="sort"],
400
+ th[data-fray-component="table-header-cell"] > [data-part="filter-toggle"] {
401
+ width: auto;
402
+ font-family: inherit;
403
+ color: inherit;
404
+ background: var(
405
+ --fray-table-header-button-background,
406
+ var(--fray-button-background)
407
+ );
408
+ }
409
+
410
+ th[data-fray-component="table-header-cell"] > [data-part="filter-toggle"] {
411
+ margin-inline-start: var(--ui-padding-h);
412
+ font-size: 0.75em;
413
+ }
414
+
415
+ fray-filter-panel {
416
+ position: fixed;
417
+ z-index: 1100;
418
+ inset-block-start: 0;
419
+ inset-inline-end: 0;
420
+ display: flex;
421
+ min-width: 12rem;
422
+ padding: var(--ui-padding);
423
+ flex-flow: column nowrap;
424
+ align-items: stretch;
425
+ color: var(--panel-color);
426
+ background: var(--panel-bg);
427
+ border: var(--panel-border);
428
+ border-radius: var(--panel-radius);
429
+ box-shadow: var(--panel-shadow);
430
+ overflow-y: auto;
431
+ }
432
+
433
+ div[data-fray-component="description-item"] {
434
+ display: grid;
435
+ grid-template-columns: minmax(7rem, 0.7fr) minmax(0, 1.3fr);
436
+ gap: var(--spacing-small, 0.5rem);
437
+ padding-block: var(--spacing-small, 0.5rem);
438
+ border-block-end: 1px solid var(--ui-border-color);
439
+ }
440
+
441
+ div[data-fray-component="description-item"] > dt {
442
+ color: var(--ui-muted-text-color, var(--ui-text-color));
443
+ font-weight: 600;
444
+ }
445
+
446
+ div[data-fray-component="description-item"] > dd {
447
+ min-width: 0;
448
+ margin: 0;
449
+ overflow-wrap: anywhere;
450
+ }
451
+
452
+ @media (max-width: 36rem) {
453
+ div[data-fray-component="description-item"] {
454
+ grid-template-columns: minmax(0, 1fr);
455
+ gap: 0.15rem;
456
+ }
457
+ }
458
+
459
+ dl[data-fray-component="description-list"] {
460
+ display: grid;
461
+ margin: 0;
462
+ }
463
+
464
+ dialog[data-fray-component="dialog"] {
465
+ width: min(38rem, calc(100vw - 2rem));
466
+ max-height: min(42rem, calc(100dvh - 2rem));
467
+ padding: 0;
468
+ color: var(--fray-panel-color, var(--ui-text-color));
469
+ background: var(--fray-panel-background, var(--panel-bg));
470
+ border: var(--fray-panel-border, var(--panel-border));
471
+ border-radius: var(--fray-panel-radius, var(--panel-radius));
472
+ box-shadow: var(--fray-dialog-shadow, var(--fray-panel-shadow));
473
+ }
474
+
475
+ dialog[data-fray-component="dialog"]::backdrop {
476
+ background: var(--fray-dialog-backdrop-background);
477
+ }
478
+
479
+ dialog[data-fray-component="dialog"] > [data-part] {
480
+ padding: var(--panel-padding, 0.75rem);
481
+ }
482
+
483
+ dialog[data-fray-component="dialog"] > [data-part="header"] {
484
+ color: var(
485
+ --fray-dialog-header-color,
486
+ var(--fray-section-header-color, var(--fray-header-color))
487
+ );
488
+ background: var(
489
+ --fray-dialog-header-background,
490
+ var(--fray-section-header-background, var(--fray-header-background))
491
+ );
492
+ border-block-end: var(
493
+ --fray-section-header-border,
494
+ var(--fray-header-border)
495
+ );
496
+ }
497
+
498
+ dialog[data-fray-component="dialog"] > [data-part="header"] h2,
499
+ dialog[data-fray-component="dialog"] > [data-part="description"] {
500
+ margin: 0;
501
+ }
502
+
503
+ dialog[data-fray-component="dialog"] > [data-part="content"] {
504
+ overflow: auto;
505
+ }
506
+
507
+ dialog[data-fray-component="dialog"] > [data-part="actions"] {
508
+ display: flex;
509
+ justify-content: flex-end;
510
+ gap: var(--spacing-small, 0.5rem);
511
+ border-block-start: 1px solid var(--ui-border-color);
512
+ }
513
+
514
+ @media (prefers-reduced-motion: no-preference) {
515
+ dialog[data-fray-component="dialog"][open] {
516
+ animation: fray-dialog-enter 120ms ease-out;
517
+ }
518
+ }
519
+
520
+ @keyframes fray-dialog-enter {
521
+ from {
522
+ transform: translateY(0.4rem);
523
+ }
524
+ }
525
+
526
+ @media (forced-colors: active) {
527
+ dialog[data-fray-component="dialog"] {
528
+ border: 2px solid CanvasText;
529
+ }
530
+ }
531
+
532
+ fray-dropdown {
533
+ position: relative;
534
+ }
535
+
536
+ fray-list-view {
537
+ display: flex;
538
+ flex-direction: column;
539
+ overflow-y: auto;
540
+ min-height: 0;
541
+ }
542
+
543
+ fray-list-view > [data-part="list"],
544
+ fray-list-view > [data-part="loading"] {
545
+ display: flex;
546
+ flex-direction: column;
547
+ }
548
+
549
+ fray-list-view > [data-part="list"] > [data-part="row"] {
550
+ cursor: default;
551
+ user-select: none;
552
+ }
553
+
554
+ fray-list-view > [data-part="list"] > [data-part="row"]:hover,
555
+ fray-list-view > [data-part="list"] > [data-part="row"]:focus-visible {
556
+ background: var(--button-background-hover);
557
+ outline: 2px solid var(--ui-accent-color);
558
+ outline-offset: -2px;
559
+ }
560
+
561
+ fray-list-view > [data-part="list"] > [data-part="row"][aria-selected="true"] {
562
+ color: var(--toggle-selected-text);
563
+ background: var(--toggle-selected-bg);
564
+ }
565
+
566
+ fray-list-view > [data-part="empty"],
567
+ fray-list-view > [data-part="error"] {
568
+ margin: 0;
569
+ padding: var(--ui-padding);
570
+ }
571
+
572
+ fray-list-view > [data-part="error"] {
573
+ color: var(--error-color);
574
+ }
575
+
576
+ fray-panel {
577
+ display: flex;
578
+ flex-direction: column;
579
+ overflow: auto;
580
+ flex: 0 0 auto;
581
+ }
582
+
583
+ fray-panel > [data-part="header"] h2 {
584
+ margin: 0;
585
+ font: inherit;
586
+ }
587
+
588
+ fray-panel > [data-part="header"] {
589
+ background: var(
590
+ --fray-panel-header-background,
591
+ var(--fray-section-header-background, var(--fray-header-background))
592
+ );
593
+ color: var(
594
+ --fray-panel-header-color,
595
+ var(--fray-section-header-color, var(--fray-header-color))
596
+ );
597
+ border: var(--fray-section-header-border, var(--fray-header-border));
598
+ box-shadow: var(--fray-section-header-shadow, var(--fray-header-shadow));
599
+ }
600
+
601
+ fray-panel > [data-part="content"] {
602
+ display: flex;
603
+ flex: 1;
604
+ overflow: auto;
605
+ padding: var(--panel-padding, 0.75rem);
606
+ gap: var(--spacing-medium, 1rem);
607
+ }
608
+
609
+ fray-panel > [data-part="content"][data-orientation="horizontal"] {
610
+ flex-direction: row;
611
+ }
612
+
613
+ fray-panel > [data-part="content"][data-orientation="vertical"] {
614
+ flex-direction: column;
615
+ }
616
+
617
+ fray-progress-bar {
618
+ display: grid;
619
+ gap: var(--spacing-small, 0.5rem);
620
+ }
621
+
622
+ fray-progress-bar > [data-part="label-line"] {
623
+ display: flex;
624
+ justify-content: space-between;
625
+ gap: var(--spacing-medium, 1rem);
626
+ }
627
+
628
+ fray-progress-bar > [data-part="label-line"] > label {
629
+ font-weight: 600;
630
+ }
631
+
632
+ fray-progress-bar > progress {
633
+ width: 100%;
634
+ min-height: 0.8rem;
635
+ color: var(--fray-progress-value-background, var(--ui-accent-color));
636
+ background: var(--fray-progress-track-background, transparent);
637
+ accent-color: var(--fray-color-primary, var(--ui-accent-color));
638
+ }
639
+
640
+ @media (forced-colors: active) {
641
+ fray-progress-bar > progress {
642
+ forced-color-adjust: auto;
643
+ }
644
+ }
645
+
646
+ fray-quad-checkbox > [data-part="control"] {
647
+ display: inline-flex;
648
+ align-items: center;
649
+ gap: 0.35em;
650
+ width: auto;
651
+ font-family: inherit;
652
+ }
653
+
654
+ fray-quad-checkbox [data-part="symbol"] {
655
+ display: inline-grid;
656
+ width: 1em;
657
+ height: 1em;
658
+ line-height: 1;
659
+ place-items: center;
660
+ color: var(--fray-checkbox-symbol-color, currentColor);
661
+ background: var(--fray-checkbox-box-background, transparent);
662
+ border: var(--fray-checkbox-box-border, var(--cbx-o-border));
663
+ border-radius: var(--cbx-border-radius, var(--fray-radius-sm));
664
+ }
665
+
666
+ fray-quad-checkbox [data-part="control"][aria-checked="true"] [data-part="symbol"] {
667
+ background: var(
668
+ --fray-checkbox-box-background-checked,
669
+ var(--fray-selection-background)
670
+ );
671
+ }
672
+
673
+ aside[data-fray-component="sidebar"] {
674
+ display: flex;
675
+ flex-direction: column;
676
+ min-width: 0;
677
+ min-height: 0;
678
+ overflow: hidden;
679
+ }
680
+
681
+ aside[data-fray-component="sidebar"] > [data-part="header"],
682
+ aside[data-fray-component="sidebar"] > [data-part="toolbar"] {
683
+ flex: 0 0 auto;
684
+ }
685
+
686
+ aside[data-fray-component="sidebar"] > [data-part="header"] h2 {
687
+ margin: 0;
688
+ font: inherit;
689
+ }
690
+
691
+ aside[data-fray-component="sidebar"] > [data-part="content"] {
692
+ flex: 1 1 auto;
693
+ min-width: 0;
694
+ min-height: 0;
695
+ overflow-x: hidden;
696
+ overflow-y: auto;
697
+ }
698
+
699
+ fray-split-view {
700
+ display: grid;
701
+ flex: 1 1 auto;
702
+ min-width: 0;
703
+ min-height: 0;
704
+ overflow: hidden;
705
+ }
706
+
707
+ fray-split-view[data-direction="horizontal"] {
708
+ grid-template-columns:
709
+ var(--split-primary-size, minmax(16rem, 0.8fr))
710
+ minmax(0, 1.2fr);
711
+ }
712
+
713
+ fray-split-view[data-direction="vertical"] {
714
+ grid-template-rows:
715
+ var(--split-primary-size, minmax(12rem, 0.8fr))
716
+ minmax(0, 1.2fr);
717
+ }
718
+
719
+ fray-split-view > [data-part] {
720
+ min-width: 0;
721
+ min-height: 0;
722
+ overflow: auto;
723
+ }
724
+
725
+ fray-split-view[data-direction="horizontal"] > [data-part="primary"] {
726
+ border-inline-end: 1px solid var(--ui-border-color);
727
+ }
728
+
729
+ fray-split-view[data-direction="vertical"] > [data-part="primary"] {
730
+ border-block-end: 1px solid var(--ui-border-color);
731
+ }
732
+
733
+ fray-tab-line {
734
+ display: flex;
735
+ flex-flow: row wrap;
736
+ padding-top: 3px;
737
+ background: var(--fray-tabline-background, var(--tabline-bg));
738
+ }
739
+
740
+ fray-tab-line > [data-part="tab"] {
741
+ background: var(--fray-tab-button-background, var(--fray-button-background));
742
+ border-radius: var(--fray-radius-md, var(--ui-border-radius)) var(--fray-radius-md, var(--ui-border-radius)) 0 0;
743
+ }
744
+
745
+ fray-tab-line > [data-part="tab"][aria-selected="true"] {
746
+ background: var(
747
+ --fray-tab-button-background-active,
748
+ var(--fray-tab-active-background, var(--tab-bg-active))
749
+ );
750
+ }
751
+
752
+ fray-tab-panel {
753
+ display: flex;
754
+ flex-direction: column;
755
+ width: 100%;
756
+ min-height: 0;
757
+ overflow: hidden;
758
+ background: var(--fray-panel-background, var(--panel-bg, transparent));
759
+ border-radius: var(--fray-panel-radius, var(--panel-radius));
760
+ box-shadow: var(--fray-panel-shadow, var(--panel-shadow, none));
761
+ }
762
+
763
+ fray-tab-panel > [data-part="content"] {
764
+ display: flex;
765
+ flex-direction: column;
766
+ flex: 1;
767
+ overflow: auto;
768
+ background: var(--fray-panel-background, var(--panel-bg, transparent));
769
+ }
770
+
771
+ fray-textbox input {
772
+ cursor: text;
773
+ }
774
+
775
+ fray-textbox > [data-part="error"] {
776
+ margin: 0;
777
+ color: var(--fray-color-error, var(--error-color));
778
+ }
779
+
780
+ fray-theme-picker {
781
+ position: relative;
782
+ }
783
+
784
+ fray-theme-picker > select {
785
+ min-width: 8rem;
786
+ }
787
+
788
+ fieldset[data-fray-component="toggle"] {
789
+ margin: 0;
790
+ padding: 0;
791
+ border: 0;
792
+ }
793
+
794
+ fieldset[data-fray-component="toggle"] > [data-part="options"] {
795
+ display: flex;
796
+ padding: 0;
797
+ }
798
+
799
+ fieldset[data-fray-component="toggle"] [data-part="option"] {
800
+ background: var(--fray-toggle-button-background, var(--fray-button-background));
801
+ border-radius: 0;
802
+ }
803
+
804
+ fieldset[data-fray-component="toggle"] [data-part="option"]:first-child {
805
+ border-radius: var(--ui-border-radius) 0 0 var(--ui-border-radius);
806
+ }
807
+
808
+ fieldset[data-fray-component="toggle"] [data-part="option"]:last-child {
809
+ border-radius: 0 var(--ui-border-radius) var(--ui-border-radius) 0;
810
+ }
811
+
812
+ fieldset[data-fray-component="toggle"] [data-part="option"][aria-checked="true"] {
813
+ background: var(
814
+ --fray-toggle-button-background-checked,
815
+ var(--fray-selection-background, var(--toggle-selected-bg))
816
+ );
817
+ color: var(--fray-selection-color, var(--toggle-selected-text));
818
+ }
819
+
820
+ fray-toolbar {
821
+ display: flex;
822
+ flex-wrap: wrap;
823
+ align-items: center;
824
+ gap: var(--spacing-small, 0.5rem);
825
+ padding: var(--ui-padding);
826
+ }
827
+
828
+ fray-toolbar[data-orientation="vertical"] {
829
+ flex-direction: column;
830
+ align-items: stretch;
831
+ }
832
+
833
+ fray-tree-view {
834
+ display: flex;
835
+ flex-direction: column;
836
+ min-width: 0;
837
+ min-height: 0;
838
+ overflow: auto;
839
+ }
840
+
841
+ fray-tree-view > [data-part="tree"] {
842
+ display: grid;
843
+ align-content: start;
844
+ }
845
+
846
+ fray-tree-view [data-part="item"] {
847
+ display: flex;
848
+ align-items: flex-start;
849
+ gap: 0.35rem;
850
+ min-width: 0;
851
+ padding: 0.38rem 0.5rem;
852
+ padding-inline-start: calc(0.5rem + var(--tree-depth) * 1.1rem);
853
+ cursor: default;
854
+ user-select: none;
855
+ }
856
+
857
+ fray-tree-view [data-part="item"]:hover {
858
+ background: var(--button-background-hover);
859
+ }
860
+
861
+ fray-tree-view [data-part="item"]:focus-visible {
862
+ outline: 2px solid var(--ui-accent-color);
863
+ outline-offset: -2px;
864
+ }
865
+
866
+ fray-tree-view [data-part="item"][aria-selected="true"] {
867
+ color: var(--toggle-selected-text);
868
+ background: var(--toggle-selected-bg);
869
+ }
870
+
871
+ fray-tree-view [data-part="expander"] {
872
+ flex: 0 0 1rem;
873
+ text-align: center;
874
+ }
875
+
876
+ fray-tree-view [data-part="expander"][data-expandable] {
877
+ cursor: pointer;
878
+ }
879
+
880
+ fray-tree-view [data-part="label"] {
881
+ min-width: 0;
882
+ overflow-wrap: anywhere;
883
+ }
884
+
885
+ fray-tree-view > [data-part="empty"] {
886
+ margin: 0;
887
+ padding: var(--ui-padding, 0.75rem);
888
+ }
889
+
890
+ @media (forced-colors: active) {
891
+ fray-tree-view [data-part="item"][aria-selected="true"] {
892
+ outline: 2px solid Highlight;
893
+ forced-color-adjust: auto;
894
+ }
895
+ }
896
+
897
+ fray-tri-checkbox > [data-part="control"] {
898
+ display: inline-flex;
899
+ align-items: center;
900
+ gap: 0.35em;
901
+ width: auto;
902
+ font-family: inherit;
903
+ }
904
+
905
+ fray-tri-checkbox [data-part="symbol"] {
906
+ display: inline-grid;
907
+ width: 1em;
908
+ height: 1em;
909
+ line-height: 1;
910
+ place-items: center;
911
+ color: var(--fray-checkbox-symbol-color, currentColor);
912
+ background: var(--fray-checkbox-box-background, transparent);
913
+ border: var(--fray-checkbox-box-border, var(--cbx-o-border));
914
+ border-radius: var(--cbx-border-radius, var(--fray-radius-sm));
915
+ }
916
+
917
+ fray-tri-checkbox [data-part="control"][aria-checked="true"] [data-part="symbol"] {
918
+ background: var(
919
+ --fray-checkbox-box-background-checked,
920
+ var(--fray-selection-background)
921
+ );
922
+ }