{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "retro-empty",
  "title": "RetroEmpty",
  "description": "A Mac OS 9 empty state (RetroEmpty, RetroEmptyHeader, RetroEmptyMedia, RetroEmptyTitle, RetroEmptyDescription, RetroEmptyContent) for empty folders, Trash and search results.",
  "dependencies": [
    "class-variance-authority"
  ],
  "registryDependencies": [
    "https://nostalgia-ui.com/r/nostalgia-theme.json"
  ],
  "files": [
    {
      "path": "registry/new-york/ui/retro-empty.tsx",
      "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\n/* ------------------------------------------------------------------ */\n/*  RetroEmpty — the \"This folder is empty\" state                      */\n/* ------------------------------------------------------------------ */\n\nconst RetroEmpty = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(\n  function RetroEmpty({ className, ...props }, ref) {\n    return (\n      <div\n        ref={ref}\n        data-slot=\"empty\"\n        className={cn(\n          \"flex min-w-0 flex-1 flex-col items-center justify-center gap-[14px]\",\n          \"p-[24px] text-center text-os9-black text-balance\",\n          className\n        )}\n        {...props}\n      />\n    )\n  }\n)\nRetroEmpty.displayName = \"RetroEmpty\"\n\n/* ------------------------------------------------------------------ */\n/*  RetroEmptyHeader                                                   */\n/* ------------------------------------------------------------------ */\n\nconst RetroEmptyHeader = React.forwardRef<\n  HTMLDivElement,\n  React.ComponentProps<\"div\">\n>(function RetroEmptyHeader({ className, ...props }, ref) {\n  return (\n    <div\n      ref={ref}\n      data-slot=\"empty-header\"\n      className={cn(\n        \"flex max-w-[320px] flex-col items-center gap-[6px] text-center\",\n        className\n      )}\n      {...props}\n    />\n  )\n})\nRetroEmptyHeader.displayName = \"RetroEmptyHeader\"\n\n/* ------------------------------------------------------------------ */\n/*  RetroEmptyMedia                                                    */\n/* ------------------------------------------------------------------ */\n\nconst retroEmptyMediaVariants = cva(\n  \"mb-[4px] flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n  {\n    variants: {\n      variant: {\n        /** Bare media — drop a 32px/48px RetroIcon straight in. */\n        default: \"bg-transparent\",\n        /** Icon sitting in a small raised tile, like a Finder icon well. */\n        icon: [\n          \"size-[44px] p-[4px]\",\n          \"border border-os9-black bg-os9-gray-300 text-os9-black\",\n          \"shadow-[inset_1px_1px_0_var(--os9-white),inset_-1px_-1px_0_var(--os9-gray-700)]\",\n        ],\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\ntype RetroEmptyMediaProps = React.ComponentProps<\"div\"> &\n  VariantProps<typeof retroEmptyMediaVariants>\n\nconst RetroEmptyMedia = React.forwardRef<HTMLDivElement, RetroEmptyMediaProps>(\n  function RetroEmptyMedia({ className, variant = \"default\", ...props }, ref) {\n    return (\n      <div\n        ref={ref}\n        data-slot=\"empty-icon\"\n        data-variant={variant}\n        className={cn(retroEmptyMediaVariants({ variant }), className)}\n        {...props}\n      />\n    )\n  }\n)\nRetroEmptyMedia.displayName = \"RetroEmptyMedia\"\n\n/* ------------------------------------------------------------------ */\n/*  RetroEmptyTitle                                                    */\n/* ------------------------------------------------------------------ */\n\nconst RetroEmptyTitle = React.forwardRef<\n  HTMLDivElement,\n  React.ComponentProps<\"div\">\n>(function RetroEmptyTitle({ className, ...props }, ref) {\n  return (\n    <div\n      ref={ref}\n      data-slot=\"empty-title\"\n      className={cn(\n        \"font-[family-name:var(--os9-font-heading)] text-[12px] tracking-[0.42px] leading-[1.1]\",\n        className\n      )}\n      {...props}\n    />\n  )\n})\nRetroEmptyTitle.displayName = \"RetroEmptyTitle\"\n\n/* ------------------------------------------------------------------ */\n/*  RetroEmptyDescription                                              */\n/* ------------------------------------------------------------------ */\n\nconst RetroEmptyDescription = React.forwardRef<\n  HTMLParagraphElement,\n  React.ComponentProps<\"p\">\n>(function RetroEmptyDescription({ className, ...props }, ref) {\n  return (\n    <p\n      ref={ref}\n      data-slot=\"empty-description\"\n      className={cn(\n        \"font-[family-name:var(--os9-font-sans)] text-[10px] leading-[1.4] text-os9-gray-800\",\n        \"[&>a]:underline [&>a]:underline-offset-2 [&>a:hover]:text-os9-azul\",\n        className\n      )}\n      {...props}\n    />\n  )\n})\nRetroEmptyDescription.displayName = \"RetroEmptyDescription\"\n\n/* ------------------------------------------------------------------ */\n/*  RetroEmptyContent                                                  */\n/* ------------------------------------------------------------------ */\n\nconst RetroEmptyContent = React.forwardRef<\n  HTMLDivElement,\n  React.ComponentProps<\"div\">\n>(function RetroEmptyContent({ className, ...props }, ref) {\n  return (\n    <div\n      ref={ref}\n      data-slot=\"empty-content\"\n      className={cn(\n        \"flex w-full max-w-[320px] min-w-0 flex-col items-center gap-[8px] text-balance\",\n        \"font-[family-name:var(--os9-font-sans)] text-[10px]\",\n        className\n      )}\n      {...props}\n    />\n  )\n})\nRetroEmptyContent.displayName = \"RetroEmptyContent\"\n\nexport {\n  RetroEmpty,\n  RetroEmptyHeader,\n  RetroEmptyMedia,\n  RetroEmptyTitle,\n  RetroEmptyDescription,\n  RetroEmptyContent,\n  retroEmptyMediaVariants,\n}\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}