@studiolxd/brand 49.23.0 → 49.23.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 CHANGED
@@ -7,6 +7,26 @@ 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.23.1] — 2026-10-04
11
+
12
+ > **Patch.** `appHeader` pasa a ser **opcional** en `BrandMessages`. En 49.23.0 entró obligatorio y un
13
+ > catálogo tipado estricto —un literal pasado a `BrandMessagesProvider` sin conversión, como el de
14
+ > `public-shell` en slxd— dejaba de compilar aunque no usara el logo: una minor no puede romper la
15
+ > compilación de nadie. Si ya declaraste `appHeader`, no hay que tocar nada.
16
+
17
+ - `BrandMessages.appHeader?` y `AppHeaderMessages.logo?`: solo hacen falta si algún `AppHeader` lleva
18
+ `logo` sin `logoLabel`.
19
+ - **Si ese caso llega sin `appHeader.logo` en el catálogo, `AppHeader` lanza** («el catálogo montado no
20
+ trae «appHeader.logo»»), igual que cualquier otra clave ausente: no hay castellano de respaldo y un
21
+ enlace sin nombre accesible tiene que verse en desarrollo. Documentado en `AppHeader` §
22
+ «Internacionalización».
23
+ - `BrandMessagesReader` lee los espacios opcionales sin `undefined` en el tipo devuelto (tipo nuevo
24
+ `BrandMessagesNamespace`); para los espacios obligatorios no cambia nada.
25
+ - Test de tipos (`BrandMessages.types.test.ts`): compila con el compilador de TypeScript un catálogo
26
+ sin `appHeader` contra `BrandMessages`, con un caso de control que sí debe fallar.
27
+ - Revisado el resto de 49.23.0: no añadió ningún otro campo obligatorio a tipos públicos (las props
28
+ nuevas de `AppHeader` ya eran opcionales).
29
+
10
30
  ## [49.23.0] — 2026-10-04
11
31
 
12
32
  > **Minor.** Ranura `logo` en `AppHeader`, a petición de Homenize. Espacio nuevo `appHeader` en
@@ -4,10 +4,10 @@ var n = e(null);
4
4
  function r(e) {
5
5
  let r = t(n);
6
6
  return function(t, n) {
7
- if (n !== void 0) return n;
7
+ if (n != null) return n;
8
8
  if (!r) throw Error(`@studiolxd/brand: falta el texto «${String(e)}.${String(t)}» y no hay catálogo montado. Monta <BrandMessagesProvider> en la raíz de la aplicación con los textos del idioma vigente, o pasa la prop suelta en este uso concreto.`);
9
9
  let i = r[e]?.[t];
10
- if (i === void 0) throw Error(`@studiolxd/brand: el catálogo montado no trae «${String(e)}.${String(t)}».`);
10
+ if (i == null) throw Error(`@studiolxd/brand: el catálogo montado no trae «${String(e)}.${String(t)}».`);
11
11
  return i;
12
12
  };
13
13
  }
