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