Fluid Functionalism
Use this skill to bring Fluid Functionalism into a React/Next.js project as selective shadcn registry components, not as a vendored library.
Sources:
Fit
Use Fluid Functionalism when the project already uses, or can reasonably adopt:
- React or Next.js
- Tailwind CSS
- shadcn/ui registry workflow
- Framer Motion for interactive motion
- Radix UI or Base UI, matching the project's primitive engine
Do not install it wholesale. Pull only the components needed for the current interface, then adapt the generated files to the project's local tokens, component names, and import aliases.
Design Principle
Fluid Functionalism is strongest for operational UI and AI/product surfaces where motion clarifies state:
- Motion communicates state changes.
- Hover acts as preview, especially through proximity hover.
- Spring animation should adapt when a user reverses direction.
- Components should inherit the existing shadcn theme instead of imposing a new visual brand.
For one-off hover fixes, use css-interaction-tips. For custom React animation work, use framer-motion. For final visual QA, use preflight.
Install Workflow
- Confirm the project has shadcn configured (
components.json) and Tailwind available.
- Check whether the target file already exists, especially
components/ui/button.tsx, components/ui/dialog.tsx, and similar shared primitives.
- If existing shared primitives would be overwritten, install in a throwaway branch/project or fetch the registry JSON and port the useful pattern manually.
- Add the registry when repeated use is likely:
npx shadcn@latest registry add @fluid
- Install selected components:
npx shadcn@latest add @fluid/button
- For one-off installs, use the direct registry URL:
npx shadcn@latest add https://www.fluidfunctionalism.com/r/button.json
- Preserve the project's existing primitive engine. For fresh projects, read
Studio's current behavior-engine default and choose the matching variant.
Base UI variants use
-base names, such as button-base, dialog-base,
tabs-base, and tooltip-base.
- If keeping font-weight animation, ensure the app loads Inter variable or adjust the generated font-weight helper to the project's variable font.
- Run the app, check light and dark themes, and browser-test the exact interaction. Pay attention to hover previews, keyboard focus, reduced-motion behavior, and overwritten local components.
Component Selection
Read references/component-inventory.md when choosing components. For the freshest list, query the live registry:
curl -LfsS https://www.fluidfunctionalism.com/r/registry.json \
| jq -r '.items[] | select(.type == "registry:ui") | [.name, .title, .description] | @tsv'
Fast choices:
- Core controls:
button, tabs, tabs-subtle, switch, slider, select, dropdown, tooltip.
- Forms:
input-group, input-copy, checkbox-group, radio-group, color-picker.
- AI/chat UI:
input-message, chat-message, thinking-indicator, thinking-steps, ask-user-questions.
- Data and layout:
table, accordion, dialog, surfaces, elevated.
Adaptation Rules
- Preserve local design-system ownership. Do not replace established primitives unless the user asked for a Fluid Functionalism skin.
- Keep generated code inspectable and project-owned, like normal shadcn components.
- Normalize imports after install. The registry commonly uses
@/lib/* and @/components/ui/*.
- If a component brings icon switching, decide whether the project really needs Tabler, Phosphor, and HugeIcons. Prefer the existing icon set when possible.
- Treat
surfaces and elevated as a system-level choice. Install them when nested popovers, dialogs, or dropdowns need a consistent elevation ladder.
- Keep MIT attribution when copying substantial source out of the upstream repo instead of installing through the registry.
Validation
After integration:
- Run the repo's lint/build/test commands.
- Use a browser check for the changed screen.
- Verify keyboard focus, disabled states, loading states, and dark mode.
- Inspect generated CSS variables and dependencies for unintended palette or package sprawl.
1---2name: fluid-functionalism3description: Fluid Functionalism component-kit workflow for React/Next.js. Use when the user asks for @fluid components, animated shadcn components, proximity hover, spring controls, Micka components, or polished form/control micro-interactions.4---56# Fluid Functionalism78Use this skill to bring Fluid Functionalism into a React/Next.js project as selective shadcn registry components, not as a vendored library.910Sources:11- Docs: https://www.fluidfunctionalism.com/docs12- Registry: https://www.fluidfunctionalism.com/r/registry.json13- GitHub: https://github.com/mickadesign/fluid-functionalism1415## Fit1617Use Fluid Functionalism when the project already uses, or can reasonably adopt:1819- React or Next.js20- Tailwind CSS21- shadcn/ui registry workflow22- Framer Motion for interactive motion23- Radix UI or Base UI, matching the project's primitive engine2425Do not install it wholesale. Pull only the components needed for the current interface, then adapt the generated files to the project's local tokens, component names, and import aliases.2627## Design Principle2829Fluid Functionalism is strongest for operational UI and AI/product surfaces where motion clarifies state:3031- Motion communicates state changes.32- Hover acts as preview, especially through proximity hover.33- Spring animation should adapt when a user reverses direction.34- Components should inherit the existing shadcn theme instead of imposing a new visual brand.3536For one-off hover fixes, use `css-interaction-tips`. For custom React animation work, use `framer-motion`. For final visual QA, use `preflight`.3738## Install Workflow39401. Confirm the project has shadcn configured (`components.json`) and Tailwind available.412. Check whether the target file already exists, especially `components/ui/button.tsx`, `components/ui/dialog.tsx`, and similar shared primitives.423. If existing shared primitives would be overwritten, install in a throwaway branch/project or fetch the registry JSON and port the useful pattern manually.434. Add the registry when repeated use is likely:4445```bash46npx shadcn@latest registry add @fluid47```48495. Install selected components:5051```bash52npx shadcn@latest add @fluid/button53```54556. For one-off installs, use the direct registry URL:5657```bash58npx shadcn@latest add https://www.fluidfunctionalism.com/r/button.json59```60617. Preserve the project's existing primitive engine. For fresh projects, read62 Studio's current behavior-engine default and choose the matching variant.63 Base UI variants use `-base` names, such as `button-base`, `dialog-base`,64 `tabs-base`, and `tooltip-base`.658. If keeping font-weight animation, ensure the app loads Inter variable or adjust the generated font-weight helper to the project's variable font.669. Run the app, check light and dark themes, and browser-test the exact interaction. Pay attention to hover previews, keyboard focus, reduced-motion behavior, and overwritten local components.6768## Component Selection6970Read `references/component-inventory.md` when choosing components. For the freshest list, query the live registry:7172```bash73curl -LfsS https://www.fluidfunctionalism.com/r/registry.json \74 | jq -r '.items[] | select(.type == "registry:ui") | [.name, .title, .description] | @tsv'75```7677Fast choices:7879- Core controls: `button`, `tabs`, `tabs-subtle`, `switch`, `slider`, `select`, `dropdown`, `tooltip`.80- Forms: `input-group`, `input-copy`, `checkbox-group`, `radio-group`, `color-picker`.81- AI/chat UI: `input-message`, `chat-message`, `thinking-indicator`, `thinking-steps`, `ask-user-questions`.82- Data and layout: `table`, `accordion`, `dialog`, `surfaces`, `elevated`.8384## Adaptation Rules8586- Preserve local design-system ownership. Do not replace established primitives unless the user asked for a Fluid Functionalism skin.87- Keep generated code inspectable and project-owned, like normal shadcn components.88- Normalize imports after install. The registry commonly uses `@/lib/*` and `@/components/ui/*`.89- If a component brings icon switching, decide whether the project really needs Tabler, Phosphor, and HugeIcons. Prefer the existing icon set when possible.90- Treat `surfaces` and `elevated` as a system-level choice. Install them when nested popovers, dialogs, or dropdowns need a consistent elevation ladder.91- Keep MIT attribution when copying substantial source out of the upstream repo instead of installing through the registry.9293## Validation9495After integration:9697- Run the repo's lint/build/test commands.98- Use a browser check for the changed screen.99- Verify keyboard focus, disabled states, loading states, and dark mode.100- Inspect generated CSS variables and dependencies for unintended palette or package sprawl.