@@ -143,7 +143,13 @@ export interface BrandMessages {
143
143
  menuButton: MenuButtonMessages;
144
144
  appRoot: AppRootMessages;
145
145
  appShell: AppShellMessages;
146
- appHeader: AppHeaderMessages;
146
+ /**
147
+ * **Opcional** (desde v49.23.1): solo lo lee el `AppHeader` cuando lleva
148
+ * `logo` y no recibe `logoLabel`. En v49.23.0 entró obligatorio y rompía la
149
+ * compilación de catálogos que no usan el logo. Si un `AppHeader` lo
150
+ * necesita y falta, lanza como cualquier otra clave ausente.
151
+ */
152
+ appHeader?: AppHeaderMessages;
147
153
  sidebar: SidebarMessages;
148
154
  sidebarNav: SidebarNavMessages;
149
155
  siteNav: SiteNavMessages;
@@ -11,8 +11,14 @@ export declare const BrandMessagesContext: import("react").Context<BrandMessages
11
11
  * consumidor la pasa.
12
12
  */
13
13
  export interface BrandMessagesReader<K extends keyof BrandMessages> {
14
- <N extends keyof BrandMessages[K]>(key: N, override?: BrandMessages[K][N]): BrandMessages[K][N];
14
+ <N extends keyof BrandMessagesNamespace<K>>(key: N, override?: BrandMessagesNamespace<K>[N]): NonNullable<BrandMessagesNamespace<K>[N]>;
15
15
  }
16
+ /**
17
+ * El espacio de un componente, sin el `undefined` de los espacios opcionales
18
+ * (`appHeader`): el lector nunca devuelve `undefined`, porque si el texto
19
+ * falta lanza.
20
+ */
21
+ export type BrandMessagesNamespace<K extends keyof BrandMessages> = NonNullable<BrandMessages[K]>;
16
22
  /**
17
23
  * El lector del espacio de un componente. Se llama **en el punto donde el
18
24
  * texto se pinta**, no al principio del render: así un componente que no
@@ -1,5 +1,5 @@
1
1
  export { BrandMessagesProvider } from './BrandMessagesProvider';
2
2
  export type { BrandMessagesProviderProps } from './BrandMessagesProvider';
3
3
  export { useBrandMessages } from './BrandMessagesContext';
4
- export type { BrandMessagesReader } from './BrandMessagesContext';
4
+ export type { BrandMessagesReader, BrandMessagesNamespace } from './BrandMessagesContext';
5
5
  export type { BrandMessages, PaginationMessages, TableMessages, DataTableMessages, InputFieldMessages, PasswordFieldMessages, SelectMessages, MultiSelectMessages, NumberInputMessages, OtpInputMessages, InputPhoneMessages, AsyncSelectMessages, AsyncMultiSelectMessages, DocsSearchMessages, SearchFormMessages, SiteSearchMessages, FilterBarMessages, CalendarMessages, DatePickerMessages, ColorPickerMessages, TimeSelectMessages, FileUploadMessages, ImageCropDialogMessages, AvatarUploadMessages, ModalMessages, SheetMessages, ConfirmDialogMessages, AlertMessages, BannerMessages, ToasterMessages, ConsentMessages, CommandPaletteMessages, AppLauncherMessages, FloatingDockMessages, NotificationButtonMessages, NotificationPanelMessages, MenuButtonMessages, AppRootMessages, AppShellMessages, AppHeaderMessages, SidebarMessages, SidebarNavMessages, SiteNavMessages, SiteHeaderMessages, UserMenuMessages, OrgSwitcherMessages, BreadcrumbMessages, TableOfContentsMessages, PrevNextNavMessages, PublicPageShellMessages, OnboardingShellMessages, CopyMessages, CodeBlockMessages, DotsButtonMessages, ProgressBarMessages, SpinnerMessages, SliderMessages, TreeViewMessages, ClockWidgetMessages, HeatmapMessages, OrgChartMessages, PlanningGridMessages, RecurrenceFieldMessages, TimelineMessages, UptimeBarsMessages, ChartMessages, StepperMessages, CarouselMessages, LanguageSwitcherMessages, ProjectCardMessages, LegalFooterMessages, CalendarRosterMessages, CalendarPlannerMessages, NotificationListMessages, MessageComposerMessages, ConversationListMessages, ConversationThreadMessages, TypingIndicatorMessages, AnnotationThreadMessages, ChatShellMessages, UntrustedTextMessages, ConnectorRequestSummaryMessages, ConnectorConsentMessages, ConnectorSignInMessages, ConnectorExternalSignInMessages, ConnectorRejectionMessages, } from './BrandMessages';
@@ -12,8 +12,11 @@ export type AppHeaderLogoLinkProps = {
12
12
  * que `siteHeader.logo`.
13
13
  */
14
14
  export interface AppHeaderMessages {
15
- /** Texto accesible del enlace del logotipo. */
16
- logo: string;
15
+ /**
16
+ * Texto accesible del enlace del logotipo. Opcional, como el espacio entero:
17
+ * solo hace falta si algún `AppHeader` lleva `logo` sin `logoLabel`.
18
+ */
19
+ logo?: string;
17
20
  }
18
21
  export interface AppHeaderProps {
19
22
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@studiolxd/brand",
3
- "version": "49.23.0",
3
+ "version": "49.23.1",
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",