@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
package/themes/README.md CHANGED
@@ -1,86 +1,44 @@
1
- # Fray structural, theme, and color CSS
1
+ # Fray base and theme CSS
2
2
 
3
- Fray separates three stylesheet responsibilities:
3
+ Fray presentation is loaded in this order:
4
4
 
5
- 1. `styles/structural.css` contains generated layout, flow, sizing,
6
- positioning, overflow, interaction mechanics, and justified structural
7
- hooks for the default component hosts.
8
- 2. `themes/<name>/theme.css` contains typography, spacing, geometry, surfaces,
9
- depth, native-element presentation, reusable trait presentation, and the
10
- mapping from palette values to semantic UI variables.
11
- 3. `colors/<name>/colors.css` contains primary, secondary, and neutral color
12
- ramps and contrast/color primitives only.
5
+ 1. `themes/base.css`: custom-property defaults and palette derivation only.
6
+ 2. Runtime-collected structural CSS for the application's declared components.
7
+ 3. One `colors/<name>/colors.css`: palette anchors and endpoints only.
8
+ 4. One `themes/<name>/theme.css`: intentional custom-property overrides only.
13
9
 
14
- Load the three artifacts independently:
10
+ Application-owned layout CSS is separate from these Fray inputs.
15
11
 
16
- ```ts
17
- import '@sylwellsoftware/fray/styles/structural.css'
18
- import '@sylwellsoftware/fray/colors/ocean/colors.css'
19
- import '@sylwellsoftware/fray/themes/shiny/theme.css'
20
- ```
21
-
22
- `ThemePicker` and `ColorPicker` replace separate
23
- `link[data-fray-stylesheet]` elements and update the `data-theme` and
24
- `data-color` root attributes. The link metadata retains its Fray prefix because
25
- it is operational/diagnostic metadata rather than theme vocabulary.
26
-
27
- ## Selectors and scope
12
+ ## Base file
28
13
 
29
- Themes target native elements directly and expose reusable prefix-free traits:
14
+ `base.css` provides usable default palette anchors, derives the primary,
15
+ secondary, and neutral ramps, and declares semantic defaults. It contains no
16
+ component selectors and no declarations that consume those variables.
30
17
 
31
- ```text
32
- buttonlike inputlike datacomponentlike
33
- headerlike coloredlike panellike
34
- toolbarlike selectshell
35
-
36
- buttonshell buttoninner
37
- inputshell inputinner
38
- datacomponentshell datacomponentinner
39
- headershell headerinner
40
- panelshell panelinner
41
- toolbarshell toolbarinner
42
- coloredshell coloredinner
43
- ```
18
+ The application imports it explicitly. Named themes and colors never import it,
19
+ which keeps ownership and load order visible.
44
20
 
45
- `like` means a complete single-node treatment. `shell` means an independently
46
- rendered outer region; `inner` means an independently rendered content region.
47
- Components do not add wrappers solely to obtain these traits.
21
+ ## Theme files
48
22
 
49
- Every theme uses a named cascade layer. A zero-specificity boundary rule seeds
50
- its inherited variables on `:root` or the matching `[data-theme]`. Presentation
51
- selectors live in `@scope`; nested theme roots and `[data-theme-exclude]` stop
52
- the outer theme's selectors. This separation is deliberate because scope
53
- limits do not stop custom-property inheritance. Low-specificity `:where()`
54
- groups let application CSS override both kinds of rule.
23
+ A theme changes only variables. The sole ordinary-property exception is
24
+ `color-scheme`, because it informs browser-native rendering. A theme must not
25
+ contain component, trait, part, ARIA-state, or pseudo-element selectors. Those
26
+ selectors belong to component `static css` even when their values are driven by
27
+ theme variables.
55
28
 
