@zpress/ui 0.1.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 (69) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.mjs +75 -0
  3. package/dist/theme/components/home/feature-card.css +89 -0
  4. package/dist/theme/components/home/feature-card.tsx +75 -0
  5. package/dist/theme/components/home/feature.tsx +53 -0
  6. package/dist/theme/components/home/layout.tsx +36 -0
  7. package/dist/theme/components/home/workspaces.tsx +53 -0
  8. package/dist/theme/components/nav/branch-tag.css +54 -0
  9. package/dist/theme/components/nav/branch-tag.tsx +66 -0
  10. package/dist/theme/components/shared/card.tsx +27 -0
  11. package/dist/theme/components/shared/icon.tsx +27 -0
  12. package/dist/theme/components/shared/section-card.tsx +42 -0
  13. package/dist/theme/components/shared/section-grid.tsx +12 -0
  14. package/dist/theme/components/shared/tech-icon-table.tsx +68 -0
  15. package/dist/theme/components/shared/tech-tag.tsx +28 -0
  16. package/dist/theme/components/workspaces/card.css +141 -0
  17. package/dist/theme/components/workspaces/card.tsx +116 -0
  18. package/dist/theme/components/workspaces/grid.tsx +40 -0
  19. package/dist/theme/css.d.ts +1 -0
  20. package/dist/theme/fonts/GeistMono-Variable.woff2 +0 -0
  21. package/dist/theme/fonts/GeistPixel-Square.woff2 +0 -0
  22. package/dist/theme/fonts/GeistSans-Variable.woff2 +0 -0
  23. package/dist/theme/hooks/use-zpress.ts +57 -0
  24. package/dist/theme/icons/index.ts +2 -0
  25. package/dist/theme/icons/tech-map.ts +221 -0
  26. package/dist/theme/index.tsx +46 -0
  27. package/dist/theme/styles/overrides/details.css +61 -0
  28. package/dist/theme/styles/overrides/fonts.css +27 -0
  29. package/dist/theme/styles/overrides/home-card.css +125 -0
  30. package/dist/theme/styles/overrides/home.css +55 -0
  31. package/dist/theme/styles/overrides/rspress.css +108 -0
  32. package/dist/theme/styles/overrides/scrollbar.css +25 -0
  33. package/dist/theme/styles/overrides/section-card.css +115 -0
  34. package/dist/theme/styles/overrides/sidebar.css +9 -0
  35. package/dist/theme/styles/overrides/tokens.css +48 -0
  36. package/package.json +64 -0
  37. package/src/theme/components/home/feature-card.css +89 -0
  38. package/src/theme/components/home/feature-card.tsx +75 -0
  39. package/src/theme/components/home/feature.tsx +53 -0
  40. package/src/theme/components/home/layout.tsx +36 -0
  41. package/src/theme/components/home/workspaces.tsx +53 -0
  42. package/src/theme/components/nav/branch-tag.css +54 -0
  43. package/src/theme/components/nav/branch-tag.tsx +66 -0
  44. package/src/theme/components/shared/card.tsx +27 -0
  45. package/src/theme/components/shared/icon.tsx +27 -0
  46. package/src/theme/components/shared/section-card.tsx +42 -0
  47. package/src/theme/components/shared/section-grid.tsx +12 -0
  48. package/src/theme/components/shared/tech-icon-table.tsx +68 -0
  49. package/src/theme/components/shared/tech-tag.tsx +28 -0
  50. package/src/theme/components/workspaces/card.css +141 -0
  51. package/src/theme/components/workspaces/card.tsx +116 -0
  52. package/src/theme/components/workspaces/grid.tsx +40 -0
  53. package/src/theme/css.d.ts +1 -0
  54. package/src/theme/fonts/GeistMono-Variable.woff2 +0 -0
  55. package/src/theme/fonts/GeistPixel-Square.woff2 +0 -0
  56. package/src/theme/fonts/GeistSans-Variable.woff2 +0 -0
  57. package/src/theme/hooks/use-zpress.ts +57 -0
  58. package/src/theme/icons/index.ts +2 -0
  59. package/src/theme/icons/tech-map.ts +221 -0
  60. package/src/theme/index.tsx +46 -0
  61. package/src/theme/styles/overrides/details.css +61 -0
  62. package/src/theme/styles/overrides/fonts.css +27 -0
  63. package/src/theme/styles/overrides/home-card.css +125 -0
  64. package/src/theme/styles/overrides/home.css +55 -0
  65. package/src/theme/styles/overrides/rspress.css +108 -0
  66. package/src/theme/styles/overrides/scrollbar.css +25 -0
  67. package/src/theme/styles/overrides/section-card.css +115 -0
  68. package/src/theme/styles/overrides/sidebar.css +9 -0
  69. package/src/theme/styles/overrides/tokens.css +48 -0
