Skip to content

feat(admin): brand-restyle core CRUD surfaces (Living systems)#438

Merged
tayebmokni merged 5 commits into
mainfrom
feat/brand-admin-dashboard
May 25, 2026
Merged

feat(admin): brand-restyle core CRUD surfaces (Living systems)#438
tayebmokni merged 5 commits into
mainfrom
feat/brand-admin-dashboard

Conversation

@tayebmokni

Copy link
Copy Markdown
Contributor

Summary

Applies the "Living systems" brand to the admin's core CRUD surfaces, building on the foundation from #432 (tokens, fonts, shadcn primitives, <Headline>).

  • Sidebar + top header — forest-dark sidebar with org switcher, sectioned IA (Workspace · Content · Studio · Operator), emerald-bright Lucide on active rows, the radial-glow "Grow to Agency" upgrade card, emerald initials avatar in the foot. Top header carries the GoNext wordmark (italic "Next") with a "view site" anchor and notifications bell.
  • Dashboard (/) — "Site pulse." display headline, four-up stat tiles with sparklines, recharts area chart (emerald views + lavender conversions) inside a forest pulse card with the organic radial-glow backdrop, "Where they linger" lavender histogram with emerald-bright peaks.
  • Posts list (/posts) — "All posts." headline, emerald-soft active filter chip strip, paper-3 row hover, token-driven status badges (success / lavender / danger). PostListClient contract preserved (all 12 existing tests pass without modification).
  • Post detail (/posts/[id]) — metadata-only edit surface (block editor opens via /posts/[id]/edit in N3). 1fr/320px split: paper-2 main column with Headline-styled title input + slug + excerpt; sidebar inspector with Status / Schedule / Categories & tags / SEO panels.
  • Pages list + detail (/pages, /pages/[id]) — mirror of posts, trimmed for evergreen content.

Adds <BrandChart> recharts wrapper (BarChartSurface / LineChartSurface / Sparkline) so future report screens stay consistent without each caller threading brand colours.

Tokens are honoured — no drift. Lucide icons use emerald-bright on dark, emerald-deep on cream; italic accents use font-serif italic font-normal per the handoff.

Test plan

  • pnpm --filter @gonext/admin lint — clean (pre-existing media <img> warnings only)
  • pnpm --filter @gonext/admin typecheck — clean
  • pnpm --filter @gonext/admin test — 361 tests pass (was 340; +21 new snapshot / structure tests)
  • pnpm --filter @gonext/admin build — all 39 routes build, including 4 restyled
  • Visual review: open each route, confirm italic-accent headlines, forest sidebar, emerald active states, paper-3 hover.

🤖 Generated with Claude Code

@tayebmokni tayebmokni enabled auto-merge (squash) May 25, 2026 21:04
tib0o0o and others added 5 commits May 26, 2026 00:18
Sidebar adopts the forest-dark surface from
docs/design/ui_kits/admin/index.html — org switcher chip with
GoNext wordmark + plan dot, sectioned nav (Workspace · Content ·
Studio · Operator), Lucide icons that retune to emerald-bright on
the active row, and the radial-glow "Grow to Agency" upgrade card.
Adds an emerald initials avatar + sign-out trigger in the foot.

A new <TopHeader> carries the GoNext wordmark (italic "Next"
accent), an "Admin" eyebrow, a "view site" anchor, and a
notifications bell — matching the 54px topbar in the design
prototype.

The legacy Sidebar.test.tsx contract (collapse toggle + 13
canonical destinations) is preserved without modification.

Add recharts as a dependency so the dashboard data-viz can be
built without each call site bringing its own chart library.

Signed-off-by: Mohamed Tayeb Mokni <tayeb.mokni@gmail.com>
Rebuilds the admin landing page from the scaffold four-widget grid
into the brand's vital-signs view. Mirrors the layout patterns from
docs/design/ui_kits/admin/index.html + pulse.html:

  • Display headline with the italic-serif accent rule
    ("Site *pulse*.") and a live-indicator chip with an animated
    emerald dot.
  • Four stat tiles on paper-2 surfaces — Archivo numbers, delta
    badges (up = emerald-soft, down = danger-soft), and inline
    sparklines (emerald and lavender peaks).
  • A forest pulse card with the organic radial-glow backdrop, a
    recharts area chart showing views (emerald) + conversions
    (lavender), and an inspector column with top post / session
    / TTFB stats.
  • A "Where they linger" histogram (lavender bars, emerald peaks)
    plus a "What just happened" recent-activity panel.

Adds <BrandChart> primitives (BarChartSurface / LineChartSurface /
Sparkline) that concentrate the brand's data-viz language onto
recharts so future report screens stay consistent without each
caller threading colours.

Snapshot pins the page-head (not the recharts subtree — recharts
DOM is unstable across releases).

Signed-off-by: Mohamed Tayeb Mokni <tayeb.mokni@gmail.com>
Adopts the brand display-type header from
docs/design/ui_kits/admin/index.html — "All *posts*." with the
italic-serif accent on "posts", a sub-line in fg-muted, and the
Import / New post action cluster on the right. The actions migrate
to the shadcn <Button> primitive so they pick up the brand button
treatments (paper-2 default + ink primary) for free.

posts.module.css moves from --color-* aliases to direct brand
tokens. Filter chips now sit in a paper-3 segmented strip with
emerald-soft active state — matching the .tag--emerald pattern.
Table rows hover with paper-3, headers carry Geist Mono labels,
and a new "Scheduled" status badge gets the lavender-soft / lavender-
deep treatment from the moodboard.

Adds a snapshot test that pins the page-head Headline composition.

Signed-off-by: Mohamed Tayeb Mokni <tayeb.mokni@gmail.com>
Adds the per-resource edit-metadata pages for posts and pages, and
turns the pages list from a "Coming soon" placeholder into a real
brand-styled CRUD surface.

  • /posts/[id] — metadata-only edit surface (the block editor opens
    via /posts/[id]/edit, which arrives in N3). Italic-accent headline
    ("Edit *post*."), a 1fr/320px split with a paper-2 main column
    (Headline-styled title input + slug + excerpt) and a sidebar
    inspector with Status / Schedule / Categories & tags / SEO
    panels. Geist labels, emerald-soft success badges, lavender for
    scheduled, ink for private — all token-driven.

  • /pages — mirror of the posts list. Italic-accent headline
    ("All *pages*."), an emerald-soft active filter chip strip on
    paper-3, hover-paper-3 table rows. Seed data until the
    type=page endpoint ships (issue #76).

  • /pages/[id] — sibling of posts/[id], with the page-specific
    metadata trim (no scheduling-as-publication, no taxonomy).

Each new page gets a snapshot test that pins the page-head and
inspector structure. The existing posts client-island tests are
untouched.

Signed-off-by: Mohamed Tayeb Mokni <tayeb.mokni@gmail.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Signed-off-by: Tayeb Mokni <tayeb.mokni@gmail.com>
@tayebmokni tayebmokni force-pushed the feat/brand-admin-dashboard branch from 79d0f3b to f21038c Compare May 25, 2026 22:21
@tayebmokni tayebmokni merged commit d3d0651 into main May 25, 2026
12 of 16 checks passed
@tayebmokni tayebmokni deleted the feat/brand-admin-dashboard branch May 25, 2026 22:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants