{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "all-site",
  "title": "All site section",
  "description": "All user sites shown within SitecoreAI.",
  "dependencies": [
    "lucide-react"
  ],
  "registryDependencies": [
    "https://blok.sitecore.com/r/theme.json",
    "https://blok.sitecore.com/r/site-card.json"
  ],
  "files": [
    {
      "path": "src/components/bloks/all-sites-section.tsx",
      "content": "\"use client\";\n\nimport { SiteCard } from \"@/components/bloks/site-card\";\nimport type { ComponentProps } from \"react\";\n\ninterface SiteData {\n  id: string;\n  name: string;\n  displayName: string;\n  collectionName?: string;\n  thumbnail: {\n    url: string;\n  };\n  permissions: {\n    canRename?: boolean;\n    canCreate?: boolean;\n  };\n  hosts: Array<{\n    targetHostname?: string;\n  }>;\n  collectionId: string;\n}\n\ninterface FooterButton {\n  icon: React.ReactNode;\n  label: string;\n  onClick: () => void;\n}\n\ninterface DropdownAction {\n  icon: React.ReactNode;\n  label: string;\n  onClick: () => void;\n  show?: boolean;\n}\n\ninterface AllSitesProps<T extends SiteData> {\n  allSites?: T[];\n  pinnedSiteIds?: string[];\n  getFooterButtons: (site: T) => FooterButton[];\n  getDropdownActions?: (site: T, isPinned: boolean) => DropdownAction[];\n}\n\nexport function AllSitesSection<T extends SiteData>({\n  allSites = [],\n  pinnedSiteIds = [],\n  getFooterButtons,\n  getDropdownActions,\n  ...props\n}: AllSitesProps<T> & ComponentProps<\"div\">) {\n  const pinnedSiteIdsSet = new Set(pinnedSiteIds);\n\n  return (\n    <div className=\"w-full space-y-6\" {...props}>\n      {/* All Sites Section */}\n      <section className=\"w-full bg-subtle-bg rounded-lg p-6\">\n        <div className=\"mb-4\">\n          <h2 className=\"text-lg font-semibold\">All Sites</h2>\n          <p className=\"text-sm text-muted-foreground mt-1 wrap-break-words\">\n            Browse all available sites and pin your favorites for quick access\n          </p>\n        </div>\n\n        {/* Grid layout for all sites */}\n        <div className=\"grid grid-cols-3 xl:grid-cols-3 gap-4\">\n          {allSites.map((site) => {\n            const isPinned = pinnedSiteIdsSet.has(site.id);\n\n            return (\n              <div key={site.id}>\n                <SiteCard\n                  site={site}\n                  showPinOverlay={false}\n                  footerButtons={getFooterButtons(site)}\n                  dropdownActions={getDropdownActions?.(site, isPinned) || []}\n                />\n              </div>\n            );\n          })}\n        </div>\n      </section>\n    </div>\n  );\n}\n",
      "type": "registry:ui",
      "target": "src/components/bloks/all-sites-section.tsx"
    }
  ],
  "type": "registry:block"
}