sass-template-common 0.13.8 → 0.14.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/README.md CHANGED
@@ -1,36 +1,36 @@
1
- # sass-template-common
2
-
3
- Librería web, maqueta de configuración y componentes para proyectos sass.
4
-
5
- ## Publicar nueva versión
6
-
7
- Para que los cambios se reflejen al publicar:
8
-
9
- 1. **Subir versión** (obligatorio; si no, npm rechaza o se usa la misma versión):
10
- ```bash
11
- pnpm version:patch # 0.3.21 → 0.3.22
12
- # o
13
- pnpm version:minor # 0.3.21 → 0.4.0
14
- pnpm version:major # 0.3.21 → 1.0.0
15
- ```
16
-
17
- 2. **Build limpio + publicar**:
18
- ```bash
19
- pnpm run clean && pnpm run build && pnpm publish
20
- ```
21
- O en un solo paso (patch):
22
- ```bash
23
- pnpm release:patch
24
- ```
25
-
26
- 3. **`prepublishOnly`**: Antes de cada `pnpm publish` se ejecuta `clean` + `build`, así siempre se publica un build nuevo.
27
-
28
- 4. **En proyectos que consumen la lib**: Actualizar la dependencia y reinstalar:
29
- ```bash
30
- pnpm update sass-template-common
31
- # o cambiar la versión en package.json y luego
32
- pnpm install
33
- ```
34
- Si usan versión fija (`"0.3.21"`), hay que actualizarla a la nueva (p. ej. `"0.3.22"`).
35
-
36
- **Si no ves los cambios:** comprueba que subiste la versión (`version:patch` o similar), que hiciste `clean` + `build` antes de publicar, y que el proyecto consumidor tiene actualizada la dependencia (o `^0.3.21` y ha ejecutado `pnpm update`).
1
+ # sass-template-common
2
+
3
+ Librería web, maqueta de configuración y componentes para proyectos sass.
4
+
5
+ ## Publicar nueva versión
6
+
7
+ Para que los cambios se reflejen al publicar:
8
+
9
+ 1. **Subir versión** (obligatorio; si no, npm rechaza o se usa la misma versión):
10
+ ```bash
11
+ pnpm version:patch # 0.3.21 → 0.3.22
12
+ # o
13
+ pnpm version:minor # 0.3.21 → 0.4.0
14
+ pnpm version:major # 0.3.21 → 1.0.0
15
+ ```
16
+
17
+ 2. **Build limpio + publicar**:
18
+ ```bash
19
+ pnpm run clean && pnpm run build && pnpm publish
20
+ ```
21
+ O en un solo paso (patch):
22
+ ```bash
23
+ pnpm release:patch
24
+ ```
25
+
26
+ 3. **`prepublishOnly`**: Antes de cada `pnpm publish` se ejecuta `clean` + `build`, así siempre se publica un build nuevo.
27
+
28
+ 4. **En proyectos que consumen la lib**: Actualizar la dependencia y reinstalar:
29
+ ```bash
30
+ pnpm update sass-template-common
31
+ # o cambiar la versión en package.json y luego
32
+ pnpm install
33
+ ```
34
+ Si usan versión fija (`"0.3.21"`), hay que actualizarla a la nueva (p. ej. `"0.3.22"`).
35
+
36
+ **Si no ves los cambios:** comprueba que subiste la versión (`version:patch` o similar), que hiciste `clean` + `build` antes de publicar, y que el proyecto consumidor tiene actualizada la dependencia (o `^0.3.21` y ha ejecutado `pnpm update`).
@@ -155,9 +155,24 @@ export declare interface AutorInfo {
155
155
  };
156
156
  }
157
157
 
158
- export declare const BannerAdvertising: ({ banners, name, scope }: Props_28) => JSX.Element | null;
158
+ export declare const BannerAdvertising: ({ banners, name, legacy, scope }: Props_28) => JSX.Element | null;
159
159
 
