The portal now adheres to the CIBG design system (designsystem.cibg.nl) — a customized Bootstrap 5.2 build — replacing the Rijkshuisstijl-Community / Utrecht theme. See ADR-0003. - Vendor @cibg/huisstijl@3.22.0 under public/cibg-huisstijl/, loaded via a <link> in index.html (Storybook serves it via staticDirs). Drop the two @rijkshuisstijl-community deps. - Token bridge in styles.scss: redefine the app's ~54 --rhc-* tokens onto CIBG/--bs-* values, so components keep referencing tokens (no 300+ site rewrite). System-font stack; licensed RO/Rijks text fonts intentionally not shipped. - Re-skin every shared atom to Bootstrap/CIBG classes (btn, form-control, form-check-*, table, breadcrumb, …) keeping their input() APIs. alert is hand-rolled (CIBG drops .alert); local .card/.badge renamed to avoid Bootstrap collisions. - Domain pages: drop stray rhc-*/utrecht-* classes; registration-table → table table-striped. Verified: build green, check:tokens OK, lint clean, 174 tests pass, build-storybook OK, and the served build loads the vendored CSS (200, .btn-primary present). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
import { Component, input } from '@angular/core';
|
|
import { HeadingComponent } from '@shared/ui/heading/heading.component';
|
|
|
|
/** Molecule: a content card. Standardises the repeated card surface (white,
|
|
subtle border, rounded, padded) so pages compose cards instead of hand-rolling
|
|
a hand-rolled card surface. Optional heading; the rest is projected.
|
|
Local class is .app-card (NOT Bootstrap's .card, whose padding-on-body layout differs). */
|
|
@Component({
|
|
selector: 'app-card',
|
|
imports: [HeadingComponent],
|
|
styles: [`
|
|
:host{display:block;block-size:100%}
|
|
.app-card{
|
|
background:var(--rhc-color-wit);
|
|
border:var(--rhc-border-width-sm) solid var(--rhc-color-border-subtle);
|
|
border-radius:var(--rhc-border-radius-md);
|
|
padding:var(--rhc-space-max-xl);
|
|
block-size:100%;
|
|
box-sizing:border-box;
|
|
}
|
|
.app-card > * + *{margin-block-start:var(--rhc-space-max-md)}
|
|
`],
|
|
template: `
|
|
<section class="app-card">
|
|
@if (heading()) { <app-heading [level]="level()">{{ heading() }}</app-heading> }
|
|
<ng-content />
|
|
</section>
|
|
`,
|
|
})
|
|
export class CardComponent {
|
|
heading = input<string>();
|
|
level = input<1 | 2 | 3 | 4 | 5>(3);
|
|
}
|