Skip to content

ShashaneA/my-widget

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

<title>Cozy Progress Bar</title> <style> @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap');
    body {
        font-family: 'Inter', sans-serif;
        background: linear-gradient(135deg, #f4f1eb 0%, #ede7dd 100%);
        margin: 0;
        padding: 40px 20px;
        min-height: 100vh;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
    }

    .progress-container {
        background: rgba(255, 255, 255, 0.8);
        backdrop-filter: blur(10px);
        padding: 30px;
        border-radius: 20px;
        box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
        border: 1px solid rgba(255, 255, 255, 0.2);
        max-width: 400px;
        width: 100%;
    }

    .progress-header {
        text-align: center;
        margin-bottom: 25px;
    }

    .progress-title {
        color: #8b6f4d;
        font-size: 18px;
        font-weight: 600;
        margin-bottom: 5px;
    }

    .progress-subtitle {
        color: #a68b6b;
        font-size: 14px;
        font-weight: 400;
    }

    .progress-bar-container {
        position: relative;
        background: #e8ddd1;
        height: 12px;
        border-radius: 20px;
        overflow: hidden;
        margin: 20px 0;
        box-shadow: inset 0 2px 4px rgba(139, 111, 77, 0.1);
    }

    .progress-bar {
        height: 100%;
        background: linear-gradient(90deg, #d4a574 0%, #c19660 50%, #b8875a 100%);
        border-radius: 20px;
        transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1);
        position: relative;
        box-shadow: 0 2px 8px rgba(180, 135, 90, 0.3);
    }

    .progress-bar::after {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 50%;
        background: linear-gradient(90deg, rgba(255, 255, 255, 0.3) 0%, rgba(255, 255, 255, 0.1) 100%);
        border-radius: 20px;
    }

    .progress-percentage {
        text-align: center;
        margin-top: 15px;
        font-size: 24px;
        font-weight: 600;
        color: #8b6f4d;
    }

    .controls {
        display: flex;
        gap: 12px;
        margin-top: 25px;
        justify-content: center;
    }

    .control-btn {
        background: linear-gradient(135deg, #d4a574 0%, #c19660 100%);
        border: none;
        color: white;
        padding: 10px 20px;
        border-radius: 12px;
        cursor: pointer;
        font-size: 14px;
        font-weight: 500;
        transition: all 0.3s ease;
        box-shadow: 0 4px 12px rgba(180, 135, 90, 0.3);
    }

    .control-btn:hover {
        background: linear-gradient(135deg, #c19660 0%, #b8875a 100%);
        transform: translateY(-2px);
        box-shadow: 0 6px 16px rgba(180, 135, 90, 0.4);
    }

    .control-btn:active {
        transform: translateY(0);
    }

    .milestone-dots {
        display: flex;
        justify-content: space-between;
        margin: 15px 0 -5px 0;
        position: relative;
    }

    .milestone {
        width: 8px;
        height: 8px;
        border-radius: 50%;
        background: #e8ddd1;
        transition: all 0.3s ease;
        position: relative;
    }

    .milestone.active {
        background: #d4a574;
        box-shadow: 0 0 0 3px rgba(212, 165, 116, 0.3);
    }

    .milestone-label {
        position: absolute;
        top: 12px;
        left: 50%;
        transform: translateX(-50%);
        font-size: 10px;
        color: #a68b6b;
        white-space: nowrap;
    }

    .celebration {
        position: absolute;
        top: -10px;
        left: 50%;
        transform: translateX(-50%);
        font-size: 20px;
        opacity: 0;
        transition: all 0.5s ease;
        pointer-events: none;
    }

    .celebration.show {
        opacity: 1;
        transform: translateX(-50%) translateY(-20px);
    }

    @keyframes shimmer {
        0% { background-position: -200% 0; }
        100% { background-position: 200% 0; }
    }

    .progress-bar.shimmer {
        background: linear-gradient(90deg, #d4a574 25%, #f2e6d3 50%, #d4a574 75%);
        background-size: 200% 100%;
        animation: shimmer 2s infinite;
    }
</style>
Hobby Progress
Your cozy journey continues
    <div class="milestone-dots">
        <div class="milestone" data-value="0">
            <div class="milestone-label">Start</div>
        </div>
        <div class="milestone" data-value="25">
            <div class="milestone-label">Quarter</div>
        </div>
        <div class="milestone" data-value="50">
            <div class="milestone-label">Halfway</div>
        </div>
        <div class="milestone" data-value="75">
            <div class="milestone-label">Almost</div>
        </div>
        <div class="milestone" data-value="100">
            <div class="milestone-label">Complete</div>
        </div>
    </div>
    
    <div class="progress-bar-container">
        <div class="progress-bar" id="progressBar"></div>
        <div class="celebration" id="celebration">🎉</div>
    </div>
    
    <div class="progress-percentage" id="progressText">0%</div>
    
    <div class="controls">
        <button class="control-btn" onclick="decreaseProgress()">- 10%</button>
        <button class="control-btn" onclick="increaseProgress()">+ 10%</button>
        <button class="control-btn" onclick="resetProgress()">Reset</button>
        <button class="control-btn" onclick="completeProgress()">Complete</button>
    </div>
</div>

<script>
    let currentProgress = 0;
    const progressBar = document.getElementById('progressBar');
    const progressText = document.getElementById('progressText');
    const celebration = document.getElementById('celebration');
    const milestones = document.querySelectorAll('.milestone');

    function updateProgress(newProgress) {
        currentProgress = Math.max(0, Math.min(100, newProgress));
        progressBar.style.width = currentProgress + '%';
        progressText.textContent = currentProgress + '%';
        
        // Update milestones
        milestones.forEach(milestone => {
            const value = parseInt(milestone.dataset.value);
            if (currentProgress >= value) {
                milestone.classList.add('active');
            } else {
                milestone.classList.remove('active');
            }
        });
        
        // Show celebration at 100%
        if (currentProgress === 100) {
            progressBar.classList.add('shimmer');
            celebration.classList.add('show');
            setTimeout(() => {
                celebration.classList.remove('show');
                progressBar.classList.remove('shimmer');
            }, 2000);
        }
    }

    function increaseProgress() {
        updateProgress(currentProgress + 10);
    }

    function decreaseProgress() {
        updateProgress(currentProgress - 10);
    }

    function resetProgress() {
        updateProgress(0);
    }

    function completeProgress() {
        updateProgress(100);
    }

    // Initialize
    updateProgress(35); // Start with some progress to show the design
</script>

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors