Skip to main content
Glama
globals.css18.4 kB
@import "tailwindcss"; /* Enable dark mode via class strategy */ @custom-variant dark (&:where(.dark, .dark *)); /* Ensure Tailwind scans component data files */ @source "../lib/design-system/components.ts"; /* Safelist classes used in component examples rendered via dangerouslySetInnerHTML */ /* Note: Custom semantic utilities (bg-surface, text-default, etc.) are defined in @layer utilities below */ @utility safelist { /* Raw Tailwind classes (for backward compatibility in component examples) */ @apply bg-black bg-white bg-gray-50 bg-gray-100 bg-gray-200 bg-gray-800 bg-gray-900; @apply bg-red-50 bg-red-500 bg-red-600 bg-blue-500 bg-blue-600 bg-green-500 bg-green-600; @apply bg-yellow-50 bg-yellow-500 bg-orange-500 bg-purple-500 bg-pink-500; @apply bg-emerald-500 bg-emerald-50 bg-amber-50 bg-amber-500; @apply text-white text-black text-gray-400 text-gray-500 text-gray-600 text-gray-700 text-gray-900; @apply text-red-500 text-red-600 text-red-800 text-blue-500 text-blue-600 text-green-500 text-green-600; @apply text-yellow-500 text-yellow-600 text-yellow-800 text-amber-600 text-emerald-600; @apply border-gray-200 border-gray-300 border-gray-400 border-red-200 border-red-500; @apply border-blue-200 border-blue-500 border-green-200 border-green-500 border-yellow-200; @apply hover:bg-gray-50 hover:bg-gray-100 hover:bg-gray-200 hover:bg-gray-800; @apply hover:bg-red-50 hover:bg-red-600 hover:bg-blue-600 hover:bg-green-600; @apply hover:border-gray-300 hover:border-gray-400 hover:text-gray-900; /* Layout and sizing */ @apply rounded-md rounded-lg rounded-xl rounded-full; @apply h-4 h-5 h-6 h-8 h-10 h-12 h-16 h-20 h-24 h-32 h-40 h-48 h-64; @apply w-4 w-5 w-6 w-8 w-10 w-12 w-16 w-20 w-24 w-32 w-40 w-48 w-64 w-full; @apply px-2 px-3 px-4 px-5 px-6 py-1 py-2 py-3 py-4; @apply gap-1 gap-2 gap-3 gap-4 gap-6 gap-8; /* Typography */ @apply text-xs text-sm text-base text-lg text-xl text-2xl text-3xl; @apply font-normal font-medium font-semibold font-bold; /* Effects and states */ @apply opacity-25 opacity-50 opacity-70 opacity-75; @apply cursor-not-allowed cursor-pointer; @apply animate-spin animate-pulse animate-bounce; @apply shadow-sm shadow shadow-md shadow-lg; @apply ring-1 ring-2 ring-gray-200 ring-blue-500 ring-offset-2; @apply divide-y divide-gray-200; @apply space-x-2 space-x-4 space-y-2 space-y-4; @apply truncate line-clamp-2 line-clamp-3; @apply aspect-square aspect-video; @apply object-cover object-contain; @apply overflow-hidden overflow-auto overflow-x-auto; @apply transition-colors transition-all transition-transform; @apply duration-150 duration-200 duration-300; @apply translate-y-0 translate-y-1 -translate-y-1; @apply scale-95 scale-100 scale-105; /* Dark mode fallback classes (for non-semantic usage) */ @apply dark:bg-gray-900 dark:bg-gray-800 dark:bg-gray-950; @apply dark:text-white dark:text-gray-100 dark:text-gray-300 dark:text-gray-400; @apply dark:border-gray-700 dark:border-gray-800; @apply dark:hover:bg-gray-800 dark:hover:bg-gray-700; } @theme { --font-sans: "Inter", system-ui, sans-serif; --font-mono: "JetBrains Mono", "Menlo", monospace; /* =================================== * COLOR TOKENS FROM DESIGN SYSTEM * Source: lib/design-system/style-guide.ts * These are generated from the documented design tokens * =================================== */ /* ----------------------------------- * SURFACE TOKENS * ----------------------------------- */ --color-surface-light: #ffffff; --color-surface-dark: #030712; --color-surface: var(--color-surface-light); --color-surface-raised-light: #ffffff; --color-surface-raised-dark: #111827; --color-surface-raised: var(--color-surface-raised-light); --color-surface-sunken-light: #f9fafb; --color-surface-sunken-dark: #030712; --color-surface-sunken: var(--color-surface-sunken-light); --color-surface-overlay-light: rgba(0, 0, 0, 0.5); --color-surface-overlay-dark: rgba(0, 0, 0, 0.7); --color-surface-overlay: var(--color-surface-overlay-light); --color-surface-hover-light: #f9fafb; --color-surface-hover-dark: #1f2937; --color-surface-hover: var(--color-surface-hover-light); /* ----------------------------------- * TEXT TOKENS * ----------------------------------- */ --color-text-light: #111827; --color-text-dark: #f9fafb; --color-text: var(--color-text-light); --color-text-muted-light: #6b7280; --color-text-muted-dark: #9ca3af; --color-text-muted: var(--color-text-muted-light); --color-text-subtle-light: #9ca3af; --color-text-subtle-dark: #6b7280; --color-text-subtle: var(--color-text-subtle-light); /* ----------------------------------- * BORDER TOKENS * ----------------------------------- */ --color-border-light: #e5e7eb; --color-border-dark: #1f2937; --color-border: var(--color-border-light); --color-border-muted-light: #f3f4f6; --color-border-muted-dark: #111827; --color-border-muted: var(--color-border-muted-light); --color-border-emphasis-light: #d1d5db; --color-border-emphasis-dark: #374151; --color-border-emphasis: var(--color-border-emphasis-light); /* ----------------------------------- * PRIMARY TOKENS * ----------------------------------- */ --color-primary-light: #000000; --color-primary-dark: #ffffff; --color-primary: var(--color-primary-light); --color-primary-hover-light: #1f2937; --color-primary-hover-dark: #e5e7eb; --color-primary-hover: var(--color-primary-hover-light); --color-primary-foreground-light: #ffffff; --color-primary-foreground-dark: #000000; --color-primary-foreground: var(--color-primary-foreground-light); /* ----------------------------------- * SUCCESS TOKENS * ----------------------------------- */ --color-success-light: #ecfdf5; --color-success-dark: rgba(16, 185, 129, 0.15); --color-success: var(--color-success-light); --color-success-emphasis-light: #10b981; --color-success-emphasis-dark: #10b981; --color-success-emphasis: var(--color-success-emphasis-light); --color-success-foreground-light: #065f46; --color-success-foreground-dark: #6ee7b7; --color-success-foreground: var(--color-success-foreground-light); --color-success-border-light: #a7f3d0; --color-success-border-dark: #065f46; --color-success-border: var(--color-success-border-light); /* ----------------------------------- * ERROR TOKENS * ----------------------------------- */ --color-error-light: #fef2f2; --color-error-dark: rgba(239, 68, 68, 0.15); --color-error: var(--color-error-light); --color-error-emphasis-light: #ef4444; --color-error-emphasis-dark: #ef4444; --color-error-emphasis: var(--color-error-emphasis-light); --color-error-foreground-light: #991b1b; --color-error-foreground-dark: #fca5a5; --color-error-foreground: var(--color-error-foreground-light); --color-error-border-light: #fecaca; --color-error-border-dark: #991b1b; --color-error-border: var(--color-error-border-light); /* ----------------------------------- * WARNING TOKENS * ----------------------------------- */ --color-warning-light: #fffbeb; --color-warning-dark: rgba(245, 158, 11, 0.15); --color-warning: var(--color-warning-light); --color-warning-emphasis-light: #f59e0b; --color-warning-emphasis-dark: #f59e0b; --color-warning-emphasis: var(--color-warning-emphasis-light); --color-warning-foreground-light: #92400e; --color-warning-foreground-dark: #fcd34d; --color-warning-foreground: var(--color-warning-foreground-light); --color-warning-border-light: #fde68a; --color-warning-border-dark: #92400e; --color-warning-border: var(--color-warning-border-light); /* ----------------------------------- * INFO TOKENS * ----------------------------------- */ --color-info-light: #eff6ff; --color-info-dark: rgba(59, 130, 246, 0.15); --color-info: var(--color-info-light); --color-info-emphasis-light: #3b82f6; --color-info-emphasis-dark: #3b82f6; --color-info-emphasis: var(--color-info-emphasis-light); --color-info-foreground-light: #1e40af; --color-info-foreground-dark: #93c5fd; --color-info-foreground: var(--color-info-foreground-light); --color-info-border-light: #bfdbfe; --color-info-border-dark: #1e40af; --color-info-border: var(--color-info-border-light); } /* Apply dark mode variables */ .dark { /* Surfaces */ --color-surface: var(--color-surface-dark); --color-surface-raised: var(--color-surface-raised-dark); --color-surface-sunken: var(--color-surface-sunken-dark); --color-surface-overlay: var(--color-surface-overlay-dark); --color-surface-hover: var(--color-surface-hover-dark); /* Text */ --color-text: var(--color-text-dark); --color-text-muted: var(--color-text-muted-dark); --color-text-subtle: var(--color-text-subtle-dark); /* Borders */ --color-border: var(--color-border-dark); --color-border-muted: var(--color-border-muted-dark); --color-border-emphasis: var(--color-border-emphasis-dark); /* Primary */ --color-primary: var(--color-primary-dark); --color-primary-hover: var(--color-primary-hover-dark); --color-primary-foreground: var(--color-primary-foreground-dark); /* Success */ --color-success: var(--color-success-dark); --color-success-foreground: var(--color-success-foreground-dark); --color-success-border: var(--color-success-border-dark); /* Error */ --color-error: var(--color-error-dark); --color-error-foreground: var(--color-error-foreground-dark); --color-error-border: var(--color-error-border-dark); /* Warning */ --color-warning: var(--color-warning-dark); --color-warning-foreground: var(--color-warning-foreground-dark); --color-warning-border: var(--color-warning-border-dark); /* Info */ --color-info: var(--color-info-dark); --color-info-foreground: var(--color-info-foreground-dark); --color-info-border: var(--color-info-border-dark); } /* Custom base styles */ @layer base { html { scroll-behavior: smooth; overflow-x: hidden; } body { @apply antialiased; overflow-x: hidden; } } /* Custom component styles */ @layer components { .nav-link { @apply px-3 py-2 text-sm transition-colors rounded-lg; color: var(--color-text-muted); } .nav-link:hover { color: var(--color-text); } .nav-link-active { @apply px-3 py-2 text-sm font-medium rounded-lg; color: var(--color-text); background-color: var(--color-surface-hover); } .sidebar-category { @apply px-3 py-2 text-xs font-semibold uppercase tracking-wider; color: var(--color-text-subtle); } /* Preview container - forces light mode for component examples */ .preview-container { /* Surfaces */ --color-surface: var(--color-surface-light); --color-surface-raised: var(--color-surface-raised-light); --color-surface-sunken: var(--color-surface-sunken-light); --color-surface-overlay: var(--color-surface-overlay-light); --color-surface-hover: var(--color-surface-hover-light); /* Text */ --color-text: var(--color-text-light); --color-text-muted: var(--color-text-muted-light); --color-text-subtle: var(--color-text-subtle-light); /* Borders */ --color-border: var(--color-border-light); --color-border-muted: var(--color-border-muted-light); --color-border-emphasis: var(--color-border-emphasis-light); /* Primary */ --color-primary: var(--color-primary-light); --color-primary-hover: var(--color-primary-hover-light); --color-primary-foreground: var(--color-primary-foreground-light); /* State colors */ --color-success: var(--color-success-light); --color-success-foreground: var(--color-success-foreground-light); --color-success-border: var(--color-success-border-light); --color-error: var(--color-error-light); --color-error-foreground: var(--color-error-foreground-light); --color-error-border: var(--color-error-border-light); --color-warning: var(--color-warning-light); --color-warning-foreground: var(--color-warning-foreground-light); --color-warning-border: var(--color-warning-border-light); --color-info: var(--color-info-light); --color-info-foreground: var(--color-info-foreground-light); --color-info-border: var(--color-info-border-light); color-scheme: light; } /* Dark preview container - forces dark mode for component examples */ .preview-container-dark { /* Surfaces */ --color-surface: var(--color-surface-dark); --color-surface-raised: var(--color-surface-raised-dark); --color-surface-sunken: var(--color-surface-sunken-dark); --color-surface-overlay: var(--color-surface-overlay-dark); --color-surface-hover: var(--color-surface-hover-dark); /* Text */ --color-text: var(--color-text-dark); --color-text-muted: var(--color-text-muted-dark); --color-text-subtle: var(--color-text-subtle-dark); /* Borders */ --color-border: var(--color-border-dark); --color-border-muted: var(--color-border-muted-dark); --color-border-emphasis: var(--color-border-emphasis-dark); /* Primary */ --color-primary: var(--color-primary-dark); --color-primary-hover: var(--color-primary-hover-dark); --color-primary-foreground: var(--color-primary-foreground-dark); /* State colors */ --color-success: var(--color-success-dark); --color-success-foreground: var(--color-success-foreground-dark); --color-success-border: var(--color-success-border-dark); --color-error: var(--color-error-dark); --color-error-foreground: var(--color-error-foreground-dark); --color-error-border: var(--color-error-border-dark); --color-warning: var(--color-warning-dark); --color-warning-foreground: var(--color-warning-foreground-dark); --color-warning-border: var(--color-warning-border-dark); --color-info: var(--color-info-dark); --color-info-foreground: var(--color-info-foreground-dark); --color-info-border: var(--color-info-border-dark); color-scheme: dark; } } /* Utility classes using semantic colors */ @layer utilities { /* ----------------------------------- * SURFACE UTILITIES * ----------------------------------- */ .bg-surface { background-color: var(--color-surface); } .bg-surface-raised { background-color: var(--color-surface-raised); } .bg-surface-sunken { background-color: var(--color-surface-sunken); } .bg-surface-overlay { background-color: var(--color-surface-overlay); } .bg-surface-hover { background-color: var(--color-surface-hover); } .hover\:bg-surface-hover:hover { background-color: var(--color-surface-hover); } /* ----------------------------------- * TEXT UTILITIES * ----------------------------------- */ .text-default { color: var(--color-text); } .text-muted { color: var(--color-text-muted); } .text-subtle { color: var(--color-text-subtle); } /* ----------------------------------- * BORDER UTILITIES * ----------------------------------- */ .border-default { border-color: var(--color-border); } .border-muted { border-color: var(--color-border-muted); } .border-emphasis { border-color: var(--color-border-emphasis); } /* ----------------------------------- * PRIMARY UTILITIES * ----------------------------------- */ .bg-primary { background-color: var(--color-primary); } .bg-primary-hover { background-color: var(--color-primary-hover); } .hover\:bg-primary-hover:hover { background-color: var(--color-primary-hover); } .text-primary { color: var(--color-primary); } .text-primary-foreground { color: var(--color-primary-foreground); } /* ----------------------------------- * SUCCESS UTILITIES * ----------------------------------- */ .bg-success { background-color: var(--color-success); } .bg-success-emphasis { background-color: var(--color-success-emphasis); } .text-success { color: var(--color-success-emphasis); } .text-success-foreground { color: var(--color-success-foreground); } .border-success { border-color: var(--color-success-border); } /* ----------------------------------- * ERROR UTILITIES * ----------------------------------- */ .bg-error { background-color: var(--color-error); } .bg-error-emphasis { background-color: var(--color-error-emphasis); } .text-error { color: var(--color-error-emphasis); } .text-error-foreground { color: var(--color-error-foreground); } .border-error { border-color: var(--color-error-border); } /* ----------------------------------- * WARNING UTILITIES * ----------------------------------- */ .bg-warning { background-color: var(--color-warning); } .bg-warning-emphasis { background-color: var(--color-warning-emphasis); } .text-warning { color: var(--color-warning-emphasis); } .text-warning-foreground { color: var(--color-warning-foreground); } .border-warning { border-color: var(--color-warning-border); } /* ----------------------------------- * INFO UTILITIES * ----------------------------------- */ .bg-info { background-color: var(--color-info); } .bg-info-emphasis { background-color: var(--color-info-emphasis); } .text-info { color: var(--color-info-emphasis); } .text-info-foreground { color: var(--color-info-foreground); } .border-info { border-color: var(--color-info-border); } /* ----------------------------------- * COMPOUND ALERT UTILITIES * ----------------------------------- */ .alert-success { background-color: var(--color-success); color: var(--color-success-foreground); border-color: var(--color-success-border); } .alert-error { background-color: var(--color-error); color: var(--color-error-foreground); border-color: var(--color-error-border); } .alert-warning { background-color: var(--color-warning); color: var(--color-warning-foreground); border-color: var(--color-warning-border); } .alert-info { background-color: var(--color-info); color: var(--color-info-foreground); border-color: var(--color-info-border); } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/heyadam/mcpsystemdesign'

If you have feedback or need assistance with the MCP directory API, please join our Discord server