@studiolxd/brand 49.0.0 → 49.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/CHANGELOG.md +61 -0
- package/dist/alert.css +1 -1
- package/dist/brand.css +21 -10
- package/dist/link.css +1 -1
- package/dist/toaster.css +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,67 @@ El paquete sigue [semver](https://semver.org/lang/es/): **patch** para bug fixes
|
|
|
7
7
|
regeneración de `dist`, **minor** para componentes/props/variantes/tokens nuevos, **major**
|
|
8
8
|
para breaking changes.
|
|
9
9
|
|
|
10
|
+
## [49.1.0] — 2026-09-16
|
|
11
|
+
|
|
12
|
+
> **Minor.** Regla visual nueva, sin cambios de API: **un enlace dentro de un `Alert` o de un
|
|
13
|
+
> toast del `Toaster` se pinta siempre en tinta (`tone="ink"`), nunca en acento.** El acento
|
|
14
|
+
> compite con el color de estado del propio aviso (el amarillo de `warning`, el rojo de
|
|
15
|
+
> `error`) y con la acción principal del aviso.
|
|
16
|
+
|
|
17
|
+
### El porqué
|
|
18
|
+
|
|
19
|
+
Hasta ahora un `<Link>` embebido en el título o la descripción de un aviso salía con el tono
|
|
20
|
+
que le pasara el consumidor — normalmente el acento por defecto, pensado para leer sobre la
|
|
21
|
+
página, no sobre un relleno de estado.
|
|
22
|
+
|
|
23
|
+
### El arreglo
|
|
24
|
+
|
|
25
|
+
Lo garantiza el CSS del `Alert`, no la disciplina de quien lo usa. Dentro de `.alert` (clase
|
|
26
|
+
que también lleva cada toast del `Toaster`, que comparte su cara) todo `.link` y todo `<a>`
|
|
27
|
+
suelto se pinta con el mismo token que ya usa el título y la descripción del aviso
|
|
28
|
+
(`--alert-title-ink`/`--alert-description-ink`, iguales entre sí, y ya resueltos por
|
|
29
|
+
intención y por superficie) en vez de con `--link-color`. Gana incluso un `tone="accent"`
|
|
30
|
+
explícito, por especificidad de contenedor (`.alert .link` pesa más que la clase de tono
|
|
31
|
+
sola) y sin `!important`.
|
|
32
|
+
|
|
33
|
+
Documentado en `Alert` § «Los enlaces van en tinta», en `Toast` § «Los enlaces van en tinta»
|
|
34
|
+
(remite al `Alert`, comparten CSS) y en Fundamentos › Colores § «Un enlace dentro de un
|
|
35
|
+
aviso lee en tinta, no en acento». Contrato cubierto por una story de test en cada
|
|
36
|
+
componente (`Molecules/Alert` y `Molecules/Toast`), que mide el color computado del enlace
|
|
37
|
+
contra el del título del aviso en las variantes `default`/`warning`/`error`.
|
|
38
|
+
|
|
39
|
+
## [49.0.1] — 2026-09-16
|
|
40
|
+
|
|
41
|
+
> **Patch.** Arregla una regresión de la v47.1.0: `Link.css` colgaba `inline-size:
|
|
42
|
+
> fit-content` de TODO `<a>` del documento (`a:where(:not(.button))`), no solo del enlace
|
|
43
|
+
> del sistema (`.link`). Cualquier `<a>` que fuera pieza de OTRO componente con su propia
|
|
44
|
+
> clase BEM y que no fijara su propio ancho se encogía a su texto: el ítem `link` de `Menu`
|
|
45
|
+
> (`<a class="menu__item">`, en `ContextMenu`/`UserMenu`) quedaba como una cajita junto a un
|
|
46
|
+
> ítem `button` que sí ocupaba la fila, y una `Card` con `href` (o `render={<a/>}`) dentro de
|
|
47
|
+
> una rejilla (`Columns align="stretch"`) se encogía a su título en vez de ocupar la celda —
|
|
48
|
+
> más visible cuanto más corto el título, porque el texto largo ya llenaba el hueco y
|
|
49
|
+
> disimulaba el bug.
|
|
50
|
+
|
|
51
|
+
### El arreglo
|
|
52
|
+
|
|
53
|
+
`inline-size: fit-content` sale del selector combinado y pasa a una regla aparte con
|
|
54
|
+
`:where(.link)` en solitario: solo el enlace del sistema (el átomo `Link`, o cualquier cosa
|
|
55
|
+
que lleve `class="link"`) se resiste a estirarse en un `Stack`/`Inline`. El `<a>` pelado
|
|
56
|
+
sigue vistiéndose (color, subrayado, foco) desde el selector de siempre, sin el
|
|
57
|
+
`inline-size`: lo que necesita su ancho de layout —`menu__item`, `card`, y cualquier otro
|
|
58
|
+
`<a>` con clase propia que no lo pise ya con su propio `width`/`inline-size`/`flex`— deja de
|
|
59
|
+
perderlo por una regla que no era la suya. Barrido el árbol de `src/`: ningún otro `<a>` de
|
|
60
|
+
componente (`sidebar-nav__link`, `breadcrumb__link`, `pagination__link`, `tabs__tab`,
|
|
61
|
+
`site-nav__link`, `project-card__link`…) dependía del `inline-size` que se retira — todos o
|
|
62
|
+
fijan su propio ancho o son enlaces de una sola palabra donde `fit-content` nunca actuaba.
|
|
63
|
+
|
|
64
|
+
Dos stories de contrato nuevas (`tags: ['!dev']`, corren en `test:stories`):
|
|
65
|
+
`Molecules/Menu` → «el ítem enlace ocupa el mismo ancho que el ítem botón», y
|
|
66
|
+
`Molecules/Card` → «cards enlazadas en rejilla ocupan su celda» (título corto y largo, mismo
|
|
67
|
+
ancho de celda). La story de `Atoms/Link` → «no se estira dentro de un Stack
|
|
68
|
+
`align="stretch"`» sigue en verde: sigue siendo `.link`, así que conserva su ancho de
|
|
69
|
+
contenido.
|
|
70
|
+
|
|
10
71
|
## [49.0.0] — 2026-09-16
|
|
11
72
|
|
|
12
73
|
> **Major.** La **última ola** del proveedor de textos, y la más distinta: el chat y las
|
package/dist/alert.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--alert-padding-block:var(--spacing-4);--alert-padding-inline:var(--spacing-5);--alert-gap:var(--spacing-3);--alert-content-gap:var(--spacing-2);--alert-actions-margin-block-start:var(--spacing-3);--alert-title-line-height:var(--line-height-snug);--alert-close-size:var(--size-component-sm);--alert-close-inset:var(--spacing-2);--alert-border-radius:var(--border-radius-default);--alert-border-width:var(--border-width-default);--alert-actions-gap:var(--form-actions-gap);--alert-bg:var(--color-primary);--alert-border-color:var(--color-text-on-dark);--alert-title-font-size:var(--text-font-size);--alert-title-font-weight:var(--font-weight-emphasis);--alert-title-color:var(--color-text-on-dark);--alert-description-font-size:var(--text-font-size);--alert-description-line-height:var(--text-line-height);--alert-description-color:var(--color-text-on-dark);--alert-success-bg:var(--color-success-fill);--alert-success-border-color:var(--color-success-fill);--alert-success-title-color:var(--color-success-fill-text);--alert-success-description-color:var(--color-success-fill-text);--alert-error-bg:var(--color-error-fill);--alert-error-border-color:var(--color-error-fill);--alert-error-title-color:var(--color-error-fill-text);--alert-error-description-color:var(--color-error-fill-text);--alert-warning-bg:var(--color-warning-fill);--alert-warning-border-color:var(--color-warning-fill);--alert-warning-title-color:var(--color-warning-fill-text);--alert-warning-description-color:var(--color-warning-fill-text);--alert-warning-close-color:var(--color-warning-fill-text)}.surface-dark,.surface-invert,[data-theme=dark],html.dark{--alert-bg:var(--color-text-on-dark);--alert-border-color:var(--color-text-on-dark);--alert-title-color:var(--color-primary);--alert-description-color:var(--color-primary)}.alert{background-color:var(--alert-bg);border:var(--alert-border-width) solid var(--alert-border-color);border-radius:var(--alert-border-radius);padding-block:var(--alert-padding-block);padding-inline:var(--alert-padding-inline);align-items:flex-start;gap:var(--alert-gap);box-sizing:border-box;--alert-title-ink:var(--alert-title-color);--alert-description-ink:var(--alert-description-color);display:flex;position:relative}.alert.alert--dismissible{padding-inline-end:calc(var(--alert-close-inset) * 2 + var(--alert-close-size))}.alert__content{flex:1;min-width:0}.alert__title{font-size:var(--alert-title-font-size);font-weight:var(--alert-title-font-weight);color:var(--alert-title-ink);line-height:var(--alert-title-line-height);margin:0}.alert__description{font-size:var(--alert-description-font-size);color:var(--alert-description-ink);line-height:var(--alert-description-line-height);margin:0;align-items:start;gap:var(--alert-content-gap);flex-direction:column;margin-block-start:var(--alert-content-gap);display:flex}.alert__actions{align-items:stretch;gap:var(--alert-actions-gap);flex-direction:column;margin-block-start:var(--alert-actions-margin-block-start);display:flex}.alert__actions>*{inline-size:100%}@media (width>=768px){.alert__actions{flex-flow:wrap;align-items:center}.alert__actions>*{inline-size:auto}}.alert .alert__close{--close-button-size:var(--alert-close-size);position:absolute;inset-block-start:var(--alert-close-inset);inset-inline-end:var(--alert-close-inset)}.alert.alert--success{--alert-bg:var(--alert-success-bg);--alert-border-color:var(--alert-success-border-color);--alert-title-color:var(--alert-success-title-color);--alert-description-color:var(--alert-success-description-color)}.alert.alert--error{--alert-bg:var(--alert-error-bg);--alert-border-color:var(--alert-error-border-color);--alert-title-color:var(--alert-error-title-color);--alert-description-color:var(--alert-error-description-color)}.alert.alert--warning{--alert-bg:var(--alert-warning-bg);--alert-border-color:var(--alert-warning-border-color);--alert-title-color:var(--alert-warning-title-color);--alert-description-color:var(--alert-warning-description-color);--close-button-color:var(--alert-warning-close-color);--close-button-focus-ring-color:var(--alert-warning-close-color)}
|
|
1
|
+
:root{--alert-padding-block:var(--spacing-4);--alert-padding-inline:var(--spacing-5);--alert-gap:var(--spacing-3);--alert-content-gap:var(--spacing-2);--alert-actions-margin-block-start:var(--spacing-3);--alert-title-line-height:var(--line-height-snug);--alert-close-size:var(--size-component-sm);--alert-close-inset:var(--spacing-2);--alert-border-radius:var(--border-radius-default);--alert-border-width:var(--border-width-default);--alert-actions-gap:var(--form-actions-gap);--alert-bg:var(--color-primary);--alert-border-color:var(--color-text-on-dark);--alert-title-font-size:var(--text-font-size);--alert-title-font-weight:var(--font-weight-emphasis);--alert-title-color:var(--color-text-on-dark);--alert-description-font-size:var(--text-font-size);--alert-description-line-height:var(--text-line-height);--alert-description-color:var(--color-text-on-dark);--alert-success-bg:var(--color-success-fill);--alert-success-border-color:var(--color-success-fill);--alert-success-title-color:var(--color-success-fill-text);--alert-success-description-color:var(--color-success-fill-text);--alert-error-bg:var(--color-error-fill);--alert-error-border-color:var(--color-error-fill);--alert-error-title-color:var(--color-error-fill-text);--alert-error-description-color:var(--color-error-fill-text);--alert-warning-bg:var(--color-warning-fill);--alert-warning-border-color:var(--color-warning-fill);--alert-warning-title-color:var(--color-warning-fill-text);--alert-warning-description-color:var(--color-warning-fill-text);--alert-warning-close-color:var(--color-warning-fill-text)}.surface-dark,.surface-invert,[data-theme=dark],html.dark{--alert-bg:var(--color-text-on-dark);--alert-border-color:var(--color-text-on-dark);--alert-title-color:var(--color-primary);--alert-description-color:var(--color-primary)}.alert{background-color:var(--alert-bg);border:var(--alert-border-width) solid var(--alert-border-color);border-radius:var(--alert-border-radius);padding-block:var(--alert-padding-block);padding-inline:var(--alert-padding-inline);align-items:flex-start;gap:var(--alert-gap);box-sizing:border-box;--alert-title-ink:var(--alert-title-color);--alert-description-ink:var(--alert-description-color);display:flex;position:relative}.alert.alert--dismissible{padding-inline-end:calc(var(--alert-close-inset) * 2 + var(--alert-close-size))}.alert__content{flex:1;min-width:0}.alert__title{font-size:var(--alert-title-font-size);font-weight:var(--alert-title-font-weight);color:var(--alert-title-ink);line-height:var(--alert-title-line-height);margin:0}.alert__description{font-size:var(--alert-description-font-size);color:var(--alert-description-ink);line-height:var(--alert-description-line-height);margin:0;align-items:start;gap:var(--alert-content-gap);flex-direction:column;margin-block-start:var(--alert-content-gap);display:flex}.alert__actions{align-items:stretch;gap:var(--alert-actions-gap);flex-direction:column;margin-block-start:var(--alert-actions-margin-block-start);display:flex}.alert__actions>*{inline-size:100%}@media (width>=768px){.alert__actions{flex-flow:wrap;align-items:center}.alert__actions>*{inline-size:auto}}.alert .link,.alert a:not(.button){color:var(--alert-description-ink);box-shadow:inset 0 calc(-1 * var(--link-ink-underline-width)) 0 0 currentColor}.alert .link:hover,.alert a:not(.button):hover{color:var(--alert-description-ink);box-shadow:inset 0 calc(-1 * var(--link-ink-hover-underline-width)) 0 0 currentColor}.alert .link:focus-visible,.alert a:not(.button):focus-visible{outline-color:var(--alert-description-ink)}.alert .alert__close{--close-button-size:var(--alert-close-size);position:absolute;inset-block-start:var(--alert-close-inset);inset-inline-end:var(--alert-close-inset)}.alert.alert--success{--alert-bg:var(--alert-success-bg);--alert-border-color:var(--alert-success-border-color);--alert-title-color:var(--alert-success-title-color);--alert-description-color:var(--alert-success-description-color)}.alert.alert--error{--alert-bg:var(--alert-error-bg);--alert-border-color:var(--alert-error-border-color);--alert-title-color:var(--alert-error-title-color);--alert-description-color:var(--alert-error-description-color)}.alert.alert--warning{--alert-bg:var(--alert-warning-bg);--alert-border-color:var(--alert-warning-border-color);--alert-title-color:var(--alert-warning-title-color);--alert-description-color:var(--alert-warning-description-color);--close-button-color:var(--alert-warning-close-color);--close-button-focus-ring-color:var(--alert-warning-close-color)}
|