@sylwellsoftware/fray 0.1.0-alpha.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +324 -21
  2. package/colors/README.md +15 -0
  3. package/colors/gray/colors.css +29 -0
  4. package/colors/green/colors.css +29 -0
  5. package/colors/iceblue/colors.css +29 -0
  6. package/colors/ocean/colors.css +29 -0
  7. package/colors/orange/colors.css +29 -0
  8. package/colors/purple/colors.css +29 -0
  9. package/colors/red/colors.css +29 -0
  10. package/colors/yellow/colors.css +29 -0
  11. package/dist/Components/Placeholder.d.ts +1 -1
  12. package/dist/Components/Placeholder.d.ts.map +1 -1
  13. package/dist/Components/controlUtils.d.ts.map +1 -1
  14. package/dist/Components/data/filterState.d.ts +38 -0
  15. package/dist/Components/data/filterState.d.ts.map +1 -0
  16. package/dist/Components/data/listview/listview.d.ts +16 -5
  17. package/dist/Components/data/listview/listview.d.ts.map +1 -1
  18. package/dist/Components/data/selectionhandler.d.ts +24 -5
  19. package/dist/Components/data/selectionhandler.d.ts.map +1 -1
  20. package/dist/Components/data/table/DataTable.d.ts +36 -30
  21. package/dist/Components/data/table/DataTable.d.ts.map +1 -1
  22. package/dist/Components/data/table/FilterPanel.d.ts +8 -1
  23. package/dist/Components/data/table/FilterPanel.d.ts.map +1 -1
  24. package/dist/Components/data/table/TableHeaderCell.d.ts.map +1 -1
  25. package/dist/Components/data/table/tableDataSource.d.ts +49 -0
  26. package/dist/Components/data/table/tableDataSource.d.ts.map +1 -0
  27. package/dist/Components/data/table/tableQuery.d.ts +6 -2
  28. package/dist/Components/data/table/tableQuery.d.ts.map +1 -1
  29. package/dist/Components/data/treeview/treeModel.d.ts +23 -0
  30. package/dist/Components/data/treeview/treeModel.d.ts.map +1 -0
  31. package/dist/Components/data/treeview/treeview.d.ts +1 -1
  32. package/dist/Components/data/treeview/treeview.d.ts.map +1 -1
  33. package/dist/Components/dialog/dialog.d.ts +1 -1
  34. package/dist/Components/dialog/dialog.d.ts.map +1 -1
  35. package/dist/Components/layout/panel.d.ts.map +1 -1
  36. package/dist/Components/layout/tabpanel/tabline.d.ts.map +1 -1
  37. package/dist/Components/lineinputs/checkbox/Checkbox.d.ts +1 -1
  38. package/dist/Components/lineinputs/checkbox/Checkbox.d.ts.map +1 -1
  39. package/dist/Components/lineinputs/checkbox/QuadCheckbox.d.ts +2 -2
  40. package/dist/Components/lineinputs/checkbox/QuadCheckbox.d.ts.map +1 -1
  41. package/dist/Components/lineinputs/checkbox/TriCheckbox.d.ts +2 -2
  42. package/dist/Components/lineinputs/checkbox/TriCheckbox.d.ts.map +1 -1
  43. package/dist/Components/lineinputs/toggle.d.ts.map +1 -1
  44. package/dist/Components/status/progressBar.d.ts.map +1 -1
  45. package/dist/Components/theme/stylesheetPicker.d.ts +40 -0
  46. package/dist/Components/theme/stylesheetPicker.d.ts.map +1 -0
  47. package/dist/index.d.ts +16 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +2807 -559
  50. package/dist/index.js.map +1 -1
  51. package/dist/{jsx-dev-runtime-CarwHDyL.js → jsx-dev-runtime-DukiDpV9.js} +202 -214
  52. package/dist/jsx-dev-runtime-DukiDpV9.js.map +1 -0
  53. package/dist/jsx-dev-runtime.js +1 -1
  54. package/dist/jsx-runtime.js +1 -1
  55. package/dist/styling/baseStyleDefinitions.d.ts +3 -0
  56. package/dist/styling/baseStyleDefinitions.d.ts.map +1 -1
  57. package/dist/styling/styleRegistry.d.ts.map +1 -1
  58. package/dist/styling/theme.d.ts +27 -0
  59. package/dist/styling/theme.d.ts.map +1 -0
  60. package/dist/util/filterMode.d.ts +6 -4
  61. package/dist/util/filterMode.d.ts.map +1 -1
  62. package/package.json +14 -11
  63. package/styles/structural.css +922 -0
  64. package/themes/README.md +84 -30
  65. package/themes/java/theme.css +140 -0
  66. package/themes/minimal/theme.css +128 -0
  67. package/themes/shiny/theme.css +314 -0
  68. package/EXPERIMENTAL.md +0 -75
  69. package/dist/button-BRDkmR1C.js +0 -203
  70. package/dist/button-BRDkmR1C.js.map +0 -1
  71. package/dist/experimental.d.ts +0 -16
  72. package/dist/experimental.d.ts.map +0 -1
  73. package/dist/experimental.js +0 -1361
  74. package/dist/experimental.js.map +0 -1
  75. package/dist/jsx-dev-runtime-CarwHDyL.js.map +0 -1
