@sylwellsoftware/fray 0.4.0 → 0.6.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 (50) hide show
  1. package/README.md +51 -27
  2. package/colors/README.md +28 -13
  3. package/colors/gray/colors.css +54 -26
  4. package/colors/green/colors.css +54 -26
  5. package/colors/iceblue/colors.css +54 -26
  6. package/colors/ocean/colors.css +54 -26
  7. package/colors/orange/colors.css +54 -26
  8. package/colors/purple/colors.css +54 -26
  9. package/colors/red/colors.css +54 -26
  10. package/colors/yellow/colors.css +54 -26
  11. package/dist/Components/data/descriptionList.d.ts.map +1 -1
  12. package/dist/Components/data/listview/listview.d.ts.map +1 -1
  13. package/dist/Components/data/table/DataTable.d.ts.map +1 -1
  14. package/dist/Components/data/table/FilterPanel.d.ts.map +1 -1
  15. package/dist/Components/data/table/TableHeaderCell.d.ts.map +1 -1
  16. package/dist/Components/data/treeview/treeview.d.ts.map +1 -1
  17. package/dist/Components/dialog/dialog.d.ts.map +1 -1
  18. package/dist/Components/layout/panel.d.ts +0 -1
  19. package/dist/Components/layout/panel.d.ts.map +1 -1
  20. package/dist/Components/layout/sidebar.d.ts +0 -1
  21. package/dist/Components/layout/sidebar.d.ts.map +1 -1
  22. package/dist/Components/layout/tabpanel/tabline.d.ts.map +1 -1
  23. package/dist/Components/layout/tabpanel/tabpanel.d.ts.map +1 -1
  24. package/dist/Components/lineinputs/checkbox/Checkbox.d.ts.map +1 -1
  25. package/dist/Components/lineinputs/dropdown.d.ts.map +1 -1
  26. package/dist/Components/lineinputs/textbox.d.ts.map +1 -1
  27. package/dist/Components/lineinputs/toggle.d.ts.map +1 -1
  28. package/dist/Components/menu/toolbar.d.ts +0 -1
  29. package/dist/Components/menu/toolbar.d.ts.map +1 -1
  30. package/dist/Components/status/progressBar.d.ts.map +1 -1
  31. package/dist/Components/theme/stylesheetPicker.d.ts.map +1 -1
  32. package/dist/index.js +1226 -1421
  33. package/dist/index.js.map +1 -1
  34. package/dist/{jsx-dev-runtime-pzseD2Sz.js → jsx-dev-runtime-CqunwZ8j.js} +404 -486
  35. package/dist/jsx-dev-runtime-CqunwZ8j.js.map +1 -0
  36. package/dist/jsx-dev-runtime.js +1 -1
  37. package/dist/jsx-runtime.js +1 -1
  38. package/dist/styling/baseStyleDefinitions.d.ts +0 -82
  39. package/dist/styling/baseStyleDefinitions.d.ts.map +1 -1
  40. package/dist/styling/theme.d.ts +3 -3
  41. package/dist/styling/theme.d.ts.map +1 -1
  42. package/package.json +3 -3
  43. package/styles/structural.css +72 -413
  44. package/themes/README.md +68 -66
  45. package/themes/dark.css +48 -1
  46. package/themes/java/theme.css +410 -135
  47. package/themes/light.css +48 -1
  48. package/themes/minimal/theme.css +408 -125
  49. package/themes/shiny/theme.css +484 -294
  50. package/dist/jsx-dev-runtime-pzseD2Sz.js.map +0 -1
@@ -21,159 +21,76 @@
21
21
  }
22
22
 
23
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"] {
24
+ button,
25
+ th[aria-sort] > [data-part="sort"],
26
+ th[aria-sort] > [data-part="filter-toggle"],
27
+ fray-tab-line > button[role="tab"],
28
+ fieldset:has(> [data-part="options"]) > [data-part="options"],
29
+ fieldset:has(> [data-part="options"]) [role="radio"] {
30
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));
31
+ min-height: var(--control-min-height, 2rem);
37
32
  cursor: pointer;
38
33
  user-select: none;
39
34
  }
40
35
 
