feat(ARC-3816): HetArchief quote block - #371
Conversation
… textColor - BlockHetArchiefQuote: render the meemoocons-light ligature via the literal word "quotes" instead of U+201D, which the icon font has no glyph for. font-feature-settings/font-variant-ligatures enable the ligature, with a sans-serif fallback since admin-core doesn't ship the font. - Rename HetarchiefQuote symbols to HetArchiefQuote casing to match sibling HetArchief* blocks (enum VALUE and tText keys stay byte-identical). - Fix the 6 biome ci regressions: reorder the Avo quote block's imports/exports back beside BlockAvoHero, and reformat the wrapped tText call. - Widen textColor to Color | GradientColor | CustomBackground to match what BACKGROUND_COLOR_FIELD actually allows. - Use the shared $g-bp2 breakpoint instead of a hardcoded 768px value. - Clear stylelint violations in the new SCSS (unquoted font names, generic fallbacks, comment spacing, media-feature range notation). - Preserve authored line breaks in the quote text via white-space: pre-line. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Closing to review locally first — will reopen once reviewed. |
The background colour list contains three entries that are not a CSS colour: "Geen" (TRANSPARENT) rendered the text invisible, the meemoo logo sentinel and the black/white gradient were invalid in `color` and silently dropped the frame background.
The block writes its translation keys explicitly, so nl.json is the only place that can carry their Dutch text. Scope the keys to HET_ARCHIEF so they are not extracted into the avo translation set.
…-3816_hetarchief-quote-block # Conflicts: # ui/src/react-admin/modules/content-page/components/ContentBlockRenderer/ContentBlockRenderer.const.tsx # ui/src/react-admin/modules/content-page/const/content-block-config-map.ts # ui/src/react-admin/modules/content-page/const/content-block-initial-state-map.ts # ui/src/react-admin/modules/content-page/const/get-content-block-type-options.ts # ui/src/shared/translations/hetArchief/nl.json
| defaultValue ?? | ||
| (isAvo() ? GET_FOREGROUND_COLOR_OPTIONS_AVO()[0] : GET_FOREGROUND_COLOR_OPTIONS_ARCHIEF()[0]), |
There was a problem hiding this comment.
Die hoort hier eigenlijk niet thuis. Ik ben erover gevallen toen ik een default meegaf en die niet doorkwam: defaultValue || isAvo() ? A : B wordt gelezen als (defaultValue || isAvo()) ? A : B. Van zodra je dus een default meegeeft is die check altijd waar en krijg je sowieso de eerste AVO-kleur — de default die je meegeeft doet niets. Dat speelt vandaag ook bij BlockCTAs, BlockPageOverview, BlockCardsWithoutDescription en BlockOverviewWithCarousel. Zal ik het uit deze PR halen en apart zetten?
There was a problem hiding this comment.
Zet deze inderdaad beter in een aparte PR, alsook log er een aparte bug voor met een reproductie.
Gezien dit een gedragsverandering te weeg zal brengen bij de contentblokken, zal meemoo die ook moeten testen en dat gaat niet zonder ticket.
There was a problem hiding this comment.
Eruit gehaald, defaults.ts staat terug zoals op release/v6.0.0 en de test is mee verwijderd.
There was a problem hiding this comment.
Mixins gebruiken als ook variabelen. Dit ziet er ook goed uit mobiel?
Al deze vaste waardes lijken me zwaar af wijken van bestaande zaken
There was a problem hiding this comment.
2 bijkomende vragen:
- Getest samen met de client? Want daar zit nog styling: https://github.com/viaacode/hetarchief-client/blob/487de883538e4ca3d960f24be96c98628a5480c7/src/styles/admin-core/content-blocks/_quote.scss
- Wat gebeurd er met de huidige
ContentBlockType.QUOTEblokken die al in Het archief zitten?
| white-space: pre-line; | ||
|
|
||
| // Figma node 455:5724, style "P - XL". | ||
| @include typography.sofia-pro(3.2rem, 500, 4rem); |
There was a problem hiding this comment.
Waarom gebruik je niet gewoon sofia-pro-heading-xl() en overschrijft de font-weight.
Door de mixin op deze manier te gebruiken overal, zit er op termijn nergens meer een lijn in qua consistentie. Of we moeten de bestaande verschillende types uitbreiden met degene die je nodig hebt hier en in de PR voor de content labels. Zodat het consistent blijft
There was a problem hiding this comment.
Presets uitgebreid met sofia-pro-body-xl() en sofia-pro-body-xs(), het blok gebruikt die nu. heading-xl() met een weight-override vond ik minder net.
Kleine kanttekening: in _typography.scss staat dat je sofia-pro(...) rechtstreeks mag gebruiken voor een maat die er niet in staat. Dat had ik gevolgd — misschien die comment aanpassen?
There was a problem hiding this comment.
Comment dan inderdaad aanpassen
| defaultValue ?? | ||
| (isAvo() ? GET_FOREGROUND_COLOR_OPTIONS_AVO()[0] : GET_FOREGROUND_COLOR_OPTIONS_ARCHIEF()[0]), |
There was a problem hiding this comment.
Zet deze inderdaad beter in een aparte PR, alsook log er een aparte bug voor met een reproductie.
Gezien dit een gedragsverandering te weeg zal brengen bij de contentblokken, zal meemoo die ook moeten testen en dat gaat niet zonder ticket.
| defaultValue ?? | ||
| (isAvo() ? GET_COLOR_OPTIONS_EXTENDED_AVO()[0] : GET_BACKGROUND_COLOR_OPTIONS_ARCHIEF()[0]), |
There was a problem hiding this comment.
Samen met de andere changes aan die defaultValues apart zetten en ticket voor loggen voor testing en traceability
|
Wat gebeurt er met bestaande Niets. De rename raakt alleen de TypeScript-naam: De styling in de client? Blijft pakken. |
Dat is dus dan net het probleem, want de quote blokken moeten qua styling aanpassen. Maw als we de quoteblokken opsplitsen per client, dan moet er een migratie gebeuren zodat de nieuwe blokken ook naar de nieuwe styling switchen. |


