@salmexio/ui 0.2.0 → 0.3.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/dist/dialogs/ContextMenu/ContextMenu.svelte +521 -0
- package/dist/dialogs/ContextMenu/ContextMenu.svelte.d.ts +53 -0
- package/dist/dialogs/ContextMenu/ContextMenu.svelte.d.ts.map +1 -0
- package/dist/dialogs/ContextMenu/index.d.ts +3 -0
- package/dist/dialogs/ContextMenu/index.d.ts.map +1 -0
- package/dist/dialogs/ContextMenu/index.js +1 -0
- package/dist/dialogs/index.d.ts +2 -0
- package/dist/dialogs/index.d.ts.map +1 -1
- package/dist/dialogs/index.js +1 -0
- package/dist/feedback/Alert/Alert.svelte +1 -62
- package/dist/feedback/Alert/Alert.svelte.d.ts +1 -1
- package/dist/feedback/Alert/Alert.svelte.d.ts.map +1 -1
- package/dist/forms/Select/Select.svelte +883 -0
- package/dist/forms/Select/Select.svelte.d.ts +68 -0
- package/dist/forms/Select/Select.svelte.d.ts.map +1 -0
- package/dist/forms/Select/index.d.ts +3 -0
- package/dist/forms/Select/index.d.ts.map +1 -0
- package/dist/forms/Select/index.js +1 -0
- package/dist/forms/index.d.ts +2 -0
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +1 -0
- package/dist/layout/Card/Card.svelte +29 -169
- package/dist/layout/Card/Card.svelte.d.ts +3 -9
- package/dist/layout/Card/Card.svelte.d.ts.map +1 -1
- package/dist/navigation/CommandPalette/CommandPalette.svelte +574 -0
- package/dist/navigation/CommandPalette/CommandPalette.svelte.d.ts +47 -0
- package/dist/navigation/CommandPalette/CommandPalette.svelte.d.ts.map +1 -0
- package/dist/navigation/CommandPalette/index.d.ts +3 -0
- package/dist/navigation/CommandPalette/index.d.ts.map +1 -0
- package/dist/navigation/CommandPalette/index.js +1 -0
- 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 +45 -9
- package/dist/primitives/Badge/Badge.svelte.d.ts +0 -2
- package/dist/primitives/Badge/Badge.svelte.d.ts.map +1 -1
- package/dist/primitives/Button/Button.svelte +40 -14
- package/dist/primitives/Button/Button.svelte.d.ts +1 -1
- package/dist/primitives/Button/Button.svelte.d.ts.map +1 -1
- package/dist/styles/tokens.css +4 -4
- package/dist/windowing/Window/Window.svelte +3 -3
- package/package.json +1 -1
|
@@ -20,8 +20,6 @@ interface Props {
|
|
|
20
20
|
status?: BadgeStatus;
|
|
21
21
|
/** Size */
|
|
22
22
|
size?: BadgeSize;
|
|
23
|
-
/** Pill shape (fully rounded) — we use minimal radius by default */
|
|
24
|
-
pill?: boolean;
|
|
25
23
|
/** Dot-only indicator (no text), use with aria-label for a11y */
|
|
26
24
|
dot?: boolean;
|
|
27
25
|
/** Optional icon before label */
|
|
@@ -37,7 +35,6 @@ interface Props {
|
|
|
37
35
|
let {
|
|
38
36
|
status = 'neutral',
|
|
39
37
|
size = 'md',
|
|
40
|
-
pill = false,
|
|
41
38
|
dot = false,
|
|
42
39
|
icon,
|
|
43
40
|
class: className = '',
|
|
@@ -66,7 +63,6 @@ let {
|
|
|
66
63
|
'salmex-badge',
|
|
67
64
|
`salmex-badge-${size}`,
|
|
68
65
|
`salmex-badge-${status}`,
|
|
69
|
-
pill && 'salmex-badge-pill',
|
|
70
66
|
status === 'primary' && 'salmex-badge-has-accent',
|
|
71
67
|
className
|
|
72
68
|
)}
|
|
@@ -99,12 +95,8 @@ let {
|
|
|
99
95
|
box-shadow: var(--salmex-shadow-sm);
|
|
100
96
|
}
|
|
101
97
|
|
|
102
|
-
.salmex-badge-pill {
|
|
103
|
-
border-radius: 9999px;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
98
|
/* Stay sharp — minimal radius, Basquiat style */
|
|
107
|
-
.salmex-badge:not(.salmex-badge-
|
|
99
|
+
.salmex-badge:not(.salmex-badge-dot) {
|
|
108
100
|
border-radius: var(--salmex-radius-none);
|
|
109
101
|
}
|
|
110
102
|
|
|
@@ -308,6 +300,28 @@ let {
|
|
|
308
300
|
box-shadow: var(--salmex-shadow-sm);
|
|
309
301
|
}
|
|
310
302
|
|
|
303
|
+
:global([data-theme='dark']) .salmex-badge-error {
|
|
304
|
+
background: rgb(var(--salmex-street-red) / 0.2);
|
|
305
|
+
color: rgb(var(--salmex-street-red));
|
|
306
|
+
border-color: rgb(var(--salmex-street-red));
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
:global([data-theme='dark']) .salmex-badge-dot.salmex-badge-error {
|
|
310
|
+
background: rgb(var(--salmex-street-red));
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
@media (prefers-color-scheme: dark) {
|
|
314
|
+
:global(:root:not([data-theme='light'])) .salmex-badge-error {
|
|
315
|
+
background: rgb(var(--salmex-street-red) / 0.2);
|
|
316
|
+
color: rgb(var(--salmex-street-red));
|
|
317
|
+
border-color: rgb(var(--salmex-street-red));
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
:global(:root:not([data-theme='light'])) .salmex-badge-dot.salmex-badge-error {
|
|
321
|
+
background: rgb(var(--salmex-street-red));
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
311
325
|
/* Info — electric blue, flat */
|
|
312
326
|
.salmex-badge-info {
|
|
313
327
|
background: rgb(var(--salmex-info) / 0.18);
|
|
@@ -322,6 +336,28 @@ let {
|
|
|
322
336
|
box-shadow: var(--salmex-shadow-sm);
|
|
323
337
|
}
|
|
324
338
|
|
|
339
|
+
:global([data-theme='dark']) .salmex-badge-info {
|
|
340
|
+
background: rgb(var(--salmex-primary-light) / 0.2);
|
|
341
|
+
color: rgb(var(--salmex-primary-light));
|
|
342
|
+
border-color: rgb(var(--salmex-primary-light));
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
:global([data-theme='dark']) .salmex-badge-dot.salmex-badge-info {
|
|
346
|
+
background: rgb(var(--salmex-primary-light));
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
@media (prefers-color-scheme: dark) {
|
|
350
|
+
:global(:root:not([data-theme='light'])) .salmex-badge-info {
|
|
351
|
+
background: rgb(var(--salmex-primary-light) / 0.2);
|
|
352
|
+
color: rgb(var(--salmex-primary-light));
|
|
353
|
+
border-color: rgb(var(--salmex-primary-light));
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
:global(:root:not([data-theme='light'])) .salmex-badge-dot.salmex-badge-info {
|
|
357
|
+
background: rgb(var(--salmex-primary-light));
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
|
|
325
361
|
/* Outline — transparent, bold border, no inset (flat) */
|
|
326
362
|
.salmex-badge-outline {
|
|
327
363
|
background: rgb(var(--salmex-button-face) / 0.5);
|
|
@@ -6,8 +6,6 @@ interface Props {
|
|
|
6
6
|
status?: BadgeStatus;
|
|
7
7
|
/** Size */
|
|
8
8
|
size?: BadgeSize;
|
|
9
|
-
/** Pill shape (fully rounded) — we use minimal radius by default */
|
|
10
|
-
pill?: boolean;
|
|
11
9
|
/** Dot-only indicator (no text), use with aria-label for a11y */
|
|
12
10
|
dot?: boolean;
|
|
13
11
|
/** Optional icon before label */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Badge.svelte.d.ts","sourceRoot":"","sources":["../../../src/primitives/Badge/Badge.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAItC,KAAK,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACpC,KAAK,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhG,UAAU,KAAK;IACd,gCAAgC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,WAAW;IACX,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,
|
|
1
|
+
{"version":3,"file":"Badge.svelte.d.ts","sourceRoot":"","sources":["../../../src/primitives/Badge/Badge.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAItC,KAAK,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACpC,KAAK,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhG,UAAU,KAAK;IACd,gCAAgC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,WAAW;IACX,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,iEAAiE;IACjE,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,iCAAiC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAqDD;;;;;;;;;GASG;AACH,QAAA,MAAM,KAAK,2CAAwC,CAAC;AACpD,KAAK,KAAK,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AACtC,eAAe,KAAK,CAAC"}
|
|
@@ -21,7 +21,7 @@ import type { HTMLButtonAttributes } from 'svelte/elements';
|
|
|
21
21
|
import { cn } from '../../utils/cn.js';
|
|
22
22
|
|
|
23
23
|
type ButtonSize = 'sm' | 'md' | 'lg';
|
|
24
|
-
type ButtonVariant = 'default' | 'primary' | '
|
|
24
|
+
type ButtonVariant = 'default' | 'primary' | 'ghost';
|
|
25
25
|
|
|
26
26
|
interface Props extends Omit<HTMLButtonAttributes, 'class'> {
|
|
27
27
|
/** Visual variant of the button */
|
|
@@ -311,29 +311,55 @@ const isDisabled = $derived(disabled);
|
|
|
311
311
|
2px 2px 0 rgb(0 0 0 / 0.3);
|
|
312
312
|
}
|
|
313
313
|
|
|
314
|
-
/*
|
|
315
|
-
.salmex-btn-
|
|
314
|
+
/* Ghost variant — visible border at rest, full 3D bevel on hover */
|
|
315
|
+
.salmex-btn-ghost {
|
|
316
316
|
background: transparent;
|
|
317
|
-
box-shadow:
|
|
317
|
+
box-shadow: 0 0 0 2px rgb(var(--salmex-border-dark));
|
|
318
318
|
color: rgb(var(--salmex-text-primary));
|
|
319
319
|
font-weight: 600;
|
|
320
320
|
}
|
|
321
321
|
|
|
322
|
-
.salmex-btn-
|
|
323
|
-
background: rgb(var(--salmex-
|
|
322
|
+
.salmex-btn-ghost:hover:not(:disabled) {
|
|
323
|
+
background: rgb(var(--salmex-button-face));
|
|
324
|
+
transform: translateY(-1px);
|
|
324
325
|
box-shadow:
|
|
325
|
-
inset
|
|
326
|
-
inset
|
|
327
|
-
|
|
328
|
-
|
|
326
|
+
inset 2px 2px 0 rgb(var(--salmex-button-highlight)),
|
|
327
|
+
inset 3px 3px 0 rgb(var(--salmex-button-light)),
|
|
328
|
+
inset -2px -2px 0 rgb(var(--salmex-button-dark-edge)),
|
|
329
|
+
inset -3px -3px 0 rgb(var(--salmex-button-shadow)),
|
|
330
|
+
0 0 0 2px rgb(var(--salmex-border-dark)),
|
|
331
|
+
4px 4px 0 rgb(0 0 0 / 0.25);
|
|
329
332
|
}
|
|
330
333
|
|
|
331
|
-
.salmex-btn-
|
|
334
|
+
.salmex-btn-ghost:active:not(:disabled) {
|
|
332
335
|
background: rgb(var(--salmex-button-face));
|
|
333
336
|
box-shadow:
|
|
334
|
-
inset -
|
|
335
|
-
inset
|
|
336
|
-
|
|
337
|
+
inset -2px -2px 0 rgb(var(--salmex-button-highlight)),
|
|
338
|
+
inset -3px -3px 0 rgb(var(--salmex-button-light)),
|
|
339
|
+
inset 2px 2px 0 rgb(var(--salmex-button-dark-edge)),
|
|
340
|
+
inset 3px 3px 0 rgb(var(--salmex-button-shadow)),
|
|
341
|
+
0 0 0 2px rgb(var(--salmex-border-dark)),
|
|
342
|
+
2px 2px 0 rgb(0 0 0 / 0.3);
|
|
343
|
+
transform: translate(2px, 2px);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
.salmex-btn-ghost:focus-visible {
|
|
347
|
+
outline: none;
|
|
348
|
+
box-shadow:
|
|
349
|
+
0 0 0 2px rgb(var(--salmex-border-dark)),
|
|
350
|
+
0 0 0 4px rgb(var(--salmex-midnight-black)),
|
|
351
|
+
0 0 0 7px rgb(var(--salmex-crown-yellow));
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
:global([data-theme='dark']) .salmex-btn-ghost:focus-visible {
|
|
355
|
+
box-shadow:
|
|
356
|
+
0 0 0 2px rgb(var(--salmex-border-dark)),
|
|
357
|
+
0 0 0 5px rgb(var(--salmex-crown-yellow));
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/* Dark mode — more visible yellow underline on primary */
|
|
361
|
+
:global([data-theme='dark']) .salmex-btn-primary::after {
|
|
362
|
+
opacity: 0.9;
|
|
337
363
|
}
|
|
338
364
|
|
|
339
365
|
/* ========================================
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Snippet } from 'svelte';
|
|
2
2
|
import type { HTMLButtonAttributes } from 'svelte/elements';
|
|
3
3
|
type ButtonSize = 'sm' | 'md' | 'lg';
|
|
4
|
-
type ButtonVariant = 'default' | 'primary' | '
|
|
4
|
+
type ButtonVariant = 'default' | 'primary' | 'ghost';
|
|
5
5
|
interface Props extends Omit<HTMLButtonAttributes, 'class'> {
|
|
6
6
|
/** Visual variant of the button */
|
|
7
7
|
variant?: ButtonVariant;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.svelte.d.ts","sourceRoot":"","sources":["../../../src/primitives/Button/Button.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAI5D,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACrC,KAAK,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"Button.svelte.d.ts","sourceRoot":"","sources":["../../../src/primitives/Button/Button.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAI5D,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACrC,KAAK,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAErD,UAAU,KAAM,SAAQ,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC;IAC1D,mCAAmC;IACnC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,yBAAyB;IACzB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAkED;;;;;;;;;;;;;;;;GAgBG;AACH,QAAA,MAAM,MAAM,2CAAwC,CAAC;AACrD,KAAK,MAAM,GAAG,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC;AACxC,eAAe,MAAM,CAAC"}
|
package/dist/styles/tokens.css
CHANGED
|
@@ -184,9 +184,9 @@
|
|
|
184
184
|
--salmex-window-surface: 22 22 22;
|
|
185
185
|
--salmex-titlebar-bold: 0 140 255; /* Brighter blue for dark mode */
|
|
186
186
|
--salmex-button-face: 32 32 32;
|
|
187
|
-
--salmex-button-shadow:
|
|
187
|
+
--salmex-button-shadow: 50 50 50;
|
|
188
188
|
--salmex-button-dark-edge: 8 8 8;
|
|
189
|
-
--salmex-button-highlight:
|
|
189
|
+
--salmex-button-highlight: 90 90 90;
|
|
190
190
|
--salmex-button-light: 50 50 50;
|
|
191
191
|
|
|
192
192
|
/* Text - high contrast */
|
|
@@ -238,9 +238,9 @@
|
|
|
238
238
|
--salmex-window-surface: 22 22 22;
|
|
239
239
|
--salmex-titlebar-bold: 0 140 255;
|
|
240
240
|
--salmex-button-face: 32 32 32;
|
|
241
|
-
--salmex-button-shadow:
|
|
241
|
+
--salmex-button-shadow: 50 50 50;
|
|
242
242
|
--salmex-button-dark-edge: 8 8 8;
|
|
243
|
-
--salmex-button-highlight:
|
|
243
|
+
--salmex-button-highlight: 90 90 90;
|
|
244
244
|
--salmex-button-light: 50 50 50;
|
|
245
245
|
--salmex-text-primary: 255 255 255;
|
|
246
246
|
--salmex-text-secondary: 200 200 200;
|
|
@@ -410,12 +410,12 @@ function handleKeyDown(e: KeyboardEvent) {
|
|
|
410
410
|
color: rgb(var(--salmex-text-disabled));
|
|
411
411
|
}
|
|
412
412
|
|
|
413
|
-
/* Dark mode */
|
|
413
|
+
/* Dark mode — darker gradient for better text contrast (~5-6:1) */
|
|
414
414
|
:global([data-theme='dark']) .salmex-win-titlebar {
|
|
415
415
|
background: linear-gradient(
|
|
416
416
|
90deg,
|
|
417
|
-
rgb(0
|
|
418
|
-
rgb(0
|
|
417
|
+
rgb(0 75 180),
|
|
418
|
+
rgb(0 105 210)
|
|
419
419
|
);
|
|
420
420
|
}
|
|
421
421
|
|