@studiolxd/brand 49.2.0 → 49.3.1
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 +50 -0
- package/dist/_types/molecules/ConversationList/ConversationList.d.ts +8 -0
- package/dist/_types/molecules/EmptyState/EmptyState.d.ts +5 -1
- package/dist/_types/organisms/DataTable/DataTable.d.ts +9 -1
- package/dist/brand.css +13 -1
- package/dist/conversation-list.js +21 -20
- package/dist/data-table.js +151 -150
- package/dist/link.css +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,56 @@ 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.3.1] — 2026-09-17
|
|
11
|
+
|
|
12
|
+
> **Patch.** La v49.0.1 estrechó a `:where(.link)` el `inline-size: fit-content` que evita
|
|
13
|
+
> que un enlace suelto se estire dentro de un `Stack` — necesario para no encoger el `<a>`
|
|
14
|
+
> que es pieza de otro componente (`menu__item`, `card`…). Pero dejó fuera el `<a>` de un
|
|
15
|
+
> router de Server Component sin `class="link"` (el `Link` de next-intl, p. ej., que en RSC
|
|
16
|
+
> no admite `render` sobre el `Link` de brand sin romper el prerender): el «← Volver» sobre
|
|
17
|
+
> un `PageIntro` seguía necesitando un `Inline` envolvente para no estirar su subrayado por
|
|
18
|
+
> toda la página.
|
|
19
|
+
|
|
20
|
+
### El arreglo
|
|
21
|
+
|
|
22
|
+
Nueva regla en `Link.css`, `:where(.stack > a:not([class]))`, aparte de `:where(.link)`:
|
|
23
|
+
solo alcanza al `<a>` que es hijo DIRECTO de un `Stack` y no lleva ninguna clase. El `<a>`
|
|
24
|
+
que es pieza de otro componente trae siempre su propia clase BEM (barrido en la v49.0.1),
|
|
25
|
+
así que queda fuera sin tocarlo. Story de contrato nueva (`tags: ['!dev']`) en
|
|
26
|
+
`Atoms/Stack` — «enlace suelto sin clase, hijo directo de un Stack, no se estira» — con el
|
|
27
|
+
caso del «← Volver» sobre un `PageIntro` dentro de un `Stack align="stretch"`.
|
|
28
|
+
|
|
29
|
+
## [49.3.0] — 2026-09-17
|
|
30
|
+
|
|
31
|
+
> **Minor.** Norma de redacción cerrada para el estado vacío: `EmptyState.title` nunca
|
|
32
|
+
> lleva punto, ni siquiera cuando el aviso son dos frases —esa se parte entre `title` y
|
|
33
|
+
> `description`—, y `DataTable`/`ConversationList` reciben `emptyDescription` para poder
|
|
34
|
+
> hacer esa partición desde fuera.
|
|
35
|
+
|
|
36
|
+
### El porqué
|
|
37
|
+
|
|
38
|
+
La regla de Redacción ya decía que `title` no lleva punto y que `description` sí, pero no
|
|
39
|
+
cerraba el caso de un aviso de dos frases («Aún no hay perfiles. Crea uno para recibir
|
|
40
|
+
avisos de licitaciones que encajen con el perfil.»): sin una norma explícita, ese texto
|
|
41
|
+
podía acabar entero en `title`, con un punto interior y dos frases donde solo cabe un
|
|
42
|
+
rótulo. Y aunque la norma estuviera clara, `DataTable` y `ConversationList` —los dos únicos
|
|
43
|
+
componentes que pintan `EmptyState` por dentro— solo exponían `emptyMessage`: no había
|
|
44
|
+
manera de pasarles la segunda frase aunque el consumidor la tuviera.
|
|
45
|
+
|
|
46
|
+
### El arreglo
|
|
47
|
+
|
|
48
|
+
`Foundations/Redacción` fija la partición: una sola frase va entera en `title`, sin punto;
|
|
49
|
+
un aviso de dos frases pone la primera en `title` (sin punto) y el resto en `description`
|
|
50
|
+
(con punto), nunca las dos en el título. `EmptyState.mdx` y el JSDoc de `EmptyState.title`
|
|
51
|
+
remiten a la regla.
|
|
52
|
+
|
|
53
|
+
`DataTable` y `ConversationList` suman `emptyDescription?: string`, sin default de
|
|
54
|
+
catálogo —es de producto, no de cromo—, que llega tal cual a `EmptyState.description`
|
|
55
|
+
junto al `emptyMessage` de siempre como `title`. Story «Vacío con descripción» y test de
|
|
56
|
+
contrato en los dos. De paso, el fixture de textos en inglés de Storybook traía
|
|
57
|
+
`dataTable.empty: 'No results.'` con un punto que incumplía la propia regla del `title`
|
|
58
|
+
que pinta: pasa a `'No results'`.
|
|
59
|
+
|
|
10
60
|
## [49.2.0] — 2026-09-16
|
|
11
61
|
|
|
12
62
|
> **Minor.** `CommandPalette` deja de ser dueña exclusiva de su consulta: `onQueryChange`
|
|
@@ -68,6 +68,14 @@ export interface ConversationListProps extends Omit<React.ComponentPropsWithoutR
|
|
|
68
68
|
* ven dos—. Solo se lee con la lista vacía.
|
|
69
69
|
*/
|
|
70
70
|
emptyMessage?: string;
|
|
71
|
+
/**
|
|
72
|
+
* Segunda frase del `EmptyState` que la lista pinta ella misma, opcional y
|
|
73
|
+
* **sin default de catálogo**: es de producto, no de cromo, así que solo se
|
|
74
|
+
* pinta cuando esta lista tiene algo propio que añadir tras `emptyMessage`.
|
|
75
|
+
* Termina en punto (ver Foundations → Redacción); `emptyMessage` sigue
|
|
76
|
+
* siendo el rótulo, nunca lleva punto.
|
|
77
|
+
*/
|
|
78
|
+
emptyDescription?: string;
|
|
71
79
|
/**
|
|
72
80
|
* `title` del `Alert` de error. **Sin default**: sin él, sale de
|
|
73
81
|
* `conversationList.error`, y solo se lee cuando hay `error`.
|
|
@@ -5,7 +5,11 @@ export interface EmptyStateAction {
|
|
|
5
5
|
href?: string;
|
|
6
6
|
}
|
|
7
7
|
export interface EmptyStateProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
8
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* El rótulo del estado: sin punto, nunca dos frases (ver Foundations →
|
|
10
|
+
* Redacción). Un aviso de dos frases se parte: la primera aquí, el resto en
|
|
11
|
+
* `description`.
|
|
12
|
+
*/
|
|
9
13
|
title: string;
|
|
10
14
|
/** La frase que lo explica, opcional: termina en punto (ver Foundations → Redacción). */
|
|
11
15
|
description?: string;
|
|
@@ -105,6 +105,14 @@ export interface DataTableProps<TData, TValue> {
|
|
|
105
105
|
* nadie»), que un catálogo común no puede saber.
|
|
106
106
|
*/
|
|
107
107
|
emptyMessage?: string;
|
|
108
|
+
/**
|
|
109
|
+
* Segunda frase del estado vacío, opcional y **sin default de catálogo**:
|
|
110
|
+
* es de producto, no de cromo, así que solo se pinta cuando esta pantalla
|
|
111
|
+
* tiene algo propio que añadir tras `emptyMessage`. Termina en punto (ver
|
|
112
|
+
* Foundations → Redacción); `emptyMessage` sigue siendo el rótulo, nunca
|
|
113
|
+
* lleva punto.
|
|
114
|
+
*/
|
|
115
|
+
emptyDescription?: string;
|
|
108
116
|
isLoading?: boolean;
|
|
109
117
|
pagination?: DataTableServerPagination;
|
|
110
118
|
headerLabels?: DataTableHeaderLabels;
|
|
@@ -120,4 +128,4 @@ export interface DataTableProps<TData, TValue> {
|
|
|
120
128
|
* `BrandMessagesProvider`, y los de sus piezas de los suyos (`table`,
|
|
121
129
|
* `pagination`). Las props de texto siguen ahí como anulación puntual.
|
|
122
130
|
*/
|
|
123
|
-
export declare function DataTable<TData, TValue>({ columns, data, ariaLabel, ariaLabelledBy, searchColumnId, search, searchPlaceholder, searchClearLabel, toolbar, footerActions, pageSize, emptyMessage, isLoading, pagination, headerLabels, paginationLabels, className, }: DataTableProps<TData, TValue>): import("react/jsx-runtime").JSX.Element;
|
|
131
|
+
export declare function DataTable<TData, TValue>({ columns, data, ariaLabel, ariaLabelledBy, searchColumnId, search, searchPlaceholder, searchClearLabel, toolbar, footerActions, pageSize, emptyMessage, emptyDescription, isLoading, pagination, headerLabels, paginationLabels, className, }: DataTableProps<TData, TValue>): import("react/jsx-runtime").JSX.Element;
|