160
- export declare const BannerAdvertisingMiddle: ({ banners, index, scope }: Props_27) => JSX.Element | null;
160
+ export declare const BannerAdvertisingMiddle: ({ banners, index, name, legacy, scope, }: Props_27) => JSX.Element | null;
161
+
162
+ /**
163
+ * Arma la cadena de candidatos de una posición: primero la key canónica
164
+ * (nomenclatura nueva), después los alias legacy en orden.
165
+ *
166
+ * No deduplica por accidente: si un sitio pasa `legacy` igual al canónico el
167
+ * resultado es el mismo lookup una sola vez.
168
+ */
169
+ export declare const bannerKeyCandidates: (canonical: string, legacy?: BannerLegacyKey) => string[];
170
+
171
+ /**
172
+ * Nombres legacy de una posición de banner. Acepta un string o una lista
173
+ * ordenada (de más a menos prioritario).
174
+ */
175
+ export declare type BannerLegacyKey = string | string[] | undefined;
161
176
 
162
177
  export declare interface BannerResponse {
163
178
  key: string;
@@ -1241,6 +1256,22 @@ export declare function fetchWithConfigCache<T>(cacheKey: string, fetchFn: () =>
1241
1256
  staleOnError?: boolean;
1242
1257
  }): Promise<T>;
1243
1258
 
1259
+ /**
1260
+ * Resuelve una posición de banner contra la respuesta del CMS con fallback a
1261
+ * nomenclatura vieja.
1262
+ *
1263
+ * REGLA DE CAÍDA — **solo por ausencia**. Se devuelve la primera key que
1264
+ * EXISTE en el array, sin mirar `show` ni `value`. Si la key canónica está
1265
+ * presente pero apagada (`show: false`) NO se cae al legacy: apagar un banner
1266
+ * es una decisión deliberada de tráfico y el fallback no debe revivirlo.
1267
+ *
1268
+ * Los guards de `show`/`value` los sigue aplicando cada componente sobre el
1269
+ * `BannerResponse` devuelto, exactamente como antes de este helper. Por eso,
1270
+ * sin `legacy`, el comportamiento es byte-idéntico al `banners.find(...)`
1271
+ * original: misma búsqueda, mismo resultado.
1272
+ */
1273
+ export declare const findBanner: (banners: Array<BannerResponse> | undefined, canonical: string, legacy?: BannerLegacyKey) => BannerResponse | undefined;
1274
+
1244
1275
  export declare const Font: ({ config }: {
1245
1276
  config: Config;
1246
1277
  }) => JSX.Element | null;
