Progress

Tailwind CSS and Alpine JS Progress

Progress bars are a great way to indicate the status of a process. They can be used to indicate loading, uploading, downloading and more.

Requires Alpine JS

This component requires Alpine JS v3 to function properly. Some advanced features may require additional Alpine plugins (such as focus).

Tell Me More

Default progress bar

A progress bar with a percentage value. You can use this component with or without Alpine JS; simply toggle Alpine off to get the Tailwind CSS-only version.

<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" ></div>
</div>
<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" ></div>
</div>
@theme {
    /* light theme */
    --color-surface: var(--color-);
    --color-surface-alt: var(--color-);
    --color-on-surface: var(--color-);
    --color-on-surface-strong: var(--color-);
    --color-primary: var(--color-);
    --color-on-primary: var(--color-);
    --color-secondary: var(--color-);
    --color-on-secondary: var(--color-);
    --color-outline: ;
    --color-outline-strong: var(--color-);

    /* dark theme */
    --color-surface-dark: var(--color-);
    --color-surface-dark-alt: var(--color-);
    --color-on-surface-dark: var(--color-);
    --color-on-surface-dark-strong: var(--color-);
    --color-primary-dark: var(--color-);
    --color-on-primary-dark: var(--color-);
    --color-secondary-dark: var(--color-);
    --color-on-secondary-dark: var(--color-);
    --color-outline-dark: var(--color-);
    --color-outline-dark-strong: var(--color-);

    /* shared colors */
    --color-info: var(--color-);
    --color-on-info: var(--color-);
    --color-success: var(--color-);
    --color-on-success: var(--color-);
    --color-warning: var(--color-);
    --color-on-warning: var(--color-);
    --color-danger: var(--color-);
    --color-on-danger: var(--color-);

    /* border radius */
    --radius-radius: var(--radius);
}

Progress bar with label inside

A progress bar with a percentage value displayed inside the bar. Similar to the default progress bar, you can use this component with or without Alpine JS.

<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" >
        
    </div>
</div>
<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" >
        
    </div>
</div>
@theme {
    /* light theme */
    --color-surface: var(--color-);
    --color-surface-alt: var(--color-);
    --color-on-surface: var(--color-);
    --color-on-surface-strong: var(--color-);
    --color-primary: var(--color-);
    --color-on-primary: var(--color-);
    --color-secondary: var(--color-);
    --color-on-secondary: var(--color-);
    --color-outline: ;
    --color-outline-strong: var(--color-);

    /* dark theme */
    --color-surface-dark: var(--color-);
    --color-surface-dark-alt: var(--color-);
    --color-on-surface-dark: var(--color-);
    --color-on-surface-dark-strong: var(--color-);
    --color-primary-dark: var(--color-);
    --color-on-primary-dark: var(--color-);
    --color-secondary-dark: var(--color-);
    --color-on-secondary-dark: var(--color-);
    --color-outline-dark: var(--color-);
    --color-outline-dark-strong: var(--color-);

    /* shared colors */
    --color-info: var(--color-);
    --color-on-info: var(--color-);
    --color-success: var(--color-);
    --color-on-success: var(--color-);
    --color-warning: var(--color-);
    --color-on-warning: var(--color-);
    --color-danger: var(--color-);
    --color-on-danger: var(--color-);

    /* border radius */
    --radius-radius: var(--radius);
}

Progress bar with label outside

A progress bar with a percentage value displayed outside the bar. Similar to the default progress bar, you can use this component with or without Alpine JS.

Progress
<div class="">
    <div class="">   
        <span>Progress</span>
        
    </div> 
    <div class="" role="progressbar" aria-label="default progress bar">
        <div class="" >
        </div>
    </div>
</div>
<div class="">
    <div class="">   
        <span>Progress</span>
        
    </div> 
    <div class="" role="progressbar" aria-label="default progress bar">
        <div class="" >
        </div>
    </div>
</div>
@theme {
    /* light theme */
    --color-surface: var(--color-);
    --color-surface-alt: var(--color-);
    --color-on-surface: var(--color-);
    --color-on-surface-strong: var(--color-);
    --color-primary: var(--color-);
    --color-on-primary: var(--color-);
    --color-secondary: var(--color-);
    --color-on-secondary: var(--color-);
    --color-outline: ;
    --color-outline-strong: var(--color-);

    /* dark theme */
    --color-surface-dark: var(--color-);
    --color-surface-dark-alt: var(--color-);
    --color-on-surface-dark: var(--color-);
    --color-on-surface-dark-strong: var(--color-);
    --color-primary-dark: var(--color-);
    --color-on-primary-dark: var(--color-);
    --color-secondary-dark: var(--color-);
    --color-on-secondary-dark: var(--color-);
    --color-outline-dark: var(--color-);
    --color-outline-dark-strong: var(--color-);

    /* shared colors */
    --color-info: var(--color-);
    --color-on-info: var(--color-);
    --color-success: var(--color-);
    --color-on-success: var(--color-);
    --color-warning: var(--color-);
    --color-on-warning: var(--color-);
    --color-danger: var(--color-);
    --color-on-danger: var(--color-);

    /* border radius */
    --radius-radius: var(--radius);
}

Progress bar color variants

Examples of progress bars with different color variants.

<!-- Primary Progress Bar -->
<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" >
    </div>
</div>

<!-- Secondary Progress Bar -->
<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" >
    </div>
</div>

<!-- Success Progress Bar -->
<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" >
    </div>
</div>

<!-- Info Progress Bar -->
<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" >
    </div>
</div>

<!-- Warning Progress Bar -->
<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" >
    </div>
</div>

<!-- Danger Progress Bar -->
<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" >
    </div>
</div>

