/**
 * `<card-ui>` — Bordered container with header, body, and footer sections. The nested <header> activates a 3-column grid when any direct [slot="icon|heading|description|action"] child is present (icon column | heading + description stack | action column). Slot-gating uses :has(> [slot="…"]) (direct-child only) so a nested slot inside a composite child — e.g. <avatar-ui> owning an internal <icon-ui slot="icon"> — does not falsely activate the icon column. The nested <footer> flex-rows with a [slot="description"] + [slot="action"] space-between pattern; multiple <section> siblings stack as the body.
 *
 * @see https://ui-kit.exe.xyz/site/components/card
 *
 * Type declarations generated by scripts/build/dts-codegen.mjs from
 * the component's `.a2ui.json` sidecar(s). Edit the source `.yaml`,
 * run `npm run build:components`, then `npm run codegen:dts` to
 * regenerate; or hand-author this file fully if rich event types are
 * needed beyond what the yaml `events:` block can express.
 */

import { UIElement } from '../../core/element.js';

export class UICard extends UIElement {
  /** Enables drag handle + cursor:grab. Wires the draggable trait; dispatches drag-end. */
  draggable: boolean;
  /** Shadow depth 0-3 */
  elevation: 0 | 1 | 2 | 3;
  /** Interior padding scale (overrides --card-padding). Accepts the named scale (none/xs/sm/md/lg/xl) or a numeric rung ("1"…"16"). */
  padding: string;
  /** Strips background, border, and shadow. Parent owns the surface. Content structure still applies. */
  raw: boolean;
  /** Card scale. Controls inset, radius, gap, and font sizes. Default (empty) = md. */
  size: 'sm' | 'md' | 'lg';
  /** Visual style. `outlined` (alias `outline`) draws a border with no shadow; `filled` uses a tinted canvas surface; `ghost` drops border + shadow. */
  variant: 'default' | 'outlined' | 'outline' | 'filled' | 'ghost';
}
