Files
financial/app/site/examples/tenant-bank.example.json
zeekay 2196d6ee71 refactor(site): every brand-bearing string flows through @luxbank/brand; add LUX_BRAND_OVERRIDE/INLINE env passthrough + tenant examples
- @luxbank/brand: add productName, urls, contactEmails, copyright surfaces
  to BrandConfig; resolve tenant overrides from LUX_BRAND_INLINE (JSON
  string, optionally base64) and LUX_BRAND_OVERRIDE (path to JSON file);
  domain-driven URL/email derivation when only `domains.primary` is set.
- next.config.js: resolve LUX_BRAND_OVERRIDE at Node config time and
  pass through as LUX_BRAND_INLINE so the same JSON is visible to both
  server and client bundles (no fs in the browser).
- layout.tsx: metadata reads from LUX_BRAND.name + urls.site.
- Footer/Menu/NavDropdown/CommandPalette/ChatWidget/UserSteps: all
  brand-bearing URLs, emails, copyright, attribution, and product-name
  strings sourced from LUX_BRAND.
- ~40 product/technology/solutions/contact/press/security pages: hardcoded
  docs.lux.financial / app.lux.financial / status.lux.financial /
  cal.com/luxfi / mailto:*@lux.financial swapped for LUX_BRAND.urls.* and
  LUX_BRAND.contactEmails.*.
- examples/tenant-bank.example.json + tenant-psp.example.json: working
  fictitious tenant overrides demonstrating the full surface (name,
  legalName, productName, domains, urls, contactEmails, copyright, colors,
  social). Build the same code as a fully-rebranded site with
  LUX_BRAND_OVERRIDE=./examples/tenant-<x>.example.json pnpm build.
- pkg/brand 1.0.2 -> 1.0.3; root 0.1.2 -> 0.1.3.
2026-05-24 14:53:04 -07:00

45 lines
1.5 KiB
JSON

{
"$comment": "Fictitious tenant override for a bank white-labeling the site. Apply with: LUX_BRAND_OVERRIDE=./examples/tenant-bank.example.json pnpm build",
"name": "Example Bank",
"legalName": "Example Bank, N.A.",
"productName": "Example",
"tagline": "Modern banking infrastructure for your clients.",
"description": "Example Bank provides chartered banking, payments, and custody to fintechs and treasurers worldwide.",
"domains": {
"primary": "examplebank.com",
"app": "app.examplebank.com",
"docs": "docs.examplebank.com",
"status": "status.examplebank.com",
"api": "api.examplebank.com"
},
"contactEmails": {
"general": "[email protected]",
"support": "[email protected]",
"sales": "[email protected]",
"press": "[email protected]",
"security": "[email protected]",
"compliance": "[email protected]",
"legal": "[email protected]",
"careers": "[email protected]"
},
"urls": {
"schedule": "https://cal.com/example-bank",
"parent": "https://examplebank.com"
},
"copyright": {
"holder": "Example Bank, N.A.",
"attributionText": "An Example Financial Holdings company",
"startYear": 1998
},
"colors": {
"primary": "#0B5FFF",
"primaryForeground": "#FFFFFF",
"ring": "#0B5FFF"
},
"social": {
"twitter": "https://twitter.com/examplebank",
"linkedin": "https://linkedin.com/company/examplebank",
"github": ""
}
}