41
36
  /* 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"] {
37
+ button,
38
+ th[aria-sort] > [data-part="sort"],
39
+ th[aria-sort] > [data-part="filter-toggle"],
40
+ fray-tab-line > button[role="tab"],
41
+ fieldset:has(> [data-part="options"]) [role="radio"] {
47
42
  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
43
  cursor: default;
53
44
  user-select: none;
54
45
  }
55
46
 
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
47
  /* 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));
48
+ button:disabled,
49
+ th[aria-sort] > [data-part="sort"]:disabled,
50
+ th[aria-sort] > [data-part="filter-toggle"]:disabled,
51
+ fray-tab-line > button[role="tab"]:disabled,
52
+ fieldset:has(> [data-part="options"]) [role="radio"]:disabled {
87
53
  cursor: not-allowed;
88
54
  pointer-events: none;
89
55
  }
90
56
 
91
57
  /* inputline */
92
58
  fray-checkbox,
93
- fray-checkbox > [data-part="control"],
59
+ fray-checkbox > [role="checkbox"],
94
60
  fray-color-picker,
95
61
  fray-color-picker > select,
96
62
  fray-dropdown,
97
63
  fray-dropdown > select,
98
- fray-list-view > [data-part="list"] > [data-part="row"],
64
+ fray-list-view > [role="listbox"] > [role="option"],
99
65
  fray-quad-checkbox,
100
- fray-quad-checkbox > [data-part="control"],
66
+ fray-quad-checkbox > [role="checkbox"],
101
67
  fray-textbox,
102
68
  fray-textbox > input,
103
69
  fray-theme-picker,
104
70
  fray-theme-picker > select,
105
71
  fray-tri-checkbox,
106
- fray-tri-checkbox > [data-part="control"] {
72
+ fray-tri-checkbox > [role="checkbox"] {
107
73
  display: flex;
108
74
  flex-flow: row nowrap;
109
75
  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));
76
+ min-height: var(--control-min-height, 2rem);
115
77
  box-sizing: border-box;
116
78
  }
117
79
 
118
80
  /* input */
119
- fray-checkbox > [data-part="control"],
81
+ fray-checkbox > [role="checkbox"],
120
82
  fray-color-picker > select,
121
83
  fray-dropdown > select,
122
- fray-quad-checkbox > [data-part="control"],
84
+ fray-quad-checkbox > [role="checkbox"],
123
85
  fray-textbox > input,
124
86
  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);
87
+ fray-tri-checkbox > [role="checkbox"] {
129
88
  pointer-events: all;
130
- border: var(--fray-input-border, var(--ui-input-border));
131
89
  width: var(--input-width, 15rem);
132
- box-shadow: var(--fray-input-shadow, var(--input-shadow, none));
133
90
  box-sizing: border-box;
134
91
  white-space: nowrap;
135
92
  }
136
93
 
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
94
  /* labeledinput */
178
95
  fray-color-picker,
179
96
  fray-dropdown,
@@ -185,15 +102,6 @@ fray-theme-picker {
185
102
  gap: .5em;
186
103
  }
187
104
 
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
105
  /* after */
