@studiolxd/brand 38.13.0 → 38.15.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,51 @@ 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
+ ## [38.15.0] — 2026-09-15
11
+
12
+ > **Minor.** El cajón de conversaciones del chat, en móvil: ocupa el ancho y su
13
+ > botón no cambia de forma al abrirse. `Sheet` gana `hideClose`.
14
+
15
+ El cajón medía 320px de 390 porque heredaba el ancho lateral del `Sheet`.
16
+ Mientras está abierto, la lista de conversaciones ES la pantalla: ahora mide lo
17
+ que el armazón. Sin media query, porque el cajón solo se monta por debajo de
18
+ `lg`.
19
+
20
+ Y al abrirse aparecía el aspa del `Sheet` encima del disparador, así que el
21
+ glifo cambiaba de «barra lateral» a «cerrar» según el estado. `Sheet` acepta
22
+ `hideClose` —por defecto no cambia para nadie— y el armazón pinta dentro del
23
+ cajón el MISMO botón que lo abrió, en el mismo sitio: pliega y despliega sin
24
+ cambiar de dibujo. Dos controles de cierre con formas distintas en la misma
25
+ pantalla son dos maneras de decir lo mismo.
26
+
27
+ ## [38.14.0] — 2026-09-15
28
+
29
+ > **Minor.** En móvil, las acciones ocupan la línea porque lo decide el sitio
30
+ > donde viven, no cada botón. Ninguna prop cambia; el dibujo sí, en cinco
31
+ > componentes.
32
+
33
+ ### La norma: el ancho lo decide el contenedor
34
+
35
+ `.form__actions` ya lo hacía y los otros catorce contenedores de acciones no,
36
+ así que un botón suelto solo se estiraba si alguien se acordaba de pedírselo
37
+ pieza por pieza. Ahora la norma es del sistema y está escrita en
38
+ `Foundations/Breakpoints`, con el patrón, dónde se aplica y —sobre todo—
39
+ dónde NO.
40
+
41
+ Entran `Banner`, `ConsentBanner`, `FilterBar`, `Highlight` y
42
+ `RecoveryCodes`. Se quedan fuera, a propósito, las acciones que viven DENTRO
43
+ de una fila y no son un pie: las de `NotificationList`, `TreeView` y
44
+ `MessageComposer` —estirarlas rompería la fila que les da sentido— y las de
45
+ `SiteHeader`, que en móvil ni se pintan. `AnnotationThread` queda anotado
46
+ como dudoso: vive en un panel estrecho también en escritorio, así que su caso
47
+ es de consulta de contenedor, no de anchura de ventana.
48
+
49
+ ### `DescriptionList` mide su hueco
50
+
51
+ No fijaba su ancho, así que dependía de dónde se pusiera: dentro de un
52
+ contenedor que alinea al principio se encogía al contenido y los filetes
53
+ salían a media línea, en móvil y en escritorio. Ahora el ancho es de la ficha.
54
+
10
55
  ## [38.13.0] — 2026-09-15
11
56
 
12
57
  > **Minor.** Las burbujas del chat parten el texto que no cabe, una fila puede
@@ -15,6 +15,12 @@ export interface SheetProps extends Omit<React.ComponentPropsWithoutRef<'div'>,
15
15
  footer?: ReactNode;
16
16
  children: ReactNode;
17
17
  closeLabel?: string;
18
+ /**
19
+ * Oculta el aspa de la esquina. Para un cajón cuyo propio disparador queda
20
+ * a la vista y ya sirve para cerrarlo: dos controles de cierre en la misma
21
+ * pantalla, con glifos distintos, son dos formas de decir lo mismo.
22
+ */
23
+ hideClose?: boolean;
18
24
  /** Elemento que abre el panel. Sin él, la apertura la controla el consumidor. */
19
25
  trigger?: ReactNode;
20
26
  /**
@@ -53,4 +59,4 @@ export declare function SheetFooter({ className, ...props }: React.HTMLAttribute
53
59
  * handlers son lo que permite montar la barrera de eventos cuando el panel se
54
60
  * abre desde dentro de una tarjeta clicable, sin `div`s de producto alrededor.
55
61
  */
