Files
zeekayandHanzo Dev b01b55c05d feat: split MPC/Safes/KMS, add Nodes module + runtime white-label brand system
Custody split into three distinct modules (nav + route + page + sandbox data):
- MPC (/mpc): threshold key-sharing custody — party set, key-share health, last-signed.
- Safes (/safes): on-chain M-of-N multisig — owners, threshold, queued txns, nonce (+house treasury safes).
- KMS (/kms): secrets/passphrases/API keys (masked); master key is MPC 3-of-5.
- Nodes (/nodes): the tenant's own L1 — validator fleet, consensus health, RPC, latest blocks, throughput.

Runtime white-label brand system (src/lib/brand.ts): ?brand=<id> (localStorage,
default lux) drives theme (light/dark), accent, wordmark, legal, and title via
CSS variables (real theme swap; index.html bootstraps pre-paint, no FOUC).
- lux (default): dark true-black, ▼ 'Lux Financial', legal 'Lux Financial'.
- acm: light + blue #1F4FFF, lowercase 'acm', legal 'ACM Global Inc'.
Added a light @hanzo/ui palette keyed by data-theme; blue primary by data-brand.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-17 22:43:55 -07:00

32 lines
1.6 KiB
HTML

<!DOCTYPE html>
<html lang="en" class="h-full" data-theme="dark" data-brand="lux">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#000000" />
<!-- Lux ▼ mark: white downward triangle on black. -->
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20100%20100'%3E%3Crect%20width='100'%20height='100'%20fill='black'/%3E%3Cpath%20d='M50%2078%20L20%2030%20L80%2030%20Z'%20fill='white'/%3E%3C/svg%3E" />
<title>Lux Financial — Admin</title>
<meta name="description" content="White-label banking-as-a-service admin console — customers, accounts, treasury, cards, compliance, custody, and chain." />
<!-- Runtime white-label brand: resolve ?brand / localStorage before first paint (no FOUC). -->
<script>
(function () {
try {
var p = new URLSearchParams(location.search).get('brand')
var b = p || localStorage.getItem('lux_admin_brand') || 'lux'
if (b !== 'lux' && b !== 'acm') b = 'lux'
if (p) localStorage.setItem('lux_admin_brand', b)
var root = document.documentElement
root.setAttribute('data-theme', b === 'acm' ? 'light' : 'dark')
root.setAttribute('data-brand', b)
document.title = (b === 'acm' ? 'ACM Global Tech' : 'Lux Financial') + ' — Admin'
} catch (e) {}
})()
</script>
</head>
<body class="h-full">
<div id="root" class="h-full"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>