cv-operation-queue
Aggregate shell for long-running operation batches such as upload, download, export, sync, or background maintenance queues.
Use it when the user needs one scannable control surface for batch status, batch-level actions, task detail, and aggregate progress. Use cv-task-list alone when there is no batch summary or batch-level action.
The queue shell owns layout, accessibility shell semantics, busy/tone styling, empty state placement, and optional region visibility. Consumers still own task data, progress math, retry/cancel behavior, formatting, auto-hide behavior, and any operation model.
Usage
Anatomy
<cv-operation-queue> (host)
└── <section part="base" aria-label="Operations">
├── <header part="header">
│ ├── <span part="icon"> optional
│ ├── <div part="title">
│ │ └── <span part="summary">
│ └── <div part="actions"> optional
├── <div part="body">
│ └── <slot>
├── <div part="empty"> optional
└── <footer part="footer"> optionalAttributes
| Attribute | Type | Default | Description |
|---|---|---|---|
label | String | "Operations" | Accessible label and fallback summary |
busy | Boolean | false | Sets aria-busy and shows the busy accent line |
empty | Boolean | false | Renders empty slot instead of body |
density | String | "comfortable" | "comfortable" or "compact" |
tone | String | "neutral" | Semantic queue tone for the aggregate batch status |
Slots
| Slot | Description |
|---|---|
icon | Leading aggregate status icon or indicator |
summary | Header title/summary content; falls back to label |
actions | Batch-level actions such as pause, cancel all, or retry |
(default) | Queue body content, commonly a flattened cv-task-list |
empty | Empty-state content rendered when empty is set |
footer | Aggregate progress, counts, bytes, timestamps, or limits |
CSS Parts
| Part | Description |
|---|---|
base | Root section |
header | Header layout |
icon | Leading status slot wrapper |
title | Summary slot wrapper |
summary | Summary text area |
actions | Actions slot wrapper |
body | Default body wrapper |
empty | Empty slot wrapper |
footer | Footer slot wrapper |
CSS Custom Properties
| Property | Default | Description |
|---|---|---|
--cv-operation-queue-inline-size | 100% | Host inline size |
--cv-operation-queue-gap | var(--cv-space-3, 12px) | Gap between shell regions |
--cv-operation-queue-padding | var(--cv-space-4, 16px) | Root section padding |
--cv-operation-queue-radius | var(--cv-radius-md, 10px) | Root section radius |
--cv-operation-queue-border | 1px solid var(--cv-color-border) | Root section border |
--cv-operation-queue-background | var(--cv-color-surface-2) | Root section background |
--cv-operation-queue-shadow | var(--cv-shadow-sm) | Root section shadow |
--cv-operation-queue-body-gap | var(--cv-space-2, 8px) | Gap inside the default body region |
--cv-operation-queue-row-background | derived from queue background | Flattened cv-task-list row fill |
--cv-operation-queue-empty-min-block-size | 96px | Minimum empty-state block size |
--cv-operation-queue-busy-line-opacity | 0.86 | Busy accent line opacity |
- Directly slotted
cv-task-listis visually flattened by default socv-operation-queuecan own the outer panel whilecv-task-listowns row semantics.
Visual States
| Selector | Description |
|---|---|
:host([busy]) | Sets aria-busy="true" and shows a restrained scan line |
:host([empty]) | Renders slot="empty" instead of the default body |
:host([density="compact"]) | Reduces shell and body spacing |
:host([tone="info"]) | Uses the primary/info accent for active batches |
:host([tone="success"]) | Uses success accent for completed batches |
:host([tone="warning"]) | Uses warning accent for paused or waiting batches |
:host([tone="danger"]) | Uses danger accent for failed batches |
Events
None.