import React, { useState } from "react"; import { X, Plus } from "lucide-react"; import { useFlowStore } from "../store/flowStore"; interface DefaultTable { id: string; name: string; description: string; fields: { name: string; type: string; defaultValue?: string; mapping?: string; validation?: string; }[]; } const defaultTables: DefaultTable[] = [ { id: "cms", name: "CMS", description: "Content Management System table for storing dynamic content", fields: [ { name: "id", type: "primary key" }, { name: "key", type: "string", validation: "required" }, { name: "type", type: "mapping", mapping: "0:Text,1:Number,2:Image,3:Raw", validation: "0", }, { name: "value", type: "long text" }, ], }, { id: "user", name: "User", description: "User management table with authentication details", fields: [ { name: "id", type: "primary key" }, { name: "email", type: "string", validation: "required,email" }, { name: "login_type", type: "mapping", mapping: "0:Regular,1:Google,2:Microsoft,3:Apple", defaultValue: "0", }, { name: "role_id", type: "string" }, { name: "data", type: "json" }, { name: "status", type: "mapping", mapping: "0:Active,1:Inactive,2:Suspend", defaultValue: "0", }, ], }, ]; interface DefaultTablesModalProps { isOpen: boolean; onClose: () => void; } export function DefaultTablesModal({ isOpen, onClose, }: DefaultTablesModalProps) { const [selectedTables, setSelectedTables] = useState([]); const [includeAdminRole, setIncludeAdminRole] = useState(true); const [includeMemberRole, setIncludeMemberRole] = useState(true); const { addModel, addRole } = useFlowStore(); const handleToggleTable = (tableId: string) => { setSelectedTables((prev) => prev.includes(tableId) ? prev.filter((id) => id !== tableId) : [...prev, tableId] ); }; const handleAddTables = () => { selectedTables.forEach((tableId) => { const table = defaultTables.find((t) => t.id === tableId); if (table) { addModel({ id: `model_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`, name: table.name, fields: table.fields, }); } }); // Add roles based on checkbox selection if (selectedTables.includes("user")) { if (includeAdminRole) { addRole({ id: `role_admin_${Date.now()}`, name: "Admin", slug: "admin", permissions: { authRequired: true, routes: [], canCreateUsers: true, canEditUsers: true, canDeleteUsers: true, canManageRoles: true, }, }); } if (includeMemberRole) { addRole({ id: `role_member_${Date.now()}`, name: "Member", slug: "member", permissions: { authRequired: true, routes: [], canCreateUsers: false, canEditUsers: false, canDeleteUsers: false, canManageRoles: false, }, }); } } onClose(); }; if (!isOpen) return null; return (

Add Default Tables

Select the default tables you would like to add to your project:

{defaultTables.map((table) => (
))}
); }