Skip to main content

Components Overview

The Renchi AI platform includes 128 React components organized by feature area. All components are built with TypeScript, support dark mode, and follow consistent design patterns.

Design System

UI Primitives

Base components: Button, Input, Card, Dialog, Select, Tabs

FormDialog Pattern

Standard pattern for all create/edit dialogs with consistent styling

Dark Mode

Full dark mode support using Tailwind’s dark: prefix

Accessibility

Keyboard navigation, focus management, screen reader support

Component Categories

UI Primitives (20 components)

Foundation components used throughout the application.
ComponentDescription
ButtonPrimary, secondary, outline, and ghost variants
InputText input with validation states
CardContent container with header, body, footer
FormDialogStandardized dialog for all forms
SelectDropdown selection with search
DialogModal overlay with focus trap
TabsTab navigation component
BadgeStatus indicators and labels
SkeletonLoading state placeholders
DateRangePickerDate range selection

Agent Configuration (15 components)

Components for configuring AI call agents.
ComponentDescription
ConfigureAgentPanelMulti-tab agent configuration interface
GeneralTabAgent name, persona, greeting settings
VoiceTabVoice model and speech settings
BusinessHoursTabOperating hours configuration
ServicesTabService offerings and pricing
TransferTabCall transfer destinations
CallHandlingTabEmergency keywords and behaviors
ContextTabKnowledge base and context documents

Settings & Admin (34 components)

Team and organization management.
ComponentDescription
OrganizationSettingsMain settings page container
TeamSettingsTeam member management
InviteMemberDialogSend team invitations
StorageSettingsSectionStorage quota management
ElevenLabsSettingsElevenLabs API configuration
TimeZoneDialogTimezone selection
BusinessHoursDialogBusiness hours editor

Conversation & Calls (17 components)

Call detail and history views.
ComponentDescription
TranscriptViewerCall transcript display
AIAnalysisPanelAI-generated call insights
AudioPlayerCall recording playback
CustomerInfoCardCustomer details in call view
BookingDetailsCardAppointment information
ConversationFiltersFilter calls by status, date, etc.
JobEditDialogEdit job/ticket details

Dashboard (12 components)

Dashboard views for different user roles.
ComponentDescription
MemberDashboardStandard member view
AdminDashboardAdmin-level dashboard
OwnerDashboardOwner dashboard with full stats
JobCardJob/ticket summary card
CallSummaryCardRecent call overview

Inbox (8 components)

Call inbox and action management.
ComponentDescription
QuickActionsBarPrimary CSR actions (callback, book, transfer, resolve)
CallbackDialogSchedule customer callbacks
CreateBookingDialogBook appointments
TransferDialogTransfer calls to technicians
MarkResolvedDialogMark issues as resolved

Customer Management (8 components)

Customer CRUD and history.
ComponentDescription
AddCustomerDialogCreate new customer
EditCustomerDialogUpdate customer details
CustomerNotesEditorEdit customer notes
CustomerTagsEditorManage customer tags
CustomerCallHistoryView past calls

Key Patterns

FormDialog Pattern

All create/edit dialogs use the FormDialog component for consistency:
import { FormDialog, FormField, FormRow, FormSection } from "@/components/ui/form-dialog";

<FormDialog
  open={isOpen}
  onOpenChange={setIsOpen}
  title="Add New Customer"
  description="Enter customer details below"
  onSubmit={handleSubmit}
  submitLabel="Create"
  isSubmitting={isLoading}
  size="lg"
>
  <FormSection title="Contact Information">
    <FormRow>
      <FormField label="First Name" required>
        <Input value={firstName} onChange={...} />
      </FormField>
      <FormField label="Last Name" required>
        <Input value={lastName} onChange={...} />
      </FormField>
    </FormRow>
  </FormSection>
</FormDialog>

Dark Mode Support

All components include dark mode variants:
// Light and dark mode colors
className="bg-white dark:bg-zinc-900 border-zinc-200 dark:border-zinc-700"

// Text colors
className="text-zinc-900 dark:text-zinc-100"

Props Interface Convention

Components follow the [ComponentName]Props naming convention:
interface CustomerCardProps {
  customer: Customer;
  onEdit?: (id: string) => void;
  showActions?: boolean;
}

export function CustomerCard({ customer, onEdit, showActions = true }: CustomerCardProps) {
  // ...
}

Styling Standards

ElementLight ModeDark Mode
Backgroundbg-whitedark:bg-zinc-900
Surfacebg-zinc-50dark:bg-zinc-800
Borderborder-zinc-200dark:border-zinc-700
Text Primarytext-zinc-900dark:text-zinc-100
Text Secondarytext-zinc-500dark:text-zinc-400

Dependencies

  • @radix-ui - Dialog, Select, Popover primitives
  • class-variance-authority - Component variants
  • lucide-react - Icon library
  • Tailwind CSS - Utility-first styling
  • next-themes - Dark mode management