@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 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)}