@sylwellsoftware/fray 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +34 -27
  2. package/colors/README.md +28 -13
  3. package/colors/gray/colors.css +54 -26
  4. package/colors/green/colors.css +54 -26
  5. package/colors/iceblue/colors.css +54 -26
  6. package/colors/ocean/colors.css +54 -26
  7. package/colors/orange/colors.css +54 -26
  8. package/colors/purple/colors.css +54 -26
  9. package/colors/red/colors.css +54 -26
  10. package/colors/yellow/colors.css +54 -26
  11. package/dist/Components/data/descriptionList.d.ts.map +1 -1
  12. package/dist/Components/data/listview/listview.d.ts.map +1 -1
  13. package/dist/Components/data/table/DataTable.d.ts.map +1 -1
  14. package/dist/Components/data/table/FilterPanel.d.ts.map +1 -1
  15. package/dist/Components/data/table/TableHeaderCell.d.ts.map +1 -1
  16. package/dist/Components/data/treeview/treeview.d.ts.map +1 -1
  17. package/dist/Components/dialog/dialog.d.ts.map +1 -1
  18. package/dist/Components/layout/panel.d.ts +0 -1
  19. package/dist/Components/layout/panel.d.ts.map +1 -1
  20. package/dist/Components/layout/sidebar.d.ts +0 -1
  21. package/dist/Components/layout/sidebar.d.ts.map +1 -1
  22. package/dist/Components/layout/tabpanel/tabline.d.ts.map +1 -1
  23. package/dist/Components/layout/tabpanel/tabpanel.d.ts.map +1 -1
  24. package/dist/Components/lineinputs/checkbox/Checkbox.d.ts.map +1 -1
  25. package/dist/Components/lineinputs/dropdown.d.ts.map +1 -1
  26. package/dist/Components/lineinputs/textbox.d.ts.map +1 -1
  27. package/dist/Components/lineinputs/toggle.d.ts.map +1 -1
  28. package/dist/Components/menu/toolbar.d.ts +0 -1
  29. package/dist/Components/menu/toolbar.d.ts.map +1 -1
  30. package/dist/Components/status/progressBar.d.ts.map +1 -1
  31. package/dist/Components/theme/stylesheetPicker.d.ts.map +1 -1
  32. package/dist/index.js +1214 -1409
  33. package/dist/index.js.map +1 -1
  34. package/dist/{jsx-dev-runtime-pzseD2Sz.js → jsx-dev-runtime-CqunwZ8j.js} +404 -486
  35. package/dist/jsx-dev-runtime-CqunwZ8j.js.map +1 -0
  36. package/dist/jsx-dev-runtime.js +1 -1
  37. package/dist/jsx-runtime.js +1 -1
  38. package/dist/styling/baseStyleDefinitions.d.ts +0 -82
  39. package/dist/styling/baseStyleDefinitions.d.ts.map +1 -1
  40. package/dist/styling/theme.d.ts +3 -3
  41. package/dist/styling/theme.d.ts.map +1 -1
  42. package/package.json +3 -3
  43. package/styles/structural.css +72 -413
  44. package/themes/README.md +68 -66
  45. package/themes/dark.css +48 -1
  46. package/themes/java/theme.css +410 -135
  47. package/themes/light.css +48 -1
  48. package/themes/minimal/theme.css +408 -125
  49. package/themes/shiny/theme.css +484 -294
  50. package/dist/jsx-dev-runtime-pzseD2Sz.js.map +0 -1
package/README.md CHANGED
@@ -221,7 +221,7 @@ not a framework identity class. The default application runtime therefore
221
221
  produces DOM such as:
222
222
 
223
223
  ```html
224
- <fray-panel data-fray-component="panel">
224
+ <fray-panel class="panellike" data-fray-component="panel">
225
225
  <fray-textbox data-fray-component="textbox">
226
226
  <input type="text">
227
227
  </fray-textbox>
@@ -233,8 +233,10 @@ Native semantics remain native: `Button` renders `button`, `Toggle` renders
233
233
  `fieldset`, `Sidebar` renders `aside`, and table header components render
234
234
  `thead`/`th`. `Tab` is a declarative child consumed by `TabPanel` and has no
235
235
  independent root. The
236
- `data-fray-component` attribute keeps diagnostics unambiguous without taking
237
- ownership of the consumer's `class`/`className`.
236
+ `data-fray-component` keeps diagnostics unambiguous. It is not a structural or
237
+ theme selector. Fray may merge public presentation traits such as `panellike`
238
+ with an application-supplied `class`/`className`; those traits describe a
239
+ reusable capability, not component identity.
238
240
 
239
241
  Element naming is an immutable application-runtime setting:
240
242
 
@@ -680,7 +682,7 @@ Fray's styling system has three physically and conceptually separate layers:
680
682
  | --- | --- | --- | --- |
681
683
  | Structure | `styles/structural.css` | Generated component layout, flow, sizing, positioning, accessibility mechanics, stable hooks, and variable consumption | Loaded once; remains stable during presentation changes |
682
684
  | Theme | `themes/<name>/theme.css` | Typography, spacing, geometry, depth, surface treatment, semantic family mappings, and exceptional pseudo/native rendering | Loaded separately and independently replaceable |
683
- | Colors | `colors/<name>/colors.css` | Palette primitives and semantic color roles | Loaded separately and independently replaceable |
685
+ | Colors | `colors/<name>/colors.css` | Primary, secondary, and neutral ramps plus contrast/color primitives; no UI-semantic roles | Loaded separately and independently replaceable |
684
686
 
685
687
  Component authors place only structure and mechanics in `static css`: display,
686
688
  flow, sizing, positioning, overflow, stable state hooks, and consumption of
@@ -708,7 +710,7 @@ CSS custom properties are Fray's primary theme integration protocol:
708
710
 
709
711
  ```text
