const mongoose = require("mongoose");

const socialLinkSchema = new mongoose.Schema(
    {
        platform: {
            type: String,
            required: true,
            enum: ["linkedin", "twitter", "instagram", "youtube", "facebook"],
        },
        url: {
            type: String,
            required: true,
        },
        icon: String,
        order: {
            type: Number,
            default: 0,
        },
    },
    { _id: false },
);

const languageSchema = new mongoose.Schema(
    {
        name: {
            type: String,
            required: true,
        },
        value: {
            type: String,
            required: true,
        },
    },
    { _id: false },
);

const menuItemSchema = new mongoose.Schema(
    {
        label: {
            type: String,
            required: true,
        },
        href: {
            type: String,
            required: true,
        },
        icon: String,
        order: {
            type: Number,
            default: 0,
        },
        children: [this],
    },
    { _id: false },
);

const headerSchema = new mongoose.Schema(
    {
        // Top bar
        top: {
            phone: String,
            email: String,
            location: String,
            socialLinks: [socialLinkSchema],
            languages: [languageSchema],
        },

        // Offcanvas
        offcanvas: {
            description: String,
            contactInfo: {
                address: String,
                email: String,
                workingHours: String,
                phone: String,
            },
        },

        // Menu
        menu: [menuItemSchema],

        // Logo
        logo: {
            light: String,
            dark: String,
            alt: String,
        },

        // CTA Button
        ctaButton: {
            label: String,
            href: String,
            style: {
                type: String,
                enum: ["primary", "secondary", "outline"],
                default: "primary",
            },
        },

        // Status
        status: {
            type: String,
            enum: ["active", "inactive"],
            default: "active",
        },

        order: {
            type: Number,
            default: 1,
        },
    },
    { timestamps: true },
);

module.exports = mongoose.model("Header", headerSchema);
