@cogenta/theme-magazine 1.1.2

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 (117) hide show
  1. package/LICENSE +373 -0
  2. package/dist/src/index.d.ts +21 -0
  3. package/dist/src/index.d.ts.map +1 -0
  4. package/dist/src/index.js +21 -0
  5. package/dist/src/index.js.map +1 -0
  6. package/dist/src/render/blocks/accordion.d.ts +4 -0
  7. package/dist/src/render/blocks/accordion.d.ts.map +1 -0
  8. package/dist/src/render/blocks/accordion.js +20 -0
  9. package/dist/src/render/blocks/accordion.js.map +1 -0
  10. package/dist/src/render/blocks/collection-list.d.ts +5 -0
  11. package/dist/src/render/blocks/collection-list.d.ts.map +1 -0
  12. package/dist/src/render/blocks/collection-list.js +134 -0
  13. package/dist/src/render/blocks/collection-list.js.map +1 -0
  14. package/dist/src/render/blocks/cta.d.ts +10 -0
  15. package/dist/src/render/blocks/cta.d.ts.map +1 -0
  16. package/dist/src/render/blocks/cta.js +16 -0
  17. package/dist/src/render/blocks/cta.js.map +1 -0
  18. package/dist/src/render/blocks/embed.d.ts +4 -0
  19. package/dist/src/render/blocks/embed.d.ts.map +1 -0
  20. package/dist/src/render/blocks/embed.js +76 -0
  21. package/dist/src/render/blocks/embed.js.map +1 -0
  22. package/dist/src/render/blocks/faq.d.ts +4 -0
  23. package/dist/src/render/blocks/faq.d.ts.map +1 -0
  24. package/dist/src/render/blocks/faq.js +18 -0
  25. package/dist/src/render/blocks/faq.js.map +1 -0
  26. package/dist/src/render/blocks/feature-grid.d.ts +4 -0
  27. package/dist/src/render/blocks/feature-grid.d.ts.map +1 -0
  28. package/dist/src/render/blocks/feature-grid.js +27 -0
  29. package/dist/src/render/blocks/feature-grid.js.map +1 -0
  30. package/dist/src/render/blocks/gallery.d.ts +13 -0
  31. package/dist/src/render/blocks/gallery.d.ts.map +1 -0
  32. package/dist/src/render/blocks/gallery.js +26 -0
  33. package/dist/src/render/blocks/gallery.js.map +1 -0
  34. package/dist/src/render/blocks/hero.d.ts +11 -0
  35. package/dist/src/render/blocks/hero.d.ts.map +1 -0
  36. package/dist/src/render/blocks/hero.js +26 -0
  37. package/dist/src/render/blocks/hero.js.map +1 -0
  38. package/dist/src/render/blocks/logo-strip.d.ts +4 -0
  39. package/dist/src/render/blocks/logo-strip.d.ts.map +1 -0
  40. package/dist/src/render/blocks/logo-strip.js +20 -0
  41. package/dist/src/render/blocks/logo-strip.js.map +1 -0
  42. package/dist/src/render/blocks/logos.d.ts +4 -0
  43. package/dist/src/render/blocks/logos.d.ts.map +1 -0
  44. package/dist/src/render/blocks/logos.js +27 -0
  45. package/dist/src/render/blocks/logos.js.map +1 -0
  46. package/dist/src/render/blocks/media-figure.d.ts +15 -0
  47. package/dist/src/render/blocks/media-figure.d.ts.map +1 -0
  48. package/dist/src/render/blocks/media-figure.js +32 -0
  49. package/dist/src/render/blocks/media-figure.js.map +1 -0
  50. package/dist/src/render/blocks/pricing-table.d.ts +4 -0
  51. package/dist/src/render/blocks/pricing-table.d.ts.map +1 -0
  52. package/dist/src/render/blocks/pricing-table.js +32 -0
  53. package/dist/src/render/blocks/pricing-table.js.map +1 -0
  54. package/dist/src/render/blocks/prose.d.ts +16 -0
  55. package/dist/src/render/blocks/prose.d.ts.map +1 -0
  56. package/dist/src/render/blocks/prose.js +17 -0
  57. package/dist/src/render/blocks/prose.js.map +1 -0
  58. package/dist/src/render/blocks/quote.d.ts +16 -0
  59. package/dist/src/render/blocks/quote.d.ts.map +1 -0
  60. package/dist/src/render/blocks/quote.js +29 -0
  61. package/dist/src/render/blocks/quote.js.map +1 -0
  62. package/dist/src/render/blocks/stat-counter.d.ts +4 -0
  63. package/dist/src/render/blocks/stat-counter.d.ts.map +1 -0
  64. package/dist/src/render/blocks/stat-counter.js +17 -0
  65. package/dist/src/render/blocks/stat-counter.js.map +1 -0
  66. package/dist/src/render/blocks/stats.d.ts +4 -0
  67. package/dist/src/render/blocks/stats.d.ts.map +1 -0
  68. package/dist/src/render/blocks/stats.js +19 -0
  69. package/dist/src/render/blocks/stats.js.map +1 -0
  70. package/dist/src/render/blocks/testimonial.d.ts +19 -0
  71. package/dist/src/render/blocks/testimonial.d.ts.map +1 -0
  72. package/dist/src/render/blocks/testimonial.js +28 -0
  73. package/dist/src/render/blocks/testimonial.js.map +1 -0
  74. package/dist/src/render/chrome.d.ts +3 -0
  75. package/dist/src/render/chrome.d.ts.map +1 -0
  76. package/dist/src/render/chrome.js +136 -0
  77. package/dist/src/render/chrome.js.map +1 -0
  78. package/dist/src/render/render-block.d.ts +21 -0
  79. package/dist/src/render/render-block.d.ts.map +1 -0
  80. package/dist/src/render/render-block.js +104 -0
  81. package/dist/src/render/render-block.js.map +1 -0
  82. package/dist/src/render/term-archive.d.ts +13 -0
  83. package/dist/src/render/term-archive.d.ts.map +1 -0
  84. package/dist/src/render/term-archive.js +35 -0
  85. package/dist/src/render/term-archive.js.map +1 -0
  86. package/dist/theme.config.d.ts +12 -0
  87. package/dist/theme.config.d.ts.map +1 -0
  88. package/dist/theme.config.js +42 -0
  89. package/dist/theme.config.js.map +1 -0
  90. package/package.json +57 -0
  91. package/src/index.ts +20 -0
  92. package/src/render/blocks/accordion.ts +51 -0
  93. package/src/render/blocks/collection-list.ts +286 -0
  94. package/src/render/blocks/cta.ts +33 -0
  95. package/src/render/blocks/embed.ts +99 -0
  96. package/src/render/blocks/faq.ts +58 -0
  97. package/src/render/blocks/feature-grid.ts +61 -0
  98. package/src/render/blocks/gallery.ts +46 -0
  99. package/src/render/blocks/hero.ts +54 -0
  100. package/src/render/blocks/logo-strip.ts +35 -0
  101. package/src/render/blocks/logos.ts +57 -0
  102. package/src/render/blocks/media-figure.ts +43 -0
  103. package/src/render/blocks/pricing-table.ts +76 -0
  104. package/src/render/blocks/prose.ts +22 -0
  105. package/src/render/blocks/quote.ts +46 -0
  106. package/src/render/blocks/stat-counter.ts +39 -0
  107. package/src/render/blocks/stats.ts +46 -0
  108. package/src/render/blocks/testimonial.ts +44 -0
  109. package/src/render/chrome.ts +162 -0
  110. package/src/render/render-block.ts +137 -0
  111. package/src/render/term-archive.ts +87 -0
  112. package/src/styles/archive.css +40 -0
  113. package/src/styles/base.css +1037 -0
  114. package/src/styles/blocks.css +1335 -0
  115. package/src/styles/theme.css +18 -0
  116. package/src/styles/tokens.css +308 -0
  117. package/tokens.json +36 -0