710
712
  colors.css
711
- --fray-color-* palette/semantic roles
713
+ --palette-primary-* / --palette-secondary-* / --palette-neutral-*
712
714
 
713
715
 
714
716
  theme.css
@@ -732,39 +734,44 @@ that should look different. `frayThemeVariableCatalog` exports this contract in
732
734
  machine-readable form, including every variable's layer, family, value kind,
733
735
  purpose, and optional fallback.
734
736
 
735
- A custom component should consume the same hierarchy rather than forcing every
736
- theme to learn a new selector:
737
+ A custom component can apply the public trait matching the treatment it needs
738
+ and optionally consume the same variable hierarchy:
737
739
 
738
740
  ```css
739
- acme-grid > header {
740
- color: var(
741
- --acme-grid-header-color,
742
- var(--fray-table-header-color, var(--fray-header-color))
743
- );
744
- background: var(
745
- --acme-grid-header-background,
746
- var(--fray-table-header-background, var(--fray-header-background))
747
- );
741
+ acme-grid.datacomponentlike > header {
742
+ color: var(--table-header-color, var(--header-color));
743
+ background: var(--table-header-background, var(--header-background));
748
744
  }
749
745
  ```
750
746
 
751
- That component immediately follows compatible Fray themes while retaining a
752
- consumer/component-specific escape hatch.
753
-
754
- Variables are preferred, not mandatory. Some visual treatments require actual
755
- selectors and pseudo-elements. Shiny uses theme-scoped stable
756
- `data-fray-component`, `data-part`, role, and ARIA-state hooks to layer
757
- highlights over headers and button-like controls, draw custom dropdown arrows
758
- and checkbox surfaces, and style native progress pseudo-parts. These rules must
759
- not depend on application classes or generated IDs, must never intercept
760
- pointer events, and must yield to native representation under forced colors.
747
+ Complete traits use the `like` suffix. A component whose outer and content
748
+ regions are distinct uses `shell` and `inner`, for example `buttonshell` with
749
+ `buttoninner`, or `datacomponentshell` with `datacomponentinner`. Other public
750
+ families include `inputlike`, `headerlike`, `coloredlike`, `panellike`, and
751
+ `toolbarlike`; the panel and toolbar families also expose
752
+ `panelshell`/`panelinner` and `toolbarshell`/`toolbarinner`. Wrappers are not
753
+ introduced solely to carry a split trait.
754
+
755
+ Themes directly target native elements, public traits, native pseudo-parts,
756
+ and native/ARIA state. They never target `data-fray-component` or `data-part`.
757
+ Every theme seeds inherited variables with a zero-specificity
758
+ `:root`/`[data-theme]` boundary rule. Presentation selectors use `@scope` with
759
+ nested theme roots and `[data-theme-exclude]` limits, a named cascade layer,
760
+ and low-specificity `:where()` selectors. Shiny's highlights and
761
+ select/progress decoration follow that contract and yield to native
762
+ representation under forced colors.
763
+
764
+ `coloredlike` defaults to the primary palette. Components can provide
765
+ `--colored-base`, `--colored-light`, `--colored-dark`, and
766
+ `--colored-contrast`; the active theme decides whether those inputs become a
767
+ flat color, gradient, other polish, or no special treatment.
761
768
 
762
769
  ### Runtime selection
763
770
 
764
771
  `replaceFrayStylesheet` maintains one
765
772
  `link[data-fray-stylesheet="theme"]` and one
766
773
  `link[data-fray-stylesheet="colors"]`. Replacing either link also sets the
767
- corresponding `data-fray-theme` or `data-fray-color` root attribute. The
774
+ corresponding `data-theme` or `data-color` root attribute. The
768
775
  `ThemePicker` and `ColorPicker` controls expose the same operation through the
769
776
  normal Fray value-control contract.
770
777
 
package/colors/README.md CHANGED
@@ -1,15 +1,30 @@
1
1
  # Fray color palettes
2
2
 
