{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "extend-ui",
  "homepage": "https://github.com/extend-hq/ui",
  "items": [
    {
      "name": "utils",
      "type": "registry:lib",
      "title": "Utils",
      "description": "Shared class name helper used by Extend UI registry components.",
      "dependencies": ["clsx@^2.1.1", "tailwind-merge@^3.3.1"],
      "files": [
        {
          "path": "registry/new-york-v4/lib/utils.ts",
          "type": "registry:lib",
          "target": "@lib/utils.ts"
        }
      ]
    },
    {
      "name": "use-mobile",
      "type": "registry:hook",
      "title": "Use Mobile",
      "description": "A media query hook for mobile responsive UI.",
      "files": [
        {
          "path": "registry/new-york-v4/hooks/use-mobile.ts",
          "type": "registry:hook",
          "target": "@hooks/use-mobile.ts"
        }
      ]
    },
    {
      "name": "accordion",
      "type": "registry:ui",
      "title": "Accordion",
      "description": "A vertically stacked set of expandable content panels.",
      "dependencies": [
        "@base-ui/react@^1.4.1",
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6"
      ],
      "registryDependencies": ["utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/accordion.tsx",
          "type": "registry:ui",
          "target": "@ui/accordion.tsx"
        }
      ]
    },
    {
      "name": "alert",
      "type": "registry:ui",
      "title": "Alert",
      "description": "A callout for displaying contextual messages.",
      "dependencies": ["class-variance-authority@^0.7.1"],
      "registryDependencies": ["utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/alert.tsx",
          "type": "registry:ui",
          "target": "@ui/alert.tsx"
        }
      ]
    },
    {
      "name": "aspect-ratio",
      "type": "registry:ui",
      "title": "Aspect Ratio",
      "description": "A small wrapper for preserving media aspect ratios.",
      "files": [
        {
          "path": "registry/new-york-v4/ui/aspect-ratio.tsx",
          "type": "registry:ui",
          "target": "@ui/aspect-ratio.tsx"
        }
      ]
    },
    {
      "name": "autocomplete",
      "type": "registry:ui",
      "title": "Autocomplete",
      "description": "An autocomplete input built on Base UI primitives.",
      "dependencies": [
        "@base-ui/react@^1.4.1",
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6"
      ],
      "registryDependencies": ["input", "scroll-area", "utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/autocomplete.tsx",
          "type": "registry:ui",
          "target": "@ui/autocomplete.tsx"
        }
      ]
    },
    {
      "name": "badge",
      "type": "registry:ui",
      "title": "Badge",
      "description": "A compact label for status, metadata, and categorization.",
      "dependencies": [
        "@base-ui/react@^1.4.1",
        "class-variance-authority@^0.7.1"
      ],
      "registryDependencies": ["utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/badge.tsx",
          "type": "registry:ui",
          "target": "@ui/badge.tsx"
        }
      ]
    },
    {
      "name": "breadcrumb",
      "type": "registry:ui",
      "title": "Breadcrumb",
      "description": "Navigation breadcrumbs for page hierarchy.",
      "dependencies": [
        "@base-ui/react@^1.4.1",
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6"
      ],
      "registryDependencies": ["utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/breadcrumb.tsx",
          "type": "registry:ui",
          "target": "@ui/breadcrumb.tsx"
        }
      ]
    },
    {
      "name": "button",
      "type": "registry:ui",
      "title": "Button",
      "description": "A polymorphic button primitive with variants, sizes, and loading state.",
      "dependencies": [
        "@base-ui/react@^1.4.1",
        "class-variance-authority@^0.7.1"
      ],
      "registryDependencies": ["spinner", "utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/button.tsx",
          "type": "registry:ui",
          "target": "@ui/button.tsx"
        }
      ]
    },
    {
      "name": "card",
      "type": "registry:ui",
      "title": "Card",
      "description": "A flexible container primitive for grouped content.",
      "dependencies": ["@base-ui/react@^1.4.1"],
      "registryDependencies": ["utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/card.tsx",
          "type": "registry:ui",
          "target": "@ui/card.tsx"
        }
      ]
    },
    {
      "name": "collapsible",
      "type": "registry:ui",
      "title": "Collapsible",
      "description": "A disclosure primitive for expandable content.",
      "dependencies": ["@base-ui/react@^1.4.1"],
      "registryDependencies": ["utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/collapsible.tsx",
          "type": "registry:ui",
          "target": "@ui/collapsible.tsx"
        }
      ]
    },
    {
      "name": "color-picker",
      "type": "registry:ui",
      "title": "Color Picker",
      "description": "A compact popover color picker with hex, RGB, CSS, and HSL input formats.",
      "dependencies": [
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6"
      ],
      "registryDependencies": [
        "button",
        "input",
        "popover",
        "select",
        "tooltip",
        "utils"
      ],
      "files": [
        {
          "path": "components/ui/color-picker.tsx",
          "type": "registry:ui",
          "target": "@ui/color-picker.tsx"
        }
      ]
    },
    {
      "name": "command",
      "type": "registry:ui",
      "title": "Command",
      "description": "A command menu surface powered by cmdk.",
      "dependencies": [
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6",
        "cmdk@^1.1.1"
      ],
      "registryDependencies": ["dialog", "utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/command.tsx",
          "type": "registry:ui",
          "target": "@ui/command.tsx"
        }
      ]
    },
    {
      "name": "dialog",
      "type": "registry:ui",
      "title": "Dialog",
      "description": "An accessible modal dialog built on Base UI.",
      "dependencies": [
        "@base-ui/react@^1.4.1",
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6"
      ],
      "registryDependencies": ["button", "scroll-area", "utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/dialog.tsx",
          "type": "registry:ui",
          "target": "@ui/dialog.tsx"
        }
      ]
    },
    {
      "name": "dropdown-menu",
      "type": "registry:ui",
      "title": "Dropdown Menu",
      "description": "A dropdown menu built on Base UI menu primitives.",
      "dependencies": [
        "@base-ui/react@^1.4.1",
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6"
      ],
      "registryDependencies": ["utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/dropdown-menu.tsx",
          "type": "registry:ui",
          "target": "@ui/dropdown-menu.tsx"
        }
      ]
    },
    {
      "name": "input",
      "type": "registry:ui",
      "title": "Input",
      "description": "A styled text input built on Base UI.",
      "dependencies": ["@base-ui/react@^1.4.1"],
      "registryDependencies": ["utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/input.tsx",
          "type": "registry:ui",
          "target": "@ui/input.tsx"
        }
      ]
    },
    {
      "name": "group",
      "type": "registry:ui",
      "title": "Group",
      "description": "A connected control group primitive for buttons, inputs, separators, and text addons.",
      "dependencies": [
        "@base-ui/react@^1.4.1",
        "class-variance-authority@^0.7.1"
      ],
      "registryDependencies": ["separator", "utils"],
      "files": [
        {
          "path": "components/ui/group.tsx",
          "type": "registry:ui",
          "target": "@ui/group.tsx"
        }
      ]
    },
    {
      "name": "kbd",
      "type": "registry:ui",
      "title": "Kbd",
      "description": "A keyboard shortcut display primitive.",
      "registryDependencies": ["utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/kbd.tsx",
          "type": "registry:ui",
          "target": "@ui/kbd.tsx"
        }
      ]
    },
    {
      "name": "popover",
      "type": "registry:ui",
      "title": "Popover",
      "description": "A floating popover built on Base UI.",
      "dependencies": ["@base-ui/react@^1.4.1"],
      "registryDependencies": ["utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/popover.tsx",
          "type": "registry:ui",
          "target": "@ui/popover.tsx"
        }
      ]
    },
    {
      "name": "scroll-area",
      "type": "registry:ui",
      "title": "Scroll Area",
      "description": "A custom scroll area built on Base UI.",
      "dependencies": ["@base-ui/react@^1.4.1"],
      "registryDependencies": ["utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/scroll-area.tsx",
          "type": "registry:ui",
          "target": "@ui/scroll-area.tsx"
        }
      ]
    },
    {
      "name": "select",
      "type": "registry:ui",
      "title": "Select",
      "description": "A select control built on Base UI.",
      "dependencies": [
        "@base-ui/react@^1.4.1",
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6",
        "class-variance-authority@^0.7.1"
      ],
      "registryDependencies": ["utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/select.tsx",
          "type": "registry:ui",
          "target": "@ui/select.tsx"
        }
      ]
    },
    {
      "name": "separator",
      "type": "registry:ui",
      "title": "Separator",
      "description": "A visual separator built on Base UI.",
      "dependencies": ["@base-ui/react@^1.4.1"],
      "registryDependencies": ["utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/separator.tsx",
          "type": "registry:ui",
          "target": "@ui/separator.tsx"
        }
      ]
    },
    {
      "name": "sheet",
      "type": "registry:ui",
      "title": "Sheet",
      "description": "A side sheet built on Base UI dialog primitives.",
      "dependencies": [
        "@base-ui/react@^1.4.1",
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6"
      ],
      "registryDependencies": ["button", "scroll-area", "utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/sheet.tsx",
          "type": "registry:ui",
          "target": "@ui/sheet.tsx"
        }
      ]
    },
    {
      "name": "sidebar",
      "type": "registry:ui",
      "title": "Sidebar",
      "description": "A responsive application sidebar with menu, rail, and provider primitives.",
      "dependencies": [
        "@base-ui/react@^1.4.1",
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6",
        "class-variance-authority@^0.7.1"
      ],
      "registryDependencies": [
        "button",
        "input",
        "scroll-area",
        "separator",
        "skeleton",
        "use-mobile",
        "utils"
      ],
      "files": [
        {
          "path": "registry/new-york-v4/ui/sidebar.tsx",
          "type": "registry:ui",
          "target": "@ui/sidebar.tsx"
        }
      ]
    },
    {
      "name": "skeleton",
      "type": "registry:ui",
      "title": "Skeleton",
      "description": "A loading placeholder with shimmer animation.",
      "registryDependencies": ["utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/skeleton.tsx",
          "type": "registry:ui",
          "target": "@ui/skeleton.tsx"
        }
      ]
    },
    {
      "name": "sonner",
      "type": "registry:ui",
      "title": "Sonner",
      "description": "A themed toast provider for Sonner.",
      "dependencies": [
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6",
        "next-themes@0.4.6",
        "sonner@^2.0.0"
      ],
      "files": [
        {
          "path": "registry/new-york-v4/ui/sonner.tsx",
          "type": "registry:ui",
          "target": "@ui/sonner.tsx"
        }
      ]
    },
    {
      "name": "spinner",
      "type": "registry:ui",
      "title": "Spinner",
      "description": "A compact loading spinner using Hugeicons.",
      "dependencies": [
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6"
      ],
      "registryDependencies": ["utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/spinner.tsx",
          "type": "registry:ui",
          "target": "@ui/spinner.tsx"
        }
      ]
    },
    {
      "name": "tabs",
      "type": "registry:ui",
      "title": "Tabs",
      "description": "A tabs primitive built on Base UI.",
      "dependencies": ["@base-ui/react@^1.4.1"],
      "registryDependencies": ["utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/tabs.tsx",
          "type": "registry:ui",
          "target": "@ui/tabs.tsx"
        }
      ]
    },
    {
      "name": "tooltip",
      "type": "registry:ui",
      "title": "Tooltip",
      "description": "A tooltip primitive built on Base UI.",
      "dependencies": ["@base-ui/react@^1.4.1"],
      "registryDependencies": ["utils"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/tooltip.tsx",
          "type": "registry:ui",
          "target": "@ui/tooltip.tsx"
        }
      ]
    },
    {
      "name": "toggle",
      "type": "registry:ui",
      "title": "Toggle",
      "description": "A two-state command button and grouped toggle controls.",
      "dependencies": ["@base-ui/react@^1.4.1"],
      "registryDependencies": ["utils"],
      "files": [
        {
          "path": "components/ui/toggle.tsx",
          "type": "registry:ui",
          "target": "@ui/toggle.tsx"
        }
      ]
    },
    {
      "name": "resizable",
      "type": "registry:ui",
      "title": "Resizable",
      "description": "Resizable panel primitives using react-resizable-panels.",
      "dependencies": [
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6",
        "react-resizable-panels@^4.11.2"
      ],
      "registryDependencies": ["utils"],
      "files": [
        {
          "path": "components/ui/resizable.tsx",
          "type": "registry:ui",
          "target": "@ui/resizable.tsx"
        }
      ]
    },
    {
      "name": "pdf-block-resizable-shell",
      "type": "registry:component",
      "title": "PDF Block Resizable Shell",
      "description": "A reusable resizable left document viewer and right review panel shell for PDF-style blocks.",
      "registryDependencies": ["resizable", "utils"],
      "categories": ["documents", "blocks"],
      "files": [
        {
          "path": "components/pdf-block-resizable-shell.tsx",
          "type": "registry:component",
          "target": "@components/pdf-block-resizable-shell.tsx"
        }
      ]
    },
    {
      "name": "file-upload",
      "type": "registry:ui",
      "title": "File Upload",
      "description": "A drag-and-drop file upload surface with accepted file type icons and a compact file list.",
      "dependencies": [
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6",
        "border-beam@^1.0.1"
      ],
      "registryDependencies": ["card", "@extend/file-thumbnail", "utils"],
      "categories": ["documents"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/file-upload.tsx",
          "type": "registry:ui",
          "target": "@ui/file-upload.tsx"
        }
      ]
    },
    {
      "name": "file-thumbnail",
      "type": "registry:ui",
      "title": "File Thumbnail",
      "description": "A compact file preview thumbnail shell for externally generated images, loading states, and fallback states.",
      "categories": ["documents"],
      "files": [
        {
          "path": "components/ui/file-thumbnail.tsx",
          "type": "registry:ui",
          "target": "@ui/file-thumbnail.tsx"
        }
      ]
    },
    {
      "name": "file-system",
      "type": "registry:ui",
      "title": "File System (Finder)",
      "description": "A macOS Finder-style file browser for flat object-store manifests with icon, list, column, and gallery views.",
      "dependencies": [
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6",
        "@pierre/trees@1.0.0-beta.4"
      ],
      "registryDependencies": [
        "button",
        "command",
        "dialog",
        "@extend/docx-viewer",
        "dropdown-menu",
        "@extend/file-thumbnail",
        "input",
        "@extend/pdf-viewer",
        "popover",
        "scroll-area",
        "select",
        "spinner",
        "tabs",
        "utils",
        "@extend/xlsx-viewer"
      ],
      "categories": ["documents"],
      "files": [
        {
          "path": "components/ui/file-system.tsx",
          "type": "registry:ui",
          "target": "@ui/file-system.tsx"
        }
      ]
    },
    {
      "name": "file-system-block",
      "type": "registry:block",
      "title": "File System (Finder)",
      "description": "A Finder-style file browser block that opens PDF, DOCX, XLSX, and image files in large viewer dialogs.",
      "registryDependencies": ["@extend/file-system"],
      "categories": ["documents", "blocks"],
      "files": [
        {
          "path": "registry/new-york-v4/blocks/file-system-block.tsx",
          "type": "registry:component",
          "target": "@components/blocks/file-system-block.tsx"
        }
      ]
    },
    {
      "name": "pdf-viewer",
      "type": "registry:ui",
      "title": "PDF Viewer",
      "description": "A PDF viewer with page virtualization, thumbnails, search, zoom, rotation, upload, and page overlay hooks.",
      "dependencies": [
        "@embedpdf/core@^2.14.4",
        "@embedpdf/engines@^2.14.4",
        "@embedpdf/models@^2.14.4",
        "@embedpdf/plugin-document-manager@^2.14.4",
        "@embedpdf/plugin-interaction-manager@^2.14.4",
        "@embedpdf/plugin-render@^2.14.4",
        "@embedpdf/plugin-rotate@^2.14.4",
        "@embedpdf/plugin-scroll@^2.14.4",
        "@embedpdf/plugin-search@^2.14.4",
        "@embedpdf/plugin-selection@^2.14.4",
        "@embedpdf/plugin-thumbnail@^2.14.4",
        "@embedpdf/plugin-tiling@^2.14.4",
        "@embedpdf/plugin-viewport@^2.14.4",
        "@embedpdf/plugin-zoom@^2.14.4",
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6",
        "pdf-lib@^1.17.1"
      ],
      "registryDependencies": [
        "button",
        "@extend/document-viewer-sidebar",
        "input",
        "popover",
        "scroll-area",
        "select",
        "separator",
        "spinner",
        "toggle",
        "tooltip",
        "utils"
      ],
      "categories": ["documents"],
      "files": [
        {
          "path": "components/ui/pdf-viewer.tsx",
          "type": "registry:ui",
          "target": "@ui/pdf-viewer.tsx"
        },
        {
          "path": "components/pdf-thumbnail-utils.ts",
          "type": "registry:component",
          "target": "@components/pdf-thumbnail-utils.ts"
        }
      ]
    },
    {
      "name": "docx-viewer",
      "type": "registry:ui",
      "title": "DOCX Viewer",
      "description": "A DOCX viewer with upload, zoom, theme controls, and read-only rendering.",
      "dependencies": [
        "@extend-ai/react-docx@^0.8.0",
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6",
        "@tanstack/react-virtual@^3.13.12"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "card",
        "@extend/document-viewer-sidebar",
        "dropdown-menu",
        "@extend/file-thumbnail",
        "input",
        "scroll-area",
        "select",
        "separator",
        "spinner",
        "tooltip",
        "utils"
      ],
      "categories": ["documents"],
      "files": [
        {
          "path": "components/ui/docx-viewer.tsx",
          "type": "registry:ui",
          "target": "@ui/docx-viewer.tsx"
        },
        {
          "path": "components/ui/docx-annotation-card.tsx",
          "type": "registry:ui",
          "target": "@ui/docx-annotation-card.tsx"
        }
      ]
    },
    {
      "name": "docx-editor",
      "type": "registry:ui",
      "title": "DOCX Editor",
      "description": "An experimental DOCX editor with a Word-style toolbar, page thumbnails, import, export, and live document mutation.",
      "dependencies": [
        "@base-ui/react@^1.4.1",
        "@extend-ai/react-docx@^0.8.0",
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "card",
        "@extend/color-picker",
        "@extend/document-viewer-sidebar",
        "dropdown-menu",
        "@extend/file-thumbnail",
        "input",
        "scroll-area",
        "select",
        "separator",
        "spinner",
        "tooltip",
        "utils"
      ],
      "categories": ["documents"],
      "files": [
        {
          "path": "components/ui/docx-editor.tsx",
          "type": "registry:ui",
          "target": "@ui/docx-editor.tsx"
        },
        {
          "path": "components/ui/docx-annotation-card.tsx",
          "type": "registry:ui",
          "target": "@ui/docx-annotation-card.tsx"
        }
      ]
    },
    {
      "name": "xlsx-viewer",
      "type": "registry:ui",
      "title": "Excel Viewer",
      "description": "An XLSX viewer with workbook loading, thumbnails, sheet tabs, upload, zoom, and theme controls.",
      "dependencies": [
        "@extend-ai/react-xlsx@0.13.4",
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6"
      ],
      "registryDependencies": [
        "button",
        "dropdown-menu",
        "scroll-area",
        "select",
        "separator",
        "spinner",
        "tabs",
        "tooltip",
        "utils"
      ],
      "categories": ["documents"],
      "files": [
        {
          "path": "components/ui/xlsx-viewer.tsx",
          "type": "registry:ui",
          "target": "@ui/xlsx-viewer.tsx"
        }
      ]
    },
    {
      "name": "xlsx-editor",
      "type": "registry:ui",
      "title": "Excel Editor",
      "description": "An experimental XLSX editor with formula input, undo and redo, sheet controls, export, and live workbook mutation.",
      "dependencies": [
        "@extend-ai/react-xlsx@0.13.4",
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6"
      ],
      "registryDependencies": [
        "button",
        "color-picker",
        "@extend/group",
        "input",
        "scroll-area",
        "select",
        "separator",
        "spinner",
        "toggle",
        "tooltip",
        "utils",
        "@extend/xlsx-viewer"
      ],
      "categories": ["documents"],
      "files": [
        {
          "path": "components/ui/xlsx-editor.tsx",
          "type": "registry:ui",
          "target": "@ui/xlsx-editor.tsx"
        }
      ]
    },
    {
      "name": "csv-viewer",
      "type": "registry:ui",
      "title": "CSV Viewer",
      "description": "A CSV and TSV viewer with parsing, upload, search, zoom, theme-aware grid rendering, and Glide Data Grid.",
      "dependencies": [
        "@glideapps/glide-data-grid@6.0.4-alpha24",
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6",
        "papaparse@^5.5.3"
      ],
      "devDependencies": ["@types/papaparse@^5.5.2"],
      "registryDependencies": [
        "button",
        "input",
        "popover",
        "select",
        "separator",
        "spinner",
        "tooltip"
      ],
      "categories": ["documents"],
      "files": [
        {
          "path": "components/ui/csv-viewer.tsx",
          "type": "registry:ui",
          "target": "@ui/csv-viewer.tsx"
        }
      ]
    },
    {
      "name": "pdf-dropzone",
      "type": "registry:block",
      "title": "PDF Dropzone",
      "description": "A PDF-only upload dropzone that opens the dropped file in the shared PDF viewer.",
      "dependencies": ["@hugeicons/core-free-icons@^4.2.0"],
      "registryDependencies": ["@extend/file-upload", "@extend/pdf-viewer"],
      "categories": ["documents", "blocks"],
      "files": [
        {
          "path": "registry/new-york-v4/blocks/pdf-dropzone.tsx",
          "type": "registry:component",
          "target": "@components/blocks/pdf-dropzone.tsx"
        }
      ]
    },
    {
      "name": "layout-blocks",
      "type": "registry:ui",
      "title": "Layout Blocks",
      "description": "A structured layout review panel with typed blocks and confidence cards.",
      "dependencies": [
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6",
        "@tanstack/react-virtual@^3.13.26",
        "react-markdown@^10.1.0",
        "rehype-raw@^7.0.0",
        "rehype-sanitize@^6.0.0",
        "remark-gfm@^4.0.1"
      ],
      "registryDependencies": ["scroll-area", "utils"],
      "categories": ["documents"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/layout-blocks.tsx",
          "type": "registry:ui",
          "target": "@ui/layout-blocks.tsx"
        }
      ]
    },
    {
      "name": "layout-blocks-block",
      "type": "registry:block",
      "title": "Layout Blocks",
      "description": "A structured layout review block with confidence cards and PDF region overlays.",
      "registryDependencies": [
        "@extend/layout-blocks",
        "@extend/pdf-block-resizable-shell",
        "@extend/pdf-viewer"
      ],
      "categories": ["documents", "blocks"],
      "files": [
        {
          "path": "registry/new-york-v4/blocks/layout-blocks-block.tsx",
          "type": "registry:component",
          "target": "@components/blocks/layout-blocks-block.tsx"
        }
      ]
    },
    {
      "name": "e-signature",
      "type": "registry:block",
      "title": "E-Signature",
      "description": "A PDF signature review block with field overlays and signing actions.",
      "dependencies": [
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6",
        "pdf-lib@^1.17.1",
        "signature_pad@^5.1.3"
      ],
      "registryDependencies": [
        "button",
        "dialog",
        "@extend/pdf-block-resizable-shell",
        "@extend/pdf-viewer",
        "scroll-area",
        "utils"
      ],
      "categories": ["documents", "blocks"],
      "files": [
        {
          "path": "registry/new-york-v4/blocks/e-signature.tsx",
          "type": "registry:component",
          "target": "@components/blocks/e-signature.tsx"
        }
      ]
    },
    {
      "name": "bounding-box-citations",
      "type": "registry:ui",
      "title": "Bounding Box Citations",
      "description": "An extraction citation panel connected to source bounding boxes and editable values.",
      "dependencies": [
        "@glideapps/glide-data-grid@6.0.4-alpha24",
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6",
        "@pierre/diffs@^1.1.22"
      ],
      "registryDependencies": [
        "button",
        "input",
        "scroll-area",
        "tabs",
        "tooltip",
        "utils"
      ],
      "categories": ["documents"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/bounding-box-citations.tsx",
          "type": "registry:ui",
          "target": "@ui/bounding-box-citations.tsx"
        }
      ]
    },
    {
      "name": "schema-builder",
      "type": "registry:ui",
      "title": "Schema Builder",
      "description": "A JSON schema builder with form and JSON views for extraction schemas.",
      "dependencies": [
        "@dnd-kit/core@^6.3.1",
        "@dnd-kit/sortable@^10.0.0",
        "@dnd-kit/utilities@^3.2.2",
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6",
        "@pierre/diffs@^1.2.7",
        "next-themes@0.4.6"
      ],
      "registryDependencies": [
        "button",
        "collapsible",
        "dropdown-menu",
        "scroll-area",
        "tabs",
        "utils"
      ],
      "categories": ["documents"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/schema-builder.tsx",
          "type": "registry:ui",
          "target": "@ui/schema-builder.tsx"
        }
      ]
    },
    {
      "name": "bounding-box-citations-block",
      "type": "registry:block",
      "title": "Bounding Box Citations",
      "description": "An extraction citation block linked to source PDF bounding boxes.",
      "registryDependencies": [
        "@extend/bounding-box-citations",
        "@extend/pdf-block-resizable-shell",
        "@extend/pdf-viewer"
      ],
      "categories": ["documents", "blocks"],
      "files": [
        {
          "path": "registry/new-york-v4/blocks/bounding-box-citations-block.tsx",
          "type": "registry:component",
          "target": "@components/blocks/bounding-box-citations-block.tsx"
        }
      ]
    },
    {
      "name": "document-splits",
      "type": "registry:ui",
      "title": "Document Splits",
      "description": "A split-group review panel for organizing pages into output documents.",
      "dependencies": [
        "@dnd-kit/core@^6.3.1",
        "@dnd-kit/sortable@^10.0.0",
        "@dnd-kit/utilities@^3.2.2",
        "@hugeicons/core-free-icons@^4.2.0",
        "@hugeicons/react@^1.1.6"
      ],
      "registryDependencies": [
        "button",
        "@extend/file-thumbnail",
        "scroll-area",
        "utils"
      ],
      "categories": ["documents"],
      "files": [
        {
          "path": "registry/new-york-v4/ui/document-splits.tsx",
          "type": "registry:ui",
          "target": "@ui/document-splits.tsx"
        }
      ]
    },
    {
      "name": "document-splits-block",
      "type": "registry:block",
      "title": "Document Splits",
      "description": "A split-group review block for organizing PDF pages into output documents.",
      "registryDependencies": [
        "@extend/document-splits",
        "@extend/pdf-block-resizable-shell",
        "@extend/pdf-viewer"
      ],
      "categories": ["documents", "blocks"],
      "files": [
        {
          "path": "registry/new-york-v4/blocks/document-splits-block.tsx",
          "type": "registry:component",
          "target": "@components/blocks/document-splits-block.tsx"
        }
      ]
    },
    {
      "name": "excel-editor",
      "type": "registry:block",
      "title": "Excel Editor",
      "description": "A full Excel editor block with workbook upload, cell formatting, merge tools, sheets, zoom, and export controls.",
      "registryDependencies": ["@extend/xlsx-editor"],
      "categories": ["documents", "blocks"],
      "files": [
        {
          "path": "registry/new-york-v4/blocks/excel-editor.tsx",
          "type": "registry:component",
          "target": "@components/blocks/excel-editor.tsx"
        }
      ]
    },
    {
      "name": "docx-editor-block",
      "type": "registry:block",
      "title": "DOCX Editor",
      "description": "A full DOCX editor block with a Word-style toolbar, page thumbnails, and export controls.",
      "registryDependencies": ["@extend/docx-editor"],
      "categories": ["documents", "blocks"],
      "files": [
        {
          "path": "registry/new-york-v4/blocks/docx-editor.tsx",
          "type": "registry:component",
          "target": "@components/blocks/docx-editor.tsx"
        }
      ]
    },
    {
      "name": "document-viewer-sidebar",
      "type": "registry:ui",
      "title": "Document Viewer Sidebar",
      "description": "Shared thumbnail sidebar behavior for document viewers, including viewer-width responsive overlay and inline modes.",
      "registryDependencies": ["utils"],
      "categories": ["documents"],
      "files": [
        {
          "path": "components/ui/document-viewer-sidebar.tsx",
          "type": "registry:ui",
          "target": "@ui/document-viewer-sidebar.tsx"
        }
      ]
    }
  ]
}
