@hyvnt/hyvui 0.2.0 → 0.4.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.
- package/README.md +294 -253
- package/dist/components/ambient/ArcaneVein.svelte +151 -0
- package/dist/components/ambient/ArcaneVein.svelte.d.ts +31 -0
- package/dist/components/ambient/BrassFiligree.svelte +109 -0
- package/dist/components/ambient/BrassFiligree.svelte.d.ts +20 -0
- package/dist/components/ambient/CornerBrackets.svelte +91 -87
- package/dist/components/ambient/CornerBrackets.svelte.d.ts +8 -0
- package/dist/components/ambient/CrystalShard.svelte +151 -0
- package/dist/components/ambient/CrystalShard.svelte.d.ts +19 -0
- package/dist/components/ambient/DataStream.svelte +117 -94
- package/dist/components/ambient/DataStream.svelte.d.ts +6 -0
- package/dist/components/ambient/EnergyArc.svelte +189 -0
- package/dist/components/ambient/EnergyArc.svelte.d.ts +32 -0
- package/dist/components/ambient/GlyphMark.svelte +75 -69
- package/dist/components/ambient/GlyphMark.svelte.d.ts +6 -0
- package/dist/components/ambient/GridOverlay.svelte +34 -28
- package/dist/components/ambient/GridOverlay.svelte.d.ts +8 -0
- package/dist/components/ambient/HexGrid.svelte +119 -0
- package/dist/components/ambient/HexGrid.svelte.d.ts +21 -0
- package/dist/components/ambient/ParallaxLayer.svelte +45 -41
- package/dist/components/ambient/ParallaxLayer.svelte.d.ts +7 -0
- package/dist/components/ambient/ScanBand.svelte +103 -91
- package/dist/components/ambient/ScanBand.svelte.d.ts +8 -0
- package/dist/components/ambient/ShimmerCloud.svelte +180 -0
- package/dist/components/ambient/ShimmerCloud.svelte.d.ts +21 -0
- package/dist/components/ambient/SignalRing.svelte +106 -100
- package/dist/components/ambient/SignalRing.svelte.d.ts +6 -0
- package/dist/components/ambient/ThreadLine.svelte +78 -78
- package/dist/components/ambient/ThreadLine.svelte.d.ts +7 -0
- package/dist/components/ambient/Vignette.svelte +30 -26
- package/dist/components/ambient/Vignette.svelte.d.ts +6 -0
- package/dist/components/depth/DepthLayer.svelte +30 -27
- package/dist/components/depth/DepthLayer.svelte.d.ts +8 -0
- package/dist/components/depth/DepthStage.svelte +67 -62
- package/dist/components/depth/DepthStage.svelte.d.ts +8 -0
- package/dist/components/depth/FloatCard.svelte +129 -104
- package/dist/components/depth/FloatCard.svelte.d.ts +8 -0
- package/dist/components/depth/HorizonGrid.svelte +241 -160
- package/dist/components/depth/HorizonGrid.svelte.d.ts +9 -0
- package/dist/components/depth/Plinth.svelte +62 -57
- package/dist/components/depth/Plinth.svelte.d.ts +10 -0
- package/dist/components/display/Avatar.svelte +69 -69
- package/dist/components/display/Avatar.svelte.d.ts +5 -0
- package/dist/components/display/Badge.svelte +75 -63
- package/dist/components/display/Badge.svelte.d.ts +6 -0
- package/dist/components/display/Blockquote.svelte +35 -34
- package/dist/components/display/Blockquote.svelte.d.ts +4 -0
- package/dist/components/display/CodeBlock.svelte +76 -76
- package/dist/components/display/CodeBlock.svelte.d.ts +5 -0
- package/dist/components/display/MetricCard.svelte +100 -83
- package/dist/components/display/MetricCard.svelte.d.ts +6 -0
- package/dist/components/display/Table.svelte +106 -104
- package/dist/components/display/Table.svelte.d.ts +7 -0
- package/dist/components/feedback/Alert.svelte +95 -76
- package/dist/components/feedback/Alert.svelte.d.ts +6 -0
- package/dist/components/feedback/EmptyState.svelte +75 -68
- package/dist/components/feedback/EmptyState.svelte.d.ts +7 -0
- package/dist/components/feedback/ErrorState.svelte +78 -73
- package/dist/components/feedback/ErrorState.svelte.d.ts +5 -0
- package/dist/components/feedback/Skeleton.svelte +58 -52
- package/dist/components/feedback/Skeleton.svelte.d.ts +6 -0
- package/dist/components/feedback/StatusDot.svelte +84 -54
- package/dist/components/feedback/StatusDot.svelte.d.ts +6 -0
- package/dist/components/feedback/StatusLine.svelte +128 -122
- package/dist/components/feedback/StatusLine.svelte.d.ts +6 -0
- package/dist/components/feedback/Toast.svelte +144 -136
- package/dist/components/feedback/Toast.svelte.d.ts +10 -0
- package/dist/components/inputs/Button.svelte +310 -237
- package/dist/components/inputs/Button.svelte.d.ts +8 -0
- package/dist/components/inputs/Checkbox.svelte +109 -105
- package/dist/components/inputs/Checkbox.svelte.d.ts +5 -0
- package/dist/components/inputs/FileUpload.svelte +170 -163
- package/dist/components/inputs/FileUpload.svelte.d.ts +5 -0
- package/dist/components/inputs/Input.svelte +153 -147
- package/dist/components/inputs/Input.svelte.d.ts +7 -0
- package/dist/components/inputs/Select.svelte +164 -150
- package/dist/components/inputs/Select.svelte.d.ts +8 -0
- package/dist/components/inputs/Textarea.svelte +160 -154
- package/dist/components/inputs/Textarea.svelte.d.ts +6 -0
- package/dist/components/inputs/Toggle.svelte +125 -120
- package/dist/components/inputs/Toggle.svelte.d.ts +5 -0
- package/dist/components/layout/Card.svelte +81 -76
- package/dist/components/layout/Card.svelte.d.ts +11 -0
- package/dist/components/layout/Drawer.svelte +140 -109
- package/dist/components/layout/Drawer.svelte.d.ts +6 -0
- package/dist/components/layout/Grid.svelte +128 -43
- package/dist/components/layout/Grid.svelte.d.ts +18 -2
- package/dist/components/layout/Modal.svelte +191 -159
- package/dist/components/layout/Modal.svelte.d.ts +10 -0
- package/dist/components/layout/Panel.svelte +58 -54
- package/dist/components/layout/Panel.svelte.d.ts +9 -0
- package/dist/components/layout/Popover.svelte +188 -67
- package/dist/components/layout/Popover.svelte.d.ts +19 -1
- package/dist/components/layout/Stack.svelte +65 -53
- package/dist/components/layout/Stack.svelte.d.ts +12 -0
- package/dist/components/navigation/Breadcrumb.svelte +78 -73
- package/dist/components/navigation/Breadcrumb.svelte.d.ts +8 -0
- package/dist/components/navigation/DropdownMenu.svelte +179 -124
- package/dist/components/navigation/DropdownMenu.svelte.d.ts +24 -2
- package/dist/components/navigation/SidebarNav.svelte +96 -90
- package/dist/components/navigation/SidebarNav.svelte.d.ts +9 -0
- package/dist/components/navigation/Tabs.svelte +106 -86
- package/dist/components/navigation/Tabs.svelte.d.ts +8 -0
- package/dist/components/navigation/Topbar.svelte +94 -85
- package/dist/components/navigation/Topbar.svelte.d.ts +9 -0
- package/dist/components/patterns/ActionBar.svelte +82 -76
- package/dist/components/patterns/ActionBar.svelte.d.ts +10 -0
- package/dist/components/patterns/ChapterMark.svelte +152 -0
- package/dist/components/patterns/ChapterMark.svelte.d.ts +19 -0
- package/dist/components/patterns/ConfirmDialog.svelte +75 -64
- package/dist/components/patterns/ConfirmDialog.svelte.d.ts +12 -0
- package/dist/components/patterns/DepthPortal.svelte +123 -0
- package/dist/components/patterns/DepthPortal.svelte.d.ts +24 -0
- package/dist/components/patterns/Manifesto.svelte +171 -0
- package/dist/components/patterns/Manifesto.svelte.d.ts +25 -0
- package/dist/components/patterns/PageHeader.svelte +117 -114
- package/dist/components/patterns/PageHeader.svelte.d.ts +8 -0
- package/dist/components/patterns/PullQuote.svelte +145 -0
- package/dist/components/patterns/PullQuote.svelte.d.ts +23 -0
- package/dist/components/patterns/RegisterSwitcher.svelte +132 -0
- package/dist/components/patterns/RegisterSwitcher.svelte.d.ts +21 -0
- package/dist/components/patterns/SearchBar.svelte +59 -59
- package/dist/components/patterns/SearchBar.svelte.d.ts +5 -0
- package/dist/components/patterns/ShowcaseFrame.svelte +117 -0
- package/dist/components/patterns/ShowcaseFrame.svelte.d.ts +28 -0
- package/dist/components/patterns/TerminalBoot.svelte +118 -104
- package/dist/components/patterns/TerminalBoot.svelte.d.ts +12 -0
- package/dist/components/primitives/Divider.svelte +56 -29
- package/dist/components/primitives/Divider.svelte.d.ts +5 -0
- package/dist/components/primitives/Icon.svelte +53 -49
- package/dist/components/primitives/Icon.svelte.d.ts +9 -0
- package/dist/components/primitives/Label.svelte +45 -44
- package/dist/components/primitives/Label.svelte.d.ts +6 -0
- package/dist/components/primitives/Surface.svelte +154 -87
- package/dist/components/primitives/Surface.svelte.d.ts +7 -0
- package/dist/components/primitives/Text.svelte +130 -98
- package/dist/components/primitives/Text.svelte.d.ts +7 -0
- package/dist/components/scenes/ArchiveScene.svelte +102 -95
- package/dist/components/scenes/ArchiveScene.svelte.d.ts +17 -1
- package/dist/components/scenes/DepthScene.svelte +128 -0
- package/dist/components/scenes/DepthScene.svelte.d.ts +36 -0
- package/dist/components/scenes/LogScene.svelte +86 -77
- package/dist/components/scenes/LogScene.svelte.d.ts +14 -0
- package/dist/components/scenes/NarrativeScene.svelte +100 -92
- package/dist/components/scenes/NarrativeScene.svelte.d.ts +9 -0
- package/dist/components/scenes/ReadoutScene.svelte +131 -107
- package/dist/components/scenes/ReadoutScene.svelte.d.ts +14 -1
- package/dist/components/scenes/StageScene.svelte +111 -104
- package/dist/components/scenes/StageScene.svelte.d.ts +14 -0
- package/dist/components/system/AppShell.svelte +62 -0
- package/dist/components/system/AppShell.svelte.d.ts +32 -0
- package/dist/examples/ArcaneShard.svelte +364 -0
- package/dist/examples/ArcaneShard.svelte.d.ts +3 -0
- package/dist/examples/FieldReport.svelte +226 -223
- package/dist/examples/HextechForge.svelte +324 -0
- package/dist/examples/HextechForge.svelte.d.ts +3 -0
- package/dist/examples/ObservationDeck.svelte +333 -317
- package/dist/examples/SignalLost.svelte +191 -191
- package/dist/index.d.ts +15 -1
- package/dist/index.js +16 -1
- package/dist/styles.css +115 -0
- package/dist/system/actions/echo.js +21 -12
- package/dist/system/actions/resolve.js +28 -14
- package/dist/system/actions/reveal.js +2 -2
- package/dist/system/actions/surface.js +12 -2
- package/dist/system/depth/depth.css +49 -49
- package/dist/system/depth/depth.js +1 -1
- package/dist/system/expressions.css +80 -80
- package/dist/system/override-template.css +72 -72
- package/dist/system/register.css +74 -74
- package/dist/system/register.d.ts +1 -1
- package/dist/system/register.js +5 -1
- package/dist/system/scroll-lock.d.ts +6 -0
- package/dist/system/scroll-lock.js +23 -0
- package/dist/tokens/arcane.css +96 -0
- package/dist/tokens/hextech.css +96 -0
- package/dist/tokens/tokens.css +102 -86
- package/dist/tokens/tokens.d.ts +41 -0
- package/dist/tokens/tokens.js +44 -3
- package/dist/utils/motion.js +1 -1
- package/package.json +71 -60
|
@@ -2,7 +2,7 @@ const statusColors = {
|
|
|
2
2
|
ok: 'var(--status-ok)',
|
|
3
3
|
warn: 'var(--status-warn)',
|
|
4
4
|
fail: 'var(--status-fail)',
|
|
5
|
-
pend: 'var(--status-pend)'
|
|
5
|
+
pend: 'var(--status-pend)'
|
|
6
6
|
};
|
|
7
7
|
/**
|
|
8
8
|
* Animates a status change on an element. A brief overlay flash in the
|
|
@@ -25,6 +25,9 @@ export function resolve(node, register) {
|
|
|
25
25
|
const position = getComputedStyle(node).position;
|
|
26
26
|
if (position === 'static')
|
|
27
27
|
node.style.position = 'relative';
|
|
28
|
+
let frame = 0;
|
|
29
|
+
let t1 = 0;
|
|
30
|
+
let t2 = 0;
|
|
28
31
|
function trigger(status) {
|
|
29
32
|
node.dispatchEvent(new CustomEvent('resolve:start', { detail: status }));
|
|
30
33
|
if (prefersReduced) {
|
|
@@ -32,22 +35,25 @@ export function resolve(node, register) {
|
|
|
32
35
|
return;
|
|
33
36
|
}
|
|
34
37
|
const overlay = document.createElement('span');
|
|
35
|
-
overlay.style.cssText = `
|
|
36
|
-
position: absolute;
|
|
37
|
-
inset: 0;
|
|
38
|
-
pointer-events: none;
|
|
39
|
-
background: ${statusColors[status]};
|
|
40
|
-
opacity: 0;
|
|
41
|
-
border-radius: inherit;
|
|
42
|
-
transition: opacity 0.12s
|
|
38
|
+
overlay.style.cssText = `
|
|
39
|
+
position: absolute;
|
|
40
|
+
inset: 0;
|
|
41
|
+
pointer-events: none;
|
|
42
|
+
background: ${statusColors[status]};
|
|
43
|
+
opacity: 0;
|
|
44
|
+
border-radius: inherit;
|
|
45
|
+
transition: opacity 0.12s cubic-bezier(0.4, 0, 0.2, 1);
|
|
43
46
|
`;
|
|
44
47
|
node.appendChild(overlay);
|
|
45
|
-
|
|
48
|
+
cancelAnimationFrame(frame);
|
|
49
|
+
clearTimeout(t1);
|
|
50
|
+
clearTimeout(t2);
|
|
51
|
+
frame = requestAnimationFrame(() => {
|
|
46
52
|
overlay.style.opacity = '0.12';
|
|
47
|
-
setTimeout(() => {
|
|
48
|
-
overlay.style.transition = 'opacity 0.
|
|
53
|
+
t1 = setTimeout(() => {
|
|
54
|
+
overlay.style.transition = 'opacity 0.38s cubic-bezier(0.22, 1, 0.36, 1)';
|
|
49
55
|
overlay.style.opacity = '0';
|
|
50
|
-
setTimeout(() => {
|
|
56
|
+
t2 = setTimeout(() => {
|
|
51
57
|
overlay.remove();
|
|
52
58
|
node.dispatchEvent(new CustomEvent('resolve:end', { detail: status }));
|
|
53
59
|
}, 450);
|
|
@@ -55,5 +61,13 @@ export function resolve(node, register) {
|
|
|
55
61
|
});
|
|
56
62
|
}
|
|
57
63
|
register({ trigger });
|
|
58
|
-
return {
|
|
64
|
+
return {
|
|
65
|
+
destroy() {
|
|
66
|
+
cancelAnimationFrame(frame);
|
|
67
|
+
clearTimeout(t1);
|
|
68
|
+
clearTimeout(t2);
|
|
69
|
+
if (position === 'static')
|
|
70
|
+
node.style.position = '';
|
|
71
|
+
}
|
|
72
|
+
};
|
|
59
73
|
}
|
|
@@ -21,7 +21,7 @@ export function reveal(node, options) {
|
|
|
21
21
|
target.style.opacity = '0';
|
|
22
22
|
target.style.transform = prefersReduced ? 'none' : 'translateY(4px)';
|
|
23
23
|
if (!prefersReduced) {
|
|
24
|
-
target.style.transition = 'opacity 0.
|
|
24
|
+
target.style.transition = 'opacity 0.22s cubic-bezier(0.22, 1, 0.36, 1), transform 0.22s cubic-bezier(0.22, 1, 0.36, 1)';
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
function show() {
|
|
@@ -49,6 +49,6 @@ export function reveal(node, options) {
|
|
|
49
49
|
node.removeEventListener('mouseleave', hide);
|
|
50
50
|
node.removeEventListener('focusin', show);
|
|
51
51
|
node.removeEventListener('focusout', hide);
|
|
52
|
-
}
|
|
52
|
+
}
|
|
53
53
|
};
|
|
54
54
|
}
|
|
@@ -12,14 +12,24 @@ export function surface(node, options = {}) {
|
|
|
12
12
|
return {};
|
|
13
13
|
node.style.opacity = '0';
|
|
14
14
|
node.style.transform = 'translateY(6px)';
|
|
15
|
-
node.style.transition = `opacity 0.
|
|
15
|
+
node.style.transition = `opacity 0.38s cubic-bezier(0.22, 1, 0.36, 1) ${delay}ms, transform 0.38s cubic-bezier(0.22, 1, 0.36, 1) ${delay}ms`;
|
|
16
|
+
function onEnd(e) {
|
|
17
|
+
if (e.propertyName !== 'transform')
|
|
18
|
+
return;
|
|
19
|
+
node.removeEventListener('transitionend', onEnd);
|
|
20
|
+
// Clear transforms to avoid creating containing blocks for fixed/floating UI.
|
|
21
|
+
node.style.transform = 'none';
|
|
22
|
+
node.style.transition = '';
|
|
23
|
+
}
|
|
24
|
+
node.addEventListener('transitionend', onEnd);
|
|
16
25
|
const frame = requestAnimationFrame(() => {
|
|
17
26
|
node.style.opacity = '1';
|
|
18
27
|
node.style.transform = 'translateY(0)';
|
|
19
28
|
});
|
|
20
29
|
return {
|
|
21
30
|
destroy() {
|
|
31
|
+
node.removeEventListener('transitionend', onEnd);
|
|
22
32
|
cancelAnimationFrame(frame);
|
|
23
|
-
}
|
|
33
|
+
}
|
|
24
34
|
};
|
|
25
35
|
}
|
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
/* ── perspective tokens ──────────────────────────────────────────────── */
|
|
2
|
-
:root {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/* ── perspective container ───────────────────────────────────────────── */
|
|
18
|
-
.depth-stage {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/* ── depth level utilities ───────────────────────────────────────────── */
|
|
25
|
-
.depth-ground {
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.depth-raised {
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.depth-foreground {
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/* ── reduced motion override ─────────────────────────────────────────── */
|
|
38
|
-
@media (prefers-reduced-motion: reduce) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
1
|
+
/* ── perspective tokens ──────────────────────────────────────────────── */
|
|
2
|
+
:root {
|
|
3
|
+
--perspective-near: 600px;
|
|
4
|
+
--perspective-mid: 1000px;
|
|
5
|
+
--perspective-far: 1800px;
|
|
6
|
+
|
|
7
|
+
--depth-ground: 0px;
|
|
8
|
+
--depth-raised: 60px;
|
|
9
|
+
--depth-foreground: 140px;
|
|
10
|
+
|
|
11
|
+
--depth-tilt-max: 8deg;
|
|
12
|
+
--depth-tilt-subtle: 3deg;
|
|
13
|
+
|
|
14
|
+
--depth-transition: 0.4s cubic-bezier(0.22, 1, 0.36, 1);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* ── perspective container ───────────────────────────────────────────── */
|
|
18
|
+
.depth-stage {
|
|
19
|
+
perspective: var(--perspective-mid);
|
|
20
|
+
perspective-origin: 50% 40%;
|
|
21
|
+
transform-style: preserve-3d;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/* ── depth level utilities ───────────────────────────────────────────── */
|
|
25
|
+
.depth-ground {
|
|
26
|
+
transform: translateZ(var(--depth-ground));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.depth-raised {
|
|
30
|
+
transform: translateZ(var(--depth-raised));
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.depth-foreground {
|
|
34
|
+
transform: translateZ(var(--depth-foreground));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* ── reduced motion override ─────────────────────────────────────────── */
|
|
38
|
+
@media (prefers-reduced-motion: reduce) {
|
|
39
|
+
.depth-ground,
|
|
40
|
+
.depth-raised,
|
|
41
|
+
.depth-foreground {
|
|
42
|
+
transform: none;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.depth-stage {
|
|
46
|
+
perspective: none;
|
|
47
|
+
transform-style: flat;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
/* ── typographic expressions ──────────────────────────────────────────── */
|
|
2
|
-
/* expressions describe compositional intent — what the text is doing in */
|
|
3
|
-
/* the design. they are orthogonal to variants (structural role). */
|
|
4
|
-
/* apply via the Text component's expression prop or manually via class. */
|
|
5
|
-
|
|
6
|
-
/* ── expression: title-card ──────────────────────────────────────────── */
|
|
7
|
-
/* scene-opening headers. very large, line-height below 1, max-width tight */
|
|
8
|
-
.expr-title-card {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/* ── expression: manifesto ───────────────────────────────────────────── */
|
|
18
|
-
/* philosophical statements, pull-quotes, oblique voice */
|
|
19
|
-
.expr-manifesto {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/* ── expression: readout ─────────────────────────────────────────────── */
|
|
29
|
-
/* data labels, system output, status-like content */
|
|
30
|
-
.expr-readout {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/* ── expression: whisper ─────────────────────────────────────────────── */
|
|
39
|
-
/* supporting notes, parenthetical content, secondary metadata */
|
|
40
|
-
.expr-whisper {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/* ── expression: command ─────────────────────────────────────────────── */
|
|
49
|
-
/* CTAs, active instructions, call-to-action labels */
|
|
50
|
-
.expr-command {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/* ── expression: chapter ─────────────────────────────────────────────── */
|
|
60
|
-
/* section openers, scene numbers, narrative markers */
|
|
61
|
-
.expr-chapter {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/* adds a line after the label */
|
|
73
|
-
.expr-chapter::after {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
1
|
+
/* ── typographic expressions ──────────────────────────────────────────── */
|
|
2
|
+
/* expressions describe compositional intent — what the text is doing in */
|
|
3
|
+
/* the design. they are orthogonal to variants (structural role). */
|
|
4
|
+
/* apply via the Text component's expression prop or manually via class. */
|
|
5
|
+
|
|
6
|
+
/* ── expression: title-card ──────────────────────────────────────────── */
|
|
7
|
+
/* scene-opening headers. very large, line-height below 1, max-width tight */
|
|
8
|
+
.expr-title-card {
|
|
9
|
+
font-family: var(--font-body);
|
|
10
|
+
font-size: clamp(3.4rem, 10vw, 8rem);
|
|
11
|
+
font-weight: 400;
|
|
12
|
+
line-height: 0.91;
|
|
13
|
+
letter-spacing: -0.05em;
|
|
14
|
+
max-width: 10ch;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* ── expression: manifesto ───────────────────────────────────────────── */
|
|
18
|
+
/* philosophical statements, pull-quotes, oblique voice */
|
|
19
|
+
.expr-manifesto {
|
|
20
|
+
font-family: var(--font-body);
|
|
21
|
+
font-style: italic;
|
|
22
|
+
font-size: clamp(1.1rem, 2.5vw, 1.6rem);
|
|
23
|
+
line-height: 1.45;
|
|
24
|
+
color: var(--text-soft);
|
|
25
|
+
max-width: 30rem;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* ── expression: readout ─────────────────────────────────────────────── */
|
|
29
|
+
/* data labels, system output, status-like content */
|
|
30
|
+
.expr-readout {
|
|
31
|
+
font-family: var(--font-mono);
|
|
32
|
+
font-size: 0.82rem;
|
|
33
|
+
letter-spacing: 0.06em;
|
|
34
|
+
color: var(--muted);
|
|
35
|
+
line-height: 1.6;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* ── expression: whisper ─────────────────────────────────────────────── */
|
|
39
|
+
/* supporting notes, parenthetical content, secondary metadata */
|
|
40
|
+
.expr-whisper {
|
|
41
|
+
font-family: var(--font-body);
|
|
42
|
+
font-size: 0.88rem;
|
|
43
|
+
color: var(--muted-strong);
|
|
44
|
+
line-height: 1.5;
|
|
45
|
+
font-style: italic;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* ── expression: command ─────────────────────────────────────────────── */
|
|
49
|
+
/* CTAs, active instructions, call-to-action labels */
|
|
50
|
+
.expr-command {
|
|
51
|
+
font-family: var(--font-mono);
|
|
52
|
+
font-size: 0.75rem;
|
|
53
|
+
letter-spacing: 0.12em;
|
|
54
|
+
text-transform: uppercase;
|
|
55
|
+
color: var(--accent);
|
|
56
|
+
font-weight: 500;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* ── expression: chapter ─────────────────────────────────────────────── */
|
|
60
|
+
/* section openers, scene numbers, narrative markers */
|
|
61
|
+
.expr-chapter {
|
|
62
|
+
font-family: var(--font-mono);
|
|
63
|
+
font-size: 0.62rem;
|
|
64
|
+
letter-spacing: 0.22em;
|
|
65
|
+
text-transform: uppercase;
|
|
66
|
+
color: var(--muted-strong);
|
|
67
|
+
display: flex;
|
|
68
|
+
align-items: center;
|
|
69
|
+
gap: 0.75rem;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/* adds a line after the label */
|
|
73
|
+
.expr-chapter::after {
|
|
74
|
+
content: '';
|
|
75
|
+
display: block;
|
|
76
|
+
flex: 1;
|
|
77
|
+
height: 1px;
|
|
78
|
+
background: var(--line);
|
|
79
|
+
max-width: 4rem;
|
|
80
|
+
}
|
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* hyvui project override layer
|
|
3
|
-
* ─────────────────────────────────────────────────────────────────────────
|
|
4
|
-
* Copy this file into your project as `theme.css` and import it after
|
|
5
|
-
* `app.css`. Uncomment and adjust properties to tune the library's
|
|
6
|
-
* presentation for this specific project.
|
|
7
|
-
*
|
|
8
|
-
* DO NOT modify tokens.css. This file is the only sanctioned override surface.
|
|
9
|
-
* DO NOT change color values here. Color lives in tokens.css.
|
|
10
|
-
* This file controls presence, weight, and scale — not palette.
|
|
11
|
-
*
|
|
12
|
-
* Apply a register for broader personality shifts:
|
|
13
|
-
* document.body.dataset.register = 'field-notebook' | 'mission-control' | 'archive'
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
:root {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/*
|
|
49
|
-
* EXAMPLE: Portfolio / narrative project
|
|
50
|
-
* ──────────────────────────────────────
|
|
51
|
-
* :root {
|
|
52
|
-
* --reg-heading-tracking: -0.055em;
|
|
53
|
-
* --reg-body-size: 1.15rem;
|
|
54
|
-
* --reg-surface-opacity: 0.65;
|
|
55
|
-
* --reg-ornament-opacity: 0.2;
|
|
56
|
-
* --reg-accent-weight: 1;
|
|
57
|
-
* --reg-signal-weight: 0.5;
|
|
58
|
-
* --reg-spacing-scale: 1.2;
|
|
59
|
-
* }
|
|
60
|
-
*
|
|
61
|
-
* EXAMPLE: Dashboard / tool project
|
|
62
|
-
* ───────────────────────────────────
|
|
63
|
-
* :root {
|
|
64
|
-
* --reg-heading-tracking: -0.02em;
|
|
65
|
-
* --reg-body-size: 0.9rem;
|
|
66
|
-
* --reg-surface-opacity: 0.95;
|
|
67
|
-
* --reg-ornament-opacity: 0.06;
|
|
68
|
-
* --reg-accent-weight: 0.6;
|
|
69
|
-
* --reg-signal-weight: 1;
|
|
70
|
-
* --reg-spacing-scale: 0.88;
|
|
71
|
-
* }
|
|
72
|
-
*/
|
|
1
|
+
/**
|
|
2
|
+
* hyvui project override layer
|
|
3
|
+
* ─────────────────────────────────────────────────────────────────────────
|
|
4
|
+
* Copy this file into your project as `theme.css` and import it after
|
|
5
|
+
* `app.css`. Uncomment and adjust properties to tune the library's
|
|
6
|
+
* presentation for this specific project.
|
|
7
|
+
*
|
|
8
|
+
* DO NOT modify tokens.css. This file is the only sanctioned override surface.
|
|
9
|
+
* DO NOT change color values here. Color lives in tokens.css.
|
|
10
|
+
* This file controls presence, weight, and scale — not palette.
|
|
11
|
+
*
|
|
12
|
+
* Apply a register for broader personality shifts:
|
|
13
|
+
* document.body.dataset.register = 'field-notebook' | 'mission-control' | 'archive'
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
:root {
|
|
17
|
+
/* ── type presence ──────────────────────────────────────────────────── */
|
|
18
|
+
/* Adjust heading compression. More negative = more compressed. */
|
|
19
|
+
/* --reg-heading-tracking: -0.05em; */
|
|
20
|
+
|
|
21
|
+
/* Adjust body text size. Range: 0.9rem (dense) to 1.25rem (editorial) */
|
|
22
|
+
/* --reg-body-size: 1.1rem; */
|
|
23
|
+
|
|
24
|
+
/* ── surface presence ───────────────────────────────────────────────── */
|
|
25
|
+
/* Lower opacity = cards feel lighter, more atmospheric. */
|
|
26
|
+
/* Higher opacity = cards feel heavier, more structured. */
|
|
27
|
+
/* Range: 0.4 (ghostly) to 1.0 (fully opaque) */
|
|
28
|
+
/* --reg-surface-opacity: 0.8; */
|
|
29
|
+
|
|
30
|
+
/* ── ornament presence ──────────────────────────────────────────────── */
|
|
31
|
+
/* Controls ambient component visibility globally. */
|
|
32
|
+
/* 0 = invisible, 1 = full AESTHETICS.md opacity */
|
|
33
|
+
/* --reg-ornament-opacity: 0.14; */
|
|
34
|
+
|
|
35
|
+
/* ── accent balance ─────────────────────────────────────────────────── */
|
|
36
|
+
/* Gold weight. 1 = full presence, 0.4 = almost invisible. */
|
|
37
|
+
/* --reg-accent-weight: 1; */
|
|
38
|
+
|
|
39
|
+
/* Teal weight. Same scale. */
|
|
40
|
+
/* --reg-signal-weight: 0.8; */
|
|
41
|
+
|
|
42
|
+
/* ── spacing scale ──────────────────────────────────────────────────── */
|
|
43
|
+
/* Multiplier on spacing. > 1 = more breathing room. < 1 = tighter. */
|
|
44
|
+
/* Range: 0.85 (compact) to 1.4 (spacious) */
|
|
45
|
+
/* --reg-spacing-scale: 1; */
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/*
|
|
49
|
+
* EXAMPLE: Portfolio / narrative project
|
|
50
|
+
* ──────────────────────────────────────
|
|
51
|
+
* :root {
|
|
52
|
+
* --reg-heading-tracking: -0.055em;
|
|
53
|
+
* --reg-body-size: 1.15rem;
|
|
54
|
+
* --reg-surface-opacity: 0.65;
|
|
55
|
+
* --reg-ornament-opacity: 0.2;
|
|
56
|
+
* --reg-accent-weight: 1;
|
|
57
|
+
* --reg-signal-weight: 0.5;
|
|
58
|
+
* --reg-spacing-scale: 1.2;
|
|
59
|
+
* }
|
|
60
|
+
*
|
|
61
|
+
* EXAMPLE: Dashboard / tool project
|
|
62
|
+
* ───────────────────────────────────
|
|
63
|
+
* :root {
|
|
64
|
+
* --reg-heading-tracking: -0.02em;
|
|
65
|
+
* --reg-body-size: 0.9rem;
|
|
66
|
+
* --reg-surface-opacity: 0.95;
|
|
67
|
+
* --reg-ornament-opacity: 0.06;
|
|
68
|
+
* --reg-accent-weight: 0.6;
|
|
69
|
+
* --reg-signal-weight: 1;
|
|
70
|
+
* --reg-spacing-scale: 0.88;
|
|
71
|
+
* }
|
|
72
|
+
*/
|