Skip to content

Features Bento

Data-driven bento grid of bordered cards: cash-flow line chart, DSO metric, approval flow, currency list and integrations — each a small realistic mock.

neo-corporate/section/features-bento
Open ↗

Source

import { cn } from "@/lib/utils";

export interface FeaturesBentoProps {
  eyebrow?: string;
  title?: string;
  className?: string;
}

/** Data-driven bento grid of bordered cards: cash-flow line chart, DSO metric, approval flow, currency list and integrations — each a small realistic mock. */
export function FeaturesBento({ eyebrow = "Visibility", title = "Real-time answers to every finance question", className }: FeaturesBentoProps) {
  const card = "da-stroke rounded-da-lg bg-da-surface p-6 text-da-surface-fg";
  const line = [30, 42, 38, 55, 50, 62, 58, 71, 69, 80, 78, 92];
  const pts = line.map((v, i) => `${(i / (line.length - 1)) * 300},${100 - v}`).join(" ");
  return (
    <section aria-labelledby="nc-bento-title" className={cn("da-section bg-da-bg text-da-fg", className)}>
      <div className="da-container">
        <p className="text-xs font-semibold tracking-da-label text-da-primary uppercase">{eyebrow}</p>
        <h2
          id="nc-bento-title"
          className="mt-3 max-w-2xl font-da-display text-[clamp(2rem,4.5vw,3rem)] leading-[1.1] font-extrabold tracking-da-display text-balance"
        >
          {title}
        </h2>
        <ul className="mt-12 grid gap-4 md:grid-cols-6">
          <li className={cn(card, "md:col-span-4")}>
            <h3 className="font-da-display text-lg font-bold">Cash-flow forecast</h3>
            <p className="mt-1 text-sm text-da-muted-fg">13-week rolling forecast built from open invoices and scheduled bills.</p>
            <svg aria-hidden viewBox="0 0 300 100" className="mt-6 h-40 w-full overflow-visible" preserveAspectRatio="none">
              {[25, 50, 75].map((y) => (
                <line key={y} x1="0" x2="300" y1={y} y2={y} stroke="var(--da-border)" vectorEffect="non-scaling-stroke" />
              ))}
              <polyline points={`0,100 ${pts} 300,100`} fill="color-mix(in oklab, var(--da-primary) 12%, transparent)" />
              <polyline points={pts} fill="none" stroke="var(--da-primary)" strokeWidth="2" vectorEffect="non-scaling-stroke" />
            </svg>
          </li>
          <li className={cn(card, "flex flex-col md:col-span-2")}>
            <h3 className="font-da-display text-lg font-bold">Days sales outstanding</h3>
            <p className="mt-auto pt-8 font-da-mono text-5xl font-medium tabular-nums">18.4</p>
            <p className="mt-1 text-sm font-semibold text-da-success">−9.2 days since Ledgerly</p>
          </li>
          <li className={cn(card, "md:col-span-2")}>
            <h3 className="font-da-display text-lg font-bold">Approvals</h3>
            <ol aria-hidden className="mt-5 space-y-3 text-sm">
              {[
                ["Submitted", "Maya · $12,400 AWS", "bg-da-success"],
                ["Manager", "Approved by J. Ortiz", "bg-da-success"],
                ["Finance", "Pending · D. Whitfield", "bg-da-warning"],
              ].map(([t, d, c]) => (
                <li key={t} className="flex items-center gap-3">
                  <span className={cn("size-2.5 rounded-full", c)} />
                  <span className="font-semibold">{t}</span>
                  <span className="truncate text-da-muted-fg">{d}</span>
                </li>
              ))}
            </ol>
          </li>
          <li className={cn(card, "md:col-span-2")}>
            <h3 className="font-da-display text-lg font-bold">40 currencies</h3>
            <ul aria-hidden className="mt-5 space-y-2 font-da-mono text-sm">
              {[
                ["USD", "$1,284,300"],
                ["EUR", "€412,880"],
                ["GBP", "£96,210"],
              ].map(([c, v]) => (
                <li key={c} className="flex justify-between border-b border-da-border pb-2 last:border-0">
                  <span className="text-da-muted-fg">{c}</span>
                  <span>{v}</span>
                </li>
              ))}
            </ul>
          </li>
          <li className={cn(card, "md:col-span-2")}>
            <h3 className="font-da-display text-lg font-bold">Syncs with your ERP</h3>
            <ul className="mt-5 flex flex-wrap gap-2" aria-label="Integrations">
              {["NetSuite", "SAP", "Xero", "QuickBooks", "Sage Intacct", "Salesforce"].map((n) => (
                <li key={n} className="da-stroke rounded-da-md px-2.5 py-1 text-sm font-medium">
                  {n}
                </li>
              ))}
            </ul>
          </li>
        </ul>
      </div>
    </section>
  );
}

export default FeaturesBento;

