{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "empty-state",
  "type": "registry:ui",
  "title": "Empty state",
  "description": "A place with nothing in it yet: an engraved glyph in a well, what would be here, how to start, one action; it rises in on the settle spring when the place empties.",
  "dependencies": [],
  "registryDependencies": [
    "https://metalui.dev/r/tokens.json"
  ],
  "files": [
    {
      "path": "packages/metalui/src/components/empty-state/empty-state.tsx",
      "type": "registry:ui",
      "target": "components/metalui/empty-state/empty-state.tsx",
      "content": "'use client';\n\nimport * as React from 'react';\n\n/* ─────────────────────────────────────────────────────────\n * EMPTY STATE, a place with nothing in it yet\n *\n *   rest      a glyph engraved in a sunk well, what would be here, how to start, one action\n *   arrive    when a place empties it rises one nest from below on the settle spring (T9), so it\n *             never snaps in; content arriving replaces it\n *   compact   one quiet line and the action, for small places (a panel, a table)\n * Reduce Motion: it fades in without travel.\n * A place: it holds the space where objects will be. It uses the well.\n * ───────────────────────────────────────────────────────── */\n\nconst ROOT = 'mu-empty-state grid justify-items-center gap-empty-state-gap max-w-empty-state-max-width mx-auto p-empty-state-pad text-center empty-state-arrive';\nconst WELL = 'mu-empty-state-well grid place-items-center size-empty-state-well-size rounded-empty-state-well-radius recipe-well-field text-ink3 [&>svg]:size-empty-state-well-glyph';\nconst TITLE = 'mu-empty-state-title m-0 type-title text-ink';\nconst LINE = 'mu-empty-state-description m-0 type-body text-ink2';\nconst ACTION = 'mu-empty-state-action mt-empty-state-action-gap flex flex-wrap justify-center gap-empty-state-gap';\nconst COMPACT = 'mu-empty-state flex flex-wrap items-center justify-center gap-empty-state-gap py-empty-state-gap type-body text-ink3 empty-state-arrive';\n\nexport interface EmptyStateProps {\n  /** What would be here: \"No regions yet\". */\n  title: string;\n  /** How to start: \"Draw a box around notes to make one.\" */\n  description?: React.ReactNode;\n  /** A glyph from the icon set, engraved in the well. */\n  icon?: React.ReactNode;\n  /** The one thing that starts it: usually a Button. */\n  action?: React.ReactNode;\n  /** One quiet line and the action, for small places. */\n  compact?: boolean;\n  className?: string;\n}\n\n/** A place with nothing in it yet, and how to start. */\nexport function EmptyState({ title, description, icon, action, compact, className }: EmptyStateProps) {\n  if (compact) {\n    return (\n      <div role=\"status\" className={className ? `${COMPACT} ${className}` : COMPACT}>\n        <span>{title}{description ? <> · {description}</> : null}</span>\n        {action}\n      </div>\n    );\n  }\n  return (\n    <div role=\"status\" className={className ? `${ROOT} ${className}` : ROOT}>\n      {icon && <span aria-hidden className={WELL}>{icon}</span>}\n      <p className={TITLE}>{title}</p>\n      {description && <p className={LINE}>{description}</p>}\n      {action && <div className={ACTION}>{action}</div>}\n    </div>\n  );\n}\n"
    }
  ],
  "docs": "Agent guide: https://metalui.dev/r/empty-state.md. SwiftUI: MetalEmptyState in the MetalUI Swift package."
}
