<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Cloudkuimages - To URL Uploaders</title>
    <link rel="icon" href="" id="favicon" type="image/png">
    <style>
        :root {
            --bg-color: #121212;
            --text-color: #ffffff;
            --card-bg: #1f1f1f;
            --progress-bg: #2b2b2b;
            --progress-fill: #4caf50;
            --btn-bg: #007bff;
            --btn-hover-bg: #0056b3;
            --shadow: 0 4px 10px rgba(0, 0, 0, 0.5);
            --error-color: #f44336;
            --primary-color: #4caf50;
        }

        body.light-mode {
            --bg-color: #f8f9fa;
            --text-color: #333;
            --card-bg: #ffffff;
            --progress-bg: #ddd;
            --progress-fill: #28a745;
            --btn-bg: #007bff;
            --btn-hover-bg: #0056b3;
            --shadow: 0 4px 10px rgba(0, 0, 0, 0.15);
        }

        body {
            margin: 0;
            font-family: Arial, sans-serif;
            background-color: var(--bg-color);
            color: var(--text-color);
            display: flex;
            flex-direction: column;
            align-items: center;
            min-height: 100vh;
            justify-content: space-between;
            transition: background-color 0.5s ease;
        }

        .navbar {
            background-color: var(--card-bg);
            box-shadow: var(--shadow);
            padding: 15px 20px;
            display: flex;
            justify-content: space-between;
            align-items: center;
            width: 100%;
            position: fixed;
            top: 0;
            z-index: 10;
            animation: slideIn 0.3s ease-in-out;
        }

        .navbar a {
            color: var(--text-color);
            text-decoration: none;
            margin: 0 10px;
            font-weight: bold;
            transition: color 0.3s ease;
        }

        .navbar a:hover {
            color: var(--primary-color);
        }

        .toggle-theme {
            cursor: pointer;
            padding: 10px;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            background: var(--progress-bg);
            box-shadow: var(--shadow);
            transition: background 0.3s, transform 0.3s;
        }

        .toggle-theme:hover {
            background: var(--btn-hover-bg);
            transform: scale(1.1);
        }

        .upload-box {
            margin-top: 100px;
            background-color: var(--card-bg);
            padding: 30px;
            border-radius: 10px;
            box-shadow: var(--shadow);
            width: 90%;
            max-width: 400px;
            text-align: center;
            animation: fadeInUp 0.5s ease-out;
        }

        .upload-box input[type="file"] {
            margin-bottom: 20px;
            padding: 10px;
            border: none;
            border-radius: 5px;
            width: 100%;
            background-color: var(--progress-bg);
            color: var(--text-color);
        }

        .upload-box button {
            background-color: var(--btn-bg);
            color: #fff;
            padding: 10px 20px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            transition: background-color 0.3s, transform 0.3s;
        }

        .upload-box button:hover {
            background-color: var(--btn-hover-bg);
            transform: scale(1.05);
        }

        .progress-container {
            margin-top: 20px;
            width: 100%;
            background-color: var(--progress-bg);
            border-radius: 5px;
            overflow: hidden;
            position: relative;
            height: 30px;
        }

        .progress-bar {
            height: 100%;
            width: 0;
            background-color: var(--progress-fill);
            text-align: center;
            color: #fff;
            font-weight: bold;
            line-height: 30px;
            transition: width 0.4s ease;
        }

        .message {
            margin-top: 15px;
            font-weight: bold;
            text-align: center;
        }

        .message.success {
            color: var(--progress-fill);
        }

        .message.error {
            color: var(--error-color);
        }

        .copy-button {
            background-color: var(--progress-fill);
            color: #fff;
            padding: 5px 10px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            margin-top: 10px;
            transition: background-color 0.3s, transform 0.3s;
        }

        .copy-button:hover {
            background-color: #3b9e3b;
            transform: scale(1.05);
        }

        .preview-container {
            margin-top: 20px;
            text-align: center;
        }

        .preview-container img, .preview-container video, .preview-container audio {
            max-width: 100%;
            max-height: 300px;
            border-radius: 5px;
            margin-top: 10px;
        }

        /* Pop-up Style */
        .popup {
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background-color: var(--card-bg);
            padding: 30px;
            border-radius: 10px;
            box-shadow: 0 4px 15px rgba(0, 0, 0, 0.5);
            width: 90%;
            max-width: 400px;
            text-align: center;
            display: none;
            z-index: 1000;
            animation: fadeInUp 0.5s ease-out;
        }

        .popup.show {
            display: block;
        }

        .popup .close {
            position: absolute;
            top: 10px;
            right: 10px;
            background: none;
            border: none;
            font-size: 18px;
            color: var(--text-color);
            cursor: pointer;
        }

        .popup .checkmark {
            width: 70px;
            height: 70px;
            margin: 0 auto 15px;
            border-radius: 50%;
            background-color: var(--primary-color);
            display: flex;
            justify-content: center;
            align-items: center;
            animation: scaleIn 0.5s ease;
        }

        .popup .checkmark svg {
            width: 40px;
            height: 40px;
            fill: white;
        }

        .popup h2 {
            color: var(--primary-color);
            margin: 0 0 15px;
        }

        .popup p {
            margin: 10px 0;
            color: var(--text-color);
        }

        .popup button {
            background-color: var(--primary-color);
            color: white;
            border: none;
            padding: 10px 20px;
            border-radius: 5px;
            cursor: pointer;
        }

        .popup button:hover {
            background-color: #3e8e41;
        }

        /* Keyframes for animations */
        @keyframes slideIn {
            from {
                transform: translateX(-100%);
            }
            to {
                transform: translateX(0);
            }
        }

        @keyframes fadeInUp {
            from {
                opacity: 0;
                transform: translateY(30px);
            }
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }

        @keyframes scaleIn {
            from {
                transform: scale(0.5);
            }
            to {
                transform: scale(1);
            }
        }

    </style>
