@hyvnt/hyvui 0.1.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 (157) hide show
  1. package/README.md +253 -0
  2. package/dist/components/ambient/CornerBrackets.svelte +87 -0
  3. package/dist/components/ambient/CornerBrackets.svelte.d.ts +11 -0
  4. package/dist/components/ambient/DataStream.svelte +94 -0
  5. package/dist/components/ambient/DataStream.svelte.d.ts +13 -0
  6. package/dist/components/ambient/GlyphMark.svelte +69 -0
  7. package/dist/components/ambient/GlyphMark.svelte.d.ts +13 -0
  8. package/dist/components/ambient/GridOverlay.svelte +28 -0
  9. package/dist/components/ambient/GridOverlay.svelte.d.ts +7 -0
  10. package/dist/components/ambient/ParallaxLayer.svelte +41 -0
  11. package/dist/components/ambient/ParallaxLayer.svelte.d.ts +12 -0
  12. package/dist/components/ambient/ScanBand.svelte +91 -0
  13. package/dist/components/ambient/ScanBand.svelte.d.ts +17 -0
  14. package/dist/components/ambient/SignalRing.svelte +100 -0
  15. package/dist/components/ambient/SignalRing.svelte.d.ts +13 -0
  16. package/dist/components/ambient/ThreadLine.svelte +78 -0
  17. package/dist/components/ambient/ThreadLine.svelte.d.ts +17 -0
  18. package/dist/components/ambient/Vignette.svelte +26 -0
  19. package/dist/components/ambient/Vignette.svelte.d.ts +7 -0
  20. package/dist/components/depth/DepthLayer.svelte +27 -0
  21. package/dist/components/depth/DepthLayer.svelte.d.ts +15 -0
  22. package/dist/components/depth/DepthStage.svelte +62 -0
  23. package/dist/components/depth/DepthStage.svelte.d.ts +19 -0
  24. package/dist/components/depth/FloatCard.svelte +104 -0
  25. package/dist/components/depth/FloatCard.svelte.d.ts +14 -0
  26. package/dist/components/depth/HorizonGrid.svelte +160 -0
  27. package/dist/components/depth/HorizonGrid.svelte.d.ts +15 -0
  28. package/dist/components/depth/Plinth.svelte +57 -0
  29. package/dist/components/depth/Plinth.svelte.d.ts +13 -0
  30. package/dist/components/display/Avatar.svelte +69 -0
  31. package/dist/components/display/Avatar.svelte.d.ts +13 -0
  32. package/dist/components/display/Badge.svelte +63 -0
  33. package/dist/components/display/Badge.svelte.d.ts +12 -0
  34. package/dist/components/display/Blockquote.svelte +34 -0
  35. package/dist/components/display/Blockquote.svelte.d.ts +10 -0
  36. package/dist/components/display/CodeBlock.svelte +76 -0
  37. package/dist/components/display/CodeBlock.svelte.d.ts +13 -0
  38. package/dist/components/display/MetricCard.svelte +83 -0
  39. package/dist/components/display/MetricCard.svelte.d.ts +15 -0
  40. package/dist/components/display/Table.svelte +104 -0
  41. package/dist/components/display/Table.svelte.d.ts +19 -0
  42. package/dist/components/feedback/Alert.svelte +76 -0
  43. package/dist/components/feedback/Alert.svelte.d.ts +14 -0
  44. package/dist/components/feedback/EmptyState.svelte +68 -0
  45. package/dist/components/feedback/EmptyState.svelte.d.ts +14 -0
  46. package/dist/components/feedback/ErrorState.svelte +73 -0
  47. package/dist/components/feedback/ErrorState.svelte.d.ts +15 -0
  48. package/dist/components/feedback/Skeleton.svelte +52 -0
  49. package/dist/components/feedback/Skeleton.svelte.d.ts +13 -0
  50. package/dist/components/feedback/StatusDot.svelte +54 -0
  51. package/dist/components/feedback/StatusDot.svelte.d.ts +13 -0
  52. package/dist/components/feedback/StatusLine.svelte +122 -0
  53. package/dist/components/feedback/StatusLine.svelte.d.ts +17 -0
  54. package/dist/components/feedback/Toast.svelte +136 -0
  55. package/dist/components/feedback/Toast.svelte.d.ts +21 -0
  56. package/dist/components/inputs/Button.svelte +237 -0
  57. package/dist/components/inputs/Button.svelte.d.ts +30 -0
  58. package/dist/components/inputs/Checkbox.svelte +105 -0
  59. package/dist/components/inputs/Checkbox.svelte.d.ts +15 -0
  60. package/dist/components/inputs/FileUpload.svelte +163 -0
  61. package/dist/components/inputs/FileUpload.svelte.d.ts +17 -0
  62. package/dist/components/inputs/Input.svelte +147 -0
  63. package/dist/components/inputs/Input.svelte.d.ts +25 -0
  64. package/dist/components/inputs/Select.svelte +150 -0
  65. package/dist/components/inputs/Select.svelte.d.ts +23 -0
  66. package/dist/components/inputs/Textarea.svelte +154 -0
  67. package/dist/components/inputs/Textarea.svelte.d.ts +25 -0
  68. package/dist/components/inputs/Toggle.svelte +120 -0
  69. package/dist/components/inputs/Toggle.svelte.d.ts +15 -0
  70. package/dist/components/layout/Card.svelte +76 -0
  71. package/dist/components/layout/Card.svelte.d.ts +16 -0
  72. package/dist/components/layout/Drawer.svelte +109 -0
  73. package/dist/components/layout/Drawer.svelte.d.ts +18 -0
  74. package/dist/components/layout/Grid.svelte +43 -0
  75. package/dist/components/layout/Grid.svelte.d.ts +16 -0
  76. package/dist/components/layout/Modal.svelte +159 -0
  77. package/dist/components/layout/Modal.svelte.d.ts +20 -0
  78. package/dist/components/layout/Panel.svelte +54 -0
  79. package/dist/components/layout/Panel.svelte.d.ts +14 -0
  80. package/dist/components/layout/Popover.svelte +67 -0
  81. package/dist/components/layout/Popover.svelte.d.ts +14 -0
  82. package/dist/components/layout/Stack.svelte +53 -0
  83. package/dist/components/layout/Stack.svelte.d.ts +22 -0
  84. package/dist/components/navigation/Breadcrumb.svelte +73 -0
  85. package/dist/components/navigation/Breadcrumb.svelte.d.ts +13 -0
  86. package/dist/components/navigation/DropdownMenu.svelte +124 -0
  87. package/dist/components/navigation/DropdownMenu.svelte.d.ts +19 -0
  88. package/dist/components/navigation/SidebarNav.svelte +90 -0
  89. package/dist/components/navigation/SidebarNav.svelte.d.ts +16 -0
  90. package/dist/components/navigation/Tabs.svelte +86 -0
  91. package/dist/components/navigation/Tabs.svelte.d.ts +17 -0
  92. package/dist/components/navigation/Topbar.svelte +85 -0
  93. package/dist/components/navigation/Topbar.svelte.d.ts +14 -0
  94. package/dist/components/patterns/ActionBar.svelte +76 -0
  95. package/dist/components/patterns/ActionBar.svelte.d.ts +14 -0
  96. package/dist/components/patterns/ConfirmDialog.svelte +64 -0
  97. package/dist/components/patterns/ConfirmDialog.svelte.d.ts +23 -0
  98. package/dist/components/patterns/PageHeader.svelte +114 -0
  99. package/dist/components/patterns/PageHeader.svelte.d.ts +16 -0
  100. package/dist/components/patterns/SearchBar.svelte +59 -0
  101. package/dist/components/patterns/SearchBar.svelte.d.ts +15 -0
  102. package/dist/components/patterns/TerminalBoot.svelte +104 -0
  103. package/dist/components/patterns/TerminalBoot.svelte.d.ts +25 -0
  104. package/dist/components/primitives/Divider.svelte +29 -0
  105. package/dist/components/primitives/Divider.svelte.d.ts +9 -0
  106. package/dist/components/primitives/Icon.svelte +49 -0
  107. package/dist/components/primitives/Icon.svelte.d.ts +14 -0
  108. package/dist/components/primitives/Label.svelte +44 -0
  109. package/dist/components/primitives/Label.svelte.d.ts +14 -0
  110. package/dist/components/primitives/Surface.svelte +87 -0
  111. package/dist/components/primitives/Surface.svelte.d.ts +16 -0
  112. package/dist/components/primitives/Text.svelte +98 -0
  113. package/dist/components/primitives/Text.svelte.d.ts +19 -0
  114. package/dist/components/primitives/text.d.ts +1 -0
  115. package/dist/components/primitives/text.js +1 -0
  116. package/dist/components/scenes/ArchiveScene.svelte +95 -0
  117. package/dist/components/scenes/ArchiveScene.svelte.d.ts +16 -0
  118. package/dist/components/scenes/LogScene.svelte +77 -0
  119. package/dist/components/scenes/LogScene.svelte.d.ts +14 -0
  120. package/dist/components/scenes/NarrativeScene.svelte +92 -0
  121. package/dist/components/scenes/NarrativeScene.svelte.d.ts +16 -0
  122. package/dist/components/scenes/ReadoutScene.svelte +107 -0
  123. package/dist/components/scenes/ReadoutScene.svelte.d.ts +16 -0
  124. package/dist/components/scenes/StageScene.svelte +104 -0
  125. package/dist/components/scenes/StageScene.svelte.d.ts +18 -0
  126. package/dist/examples/FieldReport.svelte +223 -0
  127. package/dist/examples/FieldReport.svelte.d.ts +18 -0
  128. package/dist/examples/ObservationDeck.svelte +317 -0
  129. package/dist/examples/ObservationDeck.svelte.d.ts +3 -0
  130. package/dist/examples/SignalLost.svelte +191 -0
  131. package/dist/examples/SignalLost.svelte.d.ts +3 -0
  132. package/dist/index.d.ts +73 -0
  133. package/dist/index.js +83 -0
  134. package/dist/system/actions/echo.d.ts +10 -0
  135. package/dist/system/actions/echo.js +46 -0
  136. package/dist/system/actions/resolve.d.ts +23 -0
  137. package/dist/system/actions/resolve.js +59 -0
  138. package/dist/system/actions/reveal.d.ts +18 -0
  139. package/dist/system/actions/reveal.js +54 -0
  140. package/dist/system/actions/surface.d.ts +14 -0
  141. package/dist/system/actions/surface.js +25 -0
  142. package/dist/system/depth/depth.css +49 -0
  143. package/dist/system/depth/depth.d.ts +15 -0
  144. package/dist/system/depth/depth.js +24 -0
  145. package/dist/system/expressions.css +80 -0
  146. package/dist/system/override-template.css +72 -0
  147. package/dist/system/register.css +74 -0
  148. package/dist/system/register.d.ts +11 -0
  149. package/dist/system/register.js +16 -0
  150. package/dist/tokens/tokens.css +86 -0
  151. package/dist/tokens/tokens.d.ts +25 -0
  152. package/dist/tokens/tokens.js +25 -0
  153. package/dist/utils/cn.d.ts +2 -0
  154. package/dist/utils/cn.js +4 -0
  155. package/dist/utils/motion.d.ts +17 -0
  156. package/dist/utils/motion.js +11 -0
  157. package/package.json +60 -0
