@commonpub/layer 0.4.0 → 0.4.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.
- package/components/SiteLogo.vue +41 -2
- package/package.json +6 -6
- package/theme/agora-dark.css +209 -7
- package/theme/agora.css +322 -16
package/components/SiteLogo.vue
CHANGED
|
@@ -1,7 +1,30 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
const { themeId } = useTheme();
|
|
3
|
+
const isAgora = computed(() => themeId.value === 'agora' || themeId.value === 'agora-dark');
|
|
4
|
+
</script>
|
|
5
|
+
|
|
1
6
|
<template>
|
|
2
7
|
<span class="cpub-site-logo">
|
|
3
|
-
<
|
|
4
|
-
|
|
8
|
+
<template v-if="isAgora">
|
|
9
|
+
<!-- Town Square mark: 4 blocks + green center -->
|
|
10
|
+
<svg class="cpub-logo-mark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" width="22" height="22" aria-hidden="true">
|
|
11
|
+
<rect x="18" y="18" width="72" height="72" fill="none" stroke="currentColor" stroke-width="7" stroke-linejoin="round"/>
|
|
12
|
+
<rect x="110" y="18" width="72" height="72" fill="none" stroke="currentColor" stroke-width="7" stroke-linejoin="round"/>
|
|
13
|
+
<rect x="18" y="110" width="72" height="72" fill="none" stroke="currentColor" stroke-width="7" stroke-linejoin="round"/>
|
|
14
|
+
<rect x="110" y="110" width="72" height="72" fill="none" stroke="currentColor" stroke-width="7" stroke-linejoin="round"/>
|
|
15
|
+
<rect x="88" y="88" width="24" height="24" fill="var(--accent, #3d8b5e)"/>
|
|
16
|
+
<!-- Content lines: 1 green accent per block -->
|
|
17
|
+
<line x1="34" y1="54" x2="72" y2="54" stroke="var(--accent, #3d8b5e)" stroke-width="3.5" stroke-linecap="round" opacity="0.7"/>
|
|
18
|
+
<line x1="128" y1="46" x2="166" y2="46" stroke="var(--accent, #3d8b5e)" stroke-width="3.5" stroke-linecap="round" opacity="0.7"/>
|
|
19
|
+
<line x1="34" y1="148" x2="68" y2="148" stroke="var(--accent, #3d8b5e)" stroke-width="3.5" stroke-linecap="round" opacity="0.7"/>
|
|
20
|
+
<line x1="128" y1="142" x2="162" y2="142" stroke="var(--accent, #3d8b5e)" stroke-width="3.5" stroke-linecap="round" opacity="0.7"/>
|
|
21
|
+
</svg>
|
|
22
|
+
<span class="cpub-logo-name cpub-logo-name--agora">Common<span class="cpub-logo-pub">Pub</span></span>
|
|
23
|
+
</template>
|
|
24
|
+
<template v-else>
|
|
25
|
+
<span class="cpub-logo-bracket">[</span>C<span class="cpub-logo-bracket">]</span>
|
|
26
|
+
<span class="cpub-logo-name">CommonPub</span>
|
|
27
|
+
</template>
|
|
5
28
|
</span>
|
|
6
29
|
</template>
|
|
7
30
|
|
|
@@ -18,4 +41,20 @@
|
|
|
18
41
|
}
|
|
19
42
|
.cpub-logo-bracket { color: var(--accent); font-size: 15px; }
|
|
20
43
|
.cpub-logo-name { margin-left: 2px; }
|
|
44
|
+
|
|
45
|
+
/* Agora wordmark */
|
|
46
|
+
.cpub-logo-mark {
|
|
47
|
+
margin-right: 6px;
|
|
48
|
+
flex-shrink: 0;
|
|
49
|
+
}
|
|
50
|
+
.cpub-logo-name--agora {
|
|
51
|
+
font-family: var(--font-display, var(--font-heading));
|
|
52
|
+
font-weight: 700;
|
|
53
|
+
font-size: 16px;
|
|
54
|
+
letter-spacing: -0.02em;
|
|
55
|
+
margin-left: 0;
|
|
56
|
+
}
|
|
57
|
+
.cpub-logo-pub {
|
|
58
|
+
color: var(--accent);
|
|
59
|
+
}
|
|
21
60
|
</style>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@commonpub/layer",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./nuxt.config.ts",
|
|
6
6
|
"files": [
|
|
@@ -50,15 +50,15 @@
|
|
|
50
50
|
"vue": "^3.4.0",
|
|
51
51
|
"vue-router": "^4.3.0",
|
|
52
52
|
"zod": "^4.3.6",
|
|
53
|
-
"@commonpub/config": "0.8.0",
|
|
54
53
|
"@commonpub/auth": "0.5.0",
|
|
55
|
-
"@commonpub/
|
|
54
|
+
"@commonpub/config": "0.8.0",
|
|
56
55
|
"@commonpub/docs": "0.5.2",
|
|
57
|
-
"@commonpub/
|
|
58
|
-
"@commonpub/
|
|
56
|
+
"@commonpub/protocol": "0.9.5",
|
|
57
|
+
"@commonpub/editor": "0.5.0",
|
|
59
58
|
"@commonpub/server": "2.22.0",
|
|
60
59
|
"@commonpub/schema": "0.8.13",
|
|
61
|
-
"@commonpub/
|
|
60
|
+
"@commonpub/ui": "0.8.2",
|
|
61
|
+
"@commonpub/learning": "0.5.0"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@testing-library/jest-dom": "^6.9.1",
|
package/theme/agora-dark.css
CHANGED
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
/* ===========================================
|
|
3
3
|
CommonPub Agora Theme — Dark (Grove)
|
|
4
4
|
Warm dark surfaces with green-tinted blacks,
|
|
5
|
-
green accent, serif display font
|
|
5
|
+
commons green accent, serif display font,
|
|
6
|
+
paper texture, snappy easing.
|
|
7
|
+
|
|
8
|
+
Complete design system override — mirrors
|
|
9
|
+
all agora.css component overrides.
|
|
6
10
|
=========================================== */
|
|
7
11
|
|
|
8
12
|
[data-theme="agora-dark"] {
|
|
@@ -34,9 +38,9 @@
|
|
|
34
38
|
--color-on-primary: #ffffff;
|
|
35
39
|
--color-primary-hover: #4aa06e;
|
|
36
40
|
|
|
37
|
-
/* === BORDERS (grove-tinted) === */
|
|
38
|
-
--border:
|
|
39
|
-
--border2:
|
|
41
|
+
/* === BORDERS (grove-tinted, soft) === */
|
|
42
|
+
--border: rgba(232, 232, 226, 0.15);
|
|
43
|
+
--border2: rgba(232, 232, 226, 0.08);
|
|
40
44
|
|
|
41
45
|
--color-border: var(--border2);
|
|
42
46
|
--color-border-strong: var(--border);
|
|
@@ -141,17 +145,215 @@
|
|
|
141
145
|
--shadow-lg: 6px 6px 0 rgba(0, 0, 0, 0.4);
|
|
142
146
|
--shadow-xl: 8px 8px 0 rgba(0, 0, 0, 0.4);
|
|
143
147
|
|
|
148
|
+
/* === TRANSITIONS (snappy) === */
|
|
149
|
+
--transition-fast: 120ms cubic-bezier(0.22, 1, 0.36, 1);
|
|
150
|
+
--transition-default: 250ms cubic-bezier(0.22, 1, 0.36, 1);
|
|
151
|
+
--transition-slow: 350ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
152
|
+
|
|
144
153
|
/* === FOCUS === */
|
|
145
|
-
--focus-ring:
|
|
154
|
+
--focus-ring: 0 0 0 3px rgba(74, 160, 110, 0.25);
|
|
146
155
|
|
|
147
156
|
color-scheme: dark;
|
|
148
157
|
}
|
|
158
|
+
} /* end @layer commonpub — token overrides only */
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
/* ═══════════════════════════════════════════
|
|
162
|
+
COMPONENT OVERRIDES (outside @layer so they
|
|
163
|
+
beat Vue scoped styles)
|
|
164
|
+
═══════════════════════════════════════════ */
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
/* ═══════════════════════════════════════════
|
|
168
|
+
PAPER TEXTURE — darker, grove-tinted
|
|
169
|
+
═══════════════════════════════════════════ */
|
|
170
|
+
|
|
171
|
+
[data-theme="agora-dark"] body::after {
|
|
172
|
+
content: '';
|
|
173
|
+
position: fixed;
|
|
174
|
+
inset: 0;
|
|
175
|
+
pointer-events: none;
|
|
176
|
+
z-index: 9999;
|
|
177
|
+
opacity: 0.03;
|
|
178
|
+
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
/* ═══════════════════════════════════════════
|
|
183
|
+
TYPOGRAPHY — Serif headings
|
|
184
|
+
═══════════════════════════════════════════ */
|
|
185
|
+
|
|
186
|
+
[data-theme="agora-dark"] h1,
|
|
187
|
+
[data-theme="agora-dark"] h2,
|
|
188
|
+
[data-theme="agora-dark"] h3 {
|
|
189
|
+
font-family: var(--font-display);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
[data-theme="agora-dark"] :focus-visible {
|
|
193
|
+
outline: none;
|
|
194
|
+
box-shadow: var(--focus-ring);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
/* ═══════════════════════════════════════════
|
|
199
|
+
COMPONENT OVERRIDES — mirrors agora.css
|
|
200
|
+
═══════════════════════════════════════════ */
|
|
201
|
+
|
|
202
|
+
/* Topbar */
|
|
203
|
+
[data-theme="agora-dark"] .cpub-topbar {
|
|
204
|
+
background: var(--surface);
|
|
205
|
+
border-bottom-color: var(--border);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
[data-theme="agora-dark"] .cpub-site-logo .cpub-logo-name {
|
|
209
|
+
font-family: var(--font-display);
|
|
210
|
+
font-weight: 700;
|
|
211
|
+
letter-spacing: -0.02em;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
[data-theme="agora-dark"] .cpub-site-logo .cpub-logo-bracket {
|
|
215
|
+
color: var(--accent);
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/* Buttons */
|
|
219
|
+
[data-theme="agora-dark"] .cpub-btn {
|
|
220
|
+
border-color: var(--border);
|
|
221
|
+
transition: transform var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
[data-theme="agora-dark"] .cpub-btn:hover {
|
|
225
|
+
transform: translateY(-1px);
|
|
226
|
+
box-shadow: var(--shadow-sm);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
[data-theme="agora-dark"] .cpub-btn:active {
|
|
230
|
+
transform: translateY(0);
|
|
231
|
+
box-shadow: none;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
[data-theme="agora-dark"] .cpub-btn-primary {
|
|
235
|
+
background: var(--accent);
|
|
236
|
+
border-color: #2a6342;
|
|
237
|
+
box-shadow: var(--shadow-md);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
[data-theme="agora-dark"] .cpub-btn-primary:hover {
|
|
241
|
+
background: #5ab87e;
|
|
242
|
+
box-shadow: var(--shadow-accent);
|
|
243
|
+
transform: translateY(-1px);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
[data-theme="agora-dark"] .cpub-btn-ghost {
|
|
247
|
+
color: var(--accent);
|
|
248
|
+
border-color: transparent;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
[data-theme="agora-dark"] .cpub-btn-ghost:hover {
|
|
252
|
+
color: #5ab87e;
|
|
253
|
+
background: var(--accent-bg);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/* Cards */
|
|
257
|
+
[data-theme="agora-dark"] .cpub-sb-card,
|
|
258
|
+
[data-theme="agora-dark"] .cpub-stat-card {
|
|
259
|
+
background: var(--surface);
|
|
260
|
+
border-color: var(--border);
|
|
261
|
+
box-shadow: var(--shadow-sm);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
[data-theme="agora-dark"] .cpub-content-card {
|
|
265
|
+
border-color: var(--border);
|
|
266
|
+
background: var(--surface);
|
|
267
|
+
transition: transform var(--transition-fast), box-shadow var(--transition-fast), border-color var(--transition-fast);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
[data-theme="agora-dark"] .cpub-content-card:hover {
|
|
271
|
+
border-left-color: var(--accent);
|
|
272
|
+
border-left-width: 4px;
|
|
273
|
+
transform: translateY(-2px);
|
|
274
|
+
box-shadow: var(--shadow-md);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
[data-theme="agora-dark"] .cpub-content-card h3,
|
|
278
|
+
[data-theme="agora-dark"] .cpub-content-card .cpub-card-title {
|
|
279
|
+
font-family: var(--font-display);
|
|
280
|
+
font-weight: 700;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/* Inputs */
|
|
284
|
+
[data-theme="agora-dark"] .cpub-input,
|
|
285
|
+
[data-theme="agora-dark"] .cpub-textarea,
|
|
286
|
+
[data-theme="agora-dark"] .cpub-select {
|
|
287
|
+
border-color: var(--border);
|
|
288
|
+
background: var(--surface);
|
|
289
|
+
transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
[data-theme="agora-dark"] .cpub-input:focus,
|
|
293
|
+
[data-theme="agora-dark"] .cpub-textarea:focus,
|
|
294
|
+
[data-theme="agora-dark"] .cpub-select:focus {
|
|
295
|
+
border-color: var(--accent);
|
|
296
|
+
box-shadow: var(--focus-ring);
|
|
297
|
+
outline: none;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/* Tags */
|
|
301
|
+
[data-theme="agora-dark"] .cpub-tag {
|
|
302
|
+
border-width: 1px;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/* Section titles */
|
|
306
|
+
[data-theme="agora-dark"] .cpub-section-title-lg,
|
|
307
|
+
[data-theme="agora-dark"] .cpub-section-title-sm {
|
|
308
|
+
font-family: var(--font-display);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/* Prose */
|
|
312
|
+
[data-theme="agora-dark"] .cpub-prose h1,
|
|
313
|
+
[data-theme="agora-dark"] .cpub-prose h2,
|
|
314
|
+
[data-theme="agora-dark"] .cpub-prose h3,
|
|
315
|
+
[data-theme="agora-dark"] .cpub-prose h4 {
|
|
316
|
+
font-family: var(--font-display);
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
[data-theme="agora-dark"] .cpub-prose blockquote {
|
|
320
|
+
border-left-color: var(--accent);
|
|
321
|
+
background: var(--accent-bg);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
[data-theme="agora-dark"] .cpub-prose a {
|
|
325
|
+
color: var(--accent);
|
|
326
|
+
text-decoration-color: rgba(74, 160, 110, 0.3);
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/* Admin */
|
|
330
|
+
[data-theme="agora-dark"] .admin-brand {
|
|
331
|
+
font-family: var(--font-display);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
[data-theme="agora-dark"] .admin-nav-link.router-link-exact-active {
|
|
335
|
+
color: var(--accent);
|
|
336
|
+
background: var(--accent-bg);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
[data-theme="agora-dark"] .admin-badge {
|
|
340
|
+
background: var(--accent);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/* Footer */
|
|
344
|
+
[data-theme="agora-dark"] .cpub-footer-logo .cpub-logo-name {
|
|
345
|
+
font-family: var(--font-display);
|
|
346
|
+
font-weight: 700;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
/* ═══════════════════════════════════════════
|
|
351
|
+
CONTENT TYPE BADGE COLORS (Agora dark)
|
|
352
|
+
═══════════════════════════════════════════ */
|
|
149
353
|
|
|
150
|
-
/* === CONTENT TYPE BADGE COLORS (Agora dark palette) === */
|
|
151
354
|
[data-theme="agora-dark"] [data-content-type="article"] { --badge-color: #6a9fd0; --badge-bg: rgba(106, 159, 208, 0.12); }
|
|
152
355
|
[data-theme="agora-dark"] [data-content-type="blog"] { --badge-color: #4aa06e; --badge-bg: rgba(74, 160, 110, 0.12); }
|
|
153
356
|
[data-theme="agora-dark"] [data-content-type="project"] { --badge-color: #9a7ec4; --badge-bg: rgba(154, 126, 196, 0.12); }
|
|
154
357
|
[data-theme="agora-dark"] [data-content-type="explainer"] { --badge-color: #3dbcab; --badge-bg: rgba(61, 188, 171, 0.12); }
|
|
155
358
|
[data-theme="agora-dark"] [data-content-type="video"] { --badge-color: #d85e55; --badge-bg: rgba(216, 94, 85, 0.12); }
|
|
156
359
|
[data-theme="agora-dark"] [data-content-type="tutorial"] { --badge-color: #daa040; --badge-bg: rgba(218, 160, 64, 0.12); }
|
|
157
|
-
}
|
package/theme/agora.css
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
@layer commonpub {
|
|
2
2
|
/* ===========================================
|
|
3
3
|
CommonPub Agora Theme — Light
|
|
4
|
+
"Where makers gather, build, and share."
|
|
5
|
+
|
|
4
6
|
Warm institutional aesthetic: parchment
|
|
5
|
-
backgrounds, green accent,
|
|
6
|
-
|
|
7
|
+
backgrounds, commons green accent, Fraunces
|
|
8
|
+
serif display, Work Sans body, soft rgba
|
|
9
|
+
borders, paper texture, snappy easing.
|
|
10
|
+
|
|
11
|
+
This is a COMPLETE design system, not just
|
|
12
|
+
a color swap. It overrides tokens AND
|
|
13
|
+
component styles.
|
|
7
14
|
=========================================== */
|
|
8
15
|
|
|
9
16
|
[data-theme="agora"] {
|
|
@@ -32,9 +39,9 @@
|
|
|
32
39
|
--color-text-muted: var(--text-faint);
|
|
33
40
|
--color-text-inverse: #f7f4ed;
|
|
34
41
|
|
|
35
|
-
/* === BORDERS (warm) === */
|
|
36
|
-
--border:
|
|
37
|
-
--border2:
|
|
42
|
+
/* === BORDERS (soft, warm) === */
|
|
43
|
+
--border: rgba(26, 26, 26, 0.25);
|
|
44
|
+
--border2: rgba(26, 26, 26, 0.12);
|
|
38
45
|
|
|
39
46
|
--color-border: var(--border2);
|
|
40
47
|
--color-border-strong: var(--border);
|
|
@@ -98,8 +105,8 @@
|
|
|
98
105
|
--color-badge-overlay: rgba(26, 26, 26, 0.75);
|
|
99
106
|
|
|
100
107
|
/* === INTERACTIVE === */
|
|
101
|
-
--color-link:
|
|
102
|
-
--color-link-hover: #
|
|
108
|
+
--color-link: #2a6342;
|
|
109
|
+
--color-link-hover: #1e4f32;
|
|
103
110
|
|
|
104
111
|
/* === TYPOGRAPHY (warm, distinctive) === */
|
|
105
112
|
--font-sans: 'Work Sans', system-ui, -apple-system, sans-serif;
|
|
@@ -128,7 +135,7 @@
|
|
|
128
135
|
--leading-normal: 1.7;
|
|
129
136
|
--leading-relaxed: 1.9;
|
|
130
137
|
|
|
131
|
-
/* Letter Spacing */
|
|
138
|
+
/* Letter Spacing (wider for Agora's institutional feel) */
|
|
132
139
|
--tracking-tight: -0.02em;
|
|
133
140
|
--tracking-normal: 0;
|
|
134
141
|
--tracking-wide: 0.06em;
|
|
@@ -136,21 +143,320 @@
|
|
|
136
143
|
--tracking-widest: 0.16em;
|
|
137
144
|
|
|
138
145
|
/* === SHADOWS (offset, warm ink) === */
|
|
139
|
-
--shadow-sm: 2px 2px 0
|
|
140
|
-
--shadow-md: 4px 4px 0
|
|
141
|
-
--shadow-lg: 6px 6px 0
|
|
142
|
-
--shadow-xl: 8px 8px 0
|
|
146
|
+
--shadow-sm: 2px 2px 0 rgba(26, 26, 26, 0.25);
|
|
147
|
+
--shadow-md: 4px 4px 0 rgba(26, 26, 26, 0.25);
|
|
148
|
+
--shadow-lg: 6px 6px 0 rgba(26, 26, 26, 0.25);
|
|
149
|
+
--shadow-xl: 8px 8px 0 rgba(26, 26, 26, 0.25);
|
|
143
150
|
--shadow-accent: 4px 4px 0 var(--accent);
|
|
144
151
|
|
|
145
|
-
/* ===
|
|
146
|
-
--
|
|
152
|
+
/* === TRANSITIONS (snappy) === */
|
|
153
|
+
--transition-fast: 120ms cubic-bezier(0.22, 1, 0.36, 1);
|
|
154
|
+
--transition-default: 250ms cubic-bezier(0.22, 1, 0.36, 1);
|
|
155
|
+
--transition-slow: 350ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
156
|
+
|
|
157
|
+
/* === FOCUS (glow instead of outline) === */
|
|
158
|
+
--focus-ring: 0 0 0 3px rgba(61, 139, 94, 0.2);
|
|
159
|
+
}
|
|
160
|
+
} /* end @layer commonpub — token overrides only */
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
/* ═══════════════════════════════════════════
|
|
164
|
+
COMPONENT OVERRIDES (outside @layer so they
|
|
165
|
+
beat Vue scoped styles)
|
|
166
|
+
═══════════════════════════════════════════ */
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
/* ═══════════════════════════════════════════
|
|
170
|
+
PAPER TEXTURE OVERLAY
|
|
171
|
+
Subtle noise that gives everything a
|
|
172
|
+
tactile, printed-on-paper feel.
|
|
173
|
+
═══════════════════════════════════════════ */
|
|
174
|
+
|
|
175
|
+
[data-theme="agora"] body::after {
|
|
176
|
+
content: '';
|
|
177
|
+
position: fixed;
|
|
178
|
+
inset: 0;
|
|
179
|
+
pointer-events: none;
|
|
180
|
+
z-index: 9999;
|
|
181
|
+
opacity: 0.02;
|
|
182
|
+
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
/* ═══════════════════════════════════════════
|
|
187
|
+
TYPOGRAPHY OVERRIDES
|
|
188
|
+
Fraunces for display/headings, Work Sans
|
|
189
|
+
for body, wider tracking on labels.
|
|
190
|
+
═══════════════════════════════════════════ */
|
|
191
|
+
|
|
192
|
+
[data-theme="agora"] h1,
|
|
193
|
+
[data-theme="agora"] h2,
|
|
194
|
+
[data-theme="agora"] h3 {
|
|
195
|
+
font-family: var(--font-display);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/* Focus: glow instead of outline */
|
|
199
|
+
[data-theme="agora"] :focus-visible {
|
|
200
|
+
outline: none;
|
|
201
|
+
box-shadow: var(--focus-ring);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
/* ═══════════════════════════════════════════
|
|
206
|
+
COMPONENT: TOPBAR / NAVIGATION
|
|
207
|
+
═══════════════════════════════════════════ */
|
|
208
|
+
|
|
209
|
+
[data-theme="agora"] .cpub-topbar {
|
|
210
|
+
background: var(--surface);
|
|
211
|
+
border-bottom-color: var(--border);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/* Agora wordmark in topbar */
|
|
215
|
+
[data-theme="agora"] .cpub-site-logo .cpub-logo-name {
|
|
216
|
+
font-family: var(--font-display);
|
|
217
|
+
font-weight: 700;
|
|
218
|
+
letter-spacing: -0.02em;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
[data-theme="agora"] .cpub-site-logo .cpub-logo-bracket {
|
|
222
|
+
color: var(--accent);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
[data-theme="agora"] .cpub-topbar-link.router-link-active {
|
|
226
|
+
color: var(--accent);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
/* ═══════════════════════════════════════════
|
|
231
|
+
COMPONENT: BUTTONS
|
|
232
|
+
Snappy easing, green primary, softer borders.
|
|
233
|
+
═══════════════════════════════════════════ */
|
|
234
|
+
|
|
235
|
+
[data-theme="agora"] .cpub-btn {
|
|
236
|
+
border-color: var(--border);
|
|
237
|
+
transition: transform var(--transition-fast), box-shadow var(--transition-fast), background var(--transition-fast);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
[data-theme="agora"] .cpub-btn:hover {
|
|
241
|
+
transform: translateY(-1px);
|
|
242
|
+
box-shadow: var(--shadow-sm);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
[data-theme="agora"] .cpub-btn:active {
|
|
246
|
+
transform: translateY(0);
|
|
247
|
+
box-shadow: none;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
[data-theme="agora"] .cpub-btn-primary {
|
|
251
|
+
background: var(--accent);
|
|
252
|
+
border-color: #2a6342;
|
|
253
|
+
box-shadow: var(--shadow-md);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
[data-theme="agora"] .cpub-btn-primary:hover {
|
|
257
|
+
background: #348050;
|
|
258
|
+
box-shadow: var(--shadow-accent);
|
|
259
|
+
transform: translateY(-1px);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
[data-theme="agora"] .cpub-btn-ghost {
|
|
263
|
+
color: var(--accent);
|
|
264
|
+
border-color: transparent;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
[data-theme="agora"] .cpub-btn-ghost:hover {
|
|
268
|
+
color: #2a6342;
|
|
269
|
+
background: var(--accent-bg);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
/* ═══════════════════════════════════════════
|
|
274
|
+
COMPONENT: CARDS
|
|
275
|
+
Linen backgrounds, soft borders, accent
|
|
276
|
+
left-border treatment on hover.
|
|
277
|
+
═══════════════════════════════════════════ */
|
|
278
|
+
|
|
279
|
+
[data-theme="agora"] .cpub-sb-card,
|
|
280
|
+
[data-theme="agora"] .cpub-stat-card {
|
|
281
|
+
background: var(--bg);
|
|
282
|
+
border-color: var(--border);
|
|
283
|
+
box-shadow: var(--shadow-sm);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
[data-theme="agora"] .cpub-sb-card:hover,
|
|
287
|
+
[data-theme="agora"] .cpub-stat-card:hover {
|
|
288
|
+
box-shadow: var(--shadow-md);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/* Content cards get accent left border on hover */
|
|
292
|
+
[data-theme="agora"] .cpub-content-card {
|
|
293
|
+
border-color: var(--border);
|
|
294
|
+
background: var(--surface);
|
|
295
|
+
transition: transform var(--transition-fast), box-shadow var(--transition-fast), border-color var(--transition-fast);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
[data-theme="agora"] .cpub-content-card:hover {
|
|
299
|
+
border-left-color: var(--accent);
|
|
300
|
+
border-left-width: 4px;
|
|
301
|
+
transform: translateY(-2px);
|
|
302
|
+
box-shadow: var(--shadow-md);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/* Card headers use display font */
|
|
306
|
+
[data-theme="agora"] .cpub-content-card h3,
|
|
307
|
+
[data-theme="agora"] .cpub-content-card .cpub-card-title {
|
|
308
|
+
font-family: var(--font-display);
|
|
309
|
+
font-weight: 700;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
/* ═══════════════════════════════════════════
|
|
314
|
+
COMPONENT: INPUTS & FORMS
|
|
315
|
+
Soft borders, glow focus ring.
|
|
316
|
+
═══════════════════════════════════════════ */
|
|
317
|
+
|
|
318
|
+
[data-theme="agora"] .cpub-input,
|
|
319
|
+
[data-theme="agora"] .cpub-textarea,
|
|
320
|
+
[data-theme="agora"] .cpub-select {
|
|
321
|
+
border-color: var(--border);
|
|
322
|
+
background: var(--bg);
|
|
323
|
+
transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
[data-theme="agora"] .cpub-input:focus,
|
|
327
|
+
[data-theme="agora"] .cpub-textarea:focus,
|
|
328
|
+
[data-theme="agora"] .cpub-select:focus {
|
|
329
|
+
border-color: var(--accent);
|
|
330
|
+
box-shadow: var(--focus-ring);
|
|
331
|
+
outline: none;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/* Form labels get wider tracking */
|
|
335
|
+
[data-theme="agora"] .cpub-form-label {
|
|
336
|
+
letter-spacing: var(--tracking-wider);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
/* ═══════════════════════════════════════════
|
|
341
|
+
COMPONENT: BADGES & TAGS
|
|
342
|
+
Thinner borders (1px), warmer palette.
|
|
343
|
+
═══════════════════════════════════════════ */
|
|
344
|
+
|
|
345
|
+
[data-theme="agora"] .cpub-tag {
|
|
346
|
+
border-width: 1px;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
[data-theme="agora"] .cpub-badge-filled {
|
|
350
|
+
background: var(--accent);
|
|
351
|
+
border-color: var(--accent);
|
|
352
|
+
color: #fff;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
|
|
356
|
+
/* ═══════════════════════════════════════════
|
|
357
|
+
COMPONENT: SECTION TITLES & HEADINGS
|
|
358
|
+
Fraunces display, green accent numbers.
|
|
359
|
+
═══════════════════════════════════════════ */
|
|
360
|
+
|
|
361
|
+
[data-theme="agora"] .cpub-section-title-lg {
|
|
362
|
+
font-family: var(--font-display);
|
|
363
|
+
font-weight: 700;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
[data-theme="agora"] .cpub-section-title-sm {
|
|
367
|
+
font-family: var(--font-display);
|
|
368
|
+
font-weight: 600;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
[data-theme="agora"] .admin-page-title {
|
|
372
|
+
font-family: var(--font-display);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
/* ═══════════════════════════════════════════
|
|
377
|
+
COMPONENT: LINKS
|
|
378
|
+
Green links with underline offset.
|
|
379
|
+
═══════════════════════════════════════════ */
|
|
380
|
+
|
|
381
|
+
[data-theme="agora"] a:not(.cpub-btn):not(.cpub-topbar-link):not(.cpub-footer-link):not(.admin-nav-link) {
|
|
382
|
+
text-decoration-color: rgba(61, 139, 94, 0.3);
|
|
383
|
+
text-underline-offset: 2px;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
/* ═══════════════════════════════════════════
|
|
388
|
+
COMPONENT: FOOTER
|
|
389
|
+
Warm treatment, serif brand name.
|
|
390
|
+
═══════════════════════════════════════════ */
|
|
391
|
+
|
|
392
|
+
[data-theme="agora"] .cpub-footer {
|
|
393
|
+
border-top-color: var(--border);
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
[data-theme="agora"] .cpub-footer-logo .cpub-logo-name {
|
|
397
|
+
font-family: var(--font-display);
|
|
398
|
+
font-weight: 700;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
[data-theme="agora"] .cpub-footer-col-title {
|
|
402
|
+
letter-spacing: var(--tracking-widest);
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
/* ═══════════════════════════════════════════
|
|
407
|
+
PROSE / CONTENT AREA
|
|
408
|
+
Serif headings, warmer body feel.
|
|
409
|
+
═══════════════════════════════════════════ */
|
|
410
|
+
|
|
411
|
+
[data-theme="agora"] .cpub-prose h1,
|
|
412
|
+
[data-theme="agora"] .cpub-prose h2,
|
|
413
|
+
[data-theme="agora"] .cpub-prose h3,
|
|
414
|
+
[data-theme="agora"] .cpub-prose h4 {
|
|
415
|
+
font-family: var(--font-display);
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
[data-theme="agora"] .cpub-prose blockquote {
|
|
419
|
+
border-left-color: var(--accent);
|
|
420
|
+
background: var(--accent-bg);
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
[data-theme="agora"] .cpub-prose a {
|
|
424
|
+
color: var(--accent);
|
|
425
|
+
text-decoration-color: rgba(61, 139, 94, 0.3);
|
|
147
426
|
}
|
|
148
427
|
|
|
149
|
-
|
|
428
|
+
[data-theme="agora"] .cpub-prose code {
|
|
429
|
+
background: var(--surface2);
|
|
430
|
+
border-color: var(--border2);
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
/* ═══════════════════════════════════════════
|
|
435
|
+
ADMIN LAYOUT
|
|
436
|
+
Warm sidebar, serif titles.
|
|
437
|
+
═══════════════════════════════════════════ */
|
|
438
|
+
|
|
439
|
+
[data-theme="agora"] .admin-brand {
|
|
440
|
+
font-family: var(--font-display);
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
[data-theme="agora"] .admin-nav-link.router-link-exact-active {
|
|
444
|
+
color: var(--accent);
|
|
445
|
+
background: var(--accent-bg);
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
[data-theme="agora"] .admin-badge {
|
|
449
|
+
background: var(--accent);
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
/* ═══════════════════════════════════════════
|
|
454
|
+
CONTENT TYPE BADGE COLORS (Agora palette)
|
|
455
|
+
═══════════════════════════════════════════ */
|
|
456
|
+
|
|
150
457
|
[data-theme="agora"] [data-content-type="article"] { --badge-color: #4a7fb8; --badge-bg: rgba(74, 127, 184, 0.08); }
|
|
151
458
|
[data-theme="agora"] [data-content-type="blog"] { --badge-color: #3d8b5e; --badge-bg: rgba(61, 139, 94, 0.08); }
|
|
152
459
|
[data-theme="agora"] [data-content-type="project"] { --badge-color: #7b5ea7; --badge-bg: rgba(123, 94, 167, 0.08); }
|
|
153
460
|
[data-theme="agora"] [data-content-type="explainer"] { --badge-color: #2a9d8f; --badge-bg: rgba(42, 157, 143, 0.08); }
|
|
154
461
|
[data-theme="agora"] [data-content-type="video"] { --badge-color: #c4443a; --badge-bg: rgba(196, 68, 58, 0.08); }
|
|
155
462
|
[data-theme="agora"] [data-content-type="tutorial"] { --badge-color: #c4882a; --badge-bg: rgba(196, 136, 42, 0.08); }
|
|
156
|
-
}
|