| <!DOCTYPE html> |
| <html lang="en" class="h-full"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>PixelPerfect Pro - RAW Photo Editor</title> |
| <link rel="stylesheet" href="style.css"> |
| <script src="https://cdn.tailwindcss.com"></script> |
| <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> |
| <script src="https://unpkg.com/feather-icons"></script> |
| <script src="components/navbar.js"></script> |
| <script src="components/sidebar.js"></script> |
| <script src="components/toolbar.js"></script> |
| </head> |
| <body class="bg-gray-100 h-full overflow-hidden"> |
| <custom-navbar></custom-navbar> |
| |
| <div class="flex h-[calc(100%-4rem)]"> |
| <custom-sidebar></custom-sidebar> |
| |
| <main class="flex-1 flex flex-col"> |
| <custom-toolbar></custom-toolbar> |
| |
| <div class="flex-1 grid grid-cols-12 gap-4 p-4 overflow-auto"> |
| |
| <div class="col-span-9 bg-white rounded-xl shadow-md overflow-hidden"> |
| <div class="relative h-full"> |
| <img id="image-preview" src="http://static.photos/nature/1200x630/42" |
| class="w-full h-full object-contain" alt="Image Preview"> |
| <div id="raw-loader" class="hidden absolute inset-0 bg-black bg-opacity-70 flex items-center justify-center"> |
| <div class="bg-white p-6 rounded-lg max-w-md text-center"> |
| <h3 class="text-xl font-bold mb-4">Processing RAW Image</h3> |
| <p class="mb-4">Your CR2/RAW file is being processed. This may take a moment...</p> |
| <div class="w-full bg-gray-200 rounded-full h-2.5"> |
| <div id="raw-progress" class="bg-blue-600 h-2.5 rounded-full" style="width: 0%"></div> |
| </div> |
| </div> |
| </div> |
| <div class="absolute inset-0 grid grid-cols-3 grid-rows-3 pointer-events-none"> |
| <div class="border border-gray-200 opacity-20"></div> |
| <div class="border border-gray-200 opacity-20"></div> |
| <div class="border border-gray-200 opacity-20"></div> |
| <div class="border border-gray-200 opacity-20"></div> |
| <div class="border border-gray-200 opacity-20"></div> |
| <div class="border border-gray-200 opacity-20"></div> |
| <div class="border border-gray-200 opacity-20"></div> |
| <div class="border border-gray-200 opacity-20"></div> |
| <div class="border border-gray-200 opacity-20"></div> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="col-span-3 bg-white rounded-xl shadow-md p-4 overflow-y-auto"> |
| <div class="space-y-6"> |
| |
| <div> |
| <h3 class="font-semibold text-lg mb-3 flex items-center"> |
| <i data-feather="sliders" class="mr-2 w-5 h-5"></i> |
| Basic Adjustments |
| </h3> |
| <div class="space-y-4"> |
| <div> |
| <label class="block text-sm font-medium text-gray-700 mb-1">Exposure</label> |
| <input type="range" min="-5" max="5" step="0.1" value="0" |
| class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer"> |
| </div> |
| <div> |
| <label class="block text-sm font-medium text-gray-700 mb-1">Contrast</label> |
| <input type="range" min="-100" max="100" step="1" value="0" |
| class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer"> |
| </div> |
| <div> |
| <label class="block text-sm font-medium text-gray-700 mb-1">Highlights</label> |
| <input type="range" min="-100" max="100" step="1" value="0" |
| class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer"> |
| </div> |
| <div> |
| <label class="block text-sm font-medium text-gray-700 mb-1">Shadows</label> |
| <input type="range" min="-100" max="100" step="1" value="0" |
| class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer"> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div> |
| <h3 class="font-semibold text-lg mb-3 flex items-center"> |
| <i data-feather="droplet" class="mr-2 w-5 h-5"></i> |
| Color Adjustments |
| </h3> |
| <div class="space-y-4"> |
| <div> |
| <label class="block text-sm font-medium text-gray-700 mb-1">Temperature</label> |
| <input type="range" min="-100" max="100" step="1" value="0" |
| class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer"> |
| </div> |
| <div> |
| <label class="block text-sm font-medium text-gray-700 mb-1">Tint</label> |
| <input type="range" min="-100" max="100" step="1" value="0" |
| class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer"> |
| </div> |
| <div> |
| <label class="block text-sm font-medium text-gray-700 mb-1">Vibrance</label> |
| <input type="range" min="-100" max="100" step="1" value="0" |
| class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer"> |
| </div> |
| <div> |
| <label class="block text-sm font-medium text-gray-700 mb-1">Saturation</label> |
| <input type="range" min="-100" max="100" step="1" value="0" |
| class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer"> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div> |
| <h3 class="font-semibold text-lg mb-3 flex items-center"> |
| <i data-feather="zoom-in" class="mr-2 w-5 h-5"></i> |
| Detail |
| </h3> |
| <div class="space-y-4"> |
| <div> |
| <label class="block text-sm font-medium text-gray-700 mb-1">Sharpening</label> |
| <input type="range" min="0" max="100" step="1" value="25" |
| class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer"> |
| </div> |
| <div> |
| <label class="block text-sm font-medium text-gray-700 mb-1">Noise Reduction</label> |
| <input type="range" min="0" max="100" step="1" value="0" |
| class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer"> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </main> |
| </div> |
| |
| <script src="script.js"></script> |
| <script> |
| feather.replace(); |
| document.addEventListener('DOMContentLoaded', function() { |
| |
| }); |
| </script> |
| <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script> |
| </body> |
| </html> |