@edc-motor/ui 0.4.17 → 0.4.18
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edc-motor/ui",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.18",
|
|
4
4
|
"description": "EdC Motor — componentes públicos Vue 3 + tokens SCSS para webs de juegos de mesa (paquete fuente: lo compila el consumidor con Vite)",
|
|
5
5
|
"license": "GPL-3.0-only",
|
|
6
6
|
"type": "module",
|
package/scss/_tokens.scss
CHANGED
|
@@ -112,3 +112,16 @@ $input-border: $border;
|
|
|
112
112
|
$input-border-hover: $border-strong;
|
|
113
113
|
$input-border-focus: $accent-500;
|
|
114
114
|
$input-focus-ring: $focus-ring;
|
|
115
|
+
|
|
116
|
+
// ---------------------------------------------------------
|
|
117
|
+
// Texto que CONTRASTA con un fondo arbitrario (el acento elegido en
|
|
118
|
+
// Ajustes, el color de una acción…): el navegador resuelve claro u oscuro
|
|
119
|
+
// según la luminosidad REAL del fondo (relative color syntax): blanco puro
|
|
120
|
+
// bajo L≈49.44 y negro puro por encima — el umbral donde el contraste real
|
|
121
|
+
// cambia de bando. La primera declaración es el FALLBACK (texto oscuro)
|
|
122
|
+
// para navegadores sin `lch(from …)`.
|
|
123
|
+
// ---------------------------------------------------------
|
|
124
|
+
@mixin contrast-text($bg) {
|
|
125
|
+
color: #111827;
|
|
126
|
+
color: lch(from #{$bg} calc((49.44 - l) * infinity) 0 0);
|
|
127
|
+
}
|
|
@@ -49,13 +49,16 @@
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
// Relleno de color: el texto NO es fijo — claro u oscuro según el fondo
|
|
53
|
+
// real (contrast-text de tokens), que el acento lo elige el usuario.
|
|
52
54
|
&--primary {
|
|
53
55
|
background: $color-accent;
|
|
54
|
-
color
|
|
56
|
+
@include contrast-text($color-accent);
|
|
55
57
|
|
|
56
58
|
// Hover bien visible: accent-600 apenas se distingue del 500.
|
|
57
59
|
&:hover:not(:disabled) {
|
|
58
60
|
background: color-mix(in srgb, $color-accent 72%, black);
|
|
61
|
+
@include contrast-text(color-mix(in srgb, $color-accent 72%, black));
|
|
59
62
|
}
|
|
60
63
|
}
|
|
61
64
|
|
|
@@ -94,23 +97,16 @@
|
|
|
94
97
|
}
|
|
95
98
|
}
|
|
96
99
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
color: #fff;
|
|
110
|
-
&:hover:not(:disabled) { background: color-mix(in srgb, $info 72%, black); }
|
|
111
|
-
}
|
|
112
|
-
.edc-button--warning {
|
|
113
|
-
background: $warning;
|
|
114
|
-
color: #2b2005;
|
|
115
|
-
&:hover:not(:disabled) { background: color-mix(in srgb, $warning 72%, black); }
|
|
100
|
+
// Variantes semánticas rellenas: mismo criterio que --primary, el texto lo
|
|
101
|
+
// decide el fondo (antes iba fijado a mano y a veces no contrastaba).
|
|
102
|
+
@each $variant, $color in (danger: $danger, success: $success, info: $info, warning: $warning) {
|
|
103
|
+
.edc-button--#{$variant} {
|
|
104
|
+
background: $color;
|
|
105
|
+
@include contrast-text($color);
|
|
106
|
+
|
|
107
|
+
&:hover:not(:disabled) {
|
|
108
|
+
background: color-mix(in srgb, #{$color} 72%, black);
|
|
109
|
+
@include contrast-text(color-mix(in srgb, #{$color} 72%, black));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
116
112
|
}
|
|
@@ -277,9 +277,11 @@
|
|
|
277
277
|
|
|
278
278
|
// El "fondo" de los estados cruzados es la SUPERFICIE ($surface, el
|
|
279
279
|
// segundo tono), no el fondo de página puro: menos negro / menos blanco.
|
|
280
|
+
// Relleno de acento: el texto lo decide el FONDO (contrast-text), no el
|
|
281
|
+
// tema — con acentos claros, $text-1 del tema oscuro no se leía.
|
|
280
282
|
&--primary {
|
|
281
283
|
background: $accent-500;
|
|
282
|
-
|
|
284
|
+
@include contrast-text($accent-500);
|
|
283
285
|
|
|
284
286
|
&:hover {
|
|
285
287
|
background: $surface;
|
|
@@ -293,7 +295,7 @@
|
|
|
293
295
|
|
|
294
296
|
&:hover {
|
|
295
297
|
background: $accent-500;
|
|
296
|
-
|
|
298
|
+
@include contrast-text($accent-500);
|
|
297
299
|
}
|
|
298
300
|
}
|
|
299
301
|
}
|
|
@@ -116,8 +116,43 @@
|
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
// Variante compacta (bloque related): tarjetas y huecos más contenidos.
|
|
119
|
+
// El bloque trae SIEMPRE 6 ítems y es el grid quien decide cuántos enseña
|
|
120
|
+
// para que la rejilla salga siempre completa, sin filas cojas:
|
|
121
|
+
// 4 en 2×2 (estrecho) → 6 en 3×2 (md) → 4 en 4×1 (lg) → 5 en 5×1 (xl).
|
|
119
122
|
&--compact &__grid {
|
|
120
123
|
gap: $space-3;
|
|
124
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
125
|
+
|
|
126
|
+
@media (min-width: $bp-md) {
|
|
127
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
@media (min-width: $bp-lg) {
|
|
131
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
@media (min-width: $bp-xl) {
|
|
135
|
+
grid-template-columns: repeat(5, minmax(0, 1fr));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Qué huecos se ven en cada tramo (los demás, ocultos): 4 → 6 → 4 → 5.
|
|
140
|
+
&--compact &__slot:nth-child(n + 5) {
|
|
141
|
+
display: none;
|
|
142
|
+
|
|
143
|
+
@media (min-width: $bp-md) {
|
|
144
|
+
display: block;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
@media (min-width: $bp-lg) {
|
|
148
|
+
display: none;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
&--compact &__slot:nth-child(5) {
|
|
153
|
+
@media (min-width: $bp-xl) {
|
|
154
|
+
display: block;
|
|
155
|
+
}
|
|
121
156
|
}
|
|
122
157
|
|
|
123
158
|
&--compact &__fallback {
|