Ziteox Forge

BrandCredit

Footer attribution with variant support.

BrandCredit

Domain: branding
Package path: packages/ui/src/branding/
Import: @ziteox/ui or @ziteox/ui/branding

Footer attribution: "{Variant} with ❤️ by Ziteox" with logo link.

Preview

Engineered with byZiteox

BrandCredit

Usage

import { BrandCredit } from "@ziteox/ui";

export function Footer() {
  return <BrandCredit variant="engineered" />;
}

Props

PropTypeDefaultDescription
variantBrandCreditVariant"engineered"Attribution verb
hrefstring"https://ziteox.com"Link target
classNamestringAppended to root <p> classes

Variants

Defined in packages/ui/src/branding/variants.ts:

variantRendered text
"engineered"Engineered with ❤️ by Ziteox
"built"Built with ❤️ by Ziteox
"designed"Designed with ❤️ by Ziteox
"developed"Developed with ❤️ by Ziteox
<BrandCredit variant="built" />
<BrandCredit variant="designed" />
<BrandCredit variant="developed" />

Adding a variant

Extend BRAND_CREDIT_VARIANTS in variants.ts:

export const BRAND_CREDIT_VARIANTS = {
  engineered: "Engineered",
  built: "Built",
  designed: "Designed",
  developed: "Developed",
  crafted: "Crafted", // new
} as const;

No changes to BrandCredit component API required. TypeScript union updates automatically.

Exported constants

import { BRAND_CREDIT_VARIANTS } from "@ziteox/ui/branding";

Useful for docs, tests, or building variant pickers in apps.

Visual behavior

ElementBehavior
TextMuted foreground (--ziteox-brand-credit-muted); lighter in .dark / [data-theme="dark"]
HeartInline SVG; turns red (#ef4444) on hover over entire attribution line
Ziteox link#21ab70 brand green; opacity 0.8 on hover
LogoInline SVG mark, 14×14px

Hover uses :hover on root .ziteox-brand-credit — no parent group class required.

Server Components

No "use client" directive. Safe to render in React Server Components (Next.js App Router).

No hooks. No browser-only APIs on render.

Dependencies

No peers beyond react for JSX. Does not require motion or next-themes.

Architecture notes

DecisionRationale
Variant map in separate fileAdd verbs without touching component logic
Plain <a> not next/linkFramework-agnostic
Inline SVG not icon libraryZero extra deps; full control
No motionStatic content + CSS hover transition