@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,100 +1,106 @@
1
- <script lang="ts">
2
- import { cn } from '../../utils/cn.js';
3
-
4
- interface Props {
5
- /** Enable the pulsing animation. */
6
- active?: boolean;
7
- /** Ring diameter in pixels. */
8
- size?: number;
9
- /** Ring color (CSS color value). */
10
- color?: string;
11
- /** Additional CSS classes. */
12
- class?: string;
13
- }
14
-
15
- let {
16
- active = true,
17
- size = 200,
18
- color = 'var(--accent)',
19
- class: className = '',
20
- }: Props = $props();
21
- </script>
22
-
23
- <div
24
- class={cn('hyvui-signal-ring', className)}
25
- style:width="{size}px"
26
- style:height="{size}px"
27
- aria-hidden="true"
28
- >
29
- {#if active}
30
- <span class="hyvui-signal-ring-pulse hyvui-signal-ring-1" style:border-color={color}></span>
31
- <span class="hyvui-signal-ring-pulse hyvui-signal-ring-2" style:border-color={color}></span>
32
- <span class="hyvui-signal-ring-pulse hyvui-signal-ring-3" style:border-color={color}></span>
33
- {/if}
34
- <span class="hyvui-signal-ring-core" style:background-color={color}></span>
35
- </div>
36
-
37
- <style>
38
- .hyvui-signal-ring {
39
- position: relative;
40
- display: flex;
41
- align-items: center;
42
- justify-content: center;
43
- pointer-events: none;
44
- }
45
-
46
- .hyvui-signal-ring-core {
47
- width: 4px;
48
- height: 4px;
49
- border-radius: 50%;
50
- opacity: 0.6;
51
- }
52
-
53
- .hyvui-signal-ring-pulse {
54
- position: absolute;
55
- inset: 0;
56
- border-radius: 50%;
57
- border: 1px solid;
58
- opacity: 0;
59
- animation: signal-ring-expand 3.6s ease-out infinite;
60
- }
61
-
62
- .hyvui-signal-ring-1 {
63
- animation-delay: 0s;
64
- }
65
-
66
- .hyvui-signal-ring-2 {
67
- animation-delay: 1.2s;
68
- }
69
-
70
- .hyvui-signal-ring-3 {
71
- animation-delay: 2.4s;
72
- }
73
-
74
- @keyframes signal-ring-expand {
75
- 0% {
76
- transform: scale(0.1);
77
- opacity: 0.4;
78
- }
79
- 100% {
80
- transform: scale(1);
81
- opacity: 0;
82
- }
83
- }
84
-
85
- @media (prefers-reduced-motion: reduce) {
86
- .hyvui-signal-ring-pulse {
87
- animation: none;
88
- opacity: 0.08;
89
- transform: scale(0.6);
90
- }
91
-
92
- .hyvui-signal-ring-2 {
93
- transform: scale(0.8);
94
- }
95
-
96
- .hyvui-signal-ring-3 {
97
- transform: scale(1);
98
- }
99
- }
100
- </style>
1
+ <script lang="ts">
2
+ import { cn } from '../../utils/cn.js';
3
+
4
+ /**
5
+ * Decorative pulsing sonar rings. Renders `aria-hidden`.
6
+ * @example
7
+ * <SignalRing size={160} color="var(--signal)" />
8
+ * <SignalRing active={isLive} size={200} />
9
+ */
10
+ interface Props {
11
+ /** Enable the pulsing animation. */
12
+ active?: boolean;
13
+ /** Ring diameter in pixels. */
14
+ size?: number;
15
+ /** Ring color (CSS color value). */
16
+ color?: string;
17
+ /** Additional CSS classes. */
18
+ class?: string;
19
+ }
20
+
21
+ let {
22
+ active = true,
23
+ size = 200,
24
+ color = 'var(--accent)',
25
+ class: className = ''
26
+ }: Props = $props();
27
+ </script>
28
+
29
+ <div
30
+ class={cn('hyvui-signal-ring', className)}
31
+ style:width="{size}px"
32
+ style:height="{size}px"
33
+ aria-hidden="true"
34
+ >
35
+ {#if active}
36
+ <span class="hyvui-signal-ring-pulse hyvui-signal-ring-1" style:border-color={color}></span>
37
+ <span class="hyvui-signal-ring-pulse hyvui-signal-ring-2" style:border-color={color}></span>
38
+ <span class="hyvui-signal-ring-pulse hyvui-signal-ring-3" style:border-color={color}></span>
39
+ {/if}
40
+ <span class="hyvui-signal-ring-core" style:background-color={color}></span>
41
+ </div>
42
+
43
+ <style>
44
+ .hyvui-signal-ring {
45
+ position: relative;
46
+ display: flex;
47
+ align-items: center;
48
+ justify-content: center;
49
+ pointer-events: none;
50
+ }
51
+
52
+ .hyvui-signal-ring-core {
53
+ width: 4px;
54
+ height: 4px;
55
+ border-radius: 50%;
56
+ opacity: 0.6;
57
+ }
58
+
59
+ .hyvui-signal-ring-pulse {
60
+ position: absolute;
61
+ inset: 0;
62
+ border-radius: 50%;
63
+ border: 1px solid;
64
+ opacity: 0;
65
+ animation: signal-ring-expand 3.6s var(--ease-smooth) infinite;
66
+ }
67
+
68
+ .hyvui-signal-ring-1 {
69
+ animation-delay: 0s;
70
+ }
71
+
72
+ .hyvui-signal-ring-2 {
73
+ animation-delay: 1.2s;
74
+ }
75
+
76
+ .hyvui-signal-ring-3 {
77
+ animation-delay: 2.4s;
78
+ }
79
+
80
+ @keyframes signal-ring-expand {
81
+ 0% {
82
+ transform: scale(0.1);
83
+ opacity: 0.4;
84
+ }
85
+ 100% {
86
+ transform: scale(1);
87
+ opacity: 0;
88
+ }
89
+ }
90
+
91
+ @media (prefers-reduced-motion: reduce) {
92
+ .hyvui-signal-ring-pulse {
93
+ animation: none;
94
+ opacity: 0.08;
95
+ transform: scale(0.6);
96
+ }
97
+
98
+ .hyvui-signal-ring-2 {
99
+ transform: scale(0.8);
100
+ }
101
+
102
+ .hyvui-signal-ring-3 {
103
+ transform: scale(1);
104
+ }
105
+ }
106
+ </style>
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Decorative pulsing sonar rings. Renders `aria-hidden`.
3
+ * @example
4
+ * <SignalRing size={160} color="var(--signal)" />
5
+ * <SignalRing active={isLive} size={200} />
6
+ */
1
7
  interface Props {
2
8
  /** Enable the pulsing animation. */
3
9
  active?: boolean;
@@ -1,78 +1,78 @@
1
- <script lang="ts">
2
- import { cn } from '../../utils/cn.js';
3
-
4
- interface Props {
5
- /** Start x position (CSS value). */
6
- x1?: string;
7
- /** Start y position (CSS value). */
8
- y1?: string;
9
- /** End x position (CSS value). */
10
- x2?: string;
11
- /** End y position (CSS value). */
12
- y2?: string;
13
- /** Enable the traveling dot animation. */
14
- animated?: boolean;
15
- /** Additional CSS classes. */
16
- class?: string;
17
- }
18
-
19
- let {
20
- x1 = '0%',
21
- y1 = '0%',
22
- x2 = '100%',
23
- y2 = '100%',
24
- animated = true,
25
- class: className = '',
26
- }: Props = $props();
27
- </script>
28
-
29
- <svg
30
- class={cn('hyvui-thread-line', className)}
31
- aria-hidden="true"
32
- >
33
- <line
34
- {x1} {y1} {x2} {y2}
35
- stroke="var(--line)"
36
- stroke-width="1"
37
- />
38
- {#if animated}
39
- <circle r="2" fill="var(--accent)">
40
- <animateMotion
41
- dur="3s"
42
- repeatCount="indefinite"
43
- path="M 0,0 L 1,0"
44
- keyPoints="0;1"
45
- keyTimes="0;1"
46
- calcMode="linear"
47
- >
48
- <mpath>
49
- <line {x1} {y1} {x2} {y2} />
50
- </mpath>
51
- </animateMotion>
52
- <animate
53
- attributeName="opacity"
54
- values="0;0.8;0.8;0"
55
- keyTimes="0;0.1;0.85;1"
56
- dur="3s"
57
- repeatCount="indefinite"
58
- />
59
- </circle>
60
- {/if}
61
- </svg>
62
-
63
- <style>
64
- .hyvui-thread-line {
65
- position: absolute;
66
- inset: 0;
67
- width: 100%;
68
- height: 100%;
69
- pointer-events: none;
70
- overflow: visible;
71
- }
72
-
73
- @media (prefers-reduced-motion: reduce) {
74
- .hyvui-thread-line circle {
75
- display: none;
76
- }
77
- }
78
- </style>
1
+ <script lang="ts">
2
+ import { cn } from '../../utils/cn.js';
3
+
4
+ /**
5
+ * Decorative SVG line with an optional traveling dot. Parent must have `position: relative`. Renders `aria-hidden`.
6
+ * @example
7
+ * <div style="position: relative; height: 200px;">
8
+ * <ThreadLine x1="0%" y1="0%" x2="100%" y2="100%" animated />
9
+ * </div>
10
+ */
11
+ interface Props {
12
+ /** Start x position (CSS value). */
13
+ x1?: string;
14
+ /** Start y position (CSS value). */
15
+ y1?: string;
16
+ /** End x position (CSS value). */
17
+ x2?: string;
18
+ /** End y position (CSS value). */
19
+ y2?: string;
20
+ /** Enable the traveling dot animation. */
21
+ animated?: boolean;
22
+ /** Additional CSS classes. */
23
+ class?: string;
24
+ }
25
+
26
+ let {
27
+ x1 = '0%',
28
+ y1 = '0%',
29
+ x2 = '100%',
30
+ y2 = '100%',
31
+ animated = true,
32
+ class: className = ''
33
+ }: Props = $props();
34
+ </script>
35
+
36
+ <svg class={cn('hyvui-thread-line', className)} aria-hidden="true">
37
+ <line {x1} {y1} {x2} {y2} stroke="var(--line)" stroke-width="1" />
38
+ {#if animated}
39
+ <circle r="2" fill="var(--accent)">
40
+ <animateMotion
41
+ dur="3s"
42
+ repeatCount="indefinite"
43
+ path="M 0,0 L 1,0"
44
+ keyPoints="0;1"
45
+ keyTimes="0;1"
46
+ calcMode="linear"
47
+ >
48
+ <mpath>
49
+ <line {x1} {y1} {x2} {y2} />
50
+ </mpath>
51
+ </animateMotion>
52
+ <animate
53
+ attributeName="opacity"
54
+ values="0;0.8;0.8;0"
55
+ keyTimes="0;0.1;0.85;1"
56
+ dur="3s"
57
+ repeatCount="indefinite"
58
+ />
59
+ </circle>
60
+ {/if}
61
+ </svg>
62
+
63
+ <style>
64
+ .hyvui-thread-line {
65
+ position: absolute;
66
+ inset: 0;
67
+ width: 100%;
68
+ height: 100%;
69
+ pointer-events: none;
70
+ overflow: visible;
71
+ }
72
+
73
+ @media (prefers-reduced-motion: reduce) {
74
+ .hyvui-thread-line circle {
75
+ display: none;
76
+ }
77
+ }
78
+ </style>
@@ -1,3 +1,10 @@
1
+ /**
2
+ * Decorative SVG line with an optional traveling dot. Parent must have `position: relative`. Renders `aria-hidden`.
3
+ * @example
4
+ * <div style="position: relative; height: 200px;">
5
+ * <ThreadLine x1="0%" y1="0%" x2="100%" y2="100%" animated />
6
+ * </div>
7
+ */
1
8
  interface Props {
2
9
  /** Start x position (CSS value). */
3
10
  x1?: string;
@@ -1,26 +1,30 @@
1
- <script lang="ts">
2
- import { cn } from '../../utils/cn.js';
3
-
4
- interface Props {
5
- /** Additional CSS classes. */
6
- class?: string;
7
- }
8
-
9
- let {
10
- class: className = '',
11
- }: Props = $props();
12
- </script>
13
-
14
- <div class={cn('hyvui-vignette', className)} aria-hidden="true"></div>
15
-
16
- <style>
17
- .hyvui-vignette {
18
- position: fixed;
19
- inset: 0;
20
- pointer-events: none;
21
- z-index: var(--z-overlay);
22
- background:
23
- radial-gradient(ellipse at 50% 0%, transparent 60%, rgba(0, 0, 0, 0.4)),
24
- radial-gradient(ellipse at 50% 100%, transparent 60%, rgba(0, 0, 0, 0.5));
25
- }
26
- </style>
1
+ <script lang="ts">
2
+ import { cn } from '../../utils/cn.js';
3
+
4
+ /**
5
+ * Fixed-position dark vignette overlay. Place once in root layout. Renders `aria-hidden`.
6
+ * @example
7
+ * <!-- in +layout.svelte (or use AppShell which adds it automatically) -->
8
+ * <Vignette />
9
+ */
10
+ interface Props {
11
+ /** Additional CSS classes. */
12
+ class?: string;
13
+ }
14
+
15
+ let { class: className = '' }: Props = $props();
16
+ </script>
17
+
18
+ <div class={cn('hyvui-vignette', className)} aria-hidden="true"></div>
19
+
20
+ <style>
21
+ .hyvui-vignette {
22
+ position: fixed;
23
+ inset: 0;
24
+ pointer-events: none;
25
+ z-index: var(--z-overlay);
26
+ background:
27
+ radial-gradient(ellipse at 50% 0%, transparent 60%, rgba(0, 0, 0, 0.4)),
28
+ radial-gradient(ellipse at 50% 100%, transparent 60%, rgba(0, 0, 0, 0.5));
29
+ }
30
+ </style>
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Fixed-position dark vignette overlay. Place once in root layout. Renders `aria-hidden`.
3
+ * @example
4
+ * <!-- in +layout.svelte (or use AppShell which adds it automatically) -->
5
+ * <Vignette />
6
+ */
1
7
  interface Props {
2
8
  /** Additional CSS classes. */
3
9
  class?: string;
@@ -1,27 +1,30 @@
1
- <script lang="ts">
2
- import { cn } from '../../utils/cn.js';
3
- import type { DepthLevel } from '../../system/depth/depth.js';
4
- import type { Snippet } from 'svelte';
5
-
6
- interface Props {
7
- /** Z-level within a parent DepthStage. */
8
- level?: DepthLevel;
9
- /** HTML tag to render. */
10
- as?: string;
11
- /** Additional CSS classes. */
12
- class?: string;
13
- /** Layer content. */
14
- children?: Snippet;
15
- }
16
-
17
- let {
18
- level = 'ground',
19
- as = 'div',
20
- class: className = '',
21
- children,
22
- }: Props = $props();
23
- </script>
24
-
25
- <svelte:element this={as} class={cn(`depth-${level}`, className)}>
26
- {#if children}{@render children()}{/if}
27
- </svelte:element>
1
+ <script lang="ts">
2
+ import { cn } from '../../utils/cn.js';
3
+ import type { DepthLevel } from '../../system/depth/depth.js';
4
+ import type { Snippet } from 'svelte';
5
+
6
+ /**
7
+ * Places children at a named z-level within a DepthStage.
8
+ * @example
9
+ * <DepthStage>
10
+ * <DepthLayer level="ground"><HorizonGrid /></DepthLayer>
11
+ * <DepthLayer level="foreground"><Text variant="heading">in front</Text></DepthLayer>
12
+ * </DepthStage>
13
+ */
14
+ interface Props {
15
+ /** Z-level within a parent DepthStage. */
16
+ level?: DepthLevel;
17
+ /** HTML tag to render. */
18
+ as?: string;
19
+ /** Additional CSS classes. */
20
+ class?: string;
21
+ /** Layer content. */
22
+ children?: Snippet;
23
+ }
24
+
25
+ let { level = 'ground', as = 'div', class: className = '', children }: Props = $props();
26
+ </script>
27
+
28
+ <svelte:element this={as} class={cn(`depth-${level}`, className)}>
29
+ {#if children}{@render children()}{/if}
30
+ </svelte:element>
@@ -1,5 +1,13 @@
1
1
  import type { DepthLevel } from '../../system/depth/depth.js';
2
2
  import type { Snippet } from 'svelte';
3
+ /**
4
+ * Places children at a named z-level within a DepthStage.
5
+ * @example
6
+ * <DepthStage>
7
+ * <DepthLayer level="ground"><HorizonGrid /></DepthLayer>
8
+ * <DepthLayer level="foreground"><Text variant="heading">in front</Text></DepthLayer>
9
+ * </DepthStage>
10
+ */
3
11
  interface Props {
4
12
  /** Z-level within a parent DepthStage. */
5
13
  level?: DepthLevel;