{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "confirmation-progress", "title": "Confirmation progress", "description": "Accessible transaction confirmation progress.", "registryDependencies": [ "dennisonbertram/bitcoin-ui/bitcoin-core", "dennisonbertram/bitcoin-ui/bitcoin-theme" ], "files": [ { "path": "components/bitcoin/confirmation-progress.tsx", "content": "import type { ComponentProps } from \"react\";\n\nimport { clampPercent } from \"@/lib/bitcoin\";\nimport { componentClasses } from \"@/lib/utils\";\n\nimport type { BitcoinVisualProps } from \"./shared\";\n\nexport type ConfirmationProgressProps = Omit<\n ComponentProps<\"div\">,\n \"children\"\n> &\n BitcoinVisualProps & {\n confirmations: number;\n /** Confirmation target used for the progress calculation. @default 6 */\n target?: number;\n /** Shows the confirmation count beneath the track. @default true */\n showLabel?: boolean;\n };\n\nexport function ConfirmationProgress({\n confirmations,\n target = 6,\n showLabel = true,\n unstyled,\n className,\n ...props\n}: ConfirmationProgressProps) {\n const safeTarget = Math.max(1, target);\n const safeConfirmations = Math.max(0, confirmations);\n const percent = clampPercent((safeConfirmations / safeTarget) * 100);\n const complete = safeConfirmations >= safeTarget;\n const label = complete\n ? `${safeConfirmations} confirmations, final`\n : `${safeConfirmations} of ${safeTarget} confirmations`;\n\n return (\n