import * as _nuxt_schema from '@nuxt/schema'; interface PageTypeConfig { id: string; label: string; icon?: string; /** SVG path string rendered in the dark sidebar (e.g. '') */ svgPath?: string; /** Short description shown on the dashboard card */ desc?: string; } interface NavSectionItem { label: string; /** Route path, e.g. '/admin/templates' */ to: string; /** SVG path string for the icon */ svgPath?: string; } interface PlanConfig { value: string; title: string; subtitle?: string; price: string; features?: string[]; popular?: boolean; } interface SectionFieldConfig { type: 'text' | 'textarea' | 'color' | 'image' | 'boolean' | 'select' | 'cards'; label: string; options?: Array<{ value: string; label: string; icon?: string; }>; i18n?: boolean; group?: string; } interface SectionConfig { label: string; icon?: string; /** * Which group this section appears in inside the editor's "Add section" picker. * Use one of the built-in group names: 'Hero', 'Content', 'Showcase', 'Pricing & Info', 'Conversion'. * Any other string creates a new group automatically (e.g. 'My Components'). * Defaults to 'Custom' if omitted. */ group?: string; defaultProps: Record; fields: Record; } interface ModuleOptions { /** Branding shown in the admin navbar */ branding?: { name?: string; logoUrl?: string; }; /** Page type cards shown on the dashboard */ pageTypes?: PageTypeConfig[]; /** Plans shown on the account page */ plans?: PlanConfig[]; /** Route to redirect to when not authenticated */ loginRoute?: string; /** Supabase table names */ tables?: { pages?: string; users?: string; components?: string; }; /** Supabase storage bucket for file uploads */ storageBucket?: string; /** * Extra nav links shown under a "Contenu" section in the sidebar. * e.g. [{ label: 'Templates', to: '/admin/templates', svgPath: '' }] */ navSections?: NavSectionItem[]; /** * Extra section definitions merged with the module defaults. * Keys must match component names in components/sections/ of the consuming app. * e.g. { MyCustomSection: { label: 'Custom', icon: '✨', defaultProps: {}, fields: {} } } */ extraSections?: Record; /** * Base path for all admin routes. * Defaults to '/admin'. Change this if your app already uses /admin for something else. * e.g. '/cms' → routes become /cms, /cms/setup, /cms/editor/:id, etc. */ basePath?: string; /** * Wrap the editor preview with your site's real navbar and/or footer so pages * look exactly as they will on the frontend. * Use the registered Vue component name (the name Nuxt auto-imports it as). * * e.g. { navbar: 'AppNavbar', footer: 'AppFooter' } * * The components must be globally available in the consuming app * (e.g. placed in ~/components/ so Nuxt auto-imports them). */ previewShell?: { navbar?: string; footer?: string; }; /** * Languages available in the editor's i18n switcher. * Defaults to ['fr', 'ar', 'en']. Set to ['fr'] for French-only projects. */ langs?: string[]; /** * Contact page configuration. Adds a /contact route to the admin. * When formAction is set, the contact link appears automatically in the sidebar. */ contact?: { /** Formspark or any POST form endpoint (e.g. 'https://submit-form.com/xxx') */ formAction?: string; /** Phone number displayed as a tel: link */ phone?: string; /** Social icon links. `icon` = @nuxt/icon name (e.g. 'fa6-brands:instagram') */ socials?: Array<{ icon: string; href: string; }>; }; /** * Feature flags to enable/disable optional functionality. * All features are disabled by default. */ features?: { /** Enable AI content generation and SEO audit in the editor. Requires OPENROUTER_API_KEY. */ ai?: boolean; /** * OpenRouter model ID to use for AI CSS/JS and component generation. * Defaults to 'google/gemini-2.5-flash'. Find IDs at openrouter.ai/models. * e.g. 'google/gemini-2.5-pro', 'openai/gpt-4o', 'openai/gpt-4o-mini' */ aiModel?: string; }; } declare const _default: _nuxt_schema.NuxtModule; export { _default as default }; export type { ModuleOptions, NavSectionItem, PageTypeConfig, PlanConfig, SectionConfig, SectionFieldConfig };