ARC-3816 · FA: Aanpassingen bestaande contentblokken · Figma
Adds a second quote visualisation for hetarchief.be as its own block type,
HETARCHIEF_QUOTE. The existing AvO quote block is untouched and keeps running alongside it.What's here
BlockHetArchiefQuote— pill-framed quote: square left corners, 400px right radius, ameemoocons-lightquote glyph, the quote, and an optional author. Frame colour and text colour travel to CSS as custom properties. Desktop and mobile both built from the Figma nodes (455:5722/455:7186).ContentBlockType.Quoterenamed toAvoQuote. The enum value stays'QUOTE', mirroring the existingAvoHero = 'HERO', so no stored content page is affected.SOLID_COLOR_FIELDhelper (+GET_SOLID_COLOR_OPTIONS_ARCHIEF/_AVO) — the background-colour list minus the entries that are not a plain CSS colour. Used for both of this block's pickers.defaults.ts— the three colour-field helpers haddefaultValue || isAvo() ? A : B, which parses as(defaultValue || isAvo()) ? A : Band silently discarded an explicitly passeddefaultValue.ui/src/shared/translations/hetArchief/nl.json, scoped[HET_ARCHIEF]so they are not extracted into the AvO set.BLOCK_FIELD_DEFAULTS()already provides it andBLOCK_STATE_DEFAULTSinitialises it toTransparent("geen").Deliberate deviation from the FA — needs a PO nod
The FA specifies that Tekstkleur and Kleur kader offer "bestaande achtergrondkleuren uit het contentblok Quote + uitbreidingen", i.e. the full 19-entry background list. Three of those entries are not usable here:
Geen(TRANSPARENT)meemoo logo(<MEEMOO_LOGO>)Overgang zwart wit(gradient)Both pickers therefore use
SOLID_COLOR_FIELD, which drops those three and keeps everything else including all ten tertiary colours. Covered by tests indefaults.test.ts. If the FA owner wants the literal full list back, that is a one-line swap toBACKGROUND_COLOR_FIELD.Reviewer notes
This rename is source-breaking for both consumer apps.
ContentBlockType.Quoteis referenced by:hetarchief-client/src/modules/admin/wrappers/admin-core-config.tsx:78avo2-client/src/admin/shared/hoc/with-admin-core-config.const.tsx:103Both need the reference renamed on their next bump. The avo2-client side is out of scope here and its team should be told.
Release needs a minor/major bump, not a patch.
npm run bumpdefaults to--part=patch.Side effect of the
defaults.tsfix. Three pre-existing call sites passGET_BACKGROUND_COLOR_OPTIONS_*()[1](white):BLOCK_FIELD_DEFAULTS().backgroundColor,BlockCTAs,BlockCardsWithoutDescription. They previously resolved to[0](Transparent) because of the bug. They now resolve to white — but only as the displayed fallback when a stored value is missing from the options list; nothing is persisted or re-rendered differently. This matches those authors' evident intent.The block responds to viewport width, not container width. Correct on the public page; in the CMS preview pane it keeps the desktop layout when the pane is narrow. A container query would fix it — not done, since the Figma does not cover it.
Depends on
viaacode/hetarchief-hasura#409 — the
HETARCHIEF_QUOTEenum row must exist before a page using the block can be saved.Verification
npm run type-check0 ·npx biome ci .0 ·npm test76 passed, 1 failed (sanitize.test.ts, pre-existing onrelease/v6.0.0) ·stylelintclean on the new SCSS. Rendered and checked in hetarchief-client against both Figma nodes.🤖 Generated with Claude Code