modules/neo-corporate/section/features-bento/index.tsx

Props

PropTypeDefaultDescription
eyebrowstring—Small label above the heading.
titlestring—Heading.
classNamestring—Extra classes on the root.

Other features variants in Neo Corporate

Features in other art directions

Features Grid

Six features in a single ruled box (1/2/3 columns) with numbered tiles, color-cycling icon blocks that press on hover, and a two-column section header.

BrutalistFeatures

Features Numbered

Full-width ruled rows with giant faded step numbers, uppercase titles, descriptions and a stat chip; each row floods with a different primary color on hover and the number turns solid.

BrutalistFeatures

Features Tabs

Tabbed feature explorer: ruled mono tab bar (ink active tab), then a big split panel with title, description and square-bullet list on the left and a stacked mock preview of the channel on the right.

BrutalistFeatures

Features Versus

Before/after comparison: two slightly tilted cards side by side — the old way in paper with red crosses, the new way in solid yellow with ink checks — row by row on the same topics.

BrutalistFeatures

Features Bento

Glass bento grid on 6 columns: a large AI-recap tile with a mock summary and owner chips, plus five smaller frosted tiles with gradient squircle icons.

GlassFeatures

Features Glass Grid

Centered header and six frosted feature cards with gradient squircle icons; cards lift with an overshoot and reveal a soft corner glow on hover.

GlassFeatures

Features Orbit

Integrations section: copy with a chip list on one side, and a central gradient orb with integration bubbles orbiting on two counter-rotating glass rings (bubbles stay upright). Pure CSS.

GlassFeatures

Features Tabs

Glass pill tab bar (Radix Tabs) with gradient active tab switching a large frosted panel: title, copy and bullets on the left, a layered glass preview on the right.

GlassFeatures

Features Alternating

Three zig-zag rows, each pairing a numbered kicker, title, copy and link with an HTML product mock-up (routing rules, on-call week, AI postmortem) on a soft tinted plate.

MinimalFeatures

Features Bento

Bento grid of five hairline tiles on a 6-column layout, each with a small token-themed HTML illustration (routing lines, uptime bars, MTTR metric, on-call week) above an icon, title and description.

MinimalFeatures

Features List

Dense four-column feature list: each item has a small indigo line icon, a title and a one-sentence description under a hairline top rule. Eight defaults, left-aligned header.

MinimalFeatures

Features Steps

Five-step workflow (detect, page, coordinate, resolve, learn) laid out horizontally on desktop and vertically on mobile, joined by a hairline, with numbered nodes and timing labels.

MinimalFeatures

Features Index

Features as a numbered index: a label + headline in the left columns, and a two-column ruled list on the right where each item is “01 — Title” with a short description.

Mono CleanFeatures

Features Numbered

Three large numbered steps: giant outlined-looking numerals in muted ink above a hairline, step title and text; columns on desktop, stacked on mobile.

Mono CleanFeatures

Features Showcase

Work showcase as the feature: an asymmetric grid (fixed row heights; wide, tall, square and full-width spans) of neutral gray image frames with mono captions (studio — project, template used); captions underline on hover.

Mono CleanFeatures

Features Specs

Technical spec sheet: grouped key/value definition lists in a 4-column grid, each group under a full-ink rule with a mono heading — reads like a product data sheet.

Mono CleanFeatures

Features Alternating

Alternating zig-zag rows: copy with check points on one side, a soft blob-shaped tinted panel holding a small product vignette (suppliers, actions, report) on the other.

Organic SoftFeatures

Features Bento

Soft bento: rounded tinted tiles of mixed sizes — a monthly emissions bar chart, a human equivalence (“= 42 flights”), supplier avatars, a certifications tile and a leaf quote.

Organic SoftFeatures

Features Cards

Three tall rounded cards in sage, clay and paper tints; each has an icon sitting in an organic blob, a serif title and calm copy.

Organic SoftFeatures

Features Journey

Horizontal journey: numbered circles connected by a hand-drawn wavy dashed path (vertical list on mobile), each step with a serif title, text and a mono time estimate.

Organic SoftFeatures

Features Checklist

Interactive split section: copy and a mint progress bar on the left, a white card of four round-checkbox steps on the right that turn mint with a bouncy tick when clicked; celebration at 100%.

Soft FlatFeatures

Features Icons

Centered 4-column grid of eight small features, each with a large round pastel icon badge (colors rotate), rounded title and one-liner.

Soft FlatFeatures

Features Pastel

2×2 grid of large pastel feature cards (peach, mint, lavender, butter), each with icon, rounded title, copy and a tiny flat illustration (mini board, bar week, reminder toast, chat bubbles).

Soft FlatFeatures

Features Steps

Three numbered step cards in peach, lavender and mint joined by a dashed path on desktop, each with a white emoji medallion, mono step label, title and text.

Soft FlatFeatures