Design system

The Bootstrap building blocks Neon Law's surfaces share, painted with the brand cyan primary (Tailwind cyan-500 #06b6d4). Each block below is the same component the live app renders.

Color

One cyan everywhere — "primary", "the blue", and "the cyan" all resolve to it.

Primary (cyan-500)
#06b6d4
.bg-primary
Link hover (cyan-600)
#0891b2
Link active (cyan-700)
#0e7490
Subtle bg
#cffafe
.bg-primary-bg-subtle

Buttons

Cyan solid for the primary action, outline for the secondary.

Link

Cards

The shared Card component — plain, highlighted (cyan anchor), and with a footer.

Plain card

A shadowed container for any content.

Recommended

Highlighted

The cyan anchor treatment — border plus header band.

With a footer

Secondary actions and fine print live in the footer.

Pricing cards

The featured tier gets the cyan band and a solid CTA.

Starter

$0 /mo

For trying things out.

  • One project
  • Community support
Get started
Recommended

Growth

$5,000 /mo

The firm's recommended tier.

  • Unlimited projects
  • Priority support
Get started

Toasts

Server-rendered with the static .show class; the brand cyan is the Primary tone.

Navbar

The same Bootstrap navbar PageLayout renders site-wide — brand mark, collapsible links, and a mobile hamburger.

Forms

The shared FormCard — labeled fields, a cyan submit, in a centered card.

Contact us

Code

Real, copy-pasteable component source — each block is verified against its file by the drift test, the same grounding the talk slides use.

The Card component — views/src/components/card.rs
pub struct Card {
    header: Option<Markup>,
    body: Markup,
    footer: Option<Markup>,
    emphasis: Emphasis,
    full_height: bool,
    center_body: bool,
    shadow: bool,
}
The cyan anchor treatment — one builder call — views/src/components/card.rs
    pub fn highlighted(mut self) -> Self {
        self.emphasis = Emphasis::Highlighted;
        self
    }
Toast tones — Primary is the brand cyan — views/src/components/toast.rs
pub enum ToastTone {
    /// Red — errors and "you must sign in" gates.
    Danger,
    /// Green — confirmations.
    Success,
    /// Brand cyan — neutral notices.
    Primary,
    /// Amber — non-blocking warnings.
    Warning,
}
Pin a toast to the top-right overlay — views/src/components/toast.rs
pub fn toast_overlay(toasts: &Markup) -> Markup {
    html! {
        div."toast-container"."position-fixed"."top-0"."end-0"."p-3" { (toasts) }
    }
}