LLMTalk Logo

LLMTalk

Design System

Complete reference for all design tokens, colors, typography, and components.

Typography

Font Family

IBM Plex Sans

font-sans

Font Sizes

XStext-xs

The quick brown fox jumps over the lazy dog

0.725rem
1.2rem
SMtext-sm

The quick brown fox jumps over the lazy dog

0.775rem
1.3rem
Basetext-base

The quick brown fox jumps over the lazy dog

0.875rem
1.5rem
LGtext-lg

The quick brown fox jumps over the lazy dog

0.975rem
1.75rem
XLtext-xl

The quick brown fox jumps over the lazy dog

1.175rem
1.95rem
2XLtext-2xl

The quick brown fox jumps over the lazy dog

1.275rem
2.25rem
3XLtext-3xl

The quick brown fox jumps over the lazy dog

1.375rem
2.5rem
4XLtext-4xl

The quick brown fox jumps over the lazy dog

1.475rem
2.75rem
5XLtext-5xl

The quick brown fox jumps over the lazy dog

3.052rem
auto

Font Weights

Normalfont-normal

The quick brown fox

350
Mediumfont-medium

The quick brown fox

400
Semiboldfont-semibold

The quick brown fox

450
Boldfont-bold

The quick brown fox

500
Blackfont-black

The quick brown fox

600

Text Gradients

Text gradient effects for creating visually appealing text with gradient colors. Includes animated shimmer effects and static gradients.

Animated Shimmer Effect

The TextShimmer component creates an animated gradient that moves across text, perfect for loading states and attention-grabbing text.

Light Mode

Loading content...

Processing your request

Welcome

Dark Mode

Loading content...

Processing your request

Welcome

The shimmer effect automatically adapts colors: uses foreground color in light mode and primary color in dark mode. The effect may be more subtle in light mode due to the gradient animation.

Static Gradient Text

Static gradient text using Tailwind's gradient utilities with bg-clip-text and text-transparent.

Light Mode

Gradient from muted colors

Gradient with primary colors

Bold gradient text

Dark Mode

Gradient from muted colors

Gradient with primary colors

Bold gradient text

Usage

TextShimmer Component:
import { TextShimmer } from '@/common/components'
<TextShimmer duration={1.5} spread={2}>Loading...</TextShimmer>
Static Gradient:
className="from-primary via-accent to-primary bg-gradient-to-r bg-clip-text text-transparent"

Colors

Colors automatically adapt to light and dark modes. Toggle your theme to see the differences.

Primary

primary
Sample
Class: bg-primary
Text: text-primary-foreground
Light/Dark Mode:
Automatically adapts based on theme

Secondary

secondary
Sample
Class: bg-secondary
Text: text-secondary-foreground
Light/Dark Mode:
Automatically adapts based on theme

Surface

surface
Sample
Class: bg-surface
Text: text-surface-foreground
Light/Dark Mode:
Automatically adapts based on theme

Surface Hover

surface-hover
Sample
Class: bg-surface-hover
Text: text-surface-hover-foreground
Light/Dark Mode:
Automatically adapts based on theme

Background

background
Sample
Class: bg-background
Text: text-foreground
Light/Dark Mode:
Automatically adapts based on theme

Foreground

foreground
Sample
Class: bg-foreground
Text: text-background
Light/Dark Mode:
Automatically adapts based on theme

Muted

muted
Sample
Class: bg-muted
Text: text-muted-foreground
Light/Dark Mode:
Automatically adapts based on theme

Accent

accent
Sample
Class: bg-accent
Text: text-accent-foreground
Light/Dark Mode:
Automatically adapts based on theme

Destructive

destructive
Sample
Class: bg-destructive
Text: text-destructive-foreground
Light/Dark Mode:
Automatically adapts based on theme

Card

card
Sample
Class: bg-card
Text: text-card-foreground
Light/Dark Mode:
Automatically adapts based on theme

Popover

popover
Sample
Class: bg-popover
Text: text-popover-foreground
Light/Dark Mode:
Automatically adapts based on theme

Border

border
Sample
Class: bg-border
Text: text-foreground
Light/Dark Mode:
Automatically adapts based on theme

Border Subtle

border-subtle
Sample
Class: bg-border-subtle
Text: text-foreground
Light/Dark Mode:
Automatically adapts based on theme

Border Strong

border-strong
Sample
Class: bg-border-strong
Text: text-foreground
Light/Dark Mode:
Automatically adapts based on theme

Input

input
Sample
Class: bg-input
Text: text-foreground
Light/Dark Mode:
Automatically adapts based on theme

