diff --git a/src/app/(home)/page.tsx b/src/app/(home)/page.tsx index a7d7b91..44d4bf5 100644 --- a/src/app/(home)/page.tsx +++ b/src/app/(home)/page.tsx @@ -1,409 +1,532 @@ import Link from 'next/link' -import { Card, Cards } from 'fumadocs-ui/components/card' +import { Counter } from '@/components/landing/Counter' +import { Lockup, Mark } from '@/components/landing/Mark' +import { Reveal } from '@/components/landing/Reveal' +import { Ticker } from '@/components/landing/Ticker' -const uiPackages = [ - { - title: 'Core', - description: - 'Configuration singleton, CSS engine connector, and utility functions.', - href: '/docs/core', - }, - { - title: 'Styler', - description: - 'Lightweight CSS-in-JS engine (~3KB gzipped) with static/dynamic splitting.', - href: '/docs/styler', - }, - { - title: 'Attrs', - description: - 'Immutable chainable default-props factory for React components.', - href: '/docs/attrs', - }, - { - title: 'Elements', - description: 'Core UI primitives — Element, Text, List, Overlay, Portal.', - href: '/docs/elements', - }, - { - title: 'Rocketstyle', - description: - 'Dimension-based styling with theming, pseudo-states, and light/dark mode.', - href: '/docs/rocketstyle', - }, - { - title: 'Unistyle', - description: - '170+ CSS property mappings with responsive breakpoints and unit conversion.', - href: '/docs/unistyle', - }, +// Objective inventory — verified against the monorepo on 2026-05-21: +// 15 packages (packages/* count) +// styler bundle: 4.82 KB gzipped (size-limit budget 12 KB; actual measured) +// 28 React hooks (packages/hooks/src/use*.ts, deduped against .native variants) +// 123 kinetic presets (exported consts in kinetic-presets/src/presets.ts) +// 170+ CSS prop descriptors (packages/unistyle/src/styles/styles/propertyMap.ts) +// 5 element primitives: Element, Text, List, Overlay, Portal +const STATS = [ + { n: 15, lbl: 'Packages', suffix: '' }, + { n: 4.82, lbl: 'KB Styler (gzip)', suffix: '', float: true }, + { n: 170, lbl: 'CSS props', suffix: '+' }, + { n: 123, lbl: 'Motion presets', suffix: '' }, +] + +const FEATURES = [ { - title: 'Coolgrid', - description: - 'Flexible responsive grid system with Container, Row, and Col.', - href: '/docs/coolgrid', + glyph: '{ }', + title: 'Type-safe end to end', + meta: '01 · core', + body: 'Generic inference on dimensions, themes, and prop shapes. Iterator/List narrow per call-site mode; rocketstyle preserves dimension types through chain methods.', }, { - title: 'Hooks', - description: - '28 React hooks for state, DOM, events, timing, theming, and accessibility.', - href: '/docs/hooks', + glyph: '▽▽▽', + title: 'Composable by design', + meta: '02 · attrs', + body: 'Chainable factories — .attrs(), .theme(), .styles(), .compose(). priorityAttrs → attrs → explicit props (last wins). Marker-based detection (IS_ATTRS).', }, { - title: 'Connectors', - description: - 'CSS engine adapters — switch between Styler, styled-components, or Emotion.', - href: '/docs/connectors', + glyph: '⇌', + title: 'Swap the engine', + meta: '03 · connectors', + body: 'Same component code runs on built-in Styler (4.82 KB), styled-components, or Emotion via a single connector swap. RN target via connector-native.', }, { - title: 'Kinetic', - description: - 'Declarative enter/leave animations — Transition, Collapse, Stagger, and TransitionGroup.', - href: '/docs/kinetic', + glyph: '[ ]', + title: 'Responsive built-in', + meta: '04 · coolgrid', + body: 'Layout props accept scalars, arrays, or breakpoint objects. Mobile-first via the unistyle responsive resolver — no media-query boilerplate.', }, { - title: 'Kinetic Presets', - description: - '122 animation presets, 5 factories, and composition utilities for Kinetic.', - href: '/docs/kinetic-presets', + glyph: '( )', + title: 'Batteries included', + meta: '05 · tools-*', + body: 'Shared rolldown bundler, vitest config (90% coverage default), biome lint, and storybook 10 preset — published as separate @vitus-labs/tools-* packages.', }, { - title: 'Rocketstories', - description: - 'Auto-generated Storybook stories from rocketstyle components.', - href: '/docs/rocketstories', + glyph: '//', + title: '4.82 KB CSS engine', + meta: '06 · styler', + body: 'Static/dynamic split, React 19