56
- Themes do not select `data-fray-component` or `data-part`. The former is
57
- diagnostic metadata. The latter is restricted to component-owned structural
58
- or behavioral mechanics that cannot be expressed through native structure,
59
- roles, ARIA state, or a justified public trait.
60
-
61
- ## Variables
62
-
63
- The active color file supplies only `--palette-*`. The active theme maps those
64
- values to prefix-free semantic families such as `--ui-*`, `--header-*`,
65
- `--button-*`, `--input-*`, `--panel-*`, and `--selection-*`. Generated
66
- structural CSS may consume these variables where configurable host names make
67
- a direct theme selector inappropriate.
68
-
69
- Custom colored content can set:
29
+ Start with no overrides. Add a variable only when it produces a deliberate
30
+ visual difference from `base.css`; do not repeat defaults for completeness.
70
31
 
71
32
  ```css
72
- .severity-block {
73
- --colored-light: #ffd7d2;
74
- --colored-base: #c8332a;
75
- --colored-dark: #721710;
76
- --colored-contrast: white;
33
+ @layer theme {
34
+ :root {
35
+ color-scheme: only light;
36
+ --button-background: linear-gradient(white, #ddd);
37
+ --button-shadow: -1px 1px 2px rgb(0 0 0 / 0.4);
38
+ }
77
39
  }
78
40
  ```
79
41
 
