File size: 6,274 Bytes
7d5793d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | <!DOCTYPE html>
<html lang="en" class="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Projects - RoofPrint Wizard</title>
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
darkMode: 'class',
theme: {
extend: {
colors: {
primary: {
500: '#f43f5e',
},
secondary: {
500: '#f97316',
}
}
}
}
}
</script>
<script src="https://unpkg.com/feather-icons"></script>
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
</head>
<body class="bg-gray-900 min-h-screen text-gray-100">
<!-- Navigation -->
<nav class="bg-gray-800 border-b border-gray-700 px-4 py-3">
<div class="max-w-7xl mx-auto flex justify-between items-center">
<div class="flex items-center space-x-2">
<a href="index.html">
<i data-feather="home" class="text-primary-500"></i>
</a>
<a href="index.html" class="text-xl font-bold text-transparent bg-clip-text bg-gradient-to-r from-primary-500 to-secondary-500">RoofPrint Wizard</a>
</div>
<div class="flex items-center space-x-4">
<a href="projects.html" class="bg-gray-700 hover:bg-gray-600 text-white px-4 py-2 rounded-lg flex items-center space-x-2 transition-all">
<i data-feather="folder"></i>
<span>My Projects</span>
</a>
<a href="index.html" class="bg-primary-500 hover:bg-primary-600 text-white px-4 py-2 rounded-lg flex items-center space-x-2 transition-all">
<i data-feather="upload"></i>
<span>New Upload</span>
</a>
</div>
</div>
</nav>
<!-- Projects Content -->
<div class="max-w-7xl mx-auto px-4 py-8">
<div class="flex justify-between items-center mb-8">
<h1 class="text-3xl font-bold">My Projects</h1>
<div class="flex space-x-2">
<div class="relative">
<input type="text" placeholder="Search projects..." class="bg-gray-700 border border-gray-600 rounded-lg px-4 py-2 pl-10 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-transparent">
<i data-feather="search" class="absolute left-3 top-2.5 text-gray-400"></i>
</div>
<button class="bg-primary-500 hover:bg-primary-600 text-white px-4 py-2 rounded-lg flex items-center space-x-2">
<i data-feather="filter"></i>
<span>Filter</span>
</button>
</div>
</div>
<!-- Projects Grid -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<!-- Project cards will be generated here -->
</div>
<!-- Empty State -->
<div id="emptyState" class="text-center py-12">
<div class="mx-auto w-24 h-24 bg-gray-800 rounded-full flex items-center justify-center mb-6">
<i data-feather="folder" class="w-12 h-12 text-gray-500"></i>
</div>
<h3 class="text-xl font-semibold mb-2">No projects yet</h3>
<p class="text-gray-400 mb-6">Upload your first blueprint to get started</p>
<a href="index.html" class="bg-primary-500 hover:bg-primary-600 text-white px-6 py-3 rounded-lg inline-flex items-center space-x-2">
<i data-feather="upload"></i>
<span>Upload Blueprint</span>
</a>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
feather.replace();
// Load projects from localStorage
const projects = JSON.parse(localStorage.getItem('projects') || '[]');
const projectsGrid = document.querySelector('.grid');
const emptyState = document.getElementById('emptyState');
if (projects.length > 0) {
emptyState.classList.add('hidden');
projects.forEach(project => {
const projectCard = document.createElement('div');
projectCard.className = 'bg-gray-800 rounded-xl overflow-hidden border border-gray-700 hover:border-primary-500 transition-all';
projectCard.innerHTML = `
<div class="h-48 bg-gradient-to-br from-gray-700 to-gray-800 flex items-center justify-center">
<i data-feather="file-text" class="w-16 h-16 text-primary-500"></i>
</div>
<div class="p-6">
<h3 class="text-xl font-semibold mb-2">${project.name}</h3>
<p class="text-gray-400 mb-4">Uploaded: ${project.date}</p>
<div class="flex justify-between items-center">
<span class="bg-gray-700 ${project.status === 'processed' ? 'text-primary-500' : 'text-secondary-500'} px-3 py-1 rounded-full text-sm font-medium">
${project.status.charAt(0).toUpperCase() + project.status.slice(1)}
</span>
<a href="estimate.html?project=${project.id}" class="text-secondary-500 hover:text-secondary-400 flex items-center space-x-1">
<span>View Estimate</span>
<i data-feather="arrow-right" class="w-4 h-4"></i>
</a>
</div>
</div>
`;
projectsGrid.appendChild(projectCard);
});
feather.replace();
}
});
</script>
</body>
</html> |