Ring

ring
Sample
Class: bg-ring
Text: text-background
Light/Dark Mode:
Automatically adapts based on theme

Dark Mode Examples

The following examples show how components and colors appear in dark mode. Toggle dark mode in Settings to see live examples.

Color Comparison

Light Mode
Primary
Secondary
Surface
This is how colors appear in light mode.
Dark Mode
Primary
Secondary
Surface
This is how colors appear in dark mode.

Component Examples

Light Mode
Default
Primary
Secondary
Dark Mode
Default
Primary
Secondary

Dark Mode CSS Variables

Dark mode colors are defined in globals.css under the .dark class:

.dark {
  --background: 180 0% 10%;
  --foreground: 180 0% 98%;
  --primary: 14 93% 63%;
  --secondary: 180 0% 8%;
  --surface: 180 0% 6%;
  /* ... and more */
}

Animations

Accordion Expand

Expands accordion content

animate-accordion-expand
Animation Preview

Accordion Collapse

Collapses accordion content

animate-accordion-collapse
Animation Preview

Fade In Up

Fades in with upward movement

animate-fade-in-up
Animation Preview

Pop In

Pops in with scale and fade

animate-pop-in
Animation Preview

Shadows

Subtle XS

Extra small subtle shadow

shadow-subtle-xs
Preview

Subtle SM

Small subtle shadow

shadow-subtle-sm
Preview

Border Radius

SM

calc(var(--radius) - 4px)

rounded-sm
Preview

MD

calc(var(--radius) - 2px)

rounded-md
Preview

LG

var(--radius)

rounded-lg
Preview

Forms

Form components for building user interfaces. All components adapt to light and dark modes.

Input Fields

Light Mode

Email Address

Password

Search

Dark Mode

Email Address

Password

Search

Input variants: default, ghost | Sizes: default, sm

Textarea

Light Mode

Message

Dark Mode

Message

Checkbox

Light Mode
Dark Mode

Switch

Light Mode
Dark Mode

Radio Group

Light Mode

Select an option

Dark Mode

Select an option

Switcher

Button-based switcher for selecting between multiple options. Commonly used for theme selection, view modes, and similar choices.

Light Mode

Theme Selection

View Mode

Dark Mode

Theme Selection

View Mode

Form Label

Required Field

Optional Field

(Optional)

Field with Description

Learn more

This is a helpful description for the field.

Icons

Icon library used in the application. Icons are from @tabler/icons-react and lucide-react.

Tabler Icons

ArrowBarLeft
ArrowBarRight
ArrowUp
ChevronDown
ChevronRight
CornerDownRight
CaretDownFilled
Check
Copy
Trash
Refresh
Plus
X
Settings
Settings2
Key
Sun
Moon
Selector
Search
Command
History
User
Logout
MessageCircleFilled
QuestionMark
HelpHexagon
HelpSmall
CircleCheckFilled
AlertCircle
MoodSadDizzy
Loader2
PlayerStopFilled
Book
Pencil
Markdown
PhotoPlus
Paperclip
ExternalLink
Tools
BoltFilled
CodeDots
Spiral
Atom
NorthStar
Checklist
BrandJavascript
BrandTypescript
BrandReact
BrandPython
Json
Terminal
FileFilled
Square
Bulb
ChartBar
World

Lucide Icons

ChevronDown
Circle
Globe
MoreHorizontal
CornerDownRight
X
Search
Minus
AlertCircle
Check

Code Block

Syntax-highlighted code blocks with support for multiple languages. Automatically adapts to light and dark modes.

Supported Languages

The CodeBlock component supports the following languages:

javascript
typescript
jsx
python
bash
json
yaml
markdown
sql
plaintext

Examples

JavaScript

javascript

function greet(name) {
  return `Hello, ${name}!`;
}

const message = greet('World');
console.log(message);

Variants

Default Variant

typescript

const defaultVariant = 'default';
console.log(defaultVariant);
Secondary Variant

typescript

const secondaryVariant = 'secondary';
console.log(secondaryVariant);

Without Header

// Code block without header
const noHeader = true;
console.log(noHeader);

Modal Templates

Dialog and AlertDialog components for creating modals and confirmation dialogs. All modals automatically adapt to light and dark modes.

Dialog

Standard dialog component for displaying content in a modal overlay.

typescript

