handzon-core 0.8.4 → 0.8.5
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "handzon-core",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.5",
|
|
4
4
|
"description": "Core framework for Handzon — layouts, components, content + AI libs, and server runtime (handlers, DB, auth, migration runner) consumed by Handzon scaffolds.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -33,17 +33,19 @@ const {
|
|
|
33
33
|
---
|
|
34
34
|
<header class="hz-nav">
|
|
35
35
|
<div class="hz-nav-inner">
|
|
36
|
-
{
|
|
37
|
-
|
|
36
|
+
<a href="/" class="hz-nav-brand" aria-label={`${siteName} home`}>
|
|
37
|
+
{logoUrl && (
|
|
38
38
|
<img
|
|
39
39
|
src={logoUrl}
|
|
40
|
-
alt=
|
|
40
|
+
alt=""
|
|
41
|
+
aria-hidden="true"
|
|
41
42
|
class="hz-nav-logo"
|
|
42
43
|
width={logoWidth}
|
|
43
44
|
height={logoHeight}
|
|
44
45
|
/>
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
)}
|
|
47
|
+
<span class="hz-nav-name">{siteName}</span>
|
|
48
|
+
</a>
|
|
47
49
|
<div class="hz-nav-actions">
|
|
48
50
|
<UserMenu />
|
|
49
51
|
</div>
|
|
@@ -77,8 +79,11 @@ const {
|
|
|
77
79
|
.hz-nav-brand {
|
|
78
80
|
display: inline-flex;
|
|
79
81
|
align-items: center;
|
|
80
|
-
|
|
82
|
+
gap: 0.45rem;
|
|
83
|
+
line-height: 1;
|
|
81
84
|
opacity: 0.92;
|
|
85
|
+
color: var(--color-fg);
|
|
86
|
+
text-decoration: none;
|
|
82
87
|
transition: opacity 0.12s ease;
|
|
83
88
|
}
|
|
84
89
|
.hz-nav-brand:hover { opacity: 1; }
|
|
@@ -86,6 +91,18 @@ const {
|
|
|
86
91
|
display: block;
|
|
87
92
|
height: 1.4rem;
|
|
88
93
|
width: auto;
|
|
94
|
+
flex-shrink: 0;
|
|
95
|
+
}
|
|
96
|
+
/* Matches the Hero headline's font choice so the wordmark reads as
|
|
97
|
+
the same brand across the homepage hero and every-other-page nav.
|
|
98
|
+
Smaller, no display tracking — this is a chrome label, not a
|
|
99
|
+
headline. */
|
|
100
|
+
.hz-nav-name {
|
|
101
|
+
font-family: var(--font-display, var(--font-sans));
|
|
102
|
+
font-weight: var(--font-weight-display, 700);
|
|
103
|
+
font-size: 1.05rem;
|
|
104
|
+
letter-spacing: var(--tracking-display, -0.02em);
|
|
105
|
+
white-space: nowrap;
|
|
89
106
|
}
|
|
90
107
|
.hz-nav-actions {
|
|
91
108
|
display: flex;
|
|
@@ -64,11 +64,31 @@
|
|
|
64
64
|
.quiz-opt.is-correct {
|
|
65
65
|
background: color-mix(in oklab, var(--color-success) 18%, var(--color-surface));
|
|
66
66
|
}
|
|
67
|
-
.quiz-opt.is-correct .quiz-opt-toggle {
|
|
67
|
+
.quiz-opt.is-correct .quiz-opt-toggle {
|
|
68
|
+
border-color: var(--color-success);
|
|
69
|
+
background: var(--color-success);
|
|
70
|
+
color: var(--color-bg);
|
|
71
|
+
display: inline-grid;
|
|
72
|
+
place-items: center;
|
|
73
|
+
}
|
|
68
74
|
.quiz-opt.is-wrong {
|
|
69
75
|
background: color-mix(in oklab, var(--color-danger) 16%, var(--color-surface));
|
|
70
76
|
}
|
|
71
|
-
.quiz-opt.is-wrong .quiz-opt-toggle {
|
|
77
|
+
.quiz-opt.is-wrong .quiz-opt-toggle {
|
|
78
|
+
border-color: var(--color-danger);
|
|
79
|
+
background: var(--color-danger);
|
|
80
|
+
color: var(--color-bg);
|
|
81
|
+
display: inline-grid;
|
|
82
|
+
place-items: center;
|
|
83
|
+
}
|
|
84
|
+
/* Graded options swap the accent-filled `::after` for the Lucide
|
|
85
|
+
<Check>/<X> icon injected by Quiz.tsx — without this, the purple
|
|
86
|
+
accent rectangle covers the icon and you see a purple dot inside
|
|
87
|
+
the green/red box. */
|
|
88
|
+
.quiz-opt.is-correct .quiz-opt-toggle::after,
|
|
89
|
+
.quiz-opt.is-wrong .quiz-opt-toggle::after {
|
|
90
|
+
display: none;
|
|
91
|
+
}
|
|
72
92
|
.quiz-marker {
|
|
73
93
|
display: inline-grid;
|
|
74
94
|
place-items: center;
|