{
  "$schema": "https://uipkge.dev/schema/registry-item.json",
  "name": "empty-state",
  "title": "Empty State",
  "type": "registry:ui",
  "files": [
    {
      "path": "packages/registry-svelte/components/empty-state/EmptyState.svelte",
      "content": "<script lang=\"ts\" module>\n  import type { Component } from 'svelte'\n  import type { HTMLAttributes } from 'svelte/elements'\n\n  export interface EmptyStateProps extends HTMLAttributes<HTMLDivElement> {\n    icon?: Component\n    title?: string\n    description?: string\n    role?: 'status' | 'alert'\n    headingTag?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\n    ref?: HTMLDivElement | null\n  }\n</script>\n\n<script lang=\"ts\">\n  import { cn } from '$lib/utils'\n\n  let {\n    class: className,\n    icon,\n    title,\n    description,\n    role = 'status',\n    headingTag = 'h3',\n    children,\n    ref = $bindable(null),\n    ...restProps\n  }: EmptyStateProps = $props()\n\n  const Icon = $derived(icon)\n</script>\n\n<div\n  bind:this={ref}\n  class={cn('flex flex-col items-center py-12 text-center', className)}\n  {role}\n  aria-live={role === 'alert' ? 'assertive' : 'polite'}\n  {...restProps}\n>\n  {#if Icon}\n    <Icon class=\"text-muted-foreground mx-auto mb-3 size-10\" aria-hidden=\"true\" />\n  {/if}\n  {#if title}\n    <svelte:element this={headingTag} class=\"text-foreground font-medium\">\n      {title}\n    </svelte:element>\n  {/if}\n  {#if description}\n    <p class=\"text-muted-foreground mt-1 max-w-sm text-sm\">{description}</p>\n  {/if}\n  {@render children?.()}\n</div>\n",
      "type": "registry:ui",
      "target": "~/src/lib/components/ui/empty-state/EmptyState.svelte"
    },
    {
      "path": "packages/registry-svelte/components/empty-state/index.ts",
      "content": "export { default as EmptyState, type EmptyStateProps } from './EmptyState.svelte'\n",
      "type": "registry:ui",
      "target": "~/src/lib/components/ui/empty-state/index.ts"
    }
  ],
  "dependencies": [],
  "devDependencies": [],
  "registryDependencies": [],
  "description": "Centered placeholder with icon, headline, supporting text, and one or two actions. Drop into empty lists, blank dashboards, and unauthenticated views — the standard \"nothing here yet\" pattern.",
  "categories": [
    "feedback"
  ]
}