@cogenta/theme-restaurant 0.3.2 → 0.5.3
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.
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/render/blocks/accordion.d.ts +7 -0
- package/dist/src/render/blocks/accordion.d.ts.map +1 -1
- package/dist/src/render/blocks/accordion.js +10 -16
- package/dist/src/render/blocks/accordion.js.map +1 -1
- package/dist/src/render/blocks/collection-list.d.ts +4 -11
- package/dist/src/render/blocks/collection-list.d.ts.map +1 -1
- package/dist/src/render/blocks/collection-list.js +96 -96
- package/dist/src/render/blocks/collection-list.js.map +1 -1
- package/dist/src/render/blocks/cta.d.ts +7 -4
- package/dist/src/render/blocks/cta.d.ts.map +1 -1
- package/dist/src/render/blocks/cta.js +9 -7
- package/dist/src/render/blocks/cta.js.map +1 -1
- package/dist/src/render/blocks/embed.d.ts.map +1 -1
- package/dist/src/render/blocks/embed.js +30 -28
- package/dist/src/render/blocks/embed.js.map +1 -1
- package/dist/src/render/blocks/faq.d.ts +13 -1
- package/dist/src/render/blocks/faq.d.ts.map +1 -1
- package/dist/src/render/blocks/faq.js +15 -11
- package/dist/src/render/blocks/faq.js.map +1 -1
- package/dist/src/render/blocks/feature-grid.d.ts.map +1 -1
- package/dist/src/render/blocks/feature-grid.js +43 -16
- package/dist/src/render/blocks/feature-grid.js.map +1 -1
- package/dist/src/render/blocks/gallery.d.ts +0 -7
- package/dist/src/render/blocks/gallery.d.ts.map +1 -1
- package/dist/src/render/blocks/gallery.js +28 -10
- package/dist/src/render/blocks/gallery.js.map +1 -1
- package/dist/src/render/blocks/hero.d.ts +16 -9
- package/dist/src/render/blocks/hero.d.ts.map +1 -1
- package/dist/src/render/blocks/hero.js +27 -20
- package/dist/src/render/blocks/hero.js.map +1 -1
- package/dist/src/render/blocks/logo-strip.d.ts +6 -0
- package/dist/src/render/blocks/logo-strip.d.ts.map +1 -1
- package/dist/src/render/blocks/logo-strip.js +7 -9
- package/dist/src/render/blocks/logo-strip.js.map +1 -1
- package/dist/src/render/blocks/logos.d.ts +8 -0
- package/dist/src/render/blocks/logos.d.ts.map +1 -1
- package/dist/src/render/blocks/logos.js +18 -18
- package/dist/src/render/blocks/logos.js.map +1 -1
- package/dist/src/render/blocks/media-figure.d.ts +14 -3
- package/dist/src/render/blocks/media-figure.d.ts.map +1 -1
- package/dist/src/render/blocks/media-figure.js +34 -16
- package/dist/src/render/blocks/media-figure.js.map +1 -1
- package/dist/src/render/blocks/pricing-table.d.ts.map +1 -1
- package/dist/src/render/blocks/pricing-table.js +17 -22
- package/dist/src/render/blocks/pricing-table.js.map +1 -1
- package/dist/src/render/blocks/prose.d.ts +11 -6
- package/dist/src/render/blocks/prose.d.ts.map +1 -1
- package/dist/src/render/blocks/prose.js +13 -7
- package/dist/src/render/blocks/prose.js.map +1 -1
- package/dist/src/render/blocks/quote.d.ts +6 -2
- package/dist/src/render/blocks/quote.d.ts.map +1 -1
- package/dist/src/render/blocks/quote.js +14 -12
- package/dist/src/render/blocks/quote.js.map +1 -1
- package/dist/src/render/blocks/stat-counter.d.ts +6 -0
- package/dist/src/render/blocks/stat-counter.d.ts.map +1 -1
- package/dist/src/render/blocks/stat-counter.js +7 -10
- package/dist/src/render/blocks/stat-counter.js.map +1 -1
- package/dist/src/render/blocks/stats.d.ts +7 -0
- package/dist/src/render/blocks/stats.d.ts.map +1 -1
- package/dist/src/render/blocks/stats.js +8 -16
- package/dist/src/render/blocks/stats.js.map +1 -1
- package/dist/src/render/blocks/testimonial.d.ts +5 -11
- package/dist/src/render/blocks/testimonial.d.ts.map +1 -1
- package/dist/src/render/blocks/testimonial.js +9 -17
- package/dist/src/render/blocks/testimonial.js.map +1 -1
- package/dist/src/render/chrome.d.ts.map +1 -1
- package/dist/src/render/chrome.js +101 -84
- package/dist/src/render/chrome.js.map +1 -1
- package/dist/src/render/dish.d.ts +13 -0
- package/dist/src/render/dish.d.ts.map +1 -0
- package/dist/src/render/dish.js +84 -0
- package/dist/src/render/dish.js.map +1 -0
- package/dist/src/render/layout.d.ts +23 -0
- package/dist/src/render/layout.d.ts.map +1 -0
- package/dist/src/render/layout.js +33 -0
- package/dist/src/render/layout.js.map +1 -0
- package/dist/src/render/menu.d.ts +53 -0
- package/dist/src/render/menu.d.ts.map +1 -0
- package/dist/src/render/menu.js +99 -0
- package/dist/src/render/menu.js.map +1 -0
- package/dist/src/render/render-block.d.ts +19 -0
- package/dist/src/render/render-block.d.ts.map +1 -1
- package/dist/src/render/render-block.js +50 -39
- package/dist/src/render/render-block.js.map +1 -1
- package/dist/src/render/strings.d.ts +15 -0
- package/dist/src/render/strings.d.ts.map +1 -0
- package/dist/src/render/strings.js +23 -0
- package/dist/src/render/strings.js.map +1 -0
- package/dist/src/render/term-archive.d.ts +10 -4
- package/dist/src/render/term-archive.d.ts.map +1 -1
- package/dist/src/render/term-archive.js +25 -16
- package/dist/src/render/term-archive.js.map +1 -1
- package/dist/src/render/widget-areas.d.ts +13 -0
- package/dist/src/render/widget-areas.d.ts.map +1 -0
- package/dist/src/render/widget-areas.js +20 -0
- package/dist/src/render/widget-areas.js.map +1 -0
- package/dist/theme.config.d.ts +1 -1
- package/dist/theme.config.js +2 -2
- package/dist/theme.config.js.map +1 -1
- package/package.json +5 -5
- package/src/index.ts +3 -0
- package/src/render/blocks/accordion.ts +18 -47
- package/src/render/blocks/collection-list.ts +245 -133
- package/src/render/blocks/cta.ts +20 -11
- package/src/render/blocks/embed.ts +45 -36
- package/src/render/blocks/faq.ts +32 -25
- package/src/render/blocks/feature-grid.ts +83 -33
- package/src/render/blocks/gallery.ts +39 -21
- package/src/render/blocks/hero.ts +41 -34
- package/src/render/blocks/logo-strip.ts +27 -25
- package/src/render/blocks/logos.ts +34 -43
- package/src/render/blocks/media-figure.ts +49 -24
- package/src/render/blocks/pricing-table.ts +30 -42
- package/src/render/blocks/prose.ts +18 -9
- package/src/render/blocks/quote.ts +29 -19
- package/src/render/blocks/stat-counter.ts +24 -29
- package/src/render/blocks/stats.ts +30 -40
- package/src/render/blocks/testimonial.ts +17 -22
- package/src/render/chrome.ts +113 -95
- package/src/render/dish.ts +195 -0
- package/src/render/layout.ts +64 -0
- package/src/render/menu.ts +117 -0
- package/src/render/render-block.ts +51 -40
- package/src/render/strings.ts +44 -0
- package/src/render/term-archive.ts +78 -44
- package/src/render/widget-areas.ts +23 -0
- package/src/styles/archive.css +46 -56
- package/src/styles/base.css +807 -554
- package/src/styles/blocks.css +723 -641
- package/src/styles/menu.css +482 -0
- package/src/styles/theme.css +24 -25
- package/src/styles/tokens.css +239 -225
- package/src/styles/widgets.css +853 -0
- package/tokens.json +16 -16
package/src/styles/tokens.css
CHANGED
|
@@ -1,31 +1,29 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* `@cogenta/theme-restaurant`'s design system.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* build step.
|
|
4
|
+
* The register is a contemporary bistro with serious cooking: warm cream
|
|
5
|
+
* paper and deep charcoal ink, the food and the room carrying the page, a
|
|
6
|
+
* great deal of air, and one brass kept for a few details (the small capitals
|
|
7
|
+
* that name a part of the menu, a focus ring, a selection, the underline of a
|
|
8
|
+
* link in running text). Structure is drawn with space and hairlines, never
|
|
9
|
+
* with boxes or shadows.
|
|
11
10
|
*
|
|
12
|
-
* Two
|
|
11
|
+
* Two families. Cormorant Garamond sets what a guest reads as the house's
|
|
12
|
+
* voice: the name of the place, titles, dish names, prices of set menus,
|
|
13
|
+
* quotations; light at large sizes, medium for a dish name at text size.
|
|
14
|
+
* Karla sets what a guest reads to find their way: running text,
|
|
15
|
+
* descriptions, navigation, labels and the prices of the menu.
|
|
13
16
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* and the spacing multiplier from `--cogenta-space-scale`, both emitted
|
|
18
|
-
* by `renderSkin` from the same tokens the validator checked.
|
|
17
|
+
* Contract D fixes a closed skin token set, so nothing here adds a token:
|
|
18
|
+
* every value is derived from a `--cogenta-*` property (`calc`, `color-mix`,
|
|
19
|
+
* relative colour syntax).
|
|
19
20
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* terms too — the same five departures from a mechanical `bg`/`fg` swap
|
|
27
|
-
* every built-in theme's dark mode uses, tuned to this palette's own wine
|
|
28
|
-
* accent.
|
|
21
|
+
* Two rules hold in every stylesheet of this theme:
|
|
22
|
+
*
|
|
23
|
+
* 1. No colour literal. Every colour is a skin token or a function of one.
|
|
24
|
+
* 2. No second scale. Type steps come from `--cogenta-font-size-*`; the
|
|
25
|
+
* display steps above `3xl` continue the same ratio, and fluid sizes only
|
|
26
|
+
* interpolate between steps of that one ladder.
|
|
29
27
|
*/
|
|
30
28
|
|
|
31
29
|
:where(:root) {
|
|
@@ -41,280 +39,296 @@
|
|
|
41
39
|
}
|
|
42
40
|
|
|
43
41
|
/* --------------------------------------------------------------------------
|
|
44
|
-
Space
|
|
45
|
-
this theme spends it on generous section rhythm and a very wide hero,
|
|
46
|
-
the "room to breathe" an elegant dining room's own website should have.
|
|
42
|
+
Space: one unit, one section rhythm, one twelve-column grid.
|
|
47
43
|
-------------------------------------------------------------------------- */
|
|
48
44
|
|
|
49
45
|
:where(:root) {
|
|
50
|
-
--
|
|
51
|
-
--
|
|
52
|
-
|
|
53
|
-
--
|
|
54
|
-
--
|
|
55
|
-
--
|
|
56
|
-
--
|
|
57
|
-
--
|
|
58
|
-
--
|
|
59
|
-
--
|
|
60
|
-
--
|
|
61
|
-
--
|
|
62
|
-
--
|
|
63
|
-
--
|
|
64
|
-
--
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
--
|
|
71
|
-
|
|
72
|
-
--
|
|
73
|
-
--
|
|
74
|
-
--
|
|
75
|
-
--
|
|
46
|
+
--cr-density: var(--cogenta-space-scale, 1);
|
|
47
|
+
--cr-unit: calc(var(--cogenta-space-unit) * var(--cr-density));
|
|
48
|
+
|
|
49
|
+
--cr-s1: calc(var(--cr-unit) * 1);
|
|
50
|
+
--cr-s2: calc(var(--cr-unit) * 2);
|
|
51
|
+
--cr-s3: calc(var(--cr-unit) * 3);
|
|
52
|
+
--cr-s4: calc(var(--cr-unit) * 4);
|
|
53
|
+
--cr-s5: calc(var(--cr-unit) * 5);
|
|
54
|
+
--cr-s6: calc(var(--cr-unit) * 6);
|
|
55
|
+
--cr-s8: calc(var(--cr-unit) * 8);
|
|
56
|
+
--cr-s10: calc(var(--cr-unit) * 10);
|
|
57
|
+
--cr-s12: calc(var(--cr-unit) * 12);
|
|
58
|
+
--cr-s16: calc(var(--cr-unit) * 16);
|
|
59
|
+
--cr-s20: calc(var(--cr-unit) * 20);
|
|
60
|
+
--cr-s24: calc(var(--cr-unit) * 24);
|
|
61
|
+
--cr-s32: calc(var(--cr-unit) * 32);
|
|
62
|
+
|
|
63
|
+
/* The only vertical rhythm between blocks. Every block is padded by half of
|
|
64
|
+
it above and below, so any two blocks sit one full step apart, whatever
|
|
65
|
+
their order. Generous: a dining room is mostly the space between tables. */
|
|
66
|
+
--cr-section: clamp(var(--cr-s20), 10vw, var(--cr-s32));
|
|
67
|
+
|
|
68
|
+
--cr-columns: 12;
|
|
69
|
+
--cr-gutter: clamp(var(--cr-s5), 4vw, var(--cr-s16));
|
|
70
|
+
--cr-col-gap: clamp(var(--cr-s4), 2vw, var(--cr-s8));
|
|
71
|
+
--cr-page: 86rem;
|
|
72
|
+
|
|
73
|
+
--cr-measure: 64ch;
|
|
74
|
+
--cr-header-height: 5rem;
|
|
76
75
|
}
|
|
77
76
|
|
|
78
77
|
:where([data-density="compact"]) {
|
|
79
|
-
--
|
|
78
|
+
--cr-density: 0.75;
|
|
80
79
|
}
|
|
81
80
|
|
|
82
81
|
:where([data-density="comfortable"]) {
|
|
83
|
-
--
|
|
82
|
+
--cr-density: 1;
|
|
84
83
|
}
|
|
85
84
|
|
|
86
85
|
:where([data-density="spacious"]) {
|
|
87
|
-
--
|
|
86
|
+
--cr-density: 1.25;
|
|
88
87
|
}
|
|
89
88
|
|
|
90
89
|
/* --------------------------------------------------------------------------
|
|
91
|
-
Type
|
|
92
|
-
actually loads: Cormorant Garamond for display headings (light, generous
|
|
93
|
-
letter-spacing at large sizes) and Jost for body copy and every control.
|
|
90
|
+
Type: a display serif and a text face.
|
|
94
91
|
-------------------------------------------------------------------------- */
|
|
95
92
|
|
|
96
93
|
:where(:root) {
|
|
97
|
-
--
|
|
98
|
-
--
|
|
99
|
-
--
|
|
100
|
-
|
|
101
|
-
--
|
|
102
|
-
--
|
|
103
|
-
--
|
|
104
|
-
--
|
|
105
|
-
|
|
106
|
-
--
|
|
107
|
-
--
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
--
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
--
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
94
|
+
--cr-font-display: var(--cogenta-font-serif);
|
|
95
|
+
--cr-font-text: var(--cogenta-font-sans);
|
|
96
|
+
--cr-font-code: var(--cogenta-font-mono);
|
|
97
|
+
|
|
98
|
+
--cr-text-xs: var(--cogenta-font-size-xs, 0.64rem);
|
|
99
|
+
--cr-text-sm: var(--cogenta-font-size-sm, 0.8rem);
|
|
100
|
+
--cr-text-md: var(--cogenta-font-size-md, var(--cogenta-font-base-size, 1rem));
|
|
101
|
+
--cr-text-lg: var(--cogenta-font-size-lg, 1.25rem);
|
|
102
|
+
--cr-text-xl: var(--cogenta-font-size-xl, 1.56rem);
|
|
103
|
+
--cr-text-2xl: var(--cogenta-font-size-2xl, 1.95rem);
|
|
104
|
+
--cr-text-3xl: var(--cogenta-font-size-3xl, 2.44rem);
|
|
105
|
+
/* The same ladder, continued: each step is the previous one times the
|
|
106
|
+
skin's own ratio. */
|
|
107
|
+
--cr-text-4xl: calc(var(--cr-text-3xl) * var(--cogenta-font-scale, 1.25));
|
|
108
|
+
--cr-text-5xl: calc(var(--cr-text-4xl) * var(--cogenta-font-scale, 1.25));
|
|
109
|
+
--cr-text-6xl: calc(var(--cr-text-5xl) * var(--cogenta-font-scale, 1.25));
|
|
110
|
+
--cr-text-7xl: calc(var(--cr-text-6xl) * var(--cogenta-font-scale, 1.25));
|
|
111
|
+
--cr-text-8xl: calc(var(--cr-text-7xl) * var(--cogenta-font-scale, 1.25));
|
|
112
|
+
|
|
113
|
+
/* Labels, captions and small print sit between `sm` and `md`. */
|
|
114
|
+
--cr-text-caption: calc((var(--cr-text-sm) + var(--cr-text-md)) / 2);
|
|
115
|
+
/* The reading size: `md` on a phone, a quarter step above it on a desk. */
|
|
116
|
+
--cr-text-reading: clamp(
|
|
117
|
+
var(--cr-text-md),
|
|
118
|
+
calc(0.94rem + 0.2vw),
|
|
119
|
+
calc((var(--cr-text-md) * 3 + var(--cr-text-lg)) / 4)
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
/* The display serif has a small eye: at the same nominal size it reads a
|
|
123
|
+
step smaller than the text face, so its sizes start a step higher. */
|
|
124
|
+
--cr-size-name: clamp(var(--cr-text-5xl), calc(1rem + 8.4vw), var(--cr-text-8xl));
|
|
125
|
+
--cr-size-title: clamp(var(--cr-text-4xl), calc(1rem + 4.6vw), var(--cr-text-6xl));
|
|
126
|
+
--cr-size-dish: clamp(var(--cr-text-3xl), calc(1rem + 3.2vw), var(--cr-text-5xl));
|
|
127
|
+
--cr-size-section: clamp(var(--cr-text-3xl), calc(1rem + 2.3vw), var(--cr-text-4xl));
|
|
128
|
+
--cr-size-welcome: clamp(
|
|
129
|
+
var(--cr-text-xl),
|
|
130
|
+
calc(0.9rem + 1.25vw),
|
|
131
|
+
calc((var(--cr-text-2xl) + var(--cr-text-3xl)) / 2)
|
|
132
|
+
);
|
|
133
|
+
--cr-size-quote: clamp(var(--cr-text-2xl), calc(0.95rem + 2.2vw), var(--cr-text-4xl));
|
|
134
|
+
--cr-size-lead: clamp(var(--cr-text-lg), calc(0.95rem + 0.7vw), var(--cr-text-2xl));
|
|
135
|
+
--cr-size-figure: clamp(var(--cr-text-3xl), calc(1rem + 3vw), var(--cr-text-5xl));
|
|
136
|
+
--cr-size-dish-name: clamp(var(--cr-text-lg), calc(0.95rem + 0.4vw), var(--cr-text-xl));
|
|
137
|
+
--cr-size-label: clamp(var(--cr-text-lg), calc(0.95rem + 0.35vw), var(--cr-text-xl));
|
|
138
|
+
--cr-size-nav: clamp(var(--cr-text-3xl), calc(1rem + 5vw), var(--cr-text-4xl));
|
|
139
|
+
--cr-size-wordmark: clamp(var(--cr-text-xl), calc(1rem + 0.6vw), var(--cr-text-2xl));
|
|
140
|
+
|
|
141
|
+
--cr-leading-display: 0.98;
|
|
142
|
+
--cr-leading-heading: 1.12;
|
|
143
|
+
--cr-leading-lead: 1.38;
|
|
144
|
+
--cr-leading-text: 1.65;
|
|
145
|
+
--cr-leading-ui: 1.4;
|
|
146
|
+
|
|
147
|
+
--cr-tracking-display: -0.012em;
|
|
148
|
+
--cr-tracking-heading: -0.004em;
|
|
149
|
+
/* Small capitals need a little air between them to read as a word. */
|
|
150
|
+
--cr-tracking-caps: 0.075em;
|
|
151
|
+
|
|
152
|
+
--cr-weight-light: 300;
|
|
153
|
+
--cr-weight-regular: 400;
|
|
154
|
+
--cr-weight-medium: 500;
|
|
155
|
+
--cr-weight-semibold: 600;
|
|
124
156
|
}
|
|
125
157
|
|
|
126
158
|
/* --------------------------------------------------------------------------
|
|
127
|
-
|
|
128
|
-
never a soft rounded corner. `--cg-radius-pill` is the one rounded shape,
|
|
129
|
-
reserved for the small "chef's pick"/category pills.
|
|
159
|
+
Shape and motion: square corners, motion is a colour or an underline.
|
|
130
160
|
-------------------------------------------------------------------------- */
|
|
131
161
|
|
|
132
162
|
:where(:root) {
|
|
133
|
-
--
|
|
134
|
-
--
|
|
135
|
-
--cg-radius-md: var(--cogenta-radius-md);
|
|
136
|
-
--cg-radius-lg: var(--cogenta-radius-lg);
|
|
137
|
-
--cg-radius-xl: calc(var(--cogenta-radius-lg) * 2);
|
|
138
|
-
--cg-radius-pill: 999rem;
|
|
139
|
-
}
|
|
163
|
+
--cr-radius: var(--cogenta-radius-sm);
|
|
164
|
+
--cr-radius-control: var(--cogenta-radius-sm);
|
|
140
165
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
-------------------------------------------------------------------------- */
|
|
166
|
+
--cr-duration: min(var(--cogenta-motion-duration), 150ms);
|
|
167
|
+
--cr-ease: var(--cogenta-motion-easing);
|
|
144
168
|
|
|
145
|
-
:
|
|
146
|
-
--
|
|
147
|
-
--cg-duration: var(--cogenta-motion-duration);
|
|
148
|
-
--cg-duration-slow: calc(var(--cogenta-motion-duration) * 3);
|
|
149
|
-
--cg-ease: var(--cogenta-motion-easing);
|
|
169
|
+
--cr-rule: 1px;
|
|
170
|
+
--cr-rule-strong: 2px;
|
|
150
171
|
}
|
|
151
172
|
|
|
152
173
|
/* --------------------------------------------------------------------------
|
|
153
|
-
Colour
|
|
174
|
+
Colour: cream, charcoal, and one brass.
|
|
154
175
|
--------------------------------------------------------------------------
|
|
155
176
|
|
|
156
|
-
The block
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
177
|
+
The first block declares the light palette plainly; the scheme-aware
|
|
178
|
+
values follow behind a feature query, so a browser that cannot parse
|
|
179
|
+
`light-dark()` still gets a complete light palette.
|
|
180
|
+
|
|
181
|
+
Light is the default look, and it follows the visitor's own setting. The
|
|
182
|
+
references for this register (a printed menu card, a lunchtime room with
|
|
183
|
+
daylight on the tablecloths) are paper, and a site that forced its evening
|
|
184
|
+
palette on a visitor whose device is set to light would fight the very
|
|
185
|
+
control in the header that lets them choose.
|
|
186
|
+
|
|
187
|
+
The brass (the skin's accent) is for details only: the small capitals that
|
|
188
|
+
name a part of the menu, a focus ring, a selection, the underline of a link
|
|
189
|
+
inside running text. It is never a fill and never a price.
|
|
190
|
+
|
|
191
|
+
The dark palette is designed, not inverted. It is the room at night:
|
|
192
|
+
|
|
193
|
+
1. The ground is a deep warm charcoal, taken from the brass's own hue at a
|
|
194
|
+
very low chroma, so it reads like dark wood panelling under low light
|
|
195
|
+
rather than a grey screen. Bands step up in lightness.
|
|
196
|
+
2. Type is the paper's own cream, lowered a step from white.
|
|
197
|
+
3. The brass is lifted to hold against the dark ground, keeping its hue.
|
|
198
|
+
4. Hairlines are a step up in lightness from the ground.
|
|
199
|
+
5. Photographs are dimmed a very little, with a brightness step, so a white
|
|
200
|
+
plate does not glare in a dark room.
|
|
201
|
+
|
|
202
|
+
The footer is a charcoal band on the paper and a step below the ground in
|
|
203
|
+
the dark, so the page always ends on its heaviest band.
|
|
204
|
+
|
|
205
|
+
Every ratio is computed from this file by `test/design-system.test.ts`,
|
|
206
|
+
in both schemes.
|
|
183
207
|
-------------------------------------------------------------------------- */
|
|
184
208
|
|
|
185
209
|
:where(:root) {
|
|
186
|
-
--
|
|
187
|
-
--
|
|
188
|
-
--
|
|
189
|
-
--
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
--
|
|
193
|
-
--
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
--
|
|
197
|
-
--cg-accent-fg: var(--cogenta-color-accent-fg);
|
|
198
|
-
--cg-accent-hover: color-mix(in oklab, var(--cogenta-color-accent) 84%, var(--cogenta-color-fg));
|
|
199
|
-
--cg-accent-soft: color-mix(in oklab, var(--cogenta-color-accent) 9%, var(--cogenta-color-bg));
|
|
200
|
-
--cg-accent-soft-fg: color-mix(
|
|
201
|
-
in oklab,
|
|
202
|
-
var(--cogenta-color-accent) 70%,
|
|
203
|
-
var(--cogenta-color-fg)
|
|
204
|
-
);
|
|
210
|
+
--cr-canvas: var(--cogenta-color-bg);
|
|
211
|
+
--cr-surface: var(--cogenta-color-muted);
|
|
212
|
+
--cr-plate: color-mix(in oklab, var(--cogenta-color-muted) 70%, var(--cogenta-color-bg));
|
|
213
|
+
--cr-mark-plate: var(--cogenta-color-bg);
|
|
214
|
+
|
|
215
|
+
--cr-ink: var(--cogenta-color-fg);
|
|
216
|
+
--cr-ink-muted: var(--cogenta-color-muted-fg);
|
|
217
|
+
--cr-ink-subtle: color-mix(in oklab, var(--cogenta-color-muted-fg) 88%, var(--cogenta-color-bg));
|
|
218
|
+
|
|
219
|
+
--cr-brass: var(--cogenta-color-accent);
|
|
220
|
+
--cr-brass-fg: var(--cogenta-color-accent-fg);
|
|
205
221
|
|
|
206
|
-
--
|
|
207
|
-
--
|
|
208
|
-
--
|
|
222
|
+
--cr-line: var(--cogenta-color-border);
|
|
223
|
+
--cr-line-strong: color-mix(in oklab, var(--cogenta-color-border) 45%, var(--cogenta-color-fg));
|
|
224
|
+
--cr-line-ink: var(--cogenta-color-fg);
|
|
209
225
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
--
|
|
226
|
+
--cr-action: var(--cogenta-color-fg);
|
|
227
|
+
--cr-action-fg: var(--cogenta-color-bg);
|
|
228
|
+
--cr-action-hover: color-mix(in oklab, var(--cogenta-color-fg) 82%, var(--cogenta-color-bg));
|
|
229
|
+
--cr-action-hover-fg: var(--cogenta-color-bg);
|
|
230
|
+
|
|
231
|
+
--cr-footer: var(--cogenta-color-fg);
|
|
232
|
+
--cr-footer-ink: var(--cogenta-color-bg);
|
|
233
|
+
--cr-footer-muted: color-mix(in oklab, var(--cogenta-color-bg) 72%, var(--cogenta-color-fg));
|
|
234
|
+
--cr-footer-line: color-mix(in oklab, var(--cogenta-color-bg) 22%, var(--cogenta-color-fg));
|
|
235
|
+
|
|
236
|
+
--cr-image-brightness: 1;
|
|
214
237
|
}
|
|
215
238
|
|
|
216
239
|
@supports (color: light-dark(currentColor, currentColor)) and
|
|
217
240
|
(color: oklch(from currentColor l c h)) {
|
|
218
241
|
:where(:root) {
|
|
219
|
-
--
|
|
220
|
-
var(--cogenta-color-bg),
|
|
221
|
-
oklch(from var(--cogenta-color-fg) 0.145 calc(c * 0.6) h)
|
|
222
|
-
);
|
|
223
|
-
--cg-surface: light-dark(
|
|
224
|
-
var(--cogenta-color-bg),
|
|
225
|
-
oklch(from var(--cogenta-color-fg) 0.145 calc(c * 0.6) h)
|
|
226
|
-
);
|
|
227
|
-
--cg-surface-raised: light-dark(
|
|
242
|
+
--cr-canvas: light-dark(
|
|
228
243
|
var(--cogenta-color-bg),
|
|
229
|
-
oklch(from var(--cogenta-color-
|
|
244
|
+
oklch(from var(--cogenta-color-accent) 0.195 calc(c * 0.09) h)
|
|
230
245
|
);
|
|
231
|
-
--
|
|
246
|
+
--cr-surface: light-dark(
|
|
232
247
|
var(--cogenta-color-muted),
|
|
233
|
-
oklch(from var(--cogenta-color-
|
|
248
|
+
oklch(from var(--cogenta-color-accent) 0.235 calc(c * 0.1) h)
|
|
234
249
|
);
|
|
235
|
-
--
|
|
236
|
-
color-mix(in oklab, var(--cogenta-color-
|
|
237
|
-
oklch(from var(--cogenta-color-accent) 0.
|
|
250
|
+
--cr-plate: light-dark(
|
|
251
|
+
color-mix(in oklab, var(--cogenta-color-muted) 70%, var(--cogenta-color-bg)),
|
|
252
|
+
oklch(from var(--cogenta-color-accent) 0.25 calc(c * 0.09) h)
|
|
238
253
|
);
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
var(--cogenta-color-
|
|
242
|
-
oklch(from var(--cogenta-color-accent) 0.94 0.012 h)
|
|
254
|
+
--cr-mark-plate: light-dark(
|
|
255
|
+
var(--cogenta-color-bg),
|
|
256
|
+
oklch(from var(--cogenta-color-bg) 0.9 c h)
|
|
243
257
|
);
|
|
244
|
-
|
|
258
|
+
|
|
259
|
+
--cr-ink: light-dark(var(--cogenta-color-fg), oklch(from var(--cogenta-color-bg) 0.925 c h));
|
|
260
|
+
--cr-ink-muted: light-dark(
|
|
245
261
|
var(--cogenta-color-muted-fg),
|
|
246
|
-
oklch(from var(--cogenta-color-
|
|
262
|
+
oklch(from var(--cogenta-color-muted) 0.78 c h)
|
|
247
263
|
);
|
|
248
|
-
--
|
|
249
|
-
color-mix(in oklab, var(--cogenta-color-muted-fg)
|
|
250
|
-
oklch(from var(--cogenta-color-
|
|
264
|
+
--cr-ink-subtle: light-dark(
|
|
265
|
+
color-mix(in oklab, var(--cogenta-color-muted-fg) 88%, var(--cogenta-color-bg)),
|
|
266
|
+
oklch(from var(--cogenta-color-muted) 0.72 c h)
|
|
251
267
|
);
|
|
252
268
|
|
|
253
|
-
--
|
|
269
|
+
--cr-brass: light-dark(
|
|
254
270
|
var(--cogenta-color-accent),
|
|
255
|
-
oklch(from var(--cogenta-color-accent) 0.
|
|
271
|
+
oklch(from var(--cogenta-color-accent) 0.78 calc(c * 0.8) h)
|
|
256
272
|
);
|
|
257
|
-
--
|
|
273
|
+
--cr-brass-fg: light-dark(
|
|
258
274
|
var(--cogenta-color-accent-fg),
|
|
259
|
-
oklch(from var(--cogenta-color-accent) 0.
|
|
275
|
+
oklch(from var(--cogenta-color-accent) 0.195 calc(c * 0.09) h)
|
|
260
276
|
);
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
277
|
+
|
|
278
|
+
--cr-line: light-dark(
|
|
279
|
+
var(--cogenta-color-border),
|
|
280
|
+
oklch(from var(--cogenta-color-accent) 0.33 calc(c * 0.09) h)
|
|
264
281
|
);
|
|
265
|
-
--
|
|
266
|
-
color-mix(in oklab, var(--cogenta-color-
|
|
267
|
-
oklch(from var(--cogenta-color-accent) 0.
|
|
282
|
+
--cr-line-strong: light-dark(
|
|
283
|
+
color-mix(in oklab, var(--cogenta-color-border) 45%, var(--cogenta-color-fg)),
|
|
284
|
+
oklch(from var(--cogenta-color-accent) 0.52 calc(c * 0.08) h)
|
|
268
285
|
);
|
|
269
|
-
--
|
|
270
|
-
|
|
271
|
-
oklch(from var(--cogenta-color-
|
|
286
|
+
--cr-line-ink: light-dark(
|
|
287
|
+
var(--cogenta-color-fg),
|
|
288
|
+
oklch(from var(--cogenta-color-bg) 0.925 c h)
|
|
272
289
|
);
|
|
273
290
|
|
|
274
|
-
--
|
|
275
|
-
|
|
276
|
-
|
|
291
|
+
--cr-action: light-dark(var(--cogenta-color-fg), oklch(from var(--cogenta-color-bg) 0.925 c h));
|
|
292
|
+
--cr-action-fg: light-dark(
|
|
293
|
+
var(--cogenta-color-bg),
|
|
294
|
+
oklch(from var(--cogenta-color-accent) 0.195 calc(c * 0.09) h)
|
|
277
295
|
);
|
|
278
|
-
--
|
|
279
|
-
color-mix(in oklab, var(--cogenta-color-
|
|
280
|
-
oklch(from var(--cogenta-color-
|
|
296
|
+
--cr-action-hover: light-dark(
|
|
297
|
+
color-mix(in oklab, var(--cogenta-color-fg) 82%, var(--cogenta-color-bg)),
|
|
298
|
+
oklch(from var(--cogenta-color-bg) 0.8 c h)
|
|
281
299
|
);
|
|
282
|
-
--
|
|
283
|
-
|
|
284
|
-
oklch(from var(--cogenta-color-accent) 0.
|
|
300
|
+
--cr-action-hover-fg: light-dark(
|
|
301
|
+
var(--cogenta-color-bg),
|
|
302
|
+
oklch(from var(--cogenta-color-accent) 0.195 calc(c * 0.09) h)
|
|
285
303
|
);
|
|
286
304
|
|
|
287
|
-
--
|
|
288
|
-
|
|
289
|
-
|
|
305
|
+
--cr-footer: light-dark(
|
|
306
|
+
var(--cogenta-color-fg),
|
|
307
|
+
oklch(from var(--cogenta-color-accent) 0.155 calc(c * 0.08) h)
|
|
308
|
+
);
|
|
309
|
+
--cr-footer-ink: light-dark(
|
|
310
|
+
var(--cogenta-color-bg),
|
|
311
|
+
oklch(from var(--cogenta-color-bg) 0.925 c h)
|
|
312
|
+
);
|
|
313
|
+
--cr-footer-muted: light-dark(
|
|
314
|
+
color-mix(in oklab, var(--cogenta-color-bg) 72%, var(--cogenta-color-fg)),
|
|
315
|
+
oklch(from var(--cogenta-color-muted) 0.76 c h)
|
|
316
|
+
);
|
|
317
|
+
--cr-footer-line: light-dark(
|
|
318
|
+
color-mix(in oklab, var(--cogenta-color-bg) 22%, var(--cogenta-color-fg)),
|
|
319
|
+
oklch(from var(--cogenta-color-accent) 0.3 calc(c * 0.09) h)
|
|
290
320
|
);
|
|
291
321
|
}
|
|
292
322
|
}
|
|
293
323
|
|
|
294
|
-
/*
|
|
295
|
-
|
|
296
|
-
spent only on hover, never on a resting surface.
|
|
297
|
-
-------------------------------------------------------------------------- */
|
|
298
|
-
|
|
299
|
-
:where(:root) {
|
|
300
|
-
--cg-ring: inset 0 0 0 1px var(--cg-line);
|
|
301
|
-
--cg-ring-accent: inset 0 0 0 1px var(--cg-accent);
|
|
302
|
-
--cg-ring-strong: inset 0 0 0 1px var(--cg-line-strong);
|
|
303
|
-
|
|
304
|
-
--cg-elevation-0: none;
|
|
305
|
-
--cg-elevation-1: var(--cg-ring);
|
|
306
|
-
--cg-elevation-2: var(--cogenta-shadow-sm), var(--cg-ring);
|
|
307
|
-
--cg-elevation-3: var(--cogenta-shadow-md), var(--cg-ring);
|
|
308
|
-
}
|
|
309
|
-
|
|
324
|
+
/* A photograph on the dark ground is dimmed a very little, so a white plate
|
|
325
|
+
does not glare in a dark room. A brightness step, never a blur. */
|
|
310
326
|
@media (prefers-color-scheme: dark) {
|
|
311
327
|
:where(:root:not([data-theme="light"])) {
|
|
312
|
-
--
|
|
313
|
-
--cg-elevation-3: var(--cg-ring-strong), var(--cogenta-shadow-md);
|
|
328
|
+
--cr-image-brightness: 0.92;
|
|
314
329
|
}
|
|
315
330
|
}
|
|
316
331
|
|
|
317
332
|
:where(:root[data-theme="dark"]) {
|
|
318
|
-
--
|
|
319
|
-
--cg-elevation-3: var(--cg-ring-strong), var(--cogenta-shadow-md);
|
|
333
|
+
--cr-image-brightness: 0.92;
|
|
320
334
|
}
|