@@ -0,0 +1,61 @@
1
+ /**
2
+ * <details> accordion styling.
3
+ */
4
+
5
+ details {
6
+ border: 1px solid var(--zp-c-border);
7
+ border-radius: 8px;
8
+ padding: 0;
9
+ margin: 0;
10
+ background: var(--zp-c-bg-soft);
11
+ }
12
+
13
+ details summary {
14
+ cursor: pointer;
15
+ padding: 0 12px;
16
+ font-weight: 600;
17
+ font-size: 14px;
18
+ color: var(--zp-c-text-1);
19
+ list-style: none;
20
+ display: flex;
21
+ align-items: center;
22
+ gap: 8px;
23
+ user-select: none;
24
+ transition: color 0.2s;
25
+ }
26
+
27
+ details summary:hover {
28
+ color: var(--zp-c-brand-1);
29
+ }
30
+
31
+ details summary::-webkit-details-marker {
32
+ display: none;
33
+ }
34
+
35
+ details summary::before {
36
+ content: '';
37
+ display: inline-block;
38
+ width: 0;
39
+ height: 0;
40
+ border-left: 5px solid currentColor;
41
+ border-top: 4px solid transparent;
42
+ border-bottom: 4px solid transparent;
43
+ transition: transform 0.2s;
44
+ flex-shrink: 0;
45
+ }
46
+
47
+ details[open] summary::before {
48
+ transform: rotate(90deg);
49
+ }
50
+
51
+ details[open] summary {
52
+ border-bottom: none;
53
+ }
54
+
55
+ details > :not(summary) {
56
+ padding: 0 12px;
57
+ }
58
+
59
+ details > :last-child:not(summary) {
60
+ padding-bottom: 6px;
61
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Self-hosted Geist fonts (vercel/geist-font).
3
+ */
4
+
5
+ @font-face {
6
+ font-family: 'Geist Sans';
7
+ src: url('../../fonts/GeistSans-Variable.woff2') format('woff2');
8
+ font-weight: 100 900;
9
+ font-style: normal;
10
+ font-display: swap;
11
+ }
12
+
13
+ @font-face {
14
+ font-family: 'Geist Pixel Square';
15
+ src: url('../../fonts/GeistPixel-Square.woff2') format('woff2');
16
+ font-weight: 400;
17
+ font-style: normal;
18
+ font-display: swap;
19
+ }
20
+
21
+ @font-face {
22
+ font-family: 'Geist Mono';
23
+ src: url('../../fonts/GeistMono-Variable.woff2') format('woff2');
24
+ font-weight: 100 900;
25
+ font-style: normal;
26
+ font-display: swap;
27
+ }
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Shared base card — container, hover, icon system, and divider.
3
+ * Consumed by feature-card.css and workspace-card.css.
4
+ */
5
+
6
+ /* ── Base card container ─────────────────────────────────────── */
7
+ .home-card {
8
+ padding: 16px 18px;
9
+ border-radius: var(--rp-radius);
10
+ border: 1px solid var(--zp-c-border);
11
+ background: var(--zp-c-bg-soft);
12
+ text-decoration: none !important;
13
+ transition:
14
+ border-color 0.2s,
15
+ background 0.2s,
16
+ box-shadow 0.2s;
17
+ }
18
+
19
+ .home-card:hover {
20
+ border-color: var(--zp-c-brand-1);
21
+ background: var(--zp-c-bg-elv);
22
+ box-shadow: 0 2px 12px rgba(167, 139, 250, 0.08);
23
+ text-decoration: none !important;
24
+ }
25
+
26
+ .home-card--clickable {
27
+ cursor: pointer;
28
+ }
29
+
30
+ /* ── Shared icon box (36×36, 4px radius, 18px SVG) ───────────── */
31
+ .home-card-icon {
32
+ display: flex;
33
+ align-items: center;
34
+ justify-content: center;
35
+ width: 36px;
36
+ height: 36px;
37
+ border-radius: 4px;
38
+ flex-shrink: 0;
39
+ }
40
+
41
+ .home-card-icon svg {
42
+ width: 18px;
43
+ height: 18px;
44
+ }
45
+
46
+ /* ── Icon color variants ─────────────────────────────────────── */
47
+ .home-card-icon--purple {
48
+ background: rgba(167, 139, 250, 0.12);
49
+ color: #a78bfa;
50
+ }
51
+
52
+ .home-card-icon--purple svg {
53
+ color: #a78bfa;
54
+ }
55
+
56
+ .home-card-icon--blue {
57
+ background: rgba(96, 165, 250, 0.12);
58
+ color: #60a5fa;
59
+ }
60
+
61
+ .home-card-icon--blue svg {
62
+ color: #60a5fa;
63
+ }
64
+
65
+ .home-card-icon--green {
66
+ background: rgba(52, 211, 153, 0.12);
67
+ color: #34d399;
68
+ }
69
+
70
+ .home-card-icon--green svg {
71
+ color: #34d399;
72
+ }
73
+
74
+ .home-card-icon--amber {
75
+ background: rgba(251, 191, 36, 0.12);
76
+ color: #fbbf24;
77
+ }
78
+
79
+ .home-card-icon--amber svg {
80
+ color: #fbbf24;
81
+ }
82
+
83
+ .home-card-icon--red {
84
+ background: rgba(248, 113, 113, 0.12);
85
+ color: #f87171;
86
+ }
87
+
88
+ .home-card-icon--red svg {
89
+ color: #f87171;
90
+ }
91
+
92
+ .home-card-icon--slate {
93
+ background: rgba(148, 163, 184, 0.12);
94
+ color: #94a3b8;
95
+ }
96
+
97
+ .home-card-icon--slate svg {
98
+ color: #94a3b8;
99
+ }
100
+
101
+ .home-card-icon--cyan {
102
+ background: rgba(14, 165, 233, 0.12);
103
+ color: #0ea5e9;
104
+ }
105
+
106
+ .home-card-icon--cyan svg {
107
+ color: #0ea5e9;
108
+ }
109
+
110
+ .home-card-icon--pink {
111
+ background: rgba(244, 114, 182, 0.12);
112
+ color: #f472b6;
113
+ }
114
+
115
+ .home-card-icon--pink svg {
116
+ color: #f472b6;
117
+ }
118
+
119
+ /* ── Divider between features and workspaces ─────────────────── */
120
+ .home-card-divider {
121
+ max-width: 1152px;
122
+ margin: 0 auto 48px;
123
+ border: none;
124
+ border-top: 1px solid var(--zp-c-divider);
125
+ }
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Home page overrides — hero image sizing, Rspress card/code tweaks.
3
+ */
4
+
5
+ /* ── Rspress home hero image sizing ──────────────────────── */
6
+ html .rp-home-hero__image {
7
+ flex: none;
8
+ width: 548px;
9
+ margin-left: 24px;
10
+ }
11
+
12
+ html .rp-home-hero__image-img {
13
+ width: 548px;
14
+ height: auto;
15
+ }
16
+
17
+ /* ── Rspress home hero container ────────────────────────── */
18
+ html .rp-home-hero {
19
+ gap: 16px !important;
20
+ }
21
+
22
+ /* ── Rspress home hero text sizing & spacing ───────────── */
23
+ html .rp-home-hero__name {
24
+ font-size: 1.25rem !important;
25
+ }
26
+
27
+ html .rp-home-hero__text {
28
+ font-size: 2.5rem !important;
29
+ margin-bottom: 8px !important;
30
+ }
31
+
32
+ html .rp-home-hero__tagline {
33
+ padding-bottom: 16px !important;
34
+ }
35
+
36
+ @media (max-width: 1000px) {
37
+ html .rp-home-hero__image {
38
+ width: 400px;
39
+ margin-left: 0;
40
+ margin-top: 32px;
41
+ }
42
+
43
+ html .rp-home-hero__image-img {
44
+ width: 400px;
45
+ }
46
+ }
47
+
48
+ /* ── Code blocks ─────────────────────────────────────────── */
49
+ div[class*='language-'] {
50
+ border-radius: var(--rp-radius) !important;
51
+ }
52
+
53
+ code:not(pre code) {
54
+ border-radius: var(--rp-radius-small);
55
+ }
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Rspress brand overrides (purple / violet).
3
+ *
4
+ * html:root bumps specificity (0,1,1) above Rspress vars.css
5
+ * (:root = 0,1,0) so these always win regardless of load order.
6
+ */
7
+
8
+ html:root {
9
+ /* Fonts — map Geist into Rspress's font stack */
10
+ --rp-font-family-base: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
11
+ --rp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
12
+
13
+ /* Brand colors */
14
+ --rp-c-brand: #a78bfa;
15
+ --rp-c-brand-light: #c4b5fd;
16
+ --rp-c-brand-lighter: #ddd6fe;
17
+ --rp-c-brand-dark: #8b5cf6;
18
+ --rp-c-brand-darker: #7c3aed;
19
+ --rp-c-brand-tint: rgba(167, 139, 250, 0.14);
20
+
21
+ /* Solid home background — overrides Rspress default radial gradients */
22
+ --rp-home-background-bg: #fff;
23
+ }
24
+
25
+ /* ── LLMs UI — hide the view-options trigger button (dropdown arrow) ── */
26
+ html .rp-llms-view-options__trigger {
27
+ display: none;
28
+ }
29
+
30
+ html .rp-llms-container {
31
+ float: right;
32
+ margin-top: 8px;
33
+ margin-bottom: 0;
34
+ }
35
+
36
+ html .rp-doc h1.rp-toc-include {
37
+ display: inline;
38
+ }
39
+
40
+ /* ── Buttons — pill shape ─────────────────────────────────── */
41
+ html .rp-button--medium,
42
+ html .rp-button--big {
43
+ border-radius: 9999px;
44
+ }
45
+
46
+ /* ── Tables ──────────────────────────────────────────────── */
47
+ html table {
48
+ border-radius: var(--rp-radius);
49
+ overflow: hidden;
50
+ }
51
+
52
+ /* ── Dark-mode overrides (zpress custom vars) ─────────────── */
53
+ .rp-dark,
54
+ html[data-dark='true'] {
55
+ --zp-c-bg: #141414;
56
+ --zp-c-bg-alt: #1a1a1a;
57
+ --zp-c-bg-elv: #1f1f1f;
58
+ --zp-c-bg-soft: #222222;
59
+ --zp-c-bg-icon: #3d3d3d;
60
+
61
+ --zp-c-text-1: #fbfbfb;
62
+ --zp-c-text-2: rgba(251, 251, 251, 0.72);
63
+ --zp-c-text-3: rgba(251, 251, 251, 0.48);
64
+
65
+ --zp-c-divider: #2e2e2e;
66
+ --zp-c-border: #3a3a3a;
67
+ --zp-c-gutter: #1a1a1a;
68
+
69
+ --zp-c-brand-1: #a78bfa;
70
+ --zp-c-brand-2: #8b5cf6;
71
+ --zp-c-brand-3: #7c3aed;
72
+ --zp-c-brand-soft: rgba(167, 139, 250, 0.14);
73
+
74
+ --zp-code-block-bg: #1a1a1a;
75
+
76
+ --zp-button-brand-bg: #7c3aed;
77
+ --zp-button-brand-hover-bg: #8b5cf6;
78
+ --zp-button-brand-active-bg: #6d28d9;
79
+ --zp-button-brand-text: #fbfbfb;
80
+ }
81
+
82
+ /* ── Dark-mode overrides (Rspress vars) ──────────────────────
83
+ * html.rp-dark bumps specificity (0,1,1) above Rspress vars.css
84
+ * .rp-dark (0,1,0) so these always win regardless of load order. */
85
+ html.rp-dark {
86
+ --rp-c-bg: #141414;
87
+ --rp-c-bg-soft: #222222;
88
+ --rp-c-bg-mute: #1f1f1f;
89
+
90
+ --rp-c-text-1: #fbfbfb;
91
+ --rp-c-text-2: rgba(251, 251, 251, 0.72);
92
+ --rp-c-text-3: rgba(251, 251, 251, 0.48);
93
+
94
+ --rp-c-divider: #2e2e2e;
95
+
96
+ --rp-c-brand: #a78bfa;
97
+ --rp-c-brand-light: #c4b5fd;
98
+ --rp-c-brand-lighter: #ddd6fe;
99
+ --rp-c-brand-dark: #8b5cf6;
100
+ --rp-c-brand-darker: #7c3aed;
101
+ --rp-c-brand-tint: rgba(167, 139, 250, 0.14);
102
+ --rp-c-link: var(--rp-c-brand-light);
103
+
104
+ --rp-code-block-bg: #1a1a1a;
105
+
106
+ /* Solid home background — overrides Rspress default radial gradients */
107
+ --rp-home-background-bg: #141414;
108
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Dark scrollbar overrides.
3
+ */
4
+
5
+ .rp-dark ::-webkit-scrollbar,
6
+ html[data-dark='true'] ::-webkit-scrollbar {
7
+ width: 6px;
8
+ height: 6px;
9
+ }
10
+
11
+ .rp-dark ::-webkit-scrollbar-track,
12
+ html[data-dark='true'] ::-webkit-scrollbar-track {
13
+ background: transparent;
14
+ }
15
+
16
+ .rp-dark ::-webkit-scrollbar-thumb,
17
+ html[data-dark='true'] ::-webkit-scrollbar-thumb {
18
+ background: #3a3a3a;
19
+ border-radius: 3px;
20
+ }
21
+
22
+ .rp-dark ::-webkit-scrollbar-thumb:hover,
23
+ html[data-dark='true'] ::-webkit-scrollbar-thumb:hover {
24
+ background: #4a4a4a;
25
+ }
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Section landing page cards — emitted by the sync engine as raw HTML.
3
+ */
4
+
5
+ /* ── Section grid ────────────────────────────────────────── */
6
+ .section-grid {
7
+ display: grid;
8
+ grid-template-columns: repeat(2, 1fr);
9
+ gap: 12px;
10
+ margin-top: 24px;
11
+ }
12
+
13
+ .section-card {
14
+ display: flex;
15
+ align-items: flex-start;
16
+ gap: 14px;
17
+ padding: 16px 18px;
18
+ border-radius: var(--rp-radius);
19
+ border: 1px solid var(--zp-c-border);
20
+ background: var(--zp-c-bg-soft);
21
+ text-decoration: none !important;
22
+ transition:
23
+ border-color 0.2s,
24
+ background 0.2s,
25
+ box-shadow 0.2s;
26
+ }
27
+
28
+ .section-card:hover {
29
+ border-color: var(--zp-c-brand-1);
30
+ background: var(--zp-c-bg-elv);
31
+ box-shadow: 0 2px 12px rgba(167, 139, 250, 0.08);
32
+ }
33
+
34
+ .section-icon {
35
+ display: flex;
36
+ align-items: center;
37
+ justify-content: center;
38
+ width: 36px;
39
+ height: 36px;
40
+ border-radius: 4px;
41
+ flex-shrink: 0;
42
+ }
43
+
44
+ .section-icon svg {
45
+ width: 18px;
46
+ height: 18px;
47
+ }
48
+
49
+ /* ── Section icon colors ─────────────────────────────────── */
50
+ .section-icon--blue {
51
+ background: rgba(96, 165, 250, 0.12);
52
+ color: #60a5fa;
53
+ }
54
+
55
+ .section-icon--purple {
56
+ background: rgba(167, 139, 250, 0.12);
57
+ color: #a78bfa;
58
+ }
59
+
60
+ .section-icon--green {
61
+ background: rgba(52, 211, 153, 0.12);
62
+ color: #34d399;
63
+ }
64
+
65
+ .section-icon--amber {
66
+ background: rgba(251, 191, 36, 0.12);
67
+ color: #fbbf24;
68
+ }
69
+
70
+ .section-icon--red {
71
+ background: rgba(248, 113, 113, 0.12);
72
+ color: #f87171;
73
+ }
74
+
75
+ .section-icon--slate {
76
+ background: rgba(148, 163, 184, 0.12);
77
+ color: #94a3b8;
78
+ }
79
+
80
+ .section-icon--cyan {
81
+ background: rgba(14, 165, 233, 0.12);
82
+ color: #0ea5e9;
83
+ }
84
+
85
+ .section-icon--pink {
86
+ background: rgba(244, 114, 182, 0.12);
87
+ color: #f472b6;
88
+ }
89
+
90
+ .section-info {
91
+ display: flex;
92
+ flex-direction: column;
93
+ gap: 2px;
94
+ min-width: 0;
95
+ }
96
+
97
+ .section-title {
98
+ font-size: 14px;
99
+ font-weight: 600;
100
+ color: var(--zp-c-text-1);
101
+ line-height: 1.4;
102
+ }
103
+
104
+ .section-desc {
105
+ font-size: 13px;
106
+ color: var(--zp-c-text-2);
107
+ line-height: 1.5;
108
+ }
109
+
110
+ /* ── Responsive ──────────────────────────────────────────── */
111
+ @media (max-width: 768px) {
112
+ .section-grid {
113
+ grid-template-columns: 1fr;
114
+ }
115
+ }
@@ -0,0 +1,9 @@
1
+ /* ── Transitions (960px–1439px) ──────────────────────────── */
2
+
3
+ @media (min-width: 960px) and (max-width: 1439px) {
4
+ .rspress-sidebar {
5
+ transition:
6
+ width 0.3s ease,
7
+ min-width 0.3s ease;
8
+ }
9
+ }
@@ -0,0 +1,48 @@
1
+ /**
2
+ * zpress custom properties (--zp-* prefix).
3
+ *
4
+ * Palette derived from apps/console globals.css:
5
+ * --background : oklch(0.1448 0 0) ≈ #1a1a1a
6
+ * --foreground : oklch(0.9851 0 0) ≈ #fbfbfb
7
+ * --primary : oklch(0.78 0.13 291) ≈ #a78bfa (purple/violet)
8
+ * --border : oklch(0.3407 0 0) ≈ #4a4a4a
9
+ */
10
+
11
+ :root {
12
+ --zp-font-family-base: 'Geist Pixel Square', ui-sans-serif, system-ui, sans-serif;
13
+ --zp-font-family-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', monospace;
14
+ --zp-layout-max-width: 1680px;
15
+
16
+ /* Radii — override Rspress defaults (1rem / 0.5rem / 1.5rem) */
17
+ --rp-radius: 0.25rem;
18
+ --rp-radius-small: 0.125rem;
19
+ --rp-radius-large: 0.5rem;
20
+
21
+ --zp-c-brand-1: #a78bfa;
22
+ --zp-c-brand-2: #8b5cf6;
23
+ --zp-c-brand-3: #7c3aed;
24
+ --zp-c-brand-soft: rgba(167, 139, 250, 0.14);
25
+
26
+ /* Light-mode surface & text defaults — ensures --zp-c-* variables
27
+ resolve even when .rp-dark is not applied. */
28
+ --zp-c-bg: #ffffff;
29
+ --zp-c-bg-alt: #f9f9f9;
30
+ --zp-c-bg-elv: #f5f5f5;
31
+ --zp-c-bg-soft: #f0f0f0;
32
+ --zp-c-bg-icon: #cccccc;
33
+
34
+ --zp-c-text-1: #1a1a1a;
35
+ --zp-c-text-2: rgba(26, 26, 26, 0.72);
36
+ --zp-c-text-3: rgba(26, 26, 26, 0.48);
37
+
38
+ --zp-c-divider: #e2e2e2;
39
+ --zp-c-border: #d0d0d0;
40
+ --zp-c-gutter: #f5f5f5;
41
+
42
+ --zp-code-block-bg: #f5f5f5;
43
+
44
+ --zp-button-brand-bg: #7c3aed;
45
+ --zp-button-brand-hover-bg: #8b5cf6;
46
+ --zp-button-brand-active-bg: #6d28d9;
47
+ --zp-button-brand-text: #ffffff;
48
+ }