@salmexio/ui 0.4.0 → 1.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.
- package/README.md +52 -3
- package/dist/dialogs/ContextMenu/ContextMenu.svelte +97 -94
- package/dist/dialogs/ContextMenu/ContextMenu.svelte.d.ts +3 -2
- package/dist/dialogs/ContextMenu/ContextMenu.svelte.d.ts.map +1 -1
- package/dist/dialogs/Modal/Modal.svelte +112 -116
- package/dist/dialogs/Modal/Modal.svelte.d.ts +1 -1
- package/dist/feedback/Alert/Alert.svelte +119 -220
- package/dist/feedback/Alert/Alert.svelte.d.ts +1 -1
- package/dist/feedback/ProgressBar/ProgressBar.svelte +265 -0
- package/dist/feedback/ProgressBar/ProgressBar.svelte.d.ts +40 -0
- package/dist/feedback/ProgressBar/ProgressBar.svelte.d.ts.map +1 -0
- package/dist/feedback/ProgressBar/index.d.ts +2 -0
- package/dist/feedback/ProgressBar/index.d.ts.map +1 -0
- package/dist/feedback/ProgressBar/index.js +1 -0
- package/dist/feedback/Skeleton/Skeleton.svelte +157 -0
- package/dist/feedback/Skeleton/Skeleton.svelte.d.ts +37 -0
- package/dist/feedback/Skeleton/Skeleton.svelte.d.ts.map +1 -0
- package/dist/feedback/Skeleton/index.d.ts +2 -0
- package/dist/feedback/Skeleton/index.d.ts.map +1 -0
- package/dist/feedback/Skeleton/index.js +1 -0
- package/dist/feedback/Spinner/Spinner.svelte +86 -151
- package/dist/feedback/Spinner/Spinner.svelte.d.ts +5 -3
- package/dist/feedback/Spinner/Spinner.svelte.d.ts.map +1 -1
- package/dist/feedback/Toast/Toaster.svelte +431 -0
- package/dist/feedback/Toast/Toaster.svelte.d.ts +22 -0
- package/dist/feedback/Toast/Toaster.svelte.d.ts.map +1 -0
- package/dist/feedback/Toast/index.d.ts +4 -0
- package/dist/feedback/Toast/index.d.ts.map +1 -0
- package/dist/feedback/Toast/index.js +2 -0
- package/dist/feedback/Toast/toastStore.d.ts +34 -0
- package/dist/feedback/Toast/toastStore.d.ts.map +1 -0
- package/dist/feedback/Toast/toastStore.js +43 -0
- package/dist/feedback/index.d.ts +4 -0
- package/dist/feedback/index.d.ts.map +1 -1
- package/dist/feedback/index.js +3 -0
- package/dist/forms/Checkbox/Checkbox.svelte +87 -104
- package/dist/forms/Checkbox/Checkbox.svelte.d.ts +1 -1
- package/dist/forms/Select/Select.svelte +137 -179
- package/dist/forms/Select/Select.svelte.d.ts +1 -1
- package/dist/forms/Slider/Slider.svelte +356 -0
- package/dist/forms/Slider/Slider.svelte.d.ts +50 -0
- package/dist/forms/Slider/Slider.svelte.d.ts.map +1 -0
- package/dist/forms/Slider/index.d.ts +2 -0
- package/dist/forms/Slider/index.d.ts.map +1 -0
- package/dist/forms/Slider/index.js +1 -0
- package/dist/forms/TextInput/TextInput.svelte +161 -167
- package/dist/forms/TextInput/TextInput.svelte.d.ts +1 -1
- package/dist/forms/Textarea/Textarea.svelte +615 -0
- package/dist/forms/Textarea/Textarea.svelte.d.ts +47 -0
- package/dist/forms/Textarea/Textarea.svelte.d.ts.map +1 -0
- package/dist/forms/Textarea/index.d.ts +2 -0
- package/dist/forms/Textarea/index.d.ts.map +1 -0
- package/dist/forms/Textarea/index.js +1 -0
- package/dist/forms/Toggle/Toggle.svelte +239 -0
- package/dist/forms/Toggle/Toggle.svelte.d.ts +39 -0
- package/dist/forms/Toggle/Toggle.svelte.d.ts.map +1 -0
- package/dist/forms/Toggle/index.d.ts +2 -0
- package/dist/forms/Toggle/index.d.ts.map +1 -0
- package/dist/forms/Toggle/index.js +1 -0
- package/dist/forms/index.d.ts +3 -0
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +3 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/layout/Card/Card.svelte +66 -39
- package/dist/layout/Card/Card.svelte.d.ts +1 -1
- package/dist/layout/Card/Card.svelte.d.ts.map +1 -1
- package/dist/layout/Container/Container.svelte +71 -71
- package/dist/layout/Container/Container.svelte.d.ts +2 -2
- package/dist/layout/ThermalBackground/ThermalBackground.svelte +313 -0
- package/dist/layout/ThermalBackground/ThermalBackground.svelte.d.ts +16 -0
- package/dist/layout/ThermalBackground/ThermalBackground.svelte.d.ts.map +1 -0
- package/dist/layout/ThermalBackground/index.d.ts +2 -0
- package/dist/layout/ThermalBackground/index.d.ts.map +1 -0
- package/dist/layout/ThermalBackground/index.js +1 -0
- package/dist/layout/index.d.ts +1 -0
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout/index.js +1 -0
- package/dist/navigation/CommandPalette/CommandPalette.svelte +407 -189
- package/dist/navigation/CommandPalette/CommandPalette.svelte.d.ts +8 -3
- package/dist/navigation/CommandPalette/CommandPalette.svelte.d.ts.map +1 -1
- package/dist/navigation/Tabs/Tabs.svelte +139 -192
- package/dist/navigation/Tabs/Tabs.svelte.d.ts +2 -2
- package/dist/primitives/Badge/Badge.svelte +85 -220
- package/dist/primitives/Badge/Badge.svelte.d.ts +2 -2
- package/dist/primitives/Badge/Badge.svelte.d.ts.map +1 -1
- package/dist/primitives/Button/Button.svelte +214 -194
- package/dist/primitives/Button/Button.svelte.d.ts +3 -3
- package/dist/primitives/Button/Button.svelte.d.ts.map +1 -1
- package/dist/primitives/Tooltip/Tooltip.svelte +260 -0
- package/dist/primitives/Tooltip/Tooltip.svelte.d.ts +36 -0
- package/dist/primitives/Tooltip/Tooltip.svelte.d.ts.map +1 -0
- package/dist/primitives/Tooltip/index.d.ts +2 -0
- package/dist/primitives/Tooltip/index.d.ts.map +1 -0
- package/dist/primitives/Tooltip/index.js +1 -0
- package/dist/primitives/index.d.ts +1 -0
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +1 -0
- package/dist/styles/tokens.css +329 -260
- package/package.json +5 -5
- package/dist/windowing/Window/Window.svelte +0 -637
- package/dist/windowing/Window/Window.svelte.d.ts +0 -65
- package/dist/windowing/Window/Window.svelte.d.ts.map +0 -1
- package/dist/windowing/Window/index.d.ts +0 -2
- package/dist/windowing/Window/index.d.ts.map +0 -1
- package/dist/windowing/Window/index.js +0 -1
- package/dist/windowing/WindowManager/WindowManager.svelte +0 -425
- package/dist/windowing/WindowManager/WindowManager.svelte.d.ts +0 -38
- package/dist/windowing/WindowManager/WindowManager.svelte.d.ts.map +0 -1
- package/dist/windowing/WindowManager/index.d.ts +0 -2
- package/dist/windowing/WindowManager/index.d.ts.map +0 -1
- package/dist/windowing/WindowManager/index.js +0 -1
- package/dist/windowing/index.d.ts +0 -5
- package/dist/windowing/index.d.ts.map +0 -1
- package/dist/windowing/index.js +0 -3
- package/dist/windowing/windowStore.svelte.d.ts +0 -49
- package/dist/windowing/windowStore.svelte.d.ts.map +0 -1
- package/dist/windowing/windowStore.svelte.js +0 -170
package/dist/styles/tokens.css
CHANGED
|
@@ -1,334 +1,407 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Salmex I/O
|
|
3
|
-
* Win2K reimagined by Jean-Michel Basquiat
|
|
4
|
-
* Raw. Expressive. Powerful. Unfinished.
|
|
2
|
+
* Salmex I/O Design System — INFRARED
|
|
5
3
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Dark-only. Glassmorphic. Sovereign.
|
|
5
|
+
* Thermal optics. Forge heat. Earned authority.
|
|
6
|
+
*
|
|
7
|
+
* Token architecture: primitives → semantic → component
|
|
8
|
+
* Prefix: --sx-
|
|
9
|
+
*
|
|
10
|
+
* Typography: TT Fors (body), TT Quaris (display), JetBrains Mono (mono).
|
|
11
|
+
* Fonts must be loaded by the consuming app.
|
|
8
12
|
*/
|
|
13
|
+
|
|
9
14
|
:root {
|
|
10
15
|
/* ========================================
|
|
11
|
-
|
|
16
|
+
PRIMITIVE COLORS
|
|
17
|
+
Raw palette — never use directly in components
|
|
18
|
+
======================================== */
|
|
19
|
+
|
|
20
|
+
--sx-gray-950: #08080C;
|
|
21
|
+
--sx-gray-900: #0F0F14;
|
|
22
|
+
--sx-gray-800: #171720;
|
|
23
|
+
--sx-gray-700: #1F1F2A;
|
|
24
|
+
--sx-gray-600: #2D2D3A;
|
|
25
|
+
--sx-gray-500: #505060;
|
|
26
|
+
--sx-gray-400: #7A7A88;
|
|
27
|
+
--sx-gray-300: #A0A0AB;
|
|
28
|
+
--sx-gray-200: #C5C5CC;
|
|
29
|
+
--sx-gray-100: #E8E6E1;
|
|
30
|
+
--sx-white: #F0EEE8;
|
|
31
|
+
|
|
32
|
+
/* Accents — Vermilion (forge heat) */
|
|
33
|
+
--sx-vermilion-500: #FF6B35;
|
|
34
|
+
--sx-vermilion-400: #FF8C5A;
|
|
35
|
+
--sx-vermilion-600: #E05520;
|
|
36
|
+
|
|
37
|
+
/* Accents — Brass (earned authority) */
|
|
38
|
+
--sx-brass-500: #C8A84E;
|
|
39
|
+
--sx-brass-400: #D4B86A;
|
|
40
|
+
--sx-brass-600: #A68B3A;
|
|
41
|
+
|
|
42
|
+
/* Accents — Danger */
|
|
43
|
+
--sx-red-500: #DC2626;
|
|
44
|
+
--sx-red-400: #EF4444;
|
|
45
|
+
--sx-red-600: #B91C1C;
|
|
46
|
+
|
|
47
|
+
/* Accents — Phosphor (operational green) */
|
|
48
|
+
--sx-green-500: #4ADE80;
|
|
49
|
+
--sx-green-400: #6EE7A0;
|
|
50
|
+
--sx-green-600: #22C55E;
|
|
51
|
+
|
|
52
|
+
/* Accents — Teal (encrypted channel) */
|
|
53
|
+
--sx-teal-500: #3D8B8B;
|
|
54
|
+
--sx-teal-400: #5AABAB;
|
|
55
|
+
--sx-teal-600: #2D6B6B;
|
|
56
|
+
|
|
57
|
+
/* ========================================
|
|
58
|
+
SEMANTIC COLORS
|
|
59
|
+
Purpose-driven — use these in components
|
|
60
|
+
======================================== */
|
|
61
|
+
|
|
62
|
+
/* Backgrounds */
|
|
63
|
+
--sx-color-base: var(--sx-gray-950);
|
|
64
|
+
--sx-color-surface: var(--sx-gray-900);
|
|
65
|
+
--sx-color-surface-2: var(--sx-gray-800);
|
|
66
|
+
--sx-color-surface-3: var(--sx-gray-700);
|
|
67
|
+
|
|
68
|
+
/* Text */
|
|
69
|
+
--sx-color-text: var(--sx-gray-100);
|
|
70
|
+
--sx-color-text-secondary: var(--sx-gray-400);
|
|
71
|
+
--sx-color-text-disabled: var(--sx-gray-500);
|
|
72
|
+
--sx-color-text-inverse: var(--sx-gray-950);
|
|
73
|
+
|
|
74
|
+
/* Borders */
|
|
75
|
+
--sx-color-border: rgba(255, 255, 255, 0.06);
|
|
76
|
+
--sx-color-border-strong: rgba(255, 255, 255, 0.12);
|
|
77
|
+
--sx-color-border-hover: rgba(255, 255, 255, 0.18);
|
|
78
|
+
|
|
79
|
+
/* Accents — semantic aliases */
|
|
80
|
+
--sx-color-primary: var(--sx-vermilion-500);
|
|
81
|
+
--sx-color-secondary: var(--sx-brass-500);
|
|
82
|
+
--sx-color-red: var(--sx-red-500);
|
|
83
|
+
--sx-color-green: var(--sx-green-500);
|
|
84
|
+
--sx-color-teal: var(--sx-teal-500);
|
|
85
|
+
|
|
86
|
+
/* Backward compat aliases — components referencing old names */
|
|
87
|
+
--sx-color-cyan: var(--sx-vermilion-500);
|
|
88
|
+
--sx-color-gold: var(--sx-brass-500);
|
|
89
|
+
--sx-color-purple: var(--sx-teal-500);
|
|
90
|
+
|
|
91
|
+
/* Semantic states */
|
|
92
|
+
--sx-color-success: var(--sx-green-500);
|
|
93
|
+
--sx-color-warning: var(--sx-brass-500);
|
|
94
|
+
--sx-color-error: var(--sx-red-500);
|
|
95
|
+
--sx-color-info: var(--sx-teal-500);
|
|
96
|
+
|
|
97
|
+
/* ========================================
|
|
98
|
+
GLASSMORPHISM
|
|
99
|
+
======================================== */
|
|
100
|
+
|
|
101
|
+
--sx-glass-bg: rgba(15, 15, 20, 0.6);
|
|
102
|
+
--sx-glass-bg-strong: rgba(15, 15, 20, 0.85);
|
|
103
|
+
--sx-glass-border: 1px solid rgba(255, 255, 255, 0.06);
|
|
104
|
+
--sx-glass-blur: blur(16px);
|
|
105
|
+
|
|
106
|
+
/* ========================================
|
|
107
|
+
SHADOWS
|
|
12
108
|
======================================== */
|
|
13
109
|
|
|
14
|
-
|
|
15
|
-
--
|
|
16
|
-
--
|
|
17
|
-
--
|
|
18
|
-
--
|
|
19
|
-
--
|
|
20
|
-
--
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
--
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
--
|
|
29
|
-
--salmex-button-shadow: 80 80 80; /* Stronger shadows */
|
|
30
|
-
--salmex-button-dark-edge: 30 30 30; /* Bold dark edges */
|
|
31
|
-
--salmex-button-highlight: 255 255 245; /* Bright highlights */
|
|
32
|
-
--salmex-button-light: 210 205 190; /* Subtle mid-tone */
|
|
33
|
-
|
|
34
|
-
/* Accent Colors - Neo-Expressionist */
|
|
35
|
-
--salmex-graffiti-pink: 255 105 180; /* Hot pink */
|
|
36
|
-
--salmex-spray-orange: 255 140 0; /* Bold orange */
|
|
37
|
-
--salmex-urban-green: 50 205 50; /* Bright green */
|
|
38
|
-
--salmex-neon-purple: 148 0 211; /* Deep purple */
|
|
39
|
-
|
|
40
|
-
/* System Colors - Less Safe */
|
|
41
|
-
--salmex-selection: 255 220 0; /* Crown yellow, not blue */
|
|
42
|
-
--salmex-hover-layer: 255 220 0; /* Yellow hover */
|
|
110
|
+
--sx-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
|
|
111
|
+
--sx-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4);
|
|
112
|
+
--sx-shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.5);
|
|
113
|
+
--sx-shadow-xl: 0 16px 48px rgba(0, 0, 0, 0.6);
|
|
114
|
+
--sx-shadow-glow-primary: 0 0 20px rgba(255, 107, 53, 0.18);
|
|
115
|
+
--sx-shadow-glow-primary-strong: 0 0 30px rgba(255, 107, 53, 0.30);
|
|
116
|
+
--sx-shadow-glow-brass: 0 0 20px rgba(200, 168, 78, 0.15);
|
|
117
|
+
--sx-shadow-glow-red: 0 0 20px rgba(220, 38, 38, 0.15);
|
|
118
|
+
--sx-shadow-glow-green: 0 0 20px rgba(74, 222, 128, 0.15);
|
|
119
|
+
--sx-shadow-glow-teal: 0 0 20px rgba(61, 139, 139, 0.15);
|
|
120
|
+
|
|
121
|
+
/* Backward compat aliases */
|
|
122
|
+
--sx-shadow-glow-cyan: var(--sx-shadow-glow-primary);
|
|
123
|
+
--sx-shadow-glow-cyan-strong: var(--sx-shadow-glow-primary-strong);
|
|
124
|
+
--sx-shadow-glow-gold: var(--sx-shadow-glow-brass);
|
|
43
125
|
|
|
44
126
|
/* ========================================
|
|
45
|
-
|
|
127
|
+
INTERACTION OVERLAYS
|
|
128
|
+
Translucent accents for hovers, highlights, backdrops
|
|
46
129
|
======================================== */
|
|
47
130
|
|
|
48
|
-
|
|
49
|
-
--
|
|
50
|
-
--
|
|
51
|
-
--
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
--
|
|
55
|
-
--
|
|
56
|
-
--
|
|
57
|
-
--
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
--
|
|
62
|
-
--
|
|
63
|
-
--
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
--
|
|
67
|
-
--salmex-bg-secondary: 235 230 215;
|
|
68
|
-
--salmex-bg-tertiary: 220 215 200;
|
|
69
|
-
--salmex-bg-canvas: 255 255 250; /* Raw canvas */
|
|
70
|
-
|
|
71
|
-
/* Border Colors - Bolder */
|
|
72
|
-
--salmex-border-default: 80 80 80;
|
|
73
|
-
--salmex-border-light: 160 160 160;
|
|
74
|
-
--salmex-border-dark: 30 30 30;
|
|
75
|
-
--salmex-border-accent: 255 220 0; /* Yellow accent borders */
|
|
131
|
+
--sx-color-primary-subtle: rgba(255, 107, 53, 0.06);
|
|
132
|
+
--sx-color-primary-hover: rgba(255, 107, 53, 0.1);
|
|
133
|
+
--sx-color-primary-active: rgba(255, 107, 53, 0.15);
|
|
134
|
+
--sx-color-primary-ring: rgba(255, 107, 53, 0.1);
|
|
135
|
+
--sx-color-red-subtle: rgba(220, 38, 38, 0.06);
|
|
136
|
+
--sx-color-red-hover: rgba(220, 38, 38, 0.1);
|
|
137
|
+
--sx-color-red-ring: rgba(220, 38, 38, 0.1);
|
|
138
|
+
--sx-color-green-subtle: rgba(74, 222, 128, 0.06);
|
|
139
|
+
--sx-color-brass-subtle: rgba(200, 168, 78, 0.06);
|
|
140
|
+
--sx-color-teal-subtle: rgba(61, 139, 139, 0.12);
|
|
141
|
+
--sx-color-backdrop: rgba(8, 8, 12, 0.7);
|
|
142
|
+
|
|
143
|
+
/* Backward compat aliases */
|
|
144
|
+
--sx-color-cyan-subtle: var(--sx-color-primary-subtle);
|
|
145
|
+
--sx-color-cyan-hover: var(--sx-color-primary-hover);
|
|
146
|
+
--sx-color-cyan-active: var(--sx-color-primary-active);
|
|
147
|
+
--sx-color-cyan-ring: var(--sx-color-primary-ring);
|
|
148
|
+
--sx-color-gold-subtle: var(--sx-color-brass-subtle);
|
|
149
|
+
--sx-color-purple-subtle: var(--sx-color-teal-subtle);
|
|
76
150
|
|
|
77
151
|
/* ========================================
|
|
78
|
-
|
|
152
|
+
GRADIENTS
|
|
79
153
|
======================================== */
|
|
80
154
|
|
|
81
|
-
|
|
82
|
-
--
|
|
83
|
-
--
|
|
84
|
-
--
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
--salmex-focus-outline-color: rgb(var(--salmex-crown-yellow));
|
|
89
|
-
--salmex-focus-outline-width: 3px;
|
|
155
|
+
--sx-gradient-brand: linear-gradient(135deg, var(--sx-color-primary), var(--sx-color-secondary));
|
|
156
|
+
--sx-gradient-surface: linear-gradient(180deg, var(--sx-color-surface), var(--sx-color-base));
|
|
157
|
+
--sx-gradient-primary: linear-gradient(135deg, var(--sx-color-primary), var(--sx-vermilion-600));
|
|
158
|
+
--sx-gradient-overlay: linear-gradient(180deg, rgba(8, 8, 12, 0) 0%, rgba(8, 8, 12, 0.8) 100%);
|
|
159
|
+
|
|
160
|
+
/* Backward compat */
|
|
161
|
+
--sx-gradient-cyan: var(--sx-gradient-primary);
|
|
90
162
|
|
|
91
163
|
/* ========================================
|
|
92
|
-
|
|
164
|
+
TYPOGRAPHY
|
|
93
165
|
======================================== */
|
|
94
166
|
|
|
95
|
-
--
|
|
96
|
-
--
|
|
97
|
-
--
|
|
98
|
-
|
|
99
|
-
--
|
|
100
|
-
--
|
|
101
|
-
--
|
|
102
|
-
--
|
|
103
|
-
--
|
|
167
|
+
--sx-font-body: 'TT Fors', system-ui, -apple-system, sans-serif;
|
|
168
|
+
--sx-font-display: 'TT Quaris', Georgia, 'Times New Roman', serif;
|
|
169
|
+
--sx-font-mono: 'JetBrains Mono', 'Consolas', 'Courier New', monospace;
|
|
170
|
+
|
|
171
|
+
--sx-text-xs: 0.75rem;
|
|
172
|
+
--sx-text-sm: 0.875rem;
|
|
173
|
+
--sx-text-base: 1rem;
|
|
174
|
+
--sx-text-md: 1.125rem;
|
|
175
|
+
--sx-text-lg: 1.25rem;
|
|
176
|
+
--sx-text-xl: 1.5rem;
|
|
177
|
+
--sx-text-2xl: 2rem;
|
|
178
|
+
--sx-text-display: 3rem;
|
|
179
|
+
|
|
180
|
+
--sx-leading-tight: 1.2;
|
|
181
|
+
--sx-leading-normal: 1.5;
|
|
182
|
+
--sx-leading-relaxed: 1.65;
|
|
183
|
+
|
|
184
|
+
--sx-tracking-tight: -0.02em;
|
|
185
|
+
--sx-tracking-normal: 0;
|
|
186
|
+
--sx-tracking-wide: 0.02em;
|
|
187
|
+
--sx-tracking-wider: 0.05em;
|
|
104
188
|
|
|
105
189
|
/* ========================================
|
|
106
|
-
|
|
190
|
+
SPACING
|
|
107
191
|
======================================== */
|
|
108
192
|
|
|
109
|
-
|
|
110
|
-
--
|
|
111
|
-
|
|
112
|
-
--
|
|
113
|
-
|
|
114
|
-
--
|
|
115
|
-
|
|
116
|
-
--
|
|
117
|
-
|
|
118
|
-
--
|
|
119
|
-
--
|
|
120
|
-
--
|
|
121
|
-
--
|
|
122
|
-
--
|
|
123
|
-
--
|
|
124
|
-
--
|
|
193
|
+
--sx-space-0: 0;
|
|
194
|
+
--sx-space-px: 1px;
|
|
195
|
+
--sx-space-0-5: 0.125rem;
|
|
196
|
+
--sx-space-1: 0.25rem;
|
|
197
|
+
--sx-space-1-5: 0.375rem;
|
|
198
|
+
--sx-space-2: 0.5rem;
|
|
199
|
+
--sx-space-2-5: 0.625rem;
|
|
200
|
+
--sx-space-3: 0.75rem;
|
|
201
|
+
--sx-space-4: 1rem;
|
|
202
|
+
--sx-space-5: 1.25rem;
|
|
203
|
+
--sx-space-6: 1.5rem;
|
|
204
|
+
--sx-space-8: 2rem;
|
|
205
|
+
--sx-space-10: 2.5rem;
|
|
206
|
+
--sx-space-12: 3rem;
|
|
207
|
+
--sx-space-16: 4rem;
|
|
208
|
+
--sx-space-20: 5rem;
|
|
209
|
+
--sx-space-24: 6rem;
|
|
125
210
|
|
|
126
211
|
/* ========================================
|
|
127
|
-
|
|
212
|
+
BORDER RADIUS
|
|
128
213
|
======================================== */
|
|
129
214
|
|
|
130
|
-
--
|
|
131
|
-
--
|
|
132
|
-
--
|
|
133
|
-
--
|
|
215
|
+
--sx-radius-none: 0;
|
|
216
|
+
--sx-radius-sm: 6px;
|
|
217
|
+
--sx-radius-md: 10px;
|
|
218
|
+
--sx-radius-lg: 16px;
|
|
219
|
+
--sx-radius-xl: 24px;
|
|
220
|
+
--sx-radius-full: 9999px;
|
|
134
221
|
|
|
135
222
|
/* ========================================
|
|
136
|
-
|
|
223
|
+
MOTION — Durations
|
|
137
224
|
======================================== */
|
|
138
225
|
|
|
139
|
-
--
|
|
140
|
-
--
|
|
141
|
-
--
|
|
142
|
-
--
|
|
143
|
-
--
|
|
144
|
-
--salmex-radius-rough: 0; /* Sharp edges, Basquiat style */
|
|
226
|
+
--sx-duration-instant: 100ms;
|
|
227
|
+
--sx-duration-fast: 150ms;
|
|
228
|
+
--sx-duration-base: 250ms;
|
|
229
|
+
--sx-duration-slow: 400ms;
|
|
230
|
+
--sx-duration-slower: 600ms;
|
|
145
231
|
|
|
146
232
|
/* ========================================
|
|
147
|
-
|
|
233
|
+
MOTION — Easing curves
|
|
148
234
|
======================================== */
|
|
149
235
|
|
|
150
|
-
--
|
|
151
|
-
--
|
|
152
|
-
--
|
|
236
|
+
--sx-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
|
|
237
|
+
--sx-ease-in: cubic-bezier(0.7, 0, 0.84, 0);
|
|
238
|
+
--sx-ease-in-out: cubic-bezier(0.45, 0, 0.55, 1);
|
|
239
|
+
--sx-ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
153
240
|
|
|
154
241
|
/* ========================================
|
|
155
|
-
|
|
242
|
+
MOTION — Transition shorthands
|
|
156
243
|
======================================== */
|
|
157
244
|
|
|
158
|
-
--
|
|
159
|
-
--
|
|
160
|
-
--
|
|
245
|
+
--sx-transition-fast: 150ms ease;
|
|
246
|
+
--sx-transition-base: 250ms ease;
|
|
247
|
+
--sx-transition-slow: 400ms ease;
|
|
161
248
|
|
|
162
249
|
/* ========================================
|
|
163
250
|
Z-INDEX LAYERS
|
|
164
251
|
======================================== */
|
|
165
252
|
|
|
166
|
-
--
|
|
167
|
-
--
|
|
168
|
-
--
|
|
169
|
-
--
|
|
170
|
-
--
|
|
171
|
-
--
|
|
172
|
-
--
|
|
253
|
+
--sx-z-base: 1;
|
|
254
|
+
--sx-z-dropdown: 1000;
|
|
255
|
+
--sx-z-sticky: 1020;
|
|
256
|
+
--sx-z-fixed: 1030;
|
|
257
|
+
--sx-z-modal-backdrop: 1040;
|
|
258
|
+
--sx-z-modal: 1050;
|
|
259
|
+
--sx-z-popover: 1060;
|
|
260
|
+
--sx-z-tooltip: 1070;
|
|
261
|
+
--sx-z-grain: 2000;
|
|
173
262
|
|
|
174
263
|
/* ========================================
|
|
175
|
-
|
|
264
|
+
ICON SIZES
|
|
265
|
+
Standardised sizes for Lucide (or any) icons
|
|
176
266
|
======================================== */
|
|
177
267
|
|
|
178
|
-
--
|
|
179
|
-
--
|
|
180
|
-
--
|
|
268
|
+
--sx-icon-xs: 14px;
|
|
269
|
+
--sx-icon-sm: 16px;
|
|
270
|
+
--sx-icon-md: 18px;
|
|
271
|
+
--sx-icon-lg: 20px;
|
|
272
|
+
--sx-icon-xl: 24px;
|
|
273
|
+
--sx-icon-stroke: 1.75;
|
|
181
274
|
}
|
|
182
275
|
|
|
183
276
|
/* ========================================
|
|
184
|
-
|
|
277
|
+
GLOBAL RESETS
|
|
185
278
|
======================================== */
|
|
186
279
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
/* Window chrome - darker canvas */
|
|
193
|
-
--salmex-window-surface: 22 22 22;
|
|
194
|
-
--salmex-titlebar-bold: 0 140 255; /* Brighter blue for dark mode */
|
|
195
|
-
--salmex-button-face: 32 32 32;
|
|
196
|
-
--salmex-button-shadow: 50 50 50;
|
|
197
|
-
--salmex-button-dark-edge: 8 8 8;
|
|
198
|
-
--salmex-button-highlight: 90 90 90;
|
|
199
|
-
--salmex-button-light: 50 50 50;
|
|
200
|
-
|
|
201
|
-
/* Text - high contrast */
|
|
202
|
-
--salmex-text-primary: 255 255 255;
|
|
203
|
-
--salmex-text-secondary: 200 200 200;
|
|
204
|
-
--salmex-text-disabled: 100 100 100;
|
|
205
|
-
|
|
206
|
-
/* Backgrounds - darker canvas */
|
|
207
|
-
--salmex-bg-primary: 15 15 15;
|
|
208
|
-
--salmex-bg-secondary: 22 22 22;
|
|
209
|
-
--salmex-bg-tertiary: 32 32 32;
|
|
210
|
-
--salmex-bg-canvas: 18 18 18;
|
|
211
|
-
|
|
212
|
-
/* Borders - more visible */
|
|
213
|
-
--salmex-border-default: 80 80 80;
|
|
214
|
-
--salmex-border-light: 60 60 60;
|
|
215
|
-
--salmex-border-dark: 120 120 120;
|
|
216
|
-
|
|
217
|
-
/* Neon colors pop more in dark mode */
|
|
218
|
-
--salmex-crown-yellow: 255 240 0; /* Brighter yellow */
|
|
219
|
-
--salmex-electric-blue: 64 150 255; /* Lighter blue */
|
|
220
|
-
--salmex-street-red: 255 50 50; /* Brighter red */
|
|
221
|
-
--salmex-graffiti-pink: 255 120 200;
|
|
222
|
-
--salmex-spray-orange: 255 160 40;
|
|
223
|
-
--salmex-urban-green: 80 230 80;
|
|
224
|
-
--salmex-neon-purple: 180 40 255;
|
|
225
|
-
|
|
226
|
-
/* Primary colors adjusted */
|
|
227
|
-
--salmex-primary: 64 150 255;
|
|
228
|
-
--salmex-primary-light: 100 180 255;
|
|
229
|
-
--salmex-primary-dark: 40 120 220;
|
|
230
|
-
|
|
231
|
-
/* Selection/hover - neon yellow */
|
|
232
|
-
--salmex-selection: 255 240 0;
|
|
233
|
-
--salmex-hover-layer: 255 240 0;
|
|
234
|
-
|
|
235
|
-
/* Focus - bright yellow ring (no dark edge needed on dark bg) */
|
|
236
|
-
--salmex-focus-outline: 2px dashed rgb(var(--salmex-crown-yellow));
|
|
237
|
-
--salmex-focus-ring: 0 0 2px 3px rgb(var(--salmex-crown-yellow));
|
|
238
|
-
--salmex-focus-outline-color: rgb(var(--salmex-crown-yellow));
|
|
239
|
-
--salmex-focus-outline-width: 3px;
|
|
280
|
+
*,
|
|
281
|
+
*::before,
|
|
282
|
+
*::after {
|
|
283
|
+
box-sizing: border-box;
|
|
240
284
|
}
|
|
241
285
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
--salmex-button-light: 50 50 50;
|
|
254
|
-
--salmex-text-primary: 255 255 255;
|
|
255
|
-
--salmex-text-secondary: 200 200 200;
|
|
256
|
-
--salmex-text-disabled: 100 100 100;
|
|
257
|
-
--salmex-bg-primary: 15 15 15;
|
|
258
|
-
--salmex-bg-secondary: 22 22 22;
|
|
259
|
-
--salmex-bg-tertiary: 32 32 32;
|
|
260
|
-
--salmex-bg-canvas: 18 18 18;
|
|
261
|
-
--salmex-border-default: 80 80 80;
|
|
262
|
-
--salmex-border-light: 60 60 60;
|
|
263
|
-
--salmex-border-dark: 120 120 120;
|
|
264
|
-
--salmex-crown-yellow: 255 240 0;
|
|
265
|
-
--salmex-electric-blue: 64 150 255;
|
|
266
|
-
--salmex-street-red: 255 50 50;
|
|
267
|
-
--salmex-primary: 64 150 255;
|
|
268
|
-
--salmex-primary-light: 100 180 255;
|
|
269
|
-
--salmex-selection: 255 240 0;
|
|
270
|
-
}
|
|
286
|
+
/* ========================================
|
|
287
|
+
FOCUS STATES — Vermilion outline, visible on dark
|
|
288
|
+
======================================== */
|
|
289
|
+
|
|
290
|
+
:focus {
|
|
291
|
+
outline: none;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
:focus-visible {
|
|
295
|
+
outline: 2px solid var(--sx-color-primary);
|
|
296
|
+
outline-offset: 2px;
|
|
271
297
|
}
|
|
272
298
|
|
|
273
299
|
/* ========================================
|
|
274
|
-
|
|
300
|
+
LUCIDE ICON DEFAULTS
|
|
301
|
+
Refined stroke weight for dark UI; Safari vector-effect fix
|
|
275
302
|
======================================== */
|
|
276
303
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
304
|
+
.lucide {
|
|
305
|
+
width: var(--sx-icon-md);
|
|
306
|
+
height: var(--sx-icon-md);
|
|
307
|
+
stroke-width: var(--sx-icon-stroke);
|
|
281
308
|
}
|
|
282
309
|
|
|
283
|
-
/*
|
|
310
|
+
/* ========================================
|
|
311
|
+
AMBIENT BACKGROUND — Thermal signature
|
|
312
|
+
Barely-visible heat dissipation drifts slowly,
|
|
313
|
+
giving the base surface infrared life.
|
|
314
|
+
======================================== */
|
|
315
|
+
|
|
284
316
|
body {
|
|
285
|
-
|
|
317
|
+
background-color: var(--sx-color-base);
|
|
318
|
+
background-image:
|
|
319
|
+
radial-gradient(ellipse at 15% 50%, rgba(255, 107, 53, 0.02) 0%, transparent 50%),
|
|
320
|
+
radial-gradient(ellipse at 85% 20%, rgba(200, 168, 78, 0.015) 0%, transparent 50%),
|
|
321
|
+
radial-gradient(ellipse at 50% 85%, rgba(61, 139, 139, 0.015) 0%, transparent 50%);
|
|
322
|
+
background-size: 200% 200%;
|
|
323
|
+
animation: sx-ambient-drift 25s ease-in-out infinite;
|
|
286
324
|
}
|
|
287
325
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
pointer-events: none;
|
|
296
|
-
opacity: 0.015;
|
|
297
|
-
background-image: repeating-linear-gradient(
|
|
298
|
-
0deg,
|
|
299
|
-
transparent,
|
|
300
|
-
transparent 2px,
|
|
301
|
-
rgb(0 0 0 / 0.02) 2px,
|
|
302
|
-
rgb(0 0 0 / 0.02) 4px
|
|
303
|
-
);
|
|
304
|
-
z-index: -1;
|
|
326
|
+
/* ========================================
|
|
327
|
+
SELECTION
|
|
328
|
+
======================================== */
|
|
329
|
+
|
|
330
|
+
::selection {
|
|
331
|
+
background: rgba(255, 107, 53, 0.25);
|
|
332
|
+
color: var(--sx-color-text);
|
|
305
333
|
}
|
|
306
334
|
|
|
307
|
-
/*
|
|
308
|
-
|
|
309
|
-
|
|
335
|
+
/* ========================================
|
|
336
|
+
@property — GPU-accelerated gradient angles
|
|
337
|
+
Required for conic-gradient rotation animations.
|
|
338
|
+
Falls back gracefully: browsers without @property
|
|
339
|
+
see a static gradient (no rotation), which is fine.
|
|
340
|
+
======================================== */
|
|
341
|
+
|
|
342
|
+
@property --sx-border-angle {
|
|
343
|
+
syntax: "<angle>";
|
|
344
|
+
initial-value: 0deg;
|
|
345
|
+
inherits: false;
|
|
310
346
|
}
|
|
311
347
|
|
|
312
|
-
/*
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
348
|
+
/* ========================================
|
|
349
|
+
GLOBAL KEYFRAMES
|
|
350
|
+
Shared animations used by multiple components.
|
|
351
|
+
Component-specific keyframes live in the component.
|
|
352
|
+
======================================== */
|
|
353
|
+
|
|
354
|
+
@keyframes sx-border-flow {
|
|
355
|
+
to {
|
|
356
|
+
--sx-border-angle: 360deg;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
@keyframes sx-ambient-drift {
|
|
361
|
+
0% { background-position: 0% 50%; }
|
|
362
|
+
50% { background-position: 100% 50%; }
|
|
363
|
+
100% { background-position: 0% 50%; }
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
@keyframes sx-focus-breathe {
|
|
367
|
+
0%, 100% { box-shadow: 0 0 0 3px rgba(255, 107, 53, 0.12); }
|
|
368
|
+
50% { box-shadow: 0 0 0 3px rgba(255, 107, 53, 0.28); }
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
@keyframes sx-error-shake {
|
|
372
|
+
0%, 100% { transform: translateX(0); }
|
|
373
|
+
15% { transform: translateX(-4px); }
|
|
374
|
+
30% { transform: translateX(4px); }
|
|
375
|
+
45% { transform: translateX(-3px); }
|
|
376
|
+
60% { transform: translateX(2px); }
|
|
377
|
+
75% { transform: translateX(-1px); }
|
|
317
378
|
}
|
|
318
379
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
380
|
+
@keyframes sx-check-in {
|
|
381
|
+
from {
|
|
382
|
+
transform: scale(0.5);
|
|
383
|
+
opacity: 0;
|
|
384
|
+
}
|
|
385
|
+
to {
|
|
386
|
+
transform: scale(1);
|
|
387
|
+
opacity: 1;
|
|
388
|
+
}
|
|
322
389
|
}
|
|
323
390
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
391
|
+
@keyframes sx-badge-pop {
|
|
392
|
+
0% { transform: scale(1); }
|
|
393
|
+
40% { transform: scale(1.15); }
|
|
394
|
+
100% { transform: scale(1); }
|
|
327
395
|
}
|
|
328
396
|
|
|
329
|
-
@
|
|
330
|
-
|
|
331
|
-
|
|
397
|
+
@keyframes sx-alert-in {
|
|
398
|
+
from {
|
|
399
|
+
opacity: 0;
|
|
400
|
+
transform: translateY(-8px);
|
|
401
|
+
}
|
|
402
|
+
to {
|
|
403
|
+
opacity: 1;
|
|
404
|
+
transform: translateY(0);
|
|
332
405
|
}
|
|
333
406
|
}
|
|
334
407
|
|
|
@@ -345,8 +418,4 @@ body::before {
|
|
|
345
418
|
transition-duration: 0.01ms !important;
|
|
346
419
|
scroll-behavior: auto !important;
|
|
347
420
|
}
|
|
348
|
-
|
|
349
|
-
:focus-visible {
|
|
350
|
-
transition: none;
|
|
351
|
-
}
|
|
352
421
|
}
|