Initial commit. Spun up via the docs/STARTER.md recipe: cp from vibespace, reset git, rename package, set brand to "Arcadia Admin" with Shield icon in app/lib/identity.ts. Inherits the full Crema sibling-lib wiring including @crema/arcadia-client (typed HTTP + Phoenix Channels realtime against arcadia-core) and @crema/arcadia-auth-ui (login/signup/password-reset/2FA forms). The /login route already renders <LoginForm>; <ArcadiaProvider> in app/root.tsx reads VITE_ARCADIA_URL (default localhost:4000) and VITE_ARCADIA_TENANT (default "default"). CLAUDE.md and README rewritten to frame this as the admin app for arcadia-core. docs/STARTER.md removed — arcadia-admin is a leaf consumer, not a downstream starter. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
41 lines
826 B
TypeScript
41 lines
826 B
TypeScript
// Project identity — brand and user. Hooks return module-singleton defaults
|
|
// so routes don't have to thread props. Swap the constants below for your
|
|
// project's brand; swap useUser() for a real session hook when you wire auth.
|
|
|
|
import { Shield, type LucideIcon } from "lucide-react"
|
|
|
|
export type Brand = {
|
|
name: string
|
|
icon: LucideIcon
|
|
}
|
|
|
|
export type User = {
|
|
name: string
|
|
email: string
|
|
initials: string
|
|
}
|
|
|
|
const brand: Brand = {
|
|
name: "Arcadia Admin",
|
|
icon: Shield,
|
|
}
|
|
|
|
const currentUser: User = {
|
|
name: "Signed-in user",
|
|
email: "user@example.com",
|
|
initials: "U",
|
|
}
|
|
|
|
export function useBrand(): Brand {
|
|
return brand
|
|
}
|
|
|
|
export function useUser(): User {
|
|
return currentUser
|
|
}
|
|
|
|
/** Convenience for non-React modules (page meta, scripts, etc). */
|
|
export function getBrand(): Brand {
|
|
return brand
|
|
}
|