package/themes/README.md CHANGED
@@ -1,30 +1,84 @@
1
- # Fray theme custom properties
2
-
3
- The alpha supports `@sylwellsoftware/fray/themes/light.css` and
4
- `@sylwellsoftware/fray/themes/dark.css`. Import one after registering Fray structural
5
- styles, or scope either bundle with `data-fray-theme`.
6
-
7
- Consumers may override the variables after the theme import. The supported
8
- control contract is:
9
-
10
- - typography/spacing: `--base-font-size`, `--ui-font-size`, `--ui-padding`,
11
- `--ui-padding-h`, `--ui-padding-v`, `--spacing-small`, `--spacing-medium`;
12
- - shape/focus: `--ui-border-radius`, `--ui-accent-color`,
13
- `--ui-accent-color-highlight`;
14
- - text/input: `--ui-text-color`, `--ui-input-bg`, `--ui-input-border`,
15
- `--ui-input-bg-disabled`, `--ui-input-border-disabled`,
16
- `--ui-input-text-color-disabled`, `--input-width`, `--input-shadow`;
17
- - actions: `--button-background`, `--button-background-hover`,
18
- `--button-background-disabled`, `--button-border`,
19
- `--button-border-disabled`, `--button-shadow`, `--button-color`,
20
- `--toggle-selected-bg`, `--toggle-selected-text`;
21
- - panels/tabs/toolbars: `--panel-*`, `--panel-padding`, `--toolbar-*`,
22
- `--sectionheader-*`, `--tabline-bg`, `--tab-bg-active`;
23
- - checkbox/error: `--cbx-o-border`, `--cbx-border-radius`, `--error-color`.
24
-
25
- The root-default selector uses a zero-specificity `:where(...)` wrapper. The
26
- explicit `data-fray-theme` selector retains attribute specificity so it also
27
- wins when an application bundles more than one theme and the other bundle's
28
- root fallback loads later. A consumer inline custom property or a more-specific
29
- rule can still override a theme value. Import one bundle for one root default,
30
- or import multiple bundles and select an explicit theme on each scoped subtree.
1
+ # Fray structural, theme, and color CSS
2
+
3
+ Fray deliberately separates three stylesheet responsibilities:
4
+
5
+ 1. `@sylwellsoftware/fray/styles/structural.css` contains the generated layout,
6
+ flow, accessibility mechanics, stable selectors, and custom-property uses
7
+ for the default `fray-` component hosts.
8
+ 2. `@sylwellsoftware/fray/themes/<name>/theme.css` supplies geometry, surface
9
+ treatment, and semantic theme variables. Supported treatments are `shiny`,
10
+ `java`, and `minimal`.
11
+ 3. `@sylwellsoftware/fray/colors/<name>/colors.css` supplies palette and
12
+ semantic color variables. Supported palettes are `iceblue`, `ocean`,
13
+ `green`, `gray`, `orange`, `purple`, `red`, and `yellow`.
14
+
15
+ Load the three artifacts independently:
16
+
17
+ ```ts
18
+ import '@sylwellsoftware/fray/styles/structural.css'
19
+ import '@sylwellsoftware/fray/colors/ocean/colors.css'
20
+ import '@sylwellsoftware/fray/themes/shiny/theme.css'
21
+ ```
22
+
23
+ `ThemePicker` and `ColorPicker` use the exported `frayThemeOptions` and
24
+ `frayColorOptions` catalogs by default. Each picker updates a separate
25
+ `<link data-fray-stylesheet>` element and the corresponding
26
+ `data-fray-theme`/`data-fray-color` root attribute. Applications may supply
27
+ their own option catalogs and URLs. The defaults resolve against Fray's
28
+ published package layout and therefore work for direct ESM/CDN loading. A
29
+ bundler cannot expose a universal runtime URL for package CSS; bundled
30
+ applications should import or emit each CSS asset as a URL and pass remapped
31
+ options to the pickers.
32
+
33
+ ## Variable hierarchy
34
+
35
+ The public contract is exported as the machine-readable
36
+ `frayThemeVariableCatalog`. Every entry records its layer, family, value kind,
37
+ description, and optional fallback.
38
+
39
+ | Level | Representative variables | Purpose |
40
+ | --- | --- | --- |
41
+ | Palette | `--fray-color-primary`, `--fray-color-surface`, `--fray-color-text`, `--fray-color-border`, `--fray-color-focus` | Replaceable color-scheme primitives and semantic colors |
42
+ | Global theme | `--fray-font-*`, `--fray-space-*`, `--fray-radius-*`, `--fray-ui-*` | Shared typography, rhythm, shape, and surface treatment |
43
+ | Generic families | `--fray-header-*`, `--fray-button-*`, `--fray-input-*`, `--fray-panel-*`, `--fray-selection-*` | Defaults inherited by related controls |
44
+ | Family variants | `--fray-table-header-*`, `--fray-panel-header-*`, `--fray-toggle-button-*`, `--fray-tab-button-*`, `--fray-dropdown-trigger-*` | Optional narrow overrides for a theme that differentiates one family member |
45
+ | Component escape hatches | `--fray-checkbox-*`, `--fray-progress-*`, `--fray-dialog-*` | Behavior that is not meaningfully shared with a broader family |
46
+
47
+ Structural rules use the most-specific variable and fall back through the
48
+ family. A custom table-like component can follow the same pattern:
49
+
50
+ ```css
51
+ my-grid > header {
52
+ color: var(
53
+ --my-grid-header-color,
54
+ var(--fray-table-header-color, var(--fray-header-color))
55
+ );
56
+ background: var(
57
+ --my-grid-header-background,
58
+ var(--fray-table-header-background, var(--fray-header-background))
59
+ );
60
+ }
61
+ ```
62
+
63
+ The component now adopts every compatible Fray theme without the theme knowing
64
+ its selector. A theme can still specialize it by assigning
65
+ `--my-grid-header-*` on the component host.
66
+
67
+ ## Selector exceptions
68
+
69
+ Variables are preferred but not exclusive. A treatment may target stable
70
+ `data-fray-component`, `data-part`, role, and ARIA-state hooks for effects that
71
+ custom properties cannot create alone. Shiny uses scoped pseudo-elements and
72
+ native progress/select pseudo-parts for layered highlights, dropdown arrows,
73
+ checkbox surfaces, headers, and button-like controls. Those decorations use
74
+ `pointer-events: none`, preserve native/ARIA state, and are disabled or reduced
75
+ under forced-colors where the browser's representation is safer.
76
+
77
+ Theme authors should not target application classes, generated IDs, or
78
+ incidental DOM depth. Color values should remain in `colors.css` whenever
79
+ practical; translucent white/black lighting used to construct a treatment is
80
+ permitted in `theme.css`.
81
+
82
+ The top-level `themes/light.css` and `themes/dark.css` exports are retained as
83
+ alpha compatibility bundles. New integrations should use the separated paths
84
+ above.
@@ -0,0 +1,140 @@
1
+ @charset "utf-8";
2
+
3
+ :where(:root), [data-fray-theme="java"] {
4
+ color-scheme: light;
5
+ --fray-font-family: Arial, Helvetica, sans-serif;
6
+ --fray-font-size: 0.875rem;
7
+ --fray-line-height: 1.15;
8
+ --fray-control-min-height: 1.75rem;
9
+ --fray-space-xs: 2px;
10
+ --fray-space-sm: 4px;
11
+ --fray-space-md: 8px;
12
+ --fray-space-lg: 12px;
13
+ --fray-radius-sm: 0;
14
+ --fray-radius-md: 0;
15
+ --fray-radius-lg: 3px;
16
+ --fray-motion-fast: 0ms;
17
+
18
+ --fray-ui-background: var(--fray-color-surface-muted);
19
+ --fray-ui-color: var(--fray-color-text);
20
+ --fray-ui-border: 1px solid var(--fray-color-border-strong);
21
+ --fray-ui-shadow: none;
22
+ --fray-focus-ring: 0 0 0 1px var(--fray-color-focus);
23
+
24
+ --fray-panel-background: var(--fray-color-surface-muted);
25
+ --fray-panel-color: var(--fray-color-text);
26
+ --fray-panel-border: 2px groove var(--fray-color-highlight);
27
+ --fray-panel-shadow: none;
28
+ --fray-panel-radius: 0;
29
+ --fray-dialog-shadow: 3px 3px 0 color-mix(in srgb, var(--fray-color-shadow) 45%, transparent);
30
+ --fray-dialog-backdrop-background: color-mix(in srgb, var(--fray-color-shadow) 45%, transparent);
31
+
32
+ --fray-header-background: transparent;
33
+ --fray-header-color: var(--fray-color-text);
34
+ --fray-header-border: 0 solid transparent;
35
+ --fray-header-shadow: none;
36
+ --fray-table-header-background: var(--fray-color-surface-raised);
37
+ --fray-dialog-header-background: linear-gradient(to bottom, var(--fray-color-primary-active), var(--fray-color-primary));
38
+
39
+ --fray-button-background: var(--fray-color-surface-muted);
40
+ --fray-button-background-hover: var(--fray-color-primary-soft);
41
+ --fray-button-background-active: var(--fray-color-surface-inset);
42
+ --fray-button-background-disabled: var(--fray-color-disabled);
43
+ --fray-button-color: var(--fray-color-text);
44
+ --fray-button-border: 2px outset var(--fray-color-highlight);
45
+ --fray-button-shadow: none;
46
+ --fray-button-shadow-active: none;
47
+
48
+ --fray-input-background: var(--fray-color-surface-raised);
49
+ --fray-input-color: var(--fray-color-text);
50
+ --fray-input-border: 1px solid var(--fray-color-border-strong);
51
+ --fray-input-shadow: inset 1px 1px 1px color-mix(in srgb, var(--fray-color-shadow) 30%, transparent);
52
+ --fray-input-background-disabled: var(--fray-color-disabled);
53
+ --fray-input-color-disabled: var(--fray-color-on-disabled);
54
+
55
+ --fray-selection-background: var(--fray-color-selection);
56
+ --fray-selection-color: var(--fray-color-on-selection);
57
+ --fray-row-hover-background: var(--fray-color-primary-soft);
58
+ --fray-table-row-background: var(--fray-color-surface-raised);
59
+ --fray-table-row-alt-background: var(--fray-color-surface-raised);
60
+ --fray-checkbox-box-background: var(--fray-color-surface-raised);
61
+ --fray-checkbox-box-background-checked: var(--fray-color-selection);
62
+ --fray-checkbox-box-border: 2px inset var(--fray-color-highlight);
63
+ --fray-checkbox-symbol-color: var(--fray-color-on-selection);
64
+ --fray-radio-background: var(--fray-button-background);
65
+ --fray-radio-background-checked: var(--fray-selection-background);
66
+ --fray-toolbar-background: var(--fray-color-surface-muted);
67
+ --fray-toolbar-color: var(--fray-color-text);
68
+ --fray-toolbar-border: 2px outset var(--fray-color-highlight);
69
+ --fray-toolbar-shadow: none;
70
+ --fray-tabline-background: var(--fray-color-surface-muted);
71
+ --fray-tab-active-background: var(--fray-panel-background);
72
+ --fray-tab-button-background: var(--fray-color-surface-muted);
73
+ --fray-progress-track-background: var(--fray-color-surface-inset);
74
+ --fray-progress-value-background: var(--fray-color-primary);
75
+ --fray-working-background-image: repeating-linear-gradient(135deg, transparent 0 4px, color-mix(in srgb, var(--fray-color-text) 12%, transparent) 4px 8px);
76
+
77
+ --base-font-size: var(--fray-font-size);
78
+ --ui-font-size: var(--fray-font-size);
79
+ --ui-padding: var(--fray-space-sm);
80
+ --ui-padding-h: var(--fray-space-sm);
81
+ --ui-padding-v: var(--fray-space-xs);
82
+ --ui-border-radius: var(--fray-radius-md);
83
+ --ui-text-color: var(--fray-ui-color);
84
+ --ui-muted-text-color: var(--fray-color-text-muted);
85
+ --ui-border-color: var(--fray-color-border);
86
+ --ui-input-bg: var(--fray-input-background);
87
+ --ui-input-border: var(--fray-input-border);
88
+ --ui-input-bg-disabled: var(--fray-input-background-disabled);
89
+ --ui-input-border-disabled: 1px solid var(--fray-color-border);
90
+ --ui-input-text-color-disabled: var(--fray-input-color-disabled);
91
+ --ui-accent-color: var(--fray-color-primary);
92
+ --ui-accent-color-highlight: var(--fray-color-primary-soft);
93
+ --input-width: 15rem;
94
+ --input-shadow: var(--fray-input-shadow);
95
+ --button-background: var(--fray-button-background);
96
+ --button-background-hover: var(--fray-button-background-hover);
97
+ --button-background-disabled: var(--fray-button-background-disabled);
98
+ --button-border: var(--fray-button-border);
99
+ --button-border-disabled: 1px solid var(--fray-color-border);
100
+ --button-shadow: var(--fray-button-shadow);
101
+ --button-color: var(--fray-button-color);
102
+ --toggle-selected-bg: var(--fray-selection-background);
103
+ --toggle-selected-text: var(--fray-selection-color);
104
+ --panel-bg: var(--fray-panel-background);
105
+ --panel-border: var(--fray-panel-border);
106
+ --panel-radius: var(--fray-panel-radius);
107
+ --panel-shadow: var(--fray-panel-shadow);
108
+ --panel-color: var(--fray-panel-color);
109
+ --panel-padding: var(--fray-space-md);
110
+ --toolbar-bg: var(--fray-toolbar-background);
111
+ --toolbar-border: var(--fray-toolbar-border);
112
+ --toolbar-radius: var(--fray-radius-lg);
113
+ --toolbar-shadow: var(--fray-toolbar-shadow);
114
+ --toolbar-color: var(--fray-toolbar-color);
115
+ --sectionheader-bg: var(--fray-section-header-background, var(--fray-header-background));
116
+ --sectionheader-shadow: var(--fray-header-shadow);
117
+ --sectionheader-color: var(--fray-header-color);
118
+ --tabline-bg: var(--fray-tabline-background);
119
+ --tab-bg-active: var(--fray-tab-active-background);
120
+ --error-color: var(--fray-color-error);
121
+ --cbx-o-border: var(--fray-checkbox-box-border);
122
+ --cbx-border-radius: 0;
123
+ --spacing-small: var(--fray-space-sm);
124
+ --spacing-medium: var(--fray-space-md);
125
+ --noselect-user-select: none;
126
+ --noselect-cursor: default;
127
+ }
128
+
129
+ :where(:root:not([data-fray-theme]), [data-fray-theme="java"]) :where(
130
+ button[data-fray-component="button"],
131
+ [role="tab"],
132
+ [role="radio"],
133
+ [role="checkbox"]
134
+ ):active {
135
+ border-style: inset;
136
+ }
137
+
138
+ :where(:root:not([data-fray-theme]), [data-fray-theme="java"]) [data-fray-component="tab-line"] > [role="tab"][aria-selected="true"] {
139
+ border-bottom-color: var(--fray-tab-active-background);
140
+ }
@@ -0,0 +1,128 @@
1
+ @charset "utf-8";
2
+
3
+ :where(:root), [data-fray-theme="minimal"] {
4
+ color-scheme: light;
5
+ --fray-font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
6
+ --fray-font-size: 0.875rem;
7
+ --fray-line-height: 1.25;
8
+ --fray-control-min-height: 2rem;
9
+ --fray-space-xs: 0.25rem;
10
+ --fray-space-sm: 0.5rem;
11
+ --fray-space-md: 1rem;
12
+ --fray-space-lg: 1.5rem;
13
+ --fray-radius-sm: 0.2rem;
14
+ --fray-radius-md: 0.375rem;
15
+ --fray-radius-lg: 0.5rem;
16
+ --fray-motion-fast: 120ms;
17
+
18
+ --fray-ui-background: var(--fray-color-surface);
19
+ --fray-ui-color: var(--fray-color-text);
20
+ --fray-ui-border: 1px solid var(--fray-color-border);
21
+ --fray-ui-shadow: none;
22
+ --fray-focus-ring: 0 0 0 2px var(--fray-color-focus);
23
+
24
+ --fray-panel-background: var(--fray-color-surface);
25
+ --fray-panel-color: var(--fray-color-text);
26
+ --fray-panel-border: 1px solid var(--fray-color-border);
27
+ --fray-panel-shadow: none;
28
+ --fray-panel-radius: var(--fray-radius-md);
29
+ --fray-dialog-shadow: 0 1.25rem 4rem color-mix(in srgb, var(--fray-color-shadow) 35%, transparent);
30
+ --fray-dialog-backdrop-background: color-mix(in srgb, var(--fray-color-shadow) 55%, transparent);
31
+
32
+ --fray-header-background: var(--fray-color-surface-muted);
33
+ --fray-header-color: var(--fray-color-text);
34
+ --fray-header-border: 0 solid transparent;
35
+ --fray-header-shadow: none;
36
+ --fray-table-header-background: var(--fray-color-surface-muted);
37
+
38
+ --fray-button-background: var(--fray-color-surface-muted);
39
+ --fray-button-background-hover: var(--fray-color-primary-soft);
40
+ --fray-button-background-active: var(--fray-color-primary);
41
+ --fray-button-background-disabled: var(--fray-color-disabled);
42
+ --fray-button-color: var(--fray-color-text);
43
+ --fray-button-border: 1px solid var(--fray-color-border-strong);
44
+ --fray-button-shadow: none;
45
+ --fray-button-shadow-active: none;
46
+
47
+ --fray-input-background: var(--fray-color-surface-raised);
48
+ --fray-input-color: var(--fray-color-text);
49
+ --fray-input-border: 1px solid var(--fray-color-border-strong);
50
+ --fray-input-shadow: none;
51
+ --fray-input-background-disabled: var(--fray-color-disabled);
52
+ --fray-input-color-disabled: var(--fray-color-on-disabled);
53
+
54
+ --fray-selection-background: var(--fray-color-selection);
55
+ --fray-selection-color: var(--fray-color-on-selection);
56
+ --fray-row-hover-background: var(--fray-color-primary-soft);
57
+ --fray-table-row-background: var(--fray-color-surface);
58
+ --fray-table-row-alt-background: var(--fray-color-surface-muted);
59
+
60
+ --fray-checkbox-box-background: var(--fray-color-surface-raised);
61
+ --fray-checkbox-box-background-checked: var(--fray-color-selection);
62
+ --fray-checkbox-box-border: 1px solid var(--fray-color-border-strong);
63
+ --fray-checkbox-symbol-color: var(--fray-color-on-selection);
64
+ --fray-radio-background: var(--fray-button-background);
65
+ --fray-radio-background-checked: var(--fray-selection-background);
66
+
67
+ --fray-toolbar-background: var(--fray-color-surface-muted);
68
+ --fray-toolbar-color: var(--fray-color-text);
69
+ --fray-toolbar-border: 0 solid transparent;
70
+ --fray-toolbar-shadow: none;
71
+ --fray-tabline-background: var(--fray-color-surface-muted);
72
+ --fray-tab-active-background: var(--fray-color-surface);
73
+ --fray-progress-track-background: var(--fray-color-surface-inset);
74
+ --fray-progress-value-background: var(--fray-color-primary);
75
+ --fray-working-background-image: linear-gradient(-45deg, transparent 25%, color-mix(in srgb, var(--fray-color-highlight) 35%, transparent) 25% 50%, transparent 50% 75%, color-mix(in srgb, var(--fray-color-highlight) 35%, transparent) 75%);
76
+
77
+ /* Alpha compatibility aliases; new components should use --fray-* names. */
78
+ --base-font-size: var(--fray-font-size);
79
+ --ui-font-size: var(--fray-font-size);
80
+ --ui-padding: var(--fray-space-sm);
81
+ --ui-padding-h: var(--fray-space-sm);
82
+ --ui-padding-v: var(--fray-space-xs);
83
+ --ui-border-radius: var(--fray-radius-md);
84
+ --ui-text-color: var(--fray-ui-color);
85
+ --ui-muted-text-color: var(--fray-color-text-muted);
86
+ --ui-border-color: var(--fray-color-border);
87
+ --ui-input-bg: var(--fray-input-background);
88
+ --ui-input-border: var(--fray-input-border);
89
+ --ui-input-bg-disabled: var(--fray-input-background-disabled);
90
+ --ui-input-border-disabled: 1px solid var(--fray-color-border);
91
+ --ui-input-text-color-disabled: var(--fray-input-color-disabled);
92
+ --ui-accent-color: var(--fray-color-primary);
93
+ --ui-accent-color-highlight: var(--fray-color-primary-soft);
94
+ --input-width: 15rem;
95
+ --input-shadow: var(--fray-input-shadow);
96
+ --button-background: var(--fray-button-background);
97
+ --button-background-hover: var(--fray-button-background-hover);
98
+ --button-background-disabled: var(--fray-button-background-disabled);
99
+ --button-border: var(--fray-button-border);
100
+ --button-border-disabled: 1px solid var(--fray-color-border);
101
+ --button-shadow: var(--fray-button-shadow);
102
+ --button-color: var(--fray-button-color);
103
+ --toggle-selected-bg: var(--fray-selection-background);
104
+ --toggle-selected-text: var(--fray-selection-color);
105
+ --panel-bg: var(--fray-panel-background);
106
+ --panel-border: var(--fray-panel-border);
107
+ --panel-radius: var(--fray-panel-radius);
108
+ --panel-shadow: var(--fray-panel-shadow);
109
+ --panel-color: var(--fray-panel-color);
110
+ --panel-padding: var(--fray-space-md);
111
+ --toolbar-bg: var(--fray-toolbar-background);
112
+ --toolbar-border: var(--fray-toolbar-border);
113
+ --toolbar-radius: var(--fray-radius-md);
114
+ --toolbar-shadow: var(--fray-toolbar-shadow);
115
+ --toolbar-color: var(--fray-toolbar-color);
116
+ --sectionheader-bg: var(--fray-section-header-background, var(--fray-header-background));
117
+ --sectionheader-shadow: var(--fray-header-shadow);
118
+ --sectionheader-color: var(--fray-header-color);
119
+ --tabline-bg: var(--fray-tabline-background);
120
+ --tab-bg-active: var(--fray-tab-active-background);
121
+ --error-color: var(--fray-color-error);
122
+ --cbx-o-border: var(--fray-checkbox-box-border);
123
+ --cbx-border-radius: var(--fray-radius-sm);
124
+ --spacing-small: var(--fray-space-sm);
125
+ --spacing-medium: var(--fray-space-md);
126
+ --noselect-user-select: none;
127
+ --noselect-cursor: default;
128
+ }