Back to Home

Theme Configuration

Learn how to customize the look and feel of your application with Inam UI's flexible theming system.

Choose a Theme

Preview & Copy

Select a theme to preview it on this site and generate the configuration code below.

Configuration

Copy this code into your app/globals.css file:

app/globals.css
@import "tailwindcss";

@theme {
  --font-sans: "Inter", var(--font-geist-sans), ui-sans-serif, system-ui;
  --font-mono: "JetBrains Mono", var(--font-geist-mono), ui-monospace, monospace;

  --color-background: var(--background);
  --color-foreground: var(--foreground);
  --color-card: var(--card);
  --color-card-foreground: var(--card-foreground);
  --color-popover: var(--popover);
  --color-popover-foreground: var(--popover-foreground);
  --color-primary: var(--primary);
  --color-primary-foreground: var(--primary-foreground);
  --color-secondary: var(--secondary);
  --color-secondary-foreground: var(--secondary-foreground);
  --color-muted: var(--muted);
  --color-muted-foreground: var(--muted-foreground);
  --color-accent: var(--accent);
  --color-accent-foreground: var(--accent-foreground);
  --color-destructive: var(--destructive);
  --color-destructive-foreground: var(--destructive-foreground);
  --color-border: var(--border);
  --color-input: var(--input);
  --color-ring: var(--ring);

  --radius-lg: var(--radius);
  --radius-md: calc(var(--radius) - 2px);
  --radius-sm: calc(var(--radius) - 4px);

  --animate-accordion-down: accordion-down 0.2s ease-out;
  --animate-accordion-up: accordion-up 0.2s ease-out;
  --animate-fade-in: fade-in 0.3s ease-out;
  --animate-slide-up: slide-up 0.4s ease-out;
  --animate-pulse-glow: pulse-glow 2s ease-in-out infinite;

  @keyframes accordion-down {
    from { height: 0; }
    to { height: var(--accordion-content-height); }
  }

  @keyframes accordion-up {
    from { height: var(--accordion-content-height); }
    to { height: 0; }
  }

  @keyframes fade-in {
    from { opacity: 0; }
    to { opacity: 1; }
  }

  @keyframes slide-up {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
  }

  @keyframes pulse-glow {
    0%, 100% { box-shadow: 0 0 20px var(--glow-color, rgba(99, 102, 241, 0.2)); }
    50% { box-shadow: 0 0 40px var(--glow-color, rgba(99, 102, 241, 0.3)); }
  }
}

@layer base {

  /* ===== LIGHT MODE (Indigo) ===== */
  :root {
    --background: hsl(0 0% 100%);
    --foreground: hsl(222 47% 11%);
    --card: hsl(0 0% 100%);
    --card-foreground: hsl(222 47% 11%);
    --popover: hsl(0 0% 100%);
    --popover-foreground: hsl(222 47% 11%);
    --secondary: hsl(210 20% 96%);
    --secondary-foreground: hsl(222 47% 11%);
    --muted: hsl(210 20% 96%);
    --muted-foreground: hsl(215 16% 47%);
    --destructive: hsl(0 84% 60%);
    --destructive-foreground: hsl(0 0% 100%);
    --border: hsl(214 32% 91%);
    --input: hsl(214 32% 91%);
    --radius: 0.625rem;

    /* Theme Specific */
    --primary: hsl(239 84% 67%);
    --primary-foreground: hsl(0 0% 100%);
    --accent: hsl(243 75% 59%);
    --accent-foreground: hsl(0 0% 100%);
    --ring: hsl(239 84% 67%);
    --glow-color: rgba(99, 102, 241, 0.2);
  }

  /* ===== DARK MODE (Indigo) ===== */
  .dark {
    --background: hsl(222 47% 6%);
    --foreground: hsl(210 20% 98%);
    --card: hsl(222 47% 8%);
    --card-foreground: hsl(210 20% 98%);
    --popover: hsl(222 47% 8%);
    --popover-foreground: hsl(210 20% 98%);
    --secondary: hsl(217 33% 17%);
    --secondary-foreground: hsl(210 20% 98%);
    --muted: hsl(217 33% 17%);
    --muted-foreground: hsl(215 20% 65%);
    --destructive: hsl(0 72% 55%);
    --destructive-foreground: hsl(210 20% 98%);
    --border: hsl(217 33% 17%);
    --input: hsl(217 33% 17%);

    /* Theme Specific */
    --primary: hsl(239 84% 72%);
    --primary-foreground: hsl(222 47% 6%);
    --accent: hsl(243 75% 64%);
    --accent-foreground: hsl(222 47% 6%);
    --ring: hsl(239 84% 72%);
    --glow-color: rgba(129, 140, 248, 0.15);
  }

  * {
    border-color: var(--border);
  }

  body {
    background-color: var(--background);
    color: var(--foreground);
    font-feature-settings: "rlig" 1, "calt" 1;
  }
}

@layer utilities {
  .hover-lift {
    transition: transform 0.2s ease, box-shadow 0.2s ease;
  }

  .hover-lift:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12);
  }

  .brand-glow {
    box-shadow: 0 0 30px var(--glow-color);
  }

  .brand-glow-hover:hover {
    box-shadow: 0 0 40px var(--glow-color);
  }
}

* Values are automatically updated based on the theme selected above.