{ "$schema": "https://ui.shadcn.com/schema/registry.json", "name": "bitcoin-ui", "homepage": "https://dennisonbertram.github.io/bitcoin-ui/", "items": [ { "name": "bitcoin-theme", "title": "Bitcoin UI theme", "description": "Semantic light and dark tokens for Bitcoin UI components.", "type": "registry:theme", "cssVars": { "theme": { "font-sans": "ui-sans-serif, system-ui, sans-serif", "font-mono": "ui-monospace, SFMono-Regular, Consolas, monospace", "radius": "0.5rem", "space-1": "0.25rem", "space-2": "0.5rem", "space-3": "0.75rem", "space-4": "1rem", "space-5": "1.25rem", "space-6": "1.5rem", "space-8": "2rem", "space-10": "2.5rem", "space-12": "3rem", "space-16": "4rem", "space-20": "5rem", "space-24": "6rem", "text-xs": "0.75rem", "text-sm": "0.875rem", "text-base": "1rem", "text-xl": "1.25rem", "ease-out": "cubic-bezier(0.16, 1, 0.3, 1)", "ease-in": "cubic-bezier(0.7, 0, 0.84, 0)", "ease-in-out": "cubic-bezier(0.65, 0, 0.35, 1)", "dur-fast": "100ms", "dur-base": "160ms", "dur-slow": "240ms", "dur-stagger": "80ms", "dur-long": "420ms", "dur-loader": "1200ms", "dur-loading-reduced": "2000ms", "dur-flow": "2800ms", "dur-relay": "3600ms", "rule-hair": "1px", "radius-xs": "0.25rem", "radius-sm": "0.375rem", "radius-md": "0.5rem", "radius-lg": "0.75rem", "radius-full": "999px", "z-canvas": "0", "z-content": "10", "z-toolbar": "30" }, "light": { "color-paper": "oklch(1 0 0)", "color-ink": "oklch(0.205 0 0)", "color-surface": "oklch(0.984 0 0)", "color-surface-raised": "oklch(1 0 0)", "color-surface-hover": "oklch(0.961 0 0)", "color-surface-active": "oklch(0.94 0 0)", "color-rule-subtle": "oklch(0 0 0 / 0.08)", "color-rule": "oklch(0 0 0 / 0.1)", "color-rule-strong": "oklch(0 0 0 / 0.24)", "color-muted": "oklch(0.42 0 0)", "color-muted-strong": "oklch(0.31 0 0)", "color-focus": "oklch(0.205 0 0)", "color-accent": "oklch(0.205 0 0)", "color-accent-ink": "oklch(0.946 0 0)", "color-bitcoin": "oklch(0.205 0 0)", "color-bitcoin-on-accent": "oklch(0.946 0 0)", "color-bitcoin-ink": "oklch(0.205 0 0)", "color-bitcoin-soft": "oklch(0.94 0 0)", "color-success": "oklch(0.31 0 0)", "color-success-soft": "oklch(0.94 0 0)", "color-warning": "oklch(0.36 0 0)", "color-warning-soft": "oklch(0.94 0 0)", "color-danger": "oklch(0.42 0 0)", "color-danger-soft": "oklch(0.94 0 0)", "color-info": "oklch(0.31 0 0)", "color-info-soft": "oklch(0.94 0 0)", "color-chain-canonical": "oklch(0.57 0.16 58)", "color-chain-canonical-soft": "oklch(0.57 0.16 58 / 0.16)", "color-chain-competing": "oklch(0.52 0.14 235)", "color-chain-competing-soft": "oklch(0.52 0.14 235 / 0.14)", "color-chain-stale": "oklch(0.54 0.19 26)", "color-chain-stale-soft": "oklch(0.54 0.19 26 / 0.14)", "color-chain-orphan": "oklch(0.52 0.16 305)", "color-chain-orphan-soft": "oklch(0.52 0.16 305 / 0.14)", "color-chain-signal": "oklch(1 0 0)" }, "dark": { "color-paper": "oklch(0 0 0)", "color-ink": "oklch(0.946 0 0)", "color-surface": "oklch(0.027 0 0)", "color-surface-raised": "oklch(0.1 0 0)", "color-surface-hover": "oklch(0.16 0 0)", "color-surface-active": "oklch(0.218 0 0)", "color-rule-subtle": "oklch(1 0 0 / 0.09)", "color-rule": "oklch(1 0 0 / 0.13)", "color-rule-strong": "oklch(1 0 0 / 0.24)", "color-muted": "oklch(0.706 0 0)", "color-muted-strong": "oklch(0.82 0 0)", "color-focus": "oklch(0.946 0 0)", "color-accent": "oklch(0.946 0 0)", "color-accent-ink": "oklch(0.205 0 0)", "color-bitcoin": "oklch(0.946 0 0)", "color-bitcoin-on-accent": "oklch(0.205 0 0)", "color-bitcoin-ink": "oklch(0.946 0 0)", "color-bitcoin-soft": "oklch(0.218 0 0)", "color-success": "oklch(0.82 0 0)", "color-success-soft": "oklch(0.218 0 0)", "color-warning": "oklch(0.76 0 0)", "color-warning-soft": "oklch(0.218 0 0)", "color-danger": "oklch(0.72 0 0)", "color-danger-soft": "oklch(0.218 0 0)", "color-info": "oklch(0.82 0 0)", "color-info-soft": "oklch(0.218 0 0)", "color-chain-canonical": "oklch(0.78 0.14 70)", "color-chain-canonical-soft": "oklch(0.78 0.14 70 / 0.2)", "color-chain-competing": "oklch(0.76 0.12 225)", "color-chain-competing-soft": "oklch(0.76 0.12 225 / 0.18)", "color-chain-stale": "oklch(0.72 0.17 28)", "color-chain-stale-soft": "oklch(0.72 0.17 28 / 0.18)", "color-chain-orphan": "oklch(0.75 0.14 305)", "color-chain-orphan-soft": "oklch(0.75 0.14 305 / 0.18)", "color-chain-signal": "oklch(1 0 0)" } } }, { "name": "bitcoin-core", "title": "Bitcoin UI core", "description": "Types, exact formatting utilities, class helpers, and shared component styles.", "type": "registry:lib", "dependencies": ["clsx", "tailwind-merge"], "files": [ { "path": "lib/bitcoin.ts", "type": "registry:lib" }, { "path": "lib/utils.ts", "type": "registry:lib" }, { "path": "components/bitcoin/shared.ts", "type": "registry:lib", "target": "components/bitcoin/shared.ts" } ] }, { "name": "bitcoin-amount", "title": "Bitcoin amount", "description": "Exact satoshi and BTC value formatting.", "type": "registry:component", "registryDependencies": [ "dennisonbertram/bitcoin-ui/bitcoin-core", "dennisonbertram/bitcoin-ui/bitcoin-theme" ], "files": [ { "path": "components/bitcoin/bitcoin-amount.tsx", "type": "registry:component" } ] }, { "name": "hash-display", "title": "Hash display", "description": "Truncated, linkable, and copyable Bitcoin identifiers.", "type": "registry:component", "dependencies": ["lucide-react"], "registryDependencies": [ "dennisonbertram/bitcoin-ui/bitcoin-core", "dennisonbertram/bitcoin-ui/bitcoin-theme" ], "files": [ { "path": "components/bitcoin/hash-display.tsx", "type": "registry:component" } ] }, { "name": "protocol-badges", "title": "Protocol badges", "description": "Network, transaction status, and script type badges.", "type": "registry:component", "dependencies": ["lucide-react"], "registryDependencies": [ "dennisonbertram/bitcoin-ui/bitcoin-core", "dennisonbertram/bitcoin-ui/bitcoin-theme" ], "files": [ { "path": "components/bitcoin/network-badge.tsx", "type": "registry:component" }, { "path": "components/bitcoin/status-badge.tsx", "type": "registry:component" }, { "path": "components/bitcoin/script-badge.tsx", "type": "registry:component" } ] }, { "name": "address-display", "title": "Address display", "description": "Copyable Bitcoin address with network and script metadata.", "type": "registry:component", "registryDependencies": [ "dennisonbertram/bitcoin-ui/hash-display", "dennisonbertram/bitcoin-ui/protocol-badges" ], "files": [ { "path": "components/bitcoin/address-display.tsx", "type": "registry:component" } ] }, { "name": "confirmation-progress", "title": "Confirmation progress", "description": "Accessible transaction confirmation progress.", "type": "registry:component", "registryDependencies": [ "dennisonbertram/bitcoin-ui/bitcoin-core", "dennisonbertram/bitcoin-ui/bitcoin-theme" ], "files": [ { "path": "components/bitcoin/confirmation-progress.tsx", "type": "registry:component" } ] }, { "name": "block-card", "title": "Block card", "description": "Compact Bitcoin block summary.", "type": "registry:component", "dependencies": ["lucide-react"], "registryDependencies": [ "dennisonbertram/bitcoin-ui/bitcoin-amount", "dennisonbertram/bitcoin-ui/hash-display" ], "files": [ { "path": "components/bitcoin/block-card.tsx", "type": "registry:component" } ] }, { "name": "block-list", "title": "Block list", "description": "Dense recent-block list.", "type": "registry:component", "registryDependencies": ["dennisonbertram/bitcoin-ui/hash-display"], "files": [ { "path": "components/bitcoin/block-list.tsx", "type": "registry:component" } ] }, { "name": "transaction-row", "title": "Transaction row", "description": "Transaction summary for explorer and wallet lists.", "type": "registry:component", "registryDependencies": [ "dennisonbertram/bitcoin-ui/bitcoin-amount", "dennisonbertram/bitcoin-ui/confirmation-progress", "dennisonbertram/bitcoin-ui/hash-display", "dennisonbertram/bitcoin-ui/protocol-badges" ], "files": [ { "path": "components/bitcoin/transaction-row.tsx", "type": "registry:component" } ] }, { "name": "transaction-flow", "title": "Transaction flow", "description": "Responsive Bitcoin input and output flow.", "type": "registry:component", "dependencies": ["lucide-react"], "registryDependencies": [ "dennisonbertram/bitcoin-ui/bitcoin-amount", "dennisonbertram/bitcoin-ui/hash-display", "dennisonbertram/bitcoin-ui/protocol-badges" ], "files": [ { "path": "components/bitcoin/transaction-flow.tsx", "type": "registry:component" } ] }, { "name": "utxo-table", "title": "UTXO table", "description": "Semantic unspent transaction output ledger.", "type": "registry:component", "registryDependencies": [ "dennisonbertram/bitcoin-ui/bitcoin-amount", "dennisonbertram/bitcoin-ui/hash-display", "dennisonbertram/bitcoin-ui/protocol-badges" ], "files": [ { "path": "components/bitcoin/utxo-table.tsx", "type": "registry:component" } ] }, { "name": "fee-estimates", "title": "Fee estimates", "description": "Controlled or uncontrolled block-target fee selection.", "type": "registry:component", "dependencies": ["lucide-react"], "registryDependencies": [ "dennisonbertram/bitcoin-ui/bitcoin-core", "dennisonbertram/bitcoin-ui/bitcoin-theme" ], "files": [ { "path": "components/bitcoin/fee-estimates.tsx", "type": "registry:component" } ] }, { "name": "mempool-meter", "title": "Mempool meter", "description": "Accessible mempool size and fee summary.", "type": "registry:component", "registryDependencies": [ "dennisonbertram/bitcoin-ui/bitcoin-core", "dennisonbertram/bitcoin-ui/bitcoin-theme" ], "files": [ { "path": "components/bitcoin/mempool-meter.tsx", "type": "registry:component" } ] }, { "name": "difficulty-adjustment", "title": "Difficulty adjustment", "description": "Difficulty epoch progress and projected change.", "type": "registry:component", "registryDependencies": [ "dennisonbertram/bitcoin-ui/bitcoin-core", "dennisonbertram/bitcoin-ui/bitcoin-theme" ], "files": [ { "path": "components/bitcoin/difficulty-adjustment.tsx", "type": "registry:component" } ] }, { "name": "halving-countdown", "title": "Halving countdown", "description": "Block-based halving countdown and subsidy context.", "type": "registry:component", "registryDependencies": [ "dennisonbertram/bitcoin-ui/bitcoin-core", "dennisonbertram/bitcoin-ui/bitcoin-theme" ], "files": [ { "path": "components/bitcoin/halving-countdown.tsx", "type": "registry:component" } ] }, { "name": "network-stats", "title": "Network stats", "description": "Composable peer network metrics.", "type": "registry:component", "registryDependencies": [ "dennisonbertram/bitcoin-ui/bitcoin-core", "dennisonbertram/bitcoin-ui/bitcoin-theme" ], "files": [ { "path": "components/bitcoin/network-stats.tsx", "type": "registry:component" } ] }, { "name": "merkle-proof", "title": "Merkle proof", "description": "Readable transaction-to-root Merkle proof path.", "type": "registry:component", "dependencies": ["lucide-react"], "registryDependencies": ["dennisonbertram/bitcoin-ui/hash-display"], "files": [ { "path": "components/bitcoin/merkle-proof.tsx", "type": "registry:component" } ] }, { "name": "bitcoin-search", "title": "Bitcoin search", "description": "Validated search for Bitcoin heights, hashes, and addresses.", "type": "registry:component", "dependencies": ["lucide-react"], "registryDependencies": [ "dennisonbertram/bitcoin-ui/bitcoin-core", "dennisonbertram/bitcoin-ui/bitcoin-theme" ], "files": [ { "path": "components/bitcoin/bitcoin-search.tsx", "type": "registry:component" } ] }, { "name": "bitcoin-motion", "title": "Bitcoin motion", "description": "Accessible confirmation, mempool, proof-of-work, UTXO, and Merkle motion primitives.", "type": "registry:component", "registryDependencies": [ "dennisonbertram/bitcoin-ui/bitcoin-core", "dennisonbertram/bitcoin-ui/bitcoin-theme" ], "files": [ { "path": "components/bitcoin/bitcoin-motion.tsx", "type": "registry:component" }, { "path": "components/bitcoin/bitcoin-motion.module.css", "type": "registry:file", "target": "components/bitcoin/bitcoin-motion.module.css" } ] }, { "name": "longest-chain", "title": "Most-work chain", "description": "Interactive Bitcoin chain-race timeline with canonical, competing, stale, and orphan states.", "type": "registry:component", "registryDependencies": [ "dennisonbertram/bitcoin-ui/bitcoin-core", "dennisonbertram/bitcoin-ui/bitcoin-theme" ], "files": [ { "path": "components/bitcoin/longest-chain.tsx", "type": "registry:component" }, { "path": "components/bitcoin/longest-chain.module.css", "type": "registry:file", "target": "components/bitcoin/longest-chain.module.css" } ] }, { "name": "bitcoin-ui", "title": "Bitcoin UI complete suite", "description": "All Bitcoin UI components, formatting utilities, and semantic theme tokens.", "type": "registry:item", "registryDependencies": [ "dennisonbertram/bitcoin-ui/address-display", "dennisonbertram/bitcoin-ui/bitcoin-amount", "dennisonbertram/bitcoin-ui/bitcoin-motion", "dennisonbertram/bitcoin-ui/bitcoin-search", "dennisonbertram/bitcoin-ui/block-card", "dennisonbertram/bitcoin-ui/block-list", "dennisonbertram/bitcoin-ui/confirmation-progress", "dennisonbertram/bitcoin-ui/difficulty-adjustment", "dennisonbertram/bitcoin-ui/fee-estimates", "dennisonbertram/bitcoin-ui/halving-countdown", "dennisonbertram/bitcoin-ui/hash-display", "dennisonbertram/bitcoin-ui/longest-chain", "dennisonbertram/bitcoin-ui/mempool-meter", "dennisonbertram/bitcoin-ui/merkle-proof", "dennisonbertram/bitcoin-ui/network-stats", "dennisonbertram/bitcoin-ui/protocol-badges", "dennisonbertram/bitcoin-ui/transaction-flow", "dennisonbertram/bitcoin-ui/transaction-row", "dennisonbertram/bitcoin-ui/utxo-table" ], "files": [ { "path": "components/bitcoin/index.ts", "type": "registry:component" } ] }, { "name": "bitcoin-explorer", "title": "Bitcoin explorer", "description": "A data-source-agnostic block explorer composition.", "type": "registry:block", "registryDependencies": ["dennisonbertram/bitcoin-ui/bitcoin-ui"], "files": [ { "path": "components/examples/bitcoin-explorer.tsx", "type": "registry:component" } ] } ] }