@sylwellsoftware/fray 0.6.0 → 1.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 (117) hide show
  1. package/README.md +426 -205
  2. package/colors/README.md +26 -23
  3. package/colors/gray/colors.css +1 -42
  4. package/colors/green/colors.css +1 -42
  5. package/colors/iceblue/colors.css +5 -43
  6. package/colors/ocean/colors.css +1 -42
  7. package/colors/orange/colors.css +1 -42
  8. package/colors/purple/colors.css +1 -42
  9. package/colors/red/colors.css +1 -42
  10. package/colors/yellow/colors.css +1 -42
  11. package/dist/Components/Placeholder.d.ts +1 -2
  12. package/dist/Components/Placeholder.d.ts.map +1 -1
  13. package/dist/Components/component.d.ts +15 -7
  14. package/dist/Components/component.d.ts.map +1 -1
  15. package/dist/Components/data/descriptionList.d.ts +3 -1
  16. package/dist/Components/data/descriptionList.d.ts.map +1 -1
  17. package/dist/Components/data/listview/listview.d.ts +1 -2
  18. package/dist/Components/data/listview/listview.d.ts.map +1 -1
  19. package/dist/Components/data/table/DataTable.d.ts +1 -1
  20. package/dist/Components/data/table/DataTable.d.ts.map +1 -1
  21. package/dist/Components/data/table/FilterPanel.d.ts +2 -4
  22. package/dist/Components/data/table/FilterPanel.d.ts.map +1 -1
  23. package/dist/Components/data/table/TableHeader.d.ts +2 -0
  24. package/dist/Components/data/table/TableHeader.d.ts.map +1 -1
  25. package/dist/Components/data/table/TableHeaderCell.d.ts +1 -1
  26. package/dist/Components/data/table/TableHeaderCell.d.ts.map +1 -1
  27. package/dist/Components/data/treeview/treeitem.d.ts +1 -0
  28. package/dist/Components/data/treeview/treeitem.d.ts.map +1 -1
  29. package/dist/Components/data/treeview/treeview.d.ts +2 -1
  30. package/dist/Components/data/treeview/treeview.d.ts.map +1 -1
  31. package/dist/Components/dialog/dialog.d.ts +6 -2
  32. package/dist/Components/dialog/dialog.d.ts.map +1 -1
  33. package/dist/Components/layout/header.d.ts +19 -0
  34. package/dist/Components/layout/header.d.ts.map +1 -0
  35. package/dist/Components/layout/panel.d.ts +7 -3
  36. package/dist/Components/layout/panel.d.ts.map +1 -1
  37. package/dist/Components/layout/sidebar.d.ts +4 -0
  38. package/dist/Components/layout/sidebar.d.ts.map +1 -1
  39. package/dist/Components/layout/splitView.d.ts +1 -1
  40. package/dist/Components/layout/splitView.d.ts.map +1 -1
  41. package/dist/Components/layout/tabpanel/tab.d.ts +3 -0
  42. package/dist/Components/layout/tabpanel/tab.d.ts.map +1 -1
  43. package/dist/Components/layout/tabpanel/tabline.d.ts +1 -2
  44. package/dist/Components/layout/tabpanel/tabline.d.ts.map +1 -1
  45. package/dist/Components/layout/tabpanel/tabpanel.d.ts +10 -2
  46. package/dist/Components/layout/tabpanel/tabpanel.d.ts.map +1 -1
  47. package/dist/Components/lineinputs/CheckableControl.d.ts +7 -0
  48. package/dist/Components/lineinputs/CheckableControl.d.ts.map +1 -0
  49. package/dist/Components/lineinputs/LabeledInputControl.d.ts +7 -0
  50. package/dist/Components/lineinputs/LabeledInputControl.d.ts.map +1 -0
  51. package/dist/Components/lineinputs/SelectControl.d.ts +7 -0
  52. package/dist/Components/lineinputs/SelectControl.d.ts.map +1 -0
  53. package/dist/Components/lineinputs/checkbox/Checkbox.d.ts +11 -6
  54. package/dist/Components/lineinputs/checkbox/Checkbox.d.ts.map +1 -1
  55. package/dist/Components/lineinputs/checkbox/QuadCheckbox.d.ts +1 -2
  56. package/dist/Components/lineinputs/checkbox/QuadCheckbox.d.ts.map +1 -1
  57. package/dist/Components/lineinputs/checkbox/TriCheckbox.d.ts +1 -2
  58. package/dist/Components/lineinputs/checkbox/TriCheckbox.d.ts.map +1 -1
  59. package/dist/Components/lineinputs/dropdown.d.ts +7 -6
  60. package/dist/Components/lineinputs/dropdown.d.ts.map +1 -1
  61. package/dist/Components/lineinputs/label.d.ts +14 -0
  62. package/dist/Components/lineinputs/label.d.ts.map +1 -0
  63. package/dist/Components/lineinputs/radio.d.ts +64 -0
  64. package/dist/Components/lineinputs/radio.d.ts.map +1 -0
  65. package/dist/Components/lineinputs/textbox.d.ts +7 -6
  66. package/dist/Components/lineinputs/textbox.d.ts.map +1 -1
  67. package/dist/Components/lineinputs/toggle.d.ts +10 -3
  68. package/dist/Components/lineinputs/toggle.d.ts.map +1 -1
  69. package/dist/Components/menu/button.d.ts +6 -3
  70. package/dist/Components/menu/button.d.ts.map +1 -1
  71. package/dist/Components/menu/toolbar.d.ts +1 -1
  72. package/dist/Components/menu/toolbar.d.ts.map +1 -1
  73. package/dist/Components/status/progressBar.d.ts +1 -1
  74. package/dist/Components/status/progressBar.d.ts.map +1 -1
  75. package/dist/Components/theme/stylesheetPicker.d.ts +6 -7
  76. package/dist/Components/theme/stylesheetPicker.d.ts.map +1 -1
  77. package/dist/index.d.ts +11 -1
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +3378 -1454
  80. package/dist/index.js.map +1 -1
  81. package/dist/jsx-dev-runtime-CRDpvXOH.js +1208 -0
  82. package/dist/jsx-dev-runtime-CRDpvXOH.js.map +1 -0
  83. package/dist/jsx-dev-runtime.js +1 -1
  84. package/dist/jsx-runtime.js +1 -1
  85. package/dist/routing/RouteLink.d.ts +18 -0
  86. package/dist/routing/RouteLink.d.ts.map +1 -0
  87. package/dist/routing/RouteQuery.d.ts +19 -0
  88. package/dist/routing/RouteQuery.d.ts.map +1 -0
  89. package/dist/routing/RouteScope.d.ts +18 -0
  90. package/dist/routing/RouteScope.d.ts.map +1 -0
  91. package/dist/routing/RouteValue.d.ts +19 -0
  92. package/dist/routing/RouteValue.d.ts.map +1 -0
  93. package/dist/routing/navigationAdapter.d.ts +33 -0
  94. package/dist/routing/navigationAdapter.d.ts.map +1 -0
  95. package/dist/routing/route.d.ts +64 -0
  96. package/dist/routing/route.d.ts.map +1 -0
  97. package/dist/routing/router.d.ts +109 -0
  98. package/dist/routing/router.d.ts.map +1 -0
  99. package/dist/runtime.d.ts +10 -13
  100. package/dist/runtime.d.ts.map +1 -1
  101. package/dist/styling/styleRegistry.d.ts +0 -4
  102. package/dist/styling/styleRegistry.d.ts.map +1 -1
  103. package/dist/styling/theme.d.ts +14 -2
  104. package/dist/styling/theme.d.ts.map +1 -1
  105. package/package.json +5 -6
  106. package/styles/structural.css +942 -320
  107. package/themes/README.md +30 -72
  108. package/themes/base.css +311 -0
  109. package/themes/java/theme.css +14 -411
  110. package/themes/minimal/theme.css +3 -407
  111. package/themes/shiny/theme.css +127 -500
  112. package/dist/jsx-dev-runtime-CqunwZ8j.js +0 -1174
  113. package/dist/jsx-dev-runtime-CqunwZ8j.js.map +0 -1
  114. package/dist/styling/baseStyleDefinitions.d.ts +0 -75
  115. package/dist/styling/baseStyleDefinitions.d.ts.map +0 -1
  116. package/themes/dark.css +0 -86
  117. package/themes/light.css +0 -86
