{
  "name": "spreadsheet-sheet-bar",
  "type": "registry:component",
  "registryDependencies": [
    "https://spreadsheet.ui.unsanity.ai/r/spreadsheet-sheet-bar-tab-list.json",
    "https://spreadsheet.ui.unsanity.ai/r/spreadsheet-sheet-bar-add-button.json",
    "https://spreadsheet.ui.unsanity.ai/r/spreadsheet-sheet-bar-menu-button.json",
    "https://spreadsheet.ui.unsanity.ai/r/spreadsheet-sheet-bar-rename-dialog.json",
    "https://spreadsheet.ui.unsanity.ai/r/spreadsheet-sheet-bar-delete-dialog.json"
  ],
  "files": [
    {
      "path": "components/spreadsheet/spreadsheet-sheet-bar.tsx",
      "content": "\"use client\";\n\nimport { useState } from \"react\";\nimport {\n  useSpreadsheetDocumentApi,\n  useSpreadsheetPersistenceConfig,\n  useSpreadsheetSheetTabs,\n  type SheetModel,\n} from \"@unsanity/spreadsheet\";\nimport { SpreadsheetSheetBarAddButton } from \"./spreadsheet-sheet-bar-add-button\";\nimport { SpreadsheetSheetBarDeleteDialog } from \"./spreadsheet-sheet-bar-delete-dialog\";\nimport { SpreadsheetSheetBarMenuButton } from \"./spreadsheet-sheet-bar-menu-button\";\nimport { SpreadsheetSheetBarRenameDialog } from \"./spreadsheet-sheet-bar-rename-dialog\";\nimport { SpreadsheetSheetBarTabList } from \"./spreadsheet-sheet-bar-tab-list\";\n\nexport function SpreadsheetSheetBar() {\n  const { renameSheet, removeSheet } = useSpreadsheetSheetTabs();\n  const persistence = useSpreadsheetPersistenceConfig();\n  const { getDocument } = useSpreadsheetDocumentApi();\n\n  const [renameTarget, setRenameTarget] = useState<SheetModel | null>(null);\n  const [deleteTarget, setDeleteTarget] = useState<SheetModel | null>(null);\n\n  function handleRename(sheetId: string, newName: string) {\n    const prev = renameTarget;\n    renameSheet(sheetId, newName);\n    const nameChanged = prev && newName.trim() !== prev.name;\n    if (nameChanged && persistence?.onSave) {\n      void persistence.onSave(getDocument());\n    }\n    setRenameTarget(null);\n  }\n\n  function handleDelete(sheetId: string) {\n    removeSheet(sheetId);\n    setDeleteTarget(null);\n  }\n\n  return (\n    <>\n      <div className=\"spreadsheet-sheet-bar\">\n        <SpreadsheetSheetBarAddButton />\n        <SpreadsheetSheetBarMenuButton />\n        <SpreadsheetSheetBarTabList\n          onRequestRename={setRenameTarget}\n          onRequestDelete={setDeleteTarget}\n        />\n      </div>\n      <SpreadsheetSheetBarRenameDialog\n        sheet={renameTarget}\n        onOpenChange={(open) => !open && setRenameTarget(null)}\n        onConfirm={handleRename}\n      />\n      <SpreadsheetSheetBarDeleteDialog\n        sheet={deleteTarget}\n        onOpenChange={(open) => !open && setDeleteTarget(null)}\n        onConfirm={handleDelete}\n      />\n    </>\n  );\n}\n",
      "type": "registry:component"
    }
  ]
}