80
- An element carrying `coloredlike`, `coloredshell`, or `coloredinner` then lets
81
- each theme decide whether to use a flat fill, gradient, other treatment, or no
82
- special polish. When no values are supplied, the primary palette is used.
83
-
84
- `frayThemeVariableCatalog` publishes the palette and theme variable contract.
85
- The top-level `themes/light.css` and `themes/dark.css` files remain temporary
86
- compatibility bundles; new integrations use the separated files.
42
+ `frayThemeVariableCatalog` publishes the supported palette and semantic
43
+ variable contract. Component-specific variables should fall back through a
44
+ shared family so a theme can remain small.
@@ -0,0 +1,311 @@
1
+ @charset "utf-8";
2
+
3
+ /* Variables only. Structural and presentation declarations belong to components. */
4
+ @layer palette {
5
+ :root {
6
+ /* Usable defaults; colors.css replaces these anchors and endpoints. */
7
+ --palette-light: #ffffff;
8
+ --palette-dark: #111827;
9
+ --palette-contrast-light: var(--palette-light);
10
+ --palette-contrast-dark: var(--palette-dark);
11
+ --palette-red: #b3261e;
12
+ --palette-green: #287a3c;
13
+ --palette-primary-500: #2989d8;
14
+ --palette-secondary-500: #7137a8;
15
+ --palette-neutral-500: #7892aa;
16
+
17
+ /* Each ramp may vary hue; ordinary palettes retain its contrast endpoints. */
18
+ --palette-primary-light-mix: var(--palette-light);
19
+ --palette-primary-dark-mix: var(--palette-dark);
20
+ --palette-secondary-light-mix: var(--palette-light);
21
+ --palette-secondary-dark-mix: var(--palette-dark);
22
+ --palette-neutral-light-mix: var(--palette-light);
23
+ --palette-neutral-dark-mix: var(--palette-dark);
24
+
25
+ --palette-primary-50: color-mix(in oklch, var(--palette-primary-500) 8%, var(--palette-primary-light-mix));
26
+ --palette-primary-100: color-mix(in oklch, var(--palette-primary-500) 16%, var(--palette-primary-light-mix));
27
+ --palette-primary-200: color-mix(in oklch, var(--palette-primary-500) 32%, var(--palette-primary-light-mix));
28
+ --palette-primary-300: color-mix(in oklch, var(--palette-primary-500) 50%, var(--palette-primary-light-mix));
29
+ --palette-primary-400: color-mix(in oklch, var(--palette-primary-500) 72%, var(--palette-primary-light-mix));
30
+ --palette-primary-600: color-mix(in oklch, var(--palette-primary-500) 85%, var(--palette-primary-dark-mix));
31
+ --palette-primary-700: color-mix(in oklch, var(--palette-primary-500) 72%, var(--palette-primary-dark-mix));
32
+ --palette-primary-800: color-mix(in oklch, var(--palette-primary-500) 58%, var(--palette-primary-dark-mix));
33
+ --palette-primary-900: color-mix(in oklch, var(--palette-primary-500) 42%, var(--palette-primary-dark-mix));
34
+ --palette-primary-950: color-mix(in oklch, var(--palette-primary-500) 28%, var(--palette-primary-dark-mix));
35
+ --palette-primary: var(--palette-primary-500);
36
+ --palette-primary-light: var(--palette-primary-200);
37
+ --palette-primary-dark: var(--palette-primary-800);
38
+
39
+ --palette-secondary-50: color-mix(in oklch, var(--palette-secondary-500) 8%, var(--palette-secondary-light-mix));
40
+ --palette-secondary-100: color-mix(in oklch, var(--palette-secondary-500) 16%, var(--palette-secondary-light-mix));
41
+ --palette-secondary-200: color-mix(in oklch, var(--palette-secondary-500) 32%, var(--palette-secondary-light-mix));
42
+ --palette-secondary-300: color-mix(in oklch, var(--palette-secondary-500) 50%, var(--palette-secondary-light-mix));
43
+ --palette-secondary-400: color-mix(in oklch, var(--palette-secondary-500) 72%, var(--palette-secondary-light-mix));
44
+ --palette-secondary-600: color-mix(in oklch, var(--palette-secondary-500) 85%, var(--palette-secondary-dark-mix));
45
+ --palette-secondary-700: color-mix(in oklch, var(--palette-secondary-500) 72%, var(--palette-secondary-dark-mix));
46
+ --palette-secondary-800: color-mix(in oklch, var(--palette-secondary-500) 58%, var(--palette-secondary-dark-mix));
47
+ --palette-secondary-900: color-mix(in oklch, var(--palette-secondary-500) 42%, var(--palette-secondary-dark-mix));
48
+ --palette-secondary-950: color-mix(in oklch, var(--palette-secondary-500) 28%, var(--palette-secondary-dark-mix));
49
+ --palette-secondary: var(--palette-secondary-500);
50
+ --palette-secondary-light: var(--palette-secondary-200);
51
+ --palette-secondary-dark: var(--palette-secondary-800);
52
+
53
+ --palette-neutral-50: color-mix(in oklch, var(--palette-neutral-500) 6%, var(--palette-neutral-light-mix));
54
+ --palette-neutral-100: color-mix(in oklch, var(--palette-neutral-500) 13%, var(--palette-neutral-light-mix));
55
+ --palette-neutral-200: color-mix(in oklch, var(--palette-neutral-500) 26%, var(--palette-neutral-light-mix));
56
+ --palette-neutral-300: color-mix(in oklch, var(--palette-neutral-500) 43%, var(--palette-neutral-light-mix));
57
+ --palette-neutral-400: color-mix(in oklch, var(--palette-neutral-500) 68%, var(--palette-neutral-light-mix));
58
+ --palette-neutral-600: color-mix(in oklch, var(--palette-neutral-500) 84%, var(--palette-neutral-dark-mix));
59
+ --palette-neutral-700: color-mix(in oklch, var(--palette-neutral-500) 67%, var(--palette-neutral-dark-mix));
60
+ --palette-neutral-800: color-mix(in oklch, var(--palette-neutral-500) 50%, var(--palette-neutral-dark-mix));
61
+ --palette-neutral-900: color-mix(in oklch, var(--palette-neutral-500) 32%, var(--palette-neutral-dark-mix));
62
+ --palette-neutral-950: color-mix(in oklch, var(--palette-neutral-500) 18%, var(--palette-neutral-dark-mix));
63
+ --palette-neutral: var(--palette-neutral-500);
64
+ --palette-neutral-light: var(--palette-neutral-200);
65
+ --palette-neutral-dark: var(--palette-neutral-800);
66
+ }
67
+ }
68
+ @layer theme {
69
+ :root {
70
+ /* Foundation */
71
+ --font-family: sans-serif;
72
+ --font-size: 14px;
73
+ --line-height: normal;
74
+ --control-min-height: calc(var(--ui-font-size) + var(--ui-padding) + var(--ui-padding));
75
+ --space-xs: 0px;
76
+ --space-sm: 6px;
77
+ --space-md: 1rem;
78
+ --space-lg: 1.5rem;
79
+ --radius-sm: 3px;
80
+ --radius-md: 3px;
81
+ --radius-lg: 0.5rem;
82
+ --motion-fast: 120ms;
83
+
84
+ /* Shared UI and feedback */
85
+ --application-background: var(--palette-light);
86
+ --ui-background: var(--palette-neutral-50);
87
+ --ui-color: var(--palette-neutral-950);
88
+ --ui-border: 1px solid var(--palette-neutral-300);
89
+ --ui-shadow: none;
90
+ --focus-ring: 0 0 0 1px var(--ui-accent-color-highlight);
91
+ --focus-color: var(--ui-accent-color);
92
+ --error-color: #f00;
93
+ --error-contrast: #fcc;
94
+ --success-color: #080;
95
+
96
+ /* Layout components */
97
+ --panel-background: var(--palette-neutral-50);
98
+ --panel-color: var(--palette-neutral-950);
99
+ --panel-border: 1px solid var(--palette-neutral-300);
100
+ --panel-shadow: none;
101
+ --panel-radius: var(--radius-md);
102
+
103
+ /* Explicit island modifier; non-island themes keep its layout neutral. */
104
+ --island-margin: 0;
105
+ --island-padding: 0;
106
+ --island-background: var(--panel-background);
107
+ --island-border: var(--panel-border);
108
+ --island-radius: var(--panel-radius);
109
+ --island-shadow: var(--panel-shadow);
110
+
111
+ --sidebar-background: var(--panel-background);
112
+ --sidebar-color: var(--panel-color);
113
+ --sidebar-border: var(--panel-border);
114
+ --sidebar-shadow: var(--panel-shadow);
115
+ --sidebar-radius: var(--panel-radius);
116
+ --sidebar-header-background: var(--section-header-background);
117
+ --sidebar-header-color: var(--section-header-color);
118
+ --sidebar-header-border: var(--section-header-border);
119
+ --sidebar-header-shadow: var(--section-header-shadow);
120
+ --sidebar-toolbar-background: var(--toolbar-background);
121
+ --sidebar-toolbar-color: var(--toolbar-color);
122
+ --sidebar-toolbar-border: var(--toolbar-border);
123
+ --sidebar-toolbar-shadow: var(--toolbar-shadow);
124
+
125
+ --dialog-shadow: 0 1.25rem 4rem color-mix(in oklch, var(--palette-dark) 35%, transparent);
126
+ --dialog-backdrop-background: color-mix(in oklch, var(--palette-dark) 55%, transparent);
127
+ --dialog-header-background: var(--section-header-background);
128
+ --dialog-header-color: var(--section-header-color);
129
+
130
+ --header-background: var(--palette-neutral-100);
131
+ --header-color: var(--palette-neutral-950);
132
+ --header-border: 0 solid transparent;
133
+ --header-shadow: none;
134
+ --section-header-background: var(--header-background);
135
+ --section-header-color: var(--header-color);
136
+ --section-header-border: var(--header-border);
137
+ --section-header-shadow: var(--header-shadow);
138
+
139
+ --toolbar-background: var(--palette-neutral-100);
140
+ --toolbar-color: var(--palette-neutral-950);
141
+ --toolbar-border: 0 solid transparent;
142
+ --toolbar-shadow: none;
143
+
144
+ /* Input components */
145
+ --input-background: #fff;
146
+ --input-color: var(--text-color);
147
+ --input-border: 1px solid #aaa;
148
+ --input-shadow: none;
149
+ --input-background-disabled: var(--ui-medium-bg-color);
150
+ --input-color-disabled: #777;
151
+ --dropdown-appearance: none;
152
+ --dropdown-padding-inline-end: 1.75em;
153
+ --dropdown-select-background: transparent;
154
+ --dropdown-select-border: 1px solid transparent;
155
+ --dropdown-select-shadow: none;
156
+ --dropdown-underlay-content: "";
157
+ --dropdown-underlay-background: var(--input-background);
158
+ --dropdown-underlay-background-disabled: var(--input-background-disabled);
159
+ --dropdown-underlay-border: var(--input-border);
160
+ --dropdown-underlay-border-disabled: var(--ui-input-border-disabled);
161
+ --dropdown-underlay-shadow: var(--input-shadow);
162
+ --dropdown-underlay-start-radius: var(--ui-border-radius);
163
+ --dropdown-trigger-content: none;
164
+ --dropdown-trigger-width: calc(var(--dd-btn-width) - 1px);
165
+ --dropdown-trigger-color: var(--button-color);
166
+ --dropdown-trigger-background: var(--button-background);
167
+ --dropdown-trigger-background-hover: var(--button-background-hover);
168
+ --dropdown-trigger-background-disabled: var(--button-background-disabled);
169
+ --dropdown-trigger-border: var(--button-border);
170
+ --dropdown-trigger-border-disabled: var(--button-border-disabled);
171
+ --dropdown-trigger-end-radius: var(--ui-border-radius);
172
+ --dropdown-trigger-shadow: var(--button-shadow);
173
+ --dropdown-trigger-shadow-hover: var(--button-shadow);
174
+
175
+ /* Action components */
176
+ --button-background: var(--palette-neutral-100);
177
+ --button-background-hover: var(--palette-primary-100);
178
+ --button-background-active: var(--palette-primary);
179
+ --button-background-disabled: #ccc;
180
+ --button-color: var(--ui-text-color);
181
+ --button-border: 1px solid #fff0;
182
+ --button-shadow: none;
183
+ --button-shadow-active: none;
184
+ --button-border-style-active: solid;
185
+ --menu-button-background: var(--button-background);
186
+
187
+ /* Choice components */
188
+ --selection-background: var(--palette-primary);
189
+ --selection-color: var(--palette-contrast-light);
190
+ --checkbox-box-background: var(--input-background);
191
+ --checkbox-box-background-checked: var(--selection-background);
192
+ --checkbox-box-border: var(--input-border);
193
+ --checkbox-box-shadow: none;
194
+ --checkbox-box-shadow-checked: var(--checkbox-box-shadow);
195
+ --checkbox-symbol-color: var(--selection-color);
196
+ --checkable-label-color-disabled: #aaa;
197
+ --toggle-button-background: var(--button-background);
198
+ --toggle-button-background-checked: var(--palette-primary-700);
199
+ --toggle-button-border-checked: var(--button-border);
200
+ --toggle-button-selected-inline-overlap: 0;
201
+ --toggle-button-selected-z-index: 0;
202
+ --toggle-button-shadow: none;
203
+ --toggle-button-shadow-checked: var(--button-shadow);
204
+ --toggle-group-shadow: none;
205
+ --toggle-inactive-shared-border-color: var(--palette-neutral-500);
206
+ --toggle-inactive-separator-background: transparent;
207
+ --toggle-inactive-separator-block-inset: 0;
208
+
209
+ /* Navigation components */
210
+ --tabline-background: var(--palette-neutral-100);
211
+ --tabline-padding-inline-start: 0px;
212
+ --tab-active-background: var(--palette-neutral-50);
213
+ --tab-button-background: var(--button-background);
214
+ --tab-button-background-active: var(--tab-active-background);
215
+ --tab-button-shadow: var(--button-shadow);
216
+ --tab-button-shadow-active: var(--button-shadow-active);
217
+ --tab-button-inactive-bottom-shadow: none;
218
+
219
+ /* Data components */
220
+ --row-hover-background: var(--palette-primary-100);
221
+ --table-header-background: var(--palette-neutral-100);
222
+ --table-header-color: var(--header-color);
223
+ --table-header-button-background: var(--button-background);
224
+ --table-row-background: var(--palette-neutral-50);
225
+ --table-row-alt-background: var(--palette-neutral-100);
226
+
227
+ /* Status and graphical components */
228
+ --progress-track-background: var(--palette-neutral-200);
229
+ --progress-track-color: var(--ui-text-color);
230
+ --progress-track-shadow: inset 0.15em 0.15em 0.35em -0.12em rgb(0 0 0 / 0.5);
231
+ --progress-value-background: var(--palette-primary);
232
+ --progress-value-color: var(--palette-contrast-light);
233
+ --progress-value-shadow: none;
234
+ --working-background-image: linear-gradient(-45deg, #0001 25%, #fff1 25%, #fff1 50%, #0001 50%, #0001 75%, #fff1 75%, #fff1);
235
+ --colored-base: var(--palette-primary);
236
+ --colored-light: var(--palette-primary-light);
237
+ --colored-dark: var(--palette-primary-dark);
238
+ --colored-contrast: var(--palette-contrast-light);
239
+ --block-graph-block-radius: 0.25em;
240
+ --block-graph-block-shadow: none;
241
+ --block-graph-block-gloss-opacity: 0;
242
+
243
+ /* Structural compatibility aliases */
244
+ --base-font-size: 14px;
245
+ --ui-font-size: var(--base-font-size);
246
+ --ui-padding: 6px;
247
+ --ui-padding-h: 6px;
248
+ --ui-padding-v: 0px;
249
+ --ui-margin: 1px;
250
+ --ui-border-radius: 3px;
251
+ --ui-text-color: var(--ui-color);
252
+ --ui-muted-text-color: var(--palette-neutral-700);
253
+ --ui-border-color: var(--palette-neutral-300);
254
+ --ui-input-text-color: var(--text-color);
255
+ --ui-input-bg: #fff;
256
+ --ui-input-border: 1px solid #aaa;
257
+ --ui-input-bg-disabled: var(--ui-medium-bg-color);
258
+ --ui-input-border-disabled: 1px solid var(--ui-dark2-bg-color);
259
+ --ui-select-bg-disabled: var(--ui-dark2-bg-color);
260
+ --ui-input-text-color-disabled: #777;
261
+ --ui-accent-color: var(--ui-select-bg-dark);
262
+ --ui-accent-color-highlight: var(--primary-color-l90);
263
+ --ui-primary-bg-color: #f5f7f8;
264
+ --ui-medium-bg-color: #ebeff3;
265
+ --ui-dark-bg-color: #d7dee3;
266
+ --ui-dark2-bg-color: var(--palette-neutral-400);
267
+ --text-color: var(--palette-neutral-950);
268
+ --primary-color-l90: var(--palette-primary-200);
269
+ --ui-select-bg: var(--palette-primary-600);
270
+ --ui-select-bg-dark: var(--palette-primary-700);
271
+ --ui-select-text-color: var(--palette-contrast-light);
272
+ --ui-table-bg-color: var(--ui-primary-bg-color);
273
+ --ui-table-bg-color2: var(--ui-medium-bg-color);
274
+ --input-width: 15em;
275
+ --button-border-disabled: #777;
276
+ --error-text-color-light: #fcc;
277
+ --error-text-color-dark: #800;
278
+ --error-border-color: #f00;
279
+ --error-bg: #faa;
280
+ --error-bg-translucent: #f002;
281
+ --error-bg-neutral: #fff;
282
+ --success-text-color-light: #bfb;
283
+ --success-text-color-dark: #b00;
284
+ --success-border-color: #0b0;
285
+ --success-bg: #beb;
286
+ --success-bg-translucent: #0f02;
287
+ --success-bg-neutral: #fff;
288
+ --icon-filter-hue: 205deg;
289
+ --icon-filter: brightness(1) opacity(.7) hue-rotate(var(--icon-filter-hue)) saturate(.75);
290
+ --icon-filter-active: var(--icon-filter);
291
+ --icon-filter-overlay: brightness(1) opacity(.25) hue-rotate(var(--icon-filter-hue)) saturate(.7);
292
+ --tooltip-background: #ffa;
293
+ --dd-btn-width: 1.5em;
294
+ --panel-bg: var(--panel-background);
295
+ --panel-padding: var(--space-md);
296
+ --toolbar-bg: var(--toolbar-background);
297
+ --toolbar-radius: var(--radius-md);
298
+ --sectionheader-bg: var(--section-header-background);
299
+ --sectionheader-shadow: var(--section-header-shadow);
300
+ --sectionheader-color: var(--section-header-color);
301
+ --tabline-bg: var(--tabline-background);
302
+ --tab-bg-active: var(--tab-active-background);
303
+ --cbx-o-border: var(--checkbox-box-border);
304
+ --cbx-border-radius: var(--ui-border-radius);
305
+ --spacing-small: var(--space-sm);
306
+ --spacing-medium: var(--space-md);
307
+ --noselect-user-select: none;
308
+ --noselect-cursor: default;
309
+
310
+ }
311
+ }