@ciderpress/ui 1.0.0-rc.10 → 1.0.0-rc.12

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 (92) hide show
  1. package/dist/head/css/loader-apple.css +1 -1
  2. package/dist/head/css/loader-dots.css +1 -1
  3. package/dist/head/css/themes/amber.css +1 -1
  4. package/dist/head/css/themes/arcade.css +1 -1
  5. package/dist/head/css/themes/grannysmith.css +1 -1
  6. package/dist/head/css/themes/honeycrisp.css +1 -1
  7. package/dist/head/css/themes/midnight.css +1 -1
  8. package/dist/head/css/themes/mulled.css +1 -1
  9. package/dist/node.mjs +1110 -28
  10. package/dist/theme/components/home/cta.css +15 -0
  11. package/dist/theme/components/home/cta.tsx +10 -2
  12. package/dist/theme/components/home/feature-card.css +1 -1
  13. package/dist/theme/components/home/feature-card.tsx +3 -2
  14. package/dist/theme/components/home/feature.tsx +34 -31
  15. package/dist/theme/components/home/hero-demo.css +11 -0
  16. package/dist/theme/components/home/home-visual.tsx +226 -0
  17. package/dist/theme/components/home/layout.tsx +350 -171
  18. package/dist/theme/components/home/split.css +46 -19
  19. package/dist/theme/components/home/split.tsx +28 -8
  20. package/dist/theme/components/home/tabs.css +299 -0
  21. package/dist/theme/components/home/tabs.tsx +351 -0
  22. package/dist/theme/components/home/trust-strip.css +41 -0
  23. package/dist/theme/components/home/trust-strip.tsx +168 -11
  24. package/dist/theme/components/home/workspaces.tsx +171 -69
  25. package/dist/theme/components/seo-head-data.test.ts +196 -0
  26. package/dist/theme/components/seo-head-data.ts +490 -0
  27. package/dist/theme/components/seo-head.tsx +102 -0
  28. package/dist/theme/components/shared/IssueLinkIcon.tsx +42 -0
  29. package/dist/theme/components/shared/issue-link.css +74 -0
  30. package/dist/theme/components/workspaces/card.css +4 -0
  31. package/dist/theme/components/workspaces/card.tsx +3 -3
  32. package/dist/theme/components/workspaces/grid.tsx +18 -6
  33. package/dist/theme/index.tsx +6 -0
  34. package/dist/theme/lib/rich-text-parse.ts +740 -0
  35. package/dist/theme/lib/rich-text.test.tsx +342 -0
  36. package/dist/theme/lib/rich-text.tsx +86 -0
  37. package/dist/theme/lib/seo-url.ts +28 -0
  38. package/dist/theme/styles/overrides/fonts.css +7 -4
  39. package/dist/theme/styles/overrides/home.css +11 -2
  40. package/dist/theme/styles/overrides/rspress.css +10 -5
  41. package/dist/theme/styles/overrides/tokens.css +41 -23
  42. package/dist/theme/styles/rich-text.css +106 -0
  43. package/dist/theme/styles/themes/amber.css +32 -2
  44. package/dist/theme/styles/themes/arcade.css +16 -1
  45. package/dist/theme/styles/themes/grannysmith.css +32 -2
  46. package/dist/theme/styles/themes/honeycrisp.css +37 -7
  47. package/dist/theme/styles/themes/midnight.css +16 -1
  48. package/dist/theme/styles/themes/mulled.css +54 -9
  49. package/package.json +6 -5
  50. package/src/theme/components/home/cta.css +15 -0
  51. package/src/theme/components/home/cta.tsx +10 -2
  52. package/src/theme/components/home/feature-card.css +1 -1
  53. package/src/theme/components/home/feature-card.tsx +3 -2
  54. package/src/theme/components/home/feature.tsx +34 -31
  55. package/src/theme/components/home/hero-demo.css +11 -0
  56. package/src/theme/components/home/home-visual.tsx +226 -0
  57. package/src/theme/components/home/layout.tsx +350 -171
  58. package/src/theme/components/home/split.css +46 -19
  59. package/src/theme/components/home/split.tsx +28 -8
  60. package/src/theme/components/home/tabs.css +299 -0
  61. package/src/theme/components/home/tabs.tsx +351 -0
  62. package/src/theme/components/home/trust-strip.css +41 -0
  63. package/src/theme/components/home/trust-strip.tsx +168 -11
  64. package/src/theme/components/home/workspaces.tsx +171 -69
  65. package/src/theme/components/seo-head-data.test.ts +196 -0
  66. package/src/theme/components/seo-head-data.ts +490 -0
  67. package/src/theme/components/seo-head.tsx +102 -0
  68. package/src/theme/components/shared/IssueLinkIcon.tsx +42 -0
  69. package/src/theme/components/shared/issue-link.css +74 -0
  70. package/src/theme/components/workspaces/card.css +4 -0
  71. package/src/theme/components/workspaces/card.tsx +3 -3
  72. package/src/theme/components/workspaces/grid.tsx +18 -6
  73. package/src/theme/index.tsx +6 -0
  74. package/src/theme/lib/rich-text-parse.ts +740 -0
  75. package/src/theme/lib/rich-text.test.tsx +342 -0
  76. package/src/theme/lib/rich-text.tsx +86 -0
  77. package/src/theme/lib/seo-url.ts +28 -0
  78. package/src/theme/styles/overrides/fonts.css +7 -4
  79. package/src/theme/styles/overrides/home.css +11 -2
  80. package/src/theme/styles/overrides/rspress.css +10 -5
  81. package/src/theme/styles/overrides/tokens.css +41 -23
  82. package/src/theme/styles/rich-text.css +106 -0
  83. package/src/theme/styles/themes/amber.css +32 -2
  84. package/src/theme/styles/themes/arcade.css +16 -1
  85. package/src/theme/styles/themes/grannysmith.css +32 -2
  86. package/src/theme/styles/themes/honeycrisp.css +37 -7
  87. package/src/theme/styles/themes/midnight.css +16 -1
  88. package/src/theme/styles/themes/mulled.css +54 -9
  89. package/dist/theme/components/home/hero-demo-custom.tsx +0 -116
  90. package/dist/theme/components/home/split-visual-custom.tsx +0 -26
  91. package/src/theme/components/home/hero-demo-custom.tsx +0 -116
  92. package/src/theme/components/home/split-visual-custom.tsx +0 -26
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Rich text — inline markup rendered from config copy.
3
+ *
4
+ * Config strings run through the inline renderer, so any display copy
5
+ * can carry `**emphasis**` (bold + brand colour), `==highlight==`,
6
+ * `*italic*`, `` `code` ``, links, and a whitelist of inline HTML. These rules keep that markup legible
7
+ * inside headings and body copy alike, where the document-level
8
+ * typography does not reach.
9
+ */
10
+
11
+ /* Accent — what `**emphasis**` renders as, and the explicit form of
12
+ the hero title's auto-accent.
13
+
14
+ `--cp-c-brand-1` is a FILL colour: it is tuned to sit behind
15
+ `--cp-c-brand-fg`, not to be read as text on the page background. Used
16
+ directly here it failed WCAG AA in four theme/variant combinations, and
17
+ on mulled/dark it measured 2.38:1 — under even the 3:1 large-text floor,
18
+ so it failed at any size including the hero headline.
19
+
20
+ Accent copy lands in 16px/400 body text (`.cp-tabs__body`,
21
+ `.cp-split__body`), so the 4.5:1 bar applies. Every dark variant clears
22
+ it with `--cp-c-brand-light` (5.26:1 on honeycrisp and mulled, up to
23
+ 15.22:1 on arcade) and every light variant with `--cp-c-brand-2`
24
+ (4.83:1 on amber, up to 9.35:1 on mulled). The variant-less fallback
25
+ matches the light rule because the unthemed page background is light.
26
+
27
+ `--cp-c-brand-lighter` is deliberately NOT used here. It is the palest
28
+ rung of the ramp, so it clears contrast by a wide margin (10.43:1 on
29
+ honeycrisp) but washes the hue out — a light red reads as pink, not as
30
+ the brand. `light` is the most saturated rung that still clears 4.5:1.
31
+
32
+ The same pair is used for the home eyebrows (`.cp-hero__eyebrow` aside,
33
+ which is a text-2 pill): see home.css, cta.css and split.css. Keep them
34
+ in step — they are the only other places brand colour carries text. */
35
+ .cp-accent {
36
+ color: var(--cp-c-brand-2, var(--cp-c-brand-1));
37
+ }
38
+
39
+ html[data-cp-variant='dark'] .cp-accent {
40
+ color: var(--cp-c-brand-light, var(--cp-c-brand-1));
41
+ }
42
+
43
+ /* Inline code in display copy: the document code style is tuned for
44
+ prose, so scale it to the surrounding text instead. */
45
+ .cp-hero__title code,
46
+ .cp-hero__tagline code,
47
+ .cp-split__title code,
48
+ .cp-split__body code,
49
+ .cp-tabs__title code,
50
+ .cp-tabs__body code,
51
+ .cp-cta__title code,
52
+ .cp-cta__sub code,
53
+ .cp-feature-section-head__title code,
54
+ .cp-feature-section-head__sub code {
55
+ font-family: var(--cp-font-family-mono);
56
+ font-size: 0.9em;
57
+ padding: 0.1em 0.35em;
58
+ border-radius: var(--cp-radius-xs);
59
+ background: var(--cp-c-bg-soft);
60
+ border: 1px solid var(--cp-c-border);
61
+ }
62
+
63
+ /* Links inside display copy inherit their surroundings and pick up the
64
+ brand colour, rather than the document link treatment. */
65
+ .cp-hero__tagline a,
66
+ .cp-split__body a,
67
+ .cp-tabs__body a,
68
+ .cp-cta__sub a,
69
+ .cp-feature-section-head__sub a {
70
+ color: var(--cp-c-brand-1);
71
+ text-decoration: underline;
72
+ text-underline-offset: 2px;
73
+ }
74
+
75
+ /* A heading link should not shout — keep the heading colour, mark it
76
+ with an underline only. */
77
+ .cp-hero__title a,
78
+ .cp-split__title a,
79
+ .cp-tabs__title a,
80
+ .cp-cta__title a,
81
+ .cp-feature-section-head__title a {
82
+ color: inherit;
83
+ text-decoration: underline;
84
+ text-underline-offset: 3px;
85
+ }
86
+
87
+ /* Highlight — what `==text==` renders as. `<mark>` defaults to a yellow
88
+ browser highlight, so retint it to the brand. The bare-element
89
+ selectors cover `<mark>` written as HTML in config copy, which carries
90
+ no class of its own. */
91
+ .cp-mark,
92
+ .cp-hero__title mark,
93
+ .cp-hero__tagline mark,
94
+ .cp-split__title mark,
95
+ .cp-split__body mark,
96
+ .cp-tabs__title mark,
97
+ .cp-tabs__body mark,
98
+ .cp-cta__title mark,
99
+ .cp-cta__sub mark,
100
+ .cp-feature-section-head__title mark,
101
+ .cp-feature-section-head__sub mark {
102
+ background: var(--cp-c-brand-soft);
103
+ color: var(--cp-c-text-1);
104
+ padding: 0.05em 0.25em;
105
+ border-radius: var(--cp-radius-xs);
106
+ }
@@ -130,8 +130,11 @@ html[data-cp-theme='amber'][data-cp-variant='dark'] {
130
130
  --cp-radius-lg: 10px;
131
131
  --cp-radius-md-lg: 12px;
132
132
  --cp-radius-pill: 9999px;
133
- --cp-ff-sans: 'Geist', ui-sans-serif, system-ui, sans-serif;
133
+ --cp-ff-sans:
134
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
135
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
134
136
  --cp-ff-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
137
+ --cp-ff-display: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
135
138
  --cp-fw-regular: 400;
136
139
  --cp-fw-medium: 500;
137
140
  --cp-fw-semibold: 600;
@@ -270,6 +273,18 @@ html[data-cp-theme='amber'][data-cp-variant='dark'] {
270
273
  --rp-home-feature-bg: #1c1c1c;
271
274
  --rp-home-hero-secondary-color: rgba(245, 245, 245, 0.72);
272
275
  --rp-home-hero-title-color: #f5f5f5;
276
+ --rp-font-family-base:
277
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
278
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
279
+ --rp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
280
+ --cp-font-family-base:
281
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
282
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
283
+ --cp-font-family-sans:
284
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
285
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
286
+ --cp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
287
+ --cp-font-family-pixel: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
273
288
  }
274
289
 
275
290
  html[data-cp-theme='amber'][data-cp-variant='light'] {
@@ -402,8 +417,11 @@ html[data-cp-theme='amber'][data-cp-variant='light'] {
402
417
  --cp-radius-lg: 10px;
403
418
  --cp-radius-md-lg: 12px;
404
419
  --cp-radius-pill: 9999px;
405
- --cp-ff-sans: 'Geist', ui-sans-serif, system-ui, sans-serif;
420
+ --cp-ff-sans:
421
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
422
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
406
423
  --cp-ff-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
424
+ --cp-ff-display: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
407
425
  --cp-fw-regular: 400;
408
426
  --cp-fw-medium: 500;
409
427
  --cp-fw-semibold: 600;
@@ -542,4 +560,16 @@ html[data-cp-theme='amber'][data-cp-variant='light'] {
542
560
  --rp-home-feature-bg: #f0dfb8;
543
561
  --rp-home-hero-secondary-color: rgba(58, 31, 4, 0.72);
544
562
  --rp-home-hero-title-color: #3a1f04;
563
+ --rp-font-family-base:
564
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
565
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
566
+ --rp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
567
+ --cp-font-family-base:
568
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
569
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
570
+ --cp-font-family-sans:
571
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
572
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
573
+ --cp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
574
+ --cp-font-family-pixel: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
545
575
  }
@@ -130,8 +130,11 @@ html[data-cp-theme='arcade'][data-cp-variant='dark'] {
130
130
  --cp-radius-lg: 10px;
131
131
  --cp-radius-md-lg: 12px;
132
132
  --cp-radius-pill: 9999px;
133
- --cp-ff-sans: 'Geist', ui-sans-serif, system-ui, sans-serif;
133
+ --cp-ff-sans:
134
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
135
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
134
136
  --cp-ff-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
137
+ --cp-ff-display: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
135
138
  --cp-fw-regular: 400;
136
139
  --cp-fw-medium: 500;
137
140
  --cp-fw-semibold: 600;
@@ -270,4 +273,16 @@ html[data-cp-theme='arcade'][data-cp-variant='dark'] {
270
273
  --rp-home-feature-bg: #18183d;
271
274
  --rp-home-hero-secondary-color: rgba(224, 255, 224, 0.72);
272
275
  --rp-home-hero-title-color: #e0ffe0;
276
+ --rp-font-family-base:
277
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
278
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
279
+ --rp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
280
+ --cp-font-family-base:
281
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
282
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
283
+ --cp-font-family-sans:
284
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
285
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
286
+ --cp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
287
+ --cp-font-family-pixel: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
273
288
  }
@@ -130,8 +130,11 @@ html[data-cp-theme='grannysmith'][data-cp-variant='dark'] {
130
130
  --cp-radius-lg: 10px;
131
131
  --cp-radius-md-lg: 12px;
132
132
  --cp-radius-pill: 9999px;
133
- --cp-ff-sans: 'Geist', ui-sans-serif, system-ui, sans-serif;
133
+ --cp-ff-sans:
134
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
135
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
134
136
  --cp-ff-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
137
+ --cp-ff-display: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
135
138
  --cp-fw-regular: 400;
136
139
  --cp-fw-medium: 500;
137
140
  --cp-fw-semibold: 600;
@@ -270,6 +273,18 @@ html[data-cp-theme='grannysmith'][data-cp-variant='dark'] {
270
273
  --rp-home-feature-bg: #1c1c1c;
271
274
  --rp-home-hero-secondary-color: rgba(245, 245, 245, 0.72);
272
275
  --rp-home-hero-title-color: #f5f5f5;
276
+ --rp-font-family-base:
277
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
278
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
279
+ --rp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
280
+ --cp-font-family-base:
281
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
282
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
283
+ --cp-font-family-sans:
284
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
285
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
286
+ --cp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
287
+ --cp-font-family-pixel: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
273
288
  }
274
289
 
275
290
  html[data-cp-theme='grannysmith'][data-cp-variant='light'] {
@@ -402,8 +417,11 @@ html[data-cp-theme='grannysmith'][data-cp-variant='light'] {
402
417
  --cp-radius-lg: 10px;
403
418
  --cp-radius-md-lg: 12px;
404
419
  --cp-radius-pill: 9999px;
405
- --cp-ff-sans: 'Geist', ui-sans-serif, system-ui, sans-serif;
420
+ --cp-ff-sans:
421
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
422
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
406
423
  --cp-ff-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
424
+ --cp-ff-display: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
407
425
  --cp-fw-regular: 400;
408
426
  --cp-fw-medium: 500;
409
427
  --cp-fw-semibold: 600;
@@ -542,4 +560,16 @@ html[data-cp-theme='grannysmith'][data-cp-variant='light'] {
542
560
  --rp-home-feature-bg: #f0f0f0;
543
561
  --rp-home-hero-secondary-color: rgba(26, 26, 26, 0.72);
544
562
  --rp-home-hero-title-color: #1a1a1a;
563
+ --rp-font-family-base:
564
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
565
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
566
+ --rp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
567
+ --cp-font-family-base:
568
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
569
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
570
+ --cp-font-family-sans:
571
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
572
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
573
+ --cp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
574
+ --cp-font-family-pixel: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
545
575
  }
@@ -7,7 +7,7 @@ html[data-cp-theme='honeycrisp'][data-cp-variant='dark'] {
7
7
  --cp-c-brand-fg: #ffffff;
8
8
  --cp-c-brand-soft: rgba(220, 38, 38, 0.14);
9
9
  --cp-c-on-brand: #ffffff;
10
- --cp-c-brand-light: #f87171;
10
+ --cp-c-brand-light: #ef4444;
11
11
  --cp-c-brand-lighter: #fca5a5;
12
12
  --cp-c-success: #16a34a;
13
13
  --cp-c-error: #dc2626;
@@ -97,7 +97,7 @@ html[data-cp-theme='honeycrisp'][data-cp-variant='dark'] {
97
97
  --cp-oas-deprecated: var(--cp-c-text-3);
98
98
  --cp-oas-required: #dc2626;
99
99
  --cp-button-brand-bg: #dc2626;
100
- --cp-button-brand-hover-bg: #f87171;
100
+ --cp-button-brand-hover-bg: #ef4444;
101
101
  --cp-button-brand-active-bg: #b91c1c;
102
102
  --cp-button-brand-text: #ffffff;
103
103
  --cp-s-1: 1px;
@@ -130,8 +130,11 @@ html[data-cp-theme='honeycrisp'][data-cp-variant='dark'] {
130
130
  --cp-radius-lg: 10px;
131
131
  --cp-radius-md-lg: 12px;
132
132
  --cp-radius-pill: 9999px;
133
- --cp-ff-sans: 'Geist', ui-sans-serif, system-ui, sans-serif;
133
+ --cp-ff-sans:
134
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
135
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
134
136
  --cp-ff-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
137
+ --cp-ff-display: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
135
138
  --cp-fw-regular: 400;
136
139
  --cp-fw-medium: 500;
137
140
  --cp-fw-semibold: 600;
@@ -251,7 +254,7 @@ html[data-cp-theme='honeycrisp'][data-cp-variant='dark'] {
251
254
  --rp-c-bg-mute: #0a0a0a;
252
255
  --rp-c-bg-soft: #1c1c1c;
253
256
  --rp-c-brand: #dc2626;
254
- --rp-c-brand-light: #f87171;
257
+ --rp-c-brand-light: #ef4444;
255
258
  --rp-c-brand-lighter: #fca5a5;
256
259
  --rp-c-brand-dark: #b91c1c;
257
260
  --rp-c-brand-darker: #7f1d1d;
@@ -270,6 +273,18 @@ html[data-cp-theme='honeycrisp'][data-cp-variant='dark'] {
270
273
  --rp-home-feature-bg: #1c1c1c;
271
274
  --rp-home-hero-secondary-color: rgba(245, 245, 245, 0.72);
272
275
  --rp-home-hero-title-color: #f5f5f5;
276
+ --rp-font-family-base:
277
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
278
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
279
+ --rp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
280
+ --cp-font-family-base:
281
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
282
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
283
+ --cp-font-family-sans:
284
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
285
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
286
+ --cp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
287
+ --cp-font-family-pixel: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
273
288
  }
274
289
 
275
290
  html[data-cp-theme='honeycrisp'][data-cp-variant='light'] {
@@ -279,7 +294,7 @@ html[data-cp-theme='honeycrisp'][data-cp-variant='light'] {
279
294
  --cp-c-brand-fg: #ffffff;
280
295
  --cp-c-brand-soft: rgba(220, 38, 38, 0.14);
281
296
  --cp-c-on-brand: #ffffff;
282
- --cp-c-brand-light: #f87171;
297
+ --cp-c-brand-light: #ef4444;
283
298
  --cp-c-brand-lighter: #fca5a5;
284
299
  --cp-c-success: #16a34a;
285
300
  --cp-c-error: #dc2626;
@@ -402,8 +417,11 @@ html[data-cp-theme='honeycrisp'][data-cp-variant='light'] {
402
417
  --cp-radius-lg: 10px;
403
418
  --cp-radius-md-lg: 12px;
404
419
  --cp-radius-pill: 9999px;
405
- --cp-ff-sans: 'Geist', ui-sans-serif, system-ui, sans-serif;
420
+ --cp-ff-sans:
421
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
422
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
406
423
  --cp-ff-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
424
+ --cp-ff-display: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
407
425
  --cp-fw-regular: 400;
408
426
  --cp-fw-medium: 500;
409
427
  --cp-fw-semibold: 600;
@@ -523,7 +541,7 @@ html[data-cp-theme='honeycrisp'][data-cp-variant='light'] {
523
541
  --rp-c-bg-mute: #ffffff;
524
542
  --rp-c-bg-soft: #f0f0f0;
525
543
  --rp-c-brand: #dc2626;
526
- --rp-c-brand-light: #f87171;
544
+ --rp-c-brand-light: #ef4444;
527
545
  --rp-c-brand-lighter: #fca5a5;
528
546
  --rp-c-brand-dark: #b91c1c;
529
547
  --rp-c-brand-darker: #7f1d1d;
@@ -542,4 +560,16 @@ html[data-cp-theme='honeycrisp'][data-cp-variant='light'] {
542
560
  --rp-home-feature-bg: #f0f0f0;
543
561
  --rp-home-hero-secondary-color: rgba(26, 26, 26, 0.72);
544
562
  --rp-home-hero-title-color: #1a1a1a;
563
+ --rp-font-family-base:
564
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
565
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
566
+ --rp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
567
+ --cp-font-family-base:
568
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
569
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
570
+ --cp-font-family-sans:
571
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
572
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
573
+ --cp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
574
+ --cp-font-family-pixel: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
545
575
  }
@@ -130,8 +130,11 @@ html[data-cp-theme='midnight'][data-cp-variant='dark'] {
130
130
  --cp-radius-lg: 10px;
131
131
  --cp-radius-md-lg: 12px;
132
132
  --cp-radius-pill: 9999px;
133
- --cp-ff-sans: 'Geist', ui-sans-serif, system-ui, sans-serif;
133
+ --cp-ff-sans:
134
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
135
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
134
136
  --cp-ff-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
137
+ --cp-ff-display: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
135
138
  --cp-fw-regular: 400;
136
139
  --cp-fw-medium: 500;
137
140
  --cp-fw-semibold: 600;
@@ -270,4 +273,16 @@ html[data-cp-theme='midnight'][data-cp-variant='dark'] {
270
273
  --rp-home-feature-bg: #111111;
271
274
  --rp-home-hero-secondary-color: rgba(240, 240, 240, 0.72);
272
275
  --rp-home-hero-title-color: #f0f0f0;
276
+ --rp-font-family-base:
277
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
278
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
279
+ --rp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
280
+ --cp-font-family-base:
281
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
282
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
283
+ --cp-font-family-sans:
284
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
285
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
286
+ --cp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
287
+ --cp-font-family-pixel: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
273
288
  }
@@ -7,7 +7,7 @@
7
7
  --cp-c-brand-fg: #ffffff;
8
8
  --cp-c-brand-soft: rgba(153, 27, 27, 0.14);
9
9
  --cp-c-on-brand: #ffffff;
10
- --cp-c-brand-light: #dc2626;
10
+ --cp-c-brand-light: #ef4444;
11
11
  --cp-c-brand-lighter: #f87171;
12
12
  --cp-c-success: #16a34a;
13
13
  --cp-c-error: #dc2626;
@@ -130,8 +130,11 @@
130
130
  --cp-radius-lg: 10px;
131
131
  --cp-radius-md-lg: 12px;
132
132
  --cp-radius-pill: 9999px;
133
- --cp-ff-sans: 'Geist', ui-sans-serif, system-ui, sans-serif;
133
+ --cp-ff-sans:
134
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
135
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
134
136
  --cp-ff-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
137
+ --cp-ff-display: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
135
138
  --cp-fw-regular: 400;
136
139
  --cp-fw-medium: 500;
137
140
  --cp-fw-semibold: 600;
@@ -251,7 +254,7 @@
251
254
  --rp-c-bg-mute: #0a0a0a;
252
255
  --rp-c-bg-soft: #1c1c1c;
253
256
  --rp-c-brand: #991b1b;
254
- --rp-c-brand-light: #dc2626;
257
+ --rp-c-brand-light: #ef4444;
255
258
  --rp-c-brand-lighter: #f87171;
256
259
  --rp-c-brand-dark: #7f1d1d;
257
260
  --rp-c-brand-darker: #450a0a;
@@ -270,6 +273,18 @@
270
273
  --rp-home-feature-bg: #1c1c1c;
271
274
  --rp-home-hero-secondary-color: rgba(245, 245, 245, 0.72);
272
275
  --rp-home-hero-title-color: #f5f5f5;
276
+ --rp-font-family-base:
277
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
278
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
279
+ --rp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
280
+ --cp-font-family-base:
281
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
282
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
283
+ --cp-font-family-sans:
284
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
285
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
286
+ --cp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
287
+ --cp-font-family-pixel: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
273
288
  }
274
289
 
275
290
  html[data-cp-theme='mulled'][data-cp-variant='dark'] {
@@ -279,7 +294,7 @@ html[data-cp-theme='mulled'][data-cp-variant='dark'] {
279
294
  --cp-c-brand-fg: #ffffff;
280
295
  --cp-c-brand-soft: rgba(153, 27, 27, 0.14);
281
296
  --cp-c-on-brand: #ffffff;
282
- --cp-c-brand-light: #dc2626;
297
+ --cp-c-brand-light: #ef4444;
283
298
  --cp-c-brand-lighter: #f87171;
284
299
  --cp-c-success: #16a34a;
285
300
  --cp-c-error: #dc2626;
@@ -402,8 +417,11 @@ html[data-cp-theme='mulled'][data-cp-variant='dark'] {
402
417
  --cp-radius-lg: 10px;
403
418
  --cp-radius-md-lg: 12px;
404
419
  --cp-radius-pill: 9999px;
405
- --cp-ff-sans: 'Geist', ui-sans-serif, system-ui, sans-serif;
420
+ --cp-ff-sans:
421
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
422
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
406
423
  --cp-ff-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
424
+ --cp-ff-display: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
407
425
  --cp-fw-regular: 400;
408
426
  --cp-fw-medium: 500;
409
427
  --cp-fw-semibold: 600;
@@ -523,7 +541,7 @@ html[data-cp-theme='mulled'][data-cp-variant='dark'] {
523
541
  --rp-c-bg-mute: #0a0a0a;
524
542
  --rp-c-bg-soft: #1c1c1c;
525
543
  --rp-c-brand: #991b1b;
526
- --rp-c-brand-light: #dc2626;
544
+ --rp-c-brand-light: #ef4444;
527
545
  --rp-c-brand-lighter: #f87171;
528
546
  --rp-c-brand-dark: #7f1d1d;
529
547
  --rp-c-brand-darker: #450a0a;
@@ -542,6 +560,18 @@ html[data-cp-theme='mulled'][data-cp-variant='dark'] {
542
560
  --rp-home-feature-bg: #1c1c1c;
543
561
  --rp-home-hero-secondary-color: rgba(245, 245, 245, 0.72);
544
562
  --rp-home-hero-title-color: #f5f5f5;
563
+ --rp-font-family-base:
564
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
565
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
566
+ --rp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
567
+ --cp-font-family-base:
568
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
569
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
570
+ --cp-font-family-sans:
571
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
572
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
573
+ --cp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
574
+ --cp-font-family-pixel: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
545
575
  }
546
576
 
547
577
  html[data-cp-theme='mulled'][data-cp-variant='light'] {
@@ -551,7 +581,7 @@ html[data-cp-theme='mulled'][data-cp-variant='light'] {
551
581
  --cp-c-brand-fg: #ffffff;
552
582
  --cp-c-brand-soft: rgba(153, 27, 27, 0.14);
553
583
  --cp-c-on-brand: #ffffff;
554
- --cp-c-brand-light: #dc2626;
584
+ --cp-c-brand-light: #ef4444;
555
585
  --cp-c-brand-lighter: #f87171;
556
586
  --cp-c-success: #16a34a;
557
587
  --cp-c-error: #dc2626;
@@ -674,8 +704,11 @@ html[data-cp-theme='mulled'][data-cp-variant='light'] {
674
704
  --cp-radius-lg: 10px;
675
705
  --cp-radius-md-lg: 12px;
676
706
  --cp-radius-pill: 9999px;
677
- --cp-ff-sans: 'Geist', ui-sans-serif, system-ui, sans-serif;
707
+ --cp-ff-sans:
708
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
709
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
678
710
  --cp-ff-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
711
+ --cp-ff-display: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
679
712
  --cp-fw-regular: 400;
680
713
  --cp-fw-medium: 500;
681
714
  --cp-fw-semibold: 600;
@@ -795,7 +828,7 @@ html[data-cp-theme='mulled'][data-cp-variant='light'] {
795
828
  --rp-c-bg-mute: #fbf6f4;
796
829
  --rp-c-bg-soft: #ead9d4;
797
830
  --rp-c-brand: #991b1b;
798
- --rp-c-brand-light: #dc2626;
831
+ --rp-c-brand-light: #ef4444;
799
832
  --rp-c-brand-lighter: #f87171;
800
833
  --rp-c-brand-dark: #7f1d1d;
801
834
  --rp-c-brand-darker: #450a0a;
@@ -814,4 +847,16 @@ html[data-cp-theme='mulled'][data-cp-variant='light'] {
814
847
  --rp-home-feature-bg: #ead9d4;
815
848
  --rp-home-hero-secondary-color: rgba(42, 6, 6, 0.72);
816
849
  --rp-home-hero-title-color: #2a0606;
850
+ --rp-font-family-base:
851
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
852
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
853
+ --rp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
854
+ --cp-font-family-base:
855
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
856
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
857
+ --cp-font-family-sans:
858
+ 'Inter var experimental', 'Inter var', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
859
+ Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
860
+ --cp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
861
+ --cp-font-family-pixel: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
817
862
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ciderpress/ui",
3
- "version": "1.0.0-rc.10",
3
+ "version": "1.0.0-rc.12",
4
4
  "description": "Rspress plugin, theme components, and styles for ciderpress",
5
5
  "keywords": [
6
6
  "ciderpress",
@@ -57,6 +57,7 @@
57
57
  "@iconify-json/vscode-icons": "^1.2.65",
58
58
  "@iconify/react": "^6.0.2",
59
59
  "@mermaid-js/layout-elk": "^0.2.2",
60
+ "@rspress/plugin-sitemap": "^2.0.19",
60
61
  "clsx": "^2.1.1",
61
62
  "katex": "^0.17.0",
62
63
  "massaman": "^0.3.0",
@@ -65,13 +66,13 @@
65
66
  "react-aria-components": "^1.19.0",
66
67
  "ts-morph": "^28.0.0",
67
68
  "unist-util-visit": "^5.1.0",
68
- "@ciderpress/config": "1.0.0-rc.7",
69
- "@ciderpress/theme": "1.0.0-rc.4"
69
+ "@ciderpress/config": "1.0.0-rc.9",
70
+ "@ciderpress/theme": "1.0.0-rc.5"
70
71
  },
71
72
  "devDependencies": {
72
73
  "@ladle/react": "^5.1.1",
73
74
  "@rslib/core": "0.23.1",
74
- "@rspress/core": "^2.0.16",
75
+ "@rspress/core": "^2.0.19",
75
76
  "@types/react": "^19.2.17",
76
77
  "@types/react-dom": "^19.2.3",
77
78
  "esbuild": "^0.28.1",
@@ -86,7 +87,7 @@
86
87
  "vitest": "^4.1.10"
87
88
  },
88
89
  "peerDependencies": {
89
- "@rspress/core": "^2.0.16",
90
+ "@rspress/core": "^2.0.19",
90
91
  "react": "^19.2.5",
91
92
  "react-dom": "^19.2.5"
92
93
  },
@@ -9,6 +9,21 @@
9
9
  padding: 0 32px;
10
10
  }
11
11
 
12
+ .cp-cta__eyebrow {
13
+ font-family: var(--cp-font-family-mono);
14
+ font-size: var(--cp-fs-eyebrow);
15
+ text-transform: uppercase;
16
+ letter-spacing: var(--cp-letter-eyebrow);
17
+ /* Same shade pair as `.cp-accent` — `--cp-c-brand-1` is a fill colour and
18
+ misses 4.5:1 at this size on several themes. See styles/rich-text.css. */
19
+ color: var(--cp-c-brand-2, var(--cp-c-brand-1));
20
+ margin-bottom: var(--cp-s-12);
21
+ }
22
+
23
+ html[data-cp-variant='dark'] .cp-cta__eyebrow {
24
+ color: var(--cp-c-brand-light, var(--cp-c-brand-1));
25
+ }
26
+
12
27
  .cp-cta__title {
13
28
  font-size: clamp(32px, 5vw, 56px);
14
29
  font-weight: 600;
@@ -1,6 +1,7 @@
1
- import { match } from 'massaman/match'
1
+ import { match, P } from 'massaman/match'
2
2
  import type React from 'react'
3
3
 
4
+ import { renderRichText } from '../../lib/rich-text.tsx'
4
5
  import { RouteLink } from '../../lib/route-link.tsx'
5
6
  import { safeUrl } from '../../lib/safe-url.ts'
6
7
  import type { HeroAction } from './hero'
@@ -8,6 +9,10 @@ import type { HeroAction } from './hero'
8
9
  import './cta.css'
9
10
 
10
11
  export interface CTAProps {
12
+ /**
13
+ * Small uppercase kicker rendered above the headline.
14
+ */
15
+ readonly eyebrow?: string
11
16
  /**
12
17
  * Headline.
13
18
  */
@@ -30,12 +35,15 @@ export interface CTAProps {
30
35
  * @returns React element.
31
36
  */
32
37
  export function CTA(props: CTAProps): React.ReactElement {
33
- const { title, subtitle, actions } = props
38
+ const { eyebrow, title, subtitle, actions } = props
34
39
  const list = actions ?? []
35
40
 
36
41
  return (
37
42
  <section className="cp-cta">
38
43
  <div className="cp-cta__inner">
44
+ {match(eyebrow)
45
+ .with(P.string, (e) => <div className="cp-cta__eyebrow">{renderRichText(e)}</div>)
46
+ .otherwise(() => null)}
39
47
  <h2 className="cp-cta__title">{title}</h2>
40
48
  {match(subtitle)
41
49
  .with(undefined, () => null)
@@ -18,7 +18,7 @@
18
18
  }
19
19
 
20
20
  .cp-feature-card__title {
21
- font-family: 'Geist Pixel Square', var(--rp-font-family-base, sans-serif);
21
+ font-family: var(--cp-ff-display);
22
22
  font-size: var(--cp-fs-feature-title);
23
23
  font-weight: var(--cp-fw-bold);
24
24
  color: var(--rp-c-text-1, var(--cp-c-text-1));