Meet Frontfriend.Your brand. Your rules. Your agents, connected.Explore what’s new
DocumentationProgress

Progress

Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.

Interactive preview

Rendered from the shared Frontfriend stories with React Base, the same preview Studio shows. Styling comes from your Design System; the code below is native to Reka UI.

Installation

Complete project setup first. Your configuration must select vue/reka and include your Design System ID.

pnpm exec frontfriend download progress -f vue --primitive reka

Review dependencies reported by the downloader and keep your source changes in version control.

Usage

<script setup lang="ts">
import { Progress } from "@/components/ui/progress";
import * as UI from "@/components/ui/progress";

const Component = UI.Progress;

const args = {
  "modelValue": 33,
  "value": 33,
  "max": 100,
} satisfies Partial<
  InstanceType<typeof Component> extends { $props: infer Props } ? Props : {}
> &
  Record<string, unknown>;
</script>

<template>
  <Progress class="w-[300px]" :model-value="args.value" :max="args.max" />
</template>

Examples

Default

<script setup lang="ts">
import { Progress } from "@/components/ui/progress";
import * as UI from "@/components/ui/progress";

const Component = UI.Progress;

const args = {
  "modelValue": 33,
} satisfies Partial<
  InstanceType<typeof Component> extends { $props: infer Props } ? Props : {}
> &
  Record<string, unknown>;
</script>

<template>
  <Progress class="w-[300px]" v-bind="args" />
</template>

Values

<script setup lang="ts">
import { Progress } from "@/components/ui/progress";
import * as UI from "@/components/ui/progress";

const Component = UI.Progress;

const args = {
  "modelValue": 33,
} satisfies Partial<
  InstanceType<typeof Component> extends { $props: infer Props } ? Props : {}
> &
  Record<string, unknown>;
</script>

<template>
  <div class="flex w-[300px] flex-col gap-4">
    <Progress :model-value="0" />
    <Progress :model-value="25" class="w-full" />
    <Progress :model-value="50" />
    <Progress :model-value="75" />
    <Progress :model-value="100" />
  </div>
</template>

With Label

<script setup lang="ts">
import { Field } from "@/components/ui/field";
import { FieldLabel } from "@/components/ui/field";
import { Progress } from "@/components/ui/progress";
import * as UI from "@/components/ui/progress";

const Component = UI.Progress;

const args = {
  "modelValue": 33,
} satisfies Partial<
  InstanceType<typeof Component> extends { $props: infer Props } ? Props : {}
> &
  Record<string, unknown>;
</script>

<template>
  <Field class="w-[300px]">
    <FieldLabel html-for="progress-upload">
      <span>Upload progress</span>
      <span class="ml-auto">66%</span>
    </FieldLabel>
    <Progress id="progress-upload" :model-value="66" class="w-full" />
  </Field>
</template>

Controlled

<script setup lang="ts">
import { ref } from "vue";
import { Progress } from "@/components/ui/progress";
import { Slider } from "@/components/ui/slider";
import * as UI from "@/components/ui/progress";

const Component = UI.Progress;

const args = {
  "modelValue": 33,
} satisfies Partial<
  InstanceType<typeof Component> extends { $props: infer Props } ? Props : {}
> &
  Record<string, unknown>;
const value = ref([50]);
</script>

<template>
  <div class="flex w-[300px] flex-col gap-4">
    <Progress :model-value="value[0]" class="w-full" />
    <Slider v-model="value" :min="0" :max="100" :step="1" />
  </div>
</template>

API reference

Frontfriend-owned props. Native HTML and inherited primitive props remain documented by Reka UI.

Prop Type Default Description
class HTMLAttributes["class"] —
indicatorClassName HTMLAttributes["class"] —

Configuration determines the actual classes and available styling hooks. See Theming & component configuration before introducing a repeated local override.