﻿import React, { useState } from 'react';
import { Head, useForm } from '@inertiajs/react';
import { StaffLayout } from '@/Layouts/StaffLayout';
import { Modal } from '@/Components/Modal';
import { Globe, Plus, FileText, Edit, Trash2 } from 'lucide-react';

interface Props {
    posts: any[];
    subscribers: any[];
}

export default function AdminCms({ posts = [], subscribers = [] }: Props) {
    const [createModalOpen, setCreateModalOpen] = useState(false);

    const postForm = useForm({
        title: '',
        category: 'Kampala Guide',
        excerpt: '',
        body: '',
        featured_image: '',
        meta_title: '',
        meta_description: '',
        status: 'Published',
    });

    const handleCreatePost = (e: React.FormEvent) => {
        e.preventDefault();
        postForm.post('/ssadmin/cms/post', {
            preserveScroll: true,
            onSuccess: () => {
                setCreateModalOpen(false);
                postForm.reset();
            },
        });
    };

    return (
        <StaffLayout title="Website CMS, Journal & Newsletter">
            <Head title="CMS & Content — Primon Hotel" />

            <div className="space-y-8">
                <div className="flex items-center justify-between">
                    <div>
                        <h2 className="font-serif text-2xl font-medium text-[#1A1A1A]">Editorial Articles & Marketing Content</h2>
                        <p className="text-xs text-gray-500">Manage Kampala destination guides, culinary stories, and newsletter subscribers.</p>
                    </div>

                    <button
                        onClick={() => setCreateModalOpen(true)}
                        className="bg-[#1A1A1A] hover:bg-[#26292E] text-[#FBF9F5] px-4 py-2 rounded-xl text-xs font-bold uppercase tracking-wider flex items-center gap-1.5 shadow"
                    >
                        <Plus className="h-4 w-4 text-[#C5A880]" />
                        <span>Publish New Story</span>
                    </button>
                </div>

                <div className="bg-[#FBF9F5] rounded-3xl border border-[#C5A880]/20 shadow-sm overflow-hidden">
                    <div className="overflow-x-auto">
                        <table className="w-full text-left text-xs">
                            <thead className="bg-[#F3EFEA] text-[10px] uppercase text-gray-600 border-b border-gray-200">
                                <tr>
                                    <th className="p-4">Title</th>
                                    <th className="p-4">Category</th>
                                    <th className="p-4">Excerpt</th>
                                    <th className="p-4">Status</th>
                                    <th className="p-4">Published Date</th>
                                </tr>
                            </thead>
                            <tbody className="divide-y divide-gray-200">
                                {posts.map((p) => (
                                    <tr key={p.id} className="hover:bg-gray-50">
                                        <td className="p-4 font-bold text-[#1A1A1A]">{p.title}</td>
                                        <td className="p-4">
                                            <span className="bg-[#1A1A1A] text-[#C5A880] px-2 py-0.5 rounded text-[10px] uppercase font-semibold">
                                                {p.category}
                                            </span>
                                        </td>
                                        <td className="p-4 max-w-sm truncate text-gray-600">{p.excerpt}</td>
                                        <td className="p-4 font-semibold text-green-700">{p.status || 'Published'}</td>
                                        <td className="p-4 text-gray-500">{new Date(p.created_at).toLocaleDateString()}</td>
                                    </tr>
                                ))}
                            </tbody>
                        </table>
                    </div>
                </div>

                {/* Newsletter Subscribers */}
                <div className="bg-[#FBF9F5] rounded-3xl border border-[#C5A880]/20 shadow-sm p-6 space-y-4">
                    <h3 className="font-serif text-xl font-medium text-[#1A1A1A]">VIP Society Newsletter Subscribers ({subscribers.length})</h3>
                    <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-3">
                        {subscribers.map((s) => (
                            <div key={s.id} className="p-3 bg-[#F3EFEA] rounded-xl border border-gray-200 text-xs truncate">
                                <span className="font-semibold block truncate">{s.email}</span>
                                <span className="text-[10px] text-gray-500">{new Date(s.created_at).toLocaleDateString()}</span>
                            </div>
                        ))}
                    </div>
                </div>
            </div>

            {/* Create Post Modal */}
            <Modal
                isOpen={createModalOpen}
                onClose={() => setCreateModalOpen(false)}
                title="Publish Editorial Journal Article"
            >
                <form onSubmit={handleCreatePost} className="space-y-4">
                    <div>
                        <label className="text-xs font-semibold uppercase text-gray-600 block mb-1">Article Title</label>
                        <input
                            type="text"
                            required
                            value={postForm.data.title}
                            onChange={(e) => postForm.setData('title', e.target.value)}
                            className="w-full bg-white border border-gray-300 rounded-xl px-3 py-2 text-xs"
                        />
                    </div>

                    <div className="grid grid-cols-2 gap-4">
                        <div>
                            <label className="text-xs font-semibold uppercase text-gray-600 block mb-1">Category</label>
                            <select
                                value={postForm.data.category}
                                onChange={(e) => postForm.setData('category', e.target.value)}
                                className="w-full bg-white border border-gray-300 rounded-xl px-3 py-2 text-xs"
                            >
                                <option value="Kampala Guide">Kampala Guide</option>
                                <option value="Culinary & Cocktails">Culinary & Cocktails</option>
                                <option value="Wellness & Spa">Wellness & Spa</option>
                                <option value="Hotel Stories">Hotel Stories</option>
                            </select>
                        </div>

                        <div>
                            <label className="text-xs font-semibold uppercase text-gray-600 block mb-1">Featured Image URL</label>
                            <input
                                type="text"
                                placeholder="https://images.unsplash.com/..."
                                value={postForm.data.featured_image}
                                onChange={(e) => postForm.setData('featured_image', e.target.value)}
                                className="w-full bg-white border border-gray-300 rounded-xl px-3 py-2 text-xs"
                            />
                        </div>
                    </div>

                    <div>
                        <label className="text-xs font-semibold uppercase text-gray-600 block mb-1">Short Excerpt</label>
                        <textarea
                            rows={2}
                            required
                            value={postForm.data.excerpt}
                            onChange={(e) => postForm.setData('excerpt', e.target.value)}
                            className="w-full bg-white border border-gray-300 rounded-xl px-3 py-2 text-xs"
                        />
                    </div>

                    <div>
                        <label className="text-xs font-semibold uppercase text-gray-600 block mb-1">Article Body Content</label>
                        <textarea
                            rows={5}
                            required
                            value={postForm.data.body}
                            onChange={(e) => postForm.setData('body', e.target.value)}
                            className="w-full bg-white border border-gray-300 rounded-xl px-3 py-2 text-xs font-mono"
                        />
                    </div>

                    <button
                        type="submit"
                        disabled={postForm.processing}
                        className="w-full bg-[#1A1A1A] hover:bg-[#C5A880] hover:text-[#1A1A1A] text-white py-3 rounded-xl text-xs font-bold uppercase tracking-widest transition-all"
                    >
                        Publish Story Online
                    </button>
                </form>
            </Modal>
        </StaffLayout>
    );
}
