/** * Checkout Field Editor Main Settings Page */ import { useState } from "react" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { FormInput, Settings, Loader2, AlertCircle, Zap } from "lucide-react" import { toast } from "sonner" import { FeatureHeader } from "@/components/feature-header" import { useFieldEditor } from "../hooks/use-field-editor" import { EditorTab } from "./tabs/editor-tab" import { SettingsTab } from "./tabs/settings-tab" import { ConditionalLogicTab } from "./tabs/conditional-logic-tab" import { FieldEditorUpgradeTab } from "./tabs/upgrade-tab" import { ProIndicator } from "@/components/pro/pro-indicator" import { Crown } from "lucide-react" import { usePro } from "@/contexts/pro-context" import type { CheckoutField } from "../config" const FIELD_EDITOR_DOCS_URL = "https://www.swiftcommerce.io/help/checkout/checkout-field-editor/" export function FieldEditorSettings() { const { isPro } = usePro() const [activeTab, setActiveTab] = useState('editor') const [editingFieldFromCL, setEditingFieldFromCL] = useState(null) const { settings, fields, sections, isLoading, isSaving, error, hasChanges, updateSettings, addField, updateField, deleteField, duplicateField, toggleFieldEnabled, reorderFields, moveFieldToSection, updateSection, toggleSectionEnabled, saveSettings, resetToDefaults, exportSettings, importSettings } = useFieldEditor() const handleSave = async () => { const success = await saveSettings() if (success) { toast.success("Settings saved", { description: "Your checkout field editor settings have been saved successfully." }) } else { toast.error("Failed to save settings", { description: "Please try again or check your connection." }) } } const handleReset = () => { resetToDefaults() toast.success("Settings reset", { description: "All settings have been reset to their defaults. Don't forget to save." }) } if (isLoading) { return (
Loading checkout field editor...
) } return ( } title="Checkout Field Editor" description="Customize checkout fields, add new fields, and control validation" documentationUrl={FIELD_EDITOR_DOCS_URL} enabled={settings.enabled} onEnabledChange={(checked) => updateSettings('enabled', checked)} hasChanges={hasChanges} isSaving={isSaving} onSave={handleSave} onReset={handleReset} >
{/* Error Alert */} {error && (
{error}
)} {/* Tabs */} Field Editor Settings {isPro && ( Conditional Logic )} {!isPro && ( Upgrade to Pro )} setEditingFieldFromCL(null)} /> {isPro && ( { setEditingFieldFromCL(field) setActiveTab('editor') }} updateField={updateField} /> )} {!isPro && ( )}
) }