website-ai / index.html
XXXMARK's picture
Add 3 files
3af2fbb verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AI Website Builder | Text to WordPress</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
.gradient-bg {
background: linear-gradient(135deg, #6e8efb, #a777e3);
}
.preview-frame {
border: 1px solid #e2e8f0;
border-radius: 0.5rem;
transform-origin: top left;
}
.draggable {
cursor: move;
transition: all 0.2s ease;
}
.draggable:hover {
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}
.resize-handle {
width: 10px;
height: 10px;
background: #4f46e5;
position: absolute;
right: 0;
bottom: 0;
cursor: nwse-resize;
}
.sidebar-item:hover {
background-color: rgba(79, 70, 229, 0.1);
}
.animate-pulse {
animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.5; }
}
</style>
</head>
<body class="bg-gray-50 font-sans">
<div class="flex flex-col h-screen">
<!-- Header -->
<header class="gradient-bg text-white p-4 shadow-md">
<div class="container mx-auto flex justify-between items-center">
<div class="flex items-center space-x-2">
<i class="fas fa-robot text-2xl"></i>
<h1 class="text-xl font-bold">AI Website Builder</h1>
</div>
<div class="flex space-x-4">
<button class="px-4 py-2 bg-white text-indigo-600 rounded-md font-medium hover:bg-gray-100 transition">
<i class="fas fa-save mr-2"></i>Save Project
</button>
<button id="exportBtn" class="px-4 py-2 bg-indigo-700 text-white rounded-md font-medium hover:bg-indigo-800 transition">
<i class="fas fa-wordpress mr-2"></i>Export to WordPress
</button>
</div>
</div>
</header>
<!-- Main Content -->
<div class="flex flex-1 overflow-hidden">
<!-- Sidebar -->
<div class="w-64 bg-white border-r border-gray-200 p-4 overflow-y-auto">
<div class="mb-6">
<h2 class="text-lg font-semibold text-gray-800 mb-3">AI Tools</h2>
<div class="space-y-2">
<button class="sidebar-item w-full text-left px-3 py-2 rounded-md text-gray-700 hover:text-indigo-600 transition flex items-center">
<i class="fas fa-magic mr-2 text-indigo-500"></i> Generate from Text
</button>
<button class="sidebar-item w-full text-left px-3 py-2 rounded-md text-gray-700 hover:text-indigo-600 transition flex items-center">
<i class="fas fa-image mr-2 text-indigo-500"></i> AI Image Generator
</button>
<button class="sidebar-item w-full text-left px-3 py-2 rounded-md text-gray-700 hover:text-indigo-600 transition flex items-center">
<i class="fas fa-font mr-2 text-indigo-500"></i> Content Rewriter
</button>
</div>
</div>
<div class="mb-6">
<h2 class="text-lg font-semibold text-gray-800 mb-3">Elements</h2>
<div class="grid grid-cols-2 gap-2">
<div class="element-item p-3 border border-gray-200 rounded-md text-center cursor-pointer hover:bg-indigo-50 transition">
<i class="fas fa-heading text-indigo-500 mb-1"></i>
<p class="text-xs text-gray-600">Heading</p>
</div>
<div class="element-item p-3 border border-gray-200 rounded-md text-center cursor-pointer hover:bg-indigo-50 transition">
<i class="fas fa-paragraph text-indigo-500 mb-1"></i>
<p class="text-xs text-gray-600">Text</p>
</div>
<div class="element-item p-3 border border-gray-200 rounded-md text-center cursor-pointer hover:bg-indigo-50 transition">
<i class="fas fa-image text-indigo-500 mb-1"></i>
<p class="text-xs text-gray-600">Image</p>
</div>
<div class="element-item p-3 border border-gray-200 rounded-md text-center cursor-pointer hover:bg-indigo-50 transition">
<i class="fas fa-th text-indigo-500 mb-1"></i>
<p class="text-xs text-gray-600">Grid</p>
</div>
<div class="element-item p-3 border border-gray-200 rounded-md text-center cursor-pointer hover:bg-indigo-50 transition">
<i class="fas fa-play text-indigo-500 mb-1"></i>
<p class="text-xs text-gray-600">Video</p>
</div>
<div class="element-item p-3 border border-gray-200 rounded-md text-center cursor-pointer hover:bg-indigo-50 transition">
<i class="fas fa-form text-indigo-500 mb-1"></i>
<p class="text-xs text-gray-600">Form</p>
</div>
</div>
</div>
<div class="mb-6">
<h2 class="text-lg font-semibold text-gray-800 mb-3">Templates</h2>
<div class="space-y-2">
<div class="template-item p-2 border border-gray-200 rounded-md cursor-pointer hover:border-indigo-300 transition">
<img src="https://via.placeholder.com/200x120?text=Business" alt="Business Template" class="rounded-md mb-1">
<p class="text-sm text-center text-gray-600">Business</p>
</div>
<div class="template-item p-2 border border-gray-200 rounded-md cursor-pointer hover:border-indigo-300 transition">
<img src="https://via.placeholder.com/200x120?text=Portfolio" alt="Portfolio Template" class="rounded-md mb-1">
<p class="text-sm text-center text-gray-600">Portfolio</p>
</div>
</div>
</div>
</div>
<!-- Editor Area -->
<div class="flex-1 flex flex-col">
<!-- Toolbar -->
<div class="bg-white border-b border-gray-200 p-3 flex items-center justify-between">
<div class="flex space-x-2">
<select class="border border-gray-300 rounded-md px-3 py-1 text-sm">
<option>Desktop</option>
<option>Tablet</option>
<option>Mobile</option>
</select>
<button class="p-2 text-gray-600 hover:text-indigo-600 hover:bg-gray-100 rounded-md">
<i class="fas fa-undo"></i>
</button>
<button class="p-2 text-gray-600 hover:text-indigo-600 hover:bg-gray-100 rounded-md">
<i class="fas fa-redo"></i>
</button>
</div>
<div class="flex space-x-2">
<button class="p-2 text-gray-600 hover:text-indigo-600 hover:bg-gray-100 rounded-md">
<i class="fas fa-eye"></i>
</button>
<button class="p-2 text-gray-600 hover:text-indigo-600 hover:bg-gray-100 rounded-md">
<i class="fas fa-code"></i>
</button>
</div>
</div>
<!-- Main Editor -->
<div class="flex-1 overflow-auto p-6 bg-gray-100">
<div class="max-w-4xl mx-auto">
<!-- AI Input Section -->
<div class="bg-white rounded-lg shadow-md p-6 mb-6">
<h2 class="text-xl font-semibold mb-4 text-gray-800">Generate Your Website with AI</h2>
<div class="mb-4">
<label class="block text-gray-700 text-sm font-medium mb-2">Describe your website</label>
<textarea id="aiPrompt" class="w-full border border-gray-300 rounded-md p-3 focus:ring-2 focus:ring-indigo-500 focus:border-indigo-500" rows="4" placeholder="Example: I need a business website for my digital marketing agency. It should have a hero section, services, portfolio, and contact form..."></textarea>
</div>
<div class="flex justify-between items-center">
<div class="flex space-x-2">
<select class="border border-gray-300 rounded-md px-3 py-1 text-sm">
<option>Professional</option>
<option>Creative</option>
<option>Minimal</option>
<option>Vibrant</option>
</select>
<select class="border border-gray-300 rounded-md px-3 py-1 text-sm">
<option>Light Theme</option>
<option>Dark Theme</option>
</select>
</div>
<button id="generateBtn" class="px-4 py-2 bg-indigo-600 text-white rounded-md font-medium hover:bg-indigo-700 transition flex items-center">
<i class="fas fa-bolt mr-2"></i> Generate Website
</button>
</div>
</div>
<!-- Preview Area -->
<div class="relative">
<div class="flex justify-between items-center mb-3">
<h3 class="text-lg font-medium text-gray-800">Website Preview</h3>
<div class="text-sm text-gray-500">Drag and drop to edit</div>
</div>
<div id="previewContainer" class="preview-frame bg-white mx-auto w-full" style="height: 600px; overflow: auto;">
<!-- Default content or generated content will appear here -->
<div class="text-center py-20 text-gray-400" id="defaultPreviewContent">
<i class="fas fa-magic text-4xl mb-3"></i>
<p class="text-xl">Your AI-generated website will appear here</p>
<p class="text-sm mt-2">Describe your website above and click "Generate Website"</p>
</div>
<!-- Sample generated content (hidden by default) -->
<div id="generatedContent" class="hidden">
<!-- Sample Hero Section -->
<div class="draggable relative p-4 border-2 border-dashed border-transparent hover:border-indigo-300" style="min-height: 100px;">
<div class="gradient-bg text-white p-12 rounded-lg text-center">
<h1 class="text-4xl font-bold mb-4">Your Business Name</h1>
<p class="text-xl mb-8">Professional digital marketing solutions tailored for your success</p>
<button class="px-6 py-3 bg-white text-indigo-600 rounded-md font-medium hover:bg-gray-100 transition">
Get Started
</button>
</div>
<div class="absolute top-0 right-0 p-2 bg-white bg-opacity-80 rounded-bl-md">
<button class="edit-element p-1 text-gray-600 hover:text-indigo-600">
<i class="fas fa-pen"></i>
</button>
<button class="delete-element p-1 text-gray-600 hover:text-red-600">
<i class="fas fa-trash"></i>
</button>
</div>
</div>
<!-- Sample Services Section -->
<div class="draggable relative p-4 border-2 border-dashed border-transparent hover:border-indigo-300 mt-6" style="min-height: 100px;">
<div class="container mx-auto px-4">
<h2 class="text-3xl font-bold text-center mb-12">Our Services</h2>
<div class="grid grid-cols-1 md:grid-cols-3 gap-8">
<div class="bg-white p-6 rounded-lg shadow-md hover:shadow-lg transition">
<div class="text-indigo-600 mb-4">
<i class="fas fa-bullseye text-3xl"></i>
</div>
<h3 class="text-xl font-semibold mb-3">SEO Optimization</h3>
<p class="text-gray-600">Improve your search rankings and organic traffic with our proven strategies.</p>
</div>
<div class="bg-white p-6 rounded-lg shadow-md hover:shadow-lg transition">
<div class="text-indigo-600 mb-4">
<i class="fas fa-ad text-3xl"></i>
</div>
<h3 class="text-xl font-semibold mb-3">PPC Advertising</h3>
<p class="text-gray-600">Targeted ads that deliver measurable results and maximize your ROI.</p>
</div>
<div class="bg-white p-6 rounded-lg shadow-md hover:shadow-lg transition">
<div class="text-indigo-600 mb-4">
<i class="fas fa-paint-brush text-3xl"></i>
</div>
<h3 class="text-xl font-semibold mb-3">Content Creation</h3>
<p class="text-gray-600">Engaging content that resonates with your audience and drives conversions.</p>
</div>
</div>
</div>
<div class="absolute top-0 right-0 p-2 bg-white bg-opacity-80 rounded-bl-md">
<button class="edit-element p-1 text-gray-600 hover:text-indigo-600">
<i class="fas fa-pen"></i>
</button>
<button class="delete-element p-1 text-gray-600 hover:text-red-600">
<i class="fas fa-trash"></i>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Properties Panel -->
<div class="w-72 bg-white border-l border-gray-200 p-4 overflow-y-auto">
<h2 class="text-lg font-semibold text-gray-800 mb-4">Properties</h2>
<div id="emptyProperties" class="text-center py-10 text-gray-400">
<i class="fas fa-mouse-pointer text-3xl mb-3"></i>
<p>Select an element to edit its properties</p>
</div>
<div id="elementProperties" class="hidden">
<div class="mb-6">
<h3 class="font-medium text-gray-700 mb-3 flex justify-between items-center">
<span>Section Settings</span>
<span class="text-xs bg-indigo-100 text-indigo-800 px-2 py-1 rounded">Hero Section</span>
</h3>
<div class="space-y-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Background</label>
<div class="flex space-x-2">
<button class="w-8 h-8 rounded-full bg-indigo-600 border-2 border-indigo-700"></button>
<button class="w-8 h-8 rounded-full bg-white border border-gray-300"></button>
<button class="w-8 h-8 rounded-full bg-gray-800 border border-gray-900"></button>
<button class="w-8 h-8 rounded-full bg-gradient-to-r from-indigo-500 to-purple-600 border border-gray-300"></button>
</div>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Padding</label>
<div class="grid grid-cols-4 gap-2">
<input type="number" class="border border-gray-300 rounded-md px-2 py-1 text-sm" placeholder="Top" value="48">
<input type="number" class="border border-gray-300 rounded-md px-2 py-1 text-sm" placeholder="Right" value="16">
<input type="number" class="border border-gray-300 rounded-md px-2 py-1 text-sm" placeholder="Bottom" value="48">
<input type="number" class="border border-gray-300 rounded-md px-2 py-1 text-sm" placeholder="Left" value="16">
</div>
</div>
</div>
</div>
<div class="mb-6">
<h3 class="font-medium text-gray-700 mb-3">Content</h3>
<div class="space-y-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Heading</label>
<input type="text" class="w-full border border-gray-300 rounded-md px-3 py-2" value="Your Business Name">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Subheading</label>
<textarea class="w-full border border-gray-300 rounded-md px-3 py-2" rows="2">Professional digital marketing solutions tailored for your success</textarea>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Button Text</label>
<input type="text" class="w-full border border-gray-300 rounded-md px-3 py-2" value="Get Started">
</div>
</div>
</div>
<div class="mb-6">
<h3 class="font-medium text-gray-700 mb-3">Advanced</h3>
<div class="space-y-2">
<label class="inline-flex items-center">
<input type="checkbox" class="rounded border-gray-300 text-indigo-600 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50" checked>
<span class="ml-2 text-sm text-gray-700">Full-width section</span>
</label>
<label class="inline-flex items-center">
<input type="checkbox" class="rounded border-gray-300 text-indigo-600 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50">
<span class="ml-2 text-sm text-gray-700">Parallax effect</span>
</label>
</div>
</div>
<button class="w-full py-2 bg-red-100 text-red-600 rounded-md font-medium hover:bg-red-200 transition">
<i class="fas fa-trash mr-2"></i> Delete Section
</button>
</div>
</div>
</div>
</div>
<!-- Export Modal -->
<div id="exportModal" class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 hidden">
<div class="bg-white rounded-lg shadow-xl w-full max-w-md">
<div class="p-6">
<div class="flex justify-between items-center mb-4">
<h3 class="text-lg font-semibold text-gray-800">Export to WordPress</h3>
<button id="closeModal" class="text-gray-500 hover:text-gray-700">
<i class="fas fa-times"></i>
</button>
</div>
<div class="space-y-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">WordPress Site URL</label>
<input type="url" class="w-full border border-gray-300 rounded-md px-3 py-2" placeholder="https://yourwordpresssite.com">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Admin Username</label>
<input type="text" class="w-full border border-gray-300 rounded-md px-3 py-2" placeholder="username">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Application Password</label>
<input type="password" class="w-full border border-gray-300 rounded-md px-3 py-2" placeholder="••••••••">
<p class="text-xs text-gray-500 mt-1">Create in WordPress: Users > Your Profile > Application Passwords</p>
</div>
<div class="pt-4">
<button id="confirmExport" class="w-full py-2 bg-indigo-600 text-white rounded-md font-medium hover:bg-indigo-700 transition flex items-center justify-center">
<i class="fas fa-cloud-upload-alt mr-2"></i> Export Now
</button>
</div>
</div>
</div>
</div>
</div>
<!-- Loading Overlay -->
<div id="loadingOverlay" class="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 hidden">
<div class="bg-white rounded-lg shadow-xl p-8 max-w-sm text-center">
<div class="animate-spin rounded-full h-16 w-16 border-t-2 border-b-2 border-indigo-500 mx-auto mb-4"></div>
<h3 class="text-lg font-medium text-gray-800 mb-2">Generating Your Website</h3>
<p class="text-gray-600">Our AI is creating your perfect website. This may take a moment...</p>
</div>
</div>
<script>
// DOM Elements
const generateBtn = document.getElementById('generateBtn');
const exportBtn = document.getElementById('exportBtn');
const exportModal = document.getElementById('exportModal');
const closeModal = document.getElementById('closeModal');
const confirmExport = document.getElementById('confirmExport');
const loadingOverlay = document.getElementById('loadingOverlay');
const defaultPreviewContent = document.getElementById('defaultPreviewContent');
const generatedContent = document.getElementById('generatedContent');
const emptyProperties = document.getElementById('emptyProperties');
const elementProperties = document.getElementById('elementProperties');
// Event Listeners
generateBtn.addEventListener('click', generateWebsite);
exportBtn.addEventListener('click', showExportModal);
closeModal.addEventListener('click', hideExportModal);
confirmExport.addEventListener('click', exportToWordPress);
// Make elements draggable (simplified for demo)
document.querySelectorAll('.draggable').forEach(el => {
el.addEventListener('mousedown', initDrag);
});
// Show edit buttons on hover
document.querySelectorAll('.draggable').forEach(el => {
el.addEventListener('mouseenter', () => {
el.querySelector('.absolute').classList.remove('hidden');
});
el.addEventListener('mouseleave', () => {
el.querySelector('.absolute').classList.add('hidden');
});
});
// Functions
function generateWebsite() {
const prompt = document.getElementById('aiPrompt').value;
if (!prompt) {
alert('Please describe your website first');
return;
}
// Show loading overlay
loadingOverlay.classList.remove('hidden');
// Simulate AI generation delay
setTimeout(() => {
loadingOverlay.classList.add('hidden');
// Hide default content and show generated content
defaultPreviewContent.classList.add('hidden');
generatedContent.classList.remove('hidden');
// Show properties panel
emptyProperties.classList.add('hidden');
elementProperties.classList.remove('hidden');
// Update the preview based on the prompt (simplified for demo)
// In a real app, this would be an API call to an AI service
console.log('Generating website based on:', prompt);
}, 2000);
}
function showExportModal() {
exportModal.classList.remove('hidden');
}
function hideExportModal() {
exportModal.classList.add('hidden');
}
function exportToWordPress() {
// Show loading overlay
loadingOverlay.classList.remove('hidden');
hideExportModal();
// Simulate export process
setTimeout(() => {
loadingOverlay.classList.add('hidden');
alert('Website successfully exported to WordPress!');
}, 1500);
}
// Simplified drag functionality for demo
function initDrag(e) {
if (e.target.classList.contains('edit-element') ||
e.target.classList.contains('delete-element')) {
return;
}
const element = e.currentTarget;
let pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
e = e || window.event;
e.preventDefault();
// Get the mouse cursor position at startup
pos3 = e.clientX;
pos4 = e.clientY;
document.onmouseup = closeDragElement;
document.onmousemove = elementDrag;
function elementDrag(e) {
e = e || window.event;
e.preventDefault();
// Calculate the new cursor position
pos1 = pos3 - e.clientX;
pos2 = pos4 - e.clientY;
pos3 = e.clientX;
pos4 = e.clientY;
// Set the element's new position
element.style.top = (element.offsetTop - pos2) + "px";
element.style.left = (element.offsetLeft - pos1) + "px";
}
function closeDragElement() {
// Stop moving when mouse button is released
document.onmouseup = null;
document.onmousemove = null;
}
}
// Demo: Click on elements in the sidebar to add them to the preview
document.querySelectorAll('.element-item').forEach(el => {
el.addEventListener('click', () => {
alert('In a full implementation, this would add a new element to the preview area.');
});
});
</script>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=XXXMARK/website-ai" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>