<!-- Primary Progress Bar -->
<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" >
    </div>
</div>

<!-- Secondary Progress Bar -->
<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" >
    </div>
</div>

<!-- Success Progress Bar -->
<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" >
    </div>
</div>

<!-- Info Progress Bar -->
<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" >
    </div>
</div>

<!-- Warning Progress Bar -->
<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" >
    </div>
</div>

<!-- Danger Progress Bar -->
<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" >
    </div>
</div>

@theme {
    /* light theme */
    --color-surface: var(--color-);
    --color-surface-alt: var(--color-);
    --color-on-surface: var(--color-);
    --color-on-surface-strong: var(--color-);
    --color-primary: var(--color-);
    --color-on-primary: var(--color-);
    --color-secondary: var(--color-);
    --color-on-secondary: var(--color-);
    --color-outline: ;
    --color-outline-strong: var(--color-);

    /* dark theme */
    --color-surface-dark: var(--color-);
    --color-surface-dark-alt: var(--color-);
    --color-on-surface-dark: var(--color-);
    --color-on-surface-dark-strong: var(--color-);
    --color-primary-dark: var(--color-);
    --color-on-primary-dark: var(--color-);
    --color-secondary-dark: var(--color-);
    --color-on-secondary-dark: var(--color-);
    --color-outline-dark: var(--color-);
    --color-outline-dark-strong: var(--color-);

    /* shared colors */
    --color-info: var(--color-);
    --color-on-info: var(--color-);
    --color-success: var(--color-);
    --color-on-success: var(--color-);
    --color-warning: var(--color-);
    --color-on-warning: var(--color-);
    --color-danger: var(--color-);
    --color-on-danger: var(--color-);

    /* border radius */
    --radius-radius: var(--radius);
}

Multiple progress bars

A progress bar with multiple values.

<div class="">
    <div class=""  role="progressbar" aria-label="progress bar A"></div>
    <div class=""  role="progressbar" aria-label="progress bar B"></div>
    <div class=""  role="progressbar" aria-label="progress bar C"></div>
</div>
<div class="">
    <div class=""  role="progressbar" aria-label="progress bar A"></div>
    <div class=""  role="progressbar" aria-label="progress bar B"></div>
    <div class=""  role="progressbar" aria-label="progress bar C"></div>
</div>
@theme {
    /* light theme */
    --color-surface: var(--color-);
    --color-surface-alt: var(--color-);
    --color-on-surface: var(--color-);
    --color-on-surface-strong: var(--color-);
    --color-primary: var(--color-);
    --color-on-primary: var(--color-);
    --color-secondary: var(--color-);
    --color-on-secondary: var(--color-);
    --color-outline: ;
    --color-outline-strong: var(--color-);

    /* dark theme */
    --color-surface-dark: var(--color-);
    --color-surface-dark-alt: var(--color-);
    --color-on-surface-dark: var(--color-);
    --color-on-surface-dark-strong: var(--color-);
    --color-primary-dark: var(--color-);
    --color-on-primary-dark: var(--color-);
    --color-secondary-dark: var(--color-);
    --color-on-secondary-dark: var(--color-);
    --color-outline-dark: var(--color-);
    --color-outline-dark-strong: var(--color-);

    /* shared colors */
    --color-info: var(--color-);
    --color-on-info: var(--color-);
    --color-success: var(--color-);
    --color-on-success: var(--color-);
    --color-warning: var(--color-);
    --color-on-warning: var(--color-);
    --color-danger: var(--color-);
    --color-on-danger: var(--color-);

    /* border radius */
    --radius-radius: var(--radius);
}

Gradient progress bars

A progress bar with a gradient background.

<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" ></div>
</div>

<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" ></div>
</div>

<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" ></div>
</div>

<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" ></div>
</div>

<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" ></div>
</div>

<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" ></div>
</div>

<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" ></div>
</div>

<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" ></div>
</div>

<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" ></div>
</div>

<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" ></div>
</div>

<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" ></div>
</div>

<div class="" role="progressbar" aria-label="default progress bar">
    <div class="" ></div>
</div>

@theme {
    /* light theme */
    --color-surface: var(--color-);
    --color-surface-alt: var(--color-);
    --color-on-surface: var(--color-);
    --color-on-surface-strong: var(--color-);
    --color-primary: var(--color-);
    --color-on-primary: var(--color-);
    --color-secondary: var(--color-);
    --color-on-secondary: var(--color-);
    --color-outline: ;
    --color-outline-strong: var(--color-);

    /* dark theme */
    --color-surface-dark: var(--color-);
    --color-surface-dark-alt: var(--color-);
    --color-on-surface-dark: var(--color-);
    --color-on-surface-dark-strong: var(--color-);
    --color-primary-dark: var(--color-);
    --color-on-primary-dark: var(--color-);
    --color-secondary-dark: var(--color-);
    --color-on-secondary-dark: var(--color-);
    --color-outline-dark: var(--color-);
    --color-outline-dark-strong: var(--color-);

    /* shared colors */
    --color-info: var(--color-);
    --color-on-info: var(--color-);
    --color-success: var(--color-);
    --color-on-success: var(--color-);
    --color-warning: var(--color-);
    --color-on-warning: var(--color-);
    --color-danger: var(--color-);
    --color-on-danger: var(--color-);

    /* border radius */
    --radius-radius: var(--radius);
}

Data

List of all Alpine JS data used in this component.

Property Description
currentVal Number - Current value
minVal Number - Minimum Value. If currentVal is equal to this amount, then progress would be 0%
maxVal Number - Maximum Value. If currentVal is equal to this amount, then progress would be 100%
calcPercentage() Function - Calculates the progress percentage based on the minimum, maximum, and current value.