@@ -1,504 +1,131 @@
1
1
  @charset "utf-8";
2
-
2
+ /* Shiny changes theme tokens only. Components own all consuming selectors. */
3
3
  @layer theme {
4
- :where(:root:not([data-theme]), [data-theme="shiny"]) {
5
- color-scheme: light;
6
- --font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
7
- --font-size: 0.875rem;
8
- --line-height: 1.25;
9
- --control-min-height: 2rem;
10
- --space-xs: 0.25rem;
11
- --space-sm: 0.5rem;
12
- --space-md: 1rem;
13
- --space-lg: 1.5rem;
14
- --radius-sm: 0.2rem;
15
- --radius-md: 0.35rem;
16
- --radius-lg: 0.55rem;
17
- --motion-fast: 120ms;
18
-
19
- --shiny-primary-gradient: linear-gradient(to bottom, var(--palette-primary-300), var(--palette-primary) 55%, var(--palette-primary-700));
20
- --shiny-surface-gradient: linear-gradient(to bottom, var(--palette-light), var(--palette-neutral-100) 62%, var(--palette-neutral-200));
21
- --shiny-highlight: radial-gradient(145% 90% at 35% 0%, color-mix(in oklch, var(--palette-light) 62%, transparent), transparent 58%);
22
-
23
- --ui-background: var(--palette-neutral-50);
24
- --ui-color: var(--palette-neutral-950);
25
- --ui-border: 1px solid var(--palette-neutral-300);
26
- --ui-shadow: 0 2px 6px color-mix(in oklch, var(--palette-dark) 38%, transparent);
27
- --focus-ring: 0 0 0 2px var(--palette-primary-400);
28
- --focus-color: var(--palette-primary);
29
- --error-color: var(--palette-red);
30
- --error-contrast: var(--palette-contrast-light);
31
- --success-color: var(--palette-green);
32
-
33
- --panel-background: var(--palette-neutral-50);
34
- --panel-color: var(--palette-neutral-950);
35
- --panel-border: 1px solid var(--palette-neutral-300);
36
- --panel-shadow: 0 2px 8px color-mix(in oklch, var(--palette-dark) 34%, transparent);
37
- --panel-radius: var(--radius-md);
38
- --dialog-shadow: 0 1.25rem 4rem color-mix(in oklch, var(--palette-dark) 35%, transparent);
39
- --dialog-backdrop-background: color-mix(in oklch, var(--palette-dark) 55%, transparent);
40
-
41
- --header-background: var(--shiny-primary-gradient);
42
- --header-color: var(--palette-contrast-light);
43
- --header-border: 0 solid transparent;
44
- --header-shadow: 0 2px 4px color-mix(in oklch, var(--palette-dark) 42%, transparent);
45
- --section-header-background: var(--header-background);
46
- --section-header-color: var(--header-color);
47
- --section-header-border: var(--header-border);
48
- --section-header-shadow: var(--header-shadow);
49
- --panel-header-background: var(--section-header-background);
50
- --panel-header-color: var(--section-header-color);
51
- --table-header-background: var(--palette-neutral-100);
52
- --table-header-color: var(--header-color);
53
- --dialog-header-background: var(--section-header-background);
54
- --dialog-header-color: var(--section-header-color);
55
-
56
- --button-background: var(--shiny-surface-gradient);
57
- --button-background-hover: linear-gradient(to bottom, var(--palette-primary-50), var(--palette-primary-100));
58
- --button-background-active: var(--shiny-primary-gradient);
59
- --button-background-disabled: var(--palette-neutral-200);
60
- --button-color: var(--palette-neutral-950);
61
- --button-border: 1px solid var(--palette-neutral-500);
62
- --button-shadow: 0 1px 2px color-mix(in oklch, var(--palette-dark) 48%, transparent), inset 0 1px 0 color-mix(in oklch, var(--palette-light) 72%, transparent);
63
- --button-shadow-active: inset 0 2px 3px color-mix(in oklch, var(--palette-dark) 45%, transparent);
64
- --toggle-button-background: var(--button-background);
65
- --toggle-button-background-checked: var(--selection-background);
66
- --tab-button-background: var(--button-background);
67
- --tab-button-background-active: var(--tab-active-background);
68
- --menu-button-background: var(--button-background);
69
- --dropdown-trigger-background: var(--button-background);
70
- --table-header-button-background: var(--button-background);
71
-
72
- --input-background: var(--palette-light);
73
- --input-color: var(--palette-neutral-950);
74
- --input-border: 1px solid var(--palette-neutral-500);
75
- --input-shadow: none;
76
- --input-background-disabled: var(--palette-neutral-200);
77
- --input-color-disabled: var(--palette-neutral-700);
78
-
79
- --selection-background: var(--palette-primary);
80
- --selection-color: var(--palette-contrast-light);
81
- --row-hover-background: var(--palette-primary-100);
82
- --table-row-background: var(--palette-neutral-50);
83
- --table-row-alt-background: var(--palette-neutral-100);
84
- --checkbox-box-background: var(--input-background);
85
- --checkbox-box-background-checked: var(--selection-background);
86
- --checkbox-box-border: var(--input-border);
87
- --checkbox-symbol-color: var(--selection-color);
88
- --radio-background: var(--button-background);
89
- --radio-background-checked: var(--selection-background);
90
- --toolbar-background: var(--shiny-surface-gradient);
91
- --toolbar-color: var(--palette-neutral-950);
92
- --toolbar-border: 0 solid transparent;
93
- --toolbar-shadow: none;
94
- --tabline-background: var(--palette-neutral-100);
95
- --tab-active-background: var(--palette-neutral-50);
96
- --progress-track-background: var(--palette-neutral-200);
97
- --progress-value-background: var(--shiny-primary-gradient);
98
- --working-background-image: linear-gradient(-45deg, transparent 25%, color-mix(in oklch, var(--palette-light) 35%, transparent) 25% 50%, transparent 50% 75%, color-mix(in oklch, var(--palette-light) 35%, transparent) 75%);
99
-
100
- --colored-base: var(--palette-primary);
101
- --colored-light: var(--palette-primary-light);
102
- --colored-dark: var(--palette-primary-dark);
103
- --colored-contrast: var(--palette-contrast-light);
104
-
105
- --base-font-size: var(--font-size);
106
- --ui-font-size: var(--font-size);
107
- --ui-padding: var(--space-sm);
108
- --ui-padding-h: var(--space-sm);
109
- --ui-padding-v: var(--space-xs);
110
- --ui-border-radius: var(--radius-md);
111
- --ui-text-color: var(--ui-color);
112
- --ui-muted-text-color: var(--palette-neutral-700);
113
- --ui-border-color: var(--palette-neutral-300);
114
- --ui-input-bg: var(--input-background);
115
- --ui-input-border: var(--input-border);
116
- --ui-input-bg-disabled: var(--input-background-disabled);
117
- --ui-input-border-disabled: 1px solid var(--palette-neutral-300);
118
- --ui-input-text-color-disabled: var(--input-color-disabled);
119
- --ui-accent-color: var(--palette-primary);
120
- --ui-accent-color-highlight: var(--palette-primary-100);
121
- --input-width: 15rem;
122
- --button-border-disabled: 1px solid var(--palette-neutral-300);
123
- --toggle-selected-bg: var(--selection-background);
124
- --toggle-selected-text: var(--selection-color);
125
- --panel-bg: var(--panel-background);
126
- --panel-padding: var(--space-md);
127
- --toolbar-bg: var(--toolbar-background);
128
- --toolbar-radius: var(--radius-md);
129
- --sectionheader-bg: var(--section-header-background);
130
- --sectionheader-shadow: var(--section-header-shadow);
131
- --sectionheader-color: var(--section-header-color);
132
- --tabline-bg: var(--tabline-background);
133
- --tab-bg-active: var(--tab-active-background);
134
- --cbx-o-border: var(--checkbox-box-border);
135
- --cbx-border-radius: var(--radius-sm);
136
- --spacing-small: var(--space-sm);
137
- --spacing-medium: var(--space-md);
138
- --noselect-user-select: none;
139
- --noselect-cursor: default;
140
-
141
- font-family: var(--font-family);
142
- font-size: var(--font-size);
143
- line-height: var(--line-height);
144
- color: var(--ui-color);
145
- background: var(--ui-background);
146
- }
147
-
148
- @scope (:root:not([data-theme]), [data-theme="shiny"]) to ([data-theme], [data-theme-exclude]) {
149
-
150
- :where(button, .buttonlike) {
151
- min-height: var(--control-min-height);
152
- padding: var(--space-xs) var(--space-sm);
153
- color: var(--button-color);
154
- background: var(--button-background);
155
- border: var(--button-border);
156
- border-radius: var(--radius-md);
157
- box-shadow: var(--button-shadow);
158
- font: inherit;
159
- cursor: default;
160
- user-select: none;
161
- }
162
-
163
- :where(button, .buttonlike):hover:not(:disabled, [aria-disabled="true"]) {
164
- background: var(--button-background-hover);
165
- }
166
-
167
- :where(button, .buttonlike):active:not(:disabled, [aria-disabled="true"]) {
168
- background: var(--button-background-active);
169
- box-shadow: var(--button-shadow-active);
170
- }
171
-
172
- :where(button, .buttonlike):focus-visible,
173
- :where(input, select, textarea, .inputlike):focus-visible {
174
- outline: 2px solid transparent;
175
- outline-offset: 1px;
176
- box-shadow: var(--focus-ring);
177
- }
178
-
179
- :where(button, .buttonlike):disabled,
180
- :where(.buttonlike[aria-disabled="true"]) {
181
- color: var(--input-color-disabled);
182
- background: var(--button-background-disabled);
183
- cursor: not-allowed;
184
- pointer-events: none;
185
- }
186
-
187
- :where(.buttonshell) {
188
- border: var(--button-border);
189
- border-radius: var(--radius-md);
190
- box-shadow: var(--button-shadow);
191
- }
192
-
193
- :where(.buttoninner) {
194
- padding: var(--space-xs) var(--space-sm);
195
- color: var(--button-color);
196
- background: var(--button-background);
197
- }
198
-
199
- :where(input, select, textarea, .inputlike) {
200
- min-height: var(--control-min-height);
201
- padding: var(--space-xs) var(--space-sm);
202
- color: var(--input-color);
203
- background: var(--input-background);
204
- border: var(--input-border);
205
- border-radius: var(--radius-md);
206
- box-shadow: var(--input-shadow);
207
- box-sizing: border-box;
208
- font: inherit;
209
- }
210
-
211
- :where(input, select, textarea, .inputlike):disabled,
212
- :where(.inputlike[aria-disabled="true"]) {
213
- color: var(--input-color-disabled);
214
- background: var(--input-background-disabled);
215
- cursor: not-allowed;
216
- }
217
-
218
- :where(.inputshell) {
219
- color: var(--input-color);
220
- background: var(--input-background);
221
- border: var(--input-border);
222
- border-radius: var(--radius-sm);
223
- box-shadow: var(--input-shadow);
224
- }
225
-
226
- :where([role="checkbox"][aria-checked="true"] .inputshell) {
227
- color: var(--checkbox-symbol-color);
228
- background: var(--checkbox-box-background-checked);
229
- }
230
-
231
- :where(.inputinner) {
232
- padding: var(--space-xs) var(--space-sm);
233
- color: var(--input-color);
234
- background: var(--input-background);
235
- }
236
-
237
- :where(.selectshell) { position: relative; }
238
-
239
- :where(table, textarea, [role="tree"], [role="listbox"], .datacomponentlike) {
240
- color: var(--ui-color);
241
- background: var(--ui-background);
242
- border-color: var(--palette-neutral-300);
243
- }
244
-
245
- :where(.datacomponentshell) {
246
- border: var(--ui-border);
247
- border-radius: var(--panel-radius);
248
- box-shadow: var(--ui-shadow);
249
- }
250
-
251
- :where(.datacomponentinner) {
252
- padding: var(--space-sm);
253
- color: var(--ui-color);
254
- background: var(--ui-background);
255
- }
256
-
257
- :where(header, th, .headerlike) {
258
- color: var(--header-color);
259
- background: var(--header-background);
260
- border: var(--header-border);
261
- box-shadow: var(--header-shadow);
262
- }
263
-
264
- :where(th > button) {
265
- color: var(--table-header-color);
266
- background: var(--table-header-button-background);
267
- }
268
-
269
- :where(th) {
270
- color: var(--table-header-color);
271
- background: var(--table-header-background);
272
- }
273
-
274
- :where(dialog > header) {
275
- color: var(--dialog-header-color);
276
- background: var(--dialog-header-background);
277
- }
278
-
279
- :where(dl > div) { border-block-end: 1px solid var(--ui-border-color); }
280
- :where(dt) {
281
- color: var(--ui-muted-text-color);
282
- font-weight: 600;
283
- }
284
-
285
- :where(.headershell) {
286
- border: var(--header-border);
287
- box-shadow: var(--header-shadow);
288
- }
289
-
290
- :where(.headerinner) {
291
- padding: var(--space-sm);
292
- color: var(--header-color);
293
- background: var(--header-background);
294
- }
295
-
296
- :where(.panellike, aside, dialog) {
297
- color: var(--panel-color);
298
- background: var(--panel-background);
299
- border: var(--panel-border);
300
- border-radius: var(--panel-radius);
301
- box-shadow: var(--panel-shadow);
302
- }
303
-
304
- :where(.panelshell) {
305
- border: var(--panel-border);
306
- border-radius: var(--panel-radius);
307
- box-shadow: var(--panel-shadow);
308
- }
309
-
310
- :where(.panelinner) {
311
- padding: var(--space-md);
312
- color: var(--panel-color);
313
- background: var(--panel-background);
314
- }
315
-
316
- :where(dialog)::backdrop { background: var(--dialog-backdrop-background); }
317
- :where(dialog > footer) { border-block-start: 1px solid var(--ui-border-color); }
318
-
319
- :where([role="toolbar"], .toolbarlike) {
320
- color: var(--toolbar-color);
321
- background: var(--toolbar-background);
322
- border: var(--toolbar-border);
323
- box-shadow: var(--toolbar-shadow);
324
- }
325
-
326
- :where(.toolbarshell) {
327
- border: var(--toolbar-border);
328
- border-radius: var(--radius-md);
329
- box-shadow: var(--toolbar-shadow);
330
- }
331
-
332
- :where(.toolbarinner) {
333
- padding: var(--space-sm);
334
- color: var(--toolbar-color);
335
- background: var(--toolbar-background);
336
- }
337
-
338
- :where(.coloredlike, .coloredshell) {
339
- --colored-base: var(--palette-primary);
340
- --colored-light: var(--palette-primary-light);
341
- --colored-dark: var(--palette-primary-dark);
342
- --colored-contrast: var(--palette-contrast-light);
343
- color: var(--colored-contrast);
344
- background: var(--colored-base);
345
- border-color: color-mix(in oklch, var(--colored-dark) 72%, currentColor);
346
- }
347
-
348
- :where(.coloredinner) {
349
- color: var(--colored-contrast);
350
- background: var(--colored-base);
351
- }
352
-
353
- :where([aria-selected="true"], [aria-pressed="true"]) {
354
- color: var(--selection-color);
355
- background: var(--selection-background);
356
- }
357
-
358
- :where([role="tab"]) {
359
- background: var(--tab-button-background);
360
- border-radius: var(--radius-md) var(--radius-md) 0 0;
361
- }
362
- :where([role="tab"][aria-selected="true"]) {
363
- color: var(--button-color);
364
- background: var(--tab-button-background-active);
365
- }
366
- :where([role="radio"]) { background: var(--toggle-button-background); }
367
- :where([role="radio"][aria-checked="true"]) {
368
- color: var(--selection-color);
369
- background: var(--toggle-button-background-checked);
370
- }
371
- :where([role="radiogroup"] > [role="radio"]) { border-radius: 0; }
372
- :where([role="radiogroup"] > [role="radio"]:first-child) {
373
- border-radius: var(--radius-md) 0 0 var(--radius-md);
374
- }
375
- :where([role="radiogroup"] > [role="radio"]:last-child) {
376
- border-radius: 0 var(--radius-md) var(--radius-md) 0;
377
- }
378
-
379
- :where([role="option"], [role="treeitem"], tbody tr[tabindex]):hover {
380
- background: var(--row-hover-background);
381
- }
382
-
383
- :where([role="option"], [role="treeitem"], tbody tr[tabindex]):focus-visible {
384
- outline: 2px solid var(--focus-color);
385
- outline-offset: -2px;
386
- }
387
-
388
- :where(tbody tr:nth-child(odd)) { background: var(--table-row-background); }
389
- :where(tbody tr:nth-child(even)) { background: var(--table-row-alt-background); }
390
- :where([role="alert"]) { color: var(--error-color); }
391
-
392
- :where(progress) {
393
- color: var(--progress-value-background);
394
- background: var(--progress-track-background);
395
- accent-color: var(--palette-primary);
396
- }
397
-
398
- @media (prefers-reduced-motion: no-preference) {
399
- :where(dialog[open]) { animation: theme-dialog-enter var(--motion-fast) ease-out; }
400
- }
401
-
402
- @keyframes theme-dialog-enter {
403
- from { transform: translateY(0.4rem); }
404
- }
405
-
406
- @media (forced-colors: active) {
407
- :where(.coloredlike, .coloredshell, .coloredinner) {
408
- color: CanvasText;
409
- background: Canvas;
410
- border-color: CanvasText;
411
- forced-color-adjust: auto;
412
- }
413
- }
414
-
415
- :where(button, .buttonlike, [role="tab"], [role="radio"], [role="checkbox"]) {
416
- position: relative;
417
- isolation: isolate;
418
- overflow: hidden;
419
- transition: filter var(--motion-fast), transform var(--motion-fast);
420
- }
421
-
422
- :where(.coloredlike, .coloredshell) {
423
- background: linear-gradient(135deg, var(--colored-light), var(--colored-base) 55%, var(--colored-dark));
424
- }
425
-
426
- :where(.coloredinner) {
427
- background: color-mix(in oklch, var(--colored-dark) 30%, transparent);
428
- }
429
-
430
- :where(button, .buttonlike, [role="tab"], [role="radio"], [role="checkbox"])::before,
431
- :where(header, th, .headerlike)::after,
432
- :where(.inputshell)::before {
433
- content: "";
434
- position: absolute;
435
- inset: 1px;
436
- border-radius: inherit;
437
- background: var(--shiny-highlight);
438
- pointer-events: none;
439
- }
440
-
441
- :where(button, .buttonlike, [role="tab"], [role="radio"], [role="checkbox"])::before {
442
- z-index: -1;
443
- }
444
-
445
- :where(header, .headerlike) {
446
- position: relative;
447
- isolation: isolate;
448
- overflow: clip;
449
- }
450
-
451
- :where(.inputshell) {
452
- position: relative;
453
- isolation: isolate;
454
- overflow: hidden;
455
- }
456
-
457
- :where(header, th, .headerlike)::after {
458
- inset: 0;
459
- z-index: -1;
460
- border: 1px solid color-mix(in oklch, var(--palette-light) 22%, transparent);
461
- }
462
-
463
- :where(.selectshell) > select {
464
- appearance: none;
465
- padding-inline-end: 2.25rem;
466
- }
467
-
468
- :where(.selectshell)::after {
469
- content: "⌄";
470
- position: absolute;
471
- inset-block: 1px;
472
- inset-inline-end: 1px;
473
- display: grid;
474
- width: 1.9rem;
475
- place-items: center;
476
- color: var(--palette-contrast-light);
477
- background: var(--dropdown-trigger-background);
478
- border-inline-start: 1px solid var(--palette-primary-700);
479
- border-radius: 0 calc(var(--radius-md) - 1px) calc(var(--radius-md) - 1px) 0;
480
- pointer-events: none;
481
- }
482
-
483
- :where(progress) {
484
- overflow: hidden;
485
- border: 0;
486
- border-radius: var(--radius-md);
487
- box-shadow: inset 1px 1px 3px color-mix(in oklch, var(--palette-dark) 32%, transparent);
488
- }
489
-
490
- @media (forced-colors: active) {
491
- :where(button, .buttonlike, [role="tab"], [role="radio"], [role="checkbox"])::before,
492
- :where(header, th, .headerlike)::after,
493
- :where(.inputshell)::before,
494
- :where(.selectshell)::after {
495
- display: none;
496
- }
497
-
498
- :where(.selectshell) > select {
499
- appearance: auto;
500
- padding-inline-end: var(--space-sm);
501
- }
502
- }
4
+ :root {
5
+ /* Foundation and shared chrome */
6
+ color-scheme: only light;
7
+ --box-shadow: -1px 1px 2px 1px rgba(0,0,0,0.3);
8
+ --button-shadow: -1px 1px 2px 1px rgba(0,0,0,0.5);
9
+ --button-shadow-pressed: -1px 1px 2px 0px #0008;
10
+ --ui-gradient: linear-gradient( to top, var(--ui-primary-bg-color) 9px, var(--ui-primary-bg-color) 13px, var(--ui-dark-bg-color) 100% );
11
+ --ui-gradient-2: linear-gradient( to bottom, var(--ui-primary-bg-color) 9px, var(--ui-primary-bg-color) 13px, var(--ui-dark-bg-color) 100% );
12
+ --shiny-ui-gradient: var(--ui-gradient);
13
+ --shiny-ui-gradient-2: var(--ui-gradient-2);
14
+ --text-color: var(--palette-primary-900);
15
+ --ui-color: var(--text-color);
16
+
17
+ /* Layout components; the island canvas stays base white. */
18
+ --panel-background: var(--ui-primary-bg-color);
19
+ --panel-color: var(--text-color);
20
+ --panel-border: none;
21
+ --panel-radius: 0px;
22
+ --island-margin: var(--space-sm);
23
+ --island-border: 1px solid rgb(255 255 255 / 0.45);
24
+ --island-shadow: 0px 1px 2.5px 0px #666;
25
+ --section-header-background:
26
+ radial-gradient(100% 50% at 40% 10%, #fff0, #fff0 30%, #ffffff15 110%, #fff0 120%, #fff0 calc(120% + 1%)),
27
+ linear-gradient(1deg, var(--palette-primary-900) 0%, var(--palette-primary) 65%, rgba(41,137,216,1) 65%, var(--palette-primary-200) 100%);
28
+ --section-header-color: var(--palette-contrast-light);
29
+ --section-header-shadow:
30
+ inset -1px 1px 2px 0px #0003,
31
+ inset 1px -1px 2px 0px #fff5,
32
+ inset -1px 1px 1px 0px #0006,
33
+ inset 1px -1px 1px 0px #fff5,
34
+ 0px 1px 2px 0px #000a;
35
+
36
+ --sidebar-background:
37
+ linear-gradient(135deg, rgb(255 255 255 / 0.4), transparent 55%),
38
+ var(--panel-background);
39
+ --sidebar-radius: 0;
40
+ --sidebar-toolbar-background: color-mix(in oklch, var(--palette-primary-100) 72%, var(--palette-light));
41
+ --sidebar-toolbar-border: 1px solid color-mix(in oklch, var(--palette-primary) 24%, var(--palette-neutral-300));
42
+ --toolbar-background: var(--ui-gradient);
43
+
44
+ /* Input components */
45
+ --input-shadow: inset -1px 1px 3px -2px rgba(0,0,0,0.45);
46
+ --dropdown-trigger-content: '\23F7';
47
+
48
+ /* Action components */
49
+ --button-background: var(--ui-gradient-2);
50
+ --button-background-hover: var(--ui-gradient);
51
+ --button-background-active: var(--ui-gradient);
52
+ --button-border: 1px solid #fff;
53
+ --button-shadow-active: var(--button-shadow-pressed);
54
+
55
+ --cbx-x-bg: radial-gradient(140% 75% at 30% 10%, #fff5, #fff4 47%, #fff0 55%, #fff0), linear-gradient(to bottom, #400 0%, #c00 65%, #e00 100%);
56
+ --cbx-x-color: #fff;
57
+ --cbx-x-border: 0px solid rgba(0,0,0,0);
58
+ --cbx-x-shadow: inset 1px -1px 1px 0px #fffa, inset -1px 2px 3px -1px #0002, -1px 1px 2px 0px #0005;
59
+ --cbx-o-bg: linear-gradient(to bottom, #ffffffd5 0%, #ffffffe5 100%), linear-gradient(to bottom, var(--palette-primary) 0%, var(--palette-primary) 100%);
60
+ --cbx-o-color: var(--ui-input-text-color);
61
+ --cbx-o-border: 0px solid rgba(0,0,0,0);
62
+ --cbx-o-shadow: inset 1px -1px 1px 0px #ffff, inset -1px 2px 3px -1px #0002, -1px 1px 2px 0px #0005;
63
+ --cbx-c-bg: var(--checkbox-box-background-checked);
64
+ --cbx-c-color: #fff;
65
+ --cbx-c-border: 0px solid rgba(0,0,0,0);
66
+ --cbx-c-shadow: inset 1px -1px 1px 0px #fff9, inset -1px 2px 3px -1px #0002, -1px 1px 2px 0px #0005;
67
+ --cbx-r-bg: radial-gradient(140% 75% at 30% 10%, #fff5, #fff4 47%, #fff0 55%, #fff0), linear-gradient(to bottom, #030 0%, #0a0 65%, #0d0 100%);
68
+ --cbx-r-color: #fff;
69
+ --cbx-r-border: 0px solid rgba(0,0,0,0);
70
+ --cbx-r-shadow: inset 1px -1px 1px 0px #fff8, inset -1px 2px 3px -1px #0002, -1px 1px 2px 0px #0005;
71
+
72
+ /* Choice components */
73
+ --checkbox-box-background:
74
+ linear-gradient(to bottom, rgb(255 255 255 / 0.84), rgb(255 255 255 / 0.9)),
75
+ var(--palette-primary);
76
+ --checkbox-box-background-checked:
77
+ radial-gradient(140% 75% at 30% 10%, #fff5, #fff4 47%, #fff0 55%, #fff0),
78
+ linear-gradient(to bottom, var(--palette-primary-900), var(--palette-primary) 65%, var(--palette-primary-400));
79
+ --checkbox-box-border: 0 solid transparent;
80
+ --checkbox-box-shadow:
81
+ inset 1px -1px 1px rgb(255 255 255 / 1),
82
+ inset -1px 2px 3px rgb(0 0 0 / 0.13),
83
+ -1px 1px 2px rgb(0 0 0 / 0.33);
84
+ --checkbox-symbol-color: var(--palette-contrast-light);
85
+
86
+ --toggle-button-background-checked:
87
+ radial-gradient(140% 75% at 30% 10%, #fff4, #fff5 47%, #fff0 55%, #fff0),
88
+ linear-gradient(to bottom, var(--palette-primary-900) 0%, var(--palette-primary) 65%, var(--palette-primary) 66%, var(--palette-primary-400) 100%);
89
+ --toggle-button-border-checked: 0 solid transparent;
90
+ --toggle-button-selected-inline-overlap: -1px;
91
+ --toggle-button-selected-z-index: 1;
92
+ --toggle-button-shadow-checked: -1px 1px 2px rgb(0 0 0 / 0.53);
93
+ --toggle-group-shadow: var(--button-shadow);
94
+ --toggle-inactive-shared-border-color: transparent;
95
+ --toggle-inactive-separator-background: linear-gradient(
96
+ to bottom,
97
+ rgb(255 255 255 / 0.58),
98
+ rgb(0 0 0 / 0.18)
99
+ );
100
+ --toggle-inactive-separator-block-inset: 0.35rem;
101
+
102
+ /* Navigation components */
103
+ --tabline-background: var(--shiny-ui-gradient-2);
104
+ --tabline-padding-inline-start: 5px;
105
+ --tab-button-background: var(--shiny-ui-gradient);
106
+ --tab-button-background-active: var(--shiny-ui-gradient);
107
+ --tab-button-shadow: inset 0px -3px 2px -2px #0005, 0px 0px 3px 0px rgba(0,0,0,0.6);
108
+ --tab-button-shadow-active: 0px 0px 3px 0px rgba(0,0,0,0.6);
109
+ --tab-button-inactive-bottom-shadow: 0px 1px 3px 0px #000a;
110
+
111
+ /* Status and graphical components */
112
+ --progress-track-background: linear-gradient(0deg, var(--ui-dark-bg-color) 0%, #f0f0f0 100%);
113
+ --progress-value-background:
114
+ radial-gradient(100% 50% at 40% 10%, #fff0, #fff0 30%, #ffffff15 110%, #fff0 120%, #fff0 calc(120% + 1%)),
115
+ linear-gradient(15deg, #1e5799 0%, var(--palette-primary) 65%, var(--palette-primary) 65%, #7db9e8 100%);
116
+ --progress-value-shadow:
117
+ inset -1px 1px 3px 0 #0003,
118
+ inset 1px -1px 3px 0 #fff5,
119
+ inset -1px 1px 1px 1px #0006,
120
+ inset 1px -1px 1px 1px #fff5,
121
+ -1px 1px 3px 0 #0006;
122
+ --block-graph-block-border: none;
123
+ --block-graph-block-gloss-opacity: 1;
124
+ --block-graph-block-shadow:
125
+ inset -2px 2px 3px 0 #fff6,
126
+ inset 2px -2px 3px 0 #0005,
127
+ inset -10px 10px 28px 0 #0006,
128
+ inset 10px -10px 28px 0 #fff4,
129
+ -3px 3px 4px 0 #0006;
503
130
  }
504
131
  }