Components
ShiftKit includes a comprehensive set of UI components built on shadcn/ui and Radix primitives.
UI Components
All base components live in src/components/ui/. These are standard shadcn/ui components — see the shadcn/ui docs for full API reference.
Included components: Alert, Avatar, Badge, Breadcrumb, Button, Calendar, Card, Chart, Checkbox, Collapsible, Dialog, Drawer, Dropdown Menu, Field, Input, Input Group, Label, Popover, Safe Image, Select, Separator, Sheet, Sidebar, Skeleton, Sonner (toast), Switch, Table, Tabs, Textarea, Toggle, Toggle Group, Tooltip.
Layout Components
- PageLayout (
src/components/layout/page-layout.tsx) — Standard page wrapper with consistent padding and max-width - ResponsiveButton (
src/components/layout/responsive-button.tsx) — Button that adapts label/icon for mobile vs desktop
Form Components
- CustomForm (
src/components/forms/CustomForm.tsx) — Form wrapper with react-hook-form + zod validation - CustomInputField — Text input with label, error state, and description
- CustomSelectField — Select dropdown with the same pattern
- CustomPasswordField — Password input with show/hide toggle
Demo Components
- DemoProvider (
src/lib/demo-context.tsx) — Context provider for demo mode with mock auth - DemoToast (
src/components/demo-toast.tsx) — Persistent toast indicating demo mode
Adding New Components
Use the shadcn CLI to add more components:
npx shadcn@latest add [component-name]
For custom components, follow the existing pattern: TypeScript, proper prop interfaces, and Tailwind for styling.