documentcraft-pro / index.html
shimazuken's picture
<!DOCTYPE html>
dd2ede0 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DocumentCraft Pro - Advanced Document Generator</title>
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://unpkg.com/feather-icons"></script>
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.waves.min.js"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap');
:root {
--primary: #4F46E5;
--primary-light: #6366F1;
--primary-dark: #4338CA;
--secondary: #10B981;
--dark: #1F2937;
--light: #F9FAFB;
--gray: #6B7280;
--danger: #EF4444;
--warning: #F59E0B;
}
body {
font-family: 'Poppins', sans-serif;
background-color: var(--light);
color: var(--dark);
transition: all 0.3s ease;
}
.vanta-bg {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
opacity: 0.7;
}
.glass-card {
background: rgba(255, 255, 255, 0.8);
backdrop-filter: blur(10px);
border-radius: 20px;
box-shadow: 0 8px 32px rgba(31, 38, 135, 0.15);
border: 1px solid rgba(255, 255, 255, 0.2);
}
.header-gradient {
background: linear-gradient(135deg, var(--primary), var(--primary-dark));
}
.btn-primary {
background-color: var(--primary);
color: white;
transition: all 0.3s;
}
.btn-primary:hover {
background-color: var(--primary-dark);
transform: translateY(-2px);
box-shadow: 0 10px 20px rgba(79, 70, 229, 0.2);
}
.btn-secondary {
background-color: var(--secondary);
color: white;
}
.btn-secondary:hover {
background-color: #0D9488;
transform: translateY(-2px);
}
.input-field {
border: 2px solid #E5E7EB;
transition: all 0.3s;
}
.input-field:focus {
border-color: var(--primary);
box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.2);
}
.document-preview {
transform: scale(0.8);
transform-origin: top center;
width: 125%;
margin-left: -12.5%;
}
@media (max-width: 1024px) {
.document-preview {
transform: scale(0.7);
width: 142.857%;
margin-left: -21.4285%;
}
}
.progress-fill {
height: 100%;
background: linear-gradient(90deg, var(--primary), var(--secondary));
transition: width 0.5s ease;
}
.toggle-checkbox:checked {
right: 0;
border-color: var(--primary);
}
.toggle-checkbox:checked + .toggle-label {
background-color: var(--primary);
}
</style>
</head>
<body class="min-h-screen">
<div id="vanta-bg" class="vanta-bg"></div>
<div class="container mx-auto px-4 py-8 max-w-7xl">
<div class="glass-card overflow-hidden">
<!-- Header -->
<div class="header-gradient text-white px-8 py-6 flex flex-col md:flex-row justify-between items-center">
<div>
<h1 class="text-3xl font-bold flex items-center">
<i data-feather="file-text" class="mr-3"></i>
DocumentCraft Pro
</h1>
<p class="text-white/90 mt-1">Create professional documents with ease</p>
</div>
<div class="flex items-center mt-4 md:mt-0">
<div class="flex items-center mr-6">
<span class="mr-2">Dark Mode</span>
<div class="relative inline-block w-12 mr-2 align-middle select-none">
<input type="checkbox" id="toggle" class="toggle-checkbox absolute block w-6 h-6 rounded-full bg-white border-4 appearance-none cursor-pointer"/>
<label for="toggle" class="toggle-label block overflow-hidden h-6 rounded-full bg-gray-300 cursor-pointer"></label>
</div>
</div>
<button class="btn-primary px-6 py-2 rounded-lg flex items-center">
<i data-feather="user" class="mr-2"></i> Login
</button>
</div>
</div>
<!-- Main Content -->
<div class="grid grid-cols-1 lg:grid-cols-3 gap-8 p-8">
<!-- Left Column - Form -->
<div class="lg:col-span-2">
<div class="mb-8">
<h2 class="text-2xl font-semibold mb-4 text-gray-800">Create New Document</h2>
<div class="bg-white rounded-xl p-6 shadow-sm">
<!-- Progress Bar -->
<div class="mb-6">
<div class="flex justify-between mb-1">
<span class="text-sm font-medium text-gray-700">Completion</span>
<span class="text-sm font-medium" id="progress-percent">0%</span>
</div>
<div class="w-full bg-gray-200 rounded-full h-2.5">
<div class="progress-fill rounded-full h-2.5" style="width: 0%"></div>
</div>
</div>
<!-- Document Type -->
<div class="mb-6">
<h3 class="text-lg font-medium mb-3 flex items-center text-gray-800">
<i data-feather="file" class="mr-2"></i> Document Type
</h3>
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
<div>
<label class="block mb-2 text-sm font-medium text-gray-700">Document Category</label>
<select class="input-field w-full p-3 rounded-lg">
<option>Legal Document</option>
<option>Business Contract</option>
<option>Personal Agreement</option>
<option>Official Letter</option>
</select>
</div>
<div>
<label class="block mb-2 text-sm font-medium text-gray-700">Date</label>
<input type="date" class="input-field w-full p-3 rounded-lg">
</div>
</div>
</div>
<!-- Personal Information -->
<div class="mb-6">
<h3 class="text-lg font-medium mb-3 flex items-center text-gray-800">
<i data-feather="user" class="mr-2"></i> Personal Information
</h3>
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
<div>
<label class="block mb-2 text-sm font-medium text-gray-700">Full Name</label>
<input type="text" class="input-field w-full p-3 rounded-lg" placeholder="John Doe">
</div>
<div>
<label class="block mb-2 text-sm font-medium text-gray-700">ID Number</label>
<input type="text" class="input-field w-full p-3 rounded-lg" placeholder="1234567890">
</div>
<div>
<label class="block mb-2 text-sm font-medium text-gray-700">Date of Birth</label>
<input type="date" class="input-field w-full p-3 rounded-lg">
</div>
<div>
<label class="block mb-2 text-sm font-medium text-gray-700">Nationality</label>
<input type="text" class="input-field w-full p-3 rounded-lg" placeholder="Country">
</div>
</div>
</div>
<!-- Document Details -->
<div class="mb-6">
<h3 class="text-lg font-medium mb-3 flex items-center text-gray-800">
<i data-feather="edit" class="mr-2"></i> Document Details
</h3>
<div>
<label class="block mb-2 text-sm font-medium text-gray-700">Title</label>
<input type="text" class="input-field w-full p-3 rounded-lg mb-4" placeholder="Document Title">
<label class="block mb-2 text-sm font-medium text-gray-700">Content</label>
<textarea class="input-field w-full p-3 rounded-lg h-32" placeholder="Enter document content here..."></textarea>
</div>
</div>
<!-- Signatures -->
<div class="mb-6">
<h3 class="text-lg font-medium mb-3 flex items-center text-gray-800">
<i data-feather="pen-tool" class="mr-2"></i> Signatures
</h3>
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
<div>
<label class="block mb-2 text-sm font-medium text-gray-700">Party A Signature</label>
<div class="border-2 border-dashed border-gray-300 rounded-lg p-4 text-center h-32 flex items-center justify-center">
<button class="btn-primary px-4 py-2 rounded-lg">
<i data-feather="upload" class="mr-2"></i> Upload Signature
</button>
</div>
</div>
<div>
<label class="block mb-2 text-sm font-medium text-gray-700">Party B Signature</label>
<div class="border-2 border-dashed border-gray-300 rounded-lg p-4 text-center h-32 flex items-center justify-center">
<button class="btn-primary px-4 py-2 rounded-lg">
<i data-feather="upload" class="mr-2"></i> Upload Signature
</button>
</div>
</div>
</div>
</div>
<!-- Action Buttons -->
<div class="flex flex-wrap gap-4 mt-8">
<button class="btn-primary px-6 py-3 rounded-lg flex items-center">
<i data-feather="save" class="mr-2"></i> Save Draft
</button>
<button class="btn-secondary px-6 py-3 rounded-lg flex items-center">
<i data-feather="file-text" class="mr-2"></i> Generate Document
</button>
<button class="bg-gray-200 hover:bg-gray-300 px-6 py-3 rounded-lg flex items-center text-gray-800 transition">
<i data-feather="trash-2" class="mr-2"></i> Clear Form
</button>
</div>
</div>
</div>
<!-- Recent Documents -->
<div>
<h2 class="text-2xl font-semibold mb-4 text-gray-800">Recent Documents</h2>
<div class="bg-white rounded-xl p-6 shadow-sm">
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200">
<thead class="bg-gray-50">
<tr>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Title</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Category</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Date</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Actions</th>
</tr>
</thead>
<tbody class="bg-white divide-y divide-gray-200">
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">Employment Contract</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">Business</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">2023-06-15</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<button class="text-indigo-600 hover:text-indigo-900 mr-3"><i data-feather="eye"></i></button>
<button class="text-green-600 hover:text-green-900 mr-3"><i data-feather="download"></i></button>
<button class="text-red-600 hover:text-red-900"><i data-feather="trash-2"></i></button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">Lease Agreement</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">Legal</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">2023-05-28</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<button class="text-indigo-600 hover:text-indigo-900 mr-3"><i data-feather="eye"></i></button>
<button class="text-green-600 hover:text-green-900 mr-3"><i data-feather="download"></i></button>
<button class="text-red-600 hover:text-red-900"><i data-feather="trash-2"></i></button>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">NDA Agreement</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">Business</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">2023-04-10</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<button class="text-indigo-600 hover:text-indigo-900 mr-3"><i data-feather="eye"></i></button>
<button class="text-green-600 hover:text-green-900 mr-3"><i data-feather="download"></i></button>
<button class="text-red-600 hover:text-red-900"><i data-feather="trash-2"></i></button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- Right Column - Preview -->
<div class="hidden lg:block">
<div class="sticky top-8">
<div class="bg-white rounded-xl p-6 shadow-sm mb-6">
<div class="flex justify-between items-center mb-4">
<h3 class="text-lg font-medium text-gray-800 flex items-center">
<i data-feather="eye" class="mr-2"></i> Live Preview
</h3>
<button class="text-gray-500 hover:text-gray-700">
<i data-feather="refresh-cw"></i>
</button>
</div>
<div class="border-2 border-gray-200 rounded-lg p-4 overflow-auto max-h-[80vh]">
<div class="document-preview bg-white p-8">
<div class="text-center mb-8">
<h1 class="text-3xl font-bold mb-2">Document Title</h1>
<p class="text-gray-600">Created on: June 20, 2023</p>
</div>
<div class="mb-8">
<h2 class="text-xl font-semibold mb-4">Parties Involved</h2>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-6">
<div>
<h3 class="text-lg font-medium mb-2">Party A</h3>
<p class="text-gray-700">John Doe</p>
<p class="text-gray-700">ID: 1234567890</p>
</div>
<div>
<h3 class="text-lg font-medium mb-2">Party B</h3>
<p class="text-gray-700">Jane Smith</p>
<p class="text-gray-700">ID: 0987654321</p>
</div>
</div>
</div>
<div class="mb-8">
<h2 class="text-xl font-semibold mb-4">Agreement Terms</h2>
<p class="text-gray-700 mb-4">
This Agreement ("Agreement") is made and entered into as of the Effective Date by and between Party A and Party B.
</p>
<ol class="list-decimal pl-5 space-y-2 text-gray-700">
<li>Term: This Agreement shall commence on the Effective Date and continue for a period of one (1) year.</li>
<li>Payment: Party B shall pay Party A the sum of $1,000 per month for services rendered.</li>
<li>Confidentiality: Both parties agree to maintain the confidentiality of all proprietary information.</li>
</ol>
</div>
<div class="mb-8">
<h2 class="text-xl font-semibold mb-4">Signatures</h2>
<div class="grid grid-cols-1 md:grid-cols-2 gap-8">
<div class="text-center">
<div class="border-t-2 border-gray-300 pt-4 mb-2 mx-auto w-3/4"></div>
<p class="text-gray-700">Party A Signature</p>
</div>
<div class="text-center">
<div class="border-t-2 border-gray-300 pt-4 mb-2 mx-auto w-3/4"></div>
<p class="text-gray-700">Party B Signature</p>
</div>
</div>
</div>
<div class="text-center text-sm text-gray-500">
<p>This document was electronically generated and is legally binding.</p>
</div>
</div>
</div>
</div>
<!-- Quick Actions -->
<div class="bg-white rounded-xl p-6 shadow-sm">
<h3 class="text-lg font-medium mb-4 text-gray-800 flex items-center">
<i data-feather="zap" class="mr-2"></i> Quick Actions
</h3>
<div class="grid grid-cols-2 gap-4">
<button class="bg-indigo-100 hover:bg-indigo-200 text-indigo-800 py-3 px-4 rounded-lg flex flex-col items-center transition">
<i data-feather="download" class="mb-2"></i>
<span class="text-sm">Download</span>
</button>
<button class="bg-green-100 hover:bg-green-200 text-green-800 py-3 px-4 rounded-lg flex flex-col items-center transition">
<i data-feather="printer" class="mb-2"></i>
<span class="text-sm">Print</span>
</button>
<button class="bg-blue-100 hover:bg-blue-200 text-blue-800 py-3 px-4 rounded-lg flex flex-col items-center transition">
<i data-feather="share-2" class="mb-2"></i>
<span class="text-sm">Share</span>
</button>
<button class="bg-purple-100 hover:bg-purple-200 text-purple-800 py-3 px-4 rounded-lg flex flex-col items-center transition">
<i data-feather="copy" class="mb-2"></i>
<span class="text-sm">Duplicate</span>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
feather.replace();
// Initialize Vanta.js background
VANTA.WAVES({
el: "#vanta-bg",
mouseControls: true,
touchControls: true,
gyroControls: false,
minHeight: 200.00,
minWidth: 200.00,
scale: 1.00,
scaleMobile: 1.00,
color: 0x4f46e5,
shininess: 50.00,
waveHeight: 20.00,
waveSpeed: 0.75,
zoom: 0.85
});
// Dark mode toggle
const toggle = document.getElementById('toggle');
toggle.addEventListener('change', function() {
if(this.checked) {
document.documentElement.classList.add('dark');
} else {
document.documentElement.classList.remove('dark');
}
});
// Update progress as user fills the form
const formInputs = document.querySelectorAll('input, textarea, select');
formInputs.forEach(input => {
input.addEventListener('input', updateProgress);
});
function updateProgress() {
let filledCount = 0;
formInputs.forEach(input => {
if (input.value.trim() !== '') {
filledCount++;
}
});
const percentage = Math.round((filledCount / formInputs.length) * 100);
document.querySelector('.progress-fill').style.width = percentage + '%';
document.getElementById('progress-percent').textContent = percentage + '%';
}
</script>
</body>
</html>