@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.
Files changed (181) hide show
  1. package/README.md +294 -253
  2. package/dist/components/ambient/ArcaneVein.svelte +151 -0
  3. package/dist/components/ambient/ArcaneVein.svelte.d.ts +31 -0
  4. package/dist/components/ambient/BrassFiligree.svelte +109 -0
  5. package/dist/components/ambient/BrassFiligree.svelte.d.ts +20 -0
  6. package/dist/components/ambient/CornerBrackets.svelte +91 -87
  7. package/dist/components/ambient/CornerBrackets.svelte.d.ts +8 -0
  8. package/dist/components/ambient/CrystalShard.svelte +151 -0
  9. package/dist/components/ambient/CrystalShard.svelte.d.ts +19 -0
  10. package/dist/components/ambient/DataStream.svelte +117 -94
  11. package/dist/components/ambient/DataStream.svelte.d.ts +6 -0
  12. package/dist/components/ambient/EnergyArc.svelte +189 -0
  13. package/dist/components/ambient/EnergyArc.svelte.d.ts +32 -0
  14. package/dist/components/ambient/GlyphMark.svelte +75 -69
  15. package/dist/components/ambient/GlyphMark.svelte.d.ts +6 -0
  16. package/dist/components/ambient/GridOverlay.svelte +34 -28
  17. package/dist/components/ambient/GridOverlay.svelte.d.ts +8 -0
  18. package/dist/components/ambient/HexGrid.svelte +119 -0
  19. package/dist/components/ambient/HexGrid.svelte.d.ts +21 -0
  20. package/dist/components/ambient/ParallaxLayer.svelte +45 -41
  21. package/dist/components/ambient/ParallaxLayer.svelte.d.ts +7 -0
  22. package/dist/components/ambient/ScanBand.svelte +103 -91
  23. package/dist/components/ambient/ScanBand.svelte.d.ts +8 -0
  24. package/dist/components/ambient/ShimmerCloud.svelte +180 -0
  25. package/dist/components/ambient/ShimmerCloud.svelte.d.ts +21 -0
  26. package/dist/components/ambient/SignalRing.svelte +106 -100
  27. package/dist/components/ambient/SignalRing.svelte.d.ts +6 -0
  28. package/dist/components/ambient/ThreadLine.svelte +78 -78
  29. package/dist/components/ambient/ThreadLine.svelte.d.ts +7 -0
  30. package/dist/components/ambient/Vignette.svelte +30 -26
  31. package/dist/components/ambient/Vignette.svelte.d.ts +6 -0
  32. package/dist/components/depth/DepthLayer.svelte +30 -27
  33. package/dist/components/depth/DepthLayer.svelte.d.ts +8 -0
  34. package/dist/components/depth/DepthStage.svelte +67 -62
  35. package/dist/components/depth/DepthStage.svelte.d.ts +8 -0
  36. package/dist/components/depth/FloatCard.svelte +129 -104
  37. package/dist/components/depth/FloatCard.svelte.d.ts +8 -0
  38. package/dist/components/depth/HorizonGrid.svelte +241 -160
  39. package/dist/components/depth/HorizonGrid.svelte.d.ts +9 -0
  40. package/dist/components/depth/Plinth.svelte +62 -57
  41. package/dist/components/depth/Plinth.svelte.d.ts +10 -0
  42. package/dist/components/display/Avatar.svelte +69 -69
  43. package/dist/components/display/Avatar.svelte.d.ts +5 -0
  44. package/dist/components/display/Badge.svelte +75 -63
  45. package/dist/components/display/Badge.svelte.d.ts +6 -0
  46. package/dist/components/display/Blockquote.svelte +35 -34
  47. package/dist/components/display/Blockquote.svelte.d.ts +4 -0
  48. package/dist/components/display/CodeBlock.svelte +76 -76
  49. package/dist/components/display/CodeBlock.svelte.d.ts +5 -0
  50. package/dist/components/display/MetricCard.svelte +100 -83
  51. package/dist/components/display/MetricCard.svelte.d.ts +6 -0
  52. package/dist/components/display/Table.svelte +106 -104
  53. package/dist/components/display/Table.svelte.d.ts +7 -0
  54. package/dist/components/feedback/Alert.svelte +95 -76
  55. package/dist/components/feedback/Alert.svelte.d.ts +6 -0
  56. package/dist/components/feedback/EmptyState.svelte +75 -68
  57. package/dist/components/feedback/EmptyState.svelte.d.ts +7 -0
  58. package/dist/components/feedback/ErrorState.svelte +78 -73
  59. package/dist/components/feedback/ErrorState.svelte.d.ts +5 -0
  60. package/dist/components/feedback/Skeleton.svelte +58 -52
  61. package/dist/components/feedback/Skeleton.svelte.d.ts +6 -0
  62. package/dist/components/feedback/StatusDot.svelte +84 -54
  63. package/dist/components/feedback/StatusDot.svelte.d.ts +6 -0
  64. package/dist/components/feedback/StatusLine.svelte +128 -122
  65. package/dist/components/feedback/StatusLine.svelte.d.ts +6 -0
  66. package/dist/components/feedback/Toast.svelte +144 -136
  67. package/dist/components/feedback/Toast.svelte.d.ts +10 -0
  68. package/dist/components/inputs/Button.svelte +310 -237
  69. package/dist/components/inputs/Button.svelte.d.ts +8 -0
  70. package/dist/components/inputs/Checkbox.svelte +109 -105
  71. package/dist/components/inputs/Checkbox.svelte.d.ts +5 -0
  72. package/dist/components/inputs/FileUpload.svelte +170 -163
  73. package/dist/components/inputs/FileUpload.svelte.d.ts +5 -0
  74. package/dist/components/inputs/Input.svelte +153 -147
  75. package/dist/components/inputs/Input.svelte.d.ts +7 -0
  76. package/dist/components/inputs/Select.svelte +164 -150
  77. package/dist/components/inputs/Select.svelte.d.ts +8 -0
  78. package/dist/components/inputs/Textarea.svelte +160 -154
  79. package/dist/components/inputs/Textarea.svelte.d.ts +6 -0
  80. package/dist/components/inputs/Toggle.svelte +125 -120
  81. package/dist/components/inputs/Toggle.svelte.d.ts +5 -0
  82. package/dist/components/layout/Card.svelte +81 -76
  83. package/dist/components/layout/Card.svelte.d.ts +11 -0
  84. package/dist/components/layout/Drawer.svelte +140 -109
  85. package/dist/components/layout/Drawer.svelte.d.ts +6 -0
  86. package/dist/components/layout/Grid.svelte +128 -43
  87. package/dist/components/layout/Grid.svelte.d.ts +18 -2
  88. package/dist/components/layout/Modal.svelte +191 -159
  89. package/dist/components/layout/Modal.svelte.d.ts +10 -0
  90. package/dist/components/layout/Panel.svelte +58 -54
  91. package/dist/components/layout/Panel.svelte.d.ts +9 -0
  92. package/dist/components/layout/Popover.svelte +188 -67
  93. package/dist/components/layout/Popover.svelte.d.ts +19 -1
  94. package/dist/components/layout/Stack.svelte +65 -53
  95. package/dist/components/layout/Stack.svelte.d.ts +12 -0
  96. package/dist/components/navigation/Breadcrumb.svelte +78 -73
  97. package/dist/components/navigation/Breadcrumb.svelte.d.ts +8 -0
  98. package/dist/components/navigation/DropdownMenu.svelte +179 -124
  99. package/dist/components/navigation/DropdownMenu.svelte.d.ts +24 -2
  100. package/dist/components/navigation/SidebarNav.svelte +96 -90
  101. package/dist/components/navigation/SidebarNav.svelte.d.ts +9 -0
  102. package/dist/components/navigation/Tabs.svelte +106 -86
  103. package/dist/components/navigation/Tabs.svelte.d.ts +8 -0
  104. package/dist/components/navigation/Topbar.svelte +94 -85
  105. package/dist/components/navigation/Topbar.svelte.d.ts +9 -0
  106. package/dist/components/patterns/ActionBar.svelte +82 -76
  107. package/dist/components/patterns/ActionBar.svelte.d.ts +10 -0
  108. package/dist/components/patterns/ChapterMark.svelte +152 -0
  109. package/dist/components/patterns/ChapterMark.svelte.d.ts +19 -0
  110. package/dist/components/patterns/ConfirmDialog.svelte +75 -64
  111. package/dist/components/patterns/ConfirmDialog.svelte.d.ts +12 -0
  112. package/dist/components/patterns/DepthPortal.svelte +123 -0
  113. package/dist/components/patterns/DepthPortal.svelte.d.ts +24 -0
  114. package/dist/components/patterns/Manifesto.svelte +171 -0
  115. package/dist/components/patterns/Manifesto.svelte.d.ts +25 -0
  116. package/dist/components/patterns/PageHeader.svelte +117 -114
  117. package/dist/components/patterns/PageHeader.svelte.d.ts +8 -0
  118. package/dist/components/patterns/PullQuote.svelte +145 -0
  119. package/dist/components/patterns/PullQuote.svelte.d.ts +23 -0
  120. package/dist/components/patterns/RegisterSwitcher.svelte +132 -0
  121. package/dist/components/patterns/RegisterSwitcher.svelte.d.ts +21 -0
  122. package/dist/components/patterns/SearchBar.svelte +59 -59
  123. package/dist/components/patterns/SearchBar.svelte.d.ts +5 -0
  124. package/dist/components/patterns/ShowcaseFrame.svelte +117 -0
  125. package/dist/components/patterns/ShowcaseFrame.svelte.d.ts +28 -0
  126. package/dist/components/patterns/TerminalBoot.svelte +118 -104
  127. package/dist/components/patterns/TerminalBoot.svelte.d.ts +12 -0
  128. package/dist/components/primitives/Divider.svelte +56 -29
  129. package/dist/components/primitives/Divider.svelte.d.ts +5 -0
  130. package/dist/components/primitives/Icon.svelte +53 -49
  131. package/dist/components/primitives/Icon.svelte.d.ts +9 -0
  132. package/dist/components/primitives/Label.svelte +45 -44
  133. package/dist/components/primitives/Label.svelte.d.ts +6 -0
  134. package/dist/components/primitives/Surface.svelte +154 -87
  135. package/dist/components/primitives/Surface.svelte.d.ts +7 -0
  136. package/dist/components/primitives/Text.svelte +130 -98
  137. package/dist/components/primitives/Text.svelte.d.ts +7 -0
  138. package/dist/components/scenes/ArchiveScene.svelte +102 -95
  139. package/dist/components/scenes/ArchiveScene.svelte.d.ts +17 -1
  140. package/dist/components/scenes/DepthScene.svelte +128 -0
  141. package/dist/components/scenes/DepthScene.svelte.d.ts +36 -0
  142. package/dist/components/scenes/LogScene.svelte +86 -77
  143. package/dist/components/scenes/LogScene.svelte.d.ts +14 -0
  144. package/dist/components/scenes/NarrativeScene.svelte +100 -92
  145. package/dist/components/scenes/NarrativeScene.svelte.d.ts +9 -0
  146. package/dist/components/scenes/ReadoutScene.svelte +131 -107
  147. package/dist/components/scenes/ReadoutScene.svelte.d.ts +14 -1
  148. package/dist/components/scenes/StageScene.svelte +111 -104
  149. package/dist/components/scenes/StageScene.svelte.d.ts +14 -0
  150. package/dist/components/system/AppShell.svelte +62 -0
  151. package/dist/components/system/AppShell.svelte.d.ts +32 -0
  152. package/dist/examples/ArcaneShard.svelte +364 -0
  153. package/dist/examples/ArcaneShard.svelte.d.ts +3 -0
  154. package/dist/examples/FieldReport.svelte +226 -223
  155. package/dist/examples/HextechForge.svelte +324 -0
  156. package/dist/examples/HextechForge.svelte.d.ts +3 -0
  157. package/dist/examples/ObservationDeck.svelte +333 -317
  158. package/dist/examples/SignalLost.svelte +191 -191
  159. package/dist/index.d.ts +15 -1
  160. package/dist/index.js +16 -1
  161. package/dist/styles.css +115 -0
  162. package/dist/system/actions/echo.js +21 -12
  163. package/dist/system/actions/resolve.js +28 -14
  164. package/dist/system/actions/reveal.js +2 -2
  165. package/dist/system/actions/surface.js +12 -2
  166. package/dist/system/depth/depth.css +49 -49
  167. package/dist/system/depth/depth.js +1 -1
  168. package/dist/system/expressions.css +80 -80
  169. package/dist/system/override-template.css +72 -72
  170. package/dist/system/register.css +74 -74
  171. package/dist/system/register.d.ts +1 -1
  172. package/dist/system/register.js +5 -1
  173. package/dist/system/scroll-lock.d.ts +6 -0
  174. package/dist/system/scroll-lock.js +23 -0
  175. package/dist/tokens/arcane.css +96 -0
  176. package/dist/tokens/hextech.css +96 -0
  177. package/dist/tokens/tokens.css +102 -86
  178. package/dist/tokens/tokens.d.ts +41 -0
  179. package/dist/tokens/tokens.js +44 -3
  180. package/dist/utils/motion.js +1 -1
  181. package/package.json +71 -60
