orbital-ds 0.6.0 → 0.7.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/AGENTS.md +20 -0
- package/components.manifest.json +2 -1
- package/contract.json +168 -162
- package/dist/styles.css +34 -10
- package/dist/themes/friendly.css +14 -6
- package/dist/themes/friendly.scoped.css +17 -9
- package/dist/themes/qratia.css +8 -0
- package/dist/themes/qratia.scoped.css +10 -2
- package/dist/themes/tactile.css +39 -9
- package/dist/themes/tactile.scoped.css +42 -12
- package/dist/themes/twitter.css +12 -4
- package/dist/themes/twitter.meta.json +54 -7
- package/dist/themes/twitter.scoped.css +15 -7
- package/dist/themes/zyro.css +16 -8
- package/dist/themes/zyro.scoped.css +21 -13
- package/dist/ui/sidebar.js +3 -3
- package/dist/ui/tooltip.js +1 -1
- package/docs/CONTRACT.md +2 -1
- package/package.json +142 -142
- package/scripts/doctor.mjs +93 -0
- package/scripts/init.mjs +0 -0
package/dist/themes/tactile.css
CHANGED
|
@@ -21,6 +21,14 @@
|
|
|
21
21
|
--ds-font-sans: 'Figtree', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
|
|
22
22
|
--ds-font-display: 'Fraunces', Georgia, 'Times New Roman', serif;
|
|
23
23
|
--ds-font-mono: ui-monospace, 'SF Mono', Menlo, monospace;
|
|
24
|
+
|
|
25
|
+
/* Lateral: iconos, raíl, logo y separadores (cada tema fija su forma y tamaño) */
|
|
26
|
+
--ds-sidebar-icon: 1.5rem;
|
|
27
|
+
--ds-sidebar-icon-stroke: 2.1;
|
|
28
|
+
--ds-sidebar-rail-w: 5rem;
|
|
29
|
+
--ds-sidebar-rail-item: 3rem;
|
|
30
|
+
--ds-sidebar-logo: 2.5rem;
|
|
31
|
+
--ds-sidebar-sep-inset: -0.5rem;
|
|
24
32
|
--ds-heading-tracking: -0.01em;
|
|
25
33
|
|
|
26
34
|
--background: #f6f0e3;
|
|
@@ -37,7 +45,7 @@
|
|
|
37
45
|
--secondary-foreground: #2a2233;
|
|
38
46
|
--muted: #ede3cd;
|
|
39
47
|
--muted-foreground: rgba(42, 34, 51, 0.7);
|
|
40
|
-
--accent:
|
|
48
|
+
--accent: color-mix(in srgb, var(--primary) 30%, transparent);
|
|
41
49
|
--accent-foreground: #2a2233;
|
|
42
50
|
--destructive: #b53a22;
|
|
43
51
|
--destructive-foreground: #fffcf4;
|
|
@@ -61,13 +69,13 @@
|
|
|
61
69
|
--sidebar-border: rgba(42, 34, 51, 0.26);
|
|
62
70
|
--sidebar-ring: #17624f;
|
|
63
71
|
|
|
64
|
-
--danger: #
|
|
72
|
+
--danger: #ae3821;
|
|
65
73
|
--danger-soft: rgba(214, 69, 43, 0.13);
|
|
66
74
|
--warning: #7a5200;
|
|
67
75
|
--warning-soft: rgba(242, 179, 61, 0.3);
|
|
68
76
|
--success: #17624f;
|
|
69
77
|
--success-soft: rgba(23, 98, 79, 0.12);
|
|
70
|
-
--info: #
|
|
78
|
+
--info: #2a649e;
|
|
71
79
|
--info-soft: rgba(47, 111, 176, 0.12);
|
|
72
80
|
--neutral: rgba(42, 34, 51, 0.72);
|
|
73
81
|
--neutral-soft: rgba(42, 34, 51, 0.08);
|
|
@@ -121,7 +129,7 @@
|
|
|
121
129
|
--ds-sidebar-ring: 0px;
|
|
122
130
|
--ds-sidebar-edge: 2px solid var(--sidebar-border);
|
|
123
131
|
--ds-sidebar-item-radius: 14px;
|
|
124
|
-
--ds-sidebar-item-h:
|
|
132
|
+
--ds-sidebar-item-h: 3rem;
|
|
125
133
|
|
|
126
134
|
/* Baldosas de icono: grandes, tintadas y con relleno duotono suave */
|
|
127
135
|
--ds-icon-tile-sm: 2.25rem;
|
|
@@ -133,7 +141,7 @@
|
|
|
133
141
|
/* Privadas de tactile */
|
|
134
142
|
--zw-outline: #2a2233;
|
|
135
143
|
--zw-edge: rgba(42, 34, 51, 0.26);
|
|
136
|
-
--zw-mark:
|
|
144
|
+
--zw-mark: color-mix(in srgb, var(--primary) 62%, transparent);
|
|
137
145
|
}
|
|
138
146
|
|
|
139
147
|
/* ── VARIABLES · PIEL OSCURA («noche») ───────────────────────────────────── */
|
|
@@ -152,7 +160,7 @@
|
|
|
152
160
|
--secondary-foreground: #f4ebda;
|
|
153
161
|
--muted: #25202e;
|
|
154
162
|
--muted-foreground: rgba(244, 235, 218, 0.72);
|
|
155
|
-
--accent:
|
|
163
|
+
--accent: color-mix(in srgb, var(--primary) 18%, transparent);
|
|
156
164
|
--accent-foreground: #f7c566;
|
|
157
165
|
--destructive: #ff8266;
|
|
158
166
|
--destructive-foreground: #1d1824;
|
|
@@ -199,7 +207,7 @@
|
|
|
199
207
|
|
|
200
208
|
--zw-outline: rgba(244, 235, 218, 0.92);
|
|
201
209
|
--zw-edge: rgba(244, 235, 218, 0.26);
|
|
202
|
-
--zw-mark:
|
|
210
|
+
--zw-mark: color-mix(in srgb, var(--primary) 45%, transparent);
|
|
203
211
|
}
|
|
204
212
|
|
|
205
213
|
/* ── PERSONALIDAD ────────────────────────────────────────────────────────────
|
|
@@ -382,18 +390,40 @@
|
|
|
382
390
|
box-decoration-break: clone;
|
|
383
391
|
}
|
|
384
392
|
|
|
385
|
-
/* Sidebar: filas como teclas
|
|
393
|
+
/* Sidebar: filas como teclas */
|
|
386
394
|
[data-sidebar='menu-button'] {
|
|
387
395
|
border: 2px solid transparent;
|
|
388
396
|
border-radius: 14px;
|
|
389
397
|
font-weight: 600;
|
|
398
|
+
font-size: 1rem;
|
|
390
399
|
}
|
|
400
|
+
/* Señalada: la tecla se asoma (papel de tarjeta, contorno de tinta y arista); pulsada, se hunde */
|
|
391
401
|
[data-sidebar='menu-button']:hover:not([data-active='true']) {
|
|
392
402
|
background: var(--card);
|
|
403
|
+
border-color: var(--zw-outline);
|
|
404
|
+
border-bottom-width: 4px;
|
|
393
405
|
}
|
|
406
|
+
[data-sidebar='menu-button']:active:not([data-active='true']) {
|
|
407
|
+
border-bottom-width: 2px;
|
|
408
|
+
transform: translateY(2px);
|
|
409
|
+
}
|
|
410
|
+
/* Activa: la tecla pulsada y rellena con el color principal */
|
|
394
411
|
[data-sidebar='menu-button'][data-active='true'] {
|
|
395
|
-
background: var(--
|
|
412
|
+
background: var(--primary);
|
|
413
|
+
color: var(--primary-foreground);
|
|
396
414
|
border-color: var(--zw-outline);
|
|
397
415
|
border-bottom-width: 5px;
|
|
398
416
|
}
|
|
417
|
+
/* Tooltips: etiqueta de tinta con arista inferior, como una tecla invertida */
|
|
418
|
+
[data-slot='tooltip-content'] {
|
|
419
|
+
background: var(--foreground);
|
|
420
|
+
color: var(--background);
|
|
421
|
+
border-radius: 12px;
|
|
422
|
+
border-bottom: 4px solid var(--zw-edge);
|
|
423
|
+
font-weight: 700;
|
|
424
|
+
}
|
|
425
|
+
/* Sin flecha: un rombo de tinta tapaba la primera letra de la etiqueta */
|
|
426
|
+
[data-slot='tooltip-arrow'] {
|
|
427
|
+
display: none;
|
|
428
|
+
}
|
|
399
429
|
}
|
|
@@ -15,12 +15,20 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
/* ── VARIABLES · PIEL CLARA («papel») ────────────────────────────────────── */
|
|
18
|
-
:root[data-theme='tactile'] {
|
|
18
|
+
:root:where([data-theme='tactile']) {
|
|
19
19
|
--radius: 16px;
|
|
20
20
|
|
|
21
21
|
--ds-font-sans: 'Figtree', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
|
|
22
22
|
--ds-font-display: 'Fraunces', Georgia, 'Times New Roman', serif;
|
|
23
23
|
--ds-font-mono: ui-monospace, 'SF Mono', Menlo, monospace;
|
|
24
|
+
|
|
25
|
+
/* Lateral: iconos, raíl, logo y separadores (cada tema fija su forma y tamaño) */
|
|
26
|
+
--ds-sidebar-icon: 1.5rem;
|
|
27
|
+
--ds-sidebar-icon-stroke: 2.1;
|
|
28
|
+
--ds-sidebar-rail-w: 5rem;
|
|
29
|
+
--ds-sidebar-rail-item: 3rem;
|
|
30
|
+
--ds-sidebar-logo: 2.5rem;
|
|
31
|
+
--ds-sidebar-sep-inset: -0.5rem;
|
|
24
32
|
--ds-heading-tracking: -0.01em;
|
|
25
33
|
|
|
26
34
|
--background: #f6f0e3;
|
|
@@ -37,7 +45,7 @@
|
|
|
37
45
|
--secondary-foreground: #2a2233;
|
|
38
46
|
--muted: #ede3cd;
|
|
39
47
|
--muted-foreground: rgba(42, 34, 51, 0.7);
|
|
40
|
-
--accent:
|
|
48
|
+
--accent: color-mix(in srgb, var(--primary) 30%, transparent);
|
|
41
49
|
--accent-foreground: #2a2233;
|
|
42
50
|
--destructive: #b53a22;
|
|
43
51
|
--destructive-foreground: #fffcf4;
|
|
@@ -61,13 +69,13 @@
|
|
|
61
69
|
--sidebar-border: rgba(42, 34, 51, 0.26);
|
|
62
70
|
--sidebar-ring: #17624f;
|
|
63
71
|
|
|
64
|
-
--danger: #
|
|
72
|
+
--danger: #ae3821;
|
|
65
73
|
--danger-soft: rgba(214, 69, 43, 0.13);
|
|
66
74
|
--warning: #7a5200;
|
|
67
75
|
--warning-soft: rgba(242, 179, 61, 0.3);
|
|
68
76
|
--success: #17624f;
|
|
69
77
|
--success-soft: rgba(23, 98, 79, 0.12);
|
|
70
|
-
--info: #
|
|
78
|
+
--info: #2a649e;
|
|
71
79
|
--info-soft: rgba(47, 111, 176, 0.12);
|
|
72
80
|
--neutral: rgba(42, 34, 51, 0.72);
|
|
73
81
|
--neutral-soft: rgba(42, 34, 51, 0.08);
|
|
@@ -121,7 +129,7 @@
|
|
|
121
129
|
--ds-sidebar-ring: 0px;
|
|
122
130
|
--ds-sidebar-edge: 2px solid var(--sidebar-border);
|
|
123
131
|
--ds-sidebar-item-radius: 14px;
|
|
124
|
-
--ds-sidebar-item-h:
|
|
132
|
+
--ds-sidebar-item-h: 3rem;
|
|
125
133
|
|
|
126
134
|
/* Baldosas de icono: grandes, tintadas y con relleno duotono suave */
|
|
127
135
|
--ds-icon-tile-sm: 2.25rem;
|
|
@@ -133,11 +141,11 @@
|
|
|
133
141
|
/* Privadas de tactile */
|
|
134
142
|
--zw-outline: #2a2233;
|
|
135
143
|
--zw-edge: rgba(42, 34, 51, 0.26);
|
|
136
|
-
--zw-mark:
|
|
144
|
+
--zw-mark: color-mix(in srgb, var(--primary) 62%, transparent);
|
|
137
145
|
}
|
|
138
146
|
|
|
139
147
|
/* ── VARIABLES · PIEL OSCURA («noche») ───────────────────────────────────── */
|
|
140
|
-
:root[data-theme='tactile'].dark {
|
|
148
|
+
:where(:root[data-theme='tactile']).dark {
|
|
141
149
|
--background: #1d1824;
|
|
142
150
|
--foreground: #f4ebda;
|
|
143
151
|
|
|
@@ -152,7 +160,7 @@
|
|
|
152
160
|
--secondary-foreground: #f4ebda;
|
|
153
161
|
--muted: #25202e;
|
|
154
162
|
--muted-foreground: rgba(244, 235, 218, 0.72);
|
|
155
|
-
--accent:
|
|
163
|
+
--accent: color-mix(in srgb, var(--primary) 18%, transparent);
|
|
156
164
|
--accent-foreground: #f7c566;
|
|
157
165
|
--destructive: #ff8266;
|
|
158
166
|
--destructive-foreground: #1d1824;
|
|
@@ -199,14 +207,14 @@
|
|
|
199
207
|
|
|
200
208
|
--zw-outline: rgba(244, 235, 218, 0.92);
|
|
201
209
|
--zw-edge: rgba(244, 235, 218, 0.26);
|
|
202
|
-
--zw-mark:
|
|
210
|
+
--zw-mark: color-mix(in srgb, var(--primary) 45%, transparent);
|
|
203
211
|
}
|
|
204
212
|
|
|
205
213
|
/* ── PERSONALIDAD ────────────────────────────────────────────────────────────
|
|
206
214
|
* Sin capa: gana a las utilidades de los componentes. Solo variables. No usa
|
|
207
215
|
* box-shadow en los controles, así el anillo de foco sigue funcionando.
|
|
208
216
|
*/
|
|
209
|
-
:root[data-theme='tactile'] {
|
|
217
|
+
:root:where([data-theme='tactile']) {
|
|
210
218
|
/* Teclas: contorno de tinta y arista inferior; al pulsar, se hunden */
|
|
211
219
|
[data-slot='button'] {
|
|
212
220
|
border: 2px solid var(--zw-outline);
|
|
@@ -382,18 +390,40 @@
|
|
|
382
390
|
box-decoration-break: clone;
|
|
383
391
|
}
|
|
384
392
|
|
|
385
|
-
/* Sidebar: filas como teclas
|
|
393
|
+
/* Sidebar: filas como teclas */
|
|
386
394
|
[data-sidebar='menu-button'] {
|
|
387
395
|
border: 2px solid transparent;
|
|
388
396
|
border-radius: 14px;
|
|
389
397
|
font-weight: 600;
|
|
398
|
+
font-size: 1rem;
|
|
390
399
|
}
|
|
400
|
+
/* Señalada: la tecla se asoma (papel de tarjeta, contorno de tinta y arista); pulsada, se hunde */
|
|
391
401
|
[data-sidebar='menu-button']:hover:not([data-active='true']) {
|
|
392
402
|
background: var(--card);
|
|
403
|
+
border-color: var(--zw-outline);
|
|
404
|
+
border-bottom-width: 4px;
|
|
393
405
|
}
|
|
406
|
+
[data-sidebar='menu-button']:active:not([data-active='true']) {
|
|
407
|
+
border-bottom-width: 2px;
|
|
408
|
+
transform: translateY(2px);
|
|
409
|
+
}
|
|
410
|
+
/* Activa: la tecla pulsada y rellena con el color principal */
|
|
394
411
|
[data-sidebar='menu-button'][data-active='true'] {
|
|
395
|
-
background: var(--
|
|
412
|
+
background: var(--primary);
|
|
413
|
+
color: var(--primary-foreground);
|
|
396
414
|
border-color: var(--zw-outline);
|
|
397
415
|
border-bottom-width: 5px;
|
|
398
416
|
}
|
|
417
|
+
/* Tooltips: etiqueta de tinta con arista inferior, como una tecla invertida */
|
|
418
|
+
[data-slot='tooltip-content'] {
|
|
419
|
+
background: var(--foreground);
|
|
420
|
+
color: var(--background);
|
|
421
|
+
border-radius: 12px;
|
|
422
|
+
border-bottom: 4px solid var(--zw-edge);
|
|
423
|
+
font-weight: 700;
|
|
424
|
+
}
|
|
425
|
+
/* Sin flecha: un rombo de tinta tapaba la primera letra de la etiqueta */
|
|
426
|
+
[data-slot='tooltip-arrow'] {
|
|
427
|
+
display: none;
|
|
428
|
+
}
|
|
399
429
|
}
|
package/dist/themes/twitter.css
CHANGED
|
@@ -22,6 +22,14 @@
|
|
|
22
22
|
--ds-font-sans: 'Chirp', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
|
|
23
23
|
--ds-font-display: var(--ds-font-sans);
|
|
24
24
|
--ds-font-mono: ui-monospace, 'SF Mono', Menlo, monospace;
|
|
25
|
+
|
|
26
|
+
/* Lateral: iconos, raíl, logo y separadores (cada tema fija su forma y tamaño) */
|
|
27
|
+
--ds-sidebar-icon: 1.5rem;
|
|
28
|
+
--ds-sidebar-icon-stroke: 2;
|
|
29
|
+
--ds-sidebar-rail-w: 4.5rem;
|
|
30
|
+
--ds-sidebar-rail-item: 3rem;
|
|
31
|
+
--ds-sidebar-logo: 2.25rem;
|
|
32
|
+
--ds-sidebar-sep-inset: 0rem;
|
|
25
33
|
--ds-heading-tracking: normal;
|
|
26
34
|
|
|
27
35
|
/* Color */
|
|
@@ -41,7 +49,7 @@
|
|
|
41
49
|
--muted-foreground: #536471;
|
|
42
50
|
--accent: rgba(29, 155, 240, 0.1);
|
|
43
51
|
--accent-foreground: #1a8cd8;
|
|
44
|
-
--destructive: #
|
|
52
|
+
--destructive: #e51f2b;
|
|
45
53
|
--destructive-foreground: #ffffff;
|
|
46
54
|
|
|
47
55
|
--border: #eff3f4;
|
|
@@ -67,9 +75,9 @@
|
|
|
67
75
|
--danger-soft: rgba(244, 33, 46, 0.1);
|
|
68
76
|
--warning: #8a6d00;
|
|
69
77
|
--warning-soft: rgba(255, 212, 0, 0.2);
|
|
70
|
-
--success: #
|
|
78
|
+
--success: #007c53;
|
|
71
79
|
--success-soft: rgba(0, 186, 124, 0.12);
|
|
72
|
-
--info: #
|
|
80
|
+
--info: #1573b1;
|
|
73
81
|
--info-soft: rgba(29, 155, 240, 0.1);
|
|
74
82
|
--neutral: #536471;
|
|
75
83
|
--neutral-soft: #eff3f4;
|
|
@@ -151,7 +159,7 @@
|
|
|
151
159
|
--muted-foreground: #8b98a5;
|
|
152
160
|
--accent: rgba(29, 155, 240, 0.15);
|
|
153
161
|
--accent-foreground: #4db3f5;
|
|
154
|
-
--destructive: #
|
|
162
|
+
--destructive: #e51f2b;
|
|
155
163
|
--destructive-foreground: #ffffff;
|
|
156
164
|
|
|
157
165
|
--border: #38444d;
|
|
@@ -2,13 +2,60 @@
|
|
|
2
2
|
"name": "twitter",
|
|
3
3
|
"label": "Twitter (2021)",
|
|
4
4
|
"essence": "Plano y de alto contraste: filetes de 1px, píldoras, sin sombras.",
|
|
5
|
-
"signature": [
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
"signature": [
|
|
6
|
+
"filetes de 1px",
|
|
7
|
+
"botones en píldora de peso 700",
|
|
8
|
+
"sidebar a ras con filas en píldora"
|
|
9
|
+
],
|
|
10
|
+
"fonts": {
|
|
11
|
+
"display": "Chirp (sistema como respaldo)",
|
|
12
|
+
"body": "Chirp (sistema como respaldo)",
|
|
13
|
+
"file": "twitter.fonts.css",
|
|
14
|
+
"distributable": false
|
|
15
|
+
},
|
|
16
|
+
"palette": {
|
|
17
|
+
"light": {
|
|
18
|
+
"background": "#FFFFFF",
|
|
19
|
+
"foreground": "#0F1419",
|
|
20
|
+
"primary": "#1D9BF0"
|
|
21
|
+
},
|
|
22
|
+
"dark": {
|
|
23
|
+
"background": "#15202B"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"radii": [
|
|
27
|
+
16,
|
|
28
|
+
999
|
|
29
|
+
],
|
|
9
30
|
"references": [
|
|
10
|
-
{
|
|
31
|
+
{
|
|
32
|
+
"name": "Twitter (2021)",
|
|
33
|
+
"tookFromIt": "estructura plana, azul de marca, filetes",
|
|
34
|
+
"source": "memoria; azul y fuente documentados"
|
|
35
|
+
}
|
|
11
36
|
],
|
|
12
|
-
"status": {
|
|
13
|
-
|
|
37
|
+
"status": {
|
|
38
|
+
"verified": [
|
|
39
|
+
"azul #1D9BF0",
|
|
40
|
+
"fuente Chirp"
|
|
41
|
+
],
|
|
42
|
+
"approximate": [
|
|
43
|
+
"grises",
|
|
44
|
+
"bordes",
|
|
45
|
+
"fondos de Dim"
|
|
46
|
+
],
|
|
47
|
+
"designed": [],
|
|
48
|
+
"pending": [
|
|
49
|
+
"contrastar con captura de referencia"
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
"guide": "twitter.guide.md",
|
|
53
|
+
"a11y": {
|
|
54
|
+
"level": "AA",
|
|
55
|
+
"exceptions": [
|
|
56
|
+
"primary-foreground/primary",
|
|
57
|
+
"sidebar-primary-foreground/sidebar-primary"
|
|
58
|
+
],
|
|
59
|
+
"note": "El azul de marca confirmado (#1D9BF0) con texto blanco da 3:1; la acción primaria puede ir en tinta."
|
|
60
|
+
}
|
|
14
61
|
}
|
|
@@ -16,12 +16,20 @@
|
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
/* ── VARIABLES · PIEL CLARA ──────────────────────────────────────────────── */
|
|
19
|
-
:root[data-theme='twitter'] {
|
|
19
|
+
:root:where([data-theme='twitter']) {
|
|
20
20
|
--radius: 16px;
|
|
21
21
|
|
|
22
22
|
--ds-font-sans: 'Chirp', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
|
|
23
23
|
--ds-font-display: var(--ds-font-sans);
|
|
24
24
|
--ds-font-mono: ui-monospace, 'SF Mono', Menlo, monospace;
|
|
25
|
+
|
|
26
|
+
/* Lateral: iconos, raíl, logo y separadores (cada tema fija su forma y tamaño) */
|
|
27
|
+
--ds-sidebar-icon: 1.5rem;
|
|
28
|
+
--ds-sidebar-icon-stroke: 2;
|
|
29
|
+
--ds-sidebar-rail-w: 4.5rem;
|
|
30
|
+
--ds-sidebar-rail-item: 3rem;
|
|
31
|
+
--ds-sidebar-logo: 2.25rem;
|
|
32
|
+
--ds-sidebar-sep-inset: 0rem;
|
|
25
33
|
--ds-heading-tracking: normal;
|
|
26
34
|
|
|
27
35
|
/* Color */
|
|
@@ -41,7 +49,7 @@
|
|
|
41
49
|
--muted-foreground: #536471;
|
|
42
50
|
--accent: rgba(29, 155, 240, 0.1);
|
|
43
51
|
--accent-foreground: #1a8cd8;
|
|
44
|
-
--destructive: #
|
|
52
|
+
--destructive: #e51f2b;
|
|
45
53
|
--destructive-foreground: #ffffff;
|
|
46
54
|
|
|
47
55
|
--border: #eff3f4;
|
|
@@ -67,9 +75,9 @@
|
|
|
67
75
|
--danger-soft: rgba(244, 33, 46, 0.1);
|
|
68
76
|
--warning: #8a6d00;
|
|
69
77
|
--warning-soft: rgba(255, 212, 0, 0.2);
|
|
70
|
-
--success: #
|
|
78
|
+
--success: #007c53;
|
|
71
79
|
--success-soft: rgba(0, 186, 124, 0.12);
|
|
72
|
-
--info: #
|
|
80
|
+
--info: #1573b1;
|
|
73
81
|
--info-soft: rgba(29, 155, 240, 0.1);
|
|
74
82
|
--neutral: #536471;
|
|
75
83
|
--neutral-soft: #eff3f4;
|
|
@@ -134,7 +142,7 @@
|
|
|
134
142
|
}
|
|
135
143
|
|
|
136
144
|
/* ── VARIABLES · PIEL OSCURA («Dim») ─────────────────────────────────────── */
|
|
137
|
-
:root[data-theme='twitter'].dark {
|
|
145
|
+
:where(:root[data-theme='twitter']).dark {
|
|
138
146
|
--background: #15202b;
|
|
139
147
|
--foreground: #f7f9f9;
|
|
140
148
|
|
|
@@ -151,7 +159,7 @@
|
|
|
151
159
|
--muted-foreground: #8b98a5;
|
|
152
160
|
--accent: rgba(29, 155, 240, 0.15);
|
|
153
161
|
--accent-foreground: #4db3f5;
|
|
154
|
-
--destructive: #
|
|
162
|
+
--destructive: #e51f2b;
|
|
155
163
|
--destructive-foreground: #ffffff;
|
|
156
164
|
|
|
157
165
|
--border: #38444d;
|
|
@@ -198,7 +206,7 @@
|
|
|
198
206
|
/* ── PERSONALIDAD ────────────────────────────────────────────────────────────
|
|
199
207
|
* Sin capa: gana a las utilidades de los componentes. Solo variables.
|
|
200
208
|
*/
|
|
201
|
-
:root[data-theme='twitter'] {
|
|
209
|
+
:root:where([data-theme='twitter']) {
|
|
202
210
|
/* Botones: píldora en peso 700; primario en azul; contorno con filete */
|
|
203
211
|
[data-slot='button'] {
|
|
204
212
|
border-radius: 9999px;
|
package/dist/themes/zyro.css
CHANGED
|
@@ -26,6 +26,14 @@
|
|
|
26
26
|
--ds-font-sans: 'Roboto', system-ui, -apple-system, sans-serif;
|
|
27
27
|
--ds-font-display: 'Montserrat', system-ui, -apple-system, sans-serif;
|
|
28
28
|
--ds-font-mono: ui-monospace, 'SF Mono', Menlo, monospace;
|
|
29
|
+
|
|
30
|
+
/* Lateral: iconos, raíl, logo y separadores (cada tema fija su forma y tamaño) */
|
|
31
|
+
--ds-sidebar-icon: 1.25rem;
|
|
32
|
+
--ds-sidebar-icon-stroke: 2;
|
|
33
|
+
--ds-sidebar-rail-w: 4.5rem;
|
|
34
|
+
--ds-sidebar-rail-item: 2.75rem;
|
|
35
|
+
--ds-sidebar-logo: 2.25rem;
|
|
36
|
+
--ds-sidebar-sep-inset: 0rem;
|
|
29
37
|
--ds-heading-tracking: -0.01em;
|
|
30
38
|
|
|
31
39
|
/* Color */
|
|
@@ -45,7 +53,7 @@
|
|
|
45
53
|
--muted-foreground: rgba(14, 22, 48, 0.66);
|
|
46
54
|
--accent: rgba(3, 73, 254, 0.09);
|
|
47
55
|
--accent-foreground: #0349fe;
|
|
48
|
-
--destructive: #
|
|
56
|
+
--destructive: #e61919;
|
|
49
57
|
--destructive-foreground: #ffffff;
|
|
50
58
|
|
|
51
59
|
--border: rgba(168, 190, 235, 0.3);
|
|
@@ -69,13 +77,13 @@
|
|
|
69
77
|
|
|
70
78
|
--danger: #c21414;
|
|
71
79
|
--danger-soft: rgba(235, 25, 25, 0.1);
|
|
72
|
-
--warning: #
|
|
80
|
+
--warning: #845f00;
|
|
73
81
|
--warning-soft: rgba(255, 179, 0, 0.16);
|
|
74
|
-
--success: #
|
|
82
|
+
--success: #0b742a;
|
|
75
83
|
--success-soft: rgba(20, 189, 68, 0.12);
|
|
76
|
-
--info: #
|
|
84
|
+
--info: #1267a1;
|
|
77
85
|
--info-soft: rgba(42, 147, 213, 0.12);
|
|
78
|
-
--neutral: rgba(14, 22, 48, 0.
|
|
86
|
+
--neutral: rgba(14, 22, 48, 0.63);
|
|
79
87
|
--neutral-soft: rgba(14, 22, 48, 0.06);
|
|
80
88
|
|
|
81
89
|
--link: #0349fe;
|
|
@@ -164,7 +172,7 @@
|
|
|
164
172
|
--muted-foreground: rgba(255, 255, 255, 0.68);
|
|
165
173
|
--accent: rgba(54, 179, 237, 0.16);
|
|
166
174
|
--accent-foreground: #36b3ed;
|
|
167
|
-
--destructive: #
|
|
175
|
+
--destructive: #e61919;
|
|
168
176
|
--destructive-foreground: #ffffff;
|
|
169
177
|
|
|
170
178
|
--border: rgba(255, 255, 255, 0.07);
|
|
@@ -190,9 +198,9 @@
|
|
|
190
198
|
--danger-soft: rgba(235, 25, 25, 0.2);
|
|
191
199
|
--warning: #ffb300;
|
|
192
200
|
--warning-soft: rgba(255, 179, 0, 0.18);
|
|
193
|
-
--success: #
|
|
201
|
+
--success: #3cc864;
|
|
194
202
|
--success-soft: rgba(20, 189, 68, 0.18);
|
|
195
|
-
--info: #
|
|
203
|
+
--info: #70b7e3;
|
|
196
204
|
--info-soft: rgba(42, 147, 213, 0.2);
|
|
197
205
|
--neutral: rgba(255, 255, 255, 0.6);
|
|
198
206
|
--neutral-soft: rgba(255, 255, 255, 0.08);
|
|
@@ -19,13 +19,21 @@
|
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
21
|
/* ── 1. VARIABLES · PIEL CLARA ───────────────────────────────────────────── */
|
|
22
|
-
:root[data-theme='zyro'] {
|
|
22
|
+
:root:where([data-theme='zyro']) {
|
|
23
23
|
--radius: 18px;
|
|
24
24
|
|
|
25
25
|
/* Tipografía: Montserrat (titulares) + Roboto (cuerpo) */
|
|
26
26
|
--ds-font-sans: 'Roboto', system-ui, -apple-system, sans-serif;
|
|
27
27
|
--ds-font-display: 'Montserrat', system-ui, -apple-system, sans-serif;
|
|
28
28
|
--ds-font-mono: ui-monospace, 'SF Mono', Menlo, monospace;
|
|
29
|
+
|
|
30
|
+
/* Lateral: iconos, raíl, logo y separadores (cada tema fija su forma y tamaño) */
|
|
31
|
+
--ds-sidebar-icon: 1.25rem;
|
|
32
|
+
--ds-sidebar-icon-stroke: 2;
|
|
33
|
+
--ds-sidebar-rail-w: 4.5rem;
|
|
34
|
+
--ds-sidebar-rail-item: 2.75rem;
|
|
35
|
+
--ds-sidebar-logo: 2.25rem;
|
|
36
|
+
--ds-sidebar-sep-inset: 0rem;
|
|
29
37
|
--ds-heading-tracking: -0.01em;
|
|
30
38
|
|
|
31
39
|
/* Color */
|
|
@@ -45,7 +53,7 @@
|
|
|
45
53
|
--muted-foreground: rgba(14, 22, 48, 0.66);
|
|
46
54
|
--accent: rgba(3, 73, 254, 0.09);
|
|
47
55
|
--accent-foreground: #0349fe;
|
|
48
|
-
--destructive: #
|
|
56
|
+
--destructive: #e61919;
|
|
49
57
|
--destructive-foreground: #ffffff;
|
|
50
58
|
|
|
51
59
|
--border: rgba(168, 190, 235, 0.3);
|
|
@@ -69,13 +77,13 @@
|
|
|
69
77
|
|
|
70
78
|
--danger: #c21414;
|
|
71
79
|
--danger-soft: rgba(235, 25, 25, 0.1);
|
|
72
|
-
--warning: #
|
|
80
|
+
--warning: #845f00;
|
|
73
81
|
--warning-soft: rgba(255, 179, 0, 0.16);
|
|
74
|
-
--success: #
|
|
82
|
+
--success: #0b742a;
|
|
75
83
|
--success-soft: rgba(20, 189, 68, 0.12);
|
|
76
|
-
--info: #
|
|
84
|
+
--info: #1267a1;
|
|
77
85
|
--info-soft: rgba(42, 147, 213, 0.12);
|
|
78
|
-
--neutral: rgba(14, 22, 48, 0.
|
|
86
|
+
--neutral: rgba(14, 22, 48, 0.63);
|
|
79
87
|
--neutral-soft: rgba(14, 22, 48, 0.06);
|
|
80
88
|
|
|
81
89
|
--link: #0349fe;
|
|
@@ -147,7 +155,7 @@
|
|
|
147
155
|
}
|
|
148
156
|
|
|
149
157
|
/* ── 1b. VARIABLES · PIEL OSCURA ─────────────────────────────────────────── */
|
|
150
|
-
:root[data-theme='zyro'].dark {
|
|
158
|
+
:where(:root[data-theme='zyro']).dark {
|
|
151
159
|
--background: #0e3148;
|
|
152
160
|
--foreground: rgba(255, 255, 255, 0.94);
|
|
153
161
|
|
|
@@ -164,7 +172,7 @@
|
|
|
164
172
|
--muted-foreground: rgba(255, 255, 255, 0.68);
|
|
165
173
|
--accent: rgba(54, 179, 237, 0.16);
|
|
166
174
|
--accent-foreground: #36b3ed;
|
|
167
|
-
--destructive: #
|
|
175
|
+
--destructive: #e61919;
|
|
168
176
|
--destructive-foreground: #ffffff;
|
|
169
177
|
|
|
170
178
|
--border: rgba(255, 255, 255, 0.07);
|
|
@@ -190,9 +198,9 @@
|
|
|
190
198
|
--danger-soft: rgba(235, 25, 25, 0.2);
|
|
191
199
|
--warning: #ffb300;
|
|
192
200
|
--warning-soft: rgba(255, 179, 0, 0.18);
|
|
193
|
-
--success: #
|
|
201
|
+
--success: #3cc864;
|
|
194
202
|
--success-soft: rgba(20, 189, 68, 0.18);
|
|
195
|
-
--info: #
|
|
203
|
+
--info: #70b7e3;
|
|
196
204
|
--info-soft: rgba(42, 147, 213, 0.2);
|
|
197
205
|
--neutral: rgba(255, 255, 255, 0.6);
|
|
198
206
|
--neutral-soft: rgba(255, 255, 255, 0.08);
|
|
@@ -236,7 +244,7 @@
|
|
|
236
244
|
/* ── 2. PERSONALIDAD ─────────────────────────────────────────────────────────
|
|
237
245
|
* Sin capa: gana a las utilidades de los componentes. Solo variables.
|
|
238
246
|
*/
|
|
239
|
-
:root[data-theme='zyro'] {
|
|
247
|
+
:root:where([data-theme='zyro']) {
|
|
240
248
|
/* Botones: píldora. Acción primaria con degradado de marca y brillo. */
|
|
241
249
|
[data-slot='button'] {
|
|
242
250
|
border-radius: 9999px;
|
|
@@ -343,7 +351,7 @@
|
|
|
343
351
|
}
|
|
344
352
|
|
|
345
353
|
/* Ajustes de personalidad (vistos en el banco de pruebas) */
|
|
346
|
-
:root[data-theme='zyro'] {
|
|
354
|
+
:root:where([data-theme='zyro']) {
|
|
347
355
|
/* Grupos de botones: píldora solo en los extremos, el interior recto */
|
|
348
356
|
[data-slot='button-group'] [data-slot='button'] {
|
|
349
357
|
border-radius: 0;
|
|
@@ -365,7 +373,7 @@
|
|
|
365
373
|
|
|
366
374
|
/* Fondo vivo: los degradados derivan despacio (aproximación ligera, sin WebGL de la
|
|
367
375
|
malla original). `prefers-reduced-motion` ya detiene la animación en la estructura. */
|
|
368
|
-
:root[data-theme='zyro'] {
|
|
376
|
+
:root:where([data-theme='zyro']) {
|
|
369
377
|
body {
|
|
370
378
|
background-size: 160% 160%;
|
|
371
379
|
animation: zy-drift 40s ease-in-out infinite alternate;
|
package/dist/ui/sidebar.js
CHANGED
|
@@ -26,7 +26,7 @@ const SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
|
26
26
|
const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
27
27
|
const SIDEBAR_WIDTH = "17.5rem";
|
|
28
28
|
const SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
29
|
-
const SIDEBAR_WIDTH_ICON = "4rem";
|
|
29
|
+
const SIDEBAR_WIDTH_ICON = "var(--ds-sidebar-rail-w, 4rem)";
|
|
30
30
|
const SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
31
31
|
const SidebarContext = React.createContext(null);
|
|
32
32
|
function useSidebar() {
|
|
@@ -180,7 +180,7 @@ function Sidebar({
|
|
|
180
180
|
"data-slot": "sidebar-container",
|
|
181
181
|
"data-side": side,
|
|
182
182
|
className: cn(
|
|
183
|
-
"fixed inset-y-0 z-(--ds-z-
|
|
183
|
+
"fixed inset-y-0 z-(--ds-z-sidebar) hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-(--ds-motion-base) ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex",
|
|
184
184
|
// Adjust the padding for floating and inset variants.
|
|
185
185
|
variant === "floating" || variant === "inset" ? "p-(--ds-sidebar-pad) group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(var(--ds-sidebar-pad)*2)+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",
|
|
186
186
|
className
|
|
@@ -421,7 +421,7 @@ function SidebarMenuItem({ className, ...props }) {
|
|
|
421
421
|
);
|
|
422
422
|
}
|
|
423
423
|
const sidebarMenuButtonVariants = cva(
|
|
424
|
-
"peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-(--ds-sidebar-item-radius) px-3 py-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate",
|
|
424
|
+
"peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-(--ds-sidebar-item-radius) px-3 py-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:mx-auto group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate",
|
|
425
425
|
{
|
|
426
426
|
variants: {
|
|
427
427
|
variant: {
|
package/dist/ui/tooltip.js
CHANGED
|
@@ -48,7 +48,7 @@ function TooltipContent({
|
|
|
48
48
|
...props,
|
|
49
49
|
children: [
|
|
50
50
|
children,
|
|
51
|
-
/* @__PURE__ */ jsx(TooltipPrimitive.Arrow, { className: "z-(--ds-z-overlay) size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=left]:translate-x-[-1.5px] data-[side=right]:translate-x-[1.5px]" })
|
|
51
|
+
/* @__PURE__ */ jsx(TooltipPrimitive.Arrow, { "data-slot": "tooltip-arrow", className: "z-(--ds-z-overlay) size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=left]:translate-x-[-1.5px] data-[side=right]:translate-x-[1.5px]" })
|
|
52
52
|
]
|
|
53
53
|
}
|
|
54
54
|
)
|
package/docs/CONTRACT.md
CHANGED
|
@@ -74,9 +74,10 @@ Los define la estructura con un valor neutro; un tema los sobrescribe si quiere.
|
|
|
74
74
|
| Sombras | `--shadow-card`, `--shadow-card-hover`, `--shadow-control`, `--shadow-raised`, `--shadow-overlay`, `--shadow-popover` |
|
|
75
75
|
| Altura de controles | `--ds-control-h-sm`, `-md`, `-lg` |
|
|
76
76
|
| Espaciado interno | `--ds-card-spacing`, `--ds-card-spacing-sm`, `--ds-field-px`, `--ds-cell-p`, `--ds-overlay-p`, `--ds-overlay-gap`, `--ds-popover-p`, `--ds-menu-p`, `--ds-menu-item-px`, `--ds-menu-item-py`, `--ds-button-px-sm/md/lg`, `--ds-badge-px` |
|
|
77
|
-
| Capas | `--ds-z-raised`, `--ds-z-sticky`, `--ds-z-overlay` |
|
|
77
|
+
| Capas | `--ds-z-raised`, `--ds-z-sticky`, `--ds-z-sidebar` (sobre la cabecera sticky), `--ds-z-overlay` |
|
|
78
78
|
| Movimiento | `--ds-motion-fast`, `--ds-motion-base`, `--ds-motion-slow`, `--ds-motion-blink` |
|
|
79
79
|
| Foco | `--ds-ring-width` |
|
|
80
|
+
| Lateral | `--ds-sidebar-icon`, `--ds-sidebar-icon-stroke` (iconos), `--ds-sidebar-rail-w` (ancho contraído), `--ds-sidebar-rail-item` (tecla del raíl), `--ds-sidebar-logo` (logo y avatar), `--ds-sidebar-sep-inset` (separadores; negativo = de borde a borde). **Todo tema los define** (contrato) |
|
|
80
81
|
| Velo | `--color-scrim` |
|
|
81
82
|
| **Materiales** | `--ds-card-backdrop`, `--ds-overlay-backdrop`, `--ds-field-backdrop`, `--ds-sidebar-backdrop` (un `backdrop-filter` completo; por defecto `none`) y `--ds-page-backdrop` (un `background-image` para el fondo de la página; por defecto `none`) |
|
|
82
83
|
|