RF

react-fancy

@particle-academy/react-fancy

Tailwind v4 + React component library — about 70 primitives.

TSUI · 67 components67 componentsCore of Human+
$npm install @particle-academy/react-fancy
Authoring surface
Humans compose it

Controlled value + onChange, JSON-friendly props, terse defaults — so people (and agents) build it fast.

Inhabited surface
Agents drive it over MCP

A bridge in @particle-academy/agent-integrations exposes typed tools — agents read and mutate state through stable handles, never DOM scraping.

form_set_fieldform_submit
Why
Building a full UI kit from scratch means reinventing the same foundation every time — button states, form validation, modals, dropdowns, floating tooltips. React ecosystems offer bloated alternatives (Material-UI, shadcn) that pull in heavy dependencies or expose only internal state, leaving agents to parse DOM. @particle-academy/react-fancy fills the gap: a lightweight, Tailwind-native component suite where every interactive primitive is controlled — value + onChange — and bridgeable to MCP tools without Playwright.
What
A constellation of 50+ React components spanning form inputs (Input, Select, DatePicker, Autocomplete), display primitives (Badge, Avatar, Card, Timeline), interactive surfaces (Table, Kanban, TreeNav, Menu), overlays (Modal, Popover, Toast, Command palette), and specialized affordances for Human+ UX like ReasonTag, MoodMeter, PromptInput, and MagicWand. Every stateful component embraces the Human+ contract: controlled state, stable data-react-fancy-* handles, JSON-friendly props, and optional AgentActivity event broadcasting for presence and undo layers.
How
Install npm install @particle-academy/react-fancy (peer deps: React 18+, React DOM 18+, Tailwind v4). Add @source to your CSS to let Tailwind scan the package: @source "../node_modules/@particle-academy/react-fancy/dist/**/*.js". Import and use: import { Button, Input, Modal, Table } from "@particle-academy/react-fancy"; import "@particle-academy/react-fancy/styles.css"; All components export a *Props interface; form fields support value, onChange, and validation via a wrapping <Field> component. With Inertia? Pair it with @particle-academy/fancy-inertia for one-line form integration.

Components

67 components · click any tile for a full demo, source, and install snippet.

AccordionOpen →
What is Fancy UI?
A constellation of React + PHP primitives.
How do I install?
AccordionPanelOpen →
Shipping & returns
Free returns within 30 days. One panel, fully controlled via open.
ButtonOpen →
The workhorse button — colors, states, icons, emoji, avatar, badge, loading. (formerly Action)
Autocomplete✎ inline editOpen →
cal
  • Calendar
  • Callout
  • Card
AvatarOpen →
RK
SL
MC
AY
+3
BadgeOpen →
newlivebetaurgentdraftv0.4
BrandOpen →
Particle Academy
fancy ui kit
BreadcrumbsOpen →
CalendarOpen →
July 2026
Su
Mo
Tu
We
Th
Fr
Sa
CalloutOpen →
CardOpen →

Plan

Pro
$29/mo
CarouselOpen →
Slide 2 of 4
ChartOpen →
ChatDrawerOpen →
Hey — quick question on the new bridge API.
Sure. What's the question?
CodeViewOpen →
CodeView
Live preview coming soon
Lightweight syntax-highlighted source view (HTML highlighted; fills height). Powers the Editor Source toggle.
ColorPicker✎ inline editOpen →
#8B5CF6
CommandOpen →
Search…⌘K
  • New file
  • Open settings
ComposerOpen →
Let's ship it.
ContentRendererOpen →

Release notes

Real components, not drawings.

  • one
  • two
ContextMenuOpen →
Right-click me
DropdownOpen →
Editor✎ inline editOpen →
Bold and italic text — round-trip safe JSON.
EmojiOpen →
🚀🔥
EmojiSelectOpen →
Search emoji…
FauxClientOpen →
ui.particle.academy/packages
The page inside the chrome.
Browser / device / window chrome rendering real, interactive UI inside (with scale-to-fit).
FileBrowserOpen →
FileBrowser
Live preview coming soon
Remote-capable file/folder browser + directory picker — lazy async provider or streamed JSON snapshots, controlled selection, breadcrumb + editable path, ARIA tree keyboard nav.
FileUploadOpen →
Drop files here
or click to browse
HeadingOpen →

Display

Section title

Subsection

IconOpen →
InputTagOpen →
agent human+ux Add…
Inputs✎ inline editOpen →
Role
Admin
KanbanOpen →
Todo
Audit tiles
Doing
Ship 0.4
MagicWandOpen →
Selected text ready to transform.
Shorten Translate
MarqueeOpen →
Auto-scrolling ticker strip — seamless wrap, px/s speed, opposing directions, fade edges, reduced-motion safe.
MediaViewerOpen →
Auto-detected from src/mime
Picks the right viewer (image / video / audio / PDF) from a mime or src; download fallback. Exports resolveMediaType.
ImageViewerOpen →
Zoom + pan
Fit-to-container image with zoom / pan and a transparency checkerboard.
VideoViewerOpen →
Native video controls with poster and fit.
AudioViewerOpen →
podcast-ep-12.mp3
Themed card around the native audio player.
PdfViewerOpen →
This browser can't display the PDF inline.Download PDF
Inline PDF via <object> / <iframe> with a download fallback.
DrawerOpen →
Panel that slides in from any edge — viewport-level, or attached inside a Card or layout pane.
MenuOpen →
Workspace
MobileMenuOpen →
App
Home
Inbox
Settings
ModalOpen →
Confirm
Delete this project?
MoodMeterOpen →
↑ sure
↓ unsure
5.00
1.00
4.00
NavbarOpen →
FancyDocsPricing
OtpInput✎ inline editOpen →
PaginationOpen →
PillboxOpen →
agenthuman+uxfancy-ui
PopoverOpen →
A floating panel anchored to a trigger.
PortalOpen →
document.body
Renders outside the tree
ProfileOpen →
RK
Rita KumarSenior engineer · NYC
ProgressOpen →
PromptInputOpen →
Build me a calendar with team availability
ReasonTagOpen →
High intent
SeparatorOpen →

Above

Below

or
SidebarOpen →
Workspace
SkeletonOpen →
StickyNoteOpen →
Ship the dream ✨
Review PR #42
TableOpen →
NameStatus
api.prodlive
api.stageslow
TabsOpen →

3 active services · 0 alerts

TextOpen →

Large paragraph.

Medium for body copy.

Smaller for hints.

Extra small for metadata.

TimeGridOpen →
MTWTF
9a
11a
1p
3p
5p
TimelineOpen →

Released v0.4

Ports → Zustand

Audit complete

TimePicker✎ inline editOpen →
09
:
30
ToastOpen →
Saved
Your settings are up to date.
TooltipOpen →
Helpful detail
TreeNavOpen →
src
components
Card.tsx
Button.tsx
index.ts