'use client' import type { DevModeIntegrationLoader, DevModeIntegrationMetadata } from './dev-mode/dev-mode-types' import type { Setting } from '@admin/actions/settings' import { Button } from '@admin/components/ui/button' import { Drawer, DrawerContent, DrawerDescription, DrawerHeader, DrawerTitle, DrawerTrigger } from '@admin/components/ui/drawer' import { Tabs, TabsContent, TabsList, TabsTrigger } from '@admin/components/ui/tabs' import { useDevModeIntegration } from '@admin/hooks/use-dev-mode-integration' import { useSetting } from '@admin/hooks/use-settings' import { Code2 } from 'lucide-react' import { CopyableCodeBlock } from './dev-mode/copyable-code-block' import { LifecycleHooksTab } from './dev-mode/lifecycle-hooks-tab' import { SnippetsTab } from './dev-mode/snippets-tab' interface DevModeIntegrateButtonProps { integration: DevModeIntegrationMetadata loadIntegration: DevModeIntegrationLoader initialSettings?: Setting | null } export function DevModeIntegrateButton({ integration, loadIntegration, initialSettings }: DevModeIntegrateButtonProps) { const { data: settings } = useSetting({ initialData: initialSettings }) const { integration: loadedIntegration, isPending, loadError, handleOpenChange } = useDevModeIntegration(loadIntegration) if (settings?.devMode === false) { return null } return ( }> Dev Mode {integration.schemaLabel} Generated {integration.schemaType} integration details. {loadedIntegration ? ( Snippets Lifecycle Hooks Schema ) : isPending ? (
Loading integration details…
) : loadError ? (
{loadError}
) : null}
) } export type { DevModeIntegration, DevModeIntegrationLoader, DevModeIntegrationMetadata, DevModeLifecycleHookExample, DevModeSnippet } from './dev-mode/dev-mode-types'