@@ -1,191 +1,191 @@
1
- <!--
2
- EXAMPLE: Signal Lost
3
- REGISTER: field-notebook
4
- CONCEPT: a 404 page that feels like arriving at coordinates where something used to be
5
- DEMONSTRATES: FloatCard, HorizonGrid, TerminalBoot, StatusDot, CornerBrackets, SignalRing, Text expressions, surface action, depth system
6
- INSPIRED BY: the last transmission log of a deep-space relay station
7
- -->
8
- <script lang="ts">
9
- import {
10
- Text,
11
- Label,
12
- Button,
13
- StatusDot,
14
- CornerBrackets,
15
- TerminalBoot,
16
- FloatCard,
17
- HorizonGrid,
18
- DepthStage,
19
- DepthLayer,
20
- SignalRing,
21
- GlyphMark,
22
- surface,
23
- applyRegister,
24
- } from '../index.js';
25
- import { onMount } from 'svelte';
26
-
27
- let bootComplete = $state(false);
28
-
29
- const bootLines: { status: 'ok' | 'pend' | 'warn' | 'fail'; message: string }[] = [
30
- { status: 'ok', message: 'local systems nominal' },
31
- { status: 'ok', message: 'navigation subsystem online' },
32
- { status: 'ok', message: 'scanning frequency range' },
33
- { status: 'pend', message: 'attempting signal acquisition' },
34
- { status: 'warn', message: 'no response on primary band' },
35
- { status: 'warn', message: 'sweeping secondary frequencies' },
36
- { status: 'fail', message: 'target signal not found at these coordinates' },
37
- ];
38
-
39
- onMount(() => {
40
- applyRegister('field-notebook');
41
- return () => {
42
- document.body.removeAttribute('data-register');
43
- };
44
- });
45
- </script>
46
-
47
- <div class="signal-lost">
48
- <div class="signal-lost-bg">
49
- <HorizonGrid animated rows={20} cols={14} vanishY={0.32} />
50
- </div>
51
-
52
- <div class="signal-lost-ring" aria-hidden="true">
53
- <SignalRing active size={400} />
54
- </div>
55
-
56
- <DepthStage perspective="mid" class="signal-lost-stage">
57
- <DepthLayer level="ground" class="signal-lost-terminal">
58
- <div class="signal-lost-terminal-inner" use:surface={{ delay: 800 }}>
59
- <TerminalBoot
60
- lines={bootLines}
61
- delay={1200}
62
- interval={900}
63
- oncomplete={() => (bootComplete = true)}
64
- />
65
- </div>
66
- </DepthLayer>
67
-
68
- <DepthLayer level="raised" class="signal-lost-center">
69
- <FloatCard tiltMax={6} class="signal-lost-card">
70
- <div class="signal-lost-content" style:position="relative">
71
- <CornerBrackets size={28} color="rgba(199, 156, 87, 0.2)" />
72
-
73
- <div class="signal-lost-status" use:surface={{ delay: 200 }}>
74
- <StatusDot status="fail" size={8} pulse />
75
- <Label color="muted">transmission ended</Label>
76
- </div>
77
-
78
- <div use:surface={{ delay: 400 }}>
79
- <Text variant="heading" expression="title-card" as="h1" color="primary">
80
- the coordinates are empty now
81
- </Text>
82
- </div>
83
-
84
- <div use:surface={{ delay: 600 }}>
85
- <Text expression="manifesto">
86
- something was broadcasting from here. the frequency is right,
87
- the heading is right. but the source has gone quiet.
88
- </Text>
89
- </div>
90
-
91
- <div class="signal-lost-meta" use:surface={{ delay: 700 }}>
92
- <GlyphMark variant="coord" size={16} color="var(--muted-strong)" />
93
- <Label color="muted">bearing 047.2 | range unknown | last contact 7h ago</Label>
94
- </div>
95
-
96
- <div class="signal-lost-action" use:surface={{ delay: 900 }}>
97
- <Button variant="ghost" onclick={() => window.history.back()}>
98
- return to last known position
99
- </Button>
100
- </div>
101
- </div>
102
- </FloatCard>
103
- </DepthLayer>
104
- </DepthStage>
105
- </div>
106
-
107
- <style>
108
- .signal-lost {
109
- position: relative;
110
- min-height: 100dvh;
111
- background-color: var(--bg);
112
- display: flex;
113
- align-items: center;
114
- justify-content: center;
115
- overflow: hidden;
116
- }
117
-
118
- .signal-lost-bg {
119
- position: absolute;
120
- inset: 0;
121
- opacity: 0.5;
122
- pointer-events: none;
123
- }
124
-
125
- .signal-lost-ring {
126
- position: absolute;
127
- top: 50%;
128
- left: 50%;
129
- transform: translate(-50%, -50%);
130
- opacity: 0.3;
131
- pointer-events: none;
132
- }
133
-
134
- :global(.signal-lost-stage) {
135
- position: relative;
136
- z-index: 1;
137
- display: flex;
138
- flex-direction: column;
139
- align-items: center;
140
- gap: 2rem;
141
- padding: var(--space-scene);
142
- width: 100%;
143
- max-width: 52rem;
144
- }
145
-
146
- :global(.signal-lost-center) {
147
- width: 100%;
148
- display: flex;
149
- justify-content: center;
150
- }
151
-
152
- :global(.signal-lost-card) {
153
- max-width: 36rem;
154
- width: 100%;
155
- }
156
-
157
- .signal-lost-content {
158
- display: flex;
159
- flex-direction: column;
160
- gap: 1.5rem;
161
- padding: 1rem;
162
- }
163
-
164
- .signal-lost-status {
165
- display: flex;
166
- align-items: center;
167
- gap: 0.625rem;
168
- }
169
-
170
- .signal-lost-meta {
171
- display: flex;
172
- align-items: center;
173
- gap: 0.5rem;
174
- }
175
-
176
- .signal-lost-action {
177
- margin-top: 0.5rem;
178
- }
179
-
180
- :global(.signal-lost-terminal) {
181
- width: 100%;
182
- max-width: 36rem;
183
- align-self: center;
184
- }
185
-
186
- .signal-lost-terminal-inner {
187
- padding: 1rem 0;
188
- border-left: 2px solid rgba(121, 166, 163, 0.14);
189
- padding-left: 1.25rem;
190
- }
191
- </style>
1
+ <!--
2
+ EXAMPLE: Signal Lost
3
+ REGISTER: field-notebook
4
+ CONCEPT: a 404 page that feels like arriving at coordinates where something used to be
5
+ DEMONSTRATES: FloatCard, HorizonGrid, TerminalBoot, StatusDot, CornerBrackets, SignalRing, Text expressions, surface action, depth system
6
+ INSPIRED BY: the last transmission log of a deep-space relay station
7
+ -->
8
+ <script lang="ts">
9
+ import {
10
+ Text,
11
+ Label,
12
+ Button,
13
+ StatusDot,
14
+ CornerBrackets,
15
+ TerminalBoot,
16
+ FloatCard,
17
+ HorizonGrid,
18
+ DepthStage,
19
+ DepthLayer,
20
+ SignalRing,
21
+ GlyphMark,
22
+ surface,
23
+ applyRegister
24
+ } from '../index.js';
25
+ import { onMount } from 'svelte';
26
+
27
+ let bootComplete = $state(false);
28
+
29
+ const bootLines: { status: 'ok' | 'pend' | 'warn' | 'fail'; message: string }[] = [
30
+ { status: 'ok', message: 'local systems nominal' },
31
+ { status: 'ok', message: 'navigation subsystem online' },
32
+ { status: 'ok', message: 'scanning frequency range' },
33
+ { status: 'pend', message: 'attempting signal acquisition' },
34
+ { status: 'warn', message: 'no response on primary band' },
35
+ { status: 'warn', message: 'sweeping secondary frequencies' },
36
+ { status: 'fail', message: 'target signal not found at these coordinates' }
37
+ ];
38
+
39
+ onMount(() => {
40
+ applyRegister('field-notebook');
41
+ return () => {
42
+ document.body.removeAttribute('data-register');
43
+ };
44
+ });
45
+ </script>
46
+
47
+ <div class="signal-lost">
48
+ <div class="signal-lost-bg">
49
+ <HorizonGrid animated rows={20} cols={14} vanishY={0.32} />
50
+ </div>
51
+
52
+ <div class="signal-lost-ring" aria-hidden="true">
53
+ <SignalRing active size={400} />
54
+ </div>
55
+
56
+ <DepthStage perspective="mid" class="signal-lost-stage">
57
+ <DepthLayer level="ground" class="signal-lost-terminal">
58
+ <div class="signal-lost-terminal-inner" use:surface={{ delay: 800 }}>
59
+ <TerminalBoot
60
+ lines={bootLines}
61
+ delay={1200}
62
+ interval={900}
63
+ oncomplete={() => (bootComplete = true)}
64
+ />
65
+ </div>
66
+ </DepthLayer>
67
+
68
+ <DepthLayer level="raised" class="signal-lost-center">
69
+ <FloatCard tiltMax={6} class="signal-lost-card">
70
+ <div class="signal-lost-content" style:position="relative">
71
+ <CornerBrackets size={28} color="rgba(199, 156, 87, 0.2)" />
72
+
73
+ <div class="signal-lost-status" use:surface={{ delay: 200 }}>
74
+ <StatusDot status="fail" size={8} pulse />
75
+ <Label color="muted">transmission ended</Label>
76
+ </div>
77
+
78
+ <div use:surface={{ delay: 400 }}>
79
+ <Text variant="heading" expression="title-card" as="h1" color="primary">
80
+ the coordinates are empty now
81
+ </Text>
82
+ </div>
83
+
84
+ <div use:surface={{ delay: 600 }}>
85
+ <Text expression="manifesto">
86
+ something was broadcasting from here. the frequency is right, the heading is right.
87
+ but the source has gone quiet.
88
+ </Text>
89
+ </div>
90
+
91
+ <div class="signal-lost-meta" use:surface={{ delay: 700 }}>
92
+ <GlyphMark variant="coord" size={16} color="var(--muted-strong)" />
93
+ <Label color="muted">bearing 047.2 | range unknown | last contact 7h ago</Label>
94
+ </div>
95
+
96
+ <div class="signal-lost-action" use:surface={{ delay: 900 }}>
97
+ <Button variant="ghost" onclick={() => window.history.back()}>
98
+ return to last known position
99
+ </Button>
100
+ </div>
101
+ </div>
102
+ </FloatCard>
103
+ </DepthLayer>
104
+ </DepthStage>
105
+ </div>
106
+
107
+ <style>
108
+ .signal-lost {
109
+ position: relative;
110
+ min-height: 100dvh;
111
+ background-color: var(--bg);
112
+ display: flex;
113
+ align-items: center;
114
+ justify-content: center;
115
+ overflow: hidden;
116
+ }
117
+
118
+ .signal-lost-bg {
119
+ position: absolute;
120
+ inset: 0;
121
+ opacity: 0.5;
122
+ pointer-events: none;
123
+ }
124
+
125
+ .signal-lost-ring {
126
+ position: absolute;
127
+ top: 50%;
128
+ left: 50%;
129
+ transform: translate(-50%, -50%);
130
+ opacity: 0.3;
131
+ pointer-events: none;
132
+ }
133
+
134
+ :global(.signal-lost-stage) {
135
+ position: relative;
136
+ z-index: 1;
137
+ display: flex;
138
+ flex-direction: column;
139
+ align-items: center;
140
+ gap: 2rem;
141
+ padding: var(--space-scene);
142
+ width: 100%;
143
+ max-width: 52rem;
144
+ }
145
+
146
+ :global(.signal-lost-center) {
147
+ width: 100%;
148
+ display: flex;
149
+ justify-content: center;
150
+ }
151
+
152
+ :global(.signal-lost-card) {
153
+ max-width: 36rem;
154
+ width: 100%;
155
+ }
156
+
157
+ .signal-lost-content {
158
+ display: flex;
159
+ flex-direction: column;
160
+ gap: 1.5rem;
161
+ padding: 1rem;
162
+ }
163
+
164
+ .signal-lost-status {
165
+ display: flex;
166
+ align-items: center;
167
+ gap: 0.625rem;
168
+ }
169
+
170
+ .signal-lost-meta {
171
+ display: flex;
172
+ align-items: center;
173
+ gap: 0.5rem;
174
+ }
175
+
176
+ .signal-lost-action {
177
+ margin-top: 0.5rem;
178
+ }
179
+
180
+ :global(.signal-lost-terminal) {
181
+ width: 100%;
182
+ max-width: 36rem;
183
+ align-self: center;
184
+ }
185
+
186
+ .signal-lost-terminal-inner {
187
+ padding: 1rem 0;
188
+ border-left: 2px solid rgba(121, 166, 163, 0.14);
189
+ padding-left: 1.25rem;
190
+ }
191
+ </style>
package/dist/index.d.ts CHANGED
@@ -46,7 +46,14 @@ export { default as ConfirmDialog } from './components/patterns/ConfirmDialog.sv
46
46
  export { default as SearchBar } from './components/patterns/SearchBar.svelte';
