Skip to content

@tank/frontend-craft

1.3.0

Description

Frontend craft for polished, distinctive apps. Micro-interactions, perceived performance, premium components, visual polish, design foundations (typography, OKLCH color, spatial design), responsive, interaction patterns, UX writing, AI slop detection, shadcn registry search (11K+ components).

Triggered by

animationskeletonframer motionshadcnaceternityUI polish
Download
Unsafe
tank install @tank/frontend-craft

Frontend Craft

Core Philosophy

  1. Speed is a feeling, not a metric — Users judge speed by perceived responsiveness. Optimistic updates, skeleton screens, and instant feedback matter more than raw milliseconds.
  2. Every interaction deserves feedback — Buttons press, toggles snap, lists stagger. Silent UI feels broken. Animated UI feels alive.
  3. Polish compounds — One shadow system, one spacing scale, one motion language. Consistency across details creates the "premium" feeling.
  4. States are first-class UI — Loading, empty, error, and success states are not afterthoughts. Design them with the same care as the happy path.
  5. Accessibility is not optional — Reduced motion, focus management, keyboard navigation, screen readers. Premium means premium for everyone.
  6. Distinctive beats generic — If someone immediately thinks "AI made this," the design failed. Avoid the AI fingerprints: Inter font, purple gradients, card-in-card, gray-on-color text, bounce easing.

Quick-Start: Make It Feel Fast

Problem: "The app feels slow"

  1. Add skeleton screens matching content layout for anything over 200ms. -> See references/perceived-performance.md
  2. Implement optimistic updates for user-initiated mutations. -> See references/perceived-performance.md
  3. Prefetch routes on hover with router.prefetch(href). -> See references/perceived-performance.md

Problem: "The UI feels dead"

  1. Check Aceternity UI catalog for pre-built animated components first. -> See references/aceternity-ui-catalog.md
  2. Add whileHover scale 1.02 and whileTap scale 0.98 to buttons.
  3. Use staggered entrance animations for lists (staggerChildren: 0.05).
  4. Animate page transitions with AnimatePresence mode="wait". -> See references/micro-interactions.md

Problem: "I need a premium data table"

  1. Use TanStack Table v8 (headless) with virtual scrolling for 100+ rows.
  2. Add column resizing, faceted filtering, and inline editing.
  3. Wrap in shadcn/ui DataTable component pattern. -> See references/premium-components.md

Problem: "I need an animated hero / landing section"

  1. Browse Aceternity components: hero-parallax, lamp, spotlight, aurora-background, background-beams, background-gradient-animation.
  2. Add text effects: text-generate-effect, typewriter-effect, flip-words.
  3. Install via npx shadcn@latest add @aceternity/<component>.
  4. Fetch source from https://ui.aceternity.com/registry/<name>.json. -> See references/aceternity-ui-catalog.md

Problem: "I need a component, block, or section"

  1. Search across 50+ registries: python scripts/search-components.py <query>
  2. Filter: --group animation, --tag glassmorphism, --groups / --tags to list
  3. Install: python scripts/search-components.py --install @acme/ui:hero-parallax -> See scripts/search-components.py --help

Problem: "The design looks generic / like AI made it"

  1. Review the AI slop fingerprints checklist and eliminate every match. -> See references/visual-polish.md (AI Slop Test section)
  2. Replace overused fonts (Inter, Roboto) with distinctive alternatives.
  3. Switch from HSL to OKLCH. Tint all neutrals toward brand hue.
  4. Commit to a bold design direction before writing any CSS. -> See references/design-foundations.md

Problem: "The design looks amateur"

  1. Apply a 5-level shadow elevation system consistently.
  2. Use exact component sizes — never eyeball button heights, padding, or spacing. -> See references/ui-sizing-rules.md
  3. Stick to 4pt spacing grid with OKLCH design tokens. -> See references/visual-polish.md + references/design-foundations.md

Decision Trees

When to Animate

TriggerAnimate?Pattern
User clicks/tapsYesScale 0.98 + spring (400/30)
User hoversYesSubtle lift + shadow increase
Content loadsYesSkeleton → fade-in with stagger
Page navigatesYesFade + slide (150ms ease-out)
Error appearsYesShake or red border pulse
Background data refreshNoSilent update, no flash
Resize/reflowNoInstant, no transition

