UI & Design
Design system, components, and Figma reference for the Marketplace App.
Overview
The UI for the Marketplace App is built with Tailwind CSS and ShadCN UI. The design system is clean, component-driven, and optimized for customization and scalability. It’s designed to provide a consistent user experience across listing creation, discovery, booking, messaging, and authentication flows.
Figma Design
You can access the full design system, screen flows, and components via the official Figma file:
👉 Figma: Marketplace App UI Design
This includes:
- Typography and color palette
- UI components (buttons, inputs, forms)
- Page layouts (home, listing, booking, inbox)
- Mobile and desktop breakpoints
- Multi-step listing creation wizard
- Modal and dialog designs
Technologies Used
- Tailwind CSS: Utility-first styling with custom theme extensions
- ShadCN UI: Component framework based on Radix UI primitives with Tailwind integration
- Lucide Icons: Consistent, open-source icon set
- Next.js App Router: For routing and layout composition
- Framer Motion: For animations and transitions
Component Guidelines
Button
- Variants:
default
,outline
,ghost
,destructive
- Sizes:
sm
,md
,lg
,icon
<Button variant="default" size="md">
Continue
</Button>
Input & Textarea
- Uses
Label
,Input
, andTextarea
components from ShadCN - Fully integrated with
react-hook-form
validation - Accessible and responsive
Modal & Dialog
- Dialogs are used for confirmation (e.g. Send Quote)
- Modals are used for onboarding and walkthroughs
Stepper
- Used in listing creation
- Current step and progress is derived from Zustand store
Accessibility
- All components follow WAI-ARIA standards via Radix UI
- Keyboard navigation is fully supported
- Screen reader-friendly labels and roles are included
Theming
The app supports light and dark modes using Tailwind’s dark:
variant and prefers system theme.
theme: {
extend: {
colors: {
primary: 'hsl(var(--primary))',
}
}
}
Customization Tips
- Extend ShadCN components by creating wrappers in
components/ui/
- For branding, override Tailwind tokens via
tailwind.config.ts
- Use
class-variance-authority
for composable classNames in components