47
47
  export { default as TerminalBoot } from './components/patterns/TerminalBoot.svelte';
48
48
  export { default as ActionBar } from './components/patterns/ActionBar.svelte';
49
- export { tokens } from './tokens/tokens.js';
49
+ export { default as RegisterSwitcher } from './components/patterns/RegisterSwitcher.svelte';
50
+ export { default as Manifesto } from './components/patterns/Manifesto.svelte';
51
+ export { default as ChapterMark } from './components/patterns/ChapterMark.svelte';
52
+ export { default as PullQuote } from './components/patterns/PullQuote.svelte';
53
+ export { default as ShowcaseFrame } from './components/patterns/ShowcaseFrame.svelte';
54
+ export { default as DepthPortal } from './components/patterns/DepthPortal.svelte';
55
+ export { default as AppShell } from './components/system/AppShell.svelte';
56
+ export { tokens, themeClasses } from './tokens/tokens.js';
50
57
  export { applyRegister, clearRegister, registers } from './system/register.js';
51
58
  export type { Register } from './system/register.js';
52
59
  export type { Expression } from './components/primitives/text.js';
@@ -66,8 +73,15 @@ export { default as SignalRing } from './components/ambient/SignalRing.svelte';
66
73
  export { default as GlyphMark } from './components/ambient/GlyphMark.svelte';