Loading State Selection

Wait TimePatternExample
< 100msNothingInstant response
100-300msSubtle spinnerButton loading state
300ms-1sContent placeholderInline skeleton
1-3sFull skeleton screenPage-level loading
3s+Progress indicatorFile upload, export

Component Selection

NeedUseLibrary
Data display with sort/filterTanStack Table@tanstack/react-table
Global search / command menuCommand Palettecmdk
User notificationsToastsonner
Form with validationReact Hook Formreact-hook-form + zod
Overlay requiring actionDialog@radix-ui/react-dialog
Contextual side panelSheet@radix-ui/react-dialog (side)
Destructive confirmationAlertDialog@radix-ui/react-alert-dialog
Component variantsCVAclass-variance-authority
Visual effects, 3D, parallax, heroAceternity UInpx shadcn@latest add @aceternity/*
Marketing / dashboard blocksShadcn registriespython scripts/search-components.py
Creative animations, physicsReact Bits, Fancy Componentsshadcn CLI registry search

-> Full catalogs: references/component-discovery-sources.md

Visual Polish Priority

ImpactActionEffort
HighestConsistent spacing (4px grid)Low
HighShadow elevation systemLow
HighFocus-visible keyboard ringsLow
MediumSkeleton loading statesMedium
MediumDark mode with smooth transitionMedium
LowerBackdrop blur / glassmorphismLow
LowerCustom selection colorTrivial

The Premium Stack

Radix UI → shadcn/ui → Registry ecosystem (50+ registries, 11K+ components) → CVA → Tailwind → Framer Motion → TanStack → cmdk → Sonner → React Hook Form + Zod.

Always search external sources first — even for primitives.

SourceStrengthInstall
Shadcn registries50+ quality registries, 11K+ componentsnpx shadcn@latest add @registry/name
21st.devLargest single catalog (1500+), MCP servershadcn CLI
React BitsCreative animations (110+), 36K starsshadcn CLI
Aceternity UIVisual effects, 3D, parallax, backgroundsshadcn CLI
Magic UIAnimated UI components, 20K starsshadcn CLI
Fancy ComponentsPhysics, variable fonts, award-site effectsshadcn CLI

-> Full details: references/component-discovery-sources.md

Reference Files

FileContents
references/micro-interactions.mdFramer Motion patterns, spring physics, gesture interactions, CSS transitions, timing, reduced motion
references/perceived-performance.mdSkeleton screens, optimistic updates, progressive loading, prefetch, SWR, loading thresholds
references/premium-components.mdTanStack Table, cmdk command palettes, React Hook Form + Zod, modals/sheets, Sonner toasts
references/design-foundations.mdTypography (font selection, pairing, OKLCH, OpenType), Color (OKLCH, tinted neutrals, palettes, dark mode), Spatial Design (4pt grid, hierarchy, container queries)
references/responsive-interaction.mdResponsive (mobile-first, input detection, safe areas, srcset), Interaction (8 states, focus-visible, dialog, popover API, keyboard nav), UX Writing (button labels, error formulas, empty states, i18n)
references/visual-polish.mdShadow systems, spacing scales, gradients, backdrop blur, dark mode transitions, focus states, AI slop anti-patterns
references/state-choreography.mdLoading/error/empty/success states, page transitions, layout animations, skeleton reveals
references/component-architecture.mdshadcn/ui + Radix + CVA patterns, design tokens, variant systems, composition, accessibility
references/aceternity-ui-catalog.mdAceternity UI detailed component catalog with registry API endpoints
references/ui-sizing-rules.mdExact component dimensions (buttons, inputs, navbars, sidebars, modals, cards, avatars, icons), padding formulas, container widths, aspect ratios, cross-system sizing data
references/ui-standards-and-timing.mdUnbreakable accessibility rules (WCAG contrast, zoom, reflow), animation durations, easing functions, debounce values, response time thresholds, responsive scaling, platform hard rules, minimum component widths
references/component-discovery-sources.mdShadcn registries — 50+ registries, install methods, source selection. scripts/search-components.py searches offline cache; pull-all-registries.py fetches data.

Command Palette

Search skills, docs, and navigate Tank