@crtobiasdelsud/portal-ui 1.0.4 → 1.0.6

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
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## [Unreleased] — 2026-05-18
4
+
5
+ ### Fixed
6
+
7
+ - `EditorOutput` + `EditorOutputFull`: `@editorjs/quote` guarda `caption` como HTML via `innerHTML`; se renderizaba como texto plano mostrando tags HTML crudos en el autor de la cita. Corregido con `dangerouslySetInnerHTML`.
8
+
9
+ ---
10
+
11
+ ## 1.0.2 — 2026-05-15
12
+
13
+ Patch release. Fixes menores sobre la migracion 1.0.0; sin breaking changes
14
+ en API publica. Detalle de cambios: ver `git log v1.0.1..v1.0.2 -- src/`.
15
+
16
+ ## 1.0.1 — 2026-05-14
17
+
18
+ Patch release post-1.0.0. Sin breaking changes en API publica.
19
+ Detalle de cambios: ver `git log v1.0.0..v1.0.1 -- src/`.
20
+
3
21
  ## 1.0.0 — 2026-05-14
4
22
 
5
23
  Migración 100% completa. Paridad total entre portal y CMS — todos los
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crtobiasdelsud/portal-ui",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "Componentes compartidos entre el portal (Next) y el CMS (Vite) — widgets, views, providers para adapters y article pool.",
5
5
  "type": "module",
6
6
  "main": "./src/index.js",
@@ -109,7 +109,7 @@ function Block({ block, cls, isAmp }) {
109
109
  return (
110
110
  <blockquote className={cls.quote} suppressHydrationWarning>
111
111
  <p dangerouslySetInnerHTML={{ __html: block.data.text }} suppressHydrationWarning />
112
- {block.data.caption && <cite>{block.data.caption}</cite>}
112
+ {block.data.caption && <cite dangerouslySetInnerHTML={{ __html: block.data.caption }} suppressHydrationWarning />}
113
113
  </blockquote>
114
114
  )
115
115
 
@@ -109,7 +109,7 @@ function Block({ block, cls, isAmp }) {
109
109
  return (
110
110
  <blockquote className={cls.quote}>
111
111
  <p dangerouslySetInnerHTML={{ __html: block.data.text }} />
112
- {block.data.caption && <cite>{block.data.caption}</cite>}
112
+ {block.data.caption && <cite dangerouslySetInnerHTML={{ __html: block.data.caption }} />}
113
113
  </blockquote>
114
114
  )
115
115
 
@@ -33,13 +33,19 @@ export default function FooterSimple({ isAmp = false }) {
33
33
  } = s
34
34
  const social = { ...headerSocial, ...(s.social ?? {}) }
35
35
 
36
- const safeTextColor = footerTextColor ?? theme.textColor ?? '#ffffff'
36
+ // Colores propios del footer (footer.settings) con fallback al theme global
37
+ const footerBg = s.backgroundColor ?? theme.secondary ?? '#0D1333'
38
+ const footerText = s.textColor ?? footerTextColor ?? theme.textColor ?? '#ffffff'
39
+ const footerAccent = s.primaryColor ?? theme.primary ?? footerBg
40
+ const footerFont = s.fontFamily
41
+
37
42
  const inlineStyle = {
38
- color: safeTextColor,
39
- '--primary-color': theme.primary,
40
- '--secondary-color': theme.secondary,
41
- '--text-color': safeTextColor,
42
- '--social-hover-filter': theme.primary ? hexToCssFilter(theme.primary) : 'none',
43
+ color: footerText,
44
+ ...(footerFont && { fontFamily: footerFont }),
45
+ '--primary-color': footerAccent,
46
+ '--secondary-color': footerBg,
47
+ '--text-color': footerText,
48
+ '--social-hover-filter': footerAccent ? hexToCssFilter(footerAccent) : 'none',
43
49
  }
44
50
 
45
51
  const logoEl = (logoUrl || iconUrl) && (
@@ -140,8 +146,8 @@ export default function FooterSimple({ isAmp = false }) {
140
146
  }
141
147
 
142
148
  return (
143
- <div className={styles.fullcontainer}>
144
- <footer className={styles.container} style={inlineStyle}>
149
+ <div className={styles.fullcontainer} style={inlineStyle}>
150
+ <footer className={styles.container}>
145
151
 
146
152
  {/* ── MAIN: izq (logo+slogan+legal) | der (nav + social+links) ── */}
147
153
  <div className={styles.mainRow}>
@@ -14,13 +14,13 @@
14
14
  display: flex;
15
15
  align-items: center;
16
16
  padding-left: 15px;
17
-
18
- color: white;
17
+
18
+ color: var(--text-color, #fff);
19
19
  font-family: var(--font-inter, Inter, sans-serif);
20
20
  }
21
21
 
22
22
  .fullcontainer{
23
- color: white;
23
+ color: var(--text-color, #fff);
24
24
 
25
25
  }
26
26
 
@@ -34,7 +34,7 @@
34
34
  box-sizing: border-box;
35
35
  margin-top: auto;
36
36
  min-height: 268px;
37
- color: white;
37
+ color: var(--text-color, #fff);
38
38
  }
39
39
 
40
40
  // ── MAIN ROW (2 columns) ──────────────────────────────────────────────────────
@@ -91,7 +91,7 @@
91
91
  width: 100%;
92
92
 
93
93
  @media (min-width: $tablet) {
94
- border-top: 1px solid white;
94
+ border-top: 1px solid var(--text-color, #fff);
95
95
  padding-top: 20px;
96
96
  flex-direction: row;
97
97
  align-items: center;
@@ -155,10 +155,9 @@
155
155
  text-transform: uppercase;
156
156
  color: inherit;
157
157
  opacity: 1;
158
- transition: opacity 0.15s;
159
-
158
+ transition: color 0.15s;
160
159
 
161
- &:hover { opacity: 1; }
160
+ &:hover { color: var(--primary-color, #B1043F); }
162
161
  }
163
162
 
164
163
  // ── Divider ───────────────────────────────────────────────────────────────────
@@ -209,7 +208,7 @@
209
208
  }
210
209
 
211
210
  a {
212
- color: white;
211
+ color: var(--text-color, #fff);
213
212
  }
214
213
  }
215
214
 
@@ -246,11 +245,11 @@
246
245
  color: inherit;
247
246
  text-decoration: none;
248
247
  opacity: 1;
249
- transition: opacity 0.15s;
248
+ transition: color 0.15s;
250
249
  white-space: nowrap;
251
250
 
252
251
  &:hover {
253
- opacity: 1;
252
+ color: var(--primary-color, #B1043F);
254
253
  text-decoration: underline;
255
254
  }
256
255
  }