67
74
  export { default as DataStream } from './components/ambient/DataStream.svelte';
68
75
  export { default as ThreadLine } from './components/ambient/ThreadLine.svelte';
76
+ export { default as HexGrid } from './components/ambient/HexGrid.svelte';
77
+ export { default as BrassFiligree } from './components/ambient/BrassFiligree.svelte';
78
+ export { default as CrystalShard } from './components/ambient/CrystalShard.svelte';
79
+ export { default as ArcaneVein } from './components/ambient/ArcaneVein.svelte';
80
+ export { default as EnergyArc } from './components/ambient/EnergyArc.svelte';
81
+ export { default as ShimmerCloud } from './components/ambient/ShimmerCloud.svelte';
69
82
  export { default as NarrativeScene } from './components/scenes/NarrativeScene.svelte';
70
83
  export { default as ReadoutScene } from './components/scenes/ReadoutScene.svelte';
71
84
  export { default as StageScene } from './components/scenes/StageScene.svelte';
72
85
  export { default as ArchiveScene } from './components/scenes/ArchiveScene.svelte';
73
86
  export { default as LogScene } from './components/scenes/LogScene.svelte';
87
+ export { default as DepthScene } from './components/scenes/DepthScene.svelte';
package/dist/index.js CHANGED
@@ -54,8 +54,16 @@ export { default as ConfirmDialog } from './components/patterns/ConfirmDialog.sv
54
54
  export { default as SearchBar } from './components/patterns/SearchBar.svelte';
