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.4",
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
- {logoUrl && (
37
- <a href="/" class="hz-nav-brand" aria-label={`${siteName} home`}>
36
+ <a href="/" class="hz-nav-brand" aria-label={`${siteName} home`}>
37
+ {logoUrl && (
38
38
  <img
39
39
  src={logoUrl}
40
- alt={siteName}
40
+ alt=""
41
+ aria-hidden="true"
41
42
  class="hz-nav-logo"
42
43
  width={logoWidth}
43
44
  height={logoHeight}
44
45
  />
45
- </a>
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
- line-height: 0;
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 { border-color: var(--color-success); background: var(--color-success); color: var(--color-bg); }
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 { border-color: var(--color-danger); background: var(--color-danger); color: var(--color-bg); }
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;