6-8 Sports6-8UI Framework

Component Library

Navigation

The wayfinding layer of the broadcast: app shells, rails, tab decks, trails, and pagers. Every element carries the teal-on-navy signature — glowing active states, glass chrome, and condensed uppercase type — so a viewer always knows where they are in the feed.

6-8 UI

App shell

A sticky glass header with the real brand mark, a prop-driven tab deck with a glowing active underline, an optional right slot, and a fixed broadcast scanline overlay. Children render in a centered container.

NavShell

12

Games Live

48

Teams

3.2K

Watching

PropTypeDefaultDescription
tabsNavShellTab[][]Tab deck; the entry flagged active gets the glowing underline.
titleReactNodeWordmark rendered beside the logo.
logoSrcstring"/brand/68-logo-white.png"Real brand asset for the mark — never a drawn logo.
rightSlotReactNodeRight-aligned slot for status, actions, or an avatar.
contentClassNamestring"max-w-[1200px]"Max-width class for the centered content container.

6-8 UI

Tabs

Radix-powered tab decks with uppercase tracked triggers. A single glowing indicator slides to the active trigger with a spring — an underline in the line variant, a glass pill in the pill variant.

Line

Season at a glance — record, streak, and the next tip-off, all in one broadcast card.

Pill

3 games in progress

PropTypeDefaultDescription
defaultValue / valuestringUncontrolled or controlled active tab (Radix-compatible).
onValueChange(v: string) => voidFires with the next value when the selection changes.
variant"line" | "pill""line"Set on TabsList / TabsTrigger to pick the indicator style.

6-8 UI

Sidebar

A vertical rail with icon-and-label entries, a sliding teal indicator on the active row, badges, and a smooth collapse to an icon-only width. Use the toggle at the base to collapse.

Collapsed
PropTypeDefaultDescription
itemsSidebarItem[]Entries with label, href, optional icon, active, and badge.
header / footerReactNodeBrand block pinned to the top and content above the toggle.
collapsiblebooleantrueShow the collapse control at the base of the rail.
defaultCollapsed / collapsedbooleanUncontrolled or controlled collapsed width.

6-8 UI

Breadcrumbs

A compact trail with chevron separators. Ancestor links stay muted and light up on hover; the current page reads in glowing teal.

Trail
PropTypeDefaultDescription
BreadcrumbLinka | asChildAncestor link; pass asChild to render a Next Link.
BreadcrumbPagespanCurrent page — teal, glowing, aria-current='page'.
BreadcrumbSeparatorliChevron by default; pass children to override.

6-8 UI

Pagination

Prev / next controls flanking numbered pages, with pinned first and last pages and ellipsis gaps for long ranges. The active page carries the teal glass glow.

Long range
Compact
PropTypeDefaultDescription
countnumberTotal number of pages.
defaultPage / pagenumber1Uncontrolled or controlled current page (1-indexed).
onPageChange(page: number) => voidFires with the next page on any change.
siblingCountnumber1Pages shown on each side of the current page.
size"sm" | "md" | "lg""md"Control dimensions.

6-8 UI

Usage

Compose the shell, rail, and tab deck straight from the library.

Copy
import { NavShell } from "@/components/ui/nav-shell";
import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/ui/tabs";

export function LeagueCenter() {
  return (
    <NavShell
      title="6-8 League Center"
      tabs={[
        { label: "Scoreboard", href: "/scoreboard", active: true },
        { label: "Standings", href: "/standings" },
        { label: "Teams", href: "/teams" },
      ]}
    >
      <Tabs defaultValue="overview">
        <TabsList>
          <TabsTrigger value="overview">Overview</TabsTrigger>
          <TabsTrigger value="roster">Roster</TabsTrigger>
        </TabsList>
        <TabsContent value="overview">Season at a glance…</TabsContent>
        <TabsContent value="roster">Depth chart…</TabsContent>
      </Tabs>
    </NavShell>
  );
}