3
- Each `<name>/colors.css` file defines the complete `--fray-color-*` contract
4
- without defining component geometry or treatment. It can therefore be replaced
5
- without rebuilding Fray components or replacing the active theme stylesheet.
6
-
7
- Palette files must provide canvas and surface colors, primary and muted text,
8
- ordinary and strong borders, primary/hover/active/soft accents, focus and
9
- selection colors, disabled colors, success/error roles, and highlight/shadow
10
- tints. The required list is available programmatically from
11
- `frayThemeVariableCatalog` entries whose `layer` is `color`.
12
-
13
- Palette names describe a color direction, not a theme. A theme may constrain
14
- which palettes it advertises, but the CSS contract itself keeps the two assets
15
- independently replaceable.
3
+ Each `<name>/colors.css` file defines a replaceable, prefix-free color
4
+ language. It contains palette values only; it does not decide what a panel,
5
+ button, input, selection, or application surface looks like.
6
+
7
+ Every palette supplies three complete ramps:
8
+
9
+ ```text
10
+ --palette-primary-{50,100,200,300,400,500,600,700,800,900,950}
11
+ --palette-secondary-{50,100,200,300,400,500,600,700,800,900,950}
12
+ --palette-neutral-{50,100,200,300,400,500,600,700,800,900,950}
13
+ ```
14
+
15
+ It also supplies `--palette-<family>`, `--palette-<family>-light`, and
16
+ `--palette-<family>-dark` aliases; `--palette-light`, `--palette-dark`,
17
+ `--palette-contrast-light`, and `--palette-contrast-dark`; and named hue
18
+ primitives such as `--palette-red` and `--palette-green`. Additional numeric
19
+ stops may be added without changing the existing contract.
20
+
21
+ Themes map these values to semantic variables. For example, a theme may map a
22
+ light-mode button to `--palette-neutral-100`, a selected item to
23
+ `--palette-primary-600`, and an error to `--palette-red`. A different theme can
24
+ use the same palette in entirely different places.
25
+
26
+ Palette declarations use a zero-specificity boundary selector for `:root` or
27
+ the matching `[data-color]` root. They select no descendants; the custom
28
+ properties propagate through normal inheritance and a nested color root seeds
29
+ its own palette. `frayThemeVariableCatalog` entries whose `layer` is `palette`
30
+ expose the machine-readable required vocabulary.
@@ -1,29 +1,57 @@
1
1
  @charset "utf-8";
2
2
 
