sass-cms-template-common 0.0.16 → 0.0.18

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/dist/index.d.ts CHANGED
@@ -13,6 +13,13 @@ import { Theme } from '@mui/material/styles';
13
13
  * Navegación lateral por defecto.
14
14
  * `module` debe coincidir exactamente con `module` en POST /auth/modulesAvailable
15
15
  * y con las claves en `messages.navigation`.
16
+ *
17
+ * Convención de destino por ítem:
18
+ * - `jsp: true` → admin viejo (OpenCMS). Abre con form POST autenticado a
19
+ * `cmsBaseUrl` (dev.cms-medios.com), en pestaña nueva. Tiene prioridad.
20
+ * - `legacy: true` (sin `jsp`) → Angular master (`legacyBaseUrl`). Enlace en
21
+ * pestaña nueva.
22
+ * - sin flags → ruta interna del propio gestor React (misma pestaña).
16
23
  */
17
24
  export declare const ACCOUNT_NAV_BLOCKS: NavBlock[];
18
25
 
@@ -35,7 +42,7 @@ export declare type AppMessageNode = string | {
35
42
  /** Árbol de mensajes del gestor (namespaces → claves → string anidable). */
36
43
  export declare type AppMessages = Record<string, AppMessageNode>;
37
44
 
38
- export declare function AppShell({ pathname, sites, children, notificationUnreadCount, notificationsData, copilotSuggestionsHref, onEditorialSeeMore, onEditorialRemindLater, profile, primaryLogo, brandLogo, selectedPublicationId, getPublicationHref, resolvePublicationImageUrl, profileAvatarOptions, legacyBaseUrl, cmsBaseUrl, legacySession, newContentGroups, previewFormats, operationPermissions, isAdmin, onNewContentSelect, onPreviewSelect, LinkComponent, permissions, locale, language, messages, appMessages, baseUrl, profileServices, }: AppShellProps): JSX.Element;
45
+ export declare function AppShell({ pathname, sites, children, notificationUnreadCount, notificationsData, copilotSuggestionsHref, onEditorialSeeMore, onEditorialRemindLater, profile, primaryLogo, brandLogo, selectedPublicationId, getPublicationHref, resolvePublicationImageUrl, profileAvatarOptions, legacyBaseUrl, cmsBaseUrl, legacySession, previewFormats, operationPermissions, isAdmin, onPreviewSelect, LinkComponent, permissions, locale, language, messages, appMessages, baseUrl, profileServices, }: AppShellProps): JSX.Element;
39
46
 
40
47
  export declare type AppShellProps = {
41
48
  pathname: string;
@@ -65,16 +72,12 @@ export declare type AppShellProps = {
65
72
  cmsBaseUrl?: string;
66
73
  /** Sesión para el redirect al admin viejo (token, sitio, publicación, usuario). */
67
74
  legacySession?: LegacyAdminSession;
68
- /** Columnas/ítems del menú "Nuevo". Por defecto, la estructura del CMS legacy. */
69
- newContentGroups?: NewContentGroup[];
70
75
  /** Formatos del menú de previsualización. Por defecto, Desktop/Mobile/Tablet. */
71
76
  previewFormats?: PreviewFormat[];
72
77
  /** Operaciones concedidas al usuario (`POST /auth/permissions`). */
73
78
  operationPermissions?: string[];
74
- /** Si el usuario es administrador (ve todos los ítems del menú "Nuevo"). */
79
+ /** Si el usuario es administrador (ve todos los ítems restringidos por permiso). */
75
80
  isAdmin?: boolean;
76
- /** Fallback (sin sesión) del clic en un ítem del menú "Nuevo" (recibe su `id`). */
77
- onNewContentSelect?: (itemId: string) => void;
78
81
  /** Integración: clic en un formato de previsualización (recibe su `id`). */
79
82
  onPreviewSelect?: (formatId: string) => void;
80
83
  LinkComponent?: CmsLinkComponent;
@@ -304,7 +307,7 @@ declare type BaseFieldConfig = {
304
307
  * despliega opciones adicionales. Si no hay opciones visibles, la flecha se
305
308
  * oculta automáticamente.
306
309
  */
307
- export declare function BtnDropdown({ titleButton, options, icon, onAction, disabled, enableButton, whiteBtn, showDropdownOptions, testId, }: BtnDropdownProps): JSX.Element;
310
+ export declare function BtnDropdown({ titleButton, options, icon, onAction, disabled, enableButton, whiteBtn, showDropdownOptions, openUpward, testId, }: BtnDropdownProps): JSX.Element;
308
311
 
309
312
  export declare type BtnDropdownProps = {
310
313
  /** Texto o nodo (ya traducido) del botón principal. */
@@ -323,6 +326,11 @@ export declare type BtnDropdownProps = {
323
326
  whiteBtn?: boolean;
324
327
  /** Muestra u oculta la flecha del desplegable. Por defecto `true`. */
325
328
  showDropdownOptions?: boolean;
329
+ /**
330
+ * Abre el menú hacia arriba (útil cuando el botón vive al pie de un footer o
331
+ * pegado al margen inferior). Por defecto `false` (abre hacia abajo).
332
+ */
333
+ openUpward?: boolean;
326
334
  /** Valor base para los `data-testid`. */
327
335
  testId?: string;
328
336
  };
@@ -2003,22 +2011,48 @@ export declare interface CmsResponseLike {
2003
2011
  * panel lateral. Replica el comportamiento del `app-search` del Angular legacy
2004
2012
  * (incluido el modo `collapsible` que crece al enfocar y colapsa al vaciarse).
2005
2013
  *
2006
- * Es presentacional y controlado: el texto y los textos visibles vienen por
2007
- * props; la decisión de qué abrir en "avanzadas" vive en el gestor.
2014
+ * Con la prop `chips` pasa a **buscador de chips**: cada término escrito se
2015
+ * confirma como chip con `;` (sin buscar) o con Enter (que además ejecuta la
2016
+ * búsqueda), y cada chip se muestra dentro del campo con su "x" para quitarlo
2017
+ * (NAA-4820). Es presentacional y controlado: el texto, los chips y los textos
2018
+ * visibles vienen por props; la decisión de qué abrir en "avanzadas" y cómo
2019
+ * filtrar vive en el gestor.
2008
2020
  */
2009
- export declare function CmsSearchField({ value, onChange, onSearch, onClear, placeholder, showIcon, showAdvanced, advancedActive, onAdvancedClick, collapsible, width, grow, maxWidth, endGap, advancedAriaLabel, clearAriaLabel, ariaLabel, testId, }: CmsSearchFieldProps): JSX.Element;
2021
+ export declare function CmsSearchField({ value, onChange, onSearch, onClear, placeholder, chips, onChipsChange, chipSeparator, addPlaceholder, removeChipAriaLabel, showIcon, showAdvanced, advancedActive, onAdvancedClick, collapsible, width, grow, maxWidth, endGap, startGap, advancedAriaLabel, clearAriaLabel, ariaLabel, testId, }: CmsSearchFieldProps): JSX.Element;
2010
2022
 
2011
2023
  export declare type CmsSearchFieldProps = {
2012
- /** Valor del texto de búsqueda (controlado). */
2024
+ /** Valor del texto de búsqueda en curso (controlado). */
2013
2025
  value: string;
2014
2026
  /** Callback en cada cambio del texto. */
2015
2027
  onChange: (value: string) => void;
2016
- /** Callback al presionar Enter (búsqueda). */
2017
- onSearch?: (value: string) => void;
2018
- /** Callback al limpiar el campo. Si no se pasa, igual limpia `value`. */
2028
+ /**
2029
+ * Callback al ejecutar la búsqueda. En modo texto simple recibe el `value`
2030
+ * (string) al presionar Enter. En modo chips recibe la **lista de chips
2031
+ * vigente** (string[]) cuando hay que aplicar la búsqueda: al presionar Enter,
2032
+ * al quitar un chip y al limpiar. Con `;` NO se dispara (los chips se agregan y
2033
+ * esperan; ver §NAA-4820).
2034
+ */
2035
+ onSearch?: (value: string | string[]) => void;
2036
+ /** Callback al limpiar el campo. Si no se pasa, igual limpia `value` (y chips). */
2019
2037
  onClear?: () => void;
2020
2038
  /** Placeholder del input (ya traducido y modificable por el consumidor). */
2021
2039
  placeholder?: string;
2040
+ /**
2041
+ * Modo "chips": lista controlada de términos de búsqueda ya confirmados. Si se
2042
+ * pasa (aunque sea `[]`), el buscador funciona como buscador de chips: cada
2043
+ * término escrito se confirma como chip con `;` (sin buscar) o con Enter (que
2044
+ * además ejecuta la búsqueda). Los chips se muestran dentro del campo, cada uno
2045
+ * con su "x" para quitarlo. Sin esta prop, el campo es un buscador de texto simple.
2046
+ */
2047
+ chips?: string[];
2048
+ /** Callback con la nueva lista de chips (al agregar o quitar). */
2049
+ onChipsChange?: (chips: string[]) => void;
2050
+ /** Tecla que confirma un chip sin ejecutar la búsqueda. Por defecto `;`. */
2051
+ chipSeparator?: string;
2052
+ /** Placeholder cuando ya hay chips (ya traducido). Por defecto el de la lib ("Agregar…"). */
2053
+ addPlaceholder?: string;
2054
+ /** `aria-label` del botón de quitar un chip. */
2055
+ removeChipAriaLabel?: string;
2022
2056
  /** Muestra la lupa a la izquierda. Por defecto `true`. */
2023
2057
  showIcon?: boolean;
2024
2058
  /** Muestra el botón de opciones avanzadas (tres puntos). Por defecto `false`. */
@@ -2045,6 +2079,13 @@ export declare type CmsSearchFieldProps = {
2045
2079
  maxWidth?: number | string;
2046
2080
  /** Espacio mínimo a la derecha cuando `grow` está activo. Por defecto `40`. */
2047
2081
  endGap?: number;
2082
+ /**
2083
+ * Separación fija a la izquierda (px) cuando `grow` está activo. Si se pasa, el
2084
+ * buscador **llena** el espacio restante dejando este hueco respecto del control
2085
+ * previo (p. ej. un filtro), en reposo y expandido. Si se omite, en reposo se
2086
+ * alinea a la derecha con ancho `width` y crece al enfocar.
2087
+ */
2088
+ startGap?: number;
2048
2089
  /** `aria-label` del botón de avanzadas. */
2049
2090
  advancedAriaLabel?: string;
2050
2091
  /** `aria-label` del botón de limpiar. */
@@ -3048,10 +3089,34 @@ export declare interface DashboardNotificationsResponse extends CmsResponse {
3048
3089
  newsTask?: DashboardNewsTask[];
3049
3090
  /** Actividades vencidas o por vencer. */
3050
3091
  expireTask?: DashboardExpireTask[];
3092
+ /** Avisos de desasignación de tarea de planning (`person_remove`). */
3093
+ unassignTask?: DashboardUnassignTask[];
3051
3094
  /** Oportunidades editoriales copilot (hasta 3, por `score` desc). NAA-4645. */
3052
3095
  copilot?: DashboardCopilotOpportunity[];
3053
3096
  }
3054
3097
 
3098
+ /**
3099
+ * Aviso de desasignación de tarea de planning presente en POST
3100
+ * /dashboard/notification (array `unassignTask`, mismos campos que `newsTask`).
3101
+ * El back lo despacha solo cuando corresponde (cambio de responsable). El autor
3102
+ * de la desasignación es OPCIONAL: puede venir como `userName` o `userCreation`,
3103
+ * con `userLogin` entre paréntesis. Si no llega ninguno, se usa el texto genérico.
3104
+ */
3105
+ export declare interface DashboardUnassignTask {
3106
+ id?: string;
3107
+ /** Título de la tarea de la que se desasignó al usuario. */
3108
+ title?: string;
3109
+ /** Autor de la desasignación (nombre). Opcional. */
3110
+ userName?: string;
3111
+ userCreation?: string;
3112
+ /** Login del autor (se muestra entre paréntesis). Opcional. */
3113
+ userLogin?: string;
3114
+ /** Timestamp del aviso (epoch ms o `{ time }`). */
3115
+ timeStamp?: unknown;
3116
+ isRead?: boolean;
3117
+ [key: string]: unknown;
3118
+ }
3119
+
3055
3120
  /** Evento de encoder de video presente en POST /dashboard/notification. */
3056
3121
  export declare interface DashboardVideoNotification {
3057
3122
  actionId?: number;
@@ -3292,6 +3357,9 @@ export declare const enMessages: {
3292
3357
  readonly assignedYesterday: "Assigned yesterday";
3293
3358
  readonly assignedOn: "Assigned on";
3294
3359
  readonly expires: "Due";
3360
+ readonly unassignedText: "You are no longer responsible for the task";
3361
+ readonly unassignedRemovedYouFrom: "removed you from the task";
3362
+ readonly unassignedNoLongerResponsible: "You are no longer responsible.";
3295
3363
  readonly editorialOpportunityLabel: "Editorial opportunity";
3296
3364
  readonly editorialOpportunityText: "{count} topics require your attention";
3297
3365
  readonly editorialOpportunityTop: "Top";
@@ -3304,8 +3372,10 @@ export declare const enMessages: {
3304
3372
  };
3305
3373
  readonly search: {
3306
3374
  readonly placeholder: "Search…";
3375
+ readonly addPlaceholder: "Add…";
3307
3376
  readonly inputAriaLabel: "Search";
3308
3377
  readonly clearAriaLabel: "Clear search";
3378
+ readonly removeChipAriaLabel: "Remove term";
3309
3379
  readonly advancedAriaLabel: "Advanced search";
3310
3380
  readonly title: "Advanced search";
3311
3381
  readonly apply: "Apply";
@@ -3513,6 +3583,9 @@ export declare const esMessages: {
3513
3583
  assignedYesterday: string;
3514
3584
  assignedOn: string;
3515
3585
  expires: string;
3586
+ unassignedText: string;
3587
+ unassignedRemovedYouFrom: string;
3588
+ unassignedNoLongerResponsible: string;
3516
3589
  editorialOpportunityLabel: string;
3517
3590
  editorialOpportunityText: string;
3518
3591
  editorialOpportunityTop: string;
@@ -3525,8 +3598,10 @@ export declare const esMessages: {
3525
3598
  };
3526
3599
  search: {
3527
3600
  placeholder: string;
3601
+ addPlaceholder: string;
3528
3602
  inputAriaLabel: string;
3529
3603
  clearAriaLabel: string;
3604
+ removeChipAriaLabel: string;
3530
3605
  advancedAriaLabel: string;
3531
3606
  title: string;
3532
3607
  apply: string;
@@ -3969,6 +4044,14 @@ export declare function getProfileAvatarSrc(profile: ProfileGetResponse, options
3969
4044
 
3970
4045
  export declare function getProfileDisplayName(profile: ProfileGetResponse): string;
3971
4046
 
4047
+ /**
4048
+ * Nombre y apellido del usuario, SIN el nickname/login. Para el título del
4049
+ * desplegable de perfil, donde no debe aparecer el nickname (a diferencia de
4050
+ * `getProfileDisplayName`, que puede caer en `fullName` —que incluye el
4051
+ * nickname— o en `userName`). Solo cae a `userName` si no hay nombre ni apellido.
4052
+ */
4053
+ export declare function getProfileFullName(profile: ProfileGetResponse): string;
4054
+
3972
4055
  /**
3973
4056
  * Hora actual del sitio (equivalente al `getFormattedRedactionTimeUTC` del CMS
3974
4057
  * Angular): "ahora" formateado en la zona de redacción de la publicación.
@@ -4525,6 +4608,15 @@ export declare type NavLinkItem = {
4525
4608
  accent?: 'ai';
4526
4609
  /** Si el href apunta al admin legacy (JSP/Angular), se prefija con `legacyBaseUrl`. */
4527
4610
  legacy?: boolean;
4611
+ /**
4612
+ * Si el href es una página del admin viejo JSP (OpenCMS). Estos NO se abren
4613
+ * como enlace directo: requieren el form POST autenticado
4614
+ * (`submitLegacyAdminPage`) al endpoint `adminBack/login` del CMS
4615
+ * (`cmsBaseUrl`, p. ej. `https://dev.cms-medios.com`), igual que el
4616
+ * `openExternalPage()` de cmsmedios. Abre en pestaña nueva. Tiene prioridad
4617
+ * sobre `legacy` (que apunta al Angular master).
4618
+ */
4619
+ jsp?: boolean;
4528
4620
  /**
4529
4621
  * Si la ruta del Angular master exige el id de publicación al final
4530
4622
  * (p. ej. `/admin/tags/:idPub`, `/admin/planning/:idPub`), se le agrega
@@ -5106,6 +5198,11 @@ export declare const notificationColors: {
5106
5198
  readonly bg: string;
5107
5199
  readonly on: string;
5108
5200
  };
5201
+ /** Desasignación de tarea (person_remove): mismo fondo/ícono que asignados. */
5202
+ readonly unassigned: {
5203
+ readonly bg: string;
5204
+ readonly on: string;
5205
+ };
5109
5206
  };
5110
5207
 
5111
5208
  /** Topic devuelto por notification/adminConfiguration (`{ name, value }`). */
@@ -6002,7 +6099,7 @@ export declare interface ProfileGetResponse {
6002
6099
  documentation: unknown[];
6003
6100
  }
6004
6101
 
6005
- export declare function ProfileMenu({ profile, avatarOptions, legacyBaseUrl, }: ProfileMenuProps): JSX.Element;
6102
+ export declare function ProfileMenu({ profile, avatarOptions, legacyBaseUrl, cmsBaseUrl, legacySession, operationPermissions, isAdmin, }: ProfileMenuProps): JSX.Element;
6006
6103
 
6007
6104
  export declare type ProfileMenuMessageKey = keyof CmsMessages['profileMenu'];
6008
6105
 
@@ -6011,6 +6108,22 @@ export declare type ProfileMenuProps = {
6011
6108
  avatarOptions?: ProfileAvatarOptions;
6012
6109
  /** Dominio del CMS Angular legacy para "Mi Perfil" / "Vista Webmaster". */
6013
6110
  legacyBaseUrl?: string;
6111
+ /** Origen del CMS (JSP) para el POST de auto-login de "Vista Webmaster". */
6112
+ cmsBaseUrl?: string;
6113
+ /**
6114
+ * Sesión para el redirect al admin viejo (token, sitio, publicación, usuario).
6115
+ * Con ella, "Vista Webmaster" hace el form POST de cmsmedios (auto-login); sin
6116
+ * ella, cae a un enlace simple.
6117
+ */
6118
+ legacySession?: LegacyAdminSession;
6119
+ /**
6120
+ * Operaciones concedidas al usuario (`POST /auth/permissions`). Si se omite,
6121
+ * no se filtra por permisos (se muestra "Vista Webmaster"). Igual criterio que
6122
+ * el menú "Nuevo".
6123
+ */
6124
+ operationPermissions?: string[];
6125
+ /** Si el usuario es administrador (ve "Vista Webmaster" siempre). */
6126
+ isAdmin?: boolean;
6014
6127
  };
6015
6128
 
6016
6129
  /** Cuerpo de la respuesta de POST /profile/moduleAlerts/hide. */
@@ -6187,6 +6300,9 @@ export declare const ptMessages: {
6187
6300
  assignedYesterday: string;
6188
6301
  assignedOn: string;
6189
6302
  expires: string;
6303
+ unassignedText: string;
6304
+ unassignedRemovedYouFrom: string;
6305
+ unassignedNoLongerResponsible: string;
6190
6306
  editorialOpportunityLabel: string;
6191
6307
  editorialOpportunityText: string;
6192
6308
  editorialOpportunityTop: string;
@@ -6199,8 +6315,10 @@ export declare const ptMessages: {
6199
6315
  };
6200
6316
  search: {
6201
6317
  placeholder: string;
6318
+ addPlaceholder: string;
6202
6319
  inputAriaLabel: string;
6203
6320
  clearAriaLabel: string;
6321
+ removeChipAriaLabel: string;
6204
6322
  advancedAriaLabel: string;
6205
6323
  title: string;
6206
6324
  apply: string;
@@ -6391,8 +6509,12 @@ export declare const radii: {
6391
6509
  readonly sm: "8px";
6392
6510
  /** Ítems de menú. */
6393
6511
  readonly md: "10px";
6512
+ /** Flyout desplegable del menú lateral (submenús del Sidebar). */
6513
+ readonly flyout: "12px";
6394
6514
  /** Papers de menú (dropdowns). */
6395
6515
  readonly lg: "14px";
6516
+ /** Menús flotantes de cuenta (perfil): esquinas 16px. */
6517
+ readonly accountMenu: "16px";
6396
6518
  /** Píldoras grandes / menús redondeados (M3). */
6397
6519
  readonly xl: "28px";
6398
6520
  /** Diálogos / modales de confirmación. */
@@ -6787,10 +6909,12 @@ export declare const shadows: {
6787
6909
  readonly menu: "0px 1px 3px 0px rgba(0, 0, 0, 0.30), 0px 4px 8px 3px rgba(0, 0, 0, 0.15)";
6788
6910
  /** Paper suave y difuso (dropdowns genéricos). */
6789
6911
  readonly menuSoft: "0 10px 30px rgba(0, 0, 0, 0.18)";
6912
+ /** Menú flotante de cuenta (perfil): sombra difusa con tinte neutro (#191C20 al 18%). */
6913
+ readonly accountMenu: "0 10px 30px rgba(25, 28, 32, 0.18)";
6790
6914
  /** Desplegable de opciones (M3 Elevation Light/5): dos capas suaves. */
6791
6915
  readonly menuDropdown: "0px 4px 4px 0px rgba(0, 0, 0, 0.30), 0px 8px 12px 6px rgba(0, 0, 0, 0.15)";
6792
- /** Submenús flotantes del sidebar. */
6793
- readonly flyout: "0px 8px 16px rgba(0, 0, 0, 0.18)";
6916
+ /** Submenús flotantes del sidebar (flyout del menú lateral). */
6917
+ readonly flyout: "0 6px 12px rgba(0, 0, 0, 0.15), 0 2px 4px rgba(0, 0, 0, 0.10)";
6794
6918
  };
6795
6919
 
6796
6920
  export declare function Sidebar({ open, pathname, permissions, LinkComponent, legacyBaseUrl, selectedPublicationId, }: SidebarProps): JSX.Element;
@@ -6814,7 +6938,7 @@ export declare type SidebarProps = {
6814
6938
  * todo. El anclado se identifica por `item.module` y persiste vía
6815
6939
  * `profileServices.addPins`/`deletePins`/`getPins` (recurso de perfil).
6816
6940
  */
6817
- export declare function SidebarRail({ pathname, permissions, LinkComponent, legacyBaseUrl, selectedPublicationId, items, profileServices, }: SidebarRailProps): JSX.Element;
6941
+ export declare function SidebarRail({ pathname, permissions, LinkComponent, legacyBaseUrl, cmsBaseUrl, legacySession, selectedPublicationId, items, profileServices, }: SidebarRailProps): JSX.Element;
6818
6942
 
6819
6943
  /** Servicio de pines usado por el rail: solo necesita estos tres métodos. */
6820
6944
  export declare type SidebarRailPinService = Pick<CmsProfileServices, 'addPins' | 'deletePins' | 'getPins'>;
@@ -6823,8 +6947,12 @@ export declare type SidebarRailProps = {
6823
6947
  pathname: string;
6824
6948
  LinkComponent?: CmsLinkComponent;
6825
6949
  permissions: Array<NavItemPermissions>;
6826
- /** Dominio del admin legacy (JSP/Angular) para prefijar hrefs con `item.legacy`. */
6950
+ /** Dominio del Angular master para prefijar hrefs `legacy` (no `jsp`). */
6827
6951
  legacyBaseUrl?: string;
6952
+ /** Origen del CMS viejo (JSP) para el form POST de los ítems `jsp`. */
6953
+ cmsBaseUrl?: string;
6954
+ /** Sesión para el form POST al admin viejo (token, sitio, publicación, usuario). */
6955
+ legacySession?: LegacyAdminSession;
6828
6956
  /** Id de publicación activa; se agrega a los ítems legacy con `appendPublicationId`. */
6829
6957
  selectedPublicationId?: string;
6830
6958
  /** Ítems de navegación. Por defecto, `ACCOUNT_NAV_BLOCKS`. */
@@ -7232,7 +7360,7 @@ export declare interface ToastOptions {
7232
7360
  /** Severidad visual de un toast. */
7233
7361
  export declare type ToastSeverity = 'success' | 'error' | 'warning' | 'info';
7234
7362
 
7235
- export declare function TopBar({ sites, sidebarOpen, onToggleSidebar, notificationUnreadCount, notificationsData, copilotSuggestionsHref, onEditorialSeeMore, onEditorialRemindLater, profile, primaryLogo, brandLogo, selectedPublicationId, getPublicationHref, resolvePublicationImageUrl, profileAvatarOptions, legacyBaseUrl, cmsBaseUrl, legacySession, newContentGroups, previewFormats, operationPermissions, isAdmin, onNewContentSelect, onPreviewSelect, }: TopBarProps): JSX.Element;
7363
+ export declare function TopBar({ sites, sidebarOpen, onToggleSidebar, notificationUnreadCount, notificationsData, copilotSuggestionsHref, onEditorialSeeMore, onEditorialRemindLater, profile, primaryLogo, brandLogo, selectedPublicationId, getPublicationHref, resolvePublicationImageUrl, profileAvatarOptions, legacyBaseUrl, cmsBaseUrl, legacySession, previewFormats, operationPermissions, isAdmin, onPreviewSelect, }: TopBarProps): JSX.Element;
7236
7364
 
7237
7365
  export declare type TopBarMessageKey = keyof CmsMessages['topBar'];
7238
7366
 
@@ -7270,19 +7398,15 @@ export declare type TopBarProps = {
7270
7398
  * un enlace simple al CMS.
7271
7399
  */
7272
7400
  legacySession?: LegacyAdminSession;
7273
- /** Columnas/ítems del menú "Nuevo". Por defecto, la estructura del CMS legacy. */
7274
- newContentGroups?: NewContentGroup[];
7275
7401
  /** Formatos del menú de previsualización. Por defecto, Desktop/Mobile/Tablet. */
7276
7402
  previewFormats?: PreviewFormat[];
7277
7403
  /**
7278
- * Operaciones concedidas al usuario (`POST /auth/permissions`). Si se omite,
7279
- * no se filtra el menú "Nuevo" por permisos.
7404
+ * Operaciones concedidas al usuario (`POST /auth/permissions`). Filtran los
7405
+ * ítems del menú de perfil según permisos.
7280
7406
  */
7281
7407
  operationPermissions?: string[];
7282
- /** Si el usuario es administrador (ve todos los ítems del menú "Nuevo"). */
7408
+ /** Si el usuario es administrador (ve todos los ítems restringidos por permiso). */
7283
7409
  isAdmin?: boolean;
7284
- /** Fallback (sin sesión) del clic en un ítem del menú "Nuevo" (recibe su `id`). */
7285
- onNewContentSelect?: (itemId: string) => void;
7286
7410
  /** Integración: clic en un formato de previsualización (recibe su `id`). */
7287
7411
  onPreviewSelect?: (formatId: string) => void;
7288
7412
  };
@@ -7602,7 +7726,7 @@ export declare function useCurrentUserPhoto(): CurrentUserPhotoContextValue | nu
7602
7726
  * nombre y textos traducidos (es/en/pt). Reacciona al cambio de la prop `photo`;
7603
7727
  * para el usuario logueado, reacciona además al `CurrentUserPhotoProvider`.
7604
7728
  */
7605
- export declare function UserAvatar({ photo, description, username, size, showTooltip, inactive, cmsOrigin, crossOrigin, isCurrentUser, onClick, testId, }: UserAvatarProps): JSX.Element;
7729
+ export declare function UserAvatar({ photo, description, username, size, showTooltip, inactive, neutralFallback, transparentFallbackBg, cmsOrigin, crossOrigin, isCurrentUser, onClick, testId, }: UserAvatarProps): JSX.Element;
7606
7730
 
7607
7731
  export declare type UserAvatarMessageKey = keyof CmsMessages['userAvatar'];
7608
7732
 
@@ -7626,6 +7750,18 @@ export declare type UserAvatarProps = {
7626
7750
  * (fondo y ícono más grises). Por defecto `false`.
7627
7751
  */
7628
7752
  inactive?: boolean;
7753
+ /**
7754
+ * Usa el fallback neutro (fondo `m3.surfaceVariant` #E0E2EC + ícono
7755
+ * `m3.onSurfaceVariant` #43474E) en vez del azul tonal. Para el avatar de
7756
+ * cuenta del header/perfil. Sin efecto si hay foto o si `inactive`.
7757
+ */
7758
+ neutralFallback?: boolean;
7759
+ /**
7760
+ * Solo con `neutralFallback`: el fondo del fallback queda transparente (no
7761
+ * pinta el círculo gris en reposo). Pensado para el disparador del perfil en
7762
+ * el header, donde el botón contenedor pinta el círculo al hover.
7763
+ */
7764
+ transparentFallbackBg?: boolean;
7629
7765
  /** Origen del CMS para resolver rutas relativas de la foto. */
7630
7766
  cmsOrigin?: string;
7631
7767
  /**