@@ -0,0 +1,18 @@
1
+ /*
2
+ * The magazine theme's stylesheet — the entry point, and nothing else.
3
+ *
4
+ * tokens.css the design system (and the Google Fonts `@import`),
5
+ * derived entirely from the skin's `--cogenta-*` properties
6
+ * base.css document, accessibility floor, masthead/colophon, actions
7
+ * blocks.css the twelve vocabulary blocks
8
+ *
9
+ * Not one colour, font, radius, duration or shadow is written literally in
10
+ * any of the three: every value comes from a `--cogenta-<group>-<name>`
11
+ * property produced from the skin's tokens, or from a `--cg-*` property
12
+ * composed from those.
13
+ */
14
+
15
+ @import "./tokens.css";
16
+ @import "./base.css";
17
+ @import "./blocks.css";
18
+ @import "./archive.css";
@@ -0,0 +1,308 @@
1
+ /*
2
+ * The magazine theme's design system.
3
+ *
4
+ * Contract D fixes a *closed* skin token set — seven colours, five type
5
+ * tokens, two spacing tokens, three radii, three motion tokens, two shadows
6
+ * — and refuses any skin that adds one. Nothing below adds to that set:
7
+ * every value here is *derived* from `--cogenta-*` by composition (`calc`,
8
+ * `color-mix`, relative colour syntax), so a skin swap rewrites the
9
+ * generated `--cogenta-*` sheet and this whole system follows with no build
10
+ * step.
11
+ *
12
+ * Two rules hold everywhere in this file and the two that import it:
13
+ *
14
+ * 1. **No colour literal.** Not one hex, `rgb()`, `hsl()` or bare `oklch()`.
15
+ * Every colour is either a skin token or a function *of* a skin token.
16
+ * `test/isolation.test.ts` enforces this on the source.
17
+ * 2. **No second scale.** The type steps come from `--cogenta-font-size-*`
18
+ * and the spacing multiplier from `--cogenta-space-scale`, both emitted
19
+ * by `renderSkin` from the same tokens the validator checked.
20
+ *
21
+ * The two Google Fonts loaded below are the one deliberate exception to "no
22
+ * external dependency": `fonts.googleapis.com` is the one host every
23
+ * Cogenta theme is allowed to reach for a stylesheet, and both faces carry a
24
+ * full system fallback stack in `tokens.json` — a browser that cannot reach
25
+ * Google Fonts (or a site that strips the `@import` for a stricter CSP)
26
+ * still gets Georgia/system-ui, never an unstyled page.
27
+ */
28
+
29
+ @import url("https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;0,9..144,600;0,9..144,700;0,9..144,900;1,9..144,500;1,9..144,600&family=Public+Sans:wght@400;500;600;700&display=swap");
30
+
31
+ :where(:root) {
32
+ color-scheme: light dark;
33
+ }
34
+
35
+ /* An explicit choice wins over the OS preference. No script ships with this
36
+ theme to set it; the attribute is the hook a site (or the admin) can flip. */
37
+ :where(:root[data-theme="dark"]) {
38
+ color-scheme: dark;
39
+ }
40
+
41
+ :where(:root[data-theme="light"]) {
42
+ color-scheme: light;
43
+ }
44
+
45
+ /* --------------------------------------------------------------------------
46
+ Space — one multiplier, one unit, a scale of multiples
47
+ -------------------------------------------------------------------------- */
48
+
49
+ :where(:root) {
50
+ --cg-density: var(--cogenta-space-scale, 1);
51
+ --cg-unit: calc(var(--cogenta-space-unit) * var(--cg-density));
52
+
53
+ --cg-s1: calc(var(--cg-unit) * 1);
54
+ --cg-s2: calc(var(--cg-unit) * 2);
55
+ --cg-s3: calc(var(--cg-unit) * 3);
56
+ --cg-s4: calc(var(--cg-unit) * 4);
57
+ --cg-s5: calc(var(--cg-unit) * 5);
58
+ --cg-s6: calc(var(--cg-unit) * 6);
59
+ --cg-s8: calc(var(--cg-unit) * 8);
60
+ --cg-s10: calc(var(--cg-unit) * 10);
61
+ --cg-s12: calc(var(--cg-unit) * 12);
62
+ --cg-s16: calc(var(--cg-unit) * 16);
63
+ --cg-s20: calc(var(--cg-unit) * 20);
64
+ --cg-s24: calc(var(--cg-unit) * 24);
65
+
66
+ --cg-gutter: var(--cg-s5);
67
+ --cg-gap-tight: var(--cg-s2);
68
+ --cg-gap: var(--cg-s4);
69
+ --cg-gap-loose: var(--cg-s8);
70
+ --cg-section-y: var(--cg-s16);
71
+ --cg-rule-gap: var(--cg-s6);
72
+
73
+ --cg-measure: 66ch;
74
+ --cg-measure-narrow: 46ch;
75
+ --cg-page: 76rem;
76
+ --cg-page-narrow: 48rem;
77
+ }
78
+
79
+ :where([data-density="compact"]) {
80
+ --cg-density: 0.75;
81
+ }
82
+
83
+ :where([data-density="comfortable"]) {
84
+ --cg-density: 1;
85
+ }
86
+
87
+ :where([data-density="spacious"]) {
88
+ --cg-density: 1.25;
89
+ }
90
+
91
+ /* --------------------------------------------------------------------------
92
+ Type — the skin's scale, named; the editorial rhythm the scale does not
93
+ carry. Two families: a characterful display serif for headlines and pull
94
+ quotes, a quiet sans for running text, bylines and dates — the split the
95
+ masthead itself uses on the front page.
96
+ -------------------------------------------------------------------------- */
97
+
98
+ :where(:root) {
99
+ --cg-text-xs: var(--cogenta-font-size-xs, 0.64rem);
100
+ --cg-text-sm: var(--cogenta-font-size-sm, 0.8rem);
101
+ --cg-text-md: var(--cogenta-font-size-md, var(--cogenta-font-base-size, 1rem));
102
+ --cg-text-lg: var(--cogenta-font-size-lg, 1.25rem);
103
+ --cg-text-xl: var(--cogenta-font-size-xl, 1.5625rem);
104
+ --cg-text-2xl: var(--cogenta-font-size-2xl, 1.9531rem);
105
+ --cg-text-3xl: var(--cogenta-font-size-3xl, 2.4414rem);
106
+
107
+ --cg-leading-tight: 1.02;
108
+ --cg-leading-snug: 1.22;
109
+ --cg-leading-normal: 1.5;
110
+ --cg-leading-relaxed: 1.72;
111
+
112
+ /* Display serif reads best tightened; the sans used for metadata reads
113
+ best opened up into small-caps-style spacing. */
114
+ --cg-tracking-tight: -0.018em;
115
+ --cg-tracking-snug: -0.008em;
116
+ --cg-tracking-normal: 0em;
117
+ --cg-tracking-wide: 0.09em;
118
+ --cg-tracking-wider: 0.14em;
119
+
120
+ --cg-weight-regular: 400;
121
+ --cg-weight-medium: 500;
122
+ --cg-weight-semibold: 600;
123
+ --cg-weight-bold: 700;
124
+ --cg-weight-black: 900;
125
+ }
126
+
127
+ /* --------------------------------------------------------------------------
128
+ Radius — the skin's three, kept small: a print page has square corners,
129
+ and this theme's own `tokens.json` already ships tight radii, so nothing
130
+ here inflates them into the pill-shaped, card-heavy vocabulary a generic
131
+ admin dashboard uses.
132
+ -------------------------------------------------------------------------- */
133
+
134
+ :where(:root) {
135
+ --cg-radius-sm: var(--cogenta-radius-sm);
136
+ --cg-radius-md: var(--cogenta-radius-md);
137
+ --cg-radius-lg: var(--cogenta-radius-lg);
138
+ }
139
+
140
+ /* --------------------------------------------------------------------------
141
+ Motion
142
+ -------------------------------------------------------------------------- */
143
+
144
+ :where(:root) {
145
+ --cg-duration-fast: calc(var(--cogenta-motion-duration) * 0.6);
146
+ --cg-duration: var(--cogenta-motion-duration);
147
+ --cg-duration-slow: calc(var(--cogenta-motion-duration) * 2.4);
148
+ --cg-ease: var(--cogenta-motion-easing);
149
+ }
150
+
151
+ /* --------------------------------------------------------------------------
152
+ Colour — paper, ink, rule, accent. One palette per scheme, both derived
153
+ from the same seven skin tokens.
154
+
155
+ The block below declares the **light** palette in plain terms; the
156
+ scheme-aware values live in the `@supports` block after it, and only
157
+ there — the same split `theme-canonical` uses and for the same reason: a
158
+ browser that does not know `light-dark()` still stores the declaration
159
+ and only fails when the value is *used*, so a feature query is the only
160
+ construct that actually falls back, written with `currentColor` so it
161
+ needs no colour literal of its own.
162
+
163
+ **This dark mode is designed for reading at night, not inverted.** Five
164
+ decisions, each independently checked by `test/design-system.test.ts`
165
+ against the real stylesheet:
166
+
167
+ 1. *Elevation runs upward in lightness*, not via shadow: on black ink,
168
+ shadow reads as nothing, so `--cg-paper-panel` (a boxed note, a pull
169
+ quote's rule background) is the darkest surface, `--cg-paper` the
170
+ canvas, `--cg-paper-raised` (a card, a lead story) the lightest of the
171
+ three — the opposite of the light scheme, where the three are the same
172
+ sheet of paper and a real drop shadow does the separating.
173
+ 2. *The accent is lifted*, from an oklch lightness around 0.49 in daylight
174
+ to about 0.72 at night — a brick red that reads correctly on cream
175
+ goes muddy on near-black ink, so night mode pushes it toward a warm
176
+ ember rather than keeping the daylight value.
177
+ 3. *Its foreground flips to ink*, because a light ember needs a dark label
178
+ the way the daylight accent needed a cream one — the clearest single
179
+ break from a mechanical `bg`/`fg` swap.
180
+ 4. *Text stays off pure white* — a warm, slightly toned paper-white, not
181
+ `#fff`, which halates against a near-black canvas.
182
+ 5. *Rules become light overlays* — a rule one step **up** from the
183
+ surface it sits on, never a step down, or it disappears.
184
+ -------------------------------------------------------------------------- */
185
+
186
+ :where(:root) {
187
+ --cg-paper: var(--cogenta-color-bg);
188
+ --cg-paper-raised: var(--cogenta-color-bg);
189
+ --cg-paper-panel: var(--cogenta-color-muted);
190
+ --cg-paper-tint: color-mix(in oklab, var(--cogenta-color-accent) 9%, var(--cogenta-color-bg));
191
+
192
+ --cg-ink: var(--cogenta-color-fg);
193
+ --cg-ink-soft: var(--cogenta-color-muted-fg);
194
+ --cg-ink-faint: color-mix(in oklab, var(--cogenta-color-muted-fg) 92%, var(--cogenta-color-bg));
195
+
196
+ --cg-accent: var(--cogenta-color-accent);
197
+ --cg-accent-ink: 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-tint: color-mix(in oklab, var(--cogenta-color-accent) 12%, var(--cogenta-color-bg));
200
+ --cg-accent-tint-ink: color-mix(
201
+ in oklab,
202
+ var(--cogenta-color-accent) 70%,
203
+ var(--cogenta-color-fg)
204
+ );
205
+
206
+ --cg-rule: var(--cogenta-color-border);
207
+ --cg-rule-soft: color-mix(in oklab, var(--cogenta-color-border) 50%, var(--cogenta-color-bg));
208
+ --cg-rule-heavy: color-mix(in oklab, var(--cogenta-color-border) 45%, var(--cogenta-color-fg));
209
+
210
+ --cg-scrim: color-mix(in oklab, var(--cogenta-color-fg) 60%, transparent);
211
+ }
212
+
213
+ @supports (color: light-dark(currentColor, currentColor)) and
214
+ (color: oklch(from currentColor l c h)) {
215
+ :where(:root) {
216
+ --cg-paper: light-dark(
217
+ var(--cogenta-color-bg),
218
+ oklch(from var(--cogenta-color-fg) 0.15 calc(c * 0.65) h)
219
+ );
220
+ --cg-paper-raised: light-dark(
221
+ var(--cogenta-color-bg),
222
+ oklch(from var(--cogenta-color-fg) 0.225 calc(c * 0.55) h)
223
+ );
224
+ --cg-paper-panel: light-dark(
225
+ var(--cogenta-color-muted),
226
+ oklch(from var(--cogenta-color-fg) 0.115 calc(c * 0.75) h)
227
+ );
228
+ --cg-paper-tint: light-dark(
229
+ color-mix(in oklab, var(--cogenta-color-accent) 9%, var(--cogenta-color-bg)),
230
+ oklch(from var(--cogenta-color-accent) 0.26 calc(c * 0.45) h)
231
+ );
232
+
233
+ --cg-ink: light-dark(
234
+ var(--cogenta-color-fg),
235
+ oklch(from var(--cogenta-color-accent) 0.92 0.014 h)
236
+ );
237
+ --cg-ink-soft: light-dark(
238
+ var(--cogenta-color-muted-fg),
239
+ oklch(from var(--cogenta-color-accent) 0.75 0.02 h)
240
+ );
241
+ --cg-ink-faint: light-dark(
242
+ color-mix(in oklab, var(--cogenta-color-muted-fg) 92%, var(--cogenta-color-bg)),
243
+ oklch(from var(--cogenta-color-accent) 0.63 0.018 h)
244
+ );
245
+
246
+ --cg-accent: light-dark(
247
+ var(--cogenta-color-accent),
248
+ oklch(from var(--cogenta-color-accent) 0.72 calc(c * 0.9) h)
249
+ );
250
+ --cg-accent-ink: light-dark(
251
+ var(--cogenta-color-accent-fg),
252
+ oklch(from var(--cogenta-color-accent) 0.17 calc(c * 0.5) h)
253
+ );
254
+ --cg-accent-hover: light-dark(
255
+ color-mix(in oklab, var(--cogenta-color-accent) 84%, var(--cogenta-color-fg)),
256
+ oklch(from var(--cogenta-color-accent) 0.8 calc(c * 0.85) h)
257
+ );
258
+ --cg-accent-tint: light-dark(
259
+ color-mix(in oklab, var(--cogenta-color-accent) 12%, var(--cogenta-color-bg)),
260
+ oklch(from var(--cogenta-color-accent) 0.29 calc(c * 0.5) h)
261
+ );
262
+ --cg-accent-tint-ink: light-dark(
263
+ color-mix(in oklab, var(--cogenta-color-accent) 70%, var(--cogenta-color-fg)),
264
+ oklch(from var(--cogenta-color-accent) 0.88 calc(c * 0.4) h)
265
+ );
266
+
267
+ --cg-rule: light-dark(
268
+ var(--cogenta-color-border),
269
+ oklch(from var(--cogenta-color-accent) 0.32 calc(c * 0.2) h)
270
+ );
271
+ --cg-rule-soft: light-dark(
272
+ color-mix(in oklab, var(--cogenta-color-border) 50%, var(--cogenta-color-bg)),
273
+ oklch(from var(--cogenta-color-accent) 0.25 calc(c * 0.18) h)
274
+ );
275
+ --cg-rule-heavy: light-dark(
276
+ color-mix(in oklab, var(--cogenta-color-border) 45%, var(--cogenta-color-fg)),
277
+ oklch(from var(--cogenta-color-accent) 0.56 calc(c * 0.22) h)
278
+ );
279
+ }
280
+ }
281
+
282
+ /* --------------------------------------------------------------------------
283
+ Elevation — a real drop shadow in daylight, a hairline rule at night
284
+ -------------------------------------------------------------------------- */
285
+
286
+ :where(:root) {
287
+ --cg-ring: inset 0 0 0 1px var(--cg-rule);
288
+ --cg-ring-accent: inset 0 0 0 1px var(--cg-accent);
289
+
290
+ --cg-elevation-0: none;
291
+ --cg-elevation-1: var(--cogenta-shadow-sm);
292
+ --cg-elevation-2: var(--cogenta-shadow-md);
293
+ --cg-elevation-3: var(--cogenta-shadow-md), var(--cogenta-shadow-sm);
294
+ }
295
+
296
+ @media (prefers-color-scheme: dark) {
297
+ :where(:root:not([data-theme="light"])) {
298
+ --cg-elevation-1: var(--cg-ring);
299
+ --cg-elevation-2: var(--cg-ring);
300
+ --cg-elevation-3: var(--cg-ring), var(--cogenta-shadow-md);
301
+ }
302
+ }
303
+
304
+ :where(:root[data-theme="dark"]) {
305
+ --cg-elevation-1: var(--cg-ring);
306
+ --cg-elevation-2: var(--cg-ring);
307
+ --cg-elevation-3: var(--cg-ring), var(--cogenta-shadow-md);
308
+ }
package/tokens.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "color": {
3
+ "bg": "#F7F1E6",
4
+ "fg": "#211A12",
5
+ "accent": "#A2361F",
6
+ "accentFg": "#FFFBF2",
7
+ "muted": "#ECE2CF",
8
+ "mutedFg": "#574A3C",
9
+ "border": "#D8CBB0"
10
+ },
11
+ "font": {
12
+ "sans": "'Public Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif",
13
+ "serif": "'Fraunces', Georgia, Cambria, 'Times New Roman', Times, serif",
14
+ "mono": "ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace",
15
+ "scale": 1.25,
16
+ "baseSize": "1rem"
17
+ },
18
+ "space": {
19
+ "unit": "0.25rem",
20
+ "density": "comfortable"
21
+ },
22
+ "radius": {
23
+ "sm": "0.125rem",
24
+ "md": "0.25rem",
25
+ "lg": "0.375rem"
26
+ },
27
+ "motion": {
28
+ "duration": "200ms",
29
+ "easing": "cubic-bezier(0.4, 0, 0.2, 1)",
30
+ "reduced": true
31
+ },
32
+ "shadow": {
33
+ "sm": "0 1px 2px rgba(33, 26, 18, 0.12)",
34
+ "md": "0 8px 28px rgba(33, 26, 18, 0.16)"
35
+ }
36
+ }