Files
zeekayandHanzo Dev 0988173773 build: typecheck on the native compiler, keep 6 for the tools
typescript 7.0.2 is the native compiler and exports no JavaScript API, so next,
ts-jest and typescript-eslint cannot read it. It comes in aliased as tsgo and
does the typechecking; typescript stays on the 6 line for those tools.

Four settings the native compiler removed move with it. baseUrl is gone, so every
tsconfig that used it spells its own root as a "*" path; the shared base config's
@safe-global/* paths were only correct because baseUrl re-rooted them, and now
name the real directories from where they are written. moduleResolution node10
becomes bundler, downlevelIteration goes (it was a no-op at target esnext), and
apps/web declares '*.css' and '*.md'. Two sources follow: the faker import drops
its trailing '/.', and the IntersectionObserver mock gains scrollMargin.

All eight packages report 0 diagnostics before and after, identical on 6.0.3 and
7.0.2.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-17 00:44:22 -07:00
..
2026-08-20 20:13:31 -07:00

@safe-global/brand

White-label brand tokens for the Safe wallet monorepo.

Why

The Safe wallet codebase is the upstream OSS reference. Lux Safe, Zoo Safe, Pars Safe and Hanzo Vault all ship from the same source. To keep them in lock- step we keep brand strings (product name, URLs, support contacts, asset paths, primary color) out of the source — they live here, in one file, behind one type.

Shape

import { brand } from '@safe-global/brand'

brand.name // "Lux Safe"  (or "Zoo Safe", "Pars Safe", "Hanzo Vault")
brand.domain // "safe.lux.network"
brand.email // "[email protected]"
brand.helpUrl // "https://docs.lux.network/safe"
brand.logoUrl // "/brand/lux/logo.svg"
brand.primaryColor // "#000000"

See src/index.ts for the full Brand interface.

Where the values come from

The request host, at runtime — the same way getWhiteLabelBrand works across the rest of the Lux/Hanzo stack. safe.lux.network is Lux, safe.zoo.network is Zoo, safe.pars.network is Pars, vault.hanzo.ai is Hanzo Vault. A host that matches nothing gets Lux.

Nothing is baked in at build time, so one image serves every brand. Adding a brand means adding an entry to the registry in src/index.ts and an asset directory under apps/web/public/brand/<slug>/ — there is no env var to set and no per-brand build to run.

Rule

There is exactly one way to render the product name. It is brand.name. There is no 'Safe' string literal in source files. If you find one, replace it.