Components Guidelines
Patterns
- •
"use client"only if using hooks/interactivity - •Export interface with
Propssuffix, document props with JSDoc - •Always include optional
classNameprop, usecn()for merging
Styling
- •Tailwind only - no CSS modules or styled-components
- •Use shadcn/ui tokens:
text-muted-foreground,bg-background, etc. - •All components must support dark mode via
dark:prefix
State
- •Local:
useStatefor UI-only state (dropdowns, modals) - •CRDT:
useVaultAction/useActiveTransactionsfor data mutations - •URL:
useSearchParamsfor filters that should persist
Performance
- •
useMemo/useCallbackfor expensive computations and callbacks to memoized children - •Virtualize long lists (TransactionTable already does this)
- •Avoid inline object/array literals in JSX props
Accessibility
- •Semantic HTML, aria-labels on icon-only buttons
- •Keyboard navigation, focus management in modals