{
  "schemaVersion": 1,
  "mime": "application/vnd.velinstyle.meta+json",
  "generatedAt": "2026-05-21T06:34:17.807Z",
  "framework": {
    "name": "@birdapi/velinstyle",
    "version": "0.9.0",
    "homepage": "https://velinstyle.info",
    "repository": "https://github.com/SkyliteDesign/velinstyle.git",
    "tagline": "VelinStyle is the WCAG 2.2 AAA CSS framework with native JavaScript runtime and Web Components."
  },
  "packageExports": [
    ".",
    "./bundle",
    "./css",
    "./sanitize",
    "./runtime",
    "./secure",
    "./email",
    "./search",
    "./motion",
    "./attributes",
    "./highlight",
    "./meta",
    "./a11y"
  ],
  "release": {
    "breaking": [
      "Canonical tags: velin-tooltip, velin-stepper (legacy *-wc aliases deprecated).",
      ".velin-mb-* is margin-bottom only; use .velin-my-* for block axis."
    ],
    "migration": [
      "Replace velin-tooltip-wc / velin-stepper-wc with velin-tooltip / velin-stepper.",
      "Point AI tools at velin-agent.json or docs/llms.txt for framework context."
    ]
  },
  "components": {
    "tags": [
      "velin-accordion",
      "velin-announcer",
      "velin-bottom-nav",
      "velin-carousel",
      "velin-code-block",
      "velin-collapse",
      "velin-combobox",
      "velin-command",
      "velin-copy",
      "velin-countdown",
      "velin-counter",
      "velin-dialog",
      "velin-drawer",
      "velin-dropdown",
      "velin-email",
      "velin-icon",
      "velin-lightbox",
      "velin-live-dot",
      "velin-menubar",
      "velin-modal",
      "velin-persist",
      "velin-popover",
      "velin-progress-ring",
      "velin-rating",
      "velin-scroll-top",
      "velin-scrollspy",
      "velin-search",
      "velin-secure-field",
      "velin-segmented-control",
      "velin-sheet",
      "velin-sparkline",
      "velin-stepper",
      "velin-tabs",
      "velin-theme-toggle",
      "velin-toast",
      "velin-tooltip"
    ],
    "count": 36,
    "loaderTags": [
      "velin-accordion",
      "velin-announcer",
      "velin-bottom-nav",
      "velin-carousel",
      "velin-code-block",
      "velin-collapse",
      "velin-combobox",
      "velin-command",
      "velin-copy",
      "velin-countdown",
      "velin-counter",
      "velin-dialog",
      "velin-drawer",
      "velin-dropdown",
      "velin-email",
      "velin-icon",
      "velin-lightbox",
      "velin-live-dot",
      "velin-menubar",
      "velin-modal",
      "velin-persist",
      "velin-popover",
      "velin-progress-ring",
      "velin-rating",
      "velin-scroll-top",
      "velin-scrollspy",
      "velin-search",
      "velin-secure-field",
      "velin-segmented-control",
      "velin-sheet",
      "velin-sparkline",
      "velin-stepper",
      "velin-stepper-wc",
      "velin-tabs",
      "velin-theme-toggle",
      "velin-toast",
      "velin-tooltip",
      "velin-tooltip-wc"
    ],
    "loaderCount": 38,
    "legacyAliases": [
      "velin-stepper-wc",
      "velin-tooltip-wc"
    ],
    "helpers": [
      "velin-flip",
      "velin-haptic",
      "velin-reveal"
    ]
  },
  "attributes": {
    "names": [
      "velin-accordion",
      "velin-anchor",
      "velin-code",
      "velin-copy",
      "velin-counter",
      "velin-fade",
      "velin-grid",
      "velin-highlight",
      "velin-hover",
      "velin-lazy",
      "velin-loading",
      "velin-modal",
      "velin-notify",
      "velin-parallax",
      "velin-progress",
      "velin-quote",
      "velin-reveal",
      "velin-scale",
      "velin-scroll",
      "velin-scroll-top",
      "velin-search",
      "velin-skeleton",
      "velin-slide",
      "velin-stagger",
      "velin-tabs",
      "velin-theme",
      "velin-tooltip"
    ],
    "count": 27
  },
  "cli": {
    "commands": [
      {
        "name": "init",
        "summary": "Create velinstyle.config.js",
        "flags": [],
        "example": "velinstyle init"
      },
      {
        "name": "build",
        "summary": "Build custom CSS with selected layers from config",
        "flags": [],
        "example": "velinstyle build"
      },
      {
        "name": "themes",
        "summary": "List available built-in themes",
        "flags": [],
        "example": "velinstyle themes"
      },
      {
        "name": "add",
        "summary": "Add a single component CSS file to your project",
        "flags": [],
        "example": "velinstyle add button"
      },
      {
        "name": "icons",
        "summary": "Manage icon providers (list, add, remove, build)",
        "flags": [
          "--icons",
          "--variant"
        ],
        "subcommands": [
          "list",
          "add",
          "remove",
          "build"
        ],
        "example": "velinstyle icons add lucide --icons menu,search"
      },
      {
        "name": "scan",
        "summary": "Security, accessibility, CSS, and PII scanner",
        "flags": [
          "--format",
          "--severity",
          "--only",
          "--fix",
          "--fix-dry-run",
          "--fix-lang"
        ],
        "example": "velinstyle scan . --only pii --fix-dry-run"
      },
      {
        "name": "prefix",
        "summary": "Add missing velin- prefix to classes (dry-run; use --write)",
        "flags": [
          "--write",
          "--map",
          "--bootstrap-display"
        ],
        "example": "velinstyle prefix src/ --write"
      },
      {
        "name": "blueprint",
        "summary": "Print HTML blueprint snippets",
        "flags": [
          "--output",
          "-o"
        ],
        "subcommands": [
          "list"
        ],
        "example": "velinstyle blueprint modal -o snippet.html"
      },
      {
        "name": "scaffold",
        "summary": "Generate layout HTML from natural language prompt",
        "flags": [
          "--output",
          "-o",
          "--json"
        ],
        "subcommands": [
          "list-intents"
        ],
        "example": "velinstyle scaffold \"dashboard with sidebar\""
      },
      {
        "name": "layout",
        "summary": "Responsive layout audit (flex, grid, viewport)",
        "flags": [
          "--json",
          "--write",
          "--dry-run"
        ],
        "subcommands": [
          "audit",
          "suggest",
          "fix"
        ],
        "example": "velinstyle layout suggest index.html"
      },
      {
        "name": "perf",
        "summary": "Performance audit for images and scripts",
        "flags": [
          "--json",
          "--write",
          "--dry-run"
        ],
        "subcommands": [
          "audit",
          "suggest",
          "fix"
        ],
        "example": "velinstyle perf audit samples/"
      },
      {
        "name": "tokens",
        "summary": "Build or validate design tokens JSON",
        "flags": [
          "--input",
          "--output",
          "-o"
        ],
        "subcommands": [
          "build",
          "validate"
        ],
        "example": "velinstyle tokens validate --input examples/tokens.full.json"
      },
      {
        "name": "docs",
        "summary": "Generate developer reference Markdown",
        "flags": [
          "--scope",
          "--out"
        ],
        "subcommands": [
          "generate"
        ],
        "example": "velinstyle docs generate --scope all"
      },
      {
        "name": "meta",
        "summary": "Build Velin-Meta agent bundle (velin-agent.json, llms.txt)",
        "flags": [
          "--out",
          "--llms-out",
          "--base-url",
          "--no-llms"
        ],
        "subcommands": [
          "page"
        ],
        "example": "velinstyle meta"
      }
    ]
  },
  "tooling": {
    "categories": [
      "scan",
      "prefix",
      "scaffold",
      "layout",
      "perf",
      "tokens",
      "docs",
      "search",
      "meta"
    ],
    "scannerRuleCount": 37
  },
  "a11y": {
    "wcagLevel": "AAA",
    "modules": "src/a11y/*.css",
    "matrix": "docs/generated/a11y/wcag22-aaa-matrix.md",
    "componentContracts": {
      "velin-accordion": {
        "status": "pass",
        "roles": [
          "group"
        ],
        "keyboard": "Arrow/Home/End between summaries",
        "reducedMotion": true,
        "requiredAttributes": [],
        "notes": "Wires aria-controls on summary elements."
      },
      "velin-announcer": {
        "status": "pass",
        "roles": [
          "status"
        ],
        "liveRegion": "polite|assertive",
        "keyboard": "N/A",
        "reducedMotion": true
      },
      "velin-bottom-nav": {
        "status": "pass",
        "roles": [
          "navigation"
        ],
        "requiredAttributes": [
          "aria-label"
        ],
        "keyboard": "Native links or buttons in slot",
        "notes": "Host aria-label; slotchange syncs aria-current and infers item labels from data-nav/title."
      },
      "velin-carousel": {
        "status": "pass",
        "roles": [
          "group",
          "button"
        ],
        "keyboard": "Arrows, Home, End, dots",
        "reducedMotion": true
      },
      "velin-code-block": {
        "status": "pass",
        "roles": [
          "button"
        ],
        "requiredAttributes": [],
        "keyboard": "Expand toggle keyboard",
        "notes": "Expand uses aria-expanded and aria-controls."
      },
      "velin-collapse": {
        "status": "pass",
        "roles": [
          "button"
        ],
        "keyboard": "Enter/Space on trigger",
        "requiredAttributes": []
      },
      "velin-combobox": {
        "status": "pass",
        "roles": [
          "combobox",
          "listbox"
        ],
        "keyboard": "Roving, Escape, Enter",
        "requiredAttributes": [
          "aria-label"
        ]
      },
      "velin-command": {
        "status": "pass",
        "roles": [
          "dialog"
        ],
        "keyboard": "Escape, arrows in results, Tab trap",
        "requiredAttributes": []
      },
      "velin-copy": {
        "status": "pass",
        "roles": [
          "button"
        ],
        "requiredAttributes": [
          "aria-label"
        ],
        "keyboard": "Native button"
      },
      "velin-countdown": {
        "status": "pass",
        "roles": [
          "timer"
        ],
        "liveRegion": "polite",
        "keyboard": "N/A"
      },
      "velin-counter": {
        "status": "pass",
        "roles": [
          "status"
        ],
        "liveRegion": "polite",
        "keyboard": "N/A",
        "reducedMotion": true
      },
      "velin-dialog": {
        "status": "pass",
        "roles": [
          "dialog"
        ],
        "keyboard": "Native dialog, Escape",
        "requiredAttributes": [],
        "notes": "aria-labelledby on dialog, aria-modal true."
      },
      "velin-drawer": {
        "status": "pass",
        "roles": [
          "dialog"
        ],
        "keyboard": "Escape, Tab trap",
        "requiredAttributes": []
      },
      "velin-dropdown": {
        "status": "pass",
        "roles": [
          "menu",
          "button"
        ],
        "keyboard": "Roving, typeahead, Escape"
      },
      "velin-email": {
        "status": "pass",
        "roles": [
          "button"
        ],
        "requiredAttributes": [
          "aria-label"
        ]
      },
      "velin-icon": {
        "status": "pass",
        "roles": [
          "img",
          "presentation"
        ],
        "requiredAttributes": [
          "label"
        ],
        "notes": "Decorative when no label; SVG aria-hidden. Do not set aria-hidden on host in JS."
      },
      "velin-lightbox": {
        "status": "pass",
        "roles": [
          "dialog"
        ],
        "keyboard": "Escape, arrows, Tab trap",
        "liveRegion": "polite"
      },
      "velin-live-dot": {
        "status": "pass",
        "roles": [
          "status"
        ],
        "requiredAttributes": [],
        "notes": "Status exposed via aria-label on host, not color alone."
      },
      "velin-menubar": {
        "status": "pass",
        "roles": [
          "menubar",
          "menu"
        ],
        "requiredAttributes": [
          "aria-label"
        ],
        "keyboard": "Roving arrows"
      },
      "velin-modal": {
        "status": "pass",
        "roles": [
          "dialog"
        ],
        "keyboard": "Escape, Tab trap",
        "requiredAttributes": []
      },
      "velin-persist": {
        "status": "pass",
        "keyboard": "N/A",
        "notes": "display:contents; auto-saves form field values (WCAG 3.3.7 Redundant Entry helper). Clears on form submit."
      },
      "velin-popover": {
        "status": "pass",
        "roles": [
          "dialog",
          "tooltip"
        ],
        "keyboard": "Escape, Enter/Space on trigger; focus opens hover mode",
        "notes": "aria-labelledby or default aria-label; non-button triggers get role=button."
      },
      "velin-progress-ring": {
        "status": "pass",
        "roles": [
          "progressbar"
        ],
        "requiredAttributes": []
      },
      "velin-rating": {
        "status": "pass",
        "roles": [
          "radiogroup"
        ],
        "keyboard": "Roving, arrows"
      },
      "velin-scroll-top": {
        "status": "pass",
        "roles": [
          "button"
        ],
        "requiredAttributes": [
          "aria-label"
        ],
        "reducedMotion": true
      },
      "velin-scrollspy": {
        "status": "pass",
        "keyboard": "Native nav links",
        "notes": "Sets aria-current on active link."
      },
      "velin-search": {
        "status": "pass",
        "roles": [
          "combobox",
          "listbox"
        ],
        "requiredAttributes": [
          "aria-label"
        ],
        "keyboard": "Arrows, Enter, Escape",
        "notes": "Default aria-label Search when unset."
      },
      "velin-secure-field": {
        "status": "pass",
        "roles": [
          "textbox"
        ],
        "requiredAttributes": [],
        "notes": "Native label association."
      },
      "velin-segmented-control": {
        "status": "pass",
        "roles": [
          "group"
        ],
        "requiredAttributes": [
          "aria-label"
        ],
        "keyboard": "Roving"
      },
      "velin-sheet": {
        "status": "pass",
        "roles": [
          "dialog"
        ],
        "keyboard": "Escape, Tab trap"
      },
      "velin-sparkline": {
        "status": "pass",
        "roles": [
          "img",
          "presentation"
        ],
        "requiredAttributes": [
          "label"
        ],
        "notes": "Uses label, aria-label, or figcaption aria-labelledby."
      },
      "velin-stepper": {
        "status": "pass",
        "roles": [
          "list"
        ],
        "keyboard": "N/A (display); pair with buttons calling next()/prev()",
        "notes": "aria-label per step (completed/current/upcoming); sr-only Completed text; aria-current on active step."
      },
      "velin-tabs": {
        "status": "pass",
        "roles": [
          "tablist",
          "tab",
          "tabpanel"
        ],
        "keyboard": "Roving, auto-select arrows"
      },
      "velin-theme-toggle": {
        "status": "pass",
        "roles": [
          "button",
          "menu"
        ],
        "keyboard": "Menu arrows, Escape",
        "notes": "aria-pressed on theme toggle."
      },
      "velin-toast": {
        "status": "pass",
        "roles": [
          "status",
          "alert"
        ],
        "liveRegion": "polite|assertive",
        "keyboard": "Close button"
      },
      "velin-tooltip": {
        "status": "pass",
        "roles": [
          "tooltip"
        ],
        "keyboard": "Escape, focusin"
      }
    },
    "init": "import { initA11y } from '@birdapi/velinstyle/a11y'; initA11y();"
  },
  "searchIndex": {
    "path": "dist/search-index.json",
    "entryCount": 137
  },
  "documentation": {
    "generated": "docs/generated/",
    "guides": {
      "velinMeta": "docs/guides/velin-meta.html",
      "velinSearch": "docs/guides/velin-search.html",
      "syntaxHighlight": "docs/guides/syntax-highlight.html",
      "promptScaffolding": "docs/guides/prompt-scaffolding.html",
      "apiReference": "docs/guides/api-reference.html"
    },
    "agentFiles": {
      "json": "dist/velin-agent.json",
      "llmsTxt": "dist/llms.txt"
    }
  },
  "conventions": [
    "Positioning: VelinStyle is the WCAG 2.2 AAA CSS framework with native JavaScript runtime and Web Components — not a JS-only library or a utility-only CSS kit.",
    "Use only velin-* utility classes and documented Web Components.",
    "Prefer data-velin-theme on <html> for theme switching.",
    "Run velinstyle scan on generated HTML before shipping.",
    "Do not put secrets, API keys, or raw emails in velin-meta or page meta.",
    "Resolve doc links against docs root (/docs/), not the current page folder."
  ]
}