@@ -0,0 +1,15 @@
1
+ export type DepthLevel = 'ground' | 'raised' | 'foreground';
2
+ export type PerspectivePreset = 'near' | 'mid' | 'far';
3
+ /**
4
+ * Returns the CSS translateZ value for a given depth level.
5
+ */
6
+ export declare function depthZ(level: DepthLevel): string;
7
+ /**
8
+ * Calculates a 3D tilt transform from a pointer position within an element.
9
+ * Returns a CSS transform string.
10
+ *
11
+ * @param x - pointer x (0-1, normalized within element)
12
+ * @param y - pointer y (0-1, normalized within element)
13
+ * @param maxDeg - maximum tilt angle in degrees (default: 8)
14
+ */
15
+ export declare function tiltTransform(x: number, y: number, maxDeg?: number): string;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Returns the CSS translateZ value for a given depth level.
3
+ */
4
+ export function depthZ(level) {
5
+ const map = {
6
+ ground: 'var(--depth-ground)',
7
+ raised: 'var(--depth-raised)',
8
+ foreground: 'var(--depth-foreground)',
9
+ };
10
+ return map[level];
11
+ }
12
+ /**
13
+ * Calculates a 3D tilt transform from a pointer position within an element.
14
+ * Returns a CSS transform string.
15
+ *
16
+ * @param x - pointer x (0-1, normalized within element)
17
+ * @param y - pointer y (0-1, normalized within element)
18
+ * @param maxDeg - maximum tilt angle in degrees (default: 8)
19
+ */
20
+ export function tiltTransform(x, y, maxDeg = 8) {
21
+ const rx = (y - 0.5) * -maxDeg * 2;
22
+ const ry = (x - 0.5) * maxDeg * 2;
23
+ return `rotateX(${rx}deg) rotateY(${ry}deg)`;
24
+ }
@@ -0,0 +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
+ 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
+ }
@@ -0,0 +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
+ /* ── 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
+ */
@@ -0,0 +1,74 @@
1
+ /* ── register system ──────────────────────────────────────────────────── */
2
+ /* registers shift the weight distribution of the design. no new colors */
3
+ /* or fonts — the same gold, teal, ET Book, and IBM Plex Mono, but their */
4
+ /* relative presence changes. */
5
+ /* */
6
+ /* apply: <body data-register="field-notebook"> */
7
+ /* or: applyRegister('field-notebook') */
8
+
9
+ /* ── base fallbacks (no register declared) ───────────────────────────── */
10
+ :root {
11
+ --reg-font-primary: var(--font-body);
12
+ --reg-font-ui: var(--font-mono);
13
+ --reg-heading-tracking: -0.04em;
14
+ --reg-heading-lh: 0.94;
15
+ --reg-body-size: 1rem;
16
+ --reg-label-size: 0.68rem;
17
+ --reg-label-tracking: 0.14em;
18
+ --reg-surface-opacity: 0.8;
19
+ --reg-ornament-opacity: 0.14;
20
+ --reg-accent-weight: 1;
21
+ --reg-signal-weight: 1;
22
+ --reg-spacing-scale: 1;
23
+ }
24
+
25
+ /* ── register: field-notebook ────────────────────────────────────────── */
26
+ /* editorial, warm, serif-forward. for portfolios, narrative pages, about */
27
+ [data-register='field-notebook'] {
28
+ --reg-font-primary: var(--font-body);
29
+ --reg-font-ui: var(--font-mono);
30
+ --reg-heading-tracking: -0.05em;
31
+ --reg-heading-lh: 0.92;
32
+ --reg-body-size: 1.18rem;
33
+ --reg-label-size: 0.7rem;
34
+ --reg-label-tracking: 0.14em;
35
+ --reg-surface-opacity: 0.72;
36
+ --reg-ornament-opacity: 0.18;
37
+ --reg-accent-weight: 1;
38
+ --reg-signal-weight: 0.6;
39
+ --reg-spacing-scale: 1.15;
40
+ }
41
+
42
+ /* ── register: mission-control ───────────────────────────────────────── */
43
+ /* dense, precise, mono-forward. for dashboards, tools, data interfaces */
44
+ [data-register='mission-control'] {
45
+ --reg-font-primary: var(--font-mono);
46
+ --reg-font-ui: var(--font-mono);
47
+ --reg-heading-tracking: -0.02em;
48
+ --reg-heading-lh: 1;
49
+ --reg-body-size: 0.9rem;
50
+ --reg-label-size: 0.65rem;
51
+ --reg-label-tracking: 0.18em;
52
+ --reg-surface-opacity: 0.92;
53
+ --reg-ornament-opacity: 0.08;
54
+ --reg-accent-weight: 0.7;
55
+ --reg-signal-weight: 1;
56
+ --reg-spacing-scale: 0.9;
57
+ }
58
+
59
+ /* ── register: archive ───────────────────────────────────────────────── */
60
+ /* cool, ordered, muted. for galleries, indexes, reference collections */
61
+ [data-register='archive'] {
62
+ --reg-font-primary: var(--font-body);
63
+ --reg-font-ui: var(--font-mono);
64
+ --reg-heading-tracking: -0.03em;
65
+ --reg-heading-lh: 0.96;
66
+ --reg-body-size: 1rem;
67
+ --reg-label-size: 0.66rem;
68
+ --reg-label-tracking: 0.16em;
69
+ --reg-surface-opacity: 0.55;
70
+ --reg-ornament-opacity: 0.04;
71
+ --reg-accent-weight: 0.4;
72
+ --reg-signal-weight: 0.4;
73
+ --reg-spacing-scale: 1.3;
74
+ }
@@ -0,0 +1,11 @@
1
+ export type Register = 'field-notebook' | 'mission-control' | 'archive';
2
+ /**
3
+ * Applies a register to an element by setting data-register.
4
+ * Call with a DOM element reference or 'body' to set globally.
5
+ */
6
+ export declare function applyRegister(register: Register, target?: HTMLElement | 'body'): void;
7
+ /**
8
+ * Removes the register from an element, restoring default behavior.
9
+ */
10
+ export declare function clearRegister(target?: HTMLElement | 'body'): void;
11
+ export declare const registers: Register[];
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Applies a register to an element by setting data-register.
3
+ * Call with a DOM element reference or 'body' to set globally.
4
+ */
5
+ export function applyRegister(register, target = 'body') {
6
+ const el = target === 'body' ? document.body : target;
7
+ el.dataset.register = register;
8
+ }
9
+ /**
10
+ * Removes the register from an element, restoring default behavior.
11
+ */
12
+ export function clearRegister(target = 'body') {
13
+ const el = target === 'body' ? document.body : target;
14
+ delete el.dataset.register;
15
+ }
16
+ export const registers = ['field-notebook', 'mission-control', 'archive'];
@@ -0,0 +1,86 @@
1
+ :root {
2
+ /* ── backgrounds ─────────────────────────────── */
3
+ --bg: #08090b;
4
+ --bg-elev: #12151a;
5
+ --bg-elev-soft: #0d1014;
6
+
7
+ /* ── text ────────────────────────────────────── */
8
+ --text: #f0e8da;
9
+ --text-soft: #d8cdb9;
10
+ --muted: #a79d8b;
11
+ --muted-strong: #7e7568;
12
+
13
+ /* ── accent ──────────────────────────────────── */
14
+ --accent: #c79c57;
15
+ --accent-strong: #e2ba74;
16
+ --signal: #79a6a3;
17
+
18
+ /* ── lines ───────────────────────────────────── */
19
+ --line: rgba(186, 157, 108, 0.16);
20
+ --line-strong: rgba(198, 166, 112, 0.28);
21
+
22
+ /* ── status ──────────────────────────────────── */
23
+ --status-ok: #79a6a3;
24
+ --status-pend: #8b8476;
25
+ --status-warn: #c79c57;
26
+ --status-fail: #b66a48;
27
+
28
+ /* ── shadow ──────────────────────────────────── */
29
+ --shadow-veil: 0 40px 120px rgba(0, 0, 0, 0.45);
30
+ --shadow-card: 0 28px 72px rgba(0, 0, 0, 0.34);
31
+ --focus-ring: 0 0 0 1px rgba(226, 186, 116, 0.3), 0 0 0 4px rgba(199, 156, 87, 0.08);
32
+
33
+ /* ── motion ──────────────────────────────────── */
34
+ --transition-smooth: 0.35s cubic-bezier(0.22, 1, 0.36, 1);
35
+ --transition-fast: 0.16s cubic-bezier(0.4, 0, 0.2, 1);
36
+
37
+ /* ── fonts ───────────────────────────────────── */
38
+ --font-body: 'ET Book', 'Iowan Old Style', 'Palatino Linotype', serif;
39
+ --font-mono: 'IBM Plex Mono', 'Menlo', 'Consolas', monospace;
40
+
41
+ /* ── spacing (fluid) ─────────────────────────── */
42
+ --space-2xs: 0.25rem;
43
+ --space-xs: 0.5rem;
44
+ --space-sm: 0.75rem;
45
+ --space-md: 1rem;
46
+ --space-lg: 1.5rem;
47
+ --space-xl: 2rem;
48
+ --space-2xl: 3rem;
49
+ --space-3xl: clamp(3rem, 6vw, 5rem);
50
+ --space-scene: clamp(2.25rem, 7vw, 6rem);
51
+ --space-card: clamp(1.1rem, 2vw, 1.6rem);
52
+ --space-inline: 1rem;
53
+ --shell-max: 72rem;
54
+ --shell-pad: clamp(1.1rem, 3vw, 2rem);
55
+ --section-gap: clamp(1.5rem, 3vw, 2.5rem);
56
+
57
+ /* ── radius ──────────────────────────────────── */
58
+ --radius-sm: 2px;
59
+ --radius-md: 4px;
60
+ --radius-lg: 6px;
61
+
62
+ /* ── controls ────────────────────────────────── */
63
+ --control-height-sm: 2.25rem;
64
+ --control-height-md: 2.75rem;
65
+ --control-pad-x: 0.9rem;
66
+ --control-pad-y: 0.7rem;
67
+ --control-gap: 0.5rem;
68
+
69
+ /* ── surface gradients ───────────────────────── */
70
+ --surface-card: linear-gradient(135deg, rgba(199, 156, 87, 0.08), transparent 44%),
71
+ rgba(10, 12, 14, 0.8);
72
+ --surface-panel: linear-gradient(180deg, rgba(121, 166, 163, 0.08), transparent 18%),
73
+ linear-gradient(135deg, rgba(199, 156, 87, 0.08), rgba(10, 12, 14, 0.82) 42%),
74
+ rgba(9, 11, 13, 0.74);
75
+ --surface-soft: linear-gradient(180deg, rgba(240, 232, 218, 0.015), transparent 38%),
76
+ linear-gradient(135deg, rgba(199, 156, 87, 0.05), transparent 48%),
77
+ rgba(11, 13, 16, 0.9);
78
+ --surface-stroke: inset 0 1px 0 rgba(240, 232, 218, 0.03);
79
+
80
+ /* ── z-index ─────────────────────────────────── */
81
+ --z-base: 0;
82
+ --z-raised: 10;
83
+ --z-overlay: 100;
84
+ --z-modal: 200;
85
+ --z-toast: 300;
86
+ }
@@ -0,0 +1,25 @@
1
+ export declare const tokens: {
2
+ readonly color: {
3
+ readonly bg: "#08090b";
4
+ readonly bgElev: "#12151a";
5
+ readonly text: "#f0e8da";
6
+ readonly textSoft: "#d8cdb9";
7
+ readonly muted: "#a79d8b";
8
+ readonly mutedStrong: "#7e7568";
9
+ readonly accent: "#c79c57";
10
+ readonly accentStrong: "#e2ba74";
11
+ readonly signal: "#79a6a3";
12
+ readonly statusOk: "#79a6a3";
13
+ readonly statusPend: "#8b8476";
14
+ readonly statusWarn: "#c79c57";
15
+ readonly statusFail: "#b66a48";
16
+ };
17
+ readonly font: {
18
+ readonly body: "'ET Book', 'Iowan Old Style', 'Palatino Linotype', serif";
19
+ readonly mono: "'IBM Plex Mono', 'Menlo', 'Consolas', monospace";
20
+ };
21
+ readonly transition: {
22
+ readonly smooth: "0.35s cubic-bezier(0.22, 1, 0.36, 1)";
23
+ readonly fast: "0.16s cubic-bezier(0.4, 0, 0.2, 1)";
24
+ };
25
+ };
@@ -0,0 +1,25 @@
1
+ export const tokens = {
2
+ color: {
3
+ bg: '#08090b',
4
+ bgElev: '#12151a',
5
+ text: '#f0e8da',
6
+ textSoft: '#d8cdb9',
7
+ muted: '#a79d8b',
8
+ mutedStrong: '#7e7568',
9
+ accent: '#c79c57',
10
+ accentStrong: '#e2ba74',
11
+ signal: '#79a6a3',
12
+ statusOk: '#79a6a3',
13
+ statusPend: '#8b8476',
14
+ statusWarn: '#c79c57',
15
+ statusFail: '#b66a48',
16
+ },
17
+ font: {
18
+ body: "'ET Book', 'Iowan Old Style', 'Palatino Linotype', serif",
19
+ mono: "'IBM Plex Mono', 'Menlo', 'Consolas', monospace",
20
+ },
21
+ transition: {
22
+ smooth: '0.35s cubic-bezier(0.22, 1, 0.36, 1)',
23
+ fast: '0.16s cubic-bezier(0.4, 0, 0.2, 1)',
24
+ },
25
+ };
@@ -0,0 +1,2 @@
1
+ /** Merges class name strings, filtering out falsy values. */
2
+ export declare function cn(...classes: (string | false | null | undefined)[]): string;
@@ -0,0 +1,4 @@
1
+ /** Merges class name strings, filtering out falsy values. */
2
+ export function cn(...classes) {
3
+ return classes.filter(Boolean).join(' ');
4
+ }
@@ -0,0 +1,17 @@
1
+ /** Standard stagger-in animation parameters. */
2
+ export declare const staggerIn: {
3
+ readonly from: {
4
+ readonly opacity: 0;
5
+ readonly transform: "translateY(6px)";
6
+ };
7
+ readonly to: {
8
+ readonly opacity: 1;
9
+ readonly transform: "translateY(0)";
10
+ };
11
+ readonly duration: 500;
12
+ readonly easing: "cubic-bezier(0.22, 1, 0.36, 1)";
13
+ };
14
+ /** Standard hover-lift transform. */
15
+ export declare const hoverLift = "translateY(-2px)";
16
+ /** Standard selection shift transform. */
17
+ export declare const selectionShift = "translateX(6px)";
@@ -0,0 +1,11 @@
1
+ /** Standard stagger-in animation parameters. */
2
+ export const staggerIn = {
3
+ from: { opacity: 0, transform: 'translateY(6px)' },
4
+ to: { opacity: 1, transform: 'translateY(0)' },
5
+ duration: 500,
6
+ easing: 'cubic-bezier(0.22, 1, 0.36, 1)',
7
+ };
8
+ /** Standard hover-lift transform. */
9
+ export const hoverLift = 'translateY(-2px)';
10
+ /** Standard selection shift transform. */
11
+ export const selectionShift = 'translateX(6px)';
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@hyvnt/hyvui",
3
+ "version": "0.1.0",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "scripts": {
8
+ "dev": "vite dev",
9
+ "build": "vite build && npm run prepack",
10
+ "preview": "vite preview",
11
+ "prepare": "svelte-kit sync || echo ''",
12
+ "prepack": "svelte-kit sync && svelte-package && publint",
13
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
14
+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
15
+ "format": "prettier --write .",
16
+ "lint": "prettier --check ."
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "!dist/**/*.test.*",
21
+ "!dist/**/*.spec.*"
22
+ ],
23
+ "sideEffects": [
24
+ "**/*.css"
25
+ ],
26
+ "svelte": "./dist/index.js",
27
+ "types": "./dist/index.d.ts",
28
+ "type": "module",
29
+ "exports": {
30
+ ".": {
31
+ "types": "./dist/index.d.ts",
32
+ "svelte": "./dist/index.js"
33
+ }
34
+ },
35
+ "peerDependencies": {
36
+ "svelte": "^5.0.0"
37
+ },
38
+ "devDependencies": {
39
+ "@sveltejs/adapter-auto": "^6.0.0",
40
+ "@sveltejs/kit": "^2.22.0",
41
+ "@sveltejs/package": "^2.0.0",
42
+ "@sveltejs/vite-plugin-svelte": "^6.0.0",
43
+ "@tailwindcss/forms": "^0.5.9",
44
+ "@tailwindcss/typography": "^0.5.15",
45
+ "@tailwindcss/vite": "^4.0.0",
46
+ "prettier": "^3.4.2",
47
+ "prettier-plugin-svelte": "^3.3.3",
48
+ "prettier-plugin-tailwindcss": "^0.6.11",
49
+ "publint": "^0.3.2",
50
+ "svelte": "^5.0.0",
51
+ "svelte-check": "^4.0.0",
52
+ "tailwindcss": "^4.0.0",
53
+ "typescript": "^5.0.0",
54
+ "vite": "^7.0.4",
55
+ "vite-plugin-devtools-json": "^1.0.0"
56
+ },
57
+ "keywords": [
58
+ "svelte"
59
+ ]
60
+ }