mirror of
https://github.com/hanzoai/finance.git
synced 2026-10-30 18:36:28 +00:00
Catch this repo up to the published 8.x fleet standard.
Packages (verified latest on npm, not assumed):
@hanzo/gui ^7.3.0 → ^8.0.1
@hanzo/ui ^8.0.0 → ^8.0.39
@hanzogui/config ^7.3.0 → ^8.0.1
@hanzogui/next-theme ^7.3.0 → ^8.0.0
@hanzo/data ^1.2.0 → ^1.2.2
@hanzogui/lucide-icons-2 — dropped; it is a hard dependency of @hanzo/ui now,
so naming it here was a second place for one fact to live.
8.x moved DataTable / LineChart / Sparkline off the root barrel (the root is a
client boundary and Next 16 refuses `export *` across one), so those imports
now come from @hanzo/ui/product. The product barrel hard-imports
react-native-svg with no declared dependency on it, so web declares it.
ONE gui config. Both packages carried their own `createGui(defaultConfig)` —
exactly the fork @hanzo/ui/gui-config exists to prevent ("a second app that
copied it would fork it"). Both copies are deleted; gui.d.ts and GuiRoot read
the canonical scale, so the finance board now renders with the type ladder,
radii and spacing the console renders it with.
ONE Hanzo mark. web/src/components/Logo.tsx hand-copied the 7-path glyph
byte-for-byte; it now re-exports @hanzo/ui/product's HanzoMark. No bundle cost —
/signin and /auth/callback stayed at 104 kB.
Post-Tailwind theming: @hanzo/ui 8.x ships its identity as plain CSS custom
properties, so the app imports @hanzo/ui/theme.css + the motion/skeleton rules
and marks <html class="dark">. Body type binds --font-geist-sans. Verified in
the built CSS bundle: --background, --font-geist-sans, .dark and .hz-skeleton
all land alongside the finance brand chrome. (No Tailwind, shadcn or Radix was
ever present in this repo — nothing to strip.)
TypeScript 7 native: @typescript/native-preview, and typecheck/build run tsgo.
Both packages are clean under it. tsgo is stricter than tsc about side-effect
imports of unresolvable modules (TS2882), which is what web/css.d.ts declares —
Next only ships a `*.module.css` declaration.
next.config: @hanzo/gui and all ~114 @hanzogui/* packages ship built dist in
8.x, so the readdirSync sweep that fed transpilePackages is gone. Only the two
packages that publish raw TypeScript source (@hanzo/finance-ui, @hanzo/data)
still need transpiling.
Also: POS/NEG sign colors are exported from one place instead of the hex being
re-spelled in cards.tsx, and ad-hoc `as never` color casts go through
@hanzo/ui's sanctioned `asColor`.
Verified: pnpm install --frozen-lockfile, then the exact web/Dockerfile CI gate —
finance-ui tsgo + 27/27 vitest + next build, 11/11 static pages, exit 0. Booted
the standalone server and rendered the landing page and /signin.
Co-authored-by: Hanzo Dev <[email protected]>
33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
// The @hanzo/ui identity is self-contained CSS custom properties (`@hanzo/ui/theme.css`)
|
||
// plus the motion/skeleton rules its components name — imported BEFORE the finance
|
||
// brand chrome so `globals.css` layers on top of the fleet tokens, not under them.
|
||
import '@hanzo/ui/theme.css'
|
||
import '@hanzo/ui/styles/motion.css'
|
||
import './globals.css'
|
||
import type { Metadata, Viewport } from 'next'
|
||
import { resolveConfig } from '~/config'
|
||
import { GuiRoot } from '~/components/GuiRoot'
|
||
|
||
const cfg = resolveConfig()
|
||
|
||
export const metadata: Metadata = {
|
||
title: `${cfg.productName} — one ledger for your money operations`,
|
||
description:
|
||
'A native double-entry ledger, payment connectors, and a treasury dashboard — run your organization’s financial operations on Hanzo.',
|
||
applicationName: cfg.productName,
|
||
}
|
||
|
||
export const viewport: Viewport = {
|
||
themeColor: '#08080a',
|
||
}
|
||
|
||
export default function RootLayout({ children }: { children: React.ReactNode }): React.JSX.Element {
|
||
return (
|
||
<html lang="en" className="dark">
|
||
<body>
|
||
<GuiRoot>{children}</GuiRoot>
|
||
</body>
|
||
</html>
|
||
)
|
||
}
|