198
106
  fray-placeholder::after {
199
107
  content: "";
@@ -215,70 +123,30 @@ fray-placeholder::after {
215
123
  animation: fray-placeholder-progress 0.8s linear infinite;
216
124
  background-repeat: repeat;
217
125
  background-size: 2rem 2rem;
218
- background-image: var(--fray-working-background-image);
126
+ background-image: var(--working-background-image);
219
127
  border: 0 solid transparent;
220
128
  border-radius: inherit;
221
129
  box-sizing: border-box;
222
130
  }
223
131
 
224
132
  /* noselect */
225
- th[data-fray-component="table-header-cell"] {
133
+ th[aria-sort] {
226
134
  user-select: var(--noselect-user-select);
227
135
  cursor: var(--noselect-cursor);
228
136
  }
229
137
 
230
- /* error */
231
- fray-dropdown[data-error],
232
- fray-textbox[data-error] {
233
- color: var(--fray-color-error, var(--error-color));
234
- }
235
-
236
138
  /* inputlike */
237
139
  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
140
  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
141
  box-sizing: border-box;
245
142
  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
143
  }
276
144
 
277
- button[data-fray-component="button"] {
145
+ button {
278
146
  font-family: inherit;
279
147
  }
280
148
 
281
- fray-checkbox > [data-part="control"] {
149
+ fray-checkbox > [role="checkbox"] {
282
150
  display: inline-flex;
283
151
  align-items: center;
284
152
  gap: 0.35em;
@@ -286,23 +154,12 @@ fray-checkbox > [data-part="control"] {
286
154
  font-family: inherit;
287
155
  }
288
156
 
289
- fray-checkbox [data-part="symbol"] {
157
+ fray-checkbox .inputshell {
290
158
  display: inline-grid;
291
159
  width: 1em;
292
160
  height: 1em;
293
161
  line-height: 1;
294
162
  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
163
  }
307
164
 
308
165
  fray-color-picker {
@@ -315,7 +172,6 @@ fray-color-picker {
315
172
 
316
173
  fray-data-table {
317
174
  overflow: auto;
318
- color: var(--ui-text-color);
319
175
  }
320
176
 
321
177
  fray-data-table > table {
@@ -323,7 +179,7 @@ fray-data-table {
323
179
  border-collapse: collapse;
324
180
  }
325
181
 
326
- fray-data-table thead:has([data-fray-component="filter-panel"]) {
182
+ fray-data-table thead:has([aria-expanded="true"]) {
327
183
  position: relative;
328
184
  z-index: 1100;
329
185
  }
@@ -339,32 +195,6 @@ fray-data-table {
339
195
  user-select: none;
340
196
  }
341
197
 
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
198
  fray-placeholder {
369
199
  display: block;
370
200
  min-width: 3rem;
@@ -381,33 +211,18 @@ fray-placeholder {
381
211
  to { background-position: 2rem 0; }
382
212
  }
383
213
 
384
- th[data-fray-component="table-header-cell"] {
214
+ th[aria-sort] {
385
215
  position: relative;
386
216
  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"] {
217
+ }
218
+
219
+ th[aria-sort] > [data-part="sort"],
220
+ th[aria-sort] > [data-part="filter-toggle"] {
401
221
  width: auto;
402
222
  font-family: inherit;
403
- color: inherit;
404
- background: var(
405
- --fray-table-header-button-background,
406
- var(--fray-button-background)
407
- );
408
223
  }
409
224
 
410
- th[data-fray-component="table-header-cell"] > [data-part="filter-toggle"] {
225
+ th[aria-sort] > [data-part="filter-toggle"] {
411
226
  margin-inline-start: var(--ui-padding-h);
412
227
  font-size: 0.75em;
413
228
  }
@@ -422,109 +237,64 @@ fray-filter-panel {
422
237
  padding: var(--ui-padding);
423
238
  flex-flow: column nowrap;
424
239
  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
240
  overflow-y: auto;
431
241
  }
432
242
 
433
- div[data-fray-component="description-item"] {
243
+ div:has(> dt + dd) {
434
244
  display: grid;
435
245
  grid-template-columns: minmax(7rem, 0.7fr) minmax(0, 1.3fr);
436
246
  gap: var(--spacing-small, 0.5rem);
437
247
  padding-block: var(--spacing-small, 0.5rem);
438
- border-block-end: 1px solid var(--ui-border-color);
439
248
  }
440
249
 
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 {
250
+ div:has(> dt + dd) > dd {
447
251
  min-width: 0;
448
252
  margin: 0;
449
253
  overflow-wrap: anywhere;
450
254
  }
451
255
 
452
256
  @media (max-width: 36rem) {
453
- div[data-fray-component="description-item"] {
257
+ div:has(> dt + dd) {
454
258
  grid-template-columns: minmax(0, 1fr);
455
259
  gap: 0.15rem;
456
260
  }
457
261
  }
458
262
 
459
- dl[data-fray-component="description-list"] {
263
+ dl:has(> div > dt + dd) {
460
264
  display: grid;
461
265
  margin: 0;
462
266
  }
463
267
 
464
- dialog[data-fray-component="dialog"] {
268
+ dialog {
465
269
  width: min(38rem, calc(100vw - 2rem));
466
270
  max-height: min(42rem, calc(100dvh - 2rem));
467
271
  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
272
  }
474
273
 
475
- dialog[data-fray-component="dialog"]::backdrop {
476
- background: var(--fray-dialog-backdrop-background);
477
- }
478
-
479
- dialog[data-fray-component="dialog"] > [data-part] {
274
+ dialog > header,
275
+ dialog > p,
276
+ dialog > [data-part="content"],
277
+ dialog > footer {
480
278
  padding: var(--panel-padding, 0.75rem);
481
279
  }
482
280
 
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"] {
281
+ dialog > header h2,
282
+ dialog > p {
500
283
  margin: 0;
501
284
  }
502
285
 
503
- dialog[data-fray-component="dialog"] > [data-part="content"] {
286
+ dialog > [data-part="content"] {
504
287
  overflow: auto;
505
288
  }
506
289
 
507
- dialog[data-fray-component="dialog"] > [data-part="actions"] {
290
+ dialog > footer {
508
291
  display: flex;
509
292
  justify-content: flex-end;
510
293
  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
294
  }
525
295
 
526
296
  @media (forced-colors: active) {
527
- dialog[data-fray-component="dialog"] {
297
+ dialog {
528
298
  border: 2px solid CanvasText;
529
299
  }
530
300
  }
@@ -540,39 +310,23 @@ fray-list-view {
540
310
  min-height: 0;
541
311
  }
542
312
 
543
- fray-list-view > [data-part="list"],
313
+ fray-list-view > [role="listbox"],
544
314
  fray-list-view > [data-part="loading"] {
545
315
  display: flex;
546
316
  flex-direction: column;
547
317
  }
548
318
 
549
- fray-list-view > [data-part="list"] > [data-part="row"] {
319
+ fray-list-view > [role="listbox"] > [role="option"] {
550
320
  cursor: default;
551
321
  user-select: none;
552
322
  }
553
323
 
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"] {
324
+ fray-list-view > [role="status"],
325
+ fray-list-view > [role="alert"] {
568
326
  margin: 0;
569
327
  padding: var(--ui-padding);
570
328
  }
571
329
 
572
- fray-list-view > [data-part="error"] {
573
- color: var(--error-color);
574
- }
575
-
576
330
  fray-panel {
577
331
  display: flex;
578
332
  flex-direction: column;
@@ -580,24 +334,11 @@ fray-panel {
580
334
  flex: 0 0 auto;
581
335
  }
582
336
 
583
- fray-panel > [data-part="header"] h2 {
337
+ fray-panel > header h2 {
584
338
  margin: 0;
585
339
  font: inherit;
586
340
  }
587
341
 
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
342
  fray-panel > [data-part="content"] {
602
343
  display: flex;
603
344
  flex: 1;
@@ -625,16 +366,9 @@ fray-progress-bar {
625
366
  gap: var(--spacing-medium, 1rem);
626
367
  }
627
368
 
628
- fray-progress-bar > [data-part="label-line"] > label {
629
- font-weight: 600;
630
- }
631
-
632
369
  fray-progress-bar > progress {
633
370
  width: 100%;
634
371
  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
372
  }
639
373
 
640
374
  @media (forced-colors: active) {
@@ -643,7 +377,7 @@ fray-progress-bar {
643
377
  }
644
378
  }
645
379
 
646
- fray-quad-checkbox > [data-part="control"] {
380
+ fray-quad-checkbox > [role="checkbox"] {
647
381
  display: inline-flex;
648
382
  align-items: center;
649
383
  gap: 0.35em;
@@ -651,26 +385,15 @@ fray-quad-checkbox > [data-part="control"] {
651
385
  font-family: inherit;
652
386
  }
653
387
 
654
- fray-quad-checkbox [data-part="symbol"] {
388
+ fray-quad-checkbox .inputshell {
655
389
  display: inline-grid;
656
390
  width: 1em;
657
391
  height: 1em;
658
392
  line-height: 1;
659
393
  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
394
  }
672
395
 
673
- aside[data-fray-component="sidebar"] {
396
+ aside {
674
397
  display: flex;
675
398
  flex-direction: column;
676
399
  min-width: 0;
@@ -678,17 +401,17 @@ aside[data-fray-component="sidebar"] {
678
401
  overflow: hidden;
679
402
  }
680
403
 
681
- aside[data-fray-component="sidebar"] > [data-part="header"],
682
- aside[data-fray-component="sidebar"] > [data-part="toolbar"] {
404
+ aside > header,
405
+ aside > [data-part="toolbar"] {
683
406
  flex: 0 0 auto;
684
407
  }
685
408
 
686
- aside[data-fray-component="sidebar"] > [data-part="header"] h2 {
409
+ aside > header h2 {
687
410
  margin: 0;
688
411
  font: inherit;
689
412
  }
690
413
 
691
- aside[data-fray-component="sidebar"] > [data-part="content"] {
414
+ aside > [data-part="content"] {
692
415
  flex: 1 1 auto;
693
416
  min-width: 0;
694
417
  min-height: 0;
@@ -734,19 +457,6 @@ fray-tab-line {
734
457
  display: flex;
735
458
  flex-flow: row wrap;
736
459
  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
460
  }
751
461
 
752
462
  fray-tab-panel {
@@ -755,9 +465,6 @@ fray-tab-panel {
755
465
  width: 100%;
756
466
  min-height: 0;
757
467
  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
468
  }
762
469
 
763
470
  fray-tab-panel > [data-part="content"] {
@@ -765,16 +472,14 @@ fray-tab-panel {
765
472
  flex-direction: column;
766
473
  flex: 1;
767
474
  overflow: auto;
768
- background: var(--fray-panel-background, var(--panel-bg, transparent));
769
475
  }
770
476
 
771
477
  fray-textbox input {
772
478
  cursor: text;
773
479
  }
774
480
 
775
- fray-textbox > [data-part="error"] {
481
+ fray-textbox > [role="alert"] {
776
482
  margin: 0;
777
- color: var(--fray-color-error, var(--error-color));
778
483
  }
779
484
 
780
485
  fray-theme-picker {
@@ -785,38 +490,17 @@ fray-theme-picker {
785
490
  min-width: 8rem;
786
491
  }
787
492
 
788
- fieldset[data-fray-component="toggle"] {
493
+ fieldset:has(> [data-part="options"]) {
789
494
  margin: 0;
790
495
  padding: 0;
791
496
  border: 0;
792
497
  }
793
498
 
794
- fieldset[data-fray-component="toggle"] > [data-part="options"] {
499
+ fieldset:has(> [data-part="options"]) > [data-part="options"] {
795
500
  display: flex;
796
501
  padding: 0;
797
502
  }
798
503
 
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
504
  fray-toolbar {
821
505
  display: flex;
822
506
  flex-wrap: wrap;
@@ -838,12 +522,12 @@ fray-tree-view {
838
522
  overflow: auto;
839
523
  }
840
524
 
841
- fray-tree-view > [data-part="tree"] {
525
+ fray-tree-view > [role="tree"] {
842
526
  display: grid;
843
527
  align-content: start;
844
528
  }
845
529
 
846
- fray-tree-view [data-part="item"] {
530
+ fray-tree-view [role="treeitem"] {
847
531
  display: flex;
848
532
  align-items: flex-start;
849
533
  gap: 0.35rem;
@@ -854,20 +538,6 @@ fray-tree-view {
854
538
  user-select: none;
855
539
  }
856
540
 
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
541
  fray-tree-view [data-part="expander"] {
872
542
  flex: 0 0 1rem;
873
543
  text-align: center;
@@ -882,19 +552,19 @@ fray-tree-view {
882
552
  overflow-wrap: anywhere;
883
553
  }
884
554
 
885
- fray-tree-view > [data-part="empty"] {
555
+ fray-tree-view > [role="status"] {
886
556
  margin: 0;
887
557
  padding: var(--ui-padding, 0.75rem);
888
558
  }
889
559
 
890
560
  @media (forced-colors: active) {
891
- fray-tree-view [data-part="item"][aria-selected="true"] {
561
+ fray-tree-view [role="treeitem"][aria-selected="true"] {
892
562
  outline: 2px solid Highlight;
893
563
  forced-color-adjust: auto;
894
564
  }
895
565
  }
896
566
 
897
- fray-tri-checkbox > [data-part="control"] {
567
+ fray-tri-checkbox > [role="checkbox"] {
898
568
  display: inline-flex;
899
569
  align-items: center;
900
570
  gap: 0.35em;
@@ -902,21 +572,10 @@ fray-tri-checkbox > [data-part="control"] {
902
572
  font-family: inherit;
903
573
  }
904
574
 
905
- fray-tri-checkbox [data-part="symbol"] {
575
+ fray-tri-checkbox .inputshell {
906
576
  display: inline-grid;
907
577
  width: 1em;
908
578
  height: 1em;
909
579
  line-height: 1;
910
580
  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
581
  }