56
- export declare function Sheet({ open, onOpenChange, side, title, titleHidden, description, footer, children, closeLabel, trigger, container, onAnimationEndCapture, className, ...rest }: SheetProps): import("react/jsx-runtime").JSX.Element;
62
+ export declare function Sheet({ open, onOpenChange, side, title, titleHidden, description, footer, children, closeLabel, hideClose, trigger, container, onAnimationEndCapture, className, ...rest }: SheetProps): import("react/jsx-runtime").JSX.Element;
package/dist/banner.css CHANGED
@@ -1 +1 @@
1
- :root{--banner-padding-block:var(--spacing-3);--banner-padding-inline:var(--spacing-5);--banner-gap:var(--spacing-4);--banner-close-size:var(--size-component-sm);--banner-close-inset:var(--spacing-2);--banner-border-width:var(--border-width-default);--banner-font-size:var(--text-font-size);--banner-line-height:var(--text-line-height);--banner-info-bg:var(--color-primary);--banner-info-color:var(--color-text-on-dark);--banner-info-border-color:var(--color-text-on-dark);--banner-warning-bg:var(--color-warning-fill);--banner-warning-border-color:var(--color-warning-fill);--banner-warning-color:var(--color-warning-fill-text);--banner-warning-close-color:var(--color-warning-fill-text)}.banner{box-sizing:border-box;background-color:var(--banner-bg);inline-size:100%;color:var(--banner-color);border-block:var(--banner-border-width) solid var(--banner-border-color);padding-block:var(--banner-padding-block);padding-inline:var(--banner-padding-inline);font-size:var(--banner-font-size);line-height:var(--banner-line-height);align-items:flex-start;gap:var(--banner-gap);border-inline:0;flex-direction:column;display:flex;position:relative}.banner.banner--dismissible{padding-inline-end:calc(var(--banner-close-inset) * 2 + var(--banner-close-size))}.banner__content{min-inline-size:0}.banner__actions{align-items:center;gap:var(--banner-gap);flex-wrap:wrap;display:flex}.banner .banner__close{--close-button-size:var(--banner-close-size);position:absolute;inset-block-start:var(--banner-close-inset);inset-inline-end:var(--banner-close-inset)}@media (width>=768px){.banner{flex-direction:row;align-items:center}.banner__content{flex:1}}.banner.banner--info{--banner-bg:var(--banner-info-bg);--banner-color:var(--banner-info-color);--banner-border-color:var(--banner-info-border-color)}.banner.banner--warning{--banner-bg:var(--banner-warning-bg);--banner-color:var(--banner-warning-color);--banner-border-color:var(--banner-warning-border-color);--close-button-color:var(--banner-warning-close-color);--close-button-focus-ring-color:var(--banner-warning-close-color)}
1
+ :root{--banner-padding-block:var(--spacing-3);--banner-padding-inline:var(--spacing-5);--banner-gap:var(--spacing-4);--banner-close-size:var(--size-component-sm);--banner-close-inset:var(--spacing-2);--banner-border-width:var(--border-width-default);--banner-font-size:var(--text-font-size);--banner-line-height:var(--text-line-height);--banner-info-bg:var(--color-primary);--banner-info-color:var(--color-text-on-dark);--banner-info-border-color:var(--color-text-on-dark);--banner-warning-bg:var(--color-warning-fill);--banner-warning-border-color:var(--color-warning-fill);--banner-warning-color:var(--color-warning-fill-text);--banner-warning-close-color:var(--color-warning-fill-text)}.banner{box-sizing:border-box;background-color:var(--banner-bg);inline-size:100%;color:var(--banner-color);border-block:var(--banner-border-width) solid var(--banner-border-color);padding-block:var(--banner-padding-block);padding-inline:var(--banner-padding-inline);font-size:var(--banner-font-size);line-height:var(--banner-line-height);align-items:flex-start;gap:var(--banner-gap);border-inline:0;flex-direction:column;display:flex;position:relative}.banner.banner--dismissible{padding-inline-end:calc(var(--banner-close-inset) * 2 + var(--banner-close-size))}.banner__content{min-inline-size:0}.banner__actions{align-self:stretch;align-items:stretch;gap:var(--banner-gap);flex-direction:column;display:flex}.banner__actions>*{inline-size:100%}.banner .banner__close{--close-button-size:var(--banner-close-size);position:absolute;inset-block-start:var(--banner-close-inset);inset-inline-end:var(--banner-close-inset)}@media (width>=768px){.banner{flex-direction:row;align-items:center}.banner__content{flex:1}.banner__actions{flex-flow:wrap;align-self:auto;align-items:center}.banner__actions>*{inline-size:auto}}.banner.banner--info{--banner-bg:var(--banner-info-bg);--banner-color:var(--banner-info-color);--banner-border-color:var(--banner-info-border-color)}.banner.banner--warning{--banner-bg:var(--banner-warning-bg);--banner-color:var(--banner-warning-color);--banner-border-color:var(--banner-warning-border-color);--close-button-color:var(--banner-warning-close-color);--close-button-focus-ring-color:var(--banner-warning-close-color)}
@@ -1 +1 @@
1
- .chat-shell{background-color:var(--chat-shell-bg);flex-direction:column;block-size:100%;min-block-size:0;display:flex;position:relative}.chat-shell .chat-shell__drawer,.chat-shell .sheet__overlay{position:absolute}.chat-shell__list{inline-size:var(--chat-shell-list-width);flex-shrink:0;block-size:100%;overflow-y:auto}.chat-shell.chat-shell--with-list{gap:var(--chat-shell-gap);flex-direction:row}.chat-shell__main{flex-direction:column;flex:1;min-block-size:0;display:flex}.chat-shell__header{justify-content:space-between;align-items:center;gap:var(--chat-shell-header-gap);flex-shrink:0;display:flex}.chat-shell__list-trigger{flex-shrink:0}.chat-shell__header-content{justify-content:space-between;align-items:center;gap:var(--chat-shell-header-gap);flex:1;min-inline-size:0;display:flex}.chat-shell__thread{--conversation-thread-padding-inline:var(--chat-shell-thread-padding-inline);min-block-size:0;padding-block:var(--chat-shell-thread-padding-block);flex-direction:column;flex:1;display:flex;overflow-y:auto}.chat-shell__composer{flex-shrink:0}
1
+ .chat-shell{background-color:var(--chat-shell-bg);flex-direction:column;block-size:100%;min-block-size:0;display:flex;position:relative}.chat-shell .chat-shell__drawer,.chat-shell .sheet__overlay{position:absolute}.chat-shell .chat-shell__drawer{--sheet-inline-size:100%}.chat-shell__list{inline-size:var(--chat-shell-list-width);flex-shrink:0;block-size:100%;overflow-y:auto}.chat-shell.chat-shell--with-list{gap:var(--chat-shell-gap);flex-direction:row}.chat-shell__main{flex-direction:column;flex:1;min-block-size:0;display:flex}.chat-shell__header{justify-content:space-between;align-items:center;gap:var(--chat-shell-header-gap);flex-shrink:0;display:flex}.chat-shell__list-trigger{flex-shrink:0}.chat-shell__header-content{justify-content:space-between;align-items:center;gap:var(--chat-shell-header-gap);flex:1;min-inline-size:0;display:flex}.chat-shell__thread{--conversation-thread-padding-inline:var(--chat-shell-thread-padding-inline);min-block-size:0;padding-block:var(--chat-shell-thread-padding-block);flex-direction:column;flex:1;display:flex;overflow-y:auto}.chat-shell__composer{flex-shrink:0}
@@ -66,15 +66,28 @@ var l = "(min-width: 1024px)", u = a(function({ list: a, header: u, children: d,
66
66
  })
67
67
  ]
