@salmexio/ui 1.0.0 → 1.2.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 +1 -1
- package/dist/dialogs/ContextMenu/ContextMenu.svelte +17 -7
- package/dist/dialogs/ContextMenu/ContextMenu.svelte.d.ts +1 -1
- package/dist/dialogs/Modal/Modal.svelte +37 -4
- package/dist/dialogs/Modal/Modal.svelte.d.ts +1 -1
- package/dist/feedback/Alert/Alert.svelte +67 -19
- package/dist/feedback/Alert/Alert.svelte.d.ts +1 -1
- package/dist/feedback/ProgressBar/ProgressBar.svelte +33 -11
- package/dist/feedback/ProgressBar/ProgressBar.svelte.d.ts +3 -3
- package/dist/feedback/ProgressBar/ProgressBar.svelte.d.ts.map +1 -1
- package/dist/feedback/Skeleton/Skeleton.svelte +12 -4
- package/dist/feedback/Skeleton/Skeleton.svelte.d.ts +1 -1
- package/dist/feedback/Spinner/Spinner.svelte +5 -3
- package/dist/feedback/Spinner/Spinner.svelte.d.ts +2 -2
- package/dist/feedback/Toast/Toaster.svelte +45 -13
- package/dist/feedback/Toast/Toaster.svelte.d.ts +1 -1
- package/dist/forms/Checkbox/Checkbox.svelte +37 -9
- package/dist/forms/Checkbox/Checkbox.svelte.d.ts +1 -1
- package/dist/forms/Select/Select.svelte +28 -12
- package/dist/forms/Select/Select.svelte.d.ts +1 -1
- package/dist/forms/Slider/Slider.svelte +66 -38
- package/dist/forms/Slider/Slider.svelte.d.ts +2 -2
- package/dist/forms/Slider/Slider.svelte.d.ts.map +1 -1
- package/dist/forms/TextInput/TextInput.svelte +35 -7
- package/dist/forms/TextInput/TextInput.svelte.d.ts +1 -1
- package/dist/forms/Textarea/Textarea.svelte +22 -7
- package/dist/forms/Textarea/Textarea.svelte.d.ts +1 -1
- package/dist/forms/Toggle/Toggle.svelte +71 -12
- package/dist/forms/Toggle/Toggle.svelte.d.ts +1 -1
- package/dist/layout/Card/Card.svelte +128 -5
- package/dist/layout/Card/Card.svelte.d.ts +4 -1
- package/dist/layout/Card/Card.svelte.d.ts.map +1 -1
- package/dist/layout/Container/Container.svelte +1 -1
- package/dist/layout/Container/Container.svelte.d.ts +1 -1
- package/dist/layout/ThermalBackground/ThermalBackground.svelte +275 -0
- package/dist/layout/ThermalBackground/ThermalBackground.svelte.d.ts +14 -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 +45 -11
- package/dist/navigation/CommandPalette/CommandPalette.svelte.d.ts +1 -1
- package/dist/navigation/NavMenu/NavMenu.svelte +800 -0
- package/dist/navigation/NavMenu/NavMenu.svelte.d.ts +81 -0
- package/dist/navigation/NavMenu/NavMenu.svelte.d.ts.map +1 -0
- package/dist/navigation/NavMenu/index.d.ts +3 -0
- package/dist/navigation/NavMenu/index.d.ts.map +1 -0
- package/dist/navigation/NavMenu/index.js +1 -0
- package/dist/navigation/Tabs/Tabs.svelte +73 -11
- package/dist/navigation/Tabs/Tabs.svelte.d.ts +1 -1
- package/dist/navigation/index.d.ts +2 -0
- package/dist/navigation/index.d.ts.map +1 -1
- package/dist/navigation/index.js +1 -0
- package/dist/primitives/Badge/Badge.svelte +68 -21
- package/dist/primitives/Badge/Badge.svelte.d.ts +1 -1
- package/dist/primitives/Button/Button.svelte +254 -34
- package/dist/primitives/Button/Button.svelte.d.ts +1 -1
- package/dist/primitives/Tooltip/Tooltip.svelte +10 -2
- package/dist/primitives/Tooltip/Tooltip.svelte.d.ts +1 -1
- package/dist/styles/tokens.css +202 -64
- package/package.json +3 -3
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
ThermalBackground — Dynamic INFRARED background
|
|
3
|
+
|
|
4
|
+
Layered ambient background with thermal blob drift
|
|
5
|
+
and film grain. Pure CSS — zero JS runtime cost.
|
|
6
|
+
|
|
7
|
+
Usage:
|
|
8
|
+
<ThermalBackground /> — default (all layers)
|
|
9
|
+
<ThermalBackground grain={false} /> — no grain overlay
|
|
10
|
+
<ThermalBackground intensity="low" /> — subtler blobs
|
|
11
|
+
-->
|
|
12
|
+
|
|
13
|
+
<script lang="ts">
|
|
14
|
+
interface Props {
|
|
15
|
+
/** Show film grain overlay */
|
|
16
|
+
grain?: boolean;
|
|
17
|
+
/** Blob intensity: low = barely visible, default = subtle, high = pronounced */
|
|
18
|
+
intensity?: 'low' | 'default' | 'high';
|
|
19
|
+
/** Additional CSS class */
|
|
20
|
+
class?: string;
|
|
21
|
+
/** Test ID */
|
|
22
|
+
testId?: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
let {
|
|
26
|
+
grain = true,
|
|
27
|
+
intensity = 'default',
|
|
28
|
+
class: className = '',
|
|
29
|
+
testId = undefined,
|
|
30
|
+
}: Props = $props();
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
<div
|
|
34
|
+
class="sx-thermal-bg sx-thermal-{intensity} {className}"
|
|
35
|
+
aria-hidden="true"
|
|
36
|
+
data-testid={testId}
|
|
37
|
+
>
|
|
38
|
+
<!-- Layer 1: Thermal blobs — large diffuse orbs drifting independently -->
|
|
39
|
+
<div class="sx-thermal-blobs">
|
|
40
|
+
<div class="sx-thermal-blob sx-thermal-blob-1"></div>
|
|
41
|
+
<div class="sx-thermal-blob sx-thermal-blob-2"></div>
|
|
42
|
+
<div class="sx-thermal-blob sx-thermal-blob-3"></div>
|
|
43
|
+
<div class="sx-thermal-blob sx-thermal-blob-4"></div>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<!-- Layer 2: Animated film grain -->
|
|
47
|
+
{#if grain}
|
|
48
|
+
<div class="sx-thermal-grain"></div>
|
|
49
|
+
{/if}
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
<style>
|
|
53
|
+
/* ========================================
|
|
54
|
+
ROOT CONTAINER — fixed fullscreen backdrop
|
|
55
|
+
======================================== */
|
|
56
|
+
|
|
57
|
+
.sx-thermal-bg {
|
|
58
|
+
position: fixed;
|
|
59
|
+
inset: 0;
|
|
60
|
+
z-index: 0;
|
|
61
|
+
overflow: hidden;
|
|
62
|
+
pointer-events: none;
|
|
63
|
+
background: var(--sx-color-base);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* ========================================
|
|
67
|
+
THERMAL BLOBS — Drifting infrared orbs
|
|
68
|
+
Large, soft radial gradients that move on
|
|
69
|
+
independent orbits. Each has a unique size,
|
|
70
|
+
color, speed, and path.
|
|
71
|
+
======================================== */
|
|
72
|
+
|
|
73
|
+
.sx-thermal-blobs {
|
|
74
|
+
position: absolute;
|
|
75
|
+
inset: -50%;
|
|
76
|
+
width: 200%;
|
|
77
|
+
height: 200%;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.sx-thermal-blob {
|
|
81
|
+
position: absolute;
|
|
82
|
+
border-radius: 50%;
|
|
83
|
+
filter: blur(80px);
|
|
84
|
+
will-change: transform;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/* Blob 1 — Vermilion/primary — largest, slowest */
|
|
88
|
+
.sx-thermal-blob-1 {
|
|
89
|
+
width: 45vmax;
|
|
90
|
+
height: 45vmax;
|
|
91
|
+
top: 10%;
|
|
92
|
+
left: 15%;
|
|
93
|
+
background: radial-gradient(
|
|
94
|
+
circle,
|
|
95
|
+
rgba(255, 107, 53, 0.08) 0%,
|
|
96
|
+
rgba(255, 107, 53, 0.02) 50%,
|
|
97
|
+
transparent 70%
|
|
98
|
+
);
|
|
99
|
+
animation: sx-thermal-drift-1 35s ease-in-out infinite;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/* Blob 2 — Brass/secondary — medium, offset orbit */
|
|
103
|
+
.sx-thermal-blob-2 {
|
|
104
|
+
width: 35vmax;
|
|
105
|
+
height: 35vmax;
|
|
106
|
+
top: 55%;
|
|
107
|
+
right: 10%;
|
|
108
|
+
background: radial-gradient(
|
|
109
|
+
circle,
|
|
110
|
+
rgba(200, 168, 78, 0.06) 0%,
|
|
111
|
+
rgba(200, 168, 78, 0.015) 50%,
|
|
112
|
+
transparent 70%
|
|
113
|
+
);
|
|
114
|
+
animation: sx-thermal-drift-2 42s ease-in-out infinite;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/* Blob 3 — Teal — smallest, fastest, cool counterpoint */
|
|
118
|
+
.sx-thermal-blob-3 {
|
|
119
|
+
width: 30vmax;
|
|
120
|
+
height: 30vmax;
|
|
121
|
+
bottom: 15%;
|
|
122
|
+
left: 40%;
|
|
123
|
+
background: radial-gradient(
|
|
124
|
+
circle,
|
|
125
|
+
rgba(61, 139, 139, 0.06) 0%,
|
|
126
|
+
rgba(61, 139, 139, 0.015) 50%,
|
|
127
|
+
transparent 70%
|
|
128
|
+
);
|
|
129
|
+
animation: sx-thermal-drift-3 28s ease-in-out infinite;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/* Blob 4 — Deep vermilion — secondary heat signature */
|
|
133
|
+
.sx-thermal-blob-4 {
|
|
134
|
+
width: 38vmax;
|
|
135
|
+
height: 38vmax;
|
|
136
|
+
top: 40%;
|
|
137
|
+
left: 60%;
|
|
138
|
+
background: radial-gradient(
|
|
139
|
+
circle,
|
|
140
|
+
rgba(224, 85, 32, 0.05) 0%,
|
|
141
|
+
rgba(224, 85, 32, 0.01) 50%,
|
|
142
|
+
transparent 70%
|
|
143
|
+
);
|
|
144
|
+
animation: sx-thermal-drift-4 50s ease-in-out infinite;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/* ========================================
|
|
148
|
+
BLOB DRIFT ORBITS
|
|
149
|
+
Each blob traces a unique Lissajous-like path
|
|
150
|
+
using translate transforms. Different durations
|
|
151
|
+
ensure they never sync up, creating organic motion.
|
|
152
|
+
======================================== */
|
|
153
|
+
|
|
154
|
+
@keyframes sx-thermal-drift-1 {
|
|
155
|
+
0% { transform: translate(0%, 0%) scale(1); }
|
|
156
|
+
25% { transform: translate(12%, -8%) scale(1.05); }
|
|
157
|
+
50% { transform: translate(-5%, 15%) scale(0.95); }
|
|
158
|
+
75% { transform: translate(-15%, -5%) scale(1.08); }
|
|
159
|
+
100% { transform: translate(0%, 0%) scale(1); }
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
@keyframes sx-thermal-drift-2 {
|
|
163
|
+
0% { transform: translate(0%, 0%) scale(1); }
|
|
164
|
+
20% { transform: translate(-18%, 8%) scale(1.1); }
|
|
165
|
+
40% { transform: translate(8%, -12%) scale(0.9); }
|
|
166
|
+
60% { transform: translate(-8%, -18%) scale(1.05); }
|
|
167
|
+
80% { transform: translate(15%, 5%) scale(0.95); }
|
|
168
|
+
100% { transform: translate(0%, 0%) scale(1); }
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
@keyframes sx-thermal-drift-3 {
|
|
172
|
+
0% { transform: translate(0%, 0%) rotate(0deg) scale(1); }
|
|
173
|
+
33% { transform: translate(20%, -15%) rotate(5deg) scale(1.1); }
|
|
174
|
+
66% { transform: translate(-15%, 10%) rotate(-3deg) scale(0.92); }
|
|
175
|
+
100% { transform: translate(0%, 0%) rotate(0deg) scale(1); }
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
@keyframes sx-thermal-drift-4 {
|
|
179
|
+
0% { transform: translate(0%, 0%) scale(1); }
|
|
180
|
+
30% { transform: translate(-10%, 12%) scale(1.06); }
|
|
181
|
+
60% { transform: translate(15%, -8%) scale(0.94); }
|
|
182
|
+
100% { transform: translate(0%, 0%) scale(1); }
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/* ========================================
|
|
186
|
+
INTENSITY VARIANTS
|
|
187
|
+
Control blob visibility without changing motion
|
|
188
|
+
======================================== */
|
|
189
|
+
|
|
190
|
+
.sx-thermal-low .sx-thermal-blobs {
|
|
191
|
+
opacity: 0.5;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.sx-thermal-default .sx-thermal-blobs {
|
|
195
|
+
opacity: 1;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
.sx-thermal-high .sx-thermal-blobs {
|
|
199
|
+
opacity: 1.5;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.sx-thermal-high .sx-thermal-blob-1 {
|
|
203
|
+
background: radial-gradient(
|
|
204
|
+
circle,
|
|
205
|
+
rgba(255, 107, 53, 0.14) 0%,
|
|
206
|
+
rgba(255, 107, 53, 0.04) 50%,
|
|
207
|
+
transparent 70%
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.sx-thermal-high .sx-thermal-blob-2 {
|
|
212
|
+
background: radial-gradient(
|
|
213
|
+
circle,
|
|
214
|
+
rgba(200, 168, 78, 0.10) 0%,
|
|
215
|
+
rgba(200, 168, 78, 0.03) 50%,
|
|
216
|
+
transparent 70%
|
|
217
|
+
);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.sx-thermal-high .sx-thermal-blob-3 {
|
|
221
|
+
background: radial-gradient(
|
|
222
|
+
circle,
|
|
223
|
+
rgba(61, 139, 139, 0.10) 0%,
|
|
224
|
+
rgba(61, 139, 139, 0.03) 50%,
|
|
225
|
+
transparent 70%
|
|
226
|
+
);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
.sx-thermal-high .sx-thermal-blob-4 {
|
|
230
|
+
background: radial-gradient(
|
|
231
|
+
circle,
|
|
232
|
+
rgba(224, 85, 32, 0.09) 0%,
|
|
233
|
+
rgba(224, 85, 32, 0.02) 50%,
|
|
234
|
+
transparent 70%
|
|
235
|
+
);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/* ========================================
|
|
239
|
+
FILM GRAIN — Animated noise texture
|
|
240
|
+
SVG feTurbulence noise with subtle position
|
|
241
|
+
stepping for a living grain effect.
|
|
242
|
+
======================================== */
|
|
243
|
+
|
|
244
|
+
.sx-thermal-grain {
|
|
245
|
+
position: absolute;
|
|
246
|
+
inset: -50%;
|
|
247
|
+
width: 300%;
|
|
248
|
+
height: 300%;
|
|
249
|
+
opacity: 0.03;
|
|
250
|
+
mix-blend-mode: overlay;
|
|
251
|
+
pointer-events: none;
|
|
252
|
+
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.7' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
|
|
253
|
+
background-size: 256px 256px;
|
|
254
|
+
animation: sx-thermal-grain-drift 0.4s steps(4) infinite;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
@keyframes sx-thermal-grain-drift {
|
|
258
|
+
0% { transform: translate(0, 0); }
|
|
259
|
+
25% { transform: translate(-5%, -5%); }
|
|
260
|
+
50% { transform: translate(3%, -8%); }
|
|
261
|
+
75% { transform: translate(-8%, 2%); }
|
|
262
|
+
100% { transform: translate(0, 0); }
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/* ========================================
|
|
266
|
+
REDUCED MOTION — Static fallback
|
|
267
|
+
======================================== */
|
|
268
|
+
|
|
269
|
+
@media (prefers-reduced-motion: reduce) {
|
|
270
|
+
.sx-thermal-blob,
|
|
271
|
+
.sx-thermal-grain {
|
|
272
|
+
animation: none !important;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
</style>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
interface Props {
|
|
2
|
+
/** Show film grain overlay */
|
|
3
|
+
grain?: boolean;
|
|
4
|
+
/** Blob intensity: low = barely visible, default = subtle, high = pronounced */
|
|
5
|
+
intensity?: 'low' | 'default' | 'high';
|
|
6
|
+
/** Additional CSS class */
|
|
7
|
+
class?: string;
|
|
8
|
+
/** Test ID */
|
|
9
|
+
testId?: string;
|
|
10
|
+
}
|
|
11
|
+
declare const ThermalBackground: import("svelte").Component<Props, {}, "">;
|
|
12
|
+
type ThermalBackground = ReturnType<typeof ThermalBackground>;
|
|
13
|
+
export default ThermalBackground;
|
|
14
|
+
//# sourceMappingURL=ThermalBackground.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThermalBackground.svelte.d.ts","sourceRoot":"","sources":["../../../src/layout/ThermalBackground/ThermalBackground.svelte.ts"],"names":[],"mappings":"AAGC,UAAU,KAAK;IACd,8BAA8B;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gFAAgF;IAChF,SAAS,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAiCF,QAAA,MAAM,iBAAiB,2CAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layout/ThermalBackground/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as ThermalBackground } from './ThermalBackground.svelte';
|
package/dist/layout/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC"}
|
package/dist/layout/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
@component CommandPalette
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
INFRARED — Premium keyboard-first command launcher.
|
|
5
5
|
Glass backdrop, entrance animations, fuzzy search with match highlighting,
|
|
6
6
|
categorised results, shortcut display, live result count announcements.
|
|
7
7
|
|
|
@@ -467,14 +467,37 @@ function getItemId(itemId: string): string {
|
|
|
467
467
|
border: 1px solid var(--sx-color-border-strong);
|
|
468
468
|
border-radius: var(--sx-radius-lg);
|
|
469
469
|
box-shadow:
|
|
470
|
-
|
|
471
|
-
0 0 0
|
|
472
|
-
0 0
|
|
470
|
+
/* 3D extrusion */
|
|
471
|
+
0 1px 0 0 rgba(0, 0, 0, 0.2),
|
|
472
|
+
0 2px 0 0 rgba(0, 0, 0, 0.15),
|
|
473
|
+
0 3px 0 0 rgba(0, 0, 0, 0.1),
|
|
474
|
+
0 4px 0 0 rgba(0, 0, 0, 0.06),
|
|
475
|
+
/* Deep ambient shadow */
|
|
476
|
+
0 8px 24px -4px rgba(0, 0, 0, 0.5),
|
|
477
|
+
0 16px 48px -8px rgba(0, 0, 0, 0.3),
|
|
478
|
+
/* Warm forge glow */
|
|
479
|
+
0 0 40px -10px rgba(255, 107, 53, 0.1);
|
|
473
480
|
font-family: var(--sx-font-body);
|
|
474
481
|
overflow: hidden;
|
|
475
482
|
animation: sx-cmd-panel-in 200ms var(--sx-ease-out) both;
|
|
476
483
|
}
|
|
477
484
|
|
|
485
|
+
/* Top-lit bevel */
|
|
486
|
+
.sx-command::before {
|
|
487
|
+
content: '';
|
|
488
|
+
position: absolute;
|
|
489
|
+
inset: 0;
|
|
490
|
+
border-radius: inherit;
|
|
491
|
+
background: linear-gradient(
|
|
492
|
+
180deg,
|
|
493
|
+
rgba(255, 255, 255, 0.04) 0%,
|
|
494
|
+
transparent 25%,
|
|
495
|
+
rgba(0, 0, 0, 0.04) 100%
|
|
496
|
+
);
|
|
497
|
+
pointer-events: none;
|
|
498
|
+
z-index: 10;
|
|
499
|
+
}
|
|
500
|
+
|
|
478
501
|
.sx-command-exit {
|
|
479
502
|
animation: sx-cmd-panel-out 120ms ease-in both;
|
|
480
503
|
}
|
|
@@ -505,17 +528,24 @@ function getItemId(itemId: string): string {
|
|
|
505
528
|
SEARCH FIELD
|
|
506
529
|
======================================== */
|
|
507
530
|
.sx-command-search {
|
|
531
|
+
position: relative;
|
|
532
|
+
z-index: 1;
|
|
508
533
|
display: flex;
|
|
509
534
|
align-items: center;
|
|
510
535
|
gap: var(--sx-space-3);
|
|
511
536
|
padding: var(--sx-space-4) var(--sx-space-5);
|
|
512
537
|
border-bottom: 1px solid var(--sx-color-border);
|
|
538
|
+
/* Recessed search well */
|
|
539
|
+
background: rgba(0, 0, 0, 0.08);
|
|
540
|
+
box-shadow:
|
|
541
|
+
inset 0 1px 3px rgba(0, 0, 0, 0.2),
|
|
542
|
+
inset 0 0 0 1px rgba(0, 0, 0, 0.04);
|
|
513
543
|
}
|
|
514
544
|
|
|
515
545
|
.sx-command-search-icon {
|
|
516
546
|
flex-shrink: 0;
|
|
517
547
|
display: flex;
|
|
518
|
-
color: var(--sx-color-
|
|
548
|
+
color: var(--sx-color-primary);
|
|
519
549
|
opacity: 0.7;
|
|
520
550
|
}
|
|
521
551
|
|
|
@@ -559,6 +589,8 @@ function getItemId(itemId: string): string {
|
|
|
559
589
|
RESULTS LIST
|
|
560
590
|
======================================== */
|
|
561
591
|
.sx-command-results {
|
|
592
|
+
position: relative;
|
|
593
|
+
z-index: 1;
|
|
562
594
|
flex: 1;
|
|
563
595
|
overflow-y: auto;
|
|
564
596
|
overscroll-behavior: contain;
|
|
@@ -639,13 +671,13 @@ function getItemId(itemId: string): string {
|
|
|
639
671
|
}
|
|
640
672
|
|
|
641
673
|
.sx-command-item-active {
|
|
642
|
-
background: var(--sx-color-
|
|
674
|
+
background: var(--sx-color-primary-hover);
|
|
643
675
|
color: var(--sx-color-text);
|
|
644
|
-
border-left-color: var(--sx-color-
|
|
676
|
+
border-left-color: var(--sx-color-primary);
|
|
645
677
|
}
|
|
646
678
|
|
|
647
679
|
.sx-command-item:active:not(.sx-command-item-disabled) {
|
|
648
|
-
background: var(--sx-color-
|
|
680
|
+
background: var(--sx-color-primary-active);
|
|
649
681
|
}
|
|
650
682
|
|
|
651
683
|
.sx-command-item-disabled {
|
|
@@ -664,7 +696,7 @@ function getItemId(itemId: string): string {
|
|
|
664
696
|
}
|
|
665
697
|
|
|
666
698
|
.sx-command-item-active .sx-command-item-icon {
|
|
667
|
-
color: var(--sx-color-
|
|
699
|
+
color: var(--sx-color-primary);
|
|
668
700
|
}
|
|
669
701
|
|
|
670
702
|
.sx-command-item-content {
|
|
@@ -691,12 +723,12 @@ function getItemId(itemId: string): string {
|
|
|
691
723
|
/* Match highlighting */
|
|
692
724
|
.sx-command-match {
|
|
693
725
|
background: none;
|
|
694
|
-
color: var(--sx-color-
|
|
726
|
+
color: var(--sx-color-primary);
|
|
695
727
|
font-weight: 700;
|
|
696
728
|
}
|
|
697
729
|
|
|
698
730
|
.sx-command-item-active .sx-command-match {
|
|
699
|
-
color: var(--sx-color-
|
|
731
|
+
color: var(--sx-color-primary);
|
|
700
732
|
}
|
|
701
733
|
|
|
702
734
|
.sx-command-item-desc {
|
|
@@ -735,6 +767,8 @@ function getItemId(itemId: string): string {
|
|
|
735
767
|
FOOTER
|
|
736
768
|
======================================== */
|
|
737
769
|
.sx-command-footer {
|
|
770
|
+
position: relative;
|
|
771
|
+
z-index: 1;
|
|
738
772
|
display: flex;
|
|
739
773
|
align-items: center;
|
|
740
774
|
gap: var(--sx-space-5);
|
|
@@ -30,7 +30,7 @@ interface Props {
|
|
|
30
30
|
/**
|
|
31
31
|
* CommandPalette
|
|
32
32
|
*
|
|
33
|
-
*
|
|
33
|
+
* INFRARED — Premium keyboard-first command launcher.
|
|
34
34
|
* Glass backdrop, entrance animations, fuzzy search with match highlighting,
|
|
35
35
|
* categorised results, shortcut display, live result count announcements.
|
|
36
36
|
*
|