+ {/* Title */}
+ {title && (
+
+ {title}
+
+ )}
+
+ {/* Overall progress */}
+ {showTotal && (
+
+ {collapsible && (
+
+ )}
+
+
+
+
+ )}
+
+ {/* Individual progress items */}
+ {expanded && items.length > 0 && (
+
+ {items.map((item, i) => {
+ const status = item.status || (item.percent === 100 ? 'complete' : item.percent > 0 ? 'active' : 'pending')
+ const icon = statusIcons[status]
+ const iconColor = statusColors[status]
+ const variant = item.variant || (status === 'error' ? 'red' : status === 'complete' ? 'green' : 'blue')
+
+ return (
+
+ )
+ })}
+
+ )}
+
+ )
+}
diff --git a/components/terminal.tsx b/components/terminal.tsx
index 56c9e1f..4d1bcad 100644
--- a/components/terminal.tsx
+++ b/components/terminal.tsx
@@ -249,6 +249,7 @@ export function TerminalSpinner({ text }: TerminalSpinnerProps) {
}
export { TerminalProgress } from './terminal-progress'
+export { TerminalProgressGroup, type ProgressItem } from './terminal-progress-group'
export { TerminalPrompt } from './terminal-prompt'
export { TerminalTree } from './terminal-tree'
export type { TreeNode, TreeRenderContext, TerminalTreeProps } from './terminal-tree'