68
68
  }),
69
- A && /* @__PURE__ */ r(n, {
69
+ A && /* @__PURE__ */ i(n, {
70
70
  side: "left",
71
71
  open: O,
72
72
  onOpenChange: D,
73
73
  title: p,
74
74
  titleHidden: !0,
75
75
  container: w ?? void 0,
76
+ hideClose: !0,
76
77
  className: "chat-shell__drawer",
77
- children: a
78
+ children: [/* @__PURE__ */ r(t, {
79
+ variant: "ghost",
80
+ size: "sm",
81
+ iconOnly: !0,
82
+ "aria-label": m,
83
+ "aria-expanded": !0,
84
+ className: "chat-shell__list-trigger",
85
+ onClick: () => D(!1),
86
+ children: /* @__PURE__ */ r(e, {
87
+ name: "layout-sidebar",
88
+ size: "sm"
89
+ })
90
+ }), a]
78
91
  })
79
92
  ]
80
93
  });
package/dist/consent.css CHANGED
@@ -1 +1 @@
1
- .consent-banner{z-index:var(--consent-banner-z-index);background-color:var(--consent-banner-bg);color:var(--consent-banner-color);border-block-start:var(--consent-banner-border-width) solid var(--consent-banner-border-color);padding-block:var(--consent-banner-padding-block);padding-inline:var(--consent-banner-padding-inline);position:fixed;inset-block-end:0;inset-inline:0}.consent-banner__inner{justify-content:space-between;align-items:center;gap:var(--consent-banner-gap);max-inline-size:var(--consent-banner-max-inline-size);flex-wrap:wrap;margin-inline:auto;display:flex}.consent-banner__text{gap:var(--consent-banner-text-gap);flex-direction:column;flex:20rem;min-inline-size:0;display:flex}.consent-banner__title{font-size:var(--consent-banner-title-font-size);color:inherit;margin-block:0}.consent-banner__description{font-size:var(--consent-banner-description-font-size);color:inherit;margin-block:0}.consent-banner__actions{align-items:center;gap:var(--consent-banner-actions-gap);flex-wrap:wrap;display:flex}.consent-preferences{gap:var(--consent-preferences-gap);flex-direction:column;display:flex}.consent-preferences__list{gap:var(--consent-preferences-category-gap);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}
1
+ .consent-banner{z-index:var(--consent-banner-z-index);background-color:var(--consent-banner-bg);color:var(--consent-banner-color);border-block-start:var(--consent-banner-border-width) solid var(--consent-banner-border-color);padding-block:var(--consent-banner-padding-block);padding-inline:var(--consent-banner-padding-inline);position:fixed;inset-block-end:0;inset-inline:0}.consent-banner__inner{justify-content:space-between;align-items:center;gap:var(--consent-banner-gap);max-inline-size:var(--consent-banner-max-inline-size);flex-wrap:wrap;margin-inline:auto;display:flex}.consent-banner__text{gap:var(--consent-banner-text-gap);flex-direction:column;flex:20rem;min-inline-size:0;display:flex}.consent-banner__title{font-size:var(--consent-banner-title-font-size);color:inherit;margin-block:0}.consent-banner__description{font-size:var(--consent-banner-description-font-size);color:inherit;margin-block:0}.consent-banner__actions{align-self:stretch;align-items:stretch;gap:var(--consent-banner-actions-gap);flex-direction:column;display:flex}.consent-banner__actions>*{inline-size:100%}@media (width>=768px){.consent-banner__actions{flex-flow:wrap;align-self:auto;align-items:center}.consent-banner__actions>*{inline-size:auto}}.consent-preferences{gap:var(--consent-preferences-gap);flex-direction:column;display:flex}.consent-preferences__list{gap:var(--consent-preferences-category-gap);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}
@@ -1 +1 @@
1
- .description-list{border-width:var(--description-list-border-width);border-style:var(--description-list-border-style);border-color:var(--description-list-border-color);grid-template-columns:1fr;margin:0;display:grid}@media (width>=768px){.description-list{grid-template-columns:max-content 1fr}}.description-list>dt,.description-list>dd,.description-list>.description-list__term,.description-list>.description-list__details{padding-block:var(--description-list-cell-padding-block);padding-inline:var(--description-list-cell-padding-inline);margin:0}.description-list>dd,.description-list>.description-list__details{border-block-end-width:var(--description-list-border-width);border-block-end-style:var(--description-list-border-style);border-block-end-color:var(--description-list-border-color)}.description-list>dd:last-of-type,.description-list>.description-list__details:last-of-type{border-block-end:none}.description-list>dt,.description-list>.description-list__term{font-family:var(--description-list-term-font-family);font-size:var(--description-list-term-font-size);font-weight:var(--description-list-term-font-weight);line-height:var(--description-list-term-line-height);letter-spacing:var(--description-list-term-letter-spacing);color:var(--description-list-term-color);align-items:center;display:flex}@media (width>=768px){.description-list>dt,.description-list>.description-list__term{border-block-end-width:var(--description-list-border-width);border-block-end-style:var(--description-list-border-style);border-block-end-color:var(--description-list-border-color);border-inline-end-width:var(--description-list-border-width);border-inline-end-style:var(--description-list-border-style);border-inline-end-color:var(--description-list-border-color)}.description-list>dt:last-of-type,.description-list>.description-list__term:last-of-type{border-block-end:none}}.description-list>dd,.description-list>.description-list__details{font-family:var(--description-list-value-font-family);font-size:var(--description-list-value-font-size);font-weight:var(--description-list-value-font-weight);line-height:var(--description-list-value-line-height);color:var(--description-list-value-color)}
1
+ .description-list{border-width:var(--description-list-border-width);border-style:var(--description-list-border-style);border-color:var(--description-list-border-color);grid-template-columns:1fr;inline-size:100%;margin:0;display:grid}@media (width>=768px){.description-list{grid-template-columns:max-content 1fr}}.description-list>dt,.description-list>dd,.description-list>.description-list__term,.description-list>.description-list__details{padding-block:var(--description-list-cell-padding-block);padding-inline:var(--description-list-cell-padding-inline);margin:0}.description-list>dd,.description-list>.description-list__details{border-block-end-width:var(--description-list-border-width);border-block-end-style:var(--description-list-border-style);border-block-end-color:var(--description-list-border-color)}.description-list>dd:last-of-type,.description-list>.description-list__details:last-of-type{border-block-end:none}.description-list>dt,.description-list>.description-list__term{font-family:var(--description-list-term-font-family);font-size:var(--description-list-term-font-size);font-weight:var(--description-list-term-font-weight);line-height:var(--description-list-term-line-height);letter-spacing:var(--description-list-term-letter-spacing);color:var(--description-list-term-color);align-items:center;display:flex}@media (width>=768px){.description-list>dt,.description-list>.description-list__term{border-block-end-width:var(--description-list-border-width);border-block-end-style:var(--description-list-border-style);border-block-end-color:var(--description-list-border-color);border-inline-end-width:var(--description-list-border-width);border-inline-end-style:var(--description-list-border-style);border-inline-end-color:var(--description-list-border-color)}.description-list>dt:last-of-type,.description-list>.description-list__term:last-of-type{border-block-end:none}}.description-list>dd,.description-list>.description-list__details{font-family:var(--description-list-value-font-family);font-size:var(--description-list-value-font-size);font-weight:var(--description-list-value-font-weight);line-height:var(--description-list-value-line-height);color:var(--description-list-value-color)}
@@ -1 +1 @@
1
- .filter-bar{gap:var(--filter-bar-gap);flex-direction:column;display:flex}.filter-bar__search{inline-size:100%}.filter-bar__row{align-items:flex-end;column-gap:var(--filter-bar-column-gap);row-gap:var(--filter-bar-row-gap);flex-wrap:wrap;display:flex}.filter-bar__filters{flex:1 1 var(--filter-bar-column-min-inline-size);grid-template-columns:repeat(auto-fit, minmax(min(var(--filter-bar-column-min-inline-size), 100%), 1fr));column-gap:var(--filter-bar-column-gap);row-gap:var(--filter-bar-row-gap);min-inline-size:0;display:grid}.filter-bar__filter{min-inline-size:0}.filter-bar__actions{align-items:center;gap:var(--filter-bar-actions-gap);flex-wrap:wrap;flex:none;margin-inline-start:auto;display:flex}
1
+ .filter-bar{gap:var(--filter-bar-gap);flex-direction:column;display:flex}.filter-bar__search{inline-size:100%}.filter-bar__row{align-items:flex-end;column-gap:var(--filter-bar-column-gap);row-gap:var(--filter-bar-row-gap);flex-wrap:wrap;display:flex}.filter-bar__filters{flex:1 1 var(--filter-bar-column-min-inline-size);grid-template-columns:repeat(auto-fit, minmax(min(var(--filter-bar-column-min-inline-size), 100%), 1fr));column-gap:var(--filter-bar-column-gap);row-gap:var(--filter-bar-row-gap);min-inline-size:0;display:grid}.filter-bar__filter{min-inline-size:0}.filter-bar__actions{align-items:stretch;gap:var(--filter-bar-actions-gap);flex-direction:column;flex:100%;display:flex}.filter-bar__actions>*{inline-size:100%}@media (width>=768px){.filter-bar__actions{flex-flow:wrap;flex:none;align-items:center;margin-inline-start:auto}.filter-bar__actions>*{inline-size:auto}}
package/dist/highlight.js CHANGED
@@ -22,6 +22,7 @@ function c({ title: c, description: l, actions: u, media: d, mediaPosition: f =
22
22
  children: l
23
23
  }),