3
- :where(:root), [data-fray-color="gray"] {
4
- --fray-color-canvas: #f5f6f7;
5
- --fray-color-surface: #ffffff;
6
- --fray-color-surface-muted: #eceff1;
7
- --fray-color-surface-raised: #ffffff;
8
- --fray-color-surface-inset: #dde1e4;
9
- --fray-color-text: #25292d;
10
- --fray-color-text-muted: #626a72;
11
- --fray-color-border: #c3c8cd;
12
- --fray-color-border-strong: #858d95;
13
- --fray-color-primary: #5d6873;
14
- --fray-color-primary-hover: #4d5862;
15
- --fray-color-primary-active: #3d464e;
16
- --fray-color-primary-soft: #e1e6eb;
17
- --fray-color-on-primary: #ffffff;
18
- --fray-color-focus: #1769aa;
19
- --fray-color-selection: #5d6873;
20
- --fray-color-on-selection: #ffffff;
21
- --fray-color-disabled: #e4e7e9;
22
- --fray-color-on-disabled: #6c737a;
23
- --fray-color-error: #b3261e;
24
- --fray-color-on-error: #ffffff;
25
- --fray-color-success: #287a3c;
26
- --fray-color-on-success: #ffffff;
27
- --fray-color-highlight: #ffffff;
28
- --fray-color-shadow: #20252a;
3
+ @layer palette {
4
+ :where(:root:not([data-color]), [data-color="gray"]) {
5
+ --palette-light: #ffffff;
6
+ --palette-dark: #111827;
7
+ --palette-contrast-light: var(--palette-light);
8
+ --palette-contrast-dark: var(--palette-dark);
9
+ --palette-red: #b3261e;
10
+ --palette-green: #287a3c;
11
+
12
+ --palette-primary-500: #5d6873;
13
+ --palette-primary-50: color-mix(in oklch, var(--palette-primary-500) 8%, var(--palette-light));
14
+ --palette-primary-100: color-mix(in oklch, var(--palette-primary-500) 16%, var(--palette-light));
15
+ --palette-primary-200: color-mix(in oklch, var(--palette-primary-500) 32%, var(--palette-light));
16
+ --palette-primary-300: color-mix(in oklch, var(--palette-primary-500) 50%, var(--palette-light));
17
+ --palette-primary-400: color-mix(in oklch, var(--palette-primary-500) 72%, var(--palette-light));
18
+ --palette-primary-600: color-mix(in oklch, var(--palette-primary-500) 85%, var(--palette-dark));
19
+ --palette-primary-700: color-mix(in oklch, var(--palette-primary-500) 72%, var(--palette-dark));
20
+ --palette-primary-800: color-mix(in oklch, var(--palette-primary-500) 58%, var(--palette-dark));
21
+ --palette-primary-900: color-mix(in oklch, var(--palette-primary-500) 42%, var(--palette-dark));
22
+ --palette-primary-950: color-mix(in oklch, var(--palette-primary-500) 28%, var(--palette-dark));
23
+ --palette-primary: var(--palette-primary-500);
24
+ --palette-primary-light: var(--palette-primary-200);
25
+ --palette-primary-dark: var(--palette-primary-800);
26
+
27
+ --palette-secondary-500: #1769aa;
28
+ --palette-secondary-50: color-mix(in oklch, var(--palette-secondary-500) 8%, var(--palette-light));
29
+ --palette-secondary-100: color-mix(in oklch, var(--palette-secondary-500) 16%, var(--palette-light));
30
+ --palette-secondary-200: color-mix(in oklch, var(--palette-secondary-500) 32%, var(--palette-light));
31
+ --palette-secondary-300: color-mix(in oklch, var(--palette-secondary-500) 50%, var(--palette-light));
32
+ --palette-secondary-400: color-mix(in oklch, var(--palette-secondary-500) 72%, var(--palette-light));
33
+ --palette-secondary-600: color-mix(in oklch, var(--palette-secondary-500) 85%, var(--palette-dark));
34
+ --palette-secondary-700: color-mix(in oklch, var(--palette-secondary-500) 72%, var(--palette-dark));
35
+ --palette-secondary-800: color-mix(in oklch, var(--palette-secondary-500) 58%, var(--palette-dark));
36
+ --palette-secondary-900: color-mix(in oklch, var(--palette-secondary-500) 42%, var(--palette-dark));
37
+ --palette-secondary-950: color-mix(in oklch, var(--palette-secondary-500) 28%, var(--palette-dark));
38
+ --palette-secondary: var(--palette-secondary-500);
39
+ --palette-secondary-light: var(--palette-secondary-200);
40
+ --palette-secondary-dark: var(--palette-secondary-800);
41
+
42
+ --palette-neutral-500: #858d95;
43
+ --palette-neutral-50: color-mix(in oklch, var(--palette-neutral-500) 6%, var(--palette-light));
44
+ --palette-neutral-100: color-mix(in oklch, var(--palette-neutral-500) 13%, var(--palette-light));
45
+ --palette-neutral-200: color-mix(in oklch, var(--palette-neutral-500) 26%, var(--palette-light));
46
+ --palette-neutral-300: color-mix(in oklch, var(--palette-neutral-500) 43%, var(--palette-light));
47
+ --palette-neutral-400: color-mix(in oklch, var(--palette-neutral-500) 68%, var(--palette-light));
48
+ --palette-neutral-600: color-mix(in oklch, var(--palette-neutral-500) 84%, var(--palette-dark));
49
+ --palette-neutral-700: color-mix(in oklch, var(--palette-neutral-500) 67%, var(--palette-dark));
50
+ --palette-neutral-800: color-mix(in oklch, var(--palette-neutral-500) 50%, var(--palette-dark));
51
+ --palette-neutral-900: color-mix(in oklch, var(--palette-neutral-500) 32%, var(--palette-dark));
52
+ --palette-neutral-950: color-mix(in oklch, var(--palette-neutral-500) 18%, var(--palette-dark));
53
+ --palette-neutral: var(--palette-neutral-500);
54
+ --palette-neutral-light: var(--palette-neutral-200);
55
+ --palette-neutral-dark: var(--palette-neutral-800);
56
+ }
29
57
  }
@@ -1,29 +1,57 @@
1
1
  @charset "utf-8";
2
2
 
3
- :where(:root), [data-fray-color="green"] {
4
- --fray-color-canvas: #f4faf4;
5
- --fray-color-surface: #ffffff;
6
- --fray-color-surface-muted: #e6f3e7;
7
- --fray-color-surface-raised: #ffffff;
8
- --fray-color-surface-inset: #d2e7d4;
9
- --fray-color-text: #18301d;
10
- --fray-color-text-muted: #536b57;
11
- --fray-color-border: #b4ccb8;
12
- --fray-color-border-strong: #75947a;
13
- --fray-color-primary: #287a3c;
14
- --fray-color-primary-hover: #206b33;
15
- --fray-color-primary-active: #185529;
16
- --fray-color-primary-soft: #d5f0da;
17
- --fray-color-on-primary: #ffffff;
18
- --fray-color-focus: #19883a;
19
- --fray-color-selection: #287a3c;
20
- --fray-color-on-selection: #ffffff;
21
- --fray-color-disabled: #e0e9e1;
22
- --fray-color-on-disabled: #657968;
23
- --fray-color-error: #b3261e;
24
- --fray-color-on-error: #ffffff;
25
- --fray-color-success: #287a3c;
26
- --fray-color-on-success: #ffffff;
27
- --fray-color-highlight: #ffffff;
28
- --fray-color-shadow: #15321b;
3
+ @layer palette {
4
+ :where(:root:not([data-color]), [data-color="green"]) {
5
+ --palette-light: #ffffff;
6
+ --palette-dark: #111827;
7
+ --palette-contrast-light: var(--palette-light);
8
+ --palette-contrast-dark: var(--palette-dark);
9
+ --palette-red: #b3261e;
10
+ --palette-green: #287a3c;
11
+
12
+ --palette-primary-500: #287a3c;
13
+ --palette-primary-50: color-mix(in oklch, var(--palette-primary-500) 8%, var(--palette-light));
14
+ --palette-primary-100: color-mix(in oklch, var(--palette-primary-500) 16%, var(--palette-light));
15
+ --palette-primary-200: color-mix(in oklch, var(--palette-primary-500) 32%, var(--palette-light));
16
+ --palette-primary-300: color-mix(in oklch, var(--palette-primary-500) 50%, var(--palette-light));
17
+ --palette-primary-400: color-mix(in oklch, var(--palette-primary-500) 72%, var(--palette-light));
18
+ --palette-primary-600: color-mix(in oklch, var(--palette-primary-500) 85%, var(--palette-dark));
19
+ --palette-primary-700: color-mix(in oklch, var(--palette-primary-500) 72%, var(--palette-dark));
20
+ --palette-primary-800: color-mix(in oklch, var(--palette-primary-500) 58%, var(--palette-dark));
21
+ --palette-primary-900: color-mix(in oklch, var(--palette-primary-500) 42%, var(--palette-dark));
22
+ --palette-primary-950: color-mix(in oklch, var(--palette-primary-500) 28%, var(--palette-dark));
23
+ --palette-primary: var(--palette-primary-500);
24
+ --palette-primary-light: var(--palette-primary-200);
25
+ --palette-primary-dark: var(--palette-primary-800);
26
+
27
+ --palette-secondary-500: #087f78;
28
+ --palette-secondary-50: color-mix(in oklch, var(--palette-secondary-500) 8%, var(--palette-light));
29
+ --palette-secondary-100: color-mix(in oklch, var(--palette-secondary-500) 16%, var(--palette-light));
30
+ --palette-secondary-200: color-mix(in oklch, var(--palette-secondary-500) 32%, var(--palette-light));
31
+ --palette-secondary-300: color-mix(in oklch, var(--palette-secondary-500) 50%, var(--palette-light));
32
+ --palette-secondary-400: color-mix(in oklch, var(--palette-secondary-500) 72%, var(--palette-light));
33
+ --palette-secondary-600: color-mix(in oklch, var(--palette-secondary-500) 85%, var(--palette-dark));
34
+ --palette-secondary-700: color-mix(in oklch, var(--palette-secondary-500) 72%, var(--palette-dark));
35
+ --palette-secondary-800: color-mix(in oklch, var(--palette-secondary-500) 58%, var(--palette-dark));
36
+ --palette-secondary-900: color-mix(in oklch, var(--palette-secondary-500) 42%, var(--palette-dark));
37
+ --palette-secondary-950: color-mix(in oklch, var(--palette-secondary-500) 28%, var(--palette-dark));
38
+ --palette-secondary: var(--palette-secondary-500);
39
+ --palette-secondary-light: var(--palette-secondary-200);
40
+ --palette-secondary-dark: var(--palette-secondary-800);
41
+
42
+ --palette-neutral-500: #75947a;
43
+ --palette-neutral-50: color-mix(in oklch, var(--palette-neutral-500) 6%, var(--palette-light));
44
+ --palette-neutral-100: color-mix(in oklch, var(--palette-neutral-500) 13%, var(--palette-light));
45
+ --palette-neutral-200: color-mix(in oklch, var(--palette-neutral-500) 26%, var(--palette-light));
46
+ --palette-neutral-300: color-mix(in oklch, var(--palette-neutral-500) 43%, var(--palette-light));
47
+ --palette-neutral-400: color-mix(in oklch, var(--palette-neutral-500) 68%, var(--palette-light));
48
+ --palette-neutral-600: color-mix(in oklch, var(--palette-neutral-500) 84%, var(--palette-dark));
49
+ --palette-neutral-700: color-mix(in oklch, var(--palette-neutral-500) 67%, var(--palette-dark));
50
+ --palette-neutral-800: color-mix(in oklch, var(--palette-neutral-500) 50%, var(--palette-dark));
51
+ --palette-neutral-900: color-mix(in oklch, var(--palette-neutral-500) 32%, var(--palette-dark));
52
+ --palette-neutral-950: color-mix(in oklch, var(--palette-neutral-500) 18%, var(--palette-dark));
53
+ --palette-neutral: var(--palette-neutral-500);
54
+ --palette-neutral-light: var(--palette-neutral-200);
55
+ --palette-neutral-dark: var(--palette-neutral-800);
56
+ }
29
57
  }
@@ -1,29 +1,57 @@
1
1
  @charset "utf-8";
2
2
 
3
- :where(:root), [data-fray-color="iceblue"] {
4
- --fray-color-canvas: #f4f8fc;
5
- --fray-color-surface: #ffffff;
6
- --fray-color-surface-muted: #eaf2f9;
7
- --fray-color-surface-raised: #ffffff;
8
- --fray-color-surface-inset: #d9e7f3;
9
- --fray-color-text: #162536;
10
- --fray-color-text-muted: #53687c;
11
- --fray-color-border: #b8c9d9;
12
- --fray-color-border-strong: #7892aa;
13
- --fray-color-primary: #1769aa;
14
- --fray-color-primary-hover: #0f5b96;
15
- --fray-color-primary-active: #0a4778;
16
- --fray-color-primary-soft: #d7ebfb;
17
- --fray-color-on-primary: #ffffff;
18
- --fray-color-focus: #1683d8;
19
- --fray-color-selection: #1769aa;
20
- --fray-color-on-selection: #ffffff;
21
- --fray-color-disabled: #e2e9ef;
22
- --fray-color-on-disabled: #697a89;
23
- --fray-color-error: #b3261e;
24
- --fray-color-on-error: #ffffff;
25
- --fray-color-success: #287a3c;
26
- --fray-color-on-success: #ffffff;
27
- --fray-color-highlight: #ffffff;
28
- --fray-color-shadow: #11283d;
3
+ @layer palette {
4
+ :where(:root:not([data-color]), [data-color="iceblue"]) {
5
+ --palette-light: #ffffff;
6
+ --palette-dark: #111827;
7
+ --palette-contrast-light: var(--palette-light);
8
+ --palette-contrast-dark: var(--palette-dark);
9
+ --palette-red: #b3261e;
10
+ --palette-green: #287a3c;
11
+
12
+ --palette-primary-500: #1769aa;
13
+ --palette-primary-50: color-mix(in oklch, var(--palette-primary-500) 8%, var(--palette-light));
14
+ --palette-primary-100: color-mix(in oklch, var(--palette-primary-500) 16%, var(--palette-light));
15
+ --palette-primary-200: color-mix(in oklch, var(--palette-primary-500) 32%, var(--palette-light));
16
+ --palette-primary-300: color-mix(in oklch, var(--palette-primary-500) 50%, var(--palette-light));
17
+ --palette-primary-400: color-mix(in oklch, var(--palette-primary-500) 72%, var(--palette-light));
18
+ --palette-primary-600: color-mix(in oklch, var(--palette-primary-500) 85%, var(--palette-dark));
19
+ --palette-primary-700: color-mix(in oklch, var(--palette-primary-500) 72%, var(--palette-dark));
20
+ --palette-primary-800: color-mix(in oklch, var(--palette-primary-500) 58%, var(--palette-dark));
21
+ --palette-primary-900: color-mix(in oklch, var(--palette-primary-500) 42%, var(--palette-dark));
22
+ --palette-primary-950: color-mix(in oklch, var(--palette-primary-500) 28%, var(--palette-dark));
23
+ --palette-primary: var(--palette-primary-500);
24
+ --palette-primary-light: var(--palette-primary-200);
25
+ --palette-primary-dark: var(--palette-primary-800);
26
+
27
+ --palette-secondary-500: #7137a8;
28
+ --palette-secondary-50: color-mix(in oklch, var(--palette-secondary-500) 8%, var(--palette-light));
29
+ --palette-secondary-100: color-mix(in oklch, var(--palette-secondary-500) 16%, var(--palette-light));
30
+ --palette-secondary-200: color-mix(in oklch, var(--palette-secondary-500) 32%, var(--palette-light));
31
+ --palette-secondary-300: color-mix(in oklch, var(--palette-secondary-500) 50%, var(--palette-light));
32
+ --palette-secondary-400: color-mix(in oklch, var(--palette-secondary-500) 72%, var(--palette-light));
33
+ --palette-secondary-600: color-mix(in oklch, var(--palette-secondary-500) 85%, var(--palette-dark));
34
+ --palette-secondary-700: color-mix(in oklch, var(--palette-secondary-500) 72%, var(--palette-dark));
35
+ --palette-secondary-800: color-mix(in oklch, var(--palette-secondary-500) 58%, var(--palette-dark));
36
+ --palette-secondary-900: color-mix(in oklch, var(--palette-secondary-500) 42%, var(--palette-dark));
37
+ --palette-secondary-950: color-mix(in oklch, var(--palette-secondary-500) 28%, var(--palette-dark));
38
+ --palette-secondary: var(--palette-secondary-500);
39
+ --palette-secondary-light: var(--palette-secondary-200);
40
+ --palette-secondary-dark: var(--palette-secondary-800);
41
+
42
+ --palette-neutral-500: #7892aa;
43
+ --palette-neutral-50: color-mix(in oklch, var(--palette-neutral-500) 6%, var(--palette-light));
44
+ --palette-neutral-100: color-mix(in oklch, var(--palette-neutral-500) 13%, var(--palette-light));
45
+ --palette-neutral-200: color-mix(in oklch, var(--palette-neutral-500) 26%, var(--palette-light));
46
+ --palette-neutral-300: color-mix(in oklch, var(--palette-neutral-500) 43%, var(--palette-light));
47
+ --palette-neutral-400: color-mix(in oklch, var(--palette-neutral-500) 68%, var(--palette-light));
48
+ --palette-neutral-600: color-mix(in oklch, var(--palette-neutral-500) 84%, var(--palette-dark));
49
+ --palette-neutral-700: color-mix(in oklch, var(--palette-neutral-500) 67%, var(--palette-dark));
50
+ --palette-neutral-800: color-mix(in oklch, var(--palette-neutral-500) 50%, var(--palette-dark));
51
+ --palette-neutral-900: color-mix(in oklch, var(--palette-neutral-500) 32%, var(--palette-dark));
52
+ --palette-neutral-950: color-mix(in oklch, var(--palette-neutral-500) 18%, var(--palette-dark));
53
+ --palette-neutral: var(--palette-neutral-500);
54
+ --palette-neutral-light: var(--palette-neutral-200);
55
+ --palette-neutral-dark: var(--palette-neutral-800);
56
+ }
29
57
  }
@@ -1,29 +1,57 @@
1
1
  @charset "utf-8";
2
2
 
3
- :where(:root), [data-fray-color="ocean"] {
4
- --fray-color-canvas: #f1f9f8;
5
- --fray-color-surface: #ffffff;
6
- --fray-color-surface-muted: #e1f2f0;
7
- --fray-color-surface-raised: #ffffff;
8
- --fray-color-surface-inset: #cbe5e2;
9
- --fray-color-text: #12302f;
10
- --fray-color-text-muted: #4e6b69;
11
- --fray-color-border: #a9c9c5;
12
- --fray-color-border-strong: #668f8a;
13
- --fray-color-primary: #087f78;
14
- --fray-color-primary-hover: #006f69;
15
- --fray-color-primary-active: #005a55;
16
- --fray-color-primary-soft: #c8efeb;
17
- --fray-color-on-primary: #ffffff;
18
- --fray-color-focus: #008f86;
19
- --fray-color-selection: #087f78;
20
- --fray-color-on-selection: #ffffff;
21
- --fray-color-disabled: #dde9e7;
22
- --fray-color-on-disabled: #637976;
23
- --fray-color-error: #b3261e;
24
- --fray-color-on-error: #ffffff;
25
- --fray-color-success: #287a3c;
26
- --fray-color-on-success: #ffffff;
27
- --fray-color-highlight: #ffffff;
28
- --fray-color-shadow: #0b302d;
3
+ @layer palette {
4
+ :where(:root:not([data-color]), [data-color="ocean"]) {
5
+ --palette-light: #ffffff;
6
+ --palette-dark: #111827;
7
+ --palette-contrast-light: var(--palette-light);
8
+ --palette-contrast-dark: var(--palette-dark);
9
+ --palette-red: #b3261e;
10
+ --palette-green: #287a3c;
11
+
12
+ --palette-primary-500: #087f78;
13
+ --palette-primary-50: color-mix(in oklch, var(--palette-primary-500) 8%, var(--palette-light));
14
+ --palette-primary-100: color-mix(in oklch, var(--palette-primary-500) 16%, var(--palette-light));
15
+ --palette-primary-200: color-mix(in oklch, var(--palette-primary-500) 32%, var(--palette-light));
16
+ --palette-primary-300: color-mix(in oklch, var(--palette-primary-500) 50%, var(--palette-light));
17
+ --palette-primary-400: color-mix(in oklch, var(--palette-primary-500) 72%, var(--palette-light));
18
+ --palette-primary-600: color-mix(in oklch, var(--palette-primary-500) 85%, var(--palette-dark));
19
+ --palette-primary-700: color-mix(in oklch, var(--palette-primary-500) 72%, var(--palette-dark));
20
+ --palette-primary-800: color-mix(in oklch, var(--palette-primary-500) 58%, var(--palette-dark));
21
+ --palette-primary-900: color-mix(in oklch, var(--palette-primary-500) 42%, var(--palette-dark));
22
+ --palette-primary-950: color-mix(in oklch, var(--palette-primary-500) 28%, var(--palette-dark));
23
+ --palette-primary: var(--palette-primary-500);
24
+ --palette-primary-light: var(--palette-primary-200);
25
+ --palette-primary-dark: var(--palette-primary-800);
26
+
27
+ --palette-secondary-500: #1769aa;
28
+ --palette-secondary-50: color-mix(in oklch, var(--palette-secondary-500) 8%, var(--palette-light));
29
+ --palette-secondary-100: color-mix(in oklch, var(--palette-secondary-500) 16%, var(--palette-light));
30
+ --palette-secondary-200: color-mix(in oklch, var(--palette-secondary-500) 32%, var(--palette-light));
31
+ --palette-secondary-300: color-mix(in oklch, var(--palette-secondary-500) 50%, var(--palette-light));
32
+ --palette-secondary-400: color-mix(in oklch, var(--palette-secondary-500) 72%, var(--palette-light));
33
+ --palette-secondary-600: color-mix(in oklch, var(--palette-secondary-500) 85%, var(--palette-dark));
34
+ --palette-secondary-700: color-mix(in oklch, var(--palette-secondary-500) 72%, var(--palette-dark));
35
+ --palette-secondary-800: color-mix(in oklch, var(--palette-secondary-500) 58%, var(--palette-dark));
36
+ --palette-secondary-900: color-mix(in oklch, var(--palette-secondary-500) 42%, var(--palette-dark));
37
+ --palette-secondary-950: color-mix(in oklch, var(--palette-secondary-500) 28%, var(--palette-dark));
38
+ --palette-secondary: var(--palette-secondary-500);
39
+ --palette-secondary-light: var(--palette-secondary-200);
40
+ --palette-secondary-dark: var(--palette-secondary-800);
41
+
42
+ --palette-neutral-500: #668f8a;
43
+ --palette-neutral-50: color-mix(in oklch, var(--palette-neutral-500) 6%, var(--palette-light));
44
+ --palette-neutral-100: color-mix(in oklch, var(--palette-neutral-500) 13%, var(--palette-light));
45
+ --palette-neutral-200: color-mix(in oklch, var(--palette-neutral-500) 26%, var(--palette-light));
46
+ --palette-neutral-300: color-mix(in oklch, var(--palette-neutral-500) 43%, var(--palette-light));
47
+ --palette-neutral-400: color-mix(in oklch, var(--palette-neutral-500) 68%, var(--palette-light));
48
+ --palette-neutral-600: color-mix(in oklch, var(--palette-neutral-500) 84%, var(--palette-dark));
49
+ --palette-neutral-700: color-mix(in oklch, var(--palette-neutral-500) 67%, var(--palette-dark));
50
+ --palette-neutral-800: color-mix(in oklch, var(--palette-neutral-500) 50%, var(--palette-dark));
51
+ --palette-neutral-900: color-mix(in oklch, var(--palette-neutral-500) 32%, var(--palette-dark));
52
+ --palette-neutral-950: color-mix(in oklch, var(--palette-neutral-500) 18%, var(--palette-dark));
53
+ --palette-neutral: var(--palette-neutral-500);
54
+ --palette-neutral-light: var(--palette-neutral-200);
55
+ --palette-neutral-dark: var(--palette-neutral-800);
56
+ }
29
57
  }
@@ -1,29 +1,57 @@
1
1
  @charset "utf-8";
2
2
 
3
- :where(:root), [data-fray-color="orange"] {
4
- --fray-color-canvas: #fcf7f2;
5
- --fray-color-surface: #ffffff;
6
- --fray-color-surface-muted: #f8ebdf;
7
- --fray-color-surface-raised: #ffffff;
8
- --fray-color-surface-inset: #edd8c5;
9
- --fray-color-text: #382417;
10
- --fray-color-text-muted: #725b49;
11
- --fray-color-border: #d8bda5;
12
- --fray-color-border-strong: #a87a56;
13
- --fray-color-primary: #a94b00;
14
- --fray-color-primary-hover: #963f00;
15
- --fray-color-primary-active: #773200;
16
- --fray-color-primary-soft: #f8dfc8;
17
- --fray-color-on-primary: #ffffff;
18
- --fray-color-focus: #c45800;
19
- --fray-color-selection: #a94b00;
20
- --fray-color-on-selection: #ffffff;
21
- --fray-color-disabled: #eee4dc;
22
- --fray-color-on-disabled: #786a5f;
23
- --fray-color-error: #a51f18;
24
- --fray-color-on-error: #ffffff;
25
- --fray-color-success: #287a3c;
26
- --fray-color-on-success: #ffffff;
27
- --fray-color-highlight: #ffffff;
28
- --fray-color-shadow: #3a1c08;
3
+ @layer palette {
4
+ :where(:root:not([data-color]), [data-color="orange"]) {
5
+ --palette-light: #ffffff;
6
+ --palette-dark: #111827;
7
+ --palette-contrast-light: var(--palette-light);
8
+ --palette-contrast-dark: var(--palette-dark);
9
+ --palette-red: #b3261e;
10
+ --palette-green: #287a3c;
11
+
12
+ --palette-primary-500: #a94b00;
13
+ --palette-primary-50: color-mix(in oklch, var(--palette-primary-500) 8%, var(--palette-light));
14
+ --palette-primary-100: color-mix(in oklch, var(--palette-primary-500) 16%, var(--palette-light));
15
+ --palette-primary-200: color-mix(in oklch, var(--palette-primary-500) 32%, var(--palette-light));
16
+ --palette-primary-300: color-mix(in oklch, var(--palette-primary-500) 50%, var(--palette-light));
17
+ --palette-primary-400: color-mix(in oklch, var(--palette-primary-500) 72%, var(--palette-light));
18
+ --palette-primary-600: color-mix(in oklch, var(--palette-primary-500) 85%, var(--palette-dark));
19
+ --palette-primary-700: color-mix(in oklch, var(--palette-primary-500) 72%, var(--palette-dark));
20
+ --palette-primary-800: color-mix(in oklch, var(--palette-primary-500) 58%, var(--palette-dark));
21
+ --palette-primary-900: color-mix(in oklch, var(--palette-primary-500) 42%, var(--palette-dark));
22
+ --palette-primary-950: color-mix(in oklch, var(--palette-primary-500) 28%, var(--palette-dark));
23
+ --palette-primary: var(--palette-primary-500);
24
+ --palette-primary-light: var(--palette-primary-200);
25
+ --palette-primary-dark: var(--palette-primary-800);
26
+
27
+ --palette-secondary-500: #7137a8;
28
+ --palette-secondary-50: color-mix(in oklch, var(--palette-secondary-500) 8%, var(--palette-light));
29
+ --palette-secondary-100: color-mix(in oklch, var(--palette-secondary-500) 16%, var(--palette-light));
30
+ --palette-secondary-200: color-mix(in oklch, var(--palette-secondary-500) 32%, var(--palette-light));
31
+ --palette-secondary-300: color-mix(in oklch, var(--palette-secondary-500) 50%, var(--palette-light));
32
+ --palette-secondary-400: color-mix(in oklch, var(--palette-secondary-500) 72%, var(--palette-light));
33
+ --palette-secondary-600: color-mix(in oklch, var(--palette-secondary-500) 85%, var(--palette-dark));
34
+ --palette-secondary-700: color-mix(in oklch, var(--palette-secondary-500) 72%, var(--palette-dark));
35
+ --palette-secondary-800: color-mix(in oklch, var(--palette-secondary-500) 58%, var(--palette-dark));
36
+ --palette-secondary-900: color-mix(in oklch, var(--palette-secondary-500) 42%, var(--palette-dark));
37
+ --palette-secondary-950: color-mix(in oklch, var(--palette-secondary-500) 28%, var(--palette-dark));
38
+ --palette-secondary: var(--palette-secondary-500);
39
+ --palette-secondary-light: var(--palette-secondary-200);
40
+ --palette-secondary-dark: var(--palette-secondary-800);
41
+
42
+ --palette-neutral-500: #a87a56;
43
+ --palette-neutral-50: color-mix(in oklch, var(--palette-neutral-500) 6%, var(--palette-light));
44
+ --palette-neutral-100: color-mix(in oklch, var(--palette-neutral-500) 13%, var(--palette-light));
45
+ --palette-neutral-200: color-mix(in oklch, var(--palette-neutral-500) 26%, var(--palette-light));
46
+ --palette-neutral-300: color-mix(in oklch, var(--palette-neutral-500) 43%, var(--palette-light));
47
+ --palette-neutral-400: color-mix(in oklch, var(--palette-neutral-500) 68%, var(--palette-light));
48
+ --palette-neutral-600: color-mix(in oklch, var(--palette-neutral-500) 84%, var(--palette-dark));
49
+ --palette-neutral-700: color-mix(in oklch, var(--palette-neutral-500) 67%, var(--palette-dark));
50
+ --palette-neutral-800: color-mix(in oklch, var(--palette-neutral-500) 50%, var(--palette-dark));
51
+ --palette-neutral-900: color-mix(in oklch, var(--palette-neutral-500) 32%, var(--palette-dark));
52
+ --palette-neutral-950: color-mix(in oklch, var(--palette-neutral-500) 18%, var(--palette-dark));
53
+ --palette-neutral: var(--palette-neutral-500);
54
+ --palette-neutral-light: var(--palette-neutral-200);
55
+ --palette-neutral-dark: var(--palette-neutral-800);
56
+ }
29
57
  }