55
55
  export { default as TerminalBoot } from './components/patterns/TerminalBoot.svelte';
56
56
  export { default as ActionBar } from './components/patterns/ActionBar.svelte';
57
+ export { default as RegisterSwitcher } from './components/patterns/RegisterSwitcher.svelte';
58
+ export { default as Manifesto } from './components/patterns/Manifesto.svelte';
59
+ export { default as ChapterMark } from './components/patterns/ChapterMark.svelte';
60
+ export { default as PullQuote } from './components/patterns/PullQuote.svelte';
61
+ export { default as ShowcaseFrame } from './components/patterns/ShowcaseFrame.svelte';
62
+ export { default as DepthPortal } from './components/patterns/DepthPortal.svelte';
63
+ // system — shell
64
+ export { default as AppShell } from './components/system/AppShell.svelte';
57
65
  // tokens
58
- export { tokens } from './tokens/tokens.js';
66
+ export { tokens, themeClasses } from './tokens/tokens.js';
59
67
  // system — register
60
68
  export { applyRegister, clearRegister, registers } from './system/register.js';
61
69
  // system — actions
@@ -75,9 +83,16 @@ export { default as SignalRing } from './components/ambient/SignalRing.svelte';
75
83
  export { default as GlyphMark } from './components/ambient/GlyphMark.svelte';
