Files
financial/app/site/examples/tenant-psp.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.4 KiB
JSON

{
"$comment": "Fictitious tenant override for a payment service provider white-labeling the site. Apply with: LUX_BRAND_OVERRIDE=./examples/tenant-psp.example.json pnpm build",
"name": "Acme Pay",
"legalName": "Acme Pay Holdings Ltd.",
"productName": "Acme",
"tagline": "Global payments, one API.",
"description": "Acme Pay is a multi-rail payment service provider for marketplaces, platforms, and global merchants.",
"domains": {
"primary": "acme.pay",
"app": "dashboard.acme.pay",
"docs": "developers.acme.pay",
"status": "status.acme.pay",
"api": "api.acme.pay"
},
"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://meet.acme.pay/sales",
"parent": "https://acme.pay"
},
"copyright": {
"holder": "Acme Pay Holdings Ltd.",
"attributionText": "By Acme Pay Holdings",
"startYear": 2021
},
"colors": {
"primary": "#FF5C00",
"primaryForeground": "#FFFFFF",
"ring": "#FF5C00"
},
"social": {
"twitter": "https://twitter.com/acmepay",
"linkedin": "https://linkedin.com/company/acmepay",
"github": "https://github.com/acmepay"
}
}