@@ -1631,6 +1662,26 @@ declare type HeaderProps = {
1631
1662
  custom_styles?: CSSProperties;
1632
1663
  mobileIcon?: any;
1633
1664
  customComponent?: ReactNode;
1665
+ /**
1666
+ * [banners] Slot `pre_header`: contenido que se renderiza ARRIBA de la barra
1667
+ * del header estatico, en flujo normal dentro del `<header>`. Pensado para el
1668
+ * banner `pre_header` (posicion no estandar: la mayoria de los sitios no la
1669
+ * usa).
1670
+ *
1671
+ * Solo se pinta en el header ESTATICO, nunca en el sticky: el sticky es la
1672
+ * barra compacta del scroll y duplicar ahi el creativo seria una segunda
1673
+ * impresion del mismo slot publicitario.
1674
+ *
1675
+ * CONTRATO DE ALTURA — el header esta pineado (`position: fixed/absolute;
1676
+ * top: 0`) y el contenido lo despeja con un `margin-top` fijo. Un sitio que
1677
+ * active `pre_header` DEBE declarar la altura reservada:
1678
+ *
1679
+ * :root { --pre-header-height: 90px; }
1680
+ *
1681
+ * `headers-header-1.css` la suma al margen del contenido. Default `0px`, asi
1682
+ * que sin el slot el layout queda byte-identico.
1683
+ */
1684
+ preHeader?: ReactNode;
1634
1685
  prerender_classes?: {
1635
1686
  alert?: string;
1636
1687
  };
@@ -2062,6 +2113,33 @@ export declare type LibraryConfig = {
2062
2113
  middle?: boolean;
2063
2114
  innote?: boolean;
2064
2115
  };
2116
+ /**
2117
+ * [banners] Nomenclatura de keys de banners. **Solo gatea los renombres que
2118
+ * REUSAN un nombre existente**; el resto de la nomenclatura nueva
2119
+ * (`post_header`, `pre_footer`, `pre_header`, `destacado_N`,
2120
+ * `destacado_middle`, `block_N_middle`, `body_N`) no pasa por acá: son
2121
+ * nombres nuevos, sin colisión posible, y se resuelven siempre con fallback
2122
+ * canónico → legacy vía `findBanner`.
2123
+ *
2124
+ * - `'legacy'` (**default**) — comportamiento histórico, byte-idéntico.
2125
+ * Los middles dinámicos del home siguen siendo `middle_dynamic_<slot>` y
2126
+ * los middles de nota siguen numerados desde `middle_2`.
2127
+ * - `'v2'` — los middles dinámicos del home pasan a `middle_<slot>` (con
2128
+ * fallback a `middle_dynamic_<slot>`) y la nota renumera sus middles
2129
+ * arrancando en `middle_1`.
2130
+ *
2131
+ * POR QUÉ ES UN FLAG Y NO UN FALLBACK MÁS. Estos dos casos no son un
2132
+ * renombre, son un SWAP: `middle_N` sigue existiendo después del cambio pero
2133
+ * apunta a otra posición física. Con fallback gradual, un sitio a medio
2134
+ * migrar resolvería el `middle_1` viejo (estático, arriba) desde la posición
2135
+ * nueva (dinámica, abajo) y duplicaría el banner. El flag garantiza que no
2136
+ * exista estado mixto: se da vuelta el mismo día que se renombran las keys
2137
+ * en el CMS.
2138
+ *
2139
+ * Cutover por sitio. Un sitio en `'legacy'` no ve NINGÚN cambio de
2140
+ * comportamiento por este refactor.
2141
+ */
2142
+ CONFIG_bannerKeys?: 'legacy' | 'v2';
2065
2143
  /**
2066
2144
  * [banners] Rutas cuyo contenido de banners depende de que exista un query
2067
2145
  * string (ej. `'buscar'`: sin query no hay resultados → no hay banners). Para
@@ -3212,13 +3290,36 @@ declare type Props_26 = {
3212
3290
 
3213
3291
  declare type Props_27 = {
3214
3292
  banners: Array<BannerResponse>;
3215
- index: string | number;
3293
+ /**
3294
+ * Sufijo numérico histórico: la key resuelta es `middle_${index}`. Se sigue
3295
+ * soportando tal cual — todos los call sites que no migraron lo usan.
3296
+ * Ignorado si se pasa `name`.
3297
+ */
3298
+ index?: string | number;
3299
+ /**
3300
+ * Key canónica COMPLETA, sin prefijo `middle_`. Es la vía para las
3301
+ * posiciones que dejaron de ser un middle numerado (`post_header`,
3302
+ * `pre_footer`, `pre_header`, `destacado_middle`, `block_N_middle`).
3303
+ */
3304
+ name?: string;
3305
+ /**
3306
+ * Key(s) con las que esta posición se llamaba antes. Solo se consultan si la
3307
+ * canónica no está en la respuesta del CMS. Ver `findBanner`.
3308
+ */
3309
+ legacy?: BannerLegacyKey;
3216
3310
  scope?: BannerScope;
3217
3311
  };
3218
3312
 
3219
3313
  declare type Props_28 = {
3220
3314
  banners: Array<BannerResponse>;
3315
+ /** Key canónica (nomenclatura nueva). */
3221
3316
  name: string;
3317
+ /**
3318
+ * Key(s) con las que esta misma posición se llamaba antes. Se usan solo si
3319
+ * `name` NO está en la respuesta del CMS, así el renombre es inerte hasta
3320
+ * que se actualicen los banners. Ver `findBanner`.
3321
+ */
3322
+ legacy?: BannerLegacyKey;
3222
3323
  scope?: BannerScope;
3223
3324
  };
3224
3325