ui.progress · parts: Progress · elements: <progress>
Progress is native task progress (value/max); omit value for indeterminate.
No additional notes for Progress yet.
Progress renders a native progress element; children are the fallback text.
| Canonical (templ, Jinja2) | React / Solid | HTML (Svelte, Vue, WC) | Type | Default | Kind | Description |
|---|---|---|---|---|---|---|
Value |
value |
value |
string |
— | passthrough attr | |
Max |
max |
max |
string |
— | passthrough attr | |
AriaLabel |
aria-label |
aria-label |
string |
— | passthrough attr |
Also accepts: class (className in React), extra attributes (rest props in JS runtimes, Attrs in templ/Jinja2, attrs in Twig/Latte; caller wins), children.
No variants: the primitive ships no visual classes; style it with token classes via class.
Accepts children (default slot / children / { children... } / trusted HTML string in Twig, Latte, Jinja2 — see runtimes). Void tags selected via tag render no children.
- Computed/forwarded:
aria-label(omitted when empty). - Typed ARIA props:
aria-label— static values only.
Compose the part's classes without rendering it (custom root element, no asChild outside React):
| Runtime | Helper |
|---|---|
| React / Solid / Vue / Svelte / WC | progressClasses({ ... }) from progress/progress.shared.ts |
| templ | progress.ProgressClasses(progress.ProgressProps{...}) |
| Twig | ui8kit_classes('progressClasses', { class: '…' }) |
| Latte | \UI8Kit\Latte\Classes::progressClasses(['class' => '…']) |
| Jinja2 | progress_classes(p) |
Canonical renderer output (children = Content); all 9 runtimes are parity-tested to produce this DOM.
| State | Props | HTML |
|---|---|---|
| defaults | — | <progress>Content</progress> |
| value | {"Value":"30","Max":"100","AriaLabel":"Upload"} |
<progress value="30" max="100" aria-label="Upload">Content</progress> |
Fixture value ({"Value":"30","Max":"100","AriaLabel":"Upload"}) — every snippet renders:
<progress value="30" max="100" aria-label="Upload">Content</progress>React (runtime notes)
import { Progress } from "./ui/progress/progress";
<Progress value="30" max="100" aria-label="Upload">Content</Progress>Vue 3 (runtime notes)
<script setup lang="ts">
import Progress from "./ui/progress/Progress.vue";
</script>
<template>
<Progress value="30" max="100" aria-label="Upload">Content</Progress>
</template>Svelte 5 (runtime notes)
<script lang="ts">
import Progress from "./ui/progress/Progress.svelte";
</script>
<Progress value="30" max="100" aria-label="Upload">Content</Progress>SolidJS (runtime notes)
import { Progress } from "./ui/progress/progress.solid";
<Progress value="30" max="100" aria-label="Upload">Content</Progress>Web Components (runtime notes)
import { renderProgress } from "./ui/progress/progress.wc";
document.body.append(renderProgress({ value: "30", max: "100", "aria-label": "Upload" }, "Content"));Go templ (runtime notes)
import "github.com/ui8kit/codegen/generated/templ/ui/progress"
@progress.Progress(progress.ProgressProps{Value: new("30"), Max: "100", AriaLabel: "Upload"}) {
Content
}Twig (runtime notes)
{% include 'progress/Progress.html.twig' with { value: '30', max: '100', ariaLabel: 'Upload', children: 'Content' } only %}Latte (runtime notes)
{include 'progress/Progress.latte', value: '30', max: '100', ariaLabel: 'Upload', children: 'Content'}Jinja2 (runtime notes)
{% with p = {'Value': '30', 'Max': '100', 'AriaLabel': 'Upload'}, children = 'Content' %}{% include 'ui/progress/progress.html.j2' %}{% endwith %}