76
84
  export { default as DataStream } from './components/ambient/DataStream.svelte';
77
85
  export { default as ThreadLine } from './components/ambient/ThreadLine.svelte';
86
+ export { default as HexGrid } from './components/ambient/HexGrid.svelte';
87
+ export { default as BrassFiligree } from './components/ambient/BrassFiligree.svelte';
88
+ export { default as CrystalShard } from './components/ambient/CrystalShard.svelte';
89
+ export { default as ArcaneVein } from './components/ambient/ArcaneVein.svelte';
90
+ export { default as EnergyArc } from './components/ambient/EnergyArc.svelte';
91
+ export { default as ShimmerCloud } from './components/ambient/ShimmerCloud.svelte';
78
92
  // scenes
79
93
  export { default as NarrativeScene } from './components/scenes/NarrativeScene.svelte';
80
94
  export { default as ReadoutScene } from './components/scenes/ReadoutScene.svelte';
81
95
  export { default as StageScene } from './components/scenes/StageScene.svelte';
82
96
  export { default as ArchiveScene } from './components/scenes/ArchiveScene.svelte';
83
97
  export { default as LogScene } from './components/scenes/LogScene.svelte';
98
+ export { default as DepthScene } from './components/scenes/DepthScene.svelte';
@@ -0,0 +1,115 @@
1
+ /* hyvui — base stylesheet entrypoint
2
+ *
3
+ * This file is meant to be imported by consuming applications:
4
+ * import '@hyvnt/hyvui/styles.css';
5
+ *
6
+ * It intentionally contains NO Tailwind directives, so it can be used in
7
+ * non-Tailwind projects. Tailwind theme mapping stays in app-level CSS.
8
+ */
9
+
10
+ @import './tokens/tokens.css';
11
+ @import './tokens/hextech.css';
12
+ @import './tokens/arcane.css';
13
+ @import './system/register.css';
14
+ @import './system/expressions.css';
15
+ @import './system/depth/depth.css';
16
+
17
+ /* ── base reset ─────────────────────────────────────────────────────── */
18
+ *,
19
+ *::before,
20
+ *::after {
21
+ box-sizing: border-box;
22
+ }
23
+
24
+ html {
25
+ /* Critical fallback paint (also duplicated inline in app.html for FOUC) */
26
+ background-color: #08090b;
27
+ color: var(--text);
28
+ font-family: var(--font-body);
29
+ font-size: 16px;
30
+ -webkit-font-smoothing: antialiased;
31
+ -moz-osx-font-smoothing: grayscale;
32
+ scrollbar-gutter: stable;
33
+ color-scheme: dark;
34
+ }
35
+
36
+ body {
37
+ margin: 0;
38
+ min-height: 100dvh;
39
+ background: transparent;
40
+ color: var(--text);
41
+ overflow-x: hidden;
42
+
43
+ /* Ensure our fixed background layer can sit behind content without leaking
44
+ under <html> in weird stacking contexts. */
45
+ isolation: isolate;
46
+ }
47
+
48
+ /* Avoid scroll-jank from `background-attachment: fixed` by using a fixed layer. */
49
+ body::before {
50
+ content: '';
51
+ position: fixed;
52
+ inset: 0;
53
+ z-index: -1;
54
+ pointer-events: none;
55
+
56
+ /* atmospheric layered background — never a flat fill */
57
+ background:
58
+ radial-gradient(circle at top, rgba(198, 166, 112, 0.08), transparent 26%),
59
+ radial-gradient(circle at 20% 20%, rgba(121, 166, 163, 0.06), transparent 24%),
60
+ linear-gradient(180deg, #090b0d 0%, #08090b 35%, #050607 100%);
61
+ }
62
+
63
+ body > div {
64
+ min-height: 100dvh;
65
+ }
66
+
67
+ a {
68
+ color: inherit;
69
+ }
70
+
71
+ button,
72
+ input,
73
+ select,
74
+ textarea {
75
+ font: inherit;
76
+ }
77
+
78
+ img,
79
+ svg,
80
+ canvas {
81
+ display: block;
82
+ max-width: 100%;
83
+ }
84
+
85
+ :focus-visible {
86
+ outline: none;
87
+ box-shadow: var(--focus-ring);
88
+ }
89
+
90
+ ::selection {
91
+ background-color: rgba(199, 156, 87, 0.28);
92
+ color: var(--text);
93
+ }
94
+
95
+ /* ── shared animations ──────────────────────────────────────────────── */
96
+ @keyframes pulse-dot {
97
+ 0%,
98
+ 100% {
99
+ opacity: 0.4;
100
+ transform: scale(1);
101
+ }
102
+ 50% {
103
+ opacity: 1;
104
+ transform: scale(1.3);
105
+ }
106
+ }
107
+
108
+ @keyframes shimmer {
109
+ 0% {
110
+ background-position: -200% 0;
111
+ }
112
+ 100% {
113
+ background-position: 200% 0;
114
+ }
115
+ }
@@ -8,6 +8,9 @@
8
8
  */
9
9
  export function echo(node) {
10
10
  const prefersReduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
11
+ let frame = 0;
12
+ let t1 = 0;
13
+ let t2 = 0;
11
14
  function handleClick(e) {
12
15
  if (prefersReduced)
13
16
  return;
@@ -15,25 +18,28 @@ export function echo(node) {
15
18
  const x = ((e.clientX - rect.left) / rect.width) * 100;
16
19
  const y = ((e.clientY - rect.top) / rect.height) * 100;
17
20
  const overlay = document.createElement('span');
18
- overlay.style.cssText = `
19
- position: absolute;
20
- inset: 0;
21
- border-radius: inherit;
22
- pointer-events: none;
23
- background: radial-gradient(circle at ${x}% ${y}%, rgba(199, 156, 87, 0.22), transparent 70%);
24
- opacity: 0;
25
- transition: opacity 0.15s ease-out;
21
+ overlay.style.cssText = `
22
+ position: absolute;
23
+ inset: 0;
24
+ border-radius: inherit;
25
+ pointer-events: none;
26
+ background: radial-gradient(circle at ${x}% ${y}%, rgba(199, 156, 87, 0.22), transparent 70%);
27
+ opacity: 0;
28
+ transition: opacity 0.15s cubic-bezier(0.4, 0, 0.2, 1);
26
29
  `;
27
30
  const position = getComputedStyle(node).position;
28
31
  if (position === 'static')
29
32
  node.style.position = 'relative';
30
33
  node.style.overflow = 'hidden';
31
34
  node.appendChild(overlay);
32
- requestAnimationFrame(() => {
35
+ cancelAnimationFrame(frame);
36
+ clearTimeout(t1);
37
+ clearTimeout(t2);
38
+ frame = requestAnimationFrame(() => {
33
39
  overlay.style.opacity = '1';
34
- setTimeout(() => {
40
+ t1 = setTimeout(() => {
35
41
  overlay.style.opacity = '0';
36
- setTimeout(() => overlay.remove(), 200);
42
+ t2 = setTimeout(() => overlay.remove(), 200);
37
43
  }, 200);
38
44
  });
39
45
  }
@@ -41,6 +47,9 @@ export function echo(node) {
41
47
  return {
42
48
  destroy() {
43
49
  node.removeEventListener('click', handleClick);
44
- },
50
+ cancelAnimationFrame(frame);
51
+ clearTimeout(t1);
52
+ clearTimeout(t2);
53
+ }
45
54
  };
46
55
  }