<Dialog open={open} onOpenChange={setOpen}>
  <DialogTrigger asChild>
    <Button>Open Dialog</Button>
  </DialogTrigger>
  <DialogContent ariaTitle="Dialog Title">
    <DialogHeader>
      <DialogTitle>Dialog Title</DialogTitle>
      <DialogDescription>
        Dialog description text.
      </DialogDescription>
    </DialogHeader>
    <div>
      {/* Your content here */}
    </div>
    <DialogFooter>
      <Button variant="ghost">Cancel</Button>
      <Button variant="primary">Confirm</Button>
    </DialogFooter>
  </DialogContent>
</Dialog>

Alert Dialog

Alert dialog component for confirmation actions and important messages.

typescript

<AlertDialog open={open} onOpenChange={setOpen}>
  <AlertDialogTrigger asChild>
    <Button variant="destructive">Delete</Button>
  </AlertDialogTrigger>
  <AlertDialogContent>
    <AlertDialogHeader>
      <AlertDialogTitle>Are you sure?</AlertDialogTitle>
      <AlertDialogDescription>
        This action cannot be undone.
      </AlertDialogDescription>
    </AlertDialogHeader>
    <AlertDialogFooter>
      <AlertDialogCancel>Cancel</AlertDialogCancel>
      <AlertDialogAction>Delete</AlertDialogAction>
    </AlertDialogFooter>
  </AlertDialogContent>
</AlertDialog>

Search Modal (Command Dialog)

Command dialog component for search functionality and quick actions. Typically triggered with keyboard shortcuts.

typescript

<CommandDialog open={open} onOpenChange={setOpen}>
  <div className="flex w-full flex-row items-center gap-2 p-0.5">
    <CommandInput placeholder="Search..." className="w-full" />
    <div className="flex shrink-0 items-center gap-1 px-2">
      <Kbd className="h-5 w-5">
        <IconCommand size={12} />
      </Kbd>
      <Kbd className="h-5 w-5">T</Kbd>
    </div>
  </div>
  <div className="w-full">
    <div className="border-border h-[1px] w-full border-b" />
  </div>
  <CommandList>
    <CommandEmpty>No results found.</CommandEmpty>
    <CommandGroup heading="Actions">
      <CommandItem value="action" onSelect={handleAction}>
        <Icon /> Action Name
      </CommandItem>
    </CommandGroup>
  </CommandList>
</CommandDialog>

Settings Modal

Settings modal with sidebar navigation pattern for organizing multiple settings sections.

typescript

<Dialog open={open} onOpenChange={setOpen}>
  <DialogTrigger asChild>
    <Button>Open Settings</Button>
  </DialogTrigger>
  <DialogContent
    ariaTitle="Settings"
    className="h-full max-h-[600px] !max-w-[760px] p-0"
  >
    <div className="overflow-y-auto">
      <h3 className="border-border mx-5 border-b py-4 text-lg font-bold">
        Settings
      </h3>
      <div className="flex flex-row gap-6 p-4">
        <div className="flex w-[160px] shrink-0 flex-col gap-1">
          {tabs.map(tab => (
            <Button
              key={tab.key}
              variant={activeTab === tab.key ? 'secondary' : 'ghost'}
              onClick={() => setActiveTab(tab.key)}
            >
              {tab.icon}
              {tab.title}
            </Button>
          ))}
        </div>
        <div className="flex flex-1 flex-col px-4">
          {renderTabContent(activeTab)}
        </div>
      </div>
    </div>
  </DialogContent>
</Dialog>

Usage Guidelines

Dialog:
  • Use for displaying forms, content, or multi-step processes
  • Can be dismissed by clicking outside or pressing Escape
  • Includes header, description, and footer sections
Alert Dialog:
  • Use for confirmation actions and critical decisions
  • Requires explicit user action (cannot be dismissed by clicking outside)
  • Typically used for destructive actions

Components

All components automatically adapt to light and dark modes. Toggle dark mode in Settings to see live examples.

Buttons

Light Mode
Dark Mode

Buttons automatically adapt their colors, borders, and hover states for optimal contrast in both themes.

Badges

Light Mode
Default
Secondary
Primary
Destructive
Outline
Dark Mode
Default
Secondary
Primary
Destructive
Outline

Badges automatically adjust colors for optimal contrast in both themes.

Alerts

Alert components for displaying inline messages, warnings, and notifications. All variants automatically adapt to light and dark modes.

Light Mode
Dark Mode

Alert variants: default, success, info, warning, destructive

Toasts

Toast notifications for temporary messages that appear and automatically dismiss. Use the buttons below to trigger different toast variants.

Light Mode
Dark Mode

Toast variants: default, destructive. Toasts automatically dismiss after a delay and can include action buttons.