24
24
  u && /* @__PURE__ */ o(n, {
25
+ stack: "mobile",
25
26
  className: "highlight__actions",
26
27
  children: u
27
28
  })
@@ -21,6 +21,7 @@ function i({ codes: i, columns: a = 2, labels: o, actions: s, className: c, id:
21
21
  }, t))
22
22
  }), /* @__PURE__ */ r(e, {
23
23
  gap: "sm",
24
+ stack: "mobile",
24
25
  className: "recovery-codes__actions",
25
26
  children: [/* @__PURE__ */ n(t, {
26
27
  value: () => i.join("\n"),
package/dist/sheet.js CHANGED
@@ -12,17 +12,17 @@ function c({ className: e, ...t }) {
12
12
  ...t
13
13
  });
14
14
  }
15
- function l({ open: i, onOpenChange: l, side: u = "right", title: d, titleHidden: f = !1, description: p, footer: m, children: h, closeLabel: g = "Cerrar", trigger: _, container: v, onAnimationEndCapture: y, className: b, ...x }) {
15
+ function l({ open: i, onOpenChange: l, side: u = "right", title: d, titleHidden: f = !1, description: p, footer: m, children: h, closeLabel: g = "Cerrar", hideClose: _ = !1, trigger: v, container: y, onAnimationEndCapture: b, className: x, ...S }) {
16
16
  return /* @__PURE__ */ o(s.Root, {
17
17
  open: i,
18
18
  onOpenChange: (e) => l(e),
19
- children: [_ && /* @__PURE__ */ a(s.Trigger, { render: _ }), /* @__PURE__ */ o(s.Portal, {
20
- container: v,
19
+ children: [v && /* @__PURE__ */ a(s.Trigger, { render: v }), /* @__PURE__ */ o(s.Portal, {
20
+ container: y,
21
21
  children: [/* @__PURE__ */ a(r, { className: "sheet__overlay" }), /* @__PURE__ */ o(s.Popup, {
22
- className: ["sheet", b].filter(Boolean).join(" "),
22
+ className: ["sheet", x].filter(Boolean).join(" "),
23
23
  "data-side": u,
24
- onAnimationEndCapture: y,
25
- ...x,
24
+ onAnimationEndCapture: b,
25
+ ...S,
26
26
  children: [
27
27
  /* @__PURE__ */ o(n, {
28
28
  layout: "stacked",
@@ -35,7 +35,7 @@ function l({ open: i, onOpenChange: l, side: u = "right", title: d, titleHidden:
35
35
  children: p
36
36
  })]
37
37
  }),
38
- /* @__PURE__ */ a(s.Close, {
38
+ !_ && /* @__PURE__ */ a(s.Close, {
39
39
  className: "sheet__close",
40
40
  render: /* @__PURE__ */ a(t, { label: g })
41
41
  }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@studiolxd/brand",
3
- "version": "38.13.0",
3
+ "version": "38.15.0",
4
4
  "description": "El sistema de diseño de Studio LXD: componentes React, tokens y documentación de la suite SLXD.",
5
5
  "repository": {
6
6
  "type": "git",