</head>
<body>
    <div class="navbar">
        <div>
            <a href="/">Home</a>
            <a href="/about">About</a>
            <a href="https://t.me/Wins502Tans">Contact</a>
            <a href="/login">Admin Panel</a>
            <a href="/subdo">Subdo Create</a>
        </div>
        <div class="toggle-theme" id="themeToggle">☀️</div>
    </div>

    <div class="upload-box">
        <h1>Upload Your Files</h1>
        <form id="uploadForm">
            <input type="file" id="fileInput" required>
            <button type="submit">Upload</button>
        </form>
        <div class="progress-container" id="progressContainer" style="display: none;">
            <div class="progress-bar" id="progressBar">0%</div>
        </div>
        <div class="message" id="message"></div>
        <button class="copy-button" id="copyButton" style="display: none;">Salin Tautan</button>

        <div class="preview-container" id="previewContainer" style="display: none;"></div>
    </div>

    <!-- Pop-up for success -->
    <div id="popup" class="popup">
        <button class="close" id="closePopup">&times;</button>
        <div class="checkmark">
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
                <path d="M20.285 6.707l-9.678 9.678-4.293-4.293-1.414 1.414 5.707 5.707 11.092-11.092z" />
            </svg>
        </div>
        <h2>Success!</h2>
        <p id="popupMessage"></p>
    </div>

    <footer>
        <p>&copy; 2025 Cloudkuimages. Built with ❤️ by <strong>Alfi & Emery21</strong></p>
        <p><a href="https://creativecommons.org/licenses/by/4.0/?ref=chooser-v1" target="_blank">Creative Commons Attribution 4.0 International License</a></p>
    </footer>

    <script>
        const themeToggle = document.getElementById('themeToggle');
        const body = document.body;
        const uploadForm = document.getElementById('uploadForm');
        const fileInput = document.getElementById('fileInput');
        const progressContainer = document.getElementById('progressContainer');
        const progressBar = document.getElementById('progressBar');
        const message = document.getElementById('message');
        const copyButton = document.getElementById('copyButton');
        const previewContainer = document.getElementById('previewContainer');
        const popup = document.getElementById('popup');
        const closePopup = document.getElementById('closePopup');
        const popupMessage = document.getElementById('popupMessage');
        const favicon = document.getElementById('favicon');

        // Set logo URL for tab icon (favicon)
        const logoUrl = "https://cloudkuimages.xyz/uploads/logo.jpg"; // Ganti dengan URL logo Anda
        favicon.href = logoUrl;

        // Set default theme to dark
        if (!localStorage.getItem('theme')) {
            localStorage.setItem('theme', 'dark');
        }

        if (localStorage.getItem('theme') === 'light') {
            body.classList.add('light-mode');
            themeToggle.textContent = '🌙';
        }

        themeToggle.addEventListener('click', () => {
            const isLightMode = body.classList.toggle('light-mode');
            localStorage.setItem('theme', isLightMode ? 'light' : 'dark');
            themeToggle.textContent = isLightMode ? '🌙' : '☀️';
        });

        uploadForm.addEventListener('submit', (e) => {
            e.preventDefault();

            const file = fileInput.files[0];
            if (!file) {
                message.textContent = "Please select a file.";
                message.className = "message error";
                return;
            }

            progressBar.style.width = '0%';
            progressBar.textContent = '0%';
            progressContainer.style.display = 'block';
            message.textContent = '';
            message.className = '';
            copyButton.style.display = 'none';
            previewContainer.style.display = 'none';

            const formData = new FormData();
            formData.append('file', file);

            const xhr = new XMLHttpRequest();
            xhr.open('POST', 'upload.php', true);

            xhr.upload.onprogress = (event) => {
                if (event.lengthComputable) {
                    const percent = Math.round((event.loaded / event.total) * 100);
                    progressBar.style.width = percent + '%';
                    progressBar.textContent = percent + '%';
                }
            };

            xhr.onload = () => {
                if (xhr.status === 200) {
                    const result = JSON.parse(xhr.responseText);
                    if (result.status === 'success') {
                        popupMessage.innerHTML = `Upload berhasil! <a href="${result.file_url}" target="_blank">Klik untuk membuka</a>`;
                        popup.classList.add("show");

                        message.innerHTML = `Upload berhasil! <a href="${result.file_url}" target="_blank">Klik untuk membuka</a>`;
                        message.className = "message success";

                        copyButton.style.display = 'block';
                        copyButton.onclick = () => {
                            navigator.clipboard.writeText(result.file_url);
                            alert("Tautan telah disalin ke clipboard!");
                        };

                        previewContainer.style.display = 'block';
                        const previewElement = document.createElement('div');
                        if (result.file_type.startsWith('image/')) {
                            previewElement.innerHTML = `<img src="${result.file_url}" alt="Preview">`;
                        } else if (result.file_type.startsWith('video/')) {
                            previewElement.innerHTML = `<video controls><source src="${result.file_url}" type="${result.file_type}">Browser Anda tidak mendukung tag video.</video>`;
                        } else if (result.file_type.startsWith('audio/')) {
                            previewElement.innerHTML = `<audio controls><source src="${result.file_url}" type="result.file_type">Browser Anda tidak mendukung tag audio.</audio>`;
                        } else {
                            previewElement.innerHTML = `<p>File berhasil diunggah. <a href="${result.file_url}" target="_blank">Klik untuk membuka file</a>.</p>`;
                        }
                        previewContainer.innerHTML = '';
                        previewContainer.appendChild(previewElement);
                    } else {
                        message.textContent = result.message || "Terjadi kesalahan saat mengunggah file.";
                        message.className = "message error";
                    }
                } else {
                    message.textContent = "Terjadi kesalahan server. Silakan coba lagi.";
                    message.className = "message error";
                }
            };

            xhr.onerror = () => {
                message.textContent = "Tidak dapat terhubung ke server.";
                message.className = "message error";
            };

            xhr.send(formData);
        });

        closePopup.addEventListener('click', () => {
            popup.classList.remove("show");
        });
    </script>
</body>
</html>
