{
  "$schema": "https://shadcn-vue.com/schema/registry.json",
  "name": "wayne-ui",
  "homepage": "https://wayneui.apps.wayne.edu",
  "items": [
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-theme",
      "type": "registry:theme",
      "title": "Wayne State theme",
      "description": "The WSU token layer and the shadcn-vue variables mapped onto it, so shadcn components render in Wayne State colors with no per-component edits. It follows the operating system unless a theme has been chosen, and falls back to light.",
      "categories": [
        "theme",
        "wayne-state"
      ],
      "docs": "The theme resolves in three steps: a choice stored under `wsu-theme`, then prefers-color-scheme, then light. Pin one by putting `data-theme=\"wsu-dark\"` and `class=\"dark\"` on <html>, or import { toggleTheme } from '@waynestate/wayne-ui-css/theme' and let it store the choice. These variables alone do not style `.wsu-card`, `.wsu-input` or any other WayneUI class: `import '@waynestate/wayne-ui-css'` once, in your entry, for those to render.",
      "cssVars": {
        "theme": {
          "color-background": "var(--background)",
          "color-foreground": "var(--foreground)",
          "color-card": "var(--card)",
          "color-card-foreground": "var(--card-foreground)",
          "color-popover": "var(--popover)",
          "color-popover-foreground": "var(--popover-foreground)",
          "color-primary": "var(--primary)",
          "color-primary-foreground": "var(--primary-foreground)",
          "color-secondary": "var(--secondary)",
          "color-secondary-foreground": "var(--secondary-foreground)",
          "color-muted": "var(--muted)",
          "color-muted-foreground": "var(--muted-foreground)",
          "color-accent": "var(--accent)",
          "color-accent-foreground": "var(--accent-foreground)",
          "color-destructive": "var(--destructive)",
          "color-destructive-foreground": "var(--destructive-foreground)",
          "color-border": "var(--border)",
          "color-input": "var(--input)",
          "color-ring": "var(--ring)",
          "color-sidebar": "var(--sidebar)",
          "color-sidebar-foreground": "var(--sidebar-foreground)",
          "color-sidebar-primary": "var(--sidebar-primary)",
          "color-sidebar-primary-foreground": "var(--sidebar-primary-foreground)",
          "color-sidebar-accent": "var(--sidebar-accent)",
          "color-sidebar-accent-foreground": "var(--sidebar-accent-foreground)",
          "color-sidebar-border": "var(--sidebar-border)",
          "color-sidebar-ring": "var(--sidebar-ring)",
          "color-chart-1": "var(--chart-1)",
          "color-chart-2": "var(--chart-2)",
          "color-chart-3": "var(--chart-3)",
          "color-chart-4": "var(--chart-4)",
          "color-chart-5": "var(--chart-5)",
          "font-sans": "var(--wsu-font-family-body)",
          "font-display": "var(--wsu-font-family-display)",
          "font-mono": "var(--wsu-font-family-mono)",
          "radius-sm": "calc(var(--wsu-radius-field) * 0.6)",
          "radius-md": "var(--wsu-radius-field)",
          "radius-lg": "var(--wsu-radius-box)"
        },
        "light": {
          "wsu-green-25": "#F2F7F6",
          "wsu-green-50": "#cedddb",
          "wsu-green-100": "#9ebbb6",
          "wsu-green-200": "#6d9892",
          "wsu-green-300": "#3d766d",
          "wsu-green-400": "#0c5449",
          "wsu-green-500": "#0b4a40",
          "wsu-green-600": "#094038",
          "wsu-green-700": "#08352f",
          "wsu-green-800": "#062b27",
          "wsu-green-900": "#05211e",
          "wsu-gold-50": "#fff5d6",
          "wsu-gold-100": "#ffebad",
          "wsu-gold-200": "#ffe085",
          "wsu-gold-300": "#ffd65c",
          "wsu-gold-400": "#ffcc33",
          "wsu-gold-500": "#edbd2c",
          "wsu-gold-600": "#dbae25",
          "wsu-gold-700": "#c89f1f",
          "wsu-gold-800": "#b69018",
          "wsu-gold-900": "#a48111",
          "wsu-gold-950": "#634D00",
          "wsu-neutral-50": "#fafafa",
          "wsu-neutral-100": "#f4f4f5",
          "wsu-neutral-200": "#e4e4e7",
          "wsu-neutral-300": "#d4d4d8",
          "wsu-neutral-400": "#a1a1aa",
          "wsu-neutral-500": "#71717a",
          "wsu-neutral-600": "#52525b",
          "wsu-neutral-700": "#3f3f46",
          "wsu-neutral-800": "#27272a",
          "wsu-neutral-900": "#18181b",
          "wsu-neutral-950": "#09090b",
          "wsu-ink-700": "#314842",
          "wsu-ink-800": "#1F322E",
          "wsu-ink-900": "#142521",
          "wsu-ink-950": "#0A1916",
          "wsu-ink-975": "#050D0B",
          "wsu-white": "#FFFFFF",
          "wsu-black": "#09090b",
          "wsu-functional-danger-dark": "#9B1C2E",
          "wsu-functional-danger-light": "#FFB4AB",
          "wsu-functional-success-dark": "#0F5132",
          "wsu-functional-success-light": "#8FE0AE",
          "wsu-functional-warning-dark": "#634D00",
          "wsu-functional-warning-light": "#FFD65C",
          "wsu-functional-info-dark": "#0E5A7D",
          "wsu-functional-info-light": "#8CC8E8",
          "wsu-functional-nonproduction-dark": "#8B2145",
          "wsu-functional-nonproduction-light": "#F5A3B8",
          "wsu-space-0": "0rem",
          "wsu-space-1": "0.25rem",
          "wsu-space-2": "0.5rem",
          "wsu-space-3": "0.75rem",
          "wsu-space-4": "1rem",
          "wsu-space-5": "1.25rem",
          "wsu-space-6": "1.5rem",
          "wsu-space-8": "2rem",
          "wsu-space-10": "2.5rem",
          "wsu-space-12": "3rem",
          "wsu-space-16": "4rem",
          "wsu-space-20": "5rem",
          "wsu-space-24": "6rem",
          "wsu-space-px": "0.0625rem",
          "wsu-radius-none": "0rem",
          "wsu-radius-sm": "0.25rem",
          "wsu-radius-field": "0.375rem",
          "wsu-radius-box": "0.75rem",
          "wsu-radius-selector": "0.5rem",
          "wsu-radius-full": "9999rem",
          "wsu-size-tap-min": "2.75rem",
          "wsu-size-tap-compact": "2.25rem",
          "wsu-size-focus-ring-width": "0.1875rem",
          "wsu-size-focus-ring-offset": "0.125rem",
          "wsu-size-border-width": "0.0625rem",
          "wsu-size-border-width-strong": "0.125rem",
          "wsu-size-content-max": "75rem",
          "wsu-size-gutter": "0.9375rem",
          "wsu-size-prose-max": "42rem",
          "wsu-size-sidebar": "17rem",
          "wsu-size-sidebar-collapsed": "4rem",
          "wsu-shadow-none": "none",
          "wsu-shadow-sm": "0 1px 2px 0 rgb(16 18 18 / 0.06)",
          "wsu-shadow-md": "0 2px 4px -1px rgb(16 18 18 / 0.08), 0 1px 2px -1px rgb(16 18 18 / 0.06)",
          "wsu-shadow-lg": "0 8px 16px -4px rgb(16 18 18 / 0.10), 0 2px 4px -2px rgb(16 18 18 / 0.06)",
          "wsu-shadow-overlay": "0 16px 40px -8px rgb(16 18 18 / 0.24)",
          "wsu-bp-xs": "20rem",
          "wsu-bp-sm": "40rem",
          "wsu-bp-md": "48rem",
          "wsu-bp-lg": "64rem",
          "wsu-bp-xl": "80rem",
          "wsu-duration-instant": "0ms",
          "wsu-duration-fast": "120ms",
          "wsu-duration-base": "200ms",
          "wsu-duration-slow": "320ms",
          "wsu-z-base": "0",
          "wsu-z-sticky": "100",
          "wsu-z-drawer": "200",
          "wsu-z-overlay": "300",
          "wsu-z-toast": "400",
          "wsu-z-skip-link": "500",
          "wsu-font-family-display": "\"Stratium 1\", Lato, \"Lato Fallback\", Calibri, \"Helvetica Neue\", Arial, sans-serif",
          "wsu-font-family-body": "Lato, \"Lato Fallback\", Calibri, \"Helvetica Neue\", Arial, sans-serif",
          "wsu-font-family-mono": "ui-monospace, SFMono-Regular, Menlo, Consolas, \"Liberation Mono\", monospace",
          "wsu-font-weight-light": "300",
          "wsu-font-weight-regular": "400",
          "wsu-font-weight-bold": "700",
          "wsu-font-weight-black": "900",
          "wsu-font-size-xs": "0.75rem",
          "wsu-font-size-sm": "0.875rem",
          "wsu-font-size-base": "1rem",
          "wsu-font-size-lg": "1.125rem",
          "wsu-font-size-xl": "1.25rem",
          "wsu-font-size-2xl": "1.5rem",
          "wsu-font-size-3xl": "1.875rem",
          "wsu-font-size-4xl": "2.25rem",
          "wsu-font-size-5xl": "3rem",
          "wsu-font-lineHeight-tight": "1.2",
          "wsu-font-lineHeight-snug": "1.35",
          "wsu-font-lineHeight-base": "1.5",
          "wsu-font-lineHeight-relaxed": "1.75",
          "wsu-font-letterSpacing-tight": "-0.015em",
          "wsu-font-letterSpacing-normal": "0em",
          "wsu-font-letterSpacing-wide": "0.025em",
          "wsu-font-letterSpacing-caps": "0.06em",
          "wsu-surface": "#FFFFFF",
          "wsu-surface-sunken": "#fafafa",
          "wsu-surface-raised": "#FFFFFF",
          "wsu-surface-overlay": "#FFFFFF",
          "wsu-surface-inverse": "#18181b",
          "wsu-text": "#18181b",
          "wsu-text-muted": "#3f3f46",
          "wsu-text-subtle": "#71717a",
          "wsu-text-on-inverse": "#f4f4f5",
          "wsu-brand": "#0c5449",
          "wsu-brand-hover": "#0b4a40",
          "wsu-brand-active": "#094038",
          "wsu-brand-subtle": "#F2F7F6",
          "wsu-on-brand": "#FFFFFF",
          "wsu-accent": "#ffcc33",
          "wsu-accent-subtle": "#ffebad",
          "wsu-on-accent": "#09090b",
          "wsu-border": "#d4d4d8",
          "wsu-border-strong": "#71717a",
          "wsu-border-brand": "#0c5449",
          "wsu-focus-ring": "#0c5449",
          "wsu-focus-offset": "#FFFFFF",
          "wsu-chrome-masthead": "#094038",
          "wsu-chrome-masthead-text": "#FFFFFF",
          "wsu-chrome-masthead-muted": "#F2F7F6",
          "wsu-chrome-bar": "#0c5449",
          "wsu-chrome-bar-hover": "#0b4a40",
          "wsu-chrome-bar-text": "#FFFFFF",
          "wsu-chrome-bar-muted": "#F2F7F6",
          "wsu-chrome-on-chrome-focus": "#ffd65c",
          "wsu-chrome-mark": "#0c5449",
          "wsu-mockup-device": "#09090b",
          "wsu-mockup-bezel": "#71717a",
          "wsu-mockup-panel": "#050D0B",
          "wsu-mockup-screen": "#18181b",
          "wsu-on-mockup": "#f4f4f5",
          "wsu-danger": "#9B1C2E",
          "wsu-on-danger": "#FFFFFF",
          "wsu-success": "#0F5132",
          "wsu-on-success": "#FFFFFF",
          "wsu-warning": "#634D00",
          "wsu-on-warning": "#FFFFFF",
          "wsu-info": "#0E5A7D",
          "wsu-on-info": "#FFFFFF",
          "wsu-nonproduction": "#8B2145",
          "wsu-on-nonproduction": "#FFFFFF",
          "background": "var(--wsu-surface)",
          "foreground": "var(--wsu-text)",
          "card": "var(--wsu-surface-raised)",
          "card-foreground": "var(--wsu-text)",
          "popover": "var(--wsu-surface-overlay)",
          "popover-foreground": "var(--wsu-text)",
          "primary": "var(--wsu-brand)",
          "primary-foreground": "var(--wsu-on-brand)",
          "secondary": "var(--wsu-surface-sunken)",
          "secondary-foreground": "var(--wsu-text)",
          "muted": "var(--wsu-surface-sunken)",
          "muted-foreground": "var(--wsu-text-muted)",
          "accent": "var(--wsu-accent)",
          "accent-foreground": "var(--wsu-on-accent)",
          "destructive": "var(--wsu-danger)",
          "destructive-foreground": "var(--wsu-on-danger)",
          "border": "var(--wsu-border)",
          "input": "var(--wsu-border-strong)",
          "ring": "var(--wsu-focus-ring)",
          "radius": "var(--wsu-radius-field)",
          "sidebar": "var(--wsu-surface-sunken)",
          "sidebar-foreground": "var(--wsu-text)",
          "sidebar-primary": "var(--wsu-brand)",
          "sidebar-primary-foreground": "var(--wsu-on-brand)",
          "sidebar-accent": "var(--wsu-brand-subtle)",
          "sidebar-accent-foreground": "var(--wsu-brand)",
          "sidebar-border": "var(--wsu-border)",
          "sidebar-ring": "var(--wsu-focus-ring)",
          "chart-1": "var(--wsu-green-700)",
          "chart-2": "var(--wsu-gold-500)",
          "chart-3": "var(--wsu-green-400)",
          "chart-4": "var(--wsu-gold-800)",
          "chart-5": "var(--wsu-green-900)"
        },
        "dark": {
          "wsu-surface": "#142521",
          "wsu-surface-sunken": "#0A1916",
          "wsu-surface-raised": "#1F322E",
          "wsu-surface-overlay": "#1F322E",
          "wsu-surface-inverse": "#f4f4f5",
          "wsu-text": "#f4f4f5",
          "wsu-text-muted": "#d4d4d8",
          "wsu-text-subtle": "#a1a1aa",
          "wsu-text-on-inverse": "#142521",
          "wsu-brand": "#cedddb",
          "wsu-brand-hover": "#F2F7F6",
          "wsu-brand-active": "#FFFFFF",
          "wsu-brand-subtle": "#062b27",
          "wsu-on-brand": "#0A1916",
          "wsu-accent": "#ffd65c",
          "wsu-accent-subtle": "#a48111",
          "wsu-on-accent": "#0A1916",
          "wsu-border": "#314842",
          "wsu-border-strong": "#a1a1aa",
          "wsu-border-brand": "#cedddb",
          "wsu-focus-ring": "#ffd65c",
          "wsu-focus-offset": "#09090b",
          "wsu-chrome-masthead": "#094038",
          "wsu-chrome-masthead-text": "#FFFFFF",
          "wsu-chrome-masthead-muted": "#F2F7F6",
          "wsu-chrome-bar": "#0c5449",
          "wsu-chrome-bar-hover": "#0b4a40",
          "wsu-chrome-bar-text": "#FFFFFF",
          "wsu-chrome-bar-muted": "#F2F7F6",
          "wsu-chrome-on-chrome-focus": "#ffd65c",
          "wsu-chrome-mark": "#FFFFFF",
          "wsu-mockup-device": "#09090b",
          "wsu-mockup-bezel": "#71717a",
          "wsu-mockup-panel": "#050D0B",
          "wsu-mockup-screen": "#18181b",
          "wsu-on-mockup": "#f4f4f5",
          "wsu-danger": "#FFB4AB",
          "wsu-on-danger": "#0A1916",
          "wsu-success": "#8FE0AE",
          "wsu-on-success": "#0A1916",
          "wsu-warning": "#FFD65C",
          "wsu-on-warning": "#0A1916",
          "wsu-info": "#8CC8E8",
          "wsu-on-info": "#0A1916",
          "wsu-nonproduction": "#F5A3B8",
          "wsu-on-nonproduction": "#0A1916",
          "background": "var(--wsu-surface)",
          "foreground": "var(--wsu-text)",
          "card": "var(--wsu-surface-raised)",
          "card-foreground": "var(--wsu-text)",
          "popover": "var(--wsu-surface-overlay)",
          "popover-foreground": "var(--wsu-text)",
          "primary": "var(--wsu-brand)",
          "primary-foreground": "var(--wsu-on-brand)",
          "secondary": "var(--wsu-surface-sunken)",
          "secondary-foreground": "var(--wsu-text)",
          "muted": "var(--wsu-surface-sunken)",
          "muted-foreground": "var(--wsu-text-muted)",
          "accent": "var(--wsu-accent)",
          "accent-foreground": "var(--wsu-on-accent)",
          "destructive": "var(--wsu-danger)",
          "destructive-foreground": "var(--wsu-on-danger)",
          "border": "var(--wsu-border)",
          "input": "var(--wsu-border-strong)",
          "ring": "var(--wsu-focus-ring)",
          "radius": "var(--wsu-radius-field)",
          "sidebar": "var(--wsu-surface-sunken)",
          "sidebar-foreground": "var(--wsu-text)",
          "sidebar-primary": "var(--wsu-brand)",
          "sidebar-primary-foreground": "var(--wsu-on-brand)",
          "sidebar-accent": "var(--wsu-brand-subtle)",
          "sidebar-accent-foreground": "var(--wsu-brand)",
          "sidebar-border": "var(--wsu-border)",
          "sidebar-ring": "var(--wsu-focus-ring)",
          "chart-1": "var(--wsu-green-300)",
          "chart-2": "var(--wsu-gold-300)",
          "chart-3": "var(--wsu-green-500)",
          "chart-4": "var(--wsu-gold-500)",
          "chart-5": "var(--wsu-green-100)"
        }
      },
      "css": {
        "@layer components": {
          "[data-slot]:focus-visible": {
            "outline": "var(--wsu-size-focus-ring-width) solid var(--wsu-focus-ring)",
            "outline-offset": "var(--wsu-size-focus-ring-offset)",
            "box-shadow": "none"
          }
        }
      }
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-app-shell",
      "type": "registry:block",
      "title": "WSU application shell",
      "description": "The internal Wayne State application template: environment ribbon, compact bar, section sidebar, footer and skip link, around a focusable <main>. Installs the whole chrome and a starter page.",
      "categories": [
        "layout",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue",
        "@waynestate/wayne-ui-css"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json",
        "https://wayneui.apps.wayne.edu/r/wsu-app-bar.json",
        "https://wayneui.apps.wayne.edu/r/wsu-sidebar.json",
        "https://wayneui.apps.wayne.edu/r/wsu-breadcrumbs.json",
        "https://wayneui.apps.wayne.edu/r/wsu-page-header.json",
        "https://wayneui.apps.wayne.edu/r/wsu-footer.json",
        "https://wayneui.apps.wayne.edu/r/wsu-env-ribbon.json"
      ],
      "docs": "Import the stylesheet once in your entry: `import '@waynestate/wayne-ui-css'`. A publicly accessible page adds `import '@waynestate/wayne-ui-css/official'` after it, for the university masthead and footer. The official import is an addition and not a replacement: on its own it renders almost no styling. Then provide the icon sprite: `app.use(WayneUI, { sprite: '/assets/wayne-ui/icons.svg' })`. WsuDashboard.vue installs at src/pages/, a starting page to delete once you have your own. On Nuxt move it to app/pages/ (pages/ on Nuxt 3) and on Laravel with Inertia to resources/js/pages/; the CLI does not place it for those frameworks, measured on real scaffolds, it writes a root level file none of them load while reporting success. On Laravel, npm must also resolve tailwindcss 4: the starter kit ships 3 and the css package declares 4 as a peer, so migrate first, as the Inertia guide walks through. `nav` reaches both the app bar and the sidebar's narrow-viewport `primary-nav`, so navigation keeps working below the medium breakpoint with nothing further to wire up.",
      "files": [
        {
          "path": "src/wsu/WsuAppShell.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * The internal application template, assembled.\n *\n * This is the whole of the WSU chrome in one file: the environment ribbon, the\n * compact bar, the section sidebar, the footer, and the skip link that has to\n * come before all of them. Wrap a page in it and the page gets the layout,\n * the landmarks and the keyboard behavior without composing anything.\n *\n *   internal application  ->  compact bar, shield only, full-bleed   (this file)\n *   publicly accessible   ->  official masthead and footer, 1200px\n *\n * The frame itself comes from AppShell in @waynestate/wayne-ui-vue: the\n * four-row grid, `<main tabindex=\"-1\">`, and the drawer and theme runtime.\n * Nothing structural is reimplemented here, because the same grid has to render\n * identically from Blade and from plain HTML.\n *\n * Two details that look like details and are not:\n *\n *   - SkipLink is outside AppShell. It must be the first focusable thing in the\n *     document (2.4.1); inside the shell it would land after the ribbon and the\n *     bar in the tab order, which is a bypass block that bypasses nothing.\n *   - `mainId` and SkipLink's `target` are the same string. AppShell's `<main>`\n *     carries `tabindex=\"-1\"` so the jump moves focus rather than only\n *     scrolling to it.\n *\n * A third, easy to miss: the bar's own `nav` is hidden below the medium\n * breakpoint, and the drawer is the one place left to reach it there. This\n * file repeats `nav` into the sidebar's `primary-nav` slot itself, so a\n * consumer who only sets `nav` and `groups` still has working navigation at\n * every width, not just where the bar is docked.\n */\nimport { AppShell, Icon, SkipLink } from '@waynestate/wayne-ui-vue'\nimport WsuAppBar from './WsuAppBar.vue'\nimport WsuEnvRibbon from './WsuEnvRibbon.vue'\nimport WsuFooter from './WsuFooter.vue'\nimport WsuSidebar from './WsuSidebar.vue'\n\ndefineProps({\n  /** The tool's name, shown in the bar. */\n  title: { type: String, default: 'Wayne State application' },\n  /** Primary navigation. `[{ label, href, current }]`. */\n  nav: { type: Array, default: () => [] },\n  /** Sidebar groups. `[{ heading, items }]`. An empty list drops the column. */\n  groups: { type: Array, default: () => [] },\n  /** Names the sidebar landmark: \"Sections\", \"Filters\", never \"Navigation\". */\n  sidebarLabel: { type: String, default: 'Sections' },\n  /** Signed-in user. */\n  user: { type: String, default: '' },\n  /** `RouterLink` or Inertia's `Link`, so the sidebar keeps client-side routing. */\n  linkAs: { type: [String, Object, Function], default: 'a' },\n  /** Must match the SkipLink target; AppShell puts it on `<main>`. */\n  mainId: { type: String, default: 'main' },\n})\n\n/** One id, shared by the bar's menu button and the drawer it opens. */\nconst drawerId = 'app-sidebar'\n</script>\n\n<template>\n  <SkipLink :target=\"mainId\" />\n\n  <AppShell :main-id=\"mainId\" :sidebar=\"groups.length > 0\">\n    <template #ribbon>\n      <slot name=\"ribbon\"><WsuEnvRibbon /></slot>\n    </template>\n\n    <template #bar>\n      <slot name=\"bar\">\n        <WsuAppBar :title=\"title\" :nav=\"nav\" :user=\"user\" :drawer=\"drawerId\">\n          <template v-if=\"$slots.actions\" #actions>\n            <slot name=\"actions\" />\n          </template>\n        </WsuAppBar>\n      </slot>\n    </template>\n\n    <template v-if=\"groups.length\" #sidebar>\n      <slot name=\"sidebar\">\n        <WsuSidebar\n          :id=\"drawerId\"\n          :label=\"sidebarLabel\"\n          :groups=\"groups\"\n          :link-as=\"linkAs\"\n        >\n          <template v-if=\"nav.length\" #primary-nav>\n            <li v-for=\"item in nav\" :key=\"item.href + item.label\">\n              <component\n                :is=\"linkAs\"\n                class=\"wsu-sidebar__link\"\n                :href=\"item.href\"\n                :aria-current=\"item.current ? 'page' : undefined\"\n              >\n                <Icon v-if=\"item.icon\" :name=\"item.icon\" />\n                {{ item.label }}\n              </component>\n            </li>\n          </template>\n        </WsuSidebar>\n      </slot>\n    </template>\n\n    <template #footer>\n      <slot name=\"footer\"><WsuFooter /></slot>\n    </template>\n\n    <slot />\n  </AppShell>\n</template>\n"
        },
        {
          "path": "src/pages/WsuDashboard.vue",
          "type": "registry:file",
          "target": "~/src/pages/WsuDashboard.vue",
          "content": "<script setup>\n/**\n * A starting page inside the WSU chrome.\n *\n * Here so that `npx shadcn-vue add .../wsu-app-shell.json` produces something\n * you can actually look at in a browser, rather than a layout with a hole in\n * the middle. Delete it once your own page exists; nothing else imports it.\n *\n * The markup below is the only place in this registry that writes WayneUI\n * class names by hand, and it writes exactly three: `wsu-stack` and `wsu-prose`\n * from the base layer, which are layout aids a page applies to its own content,\n * and nothing else. Everything with behavior or state (the stats, the alert,\n * the table, the card) is a component from @waynestate/wayne-ui-vue, so\n * this page cannot drift from the markup contract that keeps the Vue, Blade,\n * raw-PHP and static-HTML paths identical.\n */\nimport {\n  Alert,\n  Badge,\n  Button,\n  Card,\n  DataTable,\n  Icon,\n  Kbd,\n  Stat,\n  StatusDot,\n} from '@waynestate/wayne-ui-vue'\nimport WsuAppShell from '@/components/wsu/WsuAppShell.vue'\nimport WsuBreadcrumbs from '@/components/wsu/WsuBreadcrumbs.vue'\nimport WsuPageHeader from '@/components/wsu/WsuPageHeader.vue'\n\nconst nav = [\n  { label: 'Term', href: '#', current: true },\n  { label: 'Catalog', href: '#' },\n  { label: 'Advising', href: '#' },\n]\n\nconst groups = [\n  {\n    heading: 'Registration',\n    items: [\n      { label: 'Select courses', href: '#', icon: 'clipboard-list', current: true },\n      { label: 'My schedule', href: '#', icon: 'calendar' },\n      { label: 'Course catalog', href: '#', icon: 'book-open' },\n    ],\n  },\n  {\n    heading: 'Records',\n    items: [\n      { label: 'Degree progress', href: '#', icon: 'graduation-cap' },\n      { label: 'Transcripts', href: '#', icon: 'file-text' },\n    ],\n  },\n]\n\nconst crumbs = [\n  { label: 'Home', href: '#' },\n  { label: 'Registration', href: '#' },\n  { label: 'Select courses', href: '#' },\n]\n\nconst columns = [\n  { key: 'course', label: 'Course', sortable: true },\n  { key: 'title', label: 'Title' },\n  { key: 'credits', label: 'Credits' },\n  { key: 'seats', label: 'Seats' },\n  { key: 'status', label: 'Status' },\n]\n\nconst rows = [\n  { course: 'CSC 2110', title: 'Computer Science I', credits: 4, seats: '12 of 40', status: 'Open' },\n  { course: 'MAT 2010', title: 'Calculus I', credits: 4, seats: '0 of 35', status: 'Closed' },\n  { course: 'ENG 3050', title: 'Technical Communication', credits: 3, seats: '4 of 25', status: 'Waitlist' },\n]\n\n/** Status is a word first and a color second, never color alone (1.4.1). */\nconst badge = { Open: 'success', Closed: 'danger', Waitlist: 'accent' }\n</script>\n\n<template>\n  <WsuAppShell title=\"Course Registration\" :nav=\"nav\" :groups=\"groups\" user=\"ee6515\">\n    <WsuBreadcrumbs :items=\"crumbs\" />\n\n    <WsuPageHeader title=\"Select courses\" subtitle=\"Winter 2027 · registration closes 8 November\">\n      <template #actions>\n        <Button variant=\"outline\"><Icon name=\"download\" />Export</Button>\n        <Button variant=\"primary\"><Icon name=\"plus\" />Add course</Button>\n      </template>\n    </WsuPageHeader>\n\n    <StatusDot variant=\"success\">Registration open</StatusDot>\n\n    <div class=\"wsu-stack\">\n      <Stat label=\"Credits enrolled\" :value=\"12\" />\n      <Stat label=\"Credits required\" :value=\"15\" />\n      <Stat label=\"Holds\" :value=\"1\" />\n    </div>\n\n    <Alert variant=\"warning\" title=\"Advising hold\">\n      You must meet with an advisor before registering for more than 12 credits.\n    </Alert>\n\n    <DataTable :columns=\"columns\" :rows=\"rows\" caption=\"Available courses, Winter 2027\">\n      <template #cell-status=\"{ value }\">\n        <Badge :variant=\"badge[value]\">{{ value }}</Badge>\n      </template>\n    </DataTable>\n\n    <Card title=\"Next steps\">\n      <p class=\"wsu-prose\">\n        Replace this page with your own. The chrome around it stays: the bar,\n        the sidebar, the drawer, the theme toggle and the skip link. Press\n        <Kbd>Esc</Kbd> to close an open drawer or dialog.\n      </p>\n    </Card>\n  </WsuAppShell>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-app-bar",
      "type": "registry:block",
      "title": "WSU application bar",
      "description": "The compact application bar: shield, application name, primary navigation, application search, theme toggle and the drawer button. One bar, not three.",
      "categories": [
        "chrome",
        "navigation",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "Pass search-variant=\"expandable\" when the page already carries the official wayne.edu masthead. Two search boxes side by side, doing different jobs and looking identical, is a confusing thing to put in front of someone.",
      "files": [
        {
          "path": "src/wsu/WsuAppBar.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * The application bar, as the internal WayneUI template configures it.\n *\n * This is a seam, not a component. The bar itself lives in\n * @waynestate/wayne-ui-vue and is not copied here. Copying it would fork\n * the markup contract, and the whole point of the contract is that the Vue,\n * Blade, raw-PHP and static-HTML paths emit the same class names. What is\n * copied is the *configuration*: which shape the bar takes, where the shield\n * lives, and what your application calls itself. Those are yours to edit.\n *\n * The defaults are the internal template's decisions:\n *\n *   compact             one bar, shield only. An internal tool is not a\n *                       marketing surface, and a stacked masthead spends ~140px\n *                       before the user reaches anything they came for.\n *   inline search       there is no wayne.edu search box on the page to be\n *                       confused with, so the field is always open. Under a\n *                       masthead, pass search-variant=\"expandable\" instead.\n *\n * Anything not declared here falls through to AppBar, so `:user`, `@search`,\n * `theme-toggle` and the `actions` slot all still work.\n */\nimport { AppBar } from '@waynestate/wayne-ui-vue'\n\ndefineProps({\n  /** The tool's name. This is the application's identity, not the university's. */\n  title: { type: String, default: 'Wayne State application' },\n  /**\n   * `[{ label, href, current }]`. `current` drives `aria-current=\"page\"`, which\n   * is what the stylesheet keys off, so the highlighted item and the announced\n   * item cannot drift apart.\n   */\n  nav: { type: Array, default: () => [] },\n  /**\n   * The university shield. `php artisan wayne-ui:install` and the docs both put\n   * the marks here; point it wherever your build publishes them.\n   */\n  mark: { type: String, default: '/assets/wayne-ui/marks/wsu-shield.svg' },\n  /** id of the sidebar the menu button opens. Must match WsuSidebar's `id`. */\n  drawer: { type: String, default: 'app-sidebar' },\n  /** Signed-in user: an identity, not a menu. */\n  user: { type: String, default: '' },\n})\n</script>\n\n<template>\n  <AppBar\n    variant=\"compact\"\n    :title=\"title\"\n    :mark=\"mark\"\n    :nav=\"nav\"\n    :drawer=\"drawer\"\n    :user=\"user\"\n    search\n    search-variant=\"inline\"\n    v-bind=\"$attrs\"\n  >\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </AppBar>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-sidebar",
      "type": "registry:block",
      "title": "WSU sidebar",
      "description": "Section navigation, docked above the medium breakpoint, an overlay drawer below it, with the drawer genuinely removed from the tab order while closed.",
      "categories": [
        "chrome",
        "navigation",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "The `id` must match the app bar's `drawer` prop; that one string is what ties the menu button to the drawer it opens. Pass `:link-as=\"RouterLink\"` to keep client-side navigation. Pass the same items the app bar's `nav` prop takes into the `primary-nav` slot too: the bar's own nav is hidden below the medium breakpoint, and this drawer is the only other place on the page at that width, so a page using WsuSidebar directly (rather than through wsu-app-shell, which does this for you) needs to repeat them here or navigation is simply gone below 768px.",
      "files": [
        {
          "path": "src/wsu/WsuSidebar.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Section navigation, docked above the medium breakpoint and an overlay drawer\n * below it.\n *\n * Groups are data rather than markup so that the heading, the list and the\n * `aria-labelledby` that ties them together cannot be wired up wrongly by hand.\n * Each group is `{ heading, items }`, and each item is\n * `{ label, href, icon, current, children }`.\n *\n * `linkAs` is the reason this file is yours to own: an application with a\n * router passes `RouterLink` (or Inertia's `Link`) and keeps client-side\n * navigation, without the design system taking a dependency on either.\n *\n * The `primary-nav` slot is forwarded to the real Sidebar unchanged. It exists\n * because the app bar's own nav is hidden below the medium breakpoint with\n * nothing standing in for it: this drawer is the only other place on the page\n * at that width, so the same links belong here too, or they are gone below\n * 768px for anyone who cannot reach a docked bar. WsuAppShell fills this in\n * for you from its own `nav` prop; pass it by hand here when you use\n * WsuSidebar on its own.\n */\nimport { Sidebar, SidebarNav } from '@waynestate/wayne-ui-vue'\n\ndefineProps({\n  /** Must match WsuAppBar's `drawer`. */\n  id: { type: String, default: 'app-sidebar' },\n  /**\n   * Names the landmark. \"Sections\" or \"Filters\", never \"Navigation\". The role\n   * is already announced, so `aria-label=\"Navigation\"` produces \"Navigation\n   * navigation\".\n   */\n  label: { type: String, default: 'Sections' },\n  /** `[{ heading, items }]`. */\n  groups: { type: Array, default: () => [] },\n  /** e.g. `RouterLink` or Inertia's `Link`. Receives the href as `href`. */\n  linkAs: { type: [String, Object, Function], default: 'a' },\n})\n</script>\n\n<template>\n  <Sidebar :id=\"id\" :label=\"label\">\n    <template v-if=\"$slots['primary-nav']\" #primary-nav>\n      <slot name=\"primary-nav\" />\n    </template>\n\n    <slot>\n      <SidebarNav\n        v-for=\"group in groups\"\n        :key=\"group.heading\"\n        :heading=\"group.heading\"\n        :items=\"group.items\"\n        :link-as=\"linkAs\"\n      />\n    </slot>\n  </Sidebar>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-breadcrumbs",
      "type": "registry:block",
      "title": "WSU breadcrumbs",
      "description": "The breadcrumb trail. The last crumb is not a link, and the separators are aria-hidden icons rather than slash characters.",
      "categories": [
        "chrome",
        "navigation",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "Edit this file if you would rather derive the trail from `route.matched` and a `meta.crumb` field than pass it in.",
      "files": [
        {
          "path": "src/wsu/WsuBreadcrumbs.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * The breadcrumb trail.\n *\n * Copied into your project for one reason: where the trail comes from is an\n * application decision. A record page usually knows its own name before the\n * router does, so the trail is passed in here, and this is the file to edit if\n * you would rather derive it from `route.matched` and a `meta.crumb` field.\n *\n * Two accessibility details belong to the component and are not yours to\n * reimplement: the last crumb is a `<span aria-current=\"page\">` rather than a\n * link to the page you are already on, and the separators are `aria-hidden`\n * icons instead of \"/\" characters. WayneUI 1.x put the slash in the markup as\n * text, so every crumb was read out as \"Home slash Registration slash Select\n * courses\".\n */\nimport { Breadcrumbs } from '@waynestate/wayne-ui-vue'\n\ndefineProps({\n  /** `[{ label, href }]`, root first. The last entry is the current page. */\n  items: { type: Array, default: () => [] },\n  /** Pass `RouterLink` to keep client-side navigation. */\n  linkAs: { type: [String, Object, Function], default: 'a' },\n  label: { type: String, default: 'Breadcrumb' },\n})\n</script>\n\n<template>\n  <Breadcrumbs :items=\"items\" :link-as=\"linkAs\" :label=\"label\" />\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-page-header",
      "type": "registry:block",
      "title": "WSU page header",
      "description": "Page title, subtitle and the actions that belong to the page as a whole, with the heading level as a prop so the document outline stays in order.",
      "categories": [
        "chrome",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "files": [
        {
          "path": "src/wsu/WsuPageHeader.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Page title, subtitle and the actions belonging to the page as a whole.\n *\n * `level` is a prop rather than a fixed `<h1>` because a page can legitimately\n * carry more than one of these. A detail panel inside a page already headed by\n * an `<h1>` needs an `<h2>`, or the heading outline breaks. The outline is how\n * most screen reader users move around a page (2.4.10), so this is not a\n * cosmetic choice.\n *\n * The subtitle stays a `<p>`. It describes the title; promoting it to a heading\n * puts a rung in the outline that leads nowhere.\n */\nimport { PageHeader } from '@waynestate/wayne-ui-vue'\n\ndefineProps({\n  title: { type: String, default: '' },\n  subtitle: { type: String, default: '' },\n  /** 1–6. Pick the one that keeps the document outline in order. */\n  level: { type: Number, default: 1, validator: (n) => n >= 1 && n <= 6 },\n})\n</script>\n\n<template>\n  <PageHeader :title=\"title\" :subtitle=\"subtitle\" :level=\"level\">\n    <slot>{{ title }}</slot>\n\n    <template v-if=\"$slots.subtitle\" #subtitle>\n      <slot name=\"subtitle\" />\n    </template>\n\n    <template v-if=\"$slots.actions\" #actions>\n      <slot name=\"actions\" />\n    </template>\n  </PageHeader>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-footer",
      "type": "registry:block",
      "title": "WSU application footer",
      "description": "The internal application footer: the Warrior Strong mark, the links every WSU application owes its users, and a copyright line.",
      "categories": [
        "chrome",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A publicly accessible application takes the official @waynestate footer instead. It carries the privacy and policy information the university is expected to publish. Pass `#mark` for an inline SVG lockup instead of the `mark` prop's `<img>`, or `#meta` for richer meta content than a plain string; both are forwarded to the real Footer and fall back to the `mark`/`meta` props when you do not pass them.",
      "files": [
        {
          "path": "src/wsu/WsuFooter.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * The internal application footer.\n *\n * The pairing is deliberate and stated in chrome.css:\n *\n *   internal application  ->  WsuAppBar + WsuFooter\n *   publicly accessible   ->  the official @waynestate header and footer\n *\n * A public site needs the contact, accessibility and non-discrimination\n * information the university publishes. An internal tool needs a route back to\n * the help desk and a copyright line, which is what the defaults below are.\n * Edit the links; they are the one part of the footer that is per-application.\n *\n * `#mark` and `#meta` are forwarded to the real Footer, only when you pass\n * them: an inline SVG lockup instead of the `mark` prop's `<img>`, or richer\n * meta content than a plain string. Leave them out and the `mark`/`meta` props\n * above still work exactly as documented.\n */\nimport { Footer } from '@waynestate/wayne-ui-vue'\n\ndefineProps({\n  /**\n   * `true` (default) shows the standard Warrior Strong mark. `false` hides it.\n   * A URL overrides it with your unit's own lockup.\n   *\n   * Do not pass the standard mark's own URL here to get the standard mark. This\n   * defaulted to '/assets/wayne-ui/marks/warrior-strong.svg' until 2.0.5, and a\n   * string makes Footer render a literal <img> pinned to that one file, while\n   * `true` renders a role=\"img\" element whose background swaps with the theme.\n   * Every consumer taking the default therefore got a light-theme mark that\n   * stayed light on a dark footer: measured at 2.05:1 against a required 4.5:1.\n   */\n  mark: { type: [Boolean, String], default: true },\n  markAlt: { type: String, default: 'Warrior Strong' },\n  /** `[{ label, href }]`. */\n  links: {\n    type: Array,\n    default: () => [\n      { label: 'wayne.edu', href: 'https://wayne.edu/' },\n      { label: 'Help Desk', href: 'https://tech.wayne.edu/' },\n      { label: 'Accessibility', href: 'https://wayne.edu/accessibility/' },\n      { label: 'Privacy and University Policies', href: 'https://wayne.edu/policies' },\n    ],\n  },\n  /** Falls back to a copyright line for the current year. */\n  meta: { type: String, default: '' },\n})\n</script>\n\n<template>\n  <Footer :mark=\"mark\" :mark-alt=\"markAlt\" :links=\"links\" :meta=\"meta\">\n    <template v-if=\"$slots.mark\" #mark>\n      <slot name=\"mark\" />\n    </template>\n\n    <template v-if=\"$slots.meta\" #meta>\n      <slot name=\"meta\" />\n    </template>\n  </Footer>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-env-ribbon",
      "type": "registry:block",
      "title": "WSU environment ribbon",
      "description": "Non-production indicator. The color is the familiar cue but the strip says what it means in words, so it survives without color vision (1.4.1).",
      "categories": [
        "chrome",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "Reads import.meta.env.MODE by default. A Laravel + Inertia application should pass the shared APP_ENV value instead. Renders nothing in production, so a layout can include it unconditionally.",
      "files": [
        {
          "path": "src/wsu/WsuEnvRibbon.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Non-production banner.\n *\n * WayneUI 1.x signaled this by recoloring the whole navigation bar maroon,\n * which is information by color alone (1.4.1). Here the color stays as the\n * familiar cue but the strip says what it means in words, and `role=\"status\"`\n * announces it politely once rather than interrupting whatever the screen\n * reader was reading to shout about the deployment environment.\n *\n * Wired to `import.meta.env.MODE` here because that is what a Vite application\n * has. A Laravel + Inertia application should pass the shared `APP_ENV` value\n * instead. That is the edit this file exists for. It renders nothing in\n * production, so a layout can include it unconditionally.\n */\nimport { EnvRibbon } from '@waynestate/wayne-ui-vue'\n\ndefineProps({\n  environment: { type: String, default: () => import.meta.env.MODE },\n  /** Overrides the generated wording. */\n  label: { type: String, default: '' },\n  /** Environments considered live. Anything not listed shows the ribbon. */\n  /**\n   * Either a list of environment names considered live, or a plain boolean.\n   *\n   * The boolean form exists because `HandleWayneUi::environment()` shares\n   * exactly that. This wrapper declared `Array` alone until 2.0.5, one release\n   * after the component it forwards to accepted both, so a shadcn consumer\n   * binding Laravel's shared props got a prop type warning from the wrapper\n   * about a value the component underneath handles correctly.\n   *\n   * That is the same defect the component's own fix was written about: two\n   * halves of one system disagreeing about the type of a prop they share by\n   * name, with nothing comparing them. This half was missed because the fix\n   * changed the component and nothing rebuilt or rechecked the wrapper.\n   */\n  production: { type: [Array, Boolean], default: () => ['production', 'prod'] },\n})\n</script>\n\n<template>\n  <EnvRibbon :environment=\"environment\" :label=\"label\" :production=\"production\">\n    <!--\n      Forwarded only when there is something to forward. An unconditional\n      `<slot />` passes a slot function whatever the caller did, which would\n      replace the ribbon's own generated wording with nothing.\n    -->\n    <slot v-if=\"$slots.default\" />\n  </EnvRibbon>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-app-search",
      "type": "registry:component",
      "title": "AppSearch",
      "description": "Application search. Searches the application’s own records, which is a different job from the wayne.edu box in the official masthead.",
      "categories": [
        "chrome",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to AppSearch in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuAppSearch.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * AppSearch lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { AppSearch } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { AppSearch } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <AppSearch v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </AppSearch>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-sidebar-nav",
      "type": "registry:component",
      "title": "SidebarNav",
      "description": "A labeled group of sidebar links, with one level of nesting.",
      "categories": [
        "chrome",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to SidebarNav in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuSidebarNav.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * SidebarNav lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { SidebarNav } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { SidebarNav } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <SidebarNav v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </SidebarNav>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-skip-link",
      "type": "registry:component",
      "title": "SkipLink",
      "description": "The first thing in the tab order. Visible only once focused.",
      "categories": [
        "chrome",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to SkipLink in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuSkipLink.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * SkipLink lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { SkipLink } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { SkipLink } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <SkipLink v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </SkipLink>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-masthead",
      "type": "registry:component",
      "title": "Masthead",
      "description": "WayneUI’s own masthead, for a public page that wants university identity without the full official chrome.",
      "categories": [
        "chrome",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Masthead in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuMasthead.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Masthead lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Masthead } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Masthead } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Masthead v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Masthead>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-official-header",
      "type": "registry:component",
      "title": "OfficialHeader",
      "description": "The real wayne.edu masthead, rendered from @waynestate/wsuheader. Never copied into a view.",
      "categories": [
        "chrome",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to OfficialHeader in @waynestate/wayne-ui-vue, which is itself a thin wrapper around @waynestate/wsuheader, the real masthead, built and maintained outside WayneUI and outside this registry. Nothing here vendors a copy of it; a defect in the masthead itself belongs to @waynestate/wsuheader, not to this item. See https://wayneui.apps.wayne.edu/docs/contributing/#the-official-components.",
      "files": [
        {
          "path": "src/wsu/generated/WsuOfficialHeader.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * OfficialHeader lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { OfficialHeader } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { OfficialHeader } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <OfficialHeader v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </OfficialHeader>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-official-footer",
      "type": "registry:component",
      "title": "OfficialFooter",
      "description": "The real wayne.edu footer, rendered from @waynestate/wsufooter.",
      "categories": [
        "chrome",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to OfficialFooter in @waynestate/wayne-ui-vue, which is itself a thin wrapper around @waynestate/wsufooter, the real footer, built and maintained outside WayneUI and outside this registry. Nothing here vendors a copy of it; a defect in the footer itself belongs to @waynestate/wsufooter, not to this item. See https://wayneui.apps.wayne.edu/docs/contributing/#the-official-components.",
      "files": [
        {
          "path": "src/wsu/generated/WsuOfficialFooter.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * OfficialFooter lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { OfficialFooter } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { OfficialFooter } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <OfficialFooter v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </OfficialFooter>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-university-footer",
      "type": "registry:component",
      "title": "UniversityFooter",
      "description": "WayneUI’s own university footer, with the legal links a public university page is expected to carry.",
      "categories": [
        "chrome",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to UniversityFooter in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuUniversityFooter.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * UniversityFooter lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { UniversityFooter } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { UniversityFooter } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <UniversityFooter v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </UniversityFooter>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-icon",
      "type": "registry:component",
      "title": "Icon",
      "description": "One symbol from the WayneUI sprite. 32 Lucide icons, subset to what the components use, served as one file.",
      "categories": [
        "chrome",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Icon in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuIcon.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Icon lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Icon } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Icon } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Icon v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Icon>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-button",
      "type": "registry:component",
      "title": "Button",
      "description": "A button, or a link that looks like one. The element follows the job, not the paint.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Button in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuButton.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Button lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Button } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Button } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Button v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Button>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-badge",
      "type": "registry:component",
      "title": "Badge",
      "description": "A small status chip. The word inside is the status; the color reinforces it.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Badge in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuBadge.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Badge lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Badge } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Badge } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Badge v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Badge>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-status-dot",
      "type": "registry:component",
      "title": "StatusDot",
      "description": "A colored dot with a text label beside it, the same division of labor as a badge.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to StatusDot in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuStatusDot.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * StatusDot lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { StatusDot } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { StatusDot } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <StatusDot v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </StatusDot>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-kbd",
      "type": "registry:component",
      "title": "Kbd",
      "description": "A literal key or shortcut. Styled, not interactive.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Kbd in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuKbd.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Kbd lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Kbd } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Kbd } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Kbd v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Kbd>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-loading",
      "type": "registry:component",
      "title": "Loading",
      "description": "An in-progress marker with a text label beside it.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Loading in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuLoading.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Loading lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Loading } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Loading } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Loading v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Loading>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-avatar",
      "type": "registry:component",
      "title": "Avatar",
      "description": "A person, as a photo or as initials.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Avatar in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuAvatar.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Avatar lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Avatar } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Avatar } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Avatar v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Avatar>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-timeline",
      "type": "registry:component",
      "title": "Timeline",
      "description": "A sequence of dated events, read as one history.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Timeline in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuTimeline.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Timeline lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Timeline } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Timeline } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Timeline v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Timeline>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-accordion",
      "type": "registry:component",
      "title": "Accordion",
      "description": "A set of disclosures, each a native <details>.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Accordion in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuAccordion.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Accordion lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Accordion } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Accordion } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Accordion v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Accordion>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-chat",
      "type": "registry:component",
      "title": "Chat",
      "description": "A conversation, read in the order it happened.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Chat in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuChat.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Chat lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Chat } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Chat } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Chat v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Chat>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-code-block",
      "type": "registry:component",
      "title": "CodeBlock",
      "description": "A block of code with a button that copies it.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to CodeBlock in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/. This component has no script of its own: its behavior comes from useChromeRuntime() in @waynestate/wayne-ui-vue, the same runtime AppShell wires up automatically. On a page with no AppShell, import useChromeRuntime and call it once yourself, or this renders once and never changes again.",
      "files": [
        {
          "path": "src/wsu/generated/WsuCodeBlock.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * CodeBlock lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { CodeBlock } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { CodeBlock } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <CodeBlock v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </CodeBlock>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-browser",
      "type": "registry:component",
      "title": "Browser",
      "description": "A browser window around whatever the slot holds: a page, a screenshot, a live embed.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Browser in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuBrowser.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Browser lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Browser } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Browser } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Browser v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Browser>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-window",
      "type": "registry:component",
      "title": "Window",
      "description": "A generic window frame around whatever the slot holds.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Window in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuWindow.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Window lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Window } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Window } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Window v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Window>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-phone",
      "type": "registry:component",
      "title": "Phone",
      "description": "A phone body around whatever the slot holds.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Phone in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuPhone.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Phone lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Phone } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Phone } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Phone v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Phone>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-terminal",
      "type": "registry:component",
      "title": "Terminal",
      "description": "A recorded terminal session: what running something looked like, not code to take away.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Terminal in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuTerminal.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Terminal lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Terminal } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Terminal } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Terminal v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Terminal>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-countdown",
      "type": "registry:component",
      "title": "Countdown",
      "description": "A count to a fixed moment: a registration deadline, an application closing.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Countdown in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/. This component has no script of its own: its behavior comes from useChromeRuntime() in @waynestate/wayne-ui-vue, the same runtime AppShell wires up automatically. On a page with no AppShell, import useChromeRuntime and call it once yourself, or this renders once and never changes again.",
      "files": [
        {
          "path": "src/wsu/generated/WsuCountdown.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Countdown lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Countdown } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Countdown } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Countdown v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Countdown>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-text-rotate",
      "type": "registry:component",
      "title": "TextRotate",
      "description": "A short list of facts, shown one at a time: an announcement strip rather than a marketing carousel.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to TextRotate in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/. This component has no script of its own: its behavior comes from useChromeRuntime() in @waynestate/wayne-ui-vue, the same runtime AppShell wires up automatically. On a page with no AppShell, import useChromeRuntime and call it once yourself, or this renders once and never changes again.",
      "files": [
        {
          "path": "src/wsu/generated/WsuTextRotate.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * TextRotate lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { TextRotate } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { TextRotate } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <TextRotate v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </TextRotate>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-divider",
      "type": "registry:component",
      "title": "Divider",
      "description": "A rule between blocks of content, with an optional label.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Divider in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuDivider.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Divider lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Divider } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Divider } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Divider v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Divider>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-progress",
      "type": "registry:component",
      "title": "Progress",
      "description": "A determinate progress bar.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Progress in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuProgress.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Progress lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Progress } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Progress } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Progress v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Progress>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-card",
      "type": "registry:component",
      "title": "Card",
      "description": "A bounded block of related content, with an optional title and footer.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Card in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuCard.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Card lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Card } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Card } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Card v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Card>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-stat",
      "type": "registry:component",
      "title": "Stat",
      "description": "A single headline figure with its label.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Stat in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuStat.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Stat lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Stat } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Stat } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Stat v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Stat>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-data-table",
      "type": "registry:component",
      "title": "DataTable",
      "description": "A sortable table of records, with a caption and row headers.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to DataTable in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuDataTable.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * DataTable lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { DataTable } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { DataTable } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <DataTable v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </DataTable>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-pagination",
      "type": "registry:component",
      "title": "Pagination",
      "description": "Page links, eliding the middle when there are many.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Pagination in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuPagination.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Pagination lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Pagination } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Pagination } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Pagination v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Pagination>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-tabs",
      "type": "registry:component",
      "title": "Tabs",
      "description": "The ARIA tab pattern, keyboard contract included.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Tabs in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuTabs.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Tabs lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Tabs } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Tabs } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Tabs v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Tabs>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-carousel",
      "type": "registry:component",
      "title": "Carousel",
      "description": "A set of slides, moved between with Previous, Next or a row of dots. Never advances on its own.",
      "categories": [
        "content",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Carousel in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuCarousel.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Carousel lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Carousel } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Carousel } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Carousel v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Carousel>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-input",
      "type": "registry:component",
      "title": "Input",
      "description": "A text field with its label, hint and error already wired together.",
      "categories": [
        "forms",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Input in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuInput.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Input lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Input } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Input } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Input v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Input>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-select",
      "type": "registry:component",
      "title": "Select",
      "description": "A native select. Not a listbox reimplementation.",
      "categories": [
        "forms",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Select in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuSelect.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Select lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Select } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Select } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Select v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Select>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-textarea",
      "type": "registry:component",
      "title": "Textarea",
      "description": "Multi-line text, shown here in its error state.",
      "categories": [
        "forms",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Textarea in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuTextarea.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Textarea lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Textarea } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Textarea } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Textarea v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Textarea>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-checkbox",
      "type": "registry:component",
      "title": "Checkbox",
      "description": "A single checkbox, or one of a set bound to an array.",
      "categories": [
        "forms",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Checkbox in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuCheckbox.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Checkbox lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Checkbox } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Checkbox } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Checkbox v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Checkbox>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-radio-group",
      "type": "registry:component",
      "title": "RadioGroup",
      "description": "A set of radios in a fieldset, with one legend and one error for the group.",
      "categories": [
        "forms",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to RadioGroup in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuRadioGroup.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * RadioGroup lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { RadioGroup } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { RadioGroup } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <RadioGroup v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </RadioGroup>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-error-summary",
      "type": "registry:component",
      "title": "ErrorSummary",
      "description": "Everything that failed validation, at the top of the form, each entry linking to its field.",
      "categories": [
        "forms",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to ErrorSummary in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuErrorSummary.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * ErrorSummary lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { ErrorSummary } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { ErrorSummary } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <ErrorSummary v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </ErrorSummary>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-alert",
      "type": "registry:component",
      "title": "Alert",
      "description": "An inline message about the page or the last action.",
      "categories": [
        "feedback",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Alert in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuAlert.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Alert lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Alert } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Alert } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Alert v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Alert>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-dialog",
      "type": "registry:component",
      "title": "Dialog",
      "description": "A modal built on the native dialog element and the top layer.",
      "categories": [
        "feedback",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Dialog in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuDialog.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Dialog lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Dialog } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Dialog } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Dialog v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Dialog>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-empty-state",
      "type": "registry:component",
      "title": "EmptyState",
      "description": "Nothing here yet, and what to do about it.",
      "categories": [
        "feedback",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to EmptyState in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuEmptyState.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * EmptyState lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { EmptyState } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { EmptyState } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <EmptyState v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </EmptyState>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-skeleton",
      "type": "registry:component",
      "title": "Skeleton",
      "description": "A placeholder while content loads.",
      "categories": [
        "feedback",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Skeleton in @waynestate/wayne-ui-vue: every prop, attribute and slot passed through, nothing duplicated. See https://wayneui.apps.wayne.edu/docs/guide/vue/.",
      "files": [
        {
          "path": "src/wsu/generated/WsuSkeleton.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Skeleton lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Skeleton } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Skeleton } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Skeleton v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Skeleton>\n</template>\n"
        }
      ]
    },
    {
      "$schema": "https://shadcn-vue.com/schema/registry-item.json",
      "name": "wsu-toast",
      "type": "registry:component",
      "title": "Toast",
      "description": "A transient message, queued through a live region.",
      "categories": [
        "feedback",
        "wayne-state"
      ],
      "dependencies": [
        "@waynestate/wayne-ui-vue"
      ],
      "registryDependencies": [
        "https://wayneui.apps.wayne.edu/r/wsu-theme.json"
      ],
      "docs": "A one-file forward to Toast in @waynestate/wayne-ui-vue. A toast is raised with pushToast() from that package and displayed by mounting <Toasts /> once; this item forwards the single Toast component the queue renders, not the queue itself. There is no wsu-toasts registry item to install for that queue: import Toasts from @waynestate/wayne-ui-vue yourself and mount it once, anywhere on the page, for a working queue.",
      "files": [
        {
          "path": "src/wsu/generated/WsuToast.vue",
          "type": "registry:component",
          "content": "<script setup>\n/**\n * Generated from apps/site/src/gallery/examples.mjs by packages/registry/build.mjs.\n *\n * Toast lives in @waynestate/wayne-ui-vue and is not copied here: this file\n * forwards every prop, attribute and slot to it, unchanged. Installing it from\n * the registry buys nothing that `import { Toast } from '@waynestate/wayne-ui-vue'`\n * does not already give a project that has installed wsu-theme; it exists so\n * the registry covers every WayneUI component the way it covers the chrome\n * (ADR-0002), rather than the chrome plus whatever somebody remembered to add.\n *\n * Do not hand edit. `pnpm --filter @waynestate/wayne-ui-registry build`\n * overwrites this file from the gallery entry every time it runs.\n */\nimport { Toast } from '@waynestate/wayne-ui-vue'\n</script>\n\n<template>\n  <Toast v-bind=\"$attrs\">\n    <template v-for=\"(_, slot) in $slots\" #[slot]=\"scope\">\n      <slot :name=\"slot\" v-bind=\"scope ?? {}\" />\n    </template>\n  </Toast>\n</template>\n"
        }
      ]
    }
  ]
}
