import { Component, input } from '@angular/core';
import { HeadingComponent } from '@shared/ui/heading/heading.component';

// CIBG-GAP EXTENSION: n/a — no vendored generic-card class; `.app-card` is a
// hand-rolled surface (NOT Bootstrap's `.card`), see cibg-gaps.mdx. Prefer the
// vendored Datablock (WP-